forked from pool/python-packaging
Accepting request 736042 from devel:languages:python
- Update to 19.2: * Many buildsystem tweaks to accomodate for distribution shipping - Remove all the merged patches: * 0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch * 0002-Fix-check-for-64-bit-OS.patch * 0003-Add-additional-test-to-get-100-branch-coverage.patch * 0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch * 0005-Drop-dependency-on-attrs.patch OBS-URL: https://build.opensuse.org/request/show/736042 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/python-packaging?expand=0&rev=13
This commit is contained in:
commit
c1e33e7a6b
@ -1,39 +0,0 @@
|
||||
From ee35f4ff365c3a65872f2d2ba5320c6673a5859a Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcermak@suse.com>
|
||||
Date: Thu, 8 Aug 2019 14:39:57 +0200
|
||||
Subject: [PATCH 1/5] Fix test failures test_linux_platforms_manylinux* for non
|
||||
x86_64
|
||||
|
||||
Theses tests are implicitly assuming that they are being run on x86_64 or i686,
|
||||
but fail on ARM, PPC, etc.
|
||||
---
|
||||
tests/test_tags.py | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/tests/test_tags.py b/tests/test_tags.py
|
||||
index 0bb4fd6..1f1441e 100644
|
||||
--- a/tests/test_tags.py
|
||||
+++ b/tests/test_tags.py
|
||||
@@ -511,7 +511,8 @@ def test_linux_platforms_manylinux1(monkeypatch):
|
||||
if platform.system() != "Linux":
|
||||
monkeypatch.setattr(distutils.util, "get_platform", lambda: "linux_x86_64")
|
||||
platforms = tags._linux_platforms(is_32bit=False)
|
||||
- assert platforms == ["manylinux1_x86_64", "linux_x86_64"]
|
||||
+ arch = platform.machine()
|
||||
+ assert platforms == ["manylinux1_" + arch, "linux_" + arch]
|
||||
|
||||
|
||||
def test_linux_platforms_manylinux2010(monkeypatch):
|
||||
@@ -521,7 +522,8 @@ def test_linux_platforms_manylinux2010(monkeypatch):
|
||||
if platform.system() != "Linux":
|
||||
monkeypatch.setattr(distutils.util, "get_platform", lambda: "linux_x86_64")
|
||||
platforms = tags._linux_platforms(is_32bit=False)
|
||||
- expected = ["manylinux2010_x86_64", "manylinux1_x86_64", "linux_x86_64"]
|
||||
+ arch = platform.machine()
|
||||
+ expected = ["manylinux2010_" + arch, "manylinux1_" + arch, "linux_" + arch]
|
||||
assert platforms == expected
|
||||
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,70 +0,0 @@
|
||||
From 73c4a178654cf0ffe64d2f10155f7d7978f3622d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcermak@suse.com>
|
||||
Date: Thu, 8 Aug 2019 15:44:09 +0200
|
||||
Subject: [PATCH 2/5] Fix check for 64 bit OS
|
||||
|
||||
distutils.util.get_platform() returns "linux-x86_64" on 64 bit Linux and not
|
||||
"linux_86_64" as assumed by this function. Instead we use the first element
|
||||
returned by platform.architecture() and move the check into a separate fixture.
|
||||
|
||||
Furthermore, we have to check whether the current OS is x86-based, as the
|
||||
results don't match otherwise.
|
||||
---
|
||||
tests/test_tags.py | 21 +++++++++++++++------
|
||||
1 file changed, 15 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/tests/test_tags.py b/tests/test_tags.py
|
||||
index 1f1441e..9ec30a4 100644
|
||||
--- a/tests/test_tags.py
|
||||
+++ b/tests/test_tags.py
|
||||
@@ -11,6 +11,7 @@ except ImportError:
|
||||
import distutils.util
|
||||
|
||||
import platform
|
||||
+import re
|
||||
import sys
|
||||
import sysconfig
|
||||
import types
|
||||
@@ -26,6 +27,16 @@ def example_tag():
|
||||
return tags.Tag("py3", "none", "any")
|
||||
|
||||
|
||||
+@pytest.fixture
|
||||
+def is_x86():
|
||||
+ return re.match(r"(i\d86|x86_64)", platform.machine()) is not None
|
||||
+
|
||||
+
|
||||
+@pytest.fixture
|
||||
+def is_64bit_os():
|
||||
+ return platform.architecture()[0] == "64bit"
|
||||
+
|
||||
+
|
||||
def test_tag_lowercasing():
|
||||
tag = tags.Tag("PY3", "None", "ANY")
|
||||
assert tag.interpreter == "py3"
|
||||
@@ -486,18 +497,16 @@ def test_have_compatible_glibc(monkeypatch):
|
||||
assert not tags._have_compatible_glibc(2, 4)
|
||||
|
||||
|
||||
-def test_linux_platforms_64bit_on_64bit_os(monkeypatch):
|
||||
- is_64bit_os = distutils.util.get_platform().endswith("_x86_64")
|
||||
- if platform.system() != "Linux" or not is_64bit_os:
|
||||
+def test_linux_platforms_64bit_on_64bit_os(is_64bit_os, is_x86, monkeypatch):
|
||||
+ if platform.system() != "Linux" or not is_64bit_os or not is_x86:
|
||||
monkeypatch.setattr(distutils.util, "get_platform", lambda: "linux_x86_64")
|
||||
monkeypatch.setattr(tags, "_is_manylinux_compatible", lambda *args: False)
|
||||
linux_platform = tags._linux_platforms(is_32bit=False)[-1]
|
||||
assert linux_platform == "linux_x86_64"
|
||||
|
||||
|
||||
-def test_linux_platforms_32bit_on_64bit_os(monkeypatch):
|
||||
- is_64bit_os = distutils.util.get_platform().endswith("_x86_64")
|
||||
- if platform.system() != "Linux" or not is_64bit_os:
|
||||
+def test_linux_platforms_32bit_on_64bit_os(is_64bit_os, is_x86, monkeypatch):
|
||||
+ if platform.system() != "Linux" or not is_64bit_os or not is_x86:
|
||||
monkeypatch.setattr(distutils.util, "get_platform", lambda: "linux_x86_64")
|
||||
monkeypatch.setattr(tags, "_is_manylinux_compatible", lambda *args: False)
|
||||
linux_platform = tags._linux_platforms(is_32bit=True)[-1]
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,32 +0,0 @@
|
||||
From e25b14f0ab054dbde4c2bf274f938a0f74ebb823 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcermak@suse.com>
|
||||
Date: Thu, 8 Aug 2019 15:45:12 +0200
|
||||
Subject: [PATCH 3/5] Add additional test to get 100% branch coverage
|
||||
|
||||
the else: branch was not covered in tags._linux_platforms() due to the from the
|
||||
previous commit
|
||||
---
|
||||
tests/test_tags.py | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/tests/test_tags.py b/tests/test_tags.py
|
||||
index 9ec30a4..5ffbfa5 100644
|
||||
--- a/tests/test_tags.py
|
||||
+++ b/tests/test_tags.py
|
||||
@@ -513,6 +513,13 @@ def test_linux_platforms_32bit_on_64bit_os(is_64bit_os, is_x86, monkeypatch):
|
||||
assert linux_platform == "linux_i686"
|
||||
|
||||
|
||||
+def test_linux_platforms_manylinux_unsupported(monkeypatch):
|
||||
+ monkeypatch.setattr(distutils.util, "get_platform", lambda: "linux_x86_64")
|
||||
+ monkeypatch.setattr(tags, "_is_manylinux_compatible", lambda *args: False)
|
||||
+ linux_platform = tags._linux_platforms(is_32bit=False)
|
||||
+ assert linux_platform == ["linux_x86_64"]
|
||||
+
|
||||
+
|
||||
def test_linux_platforms_manylinux1(monkeypatch):
|
||||
monkeypatch.setattr(
|
||||
tags, "_is_manylinux_compatible", lambda name, _: name == "manylinux1"
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,26 +0,0 @@
|
||||
From d691f8387975b426585bb197fc3f8d8ad6ba02c2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcermak@suse.com>
|
||||
Date: Thu, 8 Aug 2019 15:54:48 +0200
|
||||
Subject: [PATCH 4/5] Fix test_macos_version_detection failure on 32 bit Linux
|
||||
|
||||
tags._mac_arch always returns i386 on 32 bit Linux and thereby
|
||||
tags._mac_platforms()[0] ends with "i386" even in the arch="x86_64" case
|
||||
---
|
||||
tests/test_tags.py | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/tests/test_tags.py b/tests/test_tags.py
|
||||
index 5ffbfa5..0e5b0c6 100644
|
||||
--- a/tests/test_tags.py
|
||||
+++ b/tests/test_tags.py
|
||||
@@ -183,6 +183,7 @@ def test_macos_version_detection(monkeypatch):
|
||||
def test_macos_arch_detection(arch, monkeypatch):
|
||||
if platform.system() != "Darwin" or platform.mac_ver()[2] != arch:
|
||||
monkeypatch.setattr(platform, "mac_ver", lambda: ("10.14", ("", "", ""), arch))
|
||||
+ monkeypatch.setattr(tags, "_mac_arch", lambda *args: arch)
|
||||
assert tags._mac_platforms((10, 14))[0].endswith(arch)
|
||||
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,107 +0,0 @@
|
||||
From 3731ce275df3061d84a6014ec732747e5ae5819e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= <dcermak@suse.com>
|
||||
Date: Tue, 13 Aug 2019 11:57:09 +0200
|
||||
Subject: [PATCH 5/5] Drop dependency on attrs
|
||||
|
||||
- replace tags.Tag with a custom implementation instead of using @attr.s
|
||||
- add a sanity check for __hash__()
|
||||
- drop attrs from setup.py
|
||||
|
||||
This fixes #178
|
||||
---
|
||||
packaging/tags.py | 37 ++++++++++++++++++++++++++++++-------
|
||||
setup.py | 2 +-
|
||||
tests/test_tags.py | 6 ++++++
|
||||
3 files changed, 37 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/packaging/tags.py b/packaging/tags.py
|
||||
index c472b58..c9b5119 100644
|
||||
--- a/packaging/tags.py
|
||||
+++ b/packaging/tags.py
|
||||
@@ -11,8 +11,6 @@ import sys
|
||||
import sysconfig
|
||||
import warnings
|
||||
|
||||
-import attr
|
||||
-
|
||||
|
||||
INTERPRETER_SHORT_NAMES = {
|
||||
"python": "py", # Generic.
|
||||
@@ -26,14 +24,39 @@ INTERPRETER_SHORT_NAMES = {
|
||||
_32_BIT_INTERPRETER = sys.maxsize <= 2 ** 32
|
||||
|
||||
|
||||
-@attr.s(frozen=True, repr=False)
|
||||
class Tag(object):
|
||||
- interpreter = attr.ib(converter=str.lower)
|
||||
- abi = attr.ib(converter=str.lower)
|
||||
- platform = attr.ib(converter=str.lower)
|
||||
+
|
||||
+ __slots__ = ["_interpreter", "_abi", "_platform"]
|
||||
+
|
||||
+ def __init__(self, interpreter, abi, platform):
|
||||
+ self._interpreter = str.lower(interpreter)
|
||||
+ self._abi = str.lower(abi)
|
||||
+ self._platform = str.lower(platform)
|
||||
+
|
||||
+ @property
|
||||
+ def interpreter(self):
|
||||
+ return self._interpreter
|
||||
+
|
||||
+ @property
|
||||
+ def abi(self):
|
||||
+ return self._abi
|
||||
+
|
||||
+ @property
|
||||
+ def platform(self):
|
||||
+ return self._platform
|
||||
+
|
||||
+ def __eq__(self, other):
|
||||
+ return (
|
||||
+ (self.platform == other.platform)
|
||||
+ and (self.abi == other.abi)
|
||||
+ and (self.interpreter == other.interpreter)
|
||||
+ )
|
||||
+
|
||||
+ def __hash__(self):
|
||||
+ return hash((self._interpreter, self._abi, self._platform))
|
||||
|
||||
def __str__(self):
|
||||
- return "{}-{}-{}".format(self.interpreter, self.abi, self.platform)
|
||||
+ return "{}-{}-{}".format(self._interpreter, self._abi, self._platform)
|
||||
|
||||
def __repr__(self):
|
||||
return "<{self} @ {self_id}>".format(self=self, self_id=id(self))
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 874512b..23007c7 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -48,7 +48,7 @@ setup(
|
||||
author=about["__author__"],
|
||||
author_email=about["__email__"],
|
||||
python_requires=">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*",
|
||||
- install_requires=["attrs", "pyparsing>=2.0.2", "six"], # Needed to avoid issue #91
|
||||
+ install_requires=["pyparsing>=2.0.2", "six"], # Needed to avoid issue #91
|
||||
classifiers=[
|
||||
"Development Status :: 5 - Production/Stable",
|
||||
"Intended Audience :: Developers",
|
||||
diff --git a/tests/test_tags.py b/tests/test_tags.py
|
||||
index 0bb4fd6..a6d50f3 100644
|
||||
--- a/tests/test_tags.py
|
||||
+++ b/tests/test_tags.py
|
||||
@@ -43,6 +43,12 @@ def test_tag_hashing(example_tag):
|
||||
assert example_tag in tags
|
||||
|
||||
|
||||
+def test_tag_hash_equality(example_tag):
|
||||
+ equal_tag = tags.Tag("py3", "none", "any")
|
||||
+ assert example_tag == equal_tag
|
||||
+ assert example_tag.__hash__() == equal_tag.__hash__()
|
||||
+
|
||||
+
|
||||
def test_tag_str(example_tag):
|
||||
assert str(example_tag) == "py3-none-any"
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:c491ca87294da7cc01902edbe30a5bc6c4c28172b5138ab4e4aa1b9d7bfaeafe
|
||||
size 57886
|
3
packaging-19.2.tar.gz
Normal file
3
packaging-19.2.tar.gz
Normal file
@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:28b924174df7a2fa32c1953825ff29c61e2f5e082343165438812f00d3a7fc47
|
||||
size 59110
|
@ -1,3 +1,15 @@
|
||||
-------------------------------------------------------------------
|
||||
Tue Oct 8 09:22:51 UTC 2019 - Tomáš Chvátal <tchvatal@suse.com>
|
||||
|
||||
- Update to 19.2:
|
||||
* Many buildsystem tweaks to accomodate for distribution shipping
|
||||
- Remove all the merged patches:
|
||||
* 0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch
|
||||
* 0002-Fix-check-for-64-bit-OS.patch
|
||||
* 0003-Add-additional-test-to-get-100-branch-coverage.patch
|
||||
* 0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch
|
||||
* 0005-Drop-dependency-on-attrs.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 19 08:15:30 UTC 2019 - Dan Čermák <dcermak@suse.com>
|
||||
|
||||
|
@ -26,19 +26,13 @@
|
||||
%bcond_with test
|
||||
%endif
|
||||
Name: python-packaging%{psuffix}
|
||||
Version: 19.1
|
||||
Version: 19.2
|
||||
Release: 0
|
||||
Summary: Core utilities for Python packages
|
||||
License: Apache-2.0
|
||||
Group: Development/Languages/Python
|
||||
URL: https://github.com/pypa/packaging
|
||||
Source: https://pypi.io/packages/source/p/packaging/packaging-%{version}.tar.gz
|
||||
# FIXME: drop these patches on the next release after 19.1
|
||||
Patch0: 0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch
|
||||
Patch1: 0002-Fix-check-for-64-bit-OS.patch
|
||||
Patch2: 0003-Add-additional-test-to-get-100-branch-coverage.patch
|
||||
Patch3: 0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch
|
||||
Patch4: 0005-Drop-dependency-on-attrs.patch
|
||||
BuildRequires: %{python_module six}
|
||||
BuildRequires: fdupes
|
||||
BuildRequires: python-rpm-macros
|
||||
@ -61,17 +55,9 @@ Core utilities for Python packages
|
||||
|
||||
%prep
|
||||
%setup -q -n packaging-%{version}
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
# sdist must provide a packaging.egg-info, used below in install phase
|
||||
test -d packaging.egg-info
|
||||
|
||||
# FIXME: drop this on the next release after 19.1
|
||||
sed -i '/^attrs/d' packaging.egg-info/requires.txt
|
||||
|
||||
%build
|
||||
%python_build
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user