From e1805b374cad5fcf26a75bf70012769e45b4ae0680875b3684eb5368b0c1f879 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Chv=C3=A1tal?= Date: Mon, 19 Aug 2019 08:32:10 +0000 Subject: [PATCH] Accepting request 724501 from home:dancermak:branches:devel:languages:python drop dependency on attrs OBS-URL: https://build.opensuse.org/request/show/724501 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-packaging?expand=0&rev=30 --- ...s-test_linux_platforms_manylinux-for.patch | 2 +- 0002-Fix-check-for-64-bit-OS.patch | 2 +- ...onal-test-to-get-100-branch-coverage.patch | 2 +- ...ersion_detection-failure-on-32-bit-L.patch | 2 +- 0005-Drop-dependency-on-attrs.patch | 107 ++++++++++++++++++ python-packaging.changes | 7 ++ python-packaging.spec | 2 + 7 files changed, 120 insertions(+), 4 deletions(-) create mode 100644 0005-Drop-dependency-on-attrs.patch diff --git a/0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch b/0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch index c7c081f..787b6e2 100644 --- a/0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch +++ b/0001-Fix-test-failures-test_linux_platforms_manylinux-for.patch @@ -1,7 +1,7 @@ From ee35f4ff365c3a65872f2d2ba5320c6673a5859a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Thu, 8 Aug 2019 14:39:57 +0200 -Subject: [PATCH 1/4] Fix test failures test_linux_platforms_manylinux* for non +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, diff --git a/0002-Fix-check-for-64-bit-OS.patch b/0002-Fix-check-for-64-bit-OS.patch index 2e7f0ba..c6d964b 100644 --- a/0002-Fix-check-for-64-bit-OS.patch +++ b/0002-Fix-check-for-64-bit-OS.patch @@ -1,7 +1,7 @@ From 73c4a178654cf0ffe64d2f10155f7d7978f3622d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Thu, 8 Aug 2019 15:44:09 +0200 -Subject: [PATCH 2/4] Fix check for 64 bit OS +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 diff --git a/0003-Add-additional-test-to-get-100-branch-coverage.patch b/0003-Add-additional-test-to-get-100-branch-coverage.patch index ae52d5f..e3d6c70 100644 --- a/0003-Add-additional-test-to-get-100-branch-coverage.patch +++ b/0003-Add-additional-test-to-get-100-branch-coverage.patch @@ -1,7 +1,7 @@ From e25b14f0ab054dbde4c2bf274f938a0f74ebb823 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Thu, 8 Aug 2019 15:45:12 +0200 -Subject: [PATCH 3/4] Add additional test to get 100% branch coverage +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 diff --git a/0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch b/0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch index f233f9d..05b7cc1 100644 --- a/0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch +++ b/0004-Fix-test_macos_version_detection-failure-on-32-bit-L.patch @@ -1,7 +1,7 @@ From d691f8387975b426585bb197fc3f8d8ad6ba02c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= Date: Thu, 8 Aug 2019 15:54:48 +0200 -Subject: [PATCH 4/4] Fix test_macos_version_detection failure on 32 bit Linux +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 diff --git a/0005-Drop-dependency-on-attrs.patch b/0005-Drop-dependency-on-attrs.patch new file mode 100644 index 0000000..80275b2 --- /dev/null +++ b/0005-Drop-dependency-on-attrs.patch @@ -0,0 +1,107 @@ +From 3731ce275df3061d84a6014ec732747e5ae5819e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Dan=20=C4=8Cerm=C3=A1k?= +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 + diff --git a/python-packaging.changes b/python-packaging.changes index 292af39..eb2fa99 100644 --- a/python-packaging.changes +++ b/python-packaging.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Aug 19 08:15:30 UTC 2019 - Dan Čermák + +- Remove dependency on attrs + Add: 0005-Drop-dependency-on-attrs.patch + this fixes bsc#1144506 + ------------------------------------------------------------------- Thu Aug 15 08:35:19 UTC 2019 - Tomáš Chvátal diff --git a/python-packaging.spec b/python-packaging.spec index 0d34aa6..46d3c68 100644 --- a/python-packaging.spec +++ b/python-packaging.spec @@ -38,6 +38,7 @@ 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 @@ -64,6 +65,7 @@ Core utilities for Python packages %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