From db4d44aa0fb321179bc08d7fd12d2b27c0b682dc Mon Sep 17 00:00:00 2001 From: Christian Tismer Date: Sun, 18 Apr 2021 18:58:18 +0200 Subject: PyPySide: disable feature switching to enable the pyi generation The __feature__ switching does not work yet in PyPy. More importantly, the current implementation uses object identity on small numbers which PyPy does not have. [ChangeLog][shiboken6] Feature switching is disabled in PyPy, allowing .pyi generation to be enabled, now. Task-number: PYSIDE-535 Change-Id: I6fc7ef538007273b53d560bbf40bf46108b2bd82 Reviewed-by: Friedemann Kleint Reviewed-by: Cristian Maureira-Fredes --- sources/pyside6/PySide6/support/generate_pyi.py | 15 +++++++++------ .../files.dir/shibokensupport/signature/loader.py | 10 ++++++---- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/sources/pyside6/PySide6/support/generate_pyi.py b/sources/pyside6/PySide6/support/generate_pyi.py index 211df8590..b5691f190 100644 --- a/sources/pyside6/PySide6/support/generate_pyi.py +++ b/sources/pyside6/PySide6/support/generate_pyi.py @@ -52,6 +52,7 @@ import sys import typing from pathlib import Path +from types import SimpleNamespace # Can we use forward references? USE_PEP563 = sys.version_info[:2] >= (3, 7) @@ -78,8 +79,6 @@ def generate_all_pyi(outpath, options): # Perhaps this can be automated? PySide6.support.signature.mapping.USE_PEP563 = USE_PEP563 - import __feature__ as feature - outpath = Path(outpath) if outpath and os.fspath(outpath) else Path(PySide6.__file__).parent name_list = PySide6.__all__ if options.modules == ["all"] else options.modules errors = ", ".join(set(name_list) - set(PySide6.__all__)) @@ -93,13 +92,17 @@ def generate_all_pyi(outpath, options): name_list = [quirk1, quirk2] for mod_name in name_list: import_name = "PySide6." + mod_name - feature_id = feature.get_select_id(options.feature) - with feature.force_selection(feature_id, import_name): + if hasattr(sys, "pypy_version_info"): + # PYSIDE-535: We cannot use __feature__ yet in PyPy generate_pyi(import_name, outpath, options) + else: + import __feature__ as feature + feature_id = feature.get_select_id(options.feature) + with feature.force_selection(feature_id, import_name): + generate_pyi(import_name, outpath, options) -# PYSIDE-535: Disable pyi generation until things work. -if __name__ == "__main__" and not hasattr(sys, "pypy_version_info"): +if __name__ == "__main__": parser = argparse.ArgumentParser( description="This script generates the .pyi file for all PySide modules.") parser.add_argument("modules", nargs="+", diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py index 82d6f75b6..a4a82d893 100644 --- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py +++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py @@ -158,9 +158,11 @@ if "PySide6" in sys.modules: raise # PYSIDE-1019: Modify `__import__` to be `__feature__` aware. # __feature__ is already in sys.modules, so this is actually no import - import PySide6.support.__feature__ - sys.modules["__feature__"] = PySide6.support.__feature__ - builtins.__orig_import__ = builtins.__import__ - builtins.__import__ = builtins.__feature_import__ + if not hasattr(sys, "pypy_version_info"): + # PYSIDE-535: Cannot enable __feature__ for various reasons. + import PySide6.support.__feature__ + sys.modules["__feature__"] = PySide6.support.__feature__ + builtins.__orig_import__ = builtins.__import__ + builtins.__import__ = builtins.__feature_import__ # end of file -- cgit v1.2.3