
    gi                         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      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| d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GioGioUnixGioWin32zJ was imported without specifying a version first. Use gi.require_version('z', 'z>') before import to ensure that the right version gets loaded.
stacklevel)
repositoryis_registeredgiget_required_versionget_versionwarningswarnr   )	namespacer   
was_loadedversions       -/usr/lib/python3/dist-packages/gi/importer.py_check_require_versionr   '   s      )))4J	 	EE	y)5$$Y/GMM+ ##,+T' ;?	? 	s   A3A5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(   N   sb     !!"1%JVq&Q&Vq'R'V r'a'1""    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__e   s	    	r)   c                     |j                  | j                        sy|j                  dd      \  }}|| j                  k(  S )NF.r   )
startswithr.   rsplit)r/   fullnamer.   
_namespaces       r   _find_module_checkz"DynamicImporter._find_module_checkh   s;    ""499-#??32jtyy  r)   Nc                 f    | j                  |      r t        j                  j                  ||       S y r-   )r7   	importlibutilspec_from_loader)r/   r5   r.   targets       r   	find_speczDynamicImporter.find_speco   s*    ""8,>>228TBBr)   c                 *    | j                  |      r| S y r-   )r7   )r/   r5   r.   s      r   find_modulezDynamicImporter.find_modulet   s    ""8,Kr)   c                     |j                   j                  dd      \  }}t        j                  |      s$t        j	                  |      st        d| d      t        d      }t        ||      5  	 t        |      }t        j                  |      D ],  }t        j                  d|j                  d	      d
   z          . t        |      cd d d        S # t        $ r}t        |      |d }~ww xY w# 1 sw Y   y xY w)Nr2   r   zcannot import name z!, introspection typelib not foundT)r&   r   zgi.repository.-r   )namer4   r   r   enumerate_versionsImportErrorr(   r   r   r   get_immediate_dependenciesr9   import_modulesplitr	   )r/   spec_pathr   r   introspection_moduleedeps           r   create_modulezDynamicImporter.create_moduley   s    99++C3y
 ''
//	:%i[0QR  +t<
#I*E 
	8,'?	'J$ "<<YG N''(8399S>!;L(LMN!"67
	8 
	8 # ,!!n!+,
	8 
	8s1   2C44C?AC4	C1 C,,C11C44C=c                      y r-    )r/   r5   s     r   exec_modulezDynamicImporter.exec_module   s    r)   )NNr-   )	__name__
__module____qualname__r0   r7   r=   r?   rM   rP   rO   r)   r   r+   r+   b   s     !

84r)   r+   )r$   r   r9   
contextlibr   r   _gir   r   r   moduler   	overridesr	   get_defaultr   modulesr   r(   r+   rO   r)   r   <module>rZ      s_   *    % 	 ,  , % $Z##%
  # #L#(3 3r)   