
    f$                         d dl Z d dlZd dlZd dlmZ d dlZddlmZmZ ddlm	Z	 ddl
mZ ddlmZ  ej                         Zi Zed        Zd	 Z G d
 de      Zy)    N)contextmanager   )
RepositoryRepositoryError)PyGIWarning)get_introspection_module)load_overridesc              #      K   t         j                  |       }d |ry| dv ryt        j                  |       yt         j	                  |       }t        j                  d| |dz  t        |       yw)aO  A 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)GLibGObjectGioz%(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.)	namespaceversion
stacklevel)
repositoryis_registeredgiget_required_versionget_versionwarningswarnr   )r   r   
was_loadedr   s       -/usr/lib/python3/dist-packages/gi/importer.py_check_require_versionr   *   sz      )))4J	 	..	y)5$$Y/GMM	? "g
6	7 	
,s   A0A2c                 v    t         j                  dd }|dk  r| rdS dS |dk(  r| rdS dS |dk(  r| rdS dS | rdS dS )	a2  Returns 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      )r   r      
   )r   r   )sysversion_info)import_hook
py_versions     r   get_import_stacklevelr&   Q   sd     !!"1%JVq&Q&	v	q'R'	v	 r'a'  q&Q&    c                   4    e Zd Zd Zd ZddZd	dZd Zd Zy)
DynamicImporterc                     || _         y N)path)selfr,   s     r   __init__zDynamicImporter.__init__k   s	    	r'   c                     |j                  | j                        sy|j                  dd      \  }}|| j                  k(  S )NF.r   )
startswithr,   rsplit)r-   fullnamer,   r   s       r   _find_module_checkz"DynamicImporter._find_module_checkn   s:    ""499-"//#q1ityy  r'   Nc                 f    | j                  |      r t        j                  j                  ||       S y r+   )r4   	importlibutilspec_from_loader)r-   r3   r,   targets       r   	find_speczDynamicImporter.find_specu   s,    ""8,>>228TBB -r'   c                 *    | j                  |      r| S y r+   )r4   )r-   r3   r,   s      r   find_modulezDynamicImporter.find_moduley   s    ""8,K -r'   c                     |j                   j                  dd      \  }}t        j                  |      s#t        j	                  |      st        d|z        t        d      }t        ||      5  	 t        |      }t        j                  |      D ],  }t        j                  d|j                  d      d	   z          . t        |      }d d d        |S # t        $ r}t        |      d }~ww xY w# 1 sw Y   S xY w)
Nr0   r   z6cannot import name %s, introspection typelib not foundT)r$   r   zgi.repository.-r   )namer2   r   r   enumerate_versionsImportErrorr&   r   r   r   get_immediate_dependenciesr6   import_modulesplitr	   )	r-   specr,   r   r   introspection_moduleedepdynamic_modules	            r   create_modulezDynamicImporter.create_module}   s   ))**32i
 ''	2--i8 @BKL M M +t<
#I*E 
	B%'?	'J$ "<<YG N''(8399S>!;L(LMN+,@AN
	B  # %!!n$%
	B s1   1C33C>AC3	C0 C++C00C33C=c                      y r+    )r-   r3   s     r   exec_modulezDynamicImporter.exec_module   s    r'   )NNr+   )	__name__
__module____qualname__r.   r4   r:   r<   rJ   rM   rL   r'   r   r)   r)   g   s!    !C4r'   r)   )r"   r   r6   
contextlibr   r   _gir   r   r   moduler   	overridesr	   get_defaultr   modulesr   r&   objectr)   rL   r'   r   <module>rX      sa   0    % 	 ,  , % $Z##%
  #, #,L',2f 2r'   