Aggiunge --help completo a genera.py, grafico.py e pulisci.sh; riscrive CLAUDE.md
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
33c99afe6a
commit
c0054c49a5
6 files changed
+207
-15
No files matched your search
+51
-3
@@ -5,6 +5,7 @@
|
||||
"""Mostra o salva il grafico di T e ΔT di un CSV prodotto da genera.py."""
|
||||
|
||||
import argparse
|
||||
import re
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
@@ -14,6 +15,24 @@ import numpy as np
|
||||
CARTELLA_OUTPUT = Path("output")
|
||||
|
||||
|
||||
class ParserIt(argparse.ArgumentParser):
|
||||
"""ArgumentParser con i messaggi d'errore più comuni in italiano (exit 2)."""
|
||||
|
||||
TRADUZIONI = [
|
||||
(r"the following arguments are required: (.*)", r"manca l'argomento obbligatorio: \1"),
|
||||
(r"unrecognized arguments: (.*)", r"argomenti non riconosciuti: \1"),
|
||||
(r"argument (.*): invalid int value: (.*)", r"argomento \1: \2 non è un numero intero"),
|
||||
(r"argument (.*): expected one argument", r"argomento \1: manca il valore"),
|
||||
]
|
||||
|
||||
def error(self, message):
|
||||
for pattern, sostituzione in self.TRADUZIONI:
|
||||
message = re.sub(pattern, sostituzione, message)
|
||||
self.print_usage(sys.stderr)
|
||||
print(f"{self.prog}: errore: {message}", file=sys.stderr)
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
def errore(msg):
|
||||
print(f"Errore: {msg}", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
@@ -27,9 +46,38 @@ def ultimo_csv():
|
||||
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser(description="Grafico di T e ΔT da un CSV di genera.py.")
|
||||
ap.add_argument("csv", nargs="?", type=Path, help="CSV da disegnare (default: l'ultimo in output/)")
|
||||
ap.add_argument("-o", "--output", type=Path, help="salva l'immagine (png, pdf, svg) invece di aprire la finestra")
|
||||
ap = ParserIt(
|
||||
prog="grafico.py",
|
||||
usage="grafico.py [-h] [-o FILE] [csv]",
|
||||
description="Disegna T e dT = T - T_amb in funzione del tempo (due pannelli con asse comune)\n"
|
||||
"da un CSV prodotto da genera.py.",
|
||||
epilog="""\
|
||||
esempi:
|
||||
grafico.py finestra con l'ultimo CSV modificato in output/
|
||||
grafico.py output/gen_42.csv un CSV preciso
|
||||
grafico.py -o grafico.png salva l'immagine invece di aprire la finestra
|
||||
(utile senza schermo, es. via SSH)
|
||||
|
||||
formato atteso del CSV: t_ms,T_C,dT_C (come scritto da genera.py).
|
||||
|
||||
codici di uscita:
|
||||
0 ok
|
||||
1 errore, con messaggio in italiano su stderr: nessun CSV in output/, file
|
||||
illeggibile o con formato diverso, immagine non scrivibile
|
||||
2 argomenti della riga di comando non validi
|
||||
|
||||
dipendenze: numpy, matplotlib.""",
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||
add_help=False,
|
||||
)
|
||||
argomenti = ap.add_argument_group("argomenti")
|
||||
opzioni = ap.add_argument_group("opzioni")
|
||||
opzioni.add_argument("-h", "--help", action="help", help="mostra questo aiuto ed esce")
|
||||
argomenti.add_argument("csv", nargs="?", type=Path, help="CSV da disegnare (default: l'ultimo modificato in output/)")
|
||||
opzioni.add_argument(
|
||||
"-o", "--output", type=Path, metavar="FILE",
|
||||
help="salva l'immagine in FILE invece di aprire la finestra; il formato segue l'estensione (png, pdf, svg)",
|
||||
)
|
||||
args = ap.parse_args()
|
||||
|
||||
percorso = args.csv or ultimo_csv()
|
||||
|
||||
Reference in new issue
Block a user