]> TLD Linux GIT Repositories - packages/python3-resolvelib.git/commitdiff
- new master
authorMarcin Krol <hawk@tld-linux.org>
Sun, 28 Apr 2024 18:27:10 +0000 (20:27 +0200)
committerMarcin Krol <hawk@tld-linux.org>
Sun, 28 Apr 2024 18:27:10 +0000 (20:27 +0200)
python3-resolvelib.spec [new file with mode: 0644]
remove-commentjson-dep.patch [new file with mode: 0644]

diff --git a/python3-resolvelib.spec b/python3-resolvelib.spec
new file mode 100644 (file)
index 0000000..2dcaec2
--- /dev/null
@@ -0,0 +1,48 @@
+#
+# Conditional build:
+%bcond_without tests   # unit tests
+
+%define        module  resolvelib
+Summary:       Resolve abstract dependencies into concrete ones
+Name:          python3-%{module}
+Version:       1.0.1
+Release:       1
+License:       ISC
+Group:         Libraries/Python
+Source0:       https://github.com/sarugaku/resolvelib/archive/refs/tags/%{version}.tar.gz
+# Source0-md5: 8b974341f0aa7532d2a093fa79dd4b1e
+Patch0:                remove-commentjson-dep.patch
+URL:           https://github.com/sarugaku/resolvelib
+BuildRequires: python3-modules >= 1:3.6
+BuildRequires: python3-setuptools
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.714
+BuildArch:     noarch
+BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+ResolveLib at the highest level provides a Resolver class that
+includes dependency resolution logic. You give it some things, and a
+little information on how it should interact with them, and it will
+spit out a resolution result.
+
+%prep
+%setup -q -n %{module}-%{version}
+%patch0 -p1
+
+%build
+%py3_build %{?with_tests:test}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%py3_install
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%files
+%defattr(644,root,root,755)
+%doc README.rst
+%{py3_sitescriptdir}/%{module}
+%{py3_sitescriptdir}/%{module}-%{version}-py*.egg-info
diff --git a/remove-commentjson-dep.patch b/remove-commentjson-dep.patch
new file mode 100644 (file)
index 0000000..2905a65
--- /dev/null
@@ -0,0 +1,63 @@
+From 3e50054d836b655b0868520bae8b85a3c18967ef Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Wed, 8 Nov 2023 17:12:16 +0100
+Subject: [PATCH] Replace the commentjson test dependency with re.sub
+
+While at it, only open the json files once.
+
+Co-authored-by: Maxwell G <maxwell@gtmx.me>
+---
+ setup.cfg                                     |  1 -
+ .../cocoapods/test_resolvers_cocoapods.py     | 19 +++++++++++--------
+ 2 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/setup.cfg b/setup.cfg
+index 5eddf2f..e080991 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -44,7 +44,6 @@ lint =
+       isort
+       types-requests
+ test =
+-      commentjson
+       packaging
+       pytest
+ release =
+diff --git a/tests/functional/cocoapods/test_resolvers_cocoapods.py b/tests/functional/cocoapods/test_resolvers_cocoapods.py
+index 12dff46..f54e27d 100644
+--- a/tests/functional/cocoapods/test_resolvers_cocoapods.py
++++ b/tests/functional/cocoapods/test_resolvers_cocoapods.py
+@@ -5,7 +5,6 @@
+ import re
+ import string
+-import commentjson  # type: ignore
+ import pytest
+ from resolvelib import AbstractProvider, ResolutionImpossible, Resolver
+@@ -124,14 +123,18 @@ def _version_in_specset(version, specset):
+ def _safe_json_load(filename):
+-    # Some fixtures has comments so the stdlib implementation doesn't work.
+-    # We only use commentjson if we absolutely need to because it's SLOW.
+-    try:
+-        with open(filename) as f:
++    # Some fixtures have comments so they are not valid json.
++    # We could use commentjson/json5 to load them,
++    # but it's easier to strip the comments.
++    # We only do it when json.load() fails to avoid unnecessary loading
++    # all the json files to strings.
++    with open(filename) as f:
++        try:
+             data = json.load(f)
+-    except ValueError:
+-        with open(filename) as f:
+-            data = commentjson.load(f)
++        except ValueError:
++            f.seek(0)
++            strippedjson = re.sub(r"//.*$", "", f.read(), flags=re.MULTILINE)
++            data = json.loads(strippedjson)
+     return data