this post was submitted on 23 Aug 2023
26 points (93.3% liked)
Programming
17435 readers
218 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities [email protected]
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
As a few others mentioned, the argparse module from the stdlib is the way to go for Python. It takes care of most of this for you in an optimized way. Here's a minimal example of the above:
That's an awesome answer, thank you very much. It's much more elegant than my stuff!
You're very welcome! I've spent a lot of time with Python and really think that argparse as of 3.x makes most non-stdlib libraries for parsing are unnecessary. You get a ton of functionally and ability to add end-user documentation as you go, while abstracting away some of the basics like type casting/checking
The addition of Match-Case, while not adding much, functionally, does a LOT for readability and keeping logic clear.
I'm so annoyed with myself for using
Traitlets
for command line argument parsing! Your solution usingargparse
has so many more useful options, like the ability to define a mutually exclusive group of arguments.Sigh. I live and learn and code a bunch more lol.
No reason to be annoyed with yourself. It's part of the process of learning. In starting with
Traitlets
, you tried something new to you and between that and refactoring to useargparse
, you've given yourself more practice writing code and learned a bit more about available libraries. And, at the same time, you've worked through the logic of your CLI design, building a better understanding of ways to organize arguments.