Use deprecated LegacyVersion (_version) only if necessary

LegacyVersion has been removed from Packaging in 2022. If the call
to `parse` function returns LegacyVersion, access to
version._version cannot emit DeprecationWarning.

Fixes: rhbz#2442867
This commit is contained in:
Lumir Balhar 2026-03-03 12:22:58 +01:00
commit ab5e6f86de
2 changed files with 12 additions and 9 deletions

View file

@ -1,7 +1,7 @@
Name: python-rpm-generators
Summary: Dependency generators for Python RPMs
Version: 14
Release: 14%{?dist}
Release: 15%{?dist}
Url: https://src.fedoraproject.org/rpms/python-rpm-generators
@ -56,6 +56,9 @@ install -Dpm0755 -t %{buildroot}%{_rpmconfigdir} *.py
%{_rpmconfigdir}/pythonbundles.py
%changelog
* Wed Mar 04 2026 Lumír Balhar <lbala@redhat.com> - 14-15
- pythondistdeps: Use deprecated LegacyVersion (_version) only if necessary
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 14-14
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild

View file

@ -133,14 +133,14 @@ class Distribution(PathDistribution):
class RpmVersion():
def __init__(self, version_id):
version = parse(version_id)
if isinstance(version._version, str):
if version.__class__.__name__ == 'LegacyVersion':
self.version = version._version
else:
self.epoch = version._version.epoch
self.version = list(version._version.release)
self.pre = version._version.pre
self.dev = version._version.dev
self.post = version._version.post
self.epoch = version.epoch
self.version = list(version.release)
self.pre = version.pre
self.dev = version.dev
self.post = version.post
# version.local is ignored as it is not expected to appear
# in public releases
# https://www.python.org/dev/peps/pep-0440/#local-version-identifiers
@ -171,9 +171,9 @@ class RpmVersion():
if self.pre:
rpm_suffix = '~{}'.format(''.join(str(x) for x in self.pre))
elif self.dev:
rpm_suffix = '~~{}'.format(''.join(str(x) for x in self.dev))
rpm_suffix = '~~dev{}'.format(self.dev)
elif self.post:
rpm_suffix = '^post{}'.format(self.post[1])
rpm_suffix = '^post{}'.format(self.post)
else:
rpm_suffix = ''
return '{}{}{}'.format(rpm_epoch, rpm_version, rpm_suffix)