aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Tismer <tismer@stackless.com>2021-04-18 18:58:18 +0200
committerChristian Tismer <tismer@stackless.com>2021-11-19 14:53:57 +0100
commitdb4d44aa0fb321179bc08d7fd12d2b27c0b682dc (patch)
tree349392dd343154d98300e279dc15de72def3edef
parent2385c01953c4fe0986fc2d490b718967e2b3b2c9 (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.py15
-rw-r--r--sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py10
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