diff options
author | Christian Tismer <tismer@stackless.com> | 2021-11-02 15:52:02 +0100 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2021-11-11 14:39:15 +0100 |
commit | 6a2e912deadc4b1ddbc18ba390822bcdb1724041 (patch) | |
tree | 8542d3518677b23a4553c119d541508739c85337 | |
parent | 8c0405b818b0134d4b72e7631272ccb422db74fd (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)
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, |