f$ddlZddlZddlZddlmZddlZddlmZmZddlm Z ddl m Z ddl m Z ejZiZedZd ZGd d eZy) N)contextmanager) RepositoryRepositoryError) PyGIWarning)get_introspection_module)load_overridesc#Ktj|}d|ry|dvrytj|ytj |}t j d||dzt|yw)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)GLibGObjectGioz%(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_registeredgiget_required_version get_versionwarningswarnr)rr was_loadedrs -/usr/lib/python3/dist-packages/gi/importer.py_check_require_versionr*sz)))4J  .. y)5$$Y/G MM ?"g 6 7  ,sA0A2cvtjdd}|dkr|rdSdS|dk(r|rdSdS|dk(r|rdSdS|rdSdS) 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_hook py_versions rget_import_stacklevelr&Qsd!!"1%JVq&Q& v q'R' v  r'a' q&Q&c4eZdZdZdZddZd dZdZdZy) DynamicImporterc||_yN)path)selfr,s r__init__zDynamicImporter.__init__ks  r'c|j|jsy|jdd\}}||jk(S)NF.r) startswithr,rsplit)r-fullnamer,rs r_find_module_checkz"DynamicImporter._find_module_checkns:""499-"//#q1ityy  r'Ncf|j|r tjj||Syr+)r4 importlibutilspec_from_loader)r-r3r,targets r find_speczDynamicImporter.find_specus,  " "8 ,>>228TB B -r'c*|j|r|Syr+)r4)r-r3r,s r find_modulezDynamicImporter.find_moduleys  " "8 ,K -r'c|jjdd\}}tj|s#tj |st d|zt d}t||5 t|}tj|D],}tjd|jdd z.t|}ddd|S#t$r}t |d}~wwxYw#1swYSxYw) Nr0rz6cannot import name %s, introspection typelib not foundT)r$rzgi.repository.-r)namer2rrenumerate_versions ImportErrorr&rrrget_immediate_dependenciesr6 import_modulesplitr ) r-specr,rrintrospection_moduleedepdynamic_modules r create_modulezDynamicImporter.create_module}s))**32i '' 2--i8@BKLM M+t< #I* E B %'? 'J$ "<!;L(LM N+,@AN B# %!!n$ % Bs11C33 C>AC3 C0 C++C00C33C=cyr+)r-r3s r exec_modulezDynamicImporter.exec_modules r')NNr+) __name__ __module__ __qualname__r.r4r:r<rJrMrLr'rr)r)gs!!C4 r'r))r"rr6 contextlibrr_girrrmoduler overridesr get_defaultrmodulesrr&objectr)rLr'rrXsa0 % ,,%$Z # # %  #,#,L',2 f2 r'