aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--build_scripts/config.py3
-rw-r--r--build_scripts/main.py2
-rw-r--r--build_scripts/setup_runner.py7
-rw-r--r--build_scripts/wheel_override.py2
-rw-r--r--coin/module_config.yaml2
-rw-r--r--coin_build_instructions.py2
-rw-r--r--coin_test_instructions.py2
-rw-r--r--product_dependencies.yaml2
-rw-r--r--sources/pyside2/libpyside/feature_select.cpp2
-rw-r--r--sources/pyside2/pyside_version.py2
-rw-r--r--sources/pyside2/tests/QtCore/versioninfo_test.py2
-rw-r--r--sources/pyside2/tests/QtWidgets/signature_test.py5
-rw-r--r--sources/shiboken2/generator/shiboken2/cppgenerator.cpp3
-rw-r--r--sources/shiboken2/libshiboken/pep384impl.cpp8
-rw-r--r--sources/shiboken2/libshiboken/pep384impl.h7
-rw-r--r--sources/shiboken2/libshiboken/sbkstring.cpp2
-rw-r--r--sources/shiboken2/shiboken_version.py2
-rw-r--r--sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/tool.py8
-rw-r--r--sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py1
-rw-r--r--sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py15
-rw-r--r--sources/shiboken2/tests/samplebinding/time_test.py1
-rw-r--r--sources/shiboken2/tests/samplebinding/typesystem_sample.xml2
22 files changed, 52 insertions, 30 deletions
diff --git a/build_scripts/config.py b/build_scripts/config.py
index b1b32068d..00cbd3fc9 100644
--- a/build_scripts/config.py
+++ b/build_scripts/config.py
@@ -93,6 +93,7 @@ class Config(object):
'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
]
self.setup_script_dir = None
@@ -135,7 +136,7 @@ class Config(object):
setup_kwargs['zip_safe'] = False
setup_kwargs['cmdclass'] = cmd_class_dict
setup_kwargs['version'] = package_version
- setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.10"
+ setup_kwargs['python_requires'] = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.11"
if quiet:
# Tells distutils / setuptools to be quiet, and only print warnings or errors.
diff --git a/build_scripts/main.py b/build_scripts/main.py
index ea91ef751..7784c5cb8 100644
--- a/build_scripts/main.py
+++ b/build_scripts/main.py
@@ -1039,7 +1039,7 @@ class PysideBuild(_build, DistUtilsCommandMixin):
OPTION["CMAKE"],
"-L", # Lists variables
"-N", # Just inspects the cache (faster)
- "--build", # Specifies the build dir
+ "-B", # Specifies the build dir
self.shiboken_build_dir
]
out = run_process_output(cmake_cmd)
diff --git a/build_scripts/setup_runner.py b/build_scripts/setup_runner.py
index 57c8fbd1f..6eb0d8a26 100644
--- a/build_scripts/setup_runner.py
+++ b/build_scripts/setup_runner.py
@@ -88,8 +88,13 @@ class SetupRunner(object):
internal_build_type_arg = self.construct_internal_build_type_cmd_line_argument(build_type)
setup_cmd = [sys.executable] + self.sub_argv + [internal_build_type_arg]
+ command = self.sub_argv[0]
+ if command == 'setup.py' and len(self.sub_argv) > 1:
+ command = self.sub_argv[1]
+
# Add --reuse-build option if requested and not already present.
- if reuse_build and not self.cmd_line_argument_is_in_args("reuse-build", self.sub_argv):
+ if (reuse_build and command != 'clean'
+ and not self.cmd_line_argument_is_in_args("reuse-build", self.sub_argv)):
setup_cmd.append(self.construct_cmd_line_argument("reuse-build"))
self.invocations_list.append(setup_cmd)
diff --git a/build_scripts/wheel_override.py b/build_scripts/wheel_override.py
index 66141763b..3f3c12a2e 100644
--- a/build_scripts/wheel_override.py
+++ b/build_scripts/wheel_override.py
@@ -90,7 +90,7 @@ class PysideBuildWheel(_bdist_wheel, DistUtilsCommandMixin):
limited_api_enabled = (OPTION["LIMITED_API"] == 'yes'
and sys.version_info[0] >= 3)
if limited_api_enabled:
- self.py_limited_api = "cp35.cp36.cp37.cp38.cp39"
+ self.py_limited_api = "cp35.cp36.cp37.cp38.cp39.cp310"
self._package_version = get_package_version()
diff --git a/coin/module_config.yaml b/coin/module_config.yaml
index fd80acf9e..c77961ff2 100644
--- a/coin/module_config.yaml
+++ b/coin/module_config.yaml
@@ -18,7 +18,7 @@ accept_configuration:
not_contains_value: -no-gui
- condition: property # Following configs are not supported
property: target.osVersion
- not_in_values: [OPENSUSE_13_01, QEMU, WebAssembly, Ubuntu_18_04, SLES_12, SLES_15]
+ not_in_values: [OPENSUSE_13_01, openSUSE_15_1, MacOS_10_14, MacOS_11_00, MacOS_10_15, Windows_11_21H2,QEMU, WebAssembly, Ubuntu_18_04, SLES_12, SLES_15]
- condition: property # MibnGW and msvc2015 are not supported
property: target.compiler
not_in_values: [Mingw, MSVC2015]
diff --git a/coin_build_instructions.py b/coin_build_instructions.py
index 95d800b56..bb7bca011 100644
--- a/coin_build_instructions.py
+++ b/coin_build_instructions.py
@@ -112,7 +112,7 @@ def call_setup(python_ver, phase):
if phase in ["BUILD"]:
rmtree(_env, True)
# Pinning the virtualenv before creating one
- run_instruction(["pip", "install", "--user", "virtualenv==20.0.25"], "Failed to pin virtualenv")
+ run_instruction(["pip", "install", "--user", "virtualenv==20.7.2"], "Failed to pin virtualenv")
# installing to user base might not be in PATH by default.
env_path = os.path.join(site.USER_BASE, "bin")
v_env = os.path.join(env_path, "virtualenv")
diff --git a/coin_test_instructions.py b/coin_test_instructions.py
index 467f58d19..6f3306bcd 100644
--- a/coin_test_instructions.py
+++ b/coin_test_instructions.py
@@ -67,7 +67,7 @@ def call_testrunner(python_ver, buildnro):
_pExe, _env, env_pip, env_python = get_qtci_virtualEnv(python_ver, CI_HOST_OS, CI_HOST_ARCH, CI_TARGET_ARCH)
rmtree(_env, True)
# Pinning the virtualenv before creating one
- run_instruction(["pip", "install", "--user", "virtualenv==20.0.25"], "Failed to pin virtualenv")
+ run_instruction(["pip", "install", "--user", "virtualenv==20.7.2"], "Failed to pin virtualenv")
# installing to user base might not be in PATH by default.
env_path = os.path.join(site.USER_BASE, "bin")
v_env = os.path.join(env_path, "virtualenv")
diff --git a/product_dependencies.yaml b/product_dependencies.yaml
index 29c4fb5d6..178faa374 100644
--- a/product_dependencies.yaml
+++ b/product_dependencies.yaml
@@ -1,3 +1,3 @@
dependencies:
../../qt/qt5.git:
- ref: "5.15.2"
+ ref: "e9eac7f4f76906ebfe33ed55ec3d8c5904e52c3d"
diff --git a/sources/pyside2/libpyside/feature_select.cpp b/sources/pyside2/libpyside/feature_select.cpp
index 6a21d168d..3da7dde38 100644
--- a/sources/pyside2/libpyside/feature_select.cpp
+++ b/sources/pyside2/libpyside/feature_select.cpp
@@ -405,6 +405,8 @@ static inline PyObject *SelectFeatureSet(PyTypeObject *type)
if (!SelectFeatureSetSubtype(sub_type, select_id))
break;
}
+ // PYSIDE-1436: Clear all caches for the type and subtypes.
+ PyType_Modified(type);
}
return type->tp_dict;
}
diff --git a/sources/pyside2/pyside_version.py b/sources/pyside2/pyside_version.py
index 009db0bfa..2ccf3be69 100644
--- a/sources/pyside2/pyside_version.py
+++ b/sources/pyside2/pyside_version.py
@@ -39,7 +39,7 @@
major_version = "5"
minor_version = "15"
-patch_version = "2"
+patch_version = "2.1"
# For example: "a", "b", "rc"
# (which means "alpha", "beta", "release candidate").
diff --git a/sources/pyside2/tests/QtCore/versioninfo_test.py b/sources/pyside2/tests/QtCore/versioninfo_test.py
index c682dbbdc..dd6c83bb1 100644
--- a/sources/pyside2/tests/QtCore/versioninfo_test.py
+++ b/sources/pyside2/tests/QtCore/versioninfo_test.py
@@ -44,7 +44,7 @@ class TestVersionInfo(unittest.TestCase):
self.assertEqual(len(v), 5)
self.assertEqual(type(v[0]), int)
self.assertEqual(type(v[1]), int)
- self.assertEqual(type(v[2]), int)
+ #self.assertEqual(type(v[2]), int) 5.15.2.1
self.assertEqual(type(v[3]), str)
self.assertEqual(type(v[4]), str)
diff --git a/sources/pyside2/tests/QtWidgets/signature_test.py b/sources/pyside2/tests/QtWidgets/signature_test.py
index 57fcf3874..cacb576d7 100644
--- a/sources/pyside2/tests/QtWidgets/signature_test.py
+++ b/sources/pyside2/tests/QtWidgets/signature_test.py
@@ -65,8 +65,9 @@ class PySideSignatureTest(unittest.TestCase):
for thing in obj.__signature__:
self.assertEqual(type(thing), inspect.Signature)
sm = PySide2.QtWidgets.QApplication.__dict__["palette"]
- self.assertFalse(callable(sm))
- self.assertEqual(sm.__func__, obj)
+ # PYSIDE-1436: staticmethod is a callable since Python 3.10
+ # Instead of checking callable(sm), we check the type:
+ self.assertEqual(type(sm), staticmethod)
self.assertTrue(hasattr(sm, "__signature__") and
sm.__signature__ is not None)
diff --git a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
index 05d9d97d6..38b596a5f 100644
--- a/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
+++ b/sources/shiboken2/generator/shiboken2/cppgenerator.cpp
@@ -5193,6 +5193,9 @@ void CppGenerator::writeFlagsBinaryOperator(QTextStream &s, const AbstractMetaEn
<< ">(int(PyLong_AsLong(self)));\n";
s << INDENT << "cppArg = static_cast<" << flagsEntry->originalName() << ">(int(PyLong_AsLong("
<< PYTHON_ARG << ")));\n";
+ // PYSIDE-1436: Need to error check self as well because operators are used
+ // sometimes with swapped args.
+ s << INDENT << "if (PyErr_Occurred())\n" << INDENT << "return nullptr;\n";
s << "#else\n";
s << INDENT << CPP_SELF_VAR << " = static_cast<::" << flagsEntry->originalName()
<< ">(int(PyInt_AsLong(self)));\n";
diff --git a/sources/shiboken2/libshiboken/pep384impl.cpp b/sources/shiboken2/libshiboken/pep384impl.cpp
index cb8042561..66df0fd94 100644
--- a/sources/shiboken2/libshiboken/pep384impl.cpp
+++ b/sources/shiboken2/libshiboken/pep384impl.cpp
@@ -754,11 +754,13 @@ _Pep_PrivateMangle(PyObject *self, PyObject *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);
diff --git a/sources/shiboken2/libshiboken/pep384impl.h b/sources/shiboken2/libshiboken/pep384impl.h
index 7a6f57fcd..eb65596cc 100644
--- a/sources/shiboken2/libshiboken/pep384impl.h
+++ b/sources/shiboken2/libshiboken/pep384impl.h
@@ -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(const char *, int, PyObject *, PyObject *
// 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 --git a/sources/shiboken2/libshiboken/sbkstring.cpp b/sources/shiboken2/libshiboken/sbkstring.cpp
index 918aae756..077fb531b 100644
--- a/sources/shiboken2/libshiboken/sbkstring.cpp
+++ b/sources/shiboken2/libshiboken/sbkstring.cpp
@@ -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 --git a/sources/shiboken2/shiboken_version.py b/sources/shiboken2/shiboken_version.py
index 009db0bfa..2ccf3be69 100644
--- a/sources/shiboken2/shiboken_version.py
+++ b/sources/shiboken2/shiboken_version.py
@@ -39,7 +39,7 @@
major_version = "5"
minor_version = "15"
-patch_version = "2"
+patch_version = "2.1"
# For example: "a", "b", "rc"
# (which means "alpha", "beta", "release candidate").
diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/tool.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/tool.py
index 24e75e42c..c8dbd51cc 100644
--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/tool.py
+++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/lib/tool.py
@@ -47,6 +47,7 @@ On the function with_metaclass see the answer from Martijn Pieters on
https://stackoverflow.com/questions/18513821/python-metaclass-understanding-the-with-metaclass
"""
+from inspect import currentframe
from textwrap import dedent
@@ -151,4 +152,11 @@ def with_metaclass(meta, *bases):
return meta.__prepare__(name, bases)
return type.__new__(metaclass, 'temporary_class', (), {})
+
+# A handy tool that shows the current line number and indents.
+def lno(level):
+ lineno = currentframe().f_back.f_lineno
+ spaces = level * " "
+ return "{}{}".format(lineno, spaces)
+
# eof
diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
index 6fadd19d5..f701d83c8 100644
--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
+++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
@@ -300,6 +300,7 @@ type_map.update({
"zero(object)": None,
"zero(str)": "",
"zero(typing.Any)": None,
+ "zero(Any)": None,
})
type_map.update({
diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py
index 20c791cc1..7200dc270 100644
--- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py
+++ b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/parser.py
@@ -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
@@ -239,16 +240,6 @@ def handle_matrix(arg):
return eval(result, namespace)
-debugging_aid = """
-from inspect import currentframe
-
-def lno(level):
- lineno = currentframe().f_back.f_lineno
- spaces = level * " "
- return "{lineno}{spaces}".format(**locals())
-"""
-
-
def _resolve_type(thing, line, level, var_handler):
# Capture total replacements, first. Happens in
# "PySide2.QtCore.QCborStreamReader.StringResult[PySide2.QtCore.QByteArray]"
diff --git a/sources/shiboken2/tests/samplebinding/time_test.py b/sources/shiboken2/tests/samplebinding/time_test.py
index f8b35e7b7..3b8f232c7 100644
--- a/sources/shiboken2/tests/samplebinding/time_test.py
+++ b/sources/shiboken2/tests/samplebinding/time_test.py
@@ -130,6 +130,7 @@ class TimeTest(unittest.TestCase):
result = time.somethingCompletelyDifferent(1, 2, ImplicitConv.CtorOne)
self.assertEqual(result, Time.ThreeArgs)
+ # PYSIDE-1436: These tests crash at shutdown due to `assert(Not)?Equal`.
def testCompareWithPythonTime(self):
time = Time(12, 32, 5)
py = datetime.time(12, 32, 5)
diff --git a/sources/shiboken2/tests/samplebinding/typesystem_sample.xml b/sources/shiboken2/tests/samplebinding/typesystem_sample.xml
index 595afb9ae..70fabcf73 100644
--- a/sources/shiboken2/tests/samplebinding/typesystem_sample.xml
+++ b/sources/shiboken2/tests/samplebinding/typesystem_sample.xml
@@ -1953,6 +1953,7 @@
%PYARG_0 = Py_False;
else
%PYARG_0 = Py_True;
+ Py_INCREF(%PYARG_0);
}
</inject-code>
</add-function>
@@ -1970,6 +1971,7 @@
%PYARG_0 = Py_True;
else
%PYARG_0 = Py_False;
+ Py_INCREF(%PYARG_0);
}
</inject-code>
</add-function>