From 55e9ab1b728021859bb9ef5d5f27049c530d880e Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Wed, 12 Jul 2017 08:44:59 +0900 Subject: Imported Upstream version 3.2.0 Change-Id: Icdce2dbd074e763b749f5af1a12d4db4809a71b7 Signed-off-by: DongHun Kwak --- gi/__init__.py | 95 +++++----------------------------------------------------- 1 file changed, 7 insertions(+), 88 deletions(-) (limited to 'gi/__init__.py') diff --git a/gi/__init__.py b/gi/__init__.py index caad569..e6bc06e 100644 --- a/gi/__init__.py +++ b/gi/__init__.py @@ -20,81 +20,27 @@ from __future__ import absolute_import -# support overrides in different directories than our gi module -from pkgutil import extend_path -__path__ = extend_path(__path__, __name__) +from ._gi import _API, Repository -import sys +# Force loading the GObject typelib so we have available the wrappers for +# base classes such as GInitiallyUnowned +import gi._gobject import os -import importlib -import types - -_static_binding_error = ('When using gi.repository you must not import static ' - 'modules like "gobject". Please change all occurrences ' - 'of "import gobject" to "from gi.repository import GObject". ' - 'See: https://bugzilla.gnome.org/show_bug.cgi?id=709183') - -# we can't have pygobject 2 loaded at the same time we load the internal _gobject -if 'gobject' in sys.modules: - raise ImportError(_static_binding_error) - - -from . import _gi -from ._gi import _gobject -from ._gi import _API -from ._gi import Repository -from ._gi import PyGIDeprecationWarning -from ._gi import PyGIWarning - -_API = _API # pyflakes -PyGIDeprecationWarning = PyGIDeprecationWarning -PyGIWarning = PyGIWarning _versions = {} _overridesdir = os.path.join(os.path.dirname(__file__), 'overrides') -version_info = _gobject.pygobject_version[:] -__version__ = "{0}.{1}.{2}".format(*version_info) - - -class _DummyStaticModule(types.ModuleType): - __path__ = None - - def __getattr__(self, name): - raise AttributeError(_static_binding_error) - - -sys.modules['glib'] = _DummyStaticModule('glib', _static_binding_error) -sys.modules['gobject'] = _DummyStaticModule('gobject', _static_binding_error) -sys.modules['gio'] = _DummyStaticModule('gio', _static_binding_error) -sys.modules['gtk'] = _DummyStaticModule('gtk', _static_binding_error) -sys.modules['gtk.gdk'] = _DummyStaticModule('gtk.gdk', _static_binding_error) - - -def check_version(version): - if isinstance(version, str): - version_list = tuple(map(int, version.split("."))) - else: - version_list = version - - if version_list > version_info: - raise ValueError(( - "pygobject's version %s required, and available version " - "%s is not recent enough") % (version, __version__) - ) - - def require_version(namespace, version): repository = Repository.get_default() if namespace in repository.get_loaded_namespaces(): loaded_version = repository.get_version(namespace) if loaded_version != version: - raise ValueError('Namespace %s is already loaded with version %s' % + raise ValueError('Namespace %s is already loaded with version %s' % \ (namespace, loaded_version)) if namespace in _versions and _versions[namespace] != version: - raise ValueError('Namespace %s already requires version %s' % + raise ValueError('Namespace %s already requires version %s' % \ (namespace, _versions[namespace])) available_versions = repository.enumerate_versions(namespace) @@ -102,37 +48,10 @@ def require_version(namespace, version): raise ValueError('Namespace %s not available' % namespace) if version not in available_versions: - raise ValueError('Namespace %s not available for version %s' % + raise ValueError('Namespace %s not available for version %s' % \ (namespace, version)) _versions[namespace] = version - def get_required_version(namespace): return _versions.get(namespace, None) - - -def require_foreign(namespace, symbol=None): - """Ensure the given foreign marshaling module is available and loaded. - - :param str namespace: - Introspection namespace of the foreign module (e.g. "cairo") - :param symbol: - Optional symbol typename to ensure a converter exists. - :type symbol: str or None - :raises: ImportError - - :Example: - - .. code-block:: python - - import gi - import cairo - gi.require_foreign('cairo') - - """ - try: - _gi.require_foreign(namespace, symbol) - except Exception as e: - raise ImportError(str(e)) - importlib.import_module('gi.repository', namespace) -- cgit v1.2.3