diff options
Diffstat (limited to 'sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/loader.py')
-rw-r--r-- | sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/loader.py | 235 |
1 files changed, 0 insertions, 235 deletions
diff --git a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/loader.py b/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/loader.py deleted file mode 100644 index 6cee54680..000000000 --- a/sources/shiboken2/shibokenmodule/files.dir/shibokensupport/signature/loader.py +++ /dev/null @@ -1,235 +0,0 @@ -# This Python file uses the following encoding: utf-8 -# It has been edited by fix-complaints.py . - -############################################################################# -## -## Copyright (C) 2019 The Qt Company Ltd. -## Contact: https://www.qt.io/licensing/ -## -## This file is part of Qt for Python. -## -## $QT_BEGIN_LICENSE:LGPL$ -## Commercial License Usage -## Licensees holding valid commercial Qt licenses may use this file in -## accordance with the commercial license agreement provided with the -## Software or, alternatively, in accordance with the terms contained in -## a written agreement between you and The Qt Company. For licensing terms -## and conditions see https://www.qt.io/terms-conditions. For further -## information use the contact form at https://www.qt.io/contact-us. -## -## GNU Lesser General Public License Usage -## Alternatively, this file may be used under the terms of the GNU Lesser -## General Public License version 3 as published by the Free Software -## Foundation and appearing in the file LICENSE.LGPL3 included in the -## packaging of this file. Please review the following information to -## ensure the GNU Lesser General Public License version 3 requirements -## will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -## -## GNU General Public License Usage -## Alternatively, this file may be used under the terms of the GNU -## General Public License version 2.0 or (at your option) the GNU General -## Public license version 3 or any later version approved by the KDE Free -## Qt Foundation. The licenses are as published by the Free Software -## Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -## included in the packaging of this file. Please review the following -## information to ensure the GNU General Public License requirements will -## be met: https://www.gnu.org/licenses/gpl-2.0.html and -## https://www.gnu.org/licenses/gpl-3.0.html. -## -## $QT_END_LICENSE$ -## -############################################################################# - -from __future__ import print_function, absolute_import - -""" -loader.py - -The loader has to load the signature module completely at startup, -to make sure that the functions are available when needed. -This is meanwhile necessary to make the '__doc__' attribute work correctly. - -It does not mean that everything is initialized in advance. Only the modules -are loaded completely after 'import PySide2'. - -This version uses both a normal directory, but has also an embedded ZIP file -as a fallback solution. The ZIP file is generated by 'embedding_generator.py' -and embedded into 'signature.cpp' as "embed/signature.inc". - -Meanwhile, the ZIP file grew so much, that MSVC had problems -with it's 64k string limit, so we had to break the string up. -See 'zipped_string_sequence' in signature.cpp. -""" - -import sys -import os -import traceback -import types - -# On Python 2, we only have ImportError, which is way too coarse. -# When problems occour, please use Python 3, because it has the finer -# ModuleNotFoundError. - -try: - ModuleNotFoundError -except NameError: - ModuleNotFoundError = ImportError - -def _qualname(x): - return getattr(x, "__qualname__", x.__name__) - -# patching inspect's formatting to keep the word "typing": -def formatannotation(annotation, base_module=None): - # if getattr(annotation, '__module__', None) == 'typing': - # return repr(annotation).replace('typing.', '') - if isinstance(annotation, type): - name = _qualname(annotation) - if annotation.__module__ in ('builtins', base_module): - return name - return annotation.__module__ + '.' + name - return repr(annotation) - -# Note also that during the tests we have a different encoding that would -# break the Python license decorated files without an encoding line. - -# name used in signature.cpp -def pyside_type_init(type_key, sig_strings): - return parser.pyside_type_init(type_key, sig_strings) - -# name used in signature.cpp -def create_signature(props, key): - return layout.create_signature(props, key) - -# name used in signature.cpp -def seterror_argument(args, func_name): - return errorhandler.seterror_argument(args, func_name) - -# name used in signature.cpp -def make_helptext(func): - return errorhandler.make_helptext(func) - -# name used in signature.cpp -def finish_import(module): - return importhandler.finish_import(module) - - -import signature_bootstrap -from shibokensupport import signature, __feature__ -signature.get_signature = signature_bootstrap.get_signature -# PYSIDE-1019: Publish the __feature__ dictionary. -__feature__.pyside_feature_dict = signature_bootstrap.pyside_feature_dict -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 - if package: - setattr(package, name, module) - # put into sys.modules as a package to allow all import options - fullname = "{}.{}".format(_get_modname(package), name) if package else name - _set_modname(module, fullname) - # publish new dotted name in sys.modules - sys.modules[fullname] = module - - -# Debug: used to inspect what each step loads -def list_modules(message): - ext_modules = {key:value for (key, value) in sys.modules.items() - if hasattr(value, "__file__")} - print("SYS.MODULES", message, len(sys.modules), len(ext_modules)) - for (name, module) in sorted(ext_modules.items()): - print(" {:23}".format(name), repr(module)[:70]) - - -orig_typing = True -if sys.version_info >= (3,): - import typing - import inspect - inspect.formatannotation = formatannotation -else: - tp_name = "typing" - if tp_name not in sys.modules: - orig_typing = False - from shibokensupport import typing27 as typing - sys.modules[tp_name] = typing - typing.__name__ = tp_name - else: - import typing - import inspect - namespace = inspect.__dict__ - from shibokensupport import backport_inspect as inspect - _doc = inspect.__doc__ - inspect.__dict__.update(namespace) - inspect.__doc__ += _doc - # force inspect to find all attributes. See "heuristic" in pydoc.py! - inspect.__all__ = list(x for x in dir(inspect) if not x.startswith("_")) - -# Fix the module names in typing if possible. This is important since -# the typing names should be I/O compatible, so that typing.Dict -# shows itself as "typing.Dict". -for name, obj in typing.__dict__.items(): - if hasattr(obj, "__module__"): - try: - obj.__module__ = "typing" - except (TypeError, AttributeError): - pass - -import shibokensupport -put_into_package(shibokensupport.signature, typing, "typing") -put_into_package(shibokensupport.signature, inspect, "inspect") - - -def move_into_pyside_package(): - import PySide2 - try: - import PySide2.support - except ModuleNotFoundError: - PySide2.support = types.ModuleType("PySide2.support") - put_into_package(PySide2.support, __feature__) - put_into_package(PySide2.support, signature) - put_into_package(PySide2.support.signature, mapping) - put_into_package(PySide2.support.signature, errorhandler) - put_into_package(PySide2.support.signature, layout) - put_into_package(PySide2.support.signature, lib) - put_into_package(PySide2.support.signature, parser) - put_into_package(PySide2.support.signature, importhandler) - put_into_package(PySide2.support.signature.lib, enum_sig) - - put_into_package(None if orig_typing else PySide2.support.signature, typing) - put_into_package(PySide2.support.signature, inspect) - -from shibokensupport.signature import mapping -from shibokensupport.signature import errorhandler -from shibokensupport.signature import layout -from shibokensupport.signature import lib -from shibokensupport.signature import parser -from shibokensupport.signature import importhandler -from shibokensupport.signature.lib import enum_sig - -if "PySide2" in sys.modules: - # We publish everything under "PySide2.support.signature", again. - move_into_pyside_package() - # PYSIDE-1019: Modify `__import__` to be `__feature__` aware. - # __feature__ is already in sys.modules, so this is actually no import - try: - import PySide2.support.__feature__ - sys.modules["__feature__"] = PySide2.support.__feature__ - PySide2.support.__feature__.original_import = __builtins__["__import__"] - __builtins__["__import__"] = PySide2.support.__feature__._import - # Maybe we should optimize that and change `__import__` from C, instead? - except ModuleNotFoundError: - print("__feature__ could not be imported. " - "This is an unsolved PyInstaller problem.", file=sys.stderr) - -# end of file |