lezione 08

cli e packaging

progetta tool distribuiti con pyproject e release versionate.

livello: intermedio durata: 50 min output: tool installabile badge: cli builder

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.

start a brief