argparse — adding a --version flag in the face of positional args
Loris Bennett
loris.bennett at fu-berlin.de
Mon Nov 28 01:59:44 EST 2022
Mats Wichmann <mats at wichmann.us> writes:
> On 11/27/22 16:40, Skip Montanaro wrote:
>> I have a script to which I'd like to add a --version flag. It should print
>> the version number then exit, much in the same way --help prints the help
>> text then exits. I haven't been able to figure that out. I always get a
>> complaint about the required positional argument.
>> I think I could use something like nargs='*', but that would push
>> off
>> detection of the presence of the positional arg to the application.
>> Shouldn't I be able to tell argparse I'm going to process --verbose, then
>> exit?
>
> ummm, hate to say this, but have you checked the documentation? this
> case is supported using an action named 'version' without doing very
> much.
I hadn't noticed the action 'version'. I just use
parser.add_argument(
"-v", "--version", action="store_true", dest="version",
help="print version"
)
...
if args.version:
print(f"Version {my_module.__version__}")
sys.exit(0)
where the version is specified in a pyproj.toml file and __init__.py
contains
try:
import importlib.metadata as importlib_metadata
except ModuleNotFoundError:
import importlib_metadata
__version__ = importlib_metadata.version(__name__)
I use poetry to then build the corresponding versioned package.
What am I missing by not using the action 'version'? Do I just save
having to explicitly test for the version arg?
Cheers,
Loris
--
This signature is currently under constuction.
More information about the Python-list
mailing list