Skip to content

--print-extras-to does not work with tox 4.44.0 #90

@mtelka

Description

@mtelka

After upgrade of tox from 4.38.0 to 4.44.0 the --print-extras-to option started to fail:

$ wget https://files.pythonhosted.org/packages/source/f/fixtures/fixtures-4.2.8.tar.gz
$ gtar xf fixtures-4.2.8.tar.gz
$ cd fixtures-4.2.8
$ tox --version
4.44.0 from /usr/lib/python3.14/vendor-packages/tox/__init__.py
registered plugins:
    tox-current-env-0.0.16 at /usr/lib/python3.14/vendor-packages/tox_current_env/hooks.py
$ tox --no-provision --print-extras-to=- -e py314
Traceback (most recent call last):
  File "/usr/bin/tox-3.14", line 8, in <module>
    sys.exit(run())
             ~~~^^
  File "/usr/lib/python3.14/vendor-packages/tox/run.py", line 23, in run
    result = main(sys.argv[1:] if args is None else args)
  File "/usr/lib/python3.14/vendor-packages/tox/run.py", line 49, in main
    return handler(state)
  File "/usr/lib/python3.14/vendor-packages/tox/session/cmd/legacy.py", line 115, in legacy
    return run_sequential(state)
  File "/usr/lib/python3.14/vendor-packages/tox/session/cmd/run/sequential.py", line 25, in run_sequential
    return execute(state, max_workers=1, has_spinner=False, live=True)
  File "/usr/lib/python3.14/vendor-packages/tox/session/cmd/run/common.py", line 216, in execute
    state.envs.ensure_only_run_env_is_active()
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/vendor-packages/tox/session/env_select.py", line 560, in ensure_only_run_env_is_active
    envs, active = self._defined_envs, self._env_name_to_active()
                   ^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/vendor-packages/tox/session/env_select.py", line 344, in _defined_envs
    run_env = self._build_run_env(name)
  File "/usr/lib/python3.14/vendor-packages/tox/session/env_select.py", line 434, in _build_run_env
    run_env.register_config()
    ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/lib/python3.14/vendor-packages/tox/tox_env/python/runner.py", line 57, in register_config
    self.conf.add_config(
    ~~~~~~~~~~~~~~~~~~~~^
        keys=["extras"],
        ^^^^^^^^^^^^^^^^
    ...<3 lines>...
        post_process=_normalize_extras,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.14/vendor-packages/tox/config/sets.py", line 101, in add_config
    result = self._add_conf(keys_, definition)
  File "/usr/lib/python3.14/vendor-packages/tox/config/sets.py", line 129, in _add_conf
    self._on_duplicate_conf(key, definition)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.14/vendor-packages/tox/config/sets.py", line 140, in _on_duplicate_conf
    raise ValueError(msg)
ValueError: duplicate configuration definition for py314:
has: ConfigDynamicDefinition(keys=['extras'], desc=extras to install of the target package, of_type=typing.Set[str], default=set())
new: ConfigDynamicDefinition(keys=['extras'], desc=extras to install of the target package, of_type=set[str], default=set())
$

With tox 4.38.0 everything works as expected:

$ tox --version
4.38.0 from /usr/lib/python3.14/vendor-packages/tox/__init__.py
registered plugins:
    tox-current-env-0.0.16 at /usr/lib/python3.14/vendor-packages/tox_current_env/hooks.py
$ tox --no-provision --print-extras-to=- -e py314
test
docs
  py314: OK (0.04 seconds)
  congratulations :) (0.14 seconds)
$

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions