From 721d53814f7ffbe2f34ade77e3b02cad7216ab2e Mon Sep 17 00:00:00 2001 From: Damian Shaw Date: Mon, 19 Oct 2026 13:22:18 -0400 Subject: [PATCH] Match prereleases in remote ranges without mutating specifiers (cherry picked from commit e28456fb25cf99178844947d2f30f755ab2661cb) --- CHANGES/+prerelease-range-filters.bugfix | 1 + pulp_python/app/utils.py | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 CHANGES/+prerelease-range-filters.bugfix diff --git a/CHANGES/+prerelease-range-filters.bugfix b/CHANGES/+prerelease-range-filters.bugfix new file mode 100644 index 000000000..3fd240bad --- /dev/null +++ b/CHANGES/+prerelease-range-filters.bugfix @@ -0,0 +1 @@ +Remote include and exclude ranges accept matching prerelease versions without deprecation warnings. diff --git a/pulp_python/app/utils.py b/pulp_python/app/utils.py index 8838fa519..1fd85e3eb 100644 --- a/pulp_python/app/utils.py +++ b/pulp_python/app/utils.py @@ -666,12 +666,12 @@ def __init__(self, remote): self._filter_excludes = self._parse_packages(self.remote.excludes) def _parse_packages(self, packages): + """Group requirements by project and whether they specify a version range.""" config = defaultdict(lambda: defaultdict(list)) for value in packages: requirement = Requirement(value) requirement.name = canonicalize_name(requirement.name) if requirement.specifier: - requirement.specifier.prereleases = True config["range"][requirement.name].append(requirement) else: config["full"][requirement.name].append(requirement) @@ -706,7 +706,7 @@ def filter_release(self, project_name, version): include_range = self._filter_includes.get("range", {}) if project_name in include_range: for req in include_range[project_name]: - if version in req.specifier: + if req.specifier.contains(version, prereleases=True): break else: return False @@ -714,7 +714,7 @@ def filter_release(self, project_name, version): exclude_range = self._filter_excludes.get("range", {}) if project_name in exclude_range: for req in exclude_range[project_name]: - if version in req.specifier: + if req.specifier.contains(version, prereleases=True): return False return True