diff --git a/docs/changelog/2754.bugfix.rst b/docs/changelog/2754.bugfix.rst new file mode 100644 index 000000000..d948067fb --- /dev/null +++ b/docs/changelog/2754.bugfix.rst @@ -0,0 +1,2 @@ +Setting ``[testenv] basepython = python3`` will no longer override the Python interpreter version requested by a factor, +such as ``py311`` - by :user:`stephenfin`. diff --git a/src/tox/tox_env/python/api.py b/src/tox/tox_env/python/api.py index 9a8ff6ce3..58e73ca21 100644 --- a/src/tox/tox_env/python/api.py +++ b/src/tox/tox_env/python/api.py @@ -154,7 +154,7 @@ def _validate_base_python(env_name: str, base_pythons: list[str], ignore_base_py if any( getattr(spec_base, key) != getattr(spec_name, key) for key in ("implementation", "major", "minor", "micro", "architecture") - if getattr(spec_base, key) is not None and getattr(spec_name, key) is not None + if getattr(spec_name, key) is not None ): msg = f"env name {env_name} conflicting with base python {base_python}" if ignore_base_python_conflict: diff --git a/tests/tox_env/python/test_python_api.py b/tests/tox_env/python/test_python_api.py index 0520ff173..b11c4376c 100644 --- a/tests/tox_env/python/test_python_api.py +++ b/tests/tox_env/python/test_python_api.py @@ -95,6 +95,7 @@ def test_base_python_env_no_conflict(env: str, base_python: list[str], ignore_co ("py3", ["py2"], ["py2"]), ("py38", ["py39"], ["py39"]), ("py38", ["py38", "py39"], ["py39"]), + ("py38", ["python3"], ["python3"]), ("py310", ["py38", "py39"], ["py38", "py39"]), ("py3.11.1", ["py3.11.2"], ["py3.11.2"]), ("py3-64", ["py3-32"], ["py3-32"]),