struttura progetto
cli-tool/
src/cli_tool/
__init__.py
main.py
pyproject.toml
README.md
usa la struttura src/ per evitare import accidentali.
pyproject
[project]
name = "cli-tool"
version = "0.1.0"
requires-python = ">=3.11"
[project.scripts]
cli-tool = "cli_tool.main:main"
argparse
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument("--input")
args = parser.parse_args()
print(args.input)
entry points
definisci un comando installabile via project.scripts per avviare il tool con un alias.
tip: aggiungi __main__.py per supportare python -m cli_tool.
build e release
- usa versioning semantico.
- genera wheel e sdist con
python -m build. - documenta i comandi nel README.
checklist finale
- progetto modulare con entry point chiaro.
- README con esempi di utilizzo.
- versioni e changelog aggiornati.
- test automatici prima di pubblicare.
panoramica
In questo capitolo su cli e packaging, progetta tool distribuiti con pyproject e release versionate. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.
Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).
badge: cli builder
obiettivi
- capire e applicare struttura progetto in uno scenario reale
- capire e applicare pyproject in uno scenario reale
- capire e applicare argparse in uno scenario reale
- capire e applicare entry points in uno scenario reale
scheda rapida
def main():
dati = [1, 2, 3]
risultati = [x * 2 for x in dati]
print(risultati)
if __name__ == "__main__":
main()
Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.
tips
- usa un venv per ogni progetto
- separa logica e I/O
- mantieni funzioni piccole e nominative
- definisci --help chiaro
- separa parsing dalla logica
- fornisci esempi d'uso
tip: Un CLI vale quanto il suo --help: curalo.
mini progetto
Crea una CLI che genera un report da un file.
- parsa path di input/output
- valida gli argomenti
- esegui la logica
- prepara entry point
output atteso: uno script o query ripetibile con risultati verificabili.