B
    u9a()                 @   s  d dl mZmZmZmZmZmZmZmZm	Z	 yd dl m
Z
 W n ek
rT   dZ
Y nX d dlmZmZmZmZ d dl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 dlZd dlZd dlZejded	d
 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 Z(dd Z)d7ddZ*dd Z+dd Z,G dd  d Z-G d!d" d"Z.G d#d$ d$e.ej/Z0d8d%d&Z1G d'd( d(e.eZ2d9d)d*Z3d+d, Z4d-d. Z5d:d/d0Z6d1d2 Z7d3d4 Z8e
rd;d5d6Z9ndZ9dS )<    )		lock_heldacquire_lockrelease_lockget_frozen_objectis_frozen_packageinit_frozen
is_builtin	is_frozen_fix_co_filename)create_dynamicN)_ERR_MSG_exec_load_builtin_from_name)SourcelessFileLoader)	machinery)utilzhthe imp module is deprecated in favour of importlib; see the module's documentation for alternative uses   )
stacklevel                     	   c             C   s
   t | S )N)types
ModuleType)name r    /usr/lib/python3.7/imp.py
new_module0   s    r"   c               C   s   t jS )N)r   MAGIC_NUMBERr    r    r    r!   	get_magic;   s    r$   c               C   s   t jjS )N)sysimplementation	cache_tagr    r    r    r!   get_tagC   s    r(   c          	   C   s*   t   t d t| |S Q R X d S )Nignore)warningscatch_warningssimplefilterr   cache_from_source)pathdebug_overrider    r    r!   r-   H   s    

r-   c             C   s
   t | S )N)r   source_from_cache)r.   r    r    r!   r0   [   s    r0   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sr    r    r!   
<listcomp>k   s    z get_suffixes.<locals>.<listcomp>c             S   s   g | ]}|d t fqS )r)	PY_SOURCE)r3   r4   r    r    r!   r5   l   s    c             S   s   g | ]}|d t fqS )r1   )PY_COMPILED)r3   r4   r    r    r!   r5   m   s    )r   EXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXES)
extensionssourcebytecoder    r    r!   get_suffixesi   s    r?   c               @   s   e Zd Zdd Zdd ZdS )NullImporterc             C   s2   |dkrt dddntj|r.t d|dd S )N zempty pathname)r.   zexisting directory)ImportErrorosr.   isdir)selfr.   r    r    r!   __init__z   s    zNullImporter.__init__c             C   s   d S )Nr    )rE   fullnamer    r    r!   find_module   s    zNullImporter.find_moduleN)__name__
__module____qualname__rF   rH   r    r    r    r!   r@   r   s   r@   c                   s*   e Zd Zd fdd	Z fddZ  ZS )_HackedGetDataNc                s   t  || || _d S )N)superrF   file)rE   rG   r.   rN   )	__class__r    r!   rF      s    z_HackedGetData.__init__c          	      sp   | j r`|| jkr`| j js0| j }d|jkr0|  | j jrJt| jd | _ }|
 | S Q R X nt |S d S )Nbr1   )	rN   r.   closedmodecloseopenreadrM   get_data)rE   r.   rN   )rO   r    r!   rV      s    
z_HackedGetData.get_data)N)rI   rJ   rK   rF   rV   __classcell__r    r    )rO   r!   rL      s   rL   c               @   s   e Zd ZdS )_LoadSourceCompatibilityN)rI   rJ   rK   r    r    r    r!   rX      s   rX   c             C   s\   t | ||}tj| ||d}| tjkr8t|tj|  }nt|}t| ||_	|j	|j
_|S )N)loader)rX   r   spec_from_file_locationr%   modulesr   r   r   SourceFileLoader
__loader____spec__rY   )r   pathnamerN   rY   specmoduler    r    r!   load_source   s    

rb   c               @   s   e Zd ZdS )_LoadCompiledCompatibilityN)rI   rJ   rK   r    r    r    r!   rc      s   rc   c             C   sZ   t | ||}tj| ||d}| tjkr8t|tj|  }nt|}t| ||_|j|j	_
|S )N)rY   )rc   r   rZ   r%   r[   r   r   r   r]   r^   rY   )r   r_   rN   rY   r`   ra   r    r    r!   load_compiled   s    

rd   c             C   s   t j|rhtjd d  tjd d   }x>|D ](}t j|d| }t j|r.|}P q.W td	|t
j| |g d}| tjkrt|tj|  S t|S d S )NrF   z{!r} is not a package)submodule_search_locations)rC   r.   rD   r   r:   r;   joinexists
ValueErrorformatr   rZ   r%   r[   r   r   )r   r.   r<   	extensionZ	init_pathr`   r    r    r!   load_package   s    

rk   c       	   	   C   s  |\}}}|r0| dr d|kr0td|n|d krX|tthkrXd|}t|n|tkrlt| ||S |tkrt| ||S |tkrtd k	r|d krt	|d}t| ||S Q R X nt| ||S nL|t
krt| |S |tkrt| S |tk rt| S d| |}t|| dd S )N)r6   U+zinvalid file open mode {!r}z.file object required for import (type code {})r1   z*Don't know how to import {} (type code {}))r   )
startswithrh   ri   r7   r8   rb   rd   r2   load_dynamicrT   PKG_DIRECTORYrk   	C_BUILTINinit_builtin	PY_FROZENr   rB   )	r   rN   filenameZdetailssuffixrR   type_msgZopened_filer    r    r!   load_module   s.    




rx   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}x|D ]}tj|| }xHdtjd gD ]6}d| }tj||}tj|rd |ddtffS qW x:t D ].\}}}| | }	tj||	}tj|rP qW qP qW tt| | dd }
d|krjt|d	}t|jd }
W d Q R X t|||
d
}|||||ffS )Nz'name' must be a str, not {}z%'path' must be None or a list, not {}rA   z.pyr   rF   )r   rP   r1   )encoding)
isinstancestr	TypeErrorri   typelistRuntimeErrorr   rq   r	   rs   r%   r.   rC   rf   r   r;   isfilerp   r?   rB   r   rT   tokenizedetect_encodingreadline)r   r.   entryZpackage_directoryru   Zpackage_file_nameZ	file_pathrR   rv   	file_namery   rN   r    r    r!   rH      s@    


rH   c             C   s
   t | S )N)	importlibreload)ra   r    r    r!   r   2  s    r   c             C   s"   yt | S  tk
r   d S X d S )N)r   rB   )r   r    r    r!   rr   =  s    rr   c             C   s0   dd l }|j| |}|jj| ||d}t|S )Nr   )r   rY   origin)Zimportlib.machineryr   ExtensionFileLoader
ModuleSpecr   )r   r.   rN   r   rY   r`   r    r    r!   ro   J  s
    ro   )N)N)N)N)N):_impr   r   r   r   r   r   r   r	   r
   r   rB   Zimportlib._bootstrapr   r   r   r   Zimportlib._bootstrap_externalr   r   r   r   rC   r%   r   r   r*   warnDeprecationWarningZSEARCH_ERRORr7   r8   r2   ZPY_RESOURCErp   rq   rs   ZPY_CODERESOURCEZIMP_HOOKr"   r$   r(   r-   r0   r?   r@   rL   r\   rX   rb   rc   rd   rk   rx   rH   r   rr   ro   r    r    r    r!   <module>	   s\   ,


	

#
4