U
    ÍZjé%  ã                   @   sü   d dl mZ d dlZz
djZW n  ek
r>   d dlmZ Y nX d dlZddlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZmZ ddlmZmZm Z m!Z!m"Z" e #¡ Z$i Z%d	d
„ Z&dd„ Z'G dd„ de(ƒZ)dd„ Z*dS )é    )Úabsolute_importNÚ )Ú	maketransé   )Ú
RepositoryÚFunctionInfoÚRegisteredTypeInfoÚEnumInfoÚ
ObjectInfoÚInterfaceInfoÚConstantInfoÚ
StructInfoÚ	UnionInfoÚCallbackInfoÚStructÚBoxedÚ	CCallbackÚenum_addÚenum_register_new_gtype_and_addÚ	flags_addÚ flags_register_new_gtype_and_addÚ
GInterface)ÚGObjectMetaÚ
StructMeta)Ú	TYPE_NONEÚ
TYPE_BOXEDÚTYPE_POINTERÚ	TYPE_ENUMÚ
TYPE_FLAGSc                 C   sP   |   ¡ }|s(|  ¡ }|r$|jr$|jS tS | ¡ }| ¡ }t d| ¡}t||ƒS ©Núgi.repository.)	Z
get_parentÚ
get_g_typeÚpytypeÚobjectÚget_namespaceÚget_nameÚ	importlibÚimport_moduleÚgetattr)Úobject_infoZparent_object_infoÚgtypeÚ	namespaceÚnameÚmodule© r.   úL/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/gi/module.pyÚget_parent_for_objectH   s    
r0   c                 C   sD   g }|   ¡ D ]2}| ¡ }| ¡ }t d| ¡}| t||ƒ¡ q|S r   )Zget_interfacesr$   r%   r&   r'   Úappendr(   )r)   Ú
interfacesZinterface_infor+   r,   r-   r.   r.   r/   Úget_interfaces_for_object_   s    r3   c                   @   s2   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ ZdS )ÚIntrospectionModuleaU  An object which wraps an introspection typelib.

    This wrapping creates a python module like representation of the typelib
    using gi repository as a foundation. Accessing attributes of the module
    will dynamically pull them in and create wrappers for the members.
    These members are then cached on this introspection module.
    Nc                 C   sR   t  ||¡ || _|| _d| | _t  | j¡}|g| _| jdkrNt  | j¡| _dS )z"Might raise gi._gi.RepositoryErrorr    N)Ú
repositoryÚrequireÚ
_namespaceÚ_versionÚ__name__Úget_typelib_pathÚ__path__Úget_version)Úselfr+   ÚversionÚpathr.   r.   r/   Ú__init__r   s    

zIntrospectionModule.__init__c                    s¶  t  | j|¡}|s$td| j|f ƒ‚t|tƒ�r | ¡ }|j}|d k�r| 	¡ rz| 
t¡rdt|ƒ}q¢|tkspt‚t|ƒ}n(| 
t¡rŽt|ƒ}n|tksšt‚t|ƒ}||_d| ¡  |_tddƒ}| ¡ D ]&}| ¡  |¡}t|||| ¡ ƒƒ qÈ| ¡ D ]}t||j|ƒ qø|tk�r¨||_�nˆt|tƒ�rx| ¡ }t|tƒ�rrt|ƒ‰ t ‡ fdd„t!|ƒD ƒƒ}	ˆ f|	 }
t"}n¤t|t#ƒ�rŠt$f}
t"}nŒt|t%ƒ�r¢t&f}
t"}ntt|t't(fƒ�r| 
t)¡�rÆt*f}
nB| 
t+¡�sè|tk�sè|j,|k�rðt-f}
nt.d| ¡ | /¡ f ƒ‚t0}nt1|ƒ‚|tk�rH|j}|d k	�rH||
k�rH|| j2|< |S |d| j |dœ}|||
|ƒ}|tk�r¨||_n0t|t3ƒ�rŠ|}nt|t4ƒ�r | ¡ }nt1|ƒ‚|| j2|< |S )	Nz%r object has no attribute %rr    ZabcdefgjhijklmnopqrstuvwxyzZABCDEFGJHIJKLMNOPQRSTUVWXYZc                 3   s   | ]}t ˆ |ƒs|V  qd S ©N)Ú
issubclass)Ú.0Z	interface©Úparentr.   r/   Ú	<genexpr>°   s    
ÿz2IntrospectionModule.__getattr__.<locals>.<genexpr>z$unable to create a wrapper for %s.%s)Ú__info__Ú
__module__Z	__gtype__)5r5   Zfind_by_namer7   ÚAttributeErrorr9   Ú
isinstancer	   r!   r"   Zis_flagsZis_ar   r   r   ÚAssertionErrorr   r   r   r   rG   r$   rH   r   Z
get_valuesZget_name_unescapedÚ	translateÚsetattrÚ	get_valueZget_methodsr   r
   r0   Útupler3   r   r   r   r   r   r   r   r   r   r   Zfundamentalr   Ú	TypeErrorr%   r   ÚNotImplementedErrorÚ__dict__r   r   )r=   r,   ÚinfoZg_typeÚwrapperZascii_upper_transZ
value_infoZ
value_nameZmethod_infor2   ÚbasesÚ	metaclassÚtype_Zdict_r.   rD   r/   Ú__getattr__€   s˜     ÿ





þ


ÿþ

ý


zIntrospectionModule.__getattr__c                 C   s   t  | j¡}d| j|f S )Nz <IntrospectionModule %r from %r>)r5   r:   r7   )r=   r?   r.   r.   r/   Ú__repr__ê   s    zIntrospectionModule.__repr__c                 C   sF   t t| jƒƒ}| | j ¡ ¡ t | j¡}| dd„ |D ƒ¡ t	|ƒS )Nc                 s   s    | ]}t |tƒs| ¡ V  qd S rA   )rJ   r   r%   )rC   rS   r.   r.   r/   rF   ø   s    
ÿz.IntrospectionModule.__dir__.<locals>.<genexpr>)
ÚsetÚdirÚ	__class__ÚupdaterR   Úkeysr5   Ú	get_infosr7   Úlist)r=   ÚresultZnamespace_infosr.   r.   r/   Ú__dir__î   s
    zIntrospectionModule.__dir__)N)r9   rH   Ú__qualname__Ú__doc__r@   rX   rY   rb   r.   r.   r.   r/   r4   j   s
   
jr4   c                 C   s0   | t krt |  S t | ¡}t| |ƒ}|t | < |S )z€
    :Returns:
        An object directly wrapping the gi module without overrides.

    Might raise gi._gi.RepositoryError
    )Ú_introspection_modulesÚgiZget_required_versionr4   )r+   r>   r-   r.   r.   r/   Úget_introspection_moduleþ   s    

rg   )+Ú
__future__r   r&   r   rI   Ústringrf   Z_gir   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Útypesr   r   Ú
_constantsr   r   r   r   r   Úget_defaultr5   re   r0   r3   r#   r4   rg   r.   r.   r.   r/   Ú<module>   s    
P 