U
    ڲg                     @   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-lbi5ej3i/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rt| 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|rd |ddtff    S qt D ]2\}}}| | }	tj||	}tj|r q qq q4qt| | 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*   
)