summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSasha Finkelstein <fnkl.kernel@gmail.com>2024-10-05 15:48:23 +0200
committerSam James <sam@gentoo.org>2024-10-07 03:50:07 +0100
commit140457426da80fa75b485b32a03662b63375f523 (patch)
tree1d725e85413f1f1644afa53c929c6824d05e2c3a /dev-python/rdflib
parentdev-libs/newt: Add python3_13 compat (diff)
downloadgentoo-140457426da80fa75b485b32a03662b63375f523.tar.gz
gentoo-140457426da80fa75b485b32a03662b63375f523.tar.bz2
gentoo-140457426da80fa75b485b32a03662b63375f523.zip
dev-python/rdflib: Add python3_13 compat
Signed-off-by: Sasha Finkelstein <fnkl.kernel@gmail.com> Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'dev-python/rdflib')
-rw-r--r--dev-python/rdflib/files/rdflib-7.0.0-py3_13-fix-pickler.diff64
-rw-r--r--dev-python/rdflib/rdflib-7.0.0-r1.ebuild65
2 files changed, 129 insertions, 0 deletions
diff --git a/dev-python/rdflib/files/rdflib-7.0.0-py3_13-fix-pickler.diff b/dev-python/rdflib/files/rdflib-7.0.0-py3_13-fix-pickler.diff
new file mode 100644
index 000000000000..d2fbf4928972
--- /dev/null
+++ b/dev-python/rdflib/files/rdflib-7.0.0-py3_13-fix-pickler.diff
@@ -0,0 +1,64 @@
+--- a/rdflib/store.py
++++ b/rdflib/store.py
+@@ -113,27 +113,39 @@ class TripleRemovedEvent(Event):
+ """
+
+
++class _Pickler(Pickler):
++ def __init__(self, file, node):
++ super(_Pickler, self).__init__(file)
++ self._node = node
++
++ def persistent_id(self, key: Any) -> Optional[str]:
++ try:
++ return self._node._ids.get(key)
++ except TypeError:
++ return None
++
++
++class _Unpickler(Unpickler):
++ def __init__(self, file, node):
++ super(_Unpickler, self).__init__(file)
++ self._node = node
++
++ def persistent_load(self, pid):
++ return self._node._get_object(pid)
++
++
+ class NodePickler:
+ def __init__(self) -> None:
+ self._objects: Dict[str, Any] = {}
+ self._ids: Dict[Any, str] = {}
+ self._get_object = self._objects.__getitem__
+
+- def _get_ids(self, key: Any) -> Optional[str]:
+- try:
+- return self._ids.get(key)
+- except TypeError:
+- return None
+-
+ def register(self, object: Any, id: str) -> None:
+ self._objects[id] = object
+ self._ids[object] = id
+
+ def loads(self, s: bytes) -> "Node":
+- up = Unpickler(BytesIO(s))
+- # NOTE on type error: https://github.com/python/mypy/issues/2427
+- # type error: Cannot assign to a method
+- up.persistent_load = self._get_object # type: ignore[assignment]
++ up = _Unpickler(BytesIO(s), self)
+ try:
+ return up.load()
+ except KeyError as e:
+@@ -143,10 +155,7 @@ class NodePickler:
+ self, obj: "Node", protocol: Optional[Any] = None, bin: Optional[Any] = None
+ ):
+ src = BytesIO()
+- p = Pickler(src)
+- # NOTE on type error: https://github.com/python/mypy/issues/2427
+- # type error: Cannot assign to a method
+- p.persistent_id = self._get_ids # type: ignore[assignment]
++ p = _Pickler(src, self)
+ p.dump(obj)
+ return src.getvalue()
+
diff --git a/dev-python/rdflib/rdflib-7.0.0-r1.ebuild b/dev-python/rdflib/rdflib-7.0.0-r1.ebuild
new file mode 100644
index 000000000000..445cb67889d4
--- /dev/null
+++ b/dev-python/rdflib/rdflib-7.0.0-r1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{10..13} )
+PYTHON_REQ_USE="sqlite?,threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="RDF library containing a triple store and parser/serializer"
+HOMEPAGE="
+ https://github.com/RDFLib/rdflib/
+ https://pypi.org/project/rdflib/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv sparc x86"
+IUSE="examples sqlite"
+
+RDEPEND="
+ <dev-python/isodate-1[${PYTHON_USEDEP}]
+ >=dev-python/isodate-0.6.0[${PYTHON_USEDEP}]
+ dev-python/html5lib[${PYTHON_USEDEP}]
+ <dev-python/pyparsing-4[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-2.1.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ )
+"
+
+PATCHES=(
+ # https://src.fedoraproject.org/fork/salimma/rpms/python-rdflib/blob/d2fbf492897262350bd569f1566b97a54e092cd9/f/rdflib-py3_13-fix-pickler.diff
+ "${FILESDIR}/${PN}-7.0.0-py3_13-fix-pickler.diff"
+)
+
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # doctests require internet
+ sed -i -e '/doctest-modules/d' pyproject.toml || die
+
+ # we disable pytest-cov
+ sed -i -e 's@, no_cover: None@@' test/test_misc/test_plugins.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -m "not webtest"
+}
+
+python_install_all() {
+ distutils-r1_python_install_all
+
+ if use examples; then
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+ fi
+}