You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
python-resolvelib/SOURCES/remove-commentjson-dep.patch

64 lines
2.0 KiB

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