python-referencing: Add new package
authorJeffery To <jeffery.to@gmail.com>
Fri, 13 Oct 2023 18:27:02 +0000 (02:27 +0800)
committerTianling Shen <cnsztl@gmail.com>
Thu, 30 Nov 2023 04:57:27 +0000 (12:57 +0800)
From the README:

An implementation-agnostic implementation of JSON reference resolution.

Signed-off-by: Jeffery To <jeffery.to@gmail.com>
lang/python/python-referencing/Makefile [new file with mode: 0644]
lang/python/python-referencing/test.sh [new file with mode: 0644]

diff --git a/lang/python/python-referencing/Makefile b/lang/python/python-referencing/Makefile
new file mode 100644 (file)
index 0000000..05f184a
--- /dev/null
@@ -0,0 +1,47 @@
+#
+# Copyright (C) 2023 Jeffery To
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=python-referencing
+PKG_VERSION:=0.30.2
+PKG_RELEASE:=1
+
+PYPI_NAME:=referencing
+PKG_HASH:=794ad8003c65938edcdbc027f1933215e0d0ccc0291e3ce20a4d87432b59efc0
+
+PKG_LICENSE:=MIT
+PKG_LICENSE_FILES:=COPYING
+PKG_MAINTAINER:=Jeffery To <jeffery.to@gmail.com>
+
+PKG_BUILD_DEPENDS:=python-hatchling/host python-hatch-vcs/host
+
+include ../pypi.mk
+include $(INCLUDE_DIR)/package.mk
+include ../python3-package.mk
+
+define Package/python3-referencing
+  SECTION:=lang
+  CATEGORY:=Languages
+  SUBMENU:=Python
+  TITLE:=JSON Referencing + Python
+  URL:=https://github.com/python-jsonschema/referencing
+  DEPENDS:= \
+    +python3-light \
+    +python3-email \
+    +python3-urllib \
+    +python3-attrs \
+    +python3-rpds-py
+endef
+
+define Package/python3-referencing/description
+An implementation-agnostic implementation of JSON reference resolution.
+endef
+
+$(eval $(call Py3Package,python3-referencing))
+$(eval $(call BuildPackage,python3-referencing))
+$(eval $(call BuildPackage,python3-referencing-src))
diff --git a/lang/python/python-referencing/test.sh b/lang/python/python-referencing/test.sh
new file mode 100644 (file)
index 0000000..0517ba1
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/sh
+
+[ "$1" = python3-referencing ] || exit 0
+
+python3 - << 'EOF'
+
+from referencing import Registry, Resource
+import referencing.jsonschema
+
+schema = Resource.from_contents(  # Parse some contents into a 2020-12 JSON Schema
+    {
+        "$schema": "https://json-schema.org/draft/2020-12/schema",
+        "$id": "urn:example:a-202012-schema",
+        "$defs": {
+            "nonNegativeInteger": {
+                "$anchor": "nonNegativeInteger",
+                "type": "integer",
+                "minimum": 0,
+            },
+        },
+    }
+)
+registry = schema @ Registry()  # Add the resource to a new registry
+
+# From here forward, this would usually be done within a library wrapping this one,
+# like a JSON Schema implementation
+resolver = registry.resolver()
+resolved = resolver.lookup("urn:example:a-202012-schema#nonNegativeInteger")
+assert resolved.contents == {
+    "$anchor": "nonNegativeInteger",
+    "type": "integer",
+    "minimum": 0,
+}
+
+EOF