diff options
author | Christian Tismer <tismer@stackless.com> | 2021-04-18 18:58:18 +0200 |
---|---|---|
committer | Christian Tismer <tismer@stackless.com> | 2021-11-19 14:53:57 +0100 |
commit | db4d44aa0fb321179bc08d7fd12d2b27c0b682dc (patch) | |
tree | 349392dd343154d98300e279dc15de72def3edef | |
parent | 2385c01953c4fe0986fc2d490b718967e2b3b2c9 (diff) |
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 <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
-rw-r--r-- | sources/pyside6/PySide6/support/generate_pyi.py | 15 | ||||
-rw-r--r-- | sources/shiboken6/shibokenmodule/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 |