diff --git a/docs/changes.rst b/docs/changes.rst index ca05a703..e06daade 100644 --- a/docs/changes.rst +++ b/docs/changes.rst @@ -7,7 +7,14 @@ all releases are available on `PyPI `_ and `Anaconda.org `_. -0.0.15 - 2021-xx-xx +0.0.16 - 2021-xx-xx +------------------- + +- :gh:`111` fixes error when using ``pytask --version`` with click v8. + + + +0.0.15 - 2021-06-24 ------------------- - :gh:`80` replaces some remaining formatting using ``pprint`` with ``rich``. diff --git a/src/_pytask/cli.py b/src/_pytask/cli.py index c76eddb0..d627a27e 100644 --- a/src/_pytask/cli.py +++ b/src/_pytask/cli.py @@ -5,9 +5,15 @@ from _pytask.config import hookimpl from _pytask.pluginmanager import get_plugin_manager from click_default_group import DefaultGroup +from pkg_resources import packaging -CONTEXT_SETTINGS = {"help_option_names": ["-h", "--help"]} +_CONTEXT_SETTINGS = {"help_option_names": ["-h", "--help"]} + +if packaging.version.parse(click.__version__) < packaging.version.parse("8"): + _VERSION_OPTION_KWARGS = {} +else: + _VERSION_OPTION_KWARGS = {"package_name": "pytask"} def _extend_command_line_interface(command_line_interface): @@ -78,11 +84,11 @@ def pytask_add_hooks(pm): @click.group( cls=DefaultGroup, - context_settings=CONTEXT_SETTINGS, + context_settings=_CONTEXT_SETTINGS, default="build", default_if_no_args=True, ) -@click.version_option() +@click.version_option(**_VERSION_OPTION_KWARGS) def cli(): """The command line interface of pytask.""" pass diff --git a/tests/test_cli.py b/tests/test_cli.py new file mode 100644 index 00000000..5fc3d48c --- /dev/null +++ b/tests/test_cli.py @@ -0,0 +1,8 @@ +import subprocess + +from pytask import __version__ + + +def test_version_option(): + process = subprocess.run(["pytask", "--version"], capture_output=True) + assert "pytask, version " + __version__ in process.stdout.decode("utf-8")