diff options
author | Christian Tismer <tismer@stackless.com> | 2021-07-18 11:21:46 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-07-21 10:31:58 +0000 |
commit | 5af6a8eb5e25a0c0de1761adff0752788354dfb5 (patch) | |
tree | 0e7d83415ff8c2d531f4c145d50f91ee5ea751d3 | |
parent | 62ac5eb03f33c187cd24cf3d06fac19d70240f62 (diff) |
signature: update and make embedding aware
The signature scripts needed an update to make them
work even when no source files are available.
* Access to the license text should avoid source files
* Some loader simplifications are possible since Python 2 is gone
* The import list for PySide is incomplete
* Enforce embedding in COIN mode for better testing
This is a preparational step before the zip file access
becomes totally virtual.
Change-Id: I85e750bb718855f140edac6de34955adbd7843bc
Task-number: PYSIDE-1621
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
(cherry picked from commit a9de26109fca55154511f5d074c7d9e135b397f6)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
3 files changed, 11 insertions, 17 deletions
diff --git a/sources/pyside6/PySide6/support/generate_pyi.py b/sources/pyside6/PySide6/support/generate_pyi.py index ecc04019b..e618ae0a7 100644 --- a/sources/pyside6/PySide6/support/generate_pyi.py +++ b/sources/pyside6/PySide6/support/generate_pyi.py @@ -99,6 +99,8 @@ def generate_all_pyi(outpath, options): if __name__ == "__main__": + # PYSIDE-1621: Enforce embedding to ensure that it always works. + sys.pyside_uses_embedding = True 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/lib/pyi_generator.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/lib/pyi_generator.py index ecc815bb2..eb2e49770 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 @@ -1,4 +1,4 @@ -# This Python file uses the following encoding: utf-8 +LICENSE_TEXT = """ ############################################################################# ## ## Copyright (C) 2021 The Qt Company Ltd. @@ -37,6 +37,7 @@ ## $QT_END_LICENSE$ ## ############################################################################# +""" """ pyi_generator.py @@ -61,8 +62,6 @@ from shiboken6 import Shiboken from shibokensupport.signature.lib.enum_sig import HintingEnumerator from shibokensupport.signature.lib.tool import build_brace_pattern -sourcepath = Path(__file__).resolve() - # Can we use forward references? USE_PEP563 = sys.version_info[:2] >= (3, 7) @@ -263,7 +262,7 @@ def generate_pyi(import_name, outpath, options): outfile = io.StringIO() fmt = Formatter(outfile, options) - fmt.print(get_license_text()) # which has encoding, already + fmt.print(LICENSE_TEXT.strip()) need_imports = options._pyside_call and not USE_PEP563 if USE_PEP563: fmt.print("from __future__ import annotations") diff --git a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py index e0fd9dbb0..57f505d4a 100644 --- a/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py +++ b/sources/shiboken6/shibokenmodule/files.dir/shibokensupport/signature/loader.py @@ -102,25 +102,16 @@ __feature__.pyside_feature_dict = signature_bootstrap.pyside_feature_dict builtins.__feature_import__ = signature_bootstrap.__feature_import__ del signature_bootstrap -def _get_modname(mod): - return mod.__spec__.name if getattr(mod, "__spec__", None) else mod.__name__ - -def _set_modname(mod, name): - if getattr(mod, "__spec__", None): - mod.__spec__.name = name - else: - mod.__name__ = name - def put_into_package(package, module, override=None): # take the last component of the module name - name = (override if override else _get_modname(module)).rsplit(".", 1)[-1] - # allow access as {package}.typing + name = (override if override else module.__spec__.name).rsplit(".", 1)[-1] + # allow access as {package}.{name} if package: setattr(package, name, module) # put into sys.modules as a package to allow all import options - fullname = f"{_get_modname(package)}.{name}" if package else name - _set_modname(module, fullname) + fullname = f"{package.__spec__.name}.{name}" if package else name + module.__spec__.name = fullname # publish new dotted name in sys.modules sys.modules[fullname] = module @@ -152,6 +143,7 @@ def move_into_pyside_package(): put_into_package(PySide6.support.signature, importhandler) put_into_package(PySide6.support.signature.lib, enum_sig) put_into_package(PySide6.support.signature.lib, pyi_generator) + put_into_package(PySide6.support.signature.lib, tool) from shibokensupport.signature import mapping from shibokensupport.signature import errorhandler @@ -161,6 +153,7 @@ from shibokensupport.signature import parser from shibokensupport.signature import importhandler from shibokensupport.signature.lib import enum_sig from shibokensupport.signature.lib import pyi_generator +from shibokensupport.signature.lib import tool if "PySide6" in sys.modules: # We publish everything under "PySide6.support", again. |