From a69e96b832af43dc57bdbb84032e1944a3593eab Mon Sep 17 00:00:00 2001 From: Marcin Krol Date: Sun, 28 Apr 2024 20:27:10 +0200 Subject: [PATCH 1/1] - new --- python3-resolvelib.spec | 48 +++++++++++++++++++++++++++ remove-commentjson-dep.patch | 63 ++++++++++++++++++++++++++++++++++++ 2 files changed, 111 insertions(+) create mode 100644 python3-resolvelib.spec create mode 100644 remove-commentjson-dep.patch diff --git a/python3-resolvelib.spec b/python3-resolvelib.spec new file mode 100644 index 0000000..2dcaec2 --- /dev/null +++ b/python3-resolvelib.spec @@ -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 index 0000000..2905a65 --- /dev/null +++ b/remove-commentjson-dep.patch @@ -0,0 +1,63 @@ +From 3e50054d836b655b0868520bae8b85a3c18967ef Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= +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 +--- + 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 + + -- 2.46.0