Also, use #Cappa 😛 Cappa leaves your functions/dataclasses (commands) intact.
Also, use #Cappa 😛 Cappa leaves your functions/dataclasses (commands) intact.
Rewriting an argparse-based CLI with #Cappa. It's much cleaner:
- less verbose
- better contained (single module instead of using submodules for subcommands)
- better typed (dataclasses!)
- as reusable, or more reusable in other CLIs (classes instead of functions that modify an argparse parser)
- much easier to use programmatically (no need to call `main` or build an `argparse.Namespace` manually)
- better documented
- better output (rich!)
@dancardin I'm now recommending #Cappa in my docs: https://mkdocstrings.github.io/griffe/guide/users/recommendations/public-apis/#the-cli-is-api-too (just a quick mention at the end of the section) 😄
#Cappa is awesome. @dancardin does a fantastic job on this project.
Command descriptions can be written in Markdown and are rendered with #Rich, so code blocks are syntax highlighted, and you can even add links. Amazing CLI experience.
Look at this beauty:
What a rabbit hole. Even though #Cappa uses #Rich internally, forcing colors with `FORCE_COLOR=1` did not work.
After a super painful investigation, turns out my #Python code imports a module from #Copier which uses `colorama.init()`.
Changing that to `colorama.just_fix_windows_console()` fixed it, but the output still had an extra reset sequence at the end.
Turns out Copier imports #Plumbum colors module, which registers a function to reset styles at exit.
Don't run things at import time!
I started sponsoring @dancardin (@DanCardin@programming.dev?) for their great work on #Cappa, a super elegant declarative CLI argument parser for Python: https://github.com/DanCardin/cappa. It makes all the right choices, allowing users to build good, reusable CLIs for their libraries, with #Rich support!
#Cappa puts the finger on what I dislike about #Click: https://cappa.readthedocs.io/en/latest/comparison.html#why-not-click. I'll try Cappa right now in a new project.
I was also strongly tempted by #arguably (https://github.com/treykeown/arguably), but Cappa's use of `Annotated` instead of docstrings makes it super attractive given my recent work on supporting PEP 727 (from @tiangolo) with a #Griffe extension.
Scanning some cool Triassic stuff with the #CAPPA team this week in #riograndedosul #brazil #palaeontology #paleontologia #triássico #paleontology #evolution
Passaggi a Nord-Ovest – Podcast 46 – 03 12 18 https://wombat.noblogs.org/2018/12/05/passaggi-a-nord-ovest-podcast-46-03-12-18/ #PassaggiaNord-Ovest #palestrapopolare #antifascismo #autogestione #tessutiaerei #breakdance #Castello #pugilato #firenze #tai-chi #Cappa #boxe