
    =Abz                         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dS )    N)contextmanager   )
RepositoryRepositoryError)PyGIWarning)get_introspection_module)load_overridesc              #      K   t                               |           }dV  |rdS | dv rdS t          j        |           dS t                               |           }t          j        d| |dz  t          |           dS )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   *   s       )))44J	EEE  	...	y))5$$Y//GM	? "g
6
6	7 	
, , , , , ,    c                 ~    t           j        dd         }|dk    r| rdndS |dk    r| rdndS |dk    r| rdndS | rdn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   st     !"1"%JV&qqQ&	v		'qqR'	v		 'rra'  &qqQ&r   c                   0    e Zd Zd Zd ZddZddZd ZdS )	DynamicImporterc                     || _         d S N)path)selfr,   s     r   __init__zDynamicImporter.__init__k   s    			r   c                     |                     | j                  sdS |                    dd          \  }}|| j        k    S )NF.r   )
startswithr,   rsplit)r-   fullnamer,   r   s       r   _find_module_checkz"DynamicImporter._find_module_checkn   sC    ""49-- 	5"//#q11ity  r   Nc                 p    |                      |          r t          j                            ||           S d S r+   )r4   	importlibutilspec_from_loader)r-   r3   r,   targets       r   	find_speczDynamicImporter.find_specu   s=    ""8,, 	C>228TBBB	C 	Cr   c                 4    |                      |          r| S d S r+   )r4   )r-   r3   r,   s      r   find_modulezDynamicImporter.find_moduley   s'    ""8,, 	K	 	r   c                    |t           j        v rt           j        |         S |                    dd          \  }}t                              |          s,t                              |          st          d|z            t          d          }t          ||          5  	 t          |          }n!# t          $ r}t          |          d }~ww xY wt                              |          D ]2}t          j        d|                    d          d	         z              3t          |          }d d d            n# 1 swxY w Y   d
|z  |_        | |_        |t           j        |<   |S )Nr0   r   z6cannot import name %s, introspection typelib not foundT)r%   r   zgi.repository.-r   z<%s>)r#   modulesr2   r   r   enumerate_versionsImportErrorr'   r   r   r   get_immediate_dependenciesr6   import_modulesplitr	   __file__
__loader__)	r-   r3   r,   r   r   introspection_moduleedepdynamic_modules	            r   load_modulezDynamicImporter.load_module}   s   s{"";x(("//#q11i
 ''	22 	M--i88	M @BKL M M M +t<<<
#I*EEE 
	B 
	B%'?	'J'J$$" % % %!!nn$%
 "<<YGG N N'(8399S>>!;L(LMMMM+,@AAN
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B 
	B #)8"3$(! .Hs7   !D<#B32D<3
C=CCAD<<E E )NNr+   )__name__
__module____qualname__r.   r4   r:   r<   rK    r   r   r)   r)   g   sm          ! ! !C C C C       r   r)   )r#   r   r6   
contextlibr   r   _gir   r   r   moduler   	overridesr	   get_defaultr   r?   r   r'   objectr)   rO   r   r   <module>rV      s  0 


      % % % % % % 				 , , , , , , , ,       , , , , , , % % % % % % $Z#%%
  #, #, #,L' ' ',5 5 5 5 5f 5 5 5 5 5r   