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 b78838291..9c5d69f35 100644 --- a/pulp_python/app/utils.py +++ b/pulp_python/app/utils.py @@ -645,12 +645,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) @@ -685,7 +685,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 @@ -693,7 +693,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