a b^y@sddlZddlZddlZddlmZddlZddlmZmZddlm Z ddl m Z ddl m Z eZiZedd Zd d ZGd d d eZdS)N)contextmanager) RepositoryRepositoryError) PyGIWarning)get_introspection_module)load_overridesccs^t|}dV|rdS|dvr$dSt|dur6dSt|}tjd||dt|ddS)aOA context manager which tries to give helpful warnings about missing gi.require_version() which could potentially break code if only an older version than expected is installed or a new version gets introduced. :: with _check_require_version("Gtk", stacklevel): load_namespace_and_overrides() N)ZGLibZGObjectZGioz%(namespace)s was imported without specifying a version first. Use gi.require_version('%(namespace)s', '%(version)s') before import to ensure that the right version gets loaded.) namespaceversion stacklevel) repository is_registeredgiZget_required_versionZ get_versionwarningswarnr)r r Z was_loadedr r1/usr/lib64/python3.9/site-packages/gi/importer.py_check_require_version*s  rcCsZtjdd}|dkr"|rdSdS|dkr6|r2dSdS|dkrJ|rFdSdS|rRdSdSdS) a2Returns the stacklevel value for warnings.warn() for when the warning gets emitted by an imported module, but the warning should point at the code doing the import. Pass import_hook=True if the warning gets generated by an import hook (warn() gets called in load_module(), see PEP302) N)r)rr )rr)sys version_info) import_hookZ py_versionrrrget_import_stacklevelQs    rc@s&eZdZddZdddZddZdS) DynamicImportercCs ||_dS)N)path)selfrrrr__init__kszDynamicImporter.__init__NcCs2||jsdS|dd\}}||jkr.dS|S)N.r) startswithrrsplit)r fullnamerr rrr find_modulens   zDynamicImporter.find_modulec Cs|tjvrtj|S|dd\}}t|sDt|sDtd|tdd}t||dzz t |}Wn,t y}zt|WYd}~n d}~00t |D]}t d|dd qt|}Wdn1s0Yd ||_||_|tj|<|S) Nr"rz6cannot import name %s, introspection typelib not foundT)rr zgi.repository.-rz<%s>)rmodulesr$r rZenumerate_versions ImportErrorrrrrZget_immediate_dependencies importlib import_modulesplitr__file__ __loader__) r r%rr r Zintrospection_moduleeZdepZdynamic_modulerrr load_modulexs,     &  zDynamicImporter.load_module)N)__name__ __module__ __qualname__r!r&r0rrrrrgs r)rrr* contextlibrrZ_girrrmodulerZ overridesr get_defaultr r(rrobjectrrrrrs     &