Pour nos besoins internes, nous avions besoin de rapidement créer une application console pour pouvoir la faire exécuter à travers des outils comme Rundeck par exemple. Nous sommes parties à la pêche et avons trouvé une librairie Python nous permettant de réaliser facilement ce que nous souhaitions
Une application console en deux temps, trois mouvements
A l’aide d’une dépendance au sein de votre projet Python, nommée Typer, vous pourrez réaliser de puissantes applications s’éxecutant en mode console. Adieu le parsing à la main des arguments passés, bonjour les arguments optionnels, obligatoires, les typages forts
Typer vous permet de gérer des commandes, des sous-commandes, de fournir de l’aide facilement et même de récupérer des variables d’environnement, que demander de plus ?
L’auteur de cette librairie n’est ni plus ni moins que le créateur de FastAPI (Sebastián Ramírez / Tiangolo)
Simple comme bonjour
Voici un petit exemple (tiré de la documentation officielle)
import typer app = typer.Typer() @app.command() def hello(name: str): print(f"Hello {name}") @app.command() def goodbye(name: str, formal: bool = False): if formal: print(f"Goodbye Ms. {name}. Have a good day.") else: print(f"Bye {name}!") if __name__ == "__main__": app()
A l’aide d’annotation, vous informez quelles sont les commandes que vous gérez, ici, nous avons deux commandes disponibles : hello et goodbye
Si on lance la commande goodbye sans argument, Typer vous indique le paramètre name comme obligatoire et des paramètres optionnels
python main.py goodbye --help Usage: main.py goodbye [OPTIONS] NAME ╭─ Arguments ───────────────────────────────────────╮ │ * name TEXT [default: None] [required] │ ╰───────────────────────────────────────────────────╯ ╭─ Options ─────────────────────────────────────────╮ │ --formal --no-formal [default: no-formal] │ │ --help Show this message │ │ and exit. │ ╰───────────────────────────────────────────────────╯
Nous vous invitons à lire la documentation très complète et très bien faite.