Replace semantic_version with packaging

Resolves: rhbz#1980994
This commit is contained in:
Christian Heimes 2021-07-26 13:27:34 +02:00
parent 3989ac04cb
commit e70215a02b
2 changed files with 128 additions and 3 deletions

View File

@ -0,0 +1,120 @@
From 78965633be625fba3fee6fbbf3b24e22d9d349cc Mon Sep 17 00:00:00 2001
From: Christian Heimes <christian@python.org>
Date: Mon, 26 Jul 2021 12:29:12 +0200
Subject: [PATCH] Replace semantic_version with packaging
Use the "packaging" package instead of semantic_version package to parse
Rust version and spec. Packaging is used by setuptools to parse version
strings and specs.
This also solves a deprecation warning with semamtic_version. The
partial argument to Version() has been deprecated.
Signed-off-by: Christian Heimes <christian@python.org>
---
setup.cfg | 2 +-
setuptools_rust/check.py | 4 ++--
setuptools_rust/extension.py | 4 ++--
setuptools_rust/test.py | 4 ++--
setuptools_rust/utils.py | 4 ++--
5 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/setup.cfg b/setup.cfg
index 5b6ddf0..19b2b84 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -26,7 +26,7 @@ classifiers =
[options]
packages = setuptools_rust
zip_safe = True
-install_requires = setuptools>=46.1; semantic_version>=2.6.0; toml>=0.9.0
+install_requires = setuptools>=46.1; packaging; toml>=0.9.0
setup_requires = setuptools>=46.1; setuptools_scm[toml]>=3.4.3
python_requires = >=3.6
diff --git a/setuptools_rust/check.py b/setuptools_rust/check.py
index 4fe1d83..62e666b 100644
--- a/setuptools_rust/check.py
+++ b/setuptools_rust/check.py
@@ -7,13 +7,13 @@ from distutils.errors import (
DistutilsExecError,
)
-import semantic_version
+from packaging.specifiers import SpecifierSet
from .command import RustCommand
from .extension import RustExtension
from .utils import rust_features
-MIN_VERSION = semantic_version.Spec(">=1.16")
+MIN_VERSION = SpecifierSet(">=1.16")
class check_rust(RustCommand):
diff --git a/setuptools_rust/extension.py b/setuptools_rust/extension.py
index f8e7205..cc445cb 100644
--- a/setuptools_rust/extension.py
+++ b/setuptools_rust/extension.py
@@ -4,7 +4,7 @@ from distutils.errors import DistutilsSetupError
from enum import IntEnum, auto
from typing import Dict, List, Optional, Union
-import semantic_version
+from packaging.specifiers import SpecifierSet
class Binding(IntEnum):
@@ -149,7 +149,7 @@ class RustExtension:
if self.rust_version is None:
return None
try:
- return semantic_version.SimpleSpec.parse(self.rust_version)
+ return SpecifierSet(self.rust_version)
except ValueError:
raise DistutilsSetupError(
"Can not parse rust compiler version: %s", self.rust_version
diff --git a/setuptools_rust/test.py b/setuptools_rust/test.py
index 93beba1..1f5ce9a 100644
--- a/setuptools_rust/test.py
+++ b/setuptools_rust/test.py
@@ -4,12 +4,12 @@ import subprocess
from distutils.cmd import Command
from distutils.errors import CompileError, DistutilsFileError, DistutilsExecError
-import semantic_version
+from packaging.specifiers import SpecifierSet
from .extension import RustExtension
from .utils import rust_features, get_rust_version
-MIN_VERSION = semantic_version.Spec(">=1.15")
+MIN_VERSION = SpecifierSet(">=1.15")
class test_rust(Command):
diff --git a/setuptools_rust/utils.py b/setuptools_rust/utils.py
index 4b0220d..0564f26 100644
--- a/setuptools_rust/utils.py
+++ b/setuptools_rust/utils.py
@@ -2,7 +2,7 @@ import sys
import subprocess
from distutils.errors import DistutilsPlatformError
-import semantic_version
+from packaging.version import Version
from .extension import Binding
@@ -35,7 +35,7 @@ def rust_features(ext=True, binding=Binding.PyO3):
def get_rust_version(min_version=None):
try:
output = subprocess.check_output(["rustc", "-V"]).decode("latin-1")
- return semantic_version.Version(output.split(" ")[1], partial=True)
+ return Version(output.split(" ")[1])
except (subprocess.CalledProcessError, OSError):
raise DistutilsPlatformError(
"can't find Rust compiler\n\n"
--
2.31.1

View File

@ -6,18 +6,19 @@
Name: python-setuptools-rust Name: python-setuptools-rust
Version: 0.12.1 Version: 0.12.1
Release: 2%{?dist} Release: 3%{?dist}
Summary: Setuptools Rust extension plugin Summary: Setuptools Rust extension plugin
License: MIT License: MIT
URL: https://github.com/PyO3/setuptools-rust URL: https://github.com/PyO3/setuptools-rust
Source0: %{pypi_source setuptools-rust} Source0: %{pypi_source setuptools-rust}
Patch0001: 0001-Replace-semantic_version-with-packaging.patch
BuildArch: noarch BuildArch: noarch
ExclusiveArch: %{rust_arches} ExclusiveArch: %{rust_arches}
BuildRequires: python3-devel BuildRequires: python3-devel
BuildRequires: python3dist(setuptools) BuildRequires: python3dist(setuptools)
BuildRequires: python3dist(semantic-version) >= 2.6 BuildRequires: python3dist(packaging)
BuildRequires: python3dist(toml) >= 0.9.0 BuildRequires: python3dist(toml) >= 0.9.0
%if 0%{?fedora} %if 0%{?fedora}
BuildRequires: python3dist(setuptools-scm) >= 3.4.3 BuildRequires: python3dist(setuptools-scm) >= 3.4.3
@ -48,7 +49,7 @@ Setuptools helpers for Rust Python extensions. Compile and distribute Python
extensions written in Rust as easily as if they were written in C. extensions written in Rust as easily as if they were written in C.
%prep %prep
%autosetup -n setuptools-rust-%{version} %autosetup -p1 -n setuptools-rust-%{version}
# Remove bundled egg-info # Remove bundled egg-info
rm -rf setuptools-rust.egg-info rm -rf setuptools-rust.egg-info
@ -92,6 +93,10 @@ cd ../..
%{python3_sitelib}/setuptools_rust-%{version}-py%{python3_version}.egg-info/ %{python3_sitelib}/setuptools_rust-%{version}-py%{python3_version}.egg-info/
%changelog %changelog
* Mon Jul 26 2021 Christian Heimes <cheimes@redhat.com> - 0.12.1-3
- Replace semantic_version with packaging
- Resolves: rhbz#1980994
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.12.1-2 * Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.12.1-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 - Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937