o
     JAf_)                     @   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y*   dZ
Y nw 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/Z0d7d%d&Z1G d'd( d(e.eZ2d7d)d*Z3d+d, Z4d-d. Z5d7d/d0Z6d1d2 Z7d3d4 Z8e
rd7d5d6Z9dS dZ9dS )8    )		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)utilzthe imp module is deprecated in favour of importlib and slated for removal in Python 3.12; see the module's documentation for alternative uses   )
stacklevel                     	   c                 C      	 t | S N)types
ModuleTypename r#   /usr/lib/python3.10/imp.py
new_module1      
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_tagD   s   r,   c                 C   sD   	 t   t d t| |W  d    S 1 sw   Y  d S )Nignore)warningscatch_warningssimplefilterr   cache_from_source)pathdebug_overrider#   r#   r$   r1   I   s
   


$r1   c                 C   r   r   )r   source_from_cacher2   r#   r#   r$   r4   \   s   

r4   c                  C   s>   	 dd t jD } dd t jD }dd t jD }| | | S )Nc                 S      g | ]}|d t fqS rb)C_EXTENSION.0sr#   r#   r$   
<listcomp>l       z get_suffixes.<locals>.<listcomp>c                 S   r6   )r)	PY_SOURCEr:   r#   r#   r$   r=   m   r>   c                 S   r6   r7   )PY_COMPILEDr:   r#   r#   r$   r=   n   r>   )r   EXTENSION_SUFFIXESSOURCE_SUFFIXESBYTECODE_SUFFIXES)
extensionssourcebytecoder#   r#   r$   get_suffixesj   s
   rH   c                   @   s   e Zd Z	 dd Zdd ZdS )NullImporterc                 C   s0   |dkr
t dddtj|rt d|dd S )N zempty pathnamer5   zexisting directory)ImportErrorosr2   isdir)selfr2   r#   r#   r$   __init__{   s
   zNullImporter.__init__c                 C   s   	 d S r   r#   )rN   fullnamer#   r#   r$   find_module   s   zNullImporter.find_moduleN)__name__
__module____qualname__rO   rQ   r#   r#   r#   r$   rI   s   s    rI   c                       s,   e Zd Z	 d fdd	Z fddZ  ZS )_HackedGetDataNc                    s   t  || || _d S r   )superrO   file)rN   rP   r2   rW   	__class__r#   r$   rO      s   
z_HackedGetData.__init__c                    s   	 | j r>|| jkr>| j js| j }d|jvr|  | j jr&t| jd | _ }| | W  d    S 1 s7w   Y  d S t |S )Nbr8   )	rW   r2   closedmodecloseopenreadrV   get_data)rN   r2   rW   rX   r#   r$   r`      s   
$z_HackedGetData.get_datar   )rR   rS   rT   rO   r`   __classcell__r#   r#   rX   r$   rU      s    rU   c                   @      e Zd ZdS )_LoadSourceCompatibilityNrR   rS   rT   r#   r#   r#   r$   rc          rc   c                 C   s\   t | ||}tj| ||d}| tjv rt|tj|  }nt|}t| ||_	|j	|j
_|S N)loader)rc   r   spec_from_file_locationr)   modulesr   r   r   SourceFileLoader
__loader____spec__rg   r"   pathnamerW   rg   specmoduler#   r#   r$   load_source   s   

rq   c                   @   rb   )_LoadCompiledCompatibilityNrd   r#   r#   r#   r$   rr      re   rr   c                 C   s\   	 t | ||}tj| ||d}| tjv rt|tj|  }nt|}t| ||_|j|j	_
|S rf   )rr   r   rh   r)   ri   r   r   r   rk   rl   rg   rm   r#   r#   r$   load_compiled   s   

rs   c                 C   s   	 t j|r4tjd d  tjd d   }|D ]}t j|d| }t j|r,|} nqtd	|t
j| |g d}| tjv rIt|tj|  S t|S )NrO   z{!r} is not a package)submodule_search_locations)rL   r2   rM   r   rC   rD   joinexists
ValueErrorformatr   rh   r)   ri   r   r   )r"   r2   rE   	extensionZ	init_pathro   r#   r#   r$   load_package   s$   
rz   c           	      C   s&  	 |\}}}|r| drd|v rtd||d u r+|tthv r+d|}t||tkr5t| ||S |tkr?t| ||S |tkrntd urn|d u rht	|d}t| ||W  d    S 1 saw   Y  d S t| ||S |t
krwt| |S |tkrt| S |tkrt| S d| |}t|| d)N)r?   U+zinvalid file open mode {!r}z.file object required for import (type code {})r8   z*Don't know how to import {} (type code {})r!   )
startswithrw   rx   r@   rA   rq   rs   r9   load_dynamicr^   PKG_DIRECTORYrz   	C_BUILTINinit_builtin	PY_FROZENr   rK   )	r"   rW   filenameZdetailssuffixr\   type_msgZopened_filer#   r#   r$   load_module   s2   


$
r   c                 C   s  	 t | tstdt| t |td tfs!tdt||d u r@t| r1d d ddtffS t	| r=d d ddt
ffS tj}|D ]N}tj|| }dtjd fD ]}d| }tj||}tj|rqd |ddtff    S qRt D ]\}}}| | }	tj||	}tj|r nquqB n	tt| | dd }
d|vrt|d	}t|jd }
W d    n1 sw   Y  t|||
d
}|||||ffS )Nz'name' must be a str, not {}z%'path' must be None or a list, not {}rJ   z.pyr   rO   r!   rZ   r8   )encoding)
isinstancestr	TypeErrorrx   typelistRuntimeErrorr   r   r	   r   r)   r2   rL   ru   r   rD   isfiler   rH   rK   r   r^   tokenizedetect_encodingreadline)r"   r2   entryZpackage_directoryr   Zpackage_file_nameZ	file_pathr\   r   	file_namer   rW   r#   r#   r$   rQ      sJ   


rQ   c                 C   r   r   )	importlibreload)rp   r#   r#   r$   r   3  r&   r   c                 C   s"   	 zt | W S  ty   Y d S w r   )r   rK   r!   r#   r#   r$   r   >  s   
r   c                 C   s2   	 dd l }|j| |}|jj| ||d}t|S )Nr   )r"   rg   origin)importlib.machineryr   ExtensionFileLoader
ModuleSpecr   )r"   r2   rW   r   rg   ro   r#   r#   r$   r~   K  s   r~   r   ):_impr   r   r   r   r   r   r   r	   r
   r   rK   Zimportlib._bootstrapr   r   r   r   Zimportlib._bootstrap_externalr   r   r   r   rL   r)   r   r   r.   warnDeprecationWarningZSEARCH_ERRORr@   rA   r9   ZPY_RESOURCEr   r   r   ZPY_CODERESOURCEZIMP_HOOKr%   r(   r,   r1   r4   rH   rI   rU   rj   rc   rq   rr   rs   rz   r   rQ   r   r   r~   r#   r#   r#   r$   <module>   sd    ,
	


#4