diff options
author | 2024-10-05 15:48:23 +0200 | |
---|---|---|
committer | 2024-10-07 03:50:07 +0100 | |
commit | 140457426da80fa75b485b32a03662b63375f523 (patch) | |
tree | 1d725e85413f1f1644afa53c929c6824d05e2c3a /dev-python/rdflib | |
parent | dev-libs/newt: Add python3_13 compat (diff) | |
download | gentoo-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.diff | 64 | ||||
-rw-r--r-- | dev-python/rdflib/rdflib-7.0.0-r1.ebuild | 65 |
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 +} |