a
    QSic&                     @   s   d Z ddlZddlZejd dkZer2e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eed
d Zdd Zdd Zeedd ZG dd dZG dd d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   )synchronizedFc                    s    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 J/var/www/html/django/DPS/env/lib/python3.9/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s*datjdt  t	|d }|d u rrtj
	|d }|d urfg t|< | | q| gt|< n*|g krtj
| }| | nt| |  d S )NTr   )
isinstancestring_typesr   _post_import_hooks_initr
   	meta_pathinsertImportHookFinder_post_import_hooksgetr   append)hookr   hooksr   r   r   r   register_post_import_hook0   s     



r$   c                    s    fdd}|S )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   h   s
    

z8_create_import_hook_from_entrypoint.<locals>.import_hookr   )r'   r   r   r&   r   #_create_import_hook_from_entrypointg   s    r(   c                 C   sL   zdd l }W n ty    Y d S 0 |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_hooksp   s    r-   c                 C   s:   t | dd }t|d }|r6g t|< |D ]}||  q(d S )N__name__)r   r   r    )r   r   r#   r"   r   r   r   notify_module_loaded   s    r/   c                   @   s   e Zd Zdd ZdS )_ImportHookLoaderc                 C   s   t j| }t| |S r%   )r
   r   r/   selffullnamer   r   r   r   load_module   s    
z_ImportHookLoader.load_moduleN)r.   
__module____qualname__r4   r   r   r   r   r0      s   r0   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_ImportHookChainedLoaderc                 C   s@   || _ t|dr| j| _t|dr*| j| _t|dr<| j| _d S )Nr4   create_moduleexec_module)loaderhasattr_load_moduler4   _create_moduler8   _exec_moduler9   )r2   r:   r   r   r   __init__   s    


z!_ImportHookChainedLoader.__init__c                 C   s   | j |}t| |S r%   )r:   r4   r/   r1   r   r   r   r<      s    z%_ImportHookChainedLoader._load_modulec                 C   s   | j |S r%   )r:   r8   )r2   specr   r   r   r=      s    z'_ImportHookChainedLoader._create_modulec                 C   s   | j | t| d S r%   )r:   r9   r/   )r2   r   r   r   r   r>      s    z%_ImportHookChainedLoader._exec_moduleN)r.   r5   r6   r?   r<   r=   r>   r   r   r   r   r7      s   
	r7   c                   @   s0   e Zd Zdd ZeedddZd	ddZdS )
r   c                 C   s
   i | _ d S r%   )in_progress)r2   r   r   r   r?      s    zImportHookFinder.__init__Nc                 C   s   |t vrd S || jv rd S d| j|< zXtsBt| t W | j|= S tt|dd }|rrt|tsrt|W | j|= S W | j|= n
| j|= 0 d S NTr:   )r   rA   r   r	   r0   r   r   r7   )r2   r3   pathr:   r   r   r   find_module   s"    	

	zImportHookFinder.find_modulec                 C   sn   |t vrd S || jv rd S d| j|< z:t|}t|dd }|rRt|tsRt||_|W | j|= S | j|= 0 d S rB   )r   rA   r   r   r   r7   r:   )r2   r3   rC   targetr@   r:   r   r   r   r      s    		


zImportHookFinder.find_spec)N)NN)r.   r5   r6   r?   r   _post_import_hooks_lockrD   r   r   r   r   r   r      s   5r   c                    s    fdd}|S )Nc                    s   t |   | S r%   )r$   )r"   r   r   r   register  s    
zwhen_imported.<locals>.registerr   )r   rG   r   r   r   when_imported  s    rH   )__doc__r
   	threadingversion_infoPY2
basestringr   r   strimportlib.util
decoratorsr   r   r   RLockrF   r   r$   r(   r-   r/   r0   r7   r   rH   r   r   r   r   <module>   s.   	
6	
g