From 6d28bbf065a292f67d3d66d8f47fba15a1a2d512 Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Thu, 1 May 2025 19:39:22 -0500 Subject: [PATCH 1/2] Update version of `dependency-groups` to v1.3.1 This is a bugfix release which resolves #13372 --- news/dependency-groups.vendor.rst | 2 ++ .../dependency_groups/_implementation.py | 18 +++++++----------- src/pip/_vendor/vendor.txt | 2 +- 3 files changed, 10 insertions(+), 12 deletions(-) create mode 100644 news/dependency-groups.vendor.rst diff --git a/news/dependency-groups.vendor.rst b/news/dependency-groups.vendor.rst new file mode 100644 index 00000000000..24472b829cb --- /dev/null +++ b/news/dependency-groups.vendor.rst @@ -0,0 +1,2 @@ +- Update to ``dependency-groups==1.3.1``, which resolves a bug in which include + resolution was not normalizing names. diff --git a/src/pip/_vendor/dependency_groups/_implementation.py b/src/pip/_vendor/dependency_groups/_implementation.py index 80d91693820..64e314a6328 100644 --- a/src/pip/_vendor/dependency_groups/_implementation.py +++ b/src/pip/_vendor/dependency_groups/_implementation.py @@ -12,7 +12,7 @@ def _normalize_name(name: str) -> str: def _normalize_group_names( - dependency_groups: Mapping[str, str | Mapping[str, str]] + dependency_groups: Mapping[str, str | Mapping[str, str]], ) -> Mapping[str, str | Mapping[str, str]]: original_names: dict[str, list[str]] = {} normalized_groups = {} @@ -171,17 +171,16 @@ def _resolve(self, group: str, requested_group: str) -> tuple[Requirement, ...]: if isinstance(item, Requirement): resolved_group.append(item) elif isinstance(item, DependencyGroupInclude): - if item.include_group in self._include_graph_ancestors.get(group, ()): + include_group = _normalize_name(item.include_group) + if include_group in self._include_graph_ancestors.get(group, ()): raise CyclicDependencyError( requested_group, group, item.include_group ) - self._include_graph_ancestors[item.include_group] = ( + self._include_graph_ancestors[include_group] = ( *self._include_graph_ancestors.get(group, ()), group, ) - resolved_group.extend( - self._resolve(item.include_group, requested_group) - ) + resolved_group.extend(self._resolve(include_group, requested_group)) else: # unreachable raise NotImplementedError( f"Invalid dependency group item after parse: {item}" @@ -206,8 +205,5 @@ def resolve( :raises LookupError: if group name is absent :raises packaging.requirements.InvalidRequirement: if a specifier is not valid """ - return tuple( - str(r) - for group in groups - for r in DependencyGroupResolver(dependency_groups).resolve(group) - ) + resolver = DependencyGroupResolver(dependency_groups) + return tuple(str(r) for group in groups for r in resolver.resolve(group)) diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt index 283d57f5f34..b6597dc0022 100644 --- a/src/pip/_vendor/vendor.txt +++ b/src/pip/_vendor/vendor.txt @@ -17,4 +17,4 @@ setuptools==70.3.0 tomli==2.2.1 tomli-w==1.2.0 truststore==0.10.1 -dependency-groups==1.3.0 +dependency-groups==1.3.1 From 7d006399c0d0d38e55d56a6b0732e959bf75f796 Mon Sep 17 00:00:00 2001 From: Stephen Rosen Date: Thu, 1 May 2025 20:01:24 -0500 Subject: [PATCH 2/2] Update newsfiles for dependency-groups patch --- news/13372.bugfix.rst | 2 ++ news/dependency-groups.vendor.rst | 3 +-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 news/13372.bugfix.rst diff --git a/news/13372.bugfix.rst b/news/13372.bugfix.rst new file mode 100644 index 00000000000..11ddd6e2451 --- /dev/null +++ b/news/13372.bugfix.rst @@ -0,0 +1,2 @@ +- Names in dependency group includes are now normalized before lookup, which + fixes incorrect ``Dependency group '...' not found`` errors. diff --git a/news/dependency-groups.vendor.rst b/news/dependency-groups.vendor.rst index 24472b829cb..d1318b930d2 100644 --- a/news/dependency-groups.vendor.rst +++ b/news/dependency-groups.vendor.rst @@ -1,2 +1 @@ -- Update to ``dependency-groups==1.3.1``, which resolves a bug in which include - resolution was not normalizing names. +- Upgrade dependency-groups to 1.3.1