a
    ze()                     @   s  d dl mZmZmZmZmZmZmZmZm	Z	 zd dl m
Z
 W n eyR   dZ
Y n0 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.9/imp.py
new_module0   s    r$   c                   C   s   t jS r   )r   MAGIC_NUMBERr"   r"   r"   r#   	get_magic;   s    r&   c                   C   s   t jjS r   )sysimplementation	cache_tagr"   r"   r"   r#   get_tagC   s    r*   c                 C   sB   t  & t d t| |W  d    S 1 s40    Y  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 r   )r   source_from_cacher0   r"   r"   r#   r2   [   s    r2   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       z get_suffixes.<locals>.<listcomp>c                 S   s   g | ]}|d t fqS )r)	PY_SOURCEr7   r"   r"   r#   r:   l   r;   c                 S   s   g | ]}|d t fqS r4   )PY_COMPILEDr7   r"   r"   r#   r:   m   r;   )r   EXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXES)
extensionssourcebytecoder"   r"   r#   get_suffixesi   s    rE   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 pathnamer3   zexisting directory)ImportErrorosr0   isdir)selfr0   r"   r"   r#   __init__z   s    zNullImporter.__init__c                 C   s   d S r   r"   )rK   fullnamer"   r"   r#   find_module   s    zNullImporter.find_moduleN)__name__
__module____qualname__rL   rN   r"   r"   r"   r#   rF   r   s   rF   c                       s*   e Zd Zd fdd	Z fddZ  ZS )_HackedGetDataNc                    s   t  || || _d S r   )superrL   file)rK   rM   r0   rT   	__class__r"   r#   rL      s    z_HackedGetData.__init__c                    s   | j rx|| jkrx| j js0| j }d|jvr0|  | j jrJt| jd | _ }| | W  d    S 1 sl0    Y  nt |S d S )Nbr5   )	rT   r0   closedmodecloseopenreadrS   get_data)rK   r0   rT   rU   r"   r#   r]      s    
(z_HackedGetData.get_data)N)rO   rP   rQ   rL   r]   __classcell__r"   r"   rU   r#   rR      s   rR   c                   @   s   e Zd ZdS )_LoadSourceCompatibilityNrO   rP   rQ   r"   r"   r"   r#   r_      s   r_   c                 C   s\   t | ||}tj| ||d}| tjv r8t|tj|  }nt|}t| ||_	|j	|j
_|S N)loader)r_   r   spec_from_file_locationr'   modulesr   r   r   SourceFileLoader
__loader____spec__rb   r!   pathnamerT   rb   specmoduler"   r"   r#   load_source   s    

rl   c                   @   s   e Zd ZdS )_LoadCompiledCompatibilityNr`   r"   r"   r"   r#   rm      s   rm   c                 C   sZ   t | ||}tj| ||d}| tjv r8t|tj|  }nt|}t| ||_|j|j	_
|S ra   )rm   r   rc   r'   rd   r   r   r   rf   rg   rb   rh   r"   r"   r#   load_compiled   s    

rn   c                 C   s   t j|rftjd d  tjd d   }|D ]*}t j|d| }t j|r,|} qfq,td	|t
j| |g d}| tjv rt|tj|  S t|S d S )NrL   z{!r} is not a package)submodule_search_locations)rI   r0   rJ   r   r@   rA   joinexists
ValueErrorformatr   rc   r'   rd   r   r   )r!   r0   rB   	extensionZ	init_pathrj   r"   r"   r#   load_package   s     
ru   c           	      C   s4  |\}}}|r2| dr d|v r2td| n|d u rZ|tthv rZd|}t|n|tkrnt| ||S |tkrt| ||S |tkrtd ur|d u rt	|d}t| ||W  d    S 1 s0    Y  nt| ||S nP|t
k rt| |S |tkrt| S |tkrt| S d| |}t|| dd S )N)r<   U+zinvalid file open mode {!r}z.file object required for import (type code {})r5   z*Don't know how to import {} (type code {})r    )
startswithrr   rs   r=   r>   rl   rn   r6   load_dynamicr[   PKG_DIRECTORYru   	C_BUILTINinit_builtin	PY_FROZENr   rH   )	r!   rT   filenameZdetailssuffixrY   type_msgZopened_filer"   r"   r#   load_module   s.    


,



r   c                 C   s  t | tstdt| n$t |td tfsBtdt||d u 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 q:qtt| | dd }
d|vrt|d	 }t|jd }
W d    n1 sz0    Y  t|||
d
}|||||ffS )Nz'name' must be a str, not {}z%'path' must be None or a list, not {}rG   z.pyr   rL   r    rW   r5   )encoding)
isinstancestr	TypeErrorrs   typelistRuntimeErrorr   r{   r	   r}   r'   r0   rI   rp   r   rA   isfilerz   rE   rH   r   r[   tokenizedetect_encodingreadline)r!   r0   entryZpackage_directoryr   Zpackage_file_nameZ	file_pathrY   r   	file_namer   rT   r"   r"   r#   rN      sB    

0rN   c                 C   s
   t | S r   )	importlibreload)rk   r"   r"   r#   r   2  s    r   c                 C   s$   z
t | W S  ty   Y d S 0 d S r   )r   rH   r    r"   r"   r#   r|   =  s    
r|   c                 C   s0   dd l }|j| |}|jj| ||d}t|S )Nr   )r!   rb   origin)Zimportlib.machineryr   ExtensionFileLoader
ModuleSpecr   )r!   r0   rT   r   rb   rj   r"   r"   r#   ry   J  s    ry   )N)N)N)N)N):_impr   r   r   r   r   r   r   r	   r
   r   rH   Zimportlib._bootstrapr   r   r   r   Zimportlib._bootstrap_externalr   r   r   r   rI   r'   r   r   r,   warnDeprecationWarningZSEARCH_ERRORr=   r>   r6   ZPY_RESOURCErz   r{   r}   ZPY_CODERESOURCEZIMP_HOOKr$   r&   r*   r/   r2   rE   rF   rR   re   r_   rl   rm   rn   ru   r   rN   r   r|   ry   r"   r"   r"   r#   <module>	   s^   ,

	

#
4