-
-
Notifications
You must be signed in to change notification settings - Fork 28
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Issue
Consider following tox.ini
.
[tox]
minversion = 4.18.0
envlist =
py39
py310
py311
py312
py313
skip_missing_interpreters = true
[testenv]
setenv =
MYVAR = {env:MYVAR:{envsitepackagesdir}/something}
uv_python_preference = only-system
command = echo $MYVAR
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
Package Version
------------- -------
cachetools 5.5.2
chardet 5.2.0
colorama 0.4.6
distlib 0.3.9
filelock 3.18.0
packaging 24.2
pip 24.3.1
platformdirs 4.3.6
pluggy 1.5.0
pyproject-api 1.9.0
tox 4.24.2
tox-uv 1.25.0
uv 0.6.7
virtualenv 20.29.3
Output of running tox
Output of tox -rvv
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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.9 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 path
py39: 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.9
The 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 exception
tox.report.HandledError: replace failed in py39.setenv with Skip('could not find python interpreter with spec(s): cpython3.9')
py39: FAIL ✖ in 0.15 seconds
py310: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.10 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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.10
Creating virtual environment at: .tox/py310
DEBUG Using base executable for virtual environment: /usr/bin/python3.10
DEBUG Allowing existing directory
py310: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.10 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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.10
Creating virtual environment at: .tox/py310
DEBUG Using base executable for virtual environment: /usr/bin/python3.10
DEBUG Allowing existing directory
py310: 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 seconds
py311: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.11 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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.11
Creating virtual environment at: .tox/py311
DEBUG Using base executable for virtual environment: /usr/bin/python3.11
DEBUG Allowing existing directory
py311: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.11 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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.11
Creating virtual environment at: .tox/py311
DEBUG Using base executable for virtual environment: /usr/bin/python3.11
DEBUG Allowing existing directory
py311: 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 seconds
py312: 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.7
DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit request
DEBUG 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/python3
Creating virtual environment at: .tox/py312
DEBUG Using base executable for virtual environment: /usr/bin/python3.12
DEBUG Allowing existing directory
py312: 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.7
DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit request
DEBUG 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/python3
Creating virtual environment at: .tox/py312
DEBUG Using base executable for virtual environment: /usr/bin/python3.12
DEBUG Allowing existing directory
py312: 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 seconds
py313: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.13 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 path
py313: 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 -rvv
py39: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.9 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 path
py39: 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.9
The 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 exception
tox.report.HandledError: replace failed in py39.setenv with Skip('could not find python interpreter with spec(s): cpython3.9')
py39: FAIL ✖ in 0.03 seconds
py310: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.10 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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.10
Creating virtual environment at: .tox/py310
DEBUG Using base executable for virtual environment: /usr/bin/python3.10
DEBUG Allowing existing directory
py310: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.10 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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.10
Creating virtual environment at: .tox/py310
DEBUG Using base executable for virtual environment: /usr/bin/python3.10
DEBUG Allowing existing directory
py310: 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 seconds
py311: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.11 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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.11
Creating virtual environment at: .tox/py311
DEBUG Using base executable for virtual environment: /usr/bin/python3.11
DEBUG Allowing existing directory
py311: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.11 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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 required
DEBUG 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.11
Creating virtual environment at: .tox/py311
DEBUG Using base executable for virtual environment: /usr/bin/python3.11
DEBUG Allowing existing directory
py311: 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 seconds
py312: 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.7
DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit request
DEBUG 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/python3
Creating virtual environment at: .tox/py312
DEBUG Using base executable for virtual environment: /usr/bin/python3.12
DEBUG Allowing existing directory
py312: 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.7
DEBUG Using Python request `/home/jmusilek/test/tox-uv-fail/.direnv/python-3.12.8/bin/python3` from explicit request
DEBUG 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/python3
Creating virtual environment at: .tox/py312
DEBUG Using base executable for virtual environment: /usr/bin/python3.12
DEBUG Allowing existing directory
py312: 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 seconds
py313: 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.7
DEBUG Using Python request `[email protected]` from explicit request
DEBUG Searching for CPython 3.13 in search path
DEBUG 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 required
DEBUG 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 required
DEBUG 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 path
py313: 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.13
The 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 exception
tox.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)
Minimal example
[tox]
minversion = 4.18.0
envlist =
py39
py310
py311
py312
py313
skip_missing_interpreters = true
[testenv]
setenv =
MYVAR = {env:MYVAR:{envsitepackagesdir}/something}
uv_python_preference = only-system
command = echo $MYVAR
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
.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working