U
    H|j�  ã                   @   s²   zd dl T W n  ek
r¬   d dlmZmZmZmZ d dlmZ d dl	m
Z
 d dlZd dlZd dlZd ZdZdZdZd	Zd
ZdZdZdZdZdd„ Zddd„Zddd„ZY nX dS )é    )Ú*)Úacquire_lockÚrelease_lockÚ
is_builtinÚ	is_frozen)Ú_load)Ú	machineryNé   é   é   é   é   é   é   é   é	   c                  C   s<   dd„ t jD ƒ} dd„ t jD ƒ}dd„ t jD ƒ}| | | S )Nc                 S   s   g | ]}|d t f‘qS ©Úrb)ÚC_EXTENSION©Ú.0Ús© r   ú7/tmp/pip-unpacked-wheel-f123fyki/cffi/_imp_emulation.pyÚ
<listcomp>!   s   ÿz get_suffixes.<locals>.<listcomp>c                 S   s   g | ]}|d t f‘qS )Úr)Ú	PY_SOURCEr   r   r   r   r   #   s     c                 S   s   g | ]}|d t f‘qS r   )ÚPY_COMPILEDr   r   r   r   r   $   s     )r   ÚEXTENSION_SUFFIXESÚSOURCE_SUFFIXESÚBYTECODE_SUFFIXES)Ú
extensionsÚsourceÚbytecoder   r   r   Úget_suffixes    s    ÿr$   c              	   C   s†  t | tƒstd t| ƒ¡ƒ‚n$t |td ƒtfƒsBtd t|ƒ¡ƒ‚|d kr€t| ƒrbd d ddtffS t	| ƒrzd d ddt
ffS tj}|D ]¢}tj || ¡}dtjd fD ]>}d| }tj ||¡}tj |¡r¤d |ddtff    S q¤tƒ D ]2\}}}| | }	tj ||	¡}tj |¡rê �q qêq„ �q4q„t| | d�‚d }
d|k�rht|d	ƒ�}t |j¡d }
W 5 Q R X t|||
d
�}|||||ffS )Nz'name' must be a str, not {}z%'path' must be None or a list, not {}Ú z.pyr   Ú__init__)ÚnameÚbr   )Úencoding)Ú
isinstanceÚstrÚ	TypeErrorÚformatÚtypeÚlistÚRuntimeErrorr   Ú	C_BUILTINr   Ú	PY_FROZENÚsysÚpathÚosÚjoinr   r    ÚisfileÚPKG_DIRECTORYr$   ÚImportErrorÚopenÚtokenizeÚdetect_encodingÚreadline)r'   r4   ÚentryÚpackage_directoryÚsuffixZpackage_file_nameÚ	file_pathÚmodeÚtype_Ú	file_namer)   Úfiler   r   r   Úfind_module'   sB    
ÿ
rF   c                 C   s$   t  | |¡}t j| ||d�}t|ƒS )N)r'   ÚloaderÚorigin)r   ÚExtensionFileLoaderÚ
ModuleSpecr   )r'   r4   rE   rG   Úspecr   r   r   Úload_dynamicP   s    rL   )N)N)Úimpr9   Ú_impr   r   r   r   Zimportlib._bootstrapr   Ú	importlibr   r5   r3   r;   ZSEARCH_ERRORr   r   r   ZPY_RESOURCEr8   r1   r2   ZPY_CODERESOURCEZIMP_HOOKr$   rF   rL   r   r   r   r   Ú<module>   s*   
)