o
    DRh*                     @   s   d Z ddlZddlZejd dkZerefZdZn	efZddl	mZ ddl
mZ i Zdae Zdd	 Zd
d Zdd Zdd Zdd ZG dd dZG dd deZG dd dZdd ZdS )zThis module implements a post import hook mechanism styled after what is
described in PEP-369. Note that it doesn't cope with modules being reloaded.

    N   )	find_spec   )ObjectProxyFc                        fdd}|S )Nc                    sF     d\}}| d}t| tj| }|D ]}t||}q|| S )N:.)split
__import__sysmodulesgetattr)modulemodule_namefunctionattrscallbackattrname P/home/air/sanwanet/backup_V2/venv/lib/python3.10/site-packages/wrapt/importer.pyimport_hook&   s   

z4_create_import_hook_from_string.<locals>.import_hookr   )r   r   r   r   r   _create_import_hook_from_string%   s   r   c                 C   s   t | tr	t| } t( tsdatjdt  tj	
|d }|d u r,t|g |  W d    n1 s6w   Y  |d urE| | d S d S )NTr   )
isinstancestring_typesr   _post_import_hooks_lock_post_import_hooks_initr   	meta_pathinsertImportHookFinderr   get_post_import_hooks
setdefaultappend)hookr   r   r   r   r   register_post_import_hook0   s   
r&   c                    r   )Nc                    s4   t  j tj j } jD ]}t||}q|| S N)r
   r   r   r   r   r   )r   r   r   
entrypointr   r   r   T   s
   

z8_create_import_hook_from_entrypoint.<locals>.import_hookr   )r)   r   r   r(   r   #_create_import_hook_from_entrypointS   s   r*   c                 C   sL   zdd l }W n
 ty   Y d S w |j| dD ]}t|}t||j qd S )Nr   )group)pkg_resourcesImportErroriter_entry_pointsr*   r&   r   )r+   r,   r)   r   r   r   r   discover_post_import_hooks\   s   r/   c                 C   sR   t | dd }t t|d}W d    n1 sw   Y  |D ]}||  q d S )N__name__r   )r   r   r"   pop)r   r   hooksr%   r   r   r   notify_module_loadedk   s   
r3   c                   @   s   e Zd Zdd ZdS )_ImportHookLoaderc                 C   s   t j| }t| |S r'   )r   r   r3   selffullnamer   r   r   r   load_module   s   
z_ImportHookLoader.load_moduleN)r0   
__module____qualname__r8   r   r   r   r   r4   }   s    r4   c                       s<   e Zd Z fddZdd Zdd Zdd Zd	d
 Z  ZS )_ImportHookChainedLoaderc                    s`   t t| | t|dr| d| j t|dr | d| j t|dr.| d| j d S d S )Nr8   create_moduleexec_module)superr;   __init__hasattr__self_setattr___self_load_module_self_create_module_self_exec_module)r6   loader	__class__r   r   r?      s   


z!_ImportHookChainedLoader.__init__c                 C   sz   G dd d}t |d|d | fv r!z| j|_W n	 ty    Y nw t |dd d ur9t |jdd | u r;| j|j_d S d S d S )Nc                   @   s   e Zd ZdS )z<_ImportHookChainedLoader._self_set_loader.<locals>.UNDEFINEDN)r0   r9   r:   r   r   r   r   	UNDEFINED   s    rH   
__loader____spec__rE   )r   __wrapped__rI   AttributeErrorrJ   rE   )r6   r   rH   r   r   r   _self_set_loader   s   z)_ImportHookChainedLoader._self_set_loaderc                 C   s"   | j |}| | t| |S r'   )rK   r8   rM   r3   r5   r   r   r   rB      s   
z*_ImportHookChainedLoader._self_load_modulec                 C   s   | j |S r'   )rK   r<   )r6   specr   r   r   rC      s   z,_ImportHookChainedLoader._self_create_modulec                 C   s"   |  | | j| t| d S r'   )rM   rK   r=   r3   )r6   r   r   r   r   rD      s   
z*_ImportHookChainedLoader._self_exec_module)	r0   r9   r:   r?   rM   rB   rC   rD   __classcell__r   r   rF   r   r;      s    

r;   c                   @   s(   e Zd Zdd ZdddZd	ddZdS )
r    c                 C   s
   i | _ d S r'   )in_progress)r6   r   r   r   r?      s   
zImportHookFinder.__init__Nc                 C   s   t  |tvr	 W d    d S W d    n1 sw   Y  || jv r&d S d| j|< z4ts:t| t W | j|= S tt|dd }|rRt|tsYt|W | j|= S W | j|= d S W | j|= d S | j|= w NTrE   )	r   r"   rP   r   r
   r4   r   r   r;   )r6   r7   pathrE   r   r   r   find_module   s,   

	

zImportHookFinder.find_modulec                 C   s   t  |tvr	 W d    d S W d    n1 sw   Y  || jv r&d S d| j|< zt|}t|dd }|rBt|tsBt||_|W | j|= S | j|= w rQ   )r   r"   rP   r   r   r   r;   rE   )r6   r7   rR   targetrN   rE   r   r   r   r      s    	


zImportHookFinder.find_specr'   )NN)r0   r9   r:   r?   rS   r   r   r   r   r   r       s    
6r    c                    r   )Nc                    s   t |   | S r'   )r&   )r%   r   r   r   register$  s   
zwhen_imported.<locals>.registerr   )r   rU   r   r   r   when_imported#  s   rV   )__doc__r   	threadingversion_infoPY2
basestringr   r   strimportlib.util	__wrapt__r   r"   r   RLockr   r   r&   r*   r/   r3   r4   r;   r    rV   r   r   r   r   <module>   s,    	#	6h