You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When I run tox without tox-uv installed, it passes and correctly skips all unavailable python interpreters. However, when tox-uv is installed, exception is raised and job ends in FAIL state instead of SKIP.
This is probably caused by env interpolation, because when I omit {envsitepackagesdir} from the variable default, everything works as expected.
Environment
Provide at least:
OS: Linux, Debian trixie
Output of pip list of the host Python, where tox is installed
py39: 1602 W remove tox env folder /home/jmusilek/test/tox-uv-fail/.tox/py39 [tox/tox_env/api.py:332]py39: 1646 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.9 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py39 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.9 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/usr/bin/python3` (search path)DEBUG Skipping interpreter at `/usr/bin/python3` from search path: does not satisfy request `3.9`DEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/bin/python3` (search path)DEBUG Skipping interpreter at `/bin/python3` from search path: does not satisfy request `3.9` × No interpreter found for CPython 3.9 in search pathpy39: 1727 E internal error [tox/session/cmd/run/single.py:60]Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 77, in replacer replaced = replace(conf, reference_replacer, raw_, args_) # do replacements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 70, in replace return Replacer(conf, reference, conf_args=args, depth=depth).join(find_replace_expr(value)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 204, in _replace_match flattened_args = [self.join(arg) for arg in value.expr] ^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 218, in _replace_match replace_value = self.reference(arg_value, conf_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 58, in __call__ raise exception File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 42, in __call__ value = src.load(key, conf_args.chain) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 60, in __call__ return self.value() if callable(self.value) else self.value ^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 250, in env_site_package_dir py = self._py_info ^^^^^^^^^^^^^ File "/usr/lib/python3.12/functools.py", line 995, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 283, in _py_info self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 222, in create_python_env raise Skip(msg)tox.tox_env.errors.Skip: could not find python interpreter with spec(s): cpython3.9The above exception was the direct cause of the following exception:Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/session/cmd/run/single.py", line 47, in _evaluate tox_env.setup() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 257, in setup self._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/runner.py", line 98, in _setup_env super()._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 231, in _setup_env self.ensure_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 238, in ensure_python_env self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 213, in create_python_env if self.conf["system_site_packages"]: ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 122, in __getitem__ return self.load(item) ^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 117, in __call__ value = self.default(conf, args.env_name) if callable(self.default) else self.default ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 69, in <lambda> self.environment_variables.get("VIRTUALENV_SYSTEM_SITE_PACKAGES", "False"), ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 184, in environment_variables env = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/runner.py", line 193, in environment_variables environment_variables = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 351, in environment_variables result[key] = set_env.load(key) ^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/set_env.py", line 90, in load result = self._replacer(raw, args) # apply any replace options ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 83, in replacer raise HandledError(msg) from exceptiontox.report.HandledError: replace failed in py39.setenv with Skip('could not find python interpreter with spec(s): cpython3.9')py39: FAIL ✖ in 0.15 secondspy310: 1751 W remove tox env folder /home/jmusilek/test/tox-uv-fail/.tox/py310 [tox/tox_env/api.py:332]py310: 1776 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.10 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/usr/bin/python3.10` (search path)Using CPython 3.10.9 interpreter at: /usr/bin/python3.10Creating virtual environment at: .tox/py310DEBUG Using base executable for virtual environment: /usr/bin/python3.10DEBUG Allowing existing directorypy310: 1847 I exit 0 (0.07 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 pid=3517475 [tox/execute/api.py:294]py310: 1856 W venv-query> .tox/py310/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py310: 2083 I exit 0 (0.22 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py310/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517483 [tox/execute/api.py:294]py310: 2088 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.10 in search pathDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3.10` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3.10`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/usr/bin/python3.10` (search path)Using CPython 3.10.9 interpreter at: /usr/bin/python3.10Creating virtual environment at: .tox/py310DEBUG Using base executable for virtual environment: /usr/bin/python3.10DEBUG Allowing existing directorypy310: 2158 I exit 0 (0.07 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 pid=3517488 [tox/execute/api.py:294]py311: 2165 W remove tox env folder /home/jmusilek/test/tox-uv-fail/.tox/py311 [tox/tox_env/api.py:332]py310: OK ✔ in 0.42 secondspy311: 2188 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.11 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/usr/bin/python3.11` (search path)Using CPython 3.11.8 interpreter at: /usr/bin/python3.11Creating virtual environment at: .tox/py311DEBUG Using base executable for virtual environment: /usr/bin/python3.11DEBUG Allowing existing directorypy311: 2249 I exit 0 (0.06 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 pid=3517500 [tox/execute/api.py:294]py311: 2254 W venv-query> .tox/py311/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py311: 2455 I exit 0 (0.20 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py311/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517508 [tox/execute/api.py:294]py311: 2462 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.11 in search pathDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3.11` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3.11`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/usr/bin/python3.11` (search path)Using CPython 3.11.8 interpreter at: /usr/bin/python3.11Creating virtual environment at: .tox/py311DEBUG Using base executable for virtual environment: /usr/bin/python3.11DEBUG Allowing existing directorypy311: 2526 I exit 0 (0.06 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 pid=3517513 [tox/execute/api.py:294]py312: 2533 W remove tox env folder /home/jmusilek/test/tox-uv-fail/.tox/py312 [tox/tox_env/api.py:332]py311: OK ✔ in 0.37 secondspy312: 2563 W venv> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit requestDEBUG Checking for Python interpreter at path `.direnv/python-3.12.8/bin/python3`Using CPython 3.12.8 interpreter at: .direnv/python-3.12.8/bin/python3Creating virtual environment at: .tox/py312DEBUG Using base executable for virtual environment: /usr/bin/python3.12DEBUG Allowing existing directorypy312: 2636 I exit 0 (0.07 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 pid=3517525 [tox/execute/api.py:294]py312: 2643 W venv-query> .tox/py312/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py312: 2844 I exit 0 (0.20 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py312/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517532 [tox/execute/api.py:294]py312: 2849 W venv> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit requestDEBUG Checking for Python interpreter at path `.direnv/python-3.12.8/bin/python3`Using CPython 3.12.8 interpreter at: .direnv/python-3.12.8/bin/python3Creating virtual environment at: .tox/py312DEBUG Using base executable for virtual environment: /usr/bin/python3.12DEBUG Allowing existing directorypy312: 2917 I exit 0 (0.06 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 pid=3517538 [tox/execute/api.py:294]py313: 2924 W remove tox env folder /home/jmusilek/test/tox-uv-fail/.tox/py313 [tox/tox_env/api.py:332]py312: OK ✔ in 0.39 secondspy313: 2945 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.13 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py313 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.13 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/usr/bin/python3` (search path)DEBUG Skipping interpreter at `/usr/bin/python3` from search path: does not satisfy request `3.13`DEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/bin/python3` (search path)DEBUG Skipping interpreter at `/bin/python3` from search path: does not satisfy request `3.13` × No interpreter found for CPython 3.13 in search pathpy313: 3016 E internal error [tox/session/cmd/run/single.py:60]Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 77, in replacer replaced = replace(conf, reference_replacer, raw_, args_) # do replacements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 70, in replace return Replacer(conf, reference, conf_args=args, depth=depth).join(find_replace_expr(value)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 204, in _replace_match flattened_args = [self.join(arg) for arg in value.expr] ^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 218, in _replace_match replace_value = self.reference(arg_value, conf_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 58, in __call__ raise exception File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 42, in __call__ value = src.load(key, conf_args.chain) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 60, in __call__ return self.value() if callable(self.value) else self.value ^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 250, in env_site_package_dir py = self._py_info ^^^^^^^^^^^^^ File "/usr/lib/python3.12/functools.py", line 995, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 283, in _py_info self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 222, in create[I] (3.12.8) jmusilek@alfheim:~/t/tox-uv-fail [255] $ rm .tox -rf[I] (3.12.8) jmusilek@alfheim:~/t/tox-uv-fail $ tox -rvvpy39: 211 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.9 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py39 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.9 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/usr/bin/python3` (search path)DEBUG Skipping interpreter at `/usr/bin/python3` from search path: does not satisfy request `3.9`DEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/bin/python3` (search path)DEBUG Skipping interpreter at `/bin/python3` from search path: does not satisfy request `3.9` × No interpreter found for CPython 3.9 in search pathpy39: 227 E internal error [tox/session/cmd/run/single.py:60]Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 77, in replacer replaced = replace(conf, reference_replacer, raw_, args_) # do replacements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 70, in replace return Replacer(conf, reference, conf_args=args, depth=depth).join(find_replace_expr(value)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 204, in _replace_match flattened_args = [self.join(arg) for arg in value.expr] ^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 218, in _replace_match replace_value = self.reference(arg_value, conf_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 58, in __call__ raise exception File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 42, in __call__ value = src.load(key, conf_args.chain) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 60, in __call__ return self.value() if callable(self.value) else self.value ^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 250, in env_site_package_dir py = self._py_info ^^^^^^^^^^^^^ File "/usr/lib/python3.12/functools.py", line 995, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 283, in _py_info self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 222, in create_python_env raise Skip(msg)tox.tox_env.errors.Skip: could not find python interpreter with spec(s): cpython3.9The above exception was the direct cause of the following exception:Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/session/cmd/run/single.py", line 47, in _evaluate tox_env.setup() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 257, in setup self._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/runner.py", line 98, in _setup_env super()._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 231, in _setup_env self.ensure_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 238, in ensure_python_env self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 213, in create_python_env if self.conf["system_site_packages"]: ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 122, in __getitem__ return self.load(item) ^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 117, in __call__ value = self.default(conf, args.env_name) if callable(self.default) else self.default ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 69, in <lambda> self.environment_variables.get("VIRTUALENV_SYSTEM_SITE_PACKAGES", "False"), ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 184, in environment_variables env = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/runner.py", line 193, in environment_variables environment_variables = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 351, in environment_variables result[key] = set_env.load(key) ^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/set_env.py", line 90, in load result = self._replacer(raw, args) # apply any replace options ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 83, in replacer raise HandledError(msg) from exceptiontox.report.HandledError: replace failed in py39.setenv with Skip('could not find python interpreter with spec(s): cpython3.9')py39: FAIL ✖ in 0.03 secondspy310: 235 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.10 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/usr/bin/python3.10` (search path)Using CPython 3.10.9 interpreter at: /usr/bin/python3.10Creating virtual environment at: .tox/py310DEBUG Using base executable for virtual environment: /usr/bin/python3.10DEBUG Allowing existing directorypy310: 252 I exit 0 (0.02 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 pid=3517637 [tox/execute/api.py:294]py310: 254 W venv-query> .tox/py310/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py310: 291 I exit 0 (0.04 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py310/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517645 [tox/execute/api.py:294]py310: 292 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.10 in search pathDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3.10` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3.10`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py310/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.10.9-linux-x86_64-gnu` at `/usr/bin/python3.10` (search path)Using CPython 3.10.9 interpreter at: /usr/bin/python3.10Creating virtual environment at: .tox/py310DEBUG Using base executable for virtual environment: /usr/bin/python3.10DEBUG Allowing existing directorypy310: 304 I exit 0 (0.01 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.10 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py310 pid=3517650 [tox/execute/api.py:294]py310: OK ✔ in 0.08 secondspy311: 312 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.11 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/usr/bin/python3.11` (search path)Using CPython 3.11.8 interpreter at: /usr/bin/python3.11Creating virtual environment at: .tox/py311DEBUG Using base executable for virtual environment: /usr/bin/python3.11DEBUG Allowing existing directorypy311: 327 I exit 0 (0.01 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 pid=3517661 [tox/execute/api.py:294]py311: 328 W venv-query> .tox/py311/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py311: 358 I exit 0 (0.03 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py311/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517668 [tox/execute/api.py:294]py311: 359 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.11 in search pathDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3.11` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3.11`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.tox/py311/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.11.8-linux-x86_64-gnu` at `/usr/bin/python3.11` (search path)Using CPython 3.11.8 interpreter at: /usr/bin/python3.11Creating virtual environment at: .tox/py311DEBUG Using base executable for virtual environment: /usr/bin/python3.11DEBUG Allowing existing directorypy311: 371 I exit 0 (0.01 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p cpython3.11 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py311 pid=3517673 [tox/execute/api.py:294]py311: OK ✔ in 0.07 secondspy312: 375 W venv> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit requestDEBUG Checking for Python interpreter at path `.direnv/python-3.12.8/bin/python3`Using CPython 3.12.8 interpreter at: .direnv/python-3.12.8/bin/python3Creating virtual environment at: .tox/py312DEBUG Using base executable for virtual environment: /usr/bin/python3.12DEBUG Allowing existing directorypy312: 387 I exit 0 (0.01 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 pid=3517684 [tox/execute/api.py:294]py312: 388 W venv-query> .tox/py312/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py [tox/tox_env/api.py:434]py312: 419 I exit 0 (0.03 seconds) /home/jmusilek/test/tox-uv-fail> .tox/py312/bin/python /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv_query.py pid=3517691 [tox/execute/api.py:294]py312: 420 W venv> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit requestDEBUG Checking for Python interpreter at path `.direnv/python-3.12.8/bin/python3`Using CPython 3.12.8 interpreter at: .direnv/python-3.12.8/bin/python3Creating virtual environment at: .tox/py312DEBUG Using base executable for virtual environment: /usr/bin/python3.12DEBUG Allowing existing directorypy312: 436 I exit 0 (0.01 seconds) /home/jmusilek/test/tox-uv-fail> .direnv/python-3.12.8/bin/uv venv -p /home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py312 pid=3517696 [tox/execute/api.py:294]py312: OK ✔ in 0.06 secondspy313: 442 W venv> .direnv/python-3.12.8/bin/uv venv -p cpython3.13 --allow-existing -v --python-preference only-system /home/jmusilek/test/tox-uv-fail/.tox/py313 [tox/tox_env/api.py:434]DEBUG uv 0.6.7DEBUG Using Python request `[email protected]` from explicit requestDEBUG Searching for CPython 3.13 in search pathDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` (first executable in the search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python` (search path)DEBUG Ignoring Python interpreter at `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python`: system interpreter requiredDEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/usr/bin/python3` (search path)DEBUG Skipping interpreter at `/usr/bin/python3` from search path: does not satisfy request `3.13`DEBUG Found `cpython-3.12.8-linux-x86_64-gnu` at `/bin/python3` (search path)DEBUG Skipping interpreter at `/bin/python3` from search path: does not satisfy request `3.13` × No interpreter found for CPython 3.13 in search pathpy313: 455 E internal error [tox/session/cmd/run/single.py:60]Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 77, in replacer replaced = replace(conf, reference_replacer, raw_, args_) # do replacements ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 70, in replace return Replacer(conf, reference, conf_args=args, depth=depth).join(find_replace_expr(value)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 204, in _replace_match flattened_args = [self.join(arg) for arg in value.expr] ^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 199, in join return "".join(self(value)) ^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 196, in __call__ return [self._replace_match(me) if isinstance(me, MatchExpression) else str(me) for me in value] ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/replacer.py", line 218, in _replace_match replace_value = self.reference(arg_value, conf_args) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 58, in __call__ raise exception File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/replace.py", line 42, in __call__ value = src.load(key, conf_args.chain) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 60, in __call__ return self.value() if callable(self.value) else self.value ^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 250, in env_site_package_dir py = self._py_info ^^^^^^^^^^^^^ File "/usr/lib/python3.12/functools.py", line 995, in __get__ val = self.func(instance) ^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 283, in _py_info self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 222, in create_python_env raise Skip(msg)tox.tox_env.errors.Skip: could not find python interpreter with spec(s): cpython3.13The above exception was the direct cause of the following exception:Traceback (most recent call last): File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/session/cmd/run/single.py", line 47, in _evaluate tox_env.setup() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 257, in setup self._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/runner.py", line 98, in _setup_env super()._setup_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 231, in _setup_env self.ensure_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/python/api.py", line 238, in ensure_python_env self.create_python_env() File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 213, in create_python_env if self.conf["system_site_packages"]: ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 122, in __getitem__ return self.load(item) ^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/sets.py", line 133, in load return config_definition.__call__(self._conf, self.loaders, ConfigLoadArgs(chain, self.name, self.env_name)) # noqa: PLC2801 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/of_type.py", line 117, in __call__ value = self.default(conf, args.env_name) if callable(self.default) else self.default ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 69, in <lambda> self.environment_variables.get("VIRTUALENV_SYSTEM_SITE_PACKAGES", "False"), ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox_uv/_venv.py", line 184, in environment_variables env = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/runner.py", line 193, in environment_variables environment_variables = super().environment_variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/tox_env/api.py", line 351, in environment_variables result[key] = set_env.load(key) ^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/set_env.py", line 90, in load result = self._replacer(raw, args) # apply any replace options ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/lib/python3.12/site-packages/tox/config/loader/ini/__init__.py", line 83, in replacer raise HandledError(msg) from exceptiontox.report.HandledError: replace failed in py313.setenv with Skip('could not find python interpreter with spec(s): cpython3.13') py39: FAIL code 2 (0.03 seconds) py310: OK (0.07 seconds) py311: OK (0.07 seconds) py312: OK (0.06 seconds) py313: FAIL code 2 (0.02 seconds) evaluation failed :( (0.32 seconds)
This is enough to reproduce the issue, no python files are actually needed. You have to be missing interpreter for at least one of the Python versions listed in envlist.
The text was updated successfully, but these errors were encountered:
Issue
Consider following
tox.ini
.When I run
tox
withouttox-uv
installed, it passes and correctly skips all unavailable python interpreters. However, whentox-uv
is installed, exception is raised and job ends inFAIL
state instead ofSKIP
.This is probably caused by env interpolation, because when I omit
{envsitepackagesdir}
from the variable default, everything works as expected.Environment
Provide at least:
Output of
pip list
of the host Python, wheretox
is installedOutput of running tox
Output of
tox -rvv
Minimal example
This is enough to reproduce the issue, no python files are actually needed. You have to be missing interpreter for at least one of the Python versions listed in
envlist
.The text was updated successfully, but these errors were encountered: