diff --git a/docs/changelog/3193.feature.rst b/docs/changelog/3193.feature.rst new file mode 100644 index 000000000..c04a364f4 --- /dev/null +++ b/docs/changelog/3193.feature.rst @@ -0,0 +1 @@ +Add the PEP 838 ``python-version`` field to ``pyvenv.cfg``. diff --git a/src/virtualenv/create/creator.py b/src/virtualenv/create/creator.py index 800eb28d7..b0b387f82 100644 --- a/src/virtualenv/create/creator.py +++ b/src/virtualenv/create/creator.py @@ -223,8 +223,10 @@ def set_pyenv_cfg(self) -> None: assert system_executable is not None # ruff:ignore[assert] self.pyenv_cfg["home"] = os.path.dirname(os.path.abspath(system_executable)) self.pyenv_cfg["implementation"] = self.interpreter.implementation - self.pyenv_cfg["version_info"] = ".".join(str(i) for i in self.interpreter.version_info) - self.pyenv_cfg["version"] = ".".join(str(i) for i in self.interpreter.version_info[:3]) + version_info = self.interpreter.version_info + self.pyenv_cfg["python-version"] = f"{version_info.major}.{version_info.minor}" + self.pyenv_cfg["version_info"] = ".".join(str(i) for i in version_info) + self.pyenv_cfg["version"] = ".".join(str(i) for i in version_info[:3]) self.pyenv_cfg["executable"] = os.path.realpath(system_executable) self.pyenv_cfg["command"] = f"{sys.executable} -m virtualenv {self.dest}" self.pyenv_cfg["virtualenv"] = __version__ diff --git a/tests/unit/create/test_creator.py b/tests/unit/create/test_creator.py index f69d41dc7..b200a5eca 100644 --- a/tests/unit/create/test_creator.py +++ b/tests/unit/create/test_creator.py @@ -326,9 +326,10 @@ def test_prompt_set(tmp_path: Path, creator: str, prompt: str | None, monkeypatc @pytest.mark.parametrize("creator", CURRENT_CREATORS) -def test_version_key_in_pyenv_cfg(tmp_path: Path, creator: str) -> None: +def test_version_keys_in_pyenv_cfg(tmp_path: Path, creator: str) -> None: result = cli_run([str(tmp_path), "--seeder", "app-data", "--without-pip", "--creator", creator]) cfg = PyEnvCfg.from_file(result.creator.pyenv_cfg.path) + assert cfg["python-version"] == f"{sys.version_info.major}.{sys.version_info.minor}" assert "version" in cfg parts = cfg["version"].split(".") assert len(parts) == 3