diff --git a/docs/changelog/3396.bugfix.rst b/docs/changelog/3396.bugfix.rst new file mode 100644 index 0000000000..cb13f44bd0 --- /dev/null +++ b/docs/changelog/3396.bugfix.rst @@ -0,0 +1 @@ +Fix a bug, that prevented the installation of extra dependencies, which contain an underscore in their identifier. diff --git a/src/tox/tox_env/python/virtual_env/package/pyproject.py b/src/tox/tox_env/python/virtual_env/package/pyproject.py index b70fc677ca..f9d9cc4ff0 100644 --- a/src/tox/tox_env/python/virtual_env/package/pyproject.py +++ b/src/tox/tox_env/python/virtual_env/package/pyproject.py @@ -13,6 +13,7 @@ from cachetools import cached from packaging.requirements import Requirement +from packaging.utils import canonicalize_name from pyproject_api import ( BackendFailed, CmdStatus, @@ -313,7 +314,7 @@ def _load_deps_from_static(self, for_env: EnvConfigSet) -> list[Requirement] | N ] optional_deps = project.get("optional-dependencies", {}) for extra, reqs in optional_deps.items(): - deps_with_markers.extend((Requirement(req), {extra}) for req in (reqs or [])) + deps_with_markers.extend((Requirement(req), {canonicalize_name(extra)}) for req in (reqs or [])) return dependencies_with_extras_from_markers( deps_with_markers=deps_with_markers, extras=extras,