python-jsonpath-ng: drop ply, six and decorator dependencies
authorAlexandru Ardelean <redacted>
Sun, 14 Jun 2026 15:31:10 +0000 (15:31 +0000)
committerAlexandru Ardelean <redacted>
Wed, 17 Jun 2026 03:53:07 +0000 (06:53 +0300)
jsonpath-ng 1.8.0 vendors ply as jsonpath_ng._ply and no longer imports
six or decorator, so none are required at runtime.

It builds through the setuptools.build_meta legacy backend but never
declared setuptools as a build dependency; it was only present in the host
build env transitively via those packages' builds. Add python-setuptools/host
explicitly so the build no longer relies on that side effect.

The jsonpath_ng CLI takes a required expression argument and has no version
flag, so the generic version check cannot detect the package version from it.
Add a test-version.sh override and assert __version__ in test.sh instead,
mirroring python-jmespath.

Signed-off-by: Alexandru Ardelean <redacted>
lang/python/python-jsonpath-ng/Makefile
lang/python/python-jsonpath-ng/test-version.sh [new file with mode: 0644]
lang/python/python-jsonpath-ng/test.sh

index 062204b407accb8ff3c9e19a654674c0241b899a..db018b43fef4f01e4a2d705159d3326acb8e9c8c 100644 (file)
@@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=python-jsonpath-ng
 PKG_VERSION:=1.8.0
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 PKG_MAINTAINER:=Josef Schlehofer <pepe.schlehofer@gmail.com> 
 
 PYPI_NAME:=jsonpath-ng
@@ -16,6 +16,8 @@ PKG_HASH:=54252968134b5e549ea5b872f1df1168bd7defe1a52fed5a358c194e1943ddc3
 PKG_LICENSE:=Apache-2.0
 PKG_LICENSE_FILES:=LICENSE
 
+PKG_BUILD_DEPENDS:=python-setuptools/host
+
 include ../pypi.mk
 include $(INCLUDE_DIR)/package.mk
 include ../python3-package.mk
@@ -28,10 +30,7 @@ define Package/python3-jsonpath-ng
   TITLE:=Standard compliant implementation of JSONPath
   DEPENDS:= \
     +python3-light \
-    +python3-logging \
-    +python3-ply \
-    +python3-six \
-    +python3-decorator
+    +python3-logging
 endef
 
 define Package/python3-jsonpath-ng/description
diff --git a/lang/python/python-jsonpath-ng/test-version.sh b/lang/python/python-jsonpath-ng/test-version.sh
new file mode 100644 (file)
index 0000000..979efa9
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# shellcheck shell=busybox
+
+# The jsonpath_ng command-line tool takes a required expression argument and
+# has no version flag, so the generic version check cannot detect the version
+# from it. The version is covered by the import check in test.sh instead.
+case "$PKG_NAME" in
+python3-jsonpath-ng | python3-jsonpath-ng-src)
+       exit 0
+       ;;
+*)
+       echo "Untested package: $PKG_NAME" >&2
+       exit 1
+       ;;
+esac
index eac76245a969b3327eee72b7ddbf26d52fec23f3..13a505d3e1344fb44e9218a5a24ec54325a457be 100755 (executable)
@@ -2,10 +2,18 @@
 
 [ "$1" = python3-jsonpath-ng ] || exit 0
 
-python3 - << 'EOF'
+python3 - "$2" << 'EOF'
+import sys
+import jsonpath_ng
 from jsonpath_ng import parse
 from jsonpath_ng.ext import parse as ext_parse
 
+# The jsonpath_ng CLI has no version flag, so the generic version check is
+# overridden (test-version.sh); confirm the package version here instead.
+if jsonpath_ng.__version__ != sys.argv[1]:
+    print("Wrong version: " + jsonpath_ng.__version__)
+    sys.exit(1)
+
 data = {
     "store": {
         "books": [
@@ -25,8 +33,16 @@ assert matches == ["A", "B", "C"], f"Unexpected: {matches}"
 expr2 = parse("store.books[1].price")
 assert expr2.find(data)[0].value == 20
 
-# Filter expression (ext parser)
+# Filter expression (ext parser, exercises the vendored ply lexer/parser)
 expr3 = ext_parse("store.books[?price > 12].title")
 titles = [m.value for m in expr3.find(data)]
 assert set(titles) == {"B", "C"}, f"Unexpected: {titles}"
 EOF
+[ $? -eq 0 ] || exit 1
+
+# Verify the jsonpath_ng command-line tool (reads JSON from stdin)
+result=$(echo '{"a": {"b": 42}}' | jsonpath_ng 'a.b')
+[ "$result" = "42" ] || {
+       echo "jsonpath_ng returned '$result', expected 42"
+       exit 1
+}
git clone https://git.99rst.org/PROJECT