diff -upr libshiboken/pep384impl.cpp libshiboken/pep384impl.cpp --- a/libshiboken/pep384impl.cpp 2020-11-11 14:51:30.000000000 +0200 +++ b/libshiboken/pep384impl.cpp 2021-12-01 15:17:21.444888977 +0200 @@ -751,14 +751,14 @@ _Pep_PrivateMangle(PyObject *self, PyObj #endif // IS_PY2 Shiboken::AutoDecRef privateobj(PyObject_GetAttr( reinterpret_cast(Py_TYPE(self)), Shiboken::PyMagicName::name())); -#ifndef Py_LIMITED_API - return _Py_Mangle(privateobj, name); -#else - // For some reason, _Py_Mangle is not in the Limited API. Why? - size_t plen = PyUnicode_GET_LENGTH(privateobj); + + // PYSIDE-1436: _Py_Mangle is no longer exposed; implement it always. + // The rest of this function is our own implementation of _Py_Mangle. + // Please compare the original function in compile.c . + size_t plen = PyUnicode_GET_LENGTH(privateobj.object()); /* Strip leading underscores from class name */ size_t ipriv = 0; - while (PyUnicode_READ_CHAR(privateobj, ipriv) == '_') + while (PyUnicode_READ_CHAR(privateobj.object(), ipriv) == '_') ipriv++; if (ipriv == plen) { Py_INCREF(name); @@ -787,7 +787,6 @@ _Pep_PrivateMangle(PyObject *self, PyObj if (amount > big_stack) free(resbuf); return result; -#endif // else Py_LIMITED_API } /***************************************************************************** diff -upr libshiboken/pep384impl.h libshiboken/pep384impl.h --- a/libshiboken/pep384impl.h 2020-11-11 14:51:30.000000000 +0200 +++ b/libshiboken/pep384impl.h 2021-12-01 15:13:58.899521842 +0200 @@ -40,6 +40,11 @@ #ifndef PEP384IMPL_H #define PEP384IMPL_H +// PYSIDE-1436: Adapt to Python 3.10 +#if PY_VERSION_HEX < 0x030900A4 +# define Py_SET_REFCNT(obj, refcnt) ((Py_REFCNT(obj) = (refcnt)), (void)0) +#endif + extern "C" { @@ -327,7 +332,7 @@ LIBSHIBOKEN_API PyObject *PyRun_String(c // But this is no problem as we check it's validity for every version. #define PYTHON_BUFFER_VERSION_COMPATIBLE (PY_VERSION_HEX >= 0x03030000 && \ - PY_VERSION_HEX < 0x0309FFFF) + PY_VERSION_HEX < 0x030AFFFF) #if !PYTHON_BUFFER_VERSION_COMPATIBLE # error Please check the buffer compatibility for this python version! #endif diff -upr libshiboken/sbkstring.cpp libshiboken/sbkstring.cpp --- a/libshiboken/sbkstring.cpp 2020-11-11 14:51:30.000000000 +0200 +++ b/libshiboken/sbkstring.cpp 2021-12-01 15:14:47.703201473 +0200 @@ -247,7 +247,7 @@ static void finalizeStaticStrings() { auto &set = staticStrings(); for (PyObject *ob : set) { - Py_REFCNT(ob) = 1; + Py_SET_REFCNT(ob, 1); Py_DECREF(ob); } set.clear(); diff -upr shibokenmodule/files.dir/shibokensupport/signature/mapping.py shibokenmodule/files.dir/shibokensupport/signature/mapping.py --- a/shibokenmodule/files.dir/shibokensupport/signature/mapping.py 2020-11-11 14:51:30.000000000 +0200 +++ b/shibokenmodule/files.dir/shibokensupport/signature/mapping.py 2021-12-01 15:15:14.560100869 +0200 @@ -300,6 +300,7 @@ type_map.update({ "zero(object)": None, "zero(str)": "", "zero(typing.Any)": None, + "zero(Any)": None, }) type_map.update({ diff -upr shibokenmodule/files.dir/shibokensupport/signature/parser.py shibokenmodule/files.dir/shibokensupport/signature/parser.py --- a/shibokenmodule/files.dir/shibokensupport/signature/parser.py 2020-11-11 14:51:30.000000000 +0200 +++ b/shibokenmodule/files.dir/shibokensupport/signature/parser.py 2021-12-01 15:25:43.267843740 +0200 @@ -43,10 +43,11 @@ import sys import re import warnings import types +import typing import keyword import functools from shibokensupport.signature.mapping import (type_map, update_mapping, - namespace, typing, _NotCalled, ResultVariable, ArrayLikeVariable) + namespace, _NotCalled, ResultVariable, ArrayLikeVariable) from shibokensupport.signature.lib.tool import (SimpleNamespace, build_brace_pattern) @@ -222,7 +223,7 @@ def _resolve_arraytype(thing, line): def to_string(thing): if isinstance(thing, str): return thing - if hasattr(thing, "__name__"): + if hasattr(thing, "__name__") and thing.__module__ != "typing": dot = "." in str(thing) name = get_name(thing) return thing.__module__ + "." + name if dot else name