Skip to content

Broken/incompatible --skip-missing-interpreters false behavior since 4.1.2 #2811

@scop

Description

@scop

Issue

Since tox 4.1.2, tox --skip-missing-interpreters false -e someenv seems to want interpreters present also for envs that are not invoked.

Up to 4.1.1, since from I don't remember when (3.x a long time ago), this used to work the way I'd assume: fail on missing interpreters only for environments that are actually going to be used. 4.1.2..4.1.3 have the problem.

Environment

Provide at least:

  • OS: Linux
  • pip list of the host Python where tox is installed:
Package                Version
---------------------- -------
astroid                2.12.12
attrs                  22.1.0
bandit                 1.7.4
black                  22.6.0
cachetools             5.2.0
cfgv                   3.3.1
chardet                5.1.0
click                  8.1.3
colorama               0.4.6
coverage               6.5.0
dill                   0.3.6
distlib                0.3.6
exceptiongroup         1.0.1
filelock               3.9.0
flake8                 6.0.0
flake8-bandit          4.1.1
flake8-bugbear         22.8.23
flake8-docstrings      1.6.0
flake8-noqa            1.3.0
gitdb                  4.0.9
GitPython              3.1.29
identify               2.5.8
iniconfig              1.1.1
isort                  5.9.3
jedi                   0.17.2
lazy-object-proxy      1.8.0
mccabe                 0.7.0
mypy                   0.990
mypy-extensions        0.4.3
nodeenv                1.7.0
packaging              22.0
parso                  0.7.1
pathspec               0.10.1
pbr                    5.11.0
pip                    22.2.2
platformdirs           2.6.2
pluggy                 1.0.0
pre-commit             2.21.0
py                     1.11.0
pycodestyle            2.10.0
pydocstyle             6.1.1
pyflakes               3.0.1
pylint                 2.15.5
pyparsing              3.0.9
pyproject_api          1.3.0
pytest                 7.2.0
pytest-cov             4.0.0
python-jsonrpc-server  0.4.0
python-language-server 0.36.2
pyupgrade              3.2.2
PyYAML                 6.0
setuptools             65.6.3
six                    1.16.0
smmap                  5.0.0
snowballstemmer        2.2.0
stevedore              4.1.1
tokenize-rt            5.0.0
toml                   0.10.2
tomli                  2.0.1
tomlkit                0.11.6
tox                    4.1.2
typing_extensions      4.4.0
ujson                  5.5.0
virtualenv             20.17.1
wrapt                  1.14.1

Output of running tox

Provide the output of tox -rvv:

(please note the actual invoked command has additionally --skip-missing-interpreters false -e py310)

$ tox -rvv --skip-missing-interpreters false -e py310
[...]
Traceback (most recent call last):
  File ".../bin/tox", line 8, in <module>
    sys.exit(run())
  File ".../lib/python3.10/site-packages/tox/run.py", line 19, in run
    result = main(sys.argv[1:] if args is None else args)
  File ".../lib/python3.10/site-packages/tox/run.py", line 45, in main
    result = handler(state)
  File ".../lib/python3.10/site-packages/tox/session/cmd/legacy.py", line 111, in legacy
    return run_sequential(state)
  File ".../lib/python3.10/site-packages/tox/session/cmd/run/sequential.py", line 22, in run_sequential
    return execute(state, max_workers=1, has_spinner=False, live=True)
  File ".../lib/python3.10/site-packages/tox/session/cmd/run/common.py", line 213, in execute
    state.envs.ensure_only_run_env_is_active()
  File ".../lib/python3.10/site-packages/tox/session/env_select.py", line 365, in ensure_only_run_env_is_active
    envs, active = self._defined_envs, self._env_name_to_active()
  File ".../lib/python3.10/site-packages/tox/session/env_select.py", line 225, in _defined_envs
    raise failed[next(iter(failed_to_create))]
  File ".../lib/python3.10/site-packages/tox/session/env_select.py", line 202, in _defined_envs
    run_env.package_env = self._build_pkg_env(pkg_name_type, name, env_name_to_active)
  File ".../lib/python3.10/site-packages/tox/session/env_select.py", line 270, in _build_pkg_env
    name_type = next(child_package_envs)
  File ".../lib/python3.10/site-packages/tox/tox_env/python/virtual_env/package/pyproject.py", line 141, in register_run_env
    yield from super().register_run_env(run_env)
  File ".../lib/python3.10/site-packages/tox/tox_env/python/package.py", line 101, in register_run_env
    pkg_env = run_env.conf["wheel_build_env"]
  File ".../lib/python3.10/site-packages/tox/config/sets.py", line 114, in __getitem__
    return self.load(item)
  File ".../lib/python3.10/site-packages/tox/config/sets.py", line 125, in load
    return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name))
  File ".../lib/python3.10/site-packages/tox/config/of_type.py", line 110, in __call__
    value = self.default(conf, args.env_name) if callable(self.default) else self.default
  File ".../lib/python3.10/site-packages/tox/tox_env/python/package.py", line 81, in default_wheel_tag
    run_py = cast(Python, run_env).base_python
  File ".../lib/python3.10/site-packages/tox/tox_env/python/api.py", line 240, in base_python
    raise NoInterpreter(base_pythons)
tox.tox_env.python.api.NoInterpreter: could not find python interpreter matching any of the specs py33

Minimal example

If possible, provide a minimal reproducer for the issue:

tox.ini producing the above:

[tox]
envlist = py33, py310

[testenv]
usedevelop = true

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug:normalaffects many people or has quite an impacthelp:wantedIssues that have been acknowledged, a solution determined and a PR might likely be accepted.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions