From 401980b2a79ef15cc3b35fad51163339c8654751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Mon, 20 Nov 2023 15:45:04 +0100 Subject: [PATCH] Use pre-3.10 serialization code on PyPy3.10 The new serialization code for Python 3.10+ does not seem to work on PyPy3.10 7.3.13, as it causes: ValueError: no signature found for builtin type Switch back to the old code if PyPy is used, at least for the time being. With this change, the test suite passes on PyPy3.10. Fixes #845 --- ipyparallel/serialize/codeutil.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ipyparallel/serialize/codeutil.py b/ipyparallel/serialize/codeutil.py index 2d3acfa2a..80d107765 100644 --- a/ipyparallel/serialize/codeutil.py +++ b/ipyparallel/serialize/codeutil.py @@ -27,7 +27,8 @@ def code_ctor(*args): } # pass every supported arg to the code constructor # this should be more forward-compatible -if sys.version_info >= (3, 10): +# (broken on pypy: https://github.com/ipython/ipyparallel/issues/845) +if sys.version_info >= (3, 10) and not hasattr(sys, "pypy_version_info"): _code_attr_names = tuple( _code_attr_map.get(name, name) for name, param in inspect.signature(types.CodeType).parameters.items()