I really like xmltodict (https://github.com/martinblech/xmltodict). Despite the name, it works in both directions. It is the most ergonomic library I have used for creating XML. It has external type stubs: https://pypi.org/project/types-xmltodict/.
Since you have recently discovered Rich, you may want rich-argparse (https://github.com/hamdanal/rich-argparse). It colorizes argparse CLIs with little effort from the user.
DeepDiff (https://github.com/seperman/deepdiff) has helped me with testing. I needed to compare two nested data structures but ignore any differences in floats (timestamps). DeepDiff let me do it:
diff = DeepDiff(
run_session(config), run_session(config, force=True), exclude_types=(float,)
)
assert not diff
pzp (https://github.com/andreax79/pzp) is like fzf in pure Python to use in your programs.
Keep in mind it is currently version 0.0.x.
I have found bugs, but I think it is just cool that it exists.
context: OpenAI API used to be super flaky back in the early days, i needed to retry my requests quite frequently and i found this
Audio track seperation:
https://github.com/adefossez/demucs
demucs works pretty well.
The alternative is either you maintain two interfaces with boilerplate, or write a cli only if that’s the first priority.
Similar solutions exist, like fire. But fire’s cli is like an afterthought, in the sense it gives people a way to run things in command line where they already know how to run it from Python.
- einops
- pytrees
- torchinfo
- joblib
- symbex
- nbdev