'How to implement --version using python click?
I want to implement mycommand --version
using python click. I have something like this working but it feels kinda clunky.
@click.group(invoke_without_command=True, no_args_is_help=True)
@click.pass_context
@click.option('--version', 'version')
def cli(ctx, version):
if version:
ctx.echo(f'{sys.argv[0]} {__version__}')
ctx.exit()
Solution 1:[1]
As it turns out, click
has a builtin decorator click.version_option
to accomplish this. The code now becomes:
@click.group()
@click.version_option(__version__)
@click.pass_context
def cli(ctx):
pass
Solution 2:[2]
You can use click.version_option
decorator to implement --version
option.
If your setup.py
like this and have version
click will read it automatically.
from setuptools import setup
setup(
name='application',
version='0.1',
py_modules=['application'],
install_requires=[
'Click',
],
)
The click.version_option
option without any argument will read version from setup.py
it.
@click.group(invoke_without_command=True, no_args_is_help=True)
@click.pass_context
@click.version_option()
def cli(ctx):
...
Run and Result
$ application --version
application, version 0.1
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | melvio |
Solution 2 |