U
    ÍZj   ã                   @   s    d dl mZ 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	 ¡ Zi Zed	d
„ ƒZdd„ ZG dd„ deƒZdS )é    )Úabsolute_importN)Úcontextmanageré   )Ú
RepositoryÚRepositoryError)ÚPyGIWarning)Úget_introspection_module)Úload_overridesc                 c   s^   t  | ¡}dV  |rdS | dkr$dS t | ¡dk	r6dS t  | ¡}tjd| |dœ t|d� 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)ZGLibZGObjectZ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ÚgiZget_required_versionÚget_versionÚwarningsÚwarnr   )r
   r   Z
was_loadedr   © r   úN/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/gi/importer.pyÚ_check_require_version+   s     

ý ûr   c                 C   sZ   t jdd… }|dkr"| rdS dS |dkr6| r2dS dS |dkrJ| rFdS dS | rRdS 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_versionr   r   r   Úget_import_stacklevelR   s    	r    c                   @   s&   e Zd Zdd„ Zddd„Zdd„ ZdS )	ÚDynamicImporterc                 C   s
   || _ d S )N)Úpath)Úselfr"   r   r   r   Ú__init__l   s    zDynamicImporter.__init__Nc                 C   s2   |  | j¡sd S | dd¡\}}|| jkr.d S | S )NÚ.r   )Ú
startswithr"   Úrsplit)r#   Úfullnamer"   r
   r   r   r   Úfind_moduleo   s    
zDynamicImporter.find_modulec           	      C   sì   |t jkrt j| S | dd¡\}}t |¡sDt |¡sDtd| ƒ‚tdd�}t||d��n zt	|ƒ}W n* t
k
r’ } zt|ƒ‚W 5 d }~X Y nX t |¡D ]}t d| d¡d	  ¡ qžt|ƒ}W 5 Q R X d
| |_| |_|t j|< |S )Nr%   r   z6cannot import name %s, introspection typelib not foundT)r   r   zgi.repository.ú-r   z<%s>)r   Úmodulesr'   r   r   Zenumerate_versionsÚImportErrorr    r   r   r   Zget_immediate_dependenciesÚ	importlibÚimport_moduleÚsplitr	   Ú__file__Ú
__loader__)	r#   r(   r"   r
   r   Zintrospection_moduleÚeÚdepZdynamic_moduler   r   r   Úload_moduley   s,    


ÿÿ


zDynamicImporter.load_module)N)Ú__name__Ú
__module__Ú__qualname__r$   r)   r4   r   r   r   r   r!   h   s   

r!   )Ú
__future__r   r   r   r-   Ú
contextlibr   r   Z_gir   r   r   Úmoduler   Z	overridesr	   Úget_defaultr   r+   r   r    Úobjectr!   r   r   r   r   Ú<module>   s   
&