Skip to content

version_option doesn't automatically detect version anymore with click 8.0.0 #1884

@FlorianVeaux

Description

@FlorianVeaux

Hello, I just came across what seems to be a regression with click 8.0.0

Bug

For a given click command click-issue-test installed with setuptools configured with the click.version_option() decorator, running click-issue-test --version fails with the following error:

Traceback (most recent call last):
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/decorators.py", line 384, in callback
    version = metadata.version(package_name)  # type: ignore
  File "/Users/florian.veaux/.pyenv/versions/3.9.0/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 551, in version
    return distribution(distribution_name).version
  File "/Users/florian.veaux/.pyenv/versions/3.9.0/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 524, in distribution
    return Distribution.from_name(distribution_name)
  File "/Users/florian.veaux/.pyenv/versions/3.9.0/Python.framework/Versions/3.9/lib/python3.9/importlib/metadata.py", line 187, in from_name
    raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: cli

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/bin/click-issue-test", line 33, in <module>
    sys.exit(load_entry_point('click-issue-test', 'console_scripts', 'click-issue-test')())
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 1134, in __call__
    return self.main(*args, **kwargs)
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 1058, in main
    with self.make_context(prog_name, args, **extra) as ctx:
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 927, in make_context
    self.parse_args(ctx, args)
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 1376, in parse_args
    value, args = param.handle_parse_result(ctx, opts, args)
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 2352, in handle_parse_result
    value = self.process_value(ctx, value)
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/core.py", line 2314, in process_value
    value = self.callback(ctx, self, value)
  File "/Users/florian.veaux/go/src/github.com/DataDog/integrations-core/click-issue-test/click-issue-test/lib/python3.9/site-packages/click/decorators.py", line 386, in callback
    raise RuntimeError(
RuntimeError: 'cli' is not installed. Try passing 'package_name' instead.

Replication steps

cli.py:

import click

@click.command()
@click.version_option()
def cli():
    print("Hello")

if __name__ == '__main__':
    cli()

setup.py

from setuptools import setup

setup(
    name='click-issue-test',
    version='1.2.3',
    py_modules=['cli'],
    install_requires=[
        'Click',
    ],
    entry_points='''
        [console_scripts]
        click-issue-test=cli:cli
    ''',
)

Then run:

$ pip install -e .
$ click-issue-test --version

The last command was working with click 7.1.2 and was printing click-issue-test, version 1.2.3.

Environment:

  • Python version: 3.9
  • Click version: 8.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugf:parametersfeature: input parameter types

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions