aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2021-11-02 15:52:02 +0100
committerChristian Tismer <tismer@stackless.com>2021-11-11 14:39:15 +0100
commit6a2e912deadc4b1ddbc18ba390822bcdb1724041 (patch)
tree8542d3518677b23a4553c119d541508739c85337
parent8c0405b818b0134d4b72e7631272ccb422db74fd (diff)
mypy-support: Improve handling of slots, enum and PathLike
As a preparation of the move to Python enums, the types of enums are now reported as Python enum. This avoids certain errors in the .pyi files. The correct implementation will follow. PathLike is now correctly imported via os if necessary. slot() has corrected signature and reports a call method. [ChangeLog][shiboken6] The .pyi file generation was improved to have correct slot(), PathLike and better enum handling. Change-Id: I547de6a1203302f73826f27ee633e9de810f687b Fixes: PYSIDE-1520 Task-number: PYSIDE-1675 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> (cherry picked from commit e1909dfdd4dcc0742600d04afcfb3017ae471a31)
-rw-r--r--sources/pyside6/libpyside/pysideslot.cpp3
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py2
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py6
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/mapping.py1
4 files changed, 8 insertions, 4 deletions
diff --git a/sources/pyside6/libpyside/pysideslot.cpp b/sources/pyside6/libpyside/pysideslot.cpp
index bad94db6b..c20945066 100644
--- a/sources/pyside6/libpyside/pysideslot.cpp
+++ b/sources/pyside6/libpyside/pysideslot.cpp
@@ -181,7 +181,8 @@ PyObject *slotCall(PyObject *self, PyObject *args, PyObject * /* kw */)
namespace PySide::Slot {
static const char *Slot_SignatureStrings[] = {
- "PySide6.QtCore.Slot(self,*types:type,name:str=nullptr,result:str=nullptr)->typing.Callable[...,typing.Optional[str]]",
+ "PySide6.QtCore.Slot(self,*types:type,name:str=nullptr,result:str=nullptr)",
+ "PySide6.QtCore.Slot.__call__(self,function:typing.Callable)->typing.Any",
nullptr}; // Sentinel
void init(PyObject *module)
diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
index 149881e01..73431220b 100644
--- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
+++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/enum_sig.py
@@ -134,7 +134,7 @@ class ExactEnumerator(object):
bases_list = []
for base in klass.__bases__:
name = base.__qualname__
- if name not in ("object", "property", "type"):
+ if name not in ("object", "property", "type", "Enum"):
name = base.__module__ + "." + name
bases_list.append(name)
bases_str = ', '.join(bases_list)
diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
index eb2e49770..8fd388cd7 100644
--- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
+++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py
@@ -204,9 +204,11 @@ def find_imports(text):
FROM_IMPORTS = [
- ("typing", "Any Callable Dict List Optional overload Tuple Union".split()),
- ("PySide6.QtCore", ["PyClassProperty"]),
(None, ["builtins"]),
+ (None, ["os"]),
+ ("enum", ["Enum"]),
+ ("typing", typing.__all__),
+ ("PySide6.QtCore", ["PyClassProperty"]),
]
def filter_from_imports(from_struct, text):
diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/mapping.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
index 882132650..adcbad3d9 100644
--- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
+++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/mapping.py
@@ -227,6 +227,7 @@ type_map.update({
"char": int,
"char*": str,
"char*const": str,
+ "const char*": str,
"double": float,
"float": float,
"int": int,