
    c*                         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 i Z
da ej                         Zd Zd Zd Zd	 Zd
 Z G d d      Z G d d      Z G d d      Zd Zy)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_specFc                       fd}|S )Nc                     j                  d      \  }}|j                  d      }t        |       t        j                  |   }|D ]  }t	        ||      }  ||       S )N:.)split
__import__sysmodulesgetattr)modulemodule_namefunctionattrscallbackattrnames         0/usr/lib/python3/dist-packages/wrapt/importer.pyimport_hookz4_create_import_hook_from_string.<locals>.import_hook$   s_     $

3Xs#;;;{+ 	/Dx.H	/     )r   r   s   ` r   _create_import_hook_from_stringr   #   s      r   c                 t   t        | t              rt        |       } t        5  t        s*dat
        j                  j                  dt                      t
        j                  j                  |d       }|%t        j                  |g       j                  |        d d d        	 | |       y y # 1 sw Y   xY w)NTr   )
isinstancestring_typesr   _post_import_hooks_lock_post_import_hooks_initr   	meta_pathinsertImportHookFinderr   get_post_import_hooks
setdefaultappend)hookr   r   s      r   register_post_import_hookr'   .   s     $%.t4	  A '&*#MM  $4$67
 t,>))$3::4@!A. V /A As   A8B..B7c                       fd}|S )Nc                     t        j                         t        j                  j                     }j                  D ]  }t        ||      }  ||       S N)r
   r   r   r   r   r   )r   r   r   
entrypoints      r   r   z8_create_import_hook_from_entrypoint.<locals>.import_hookR   sQ    :))*;;z556$$ 	/Dx.H	/r   r   )r+   r   s   ` r   #_create_import_hook_from_entrypointr,   Q   s      r   c                     	 dd l }|j                  |       D ]#  }t        |      }t	        ||j
                         % y # t        $ r Y y w xY w)Nr   )group)pkg_resourcesImportErroriter_entry_pointsr,   r'   r   )r.   r/   r+   r   s       r   discover_post_import_hooksr2   Z   sU     $55E5B =
6zB!(JOO<=  s   ? 	A
Ac                     t        | dd       }t        5  t        j                  |d      }d d d        D ]
  } ||         y # 1 sw Y   xY w)N__name__r   )r   r   r#   pop)r   r   hooksr&   s       r   notify_module_loadedr7   i   sR    6:t,D	  1"&&tR01  V1 1s   AAc                       e Zd Zd Zy)_ImportHookLoaderc                 B    t         j                  |   }t        |       |S r*   )r   r   r7   selffullnamer   s      r   load_modulez_ImportHookLoader.load_module}   s    X&V$r   N)r4   
__module____qualname__r>   r   r   r   r9   r9   {   s    r   r9   c                   *    e Zd Zd Zd Zd Zd Zd Zy)_ImportHookChainedLoaderc                     || _         t        |d      r| j                  | _        t        |d      r| j                  | _        t        |d      r| j                  | _        y y )Nr>   create_moduleexec_module)loaderhasattr_load_moduler>   _create_modulerD   _exec_modulerE   )r<   rF   s     r   __init__z!_ImportHookChainedLoader.__init__   sV    6=)!..$
6?+#22$
6=)!..$
 *r   c                     G d d      }t        |d|      d | fv r	 | j                  |_        t        |dd       6t        |j                  dd       | u r| j                  |j                  _        y y y # t        $ r Y Ow xY w)Nc                       e Zd Zy)7_ImportHookChainedLoader._set_loader.<locals>.UNDEFINEDN)r4   r?   r@   r   r   r   	UNDEFINEDrN      s    r   rO   
__loader____spec__rF   )r   rF   rP   AttributeErrorrQ   )r<   r   rO   s      r   _set_loaderz$_ImportHookChainedLoader._set_loader   s     	6<3d|C$(KK! FJ-9FOOXt<D%)[[FOO" E : " s   A2 2	A>=A>c                 t    | j                   j                  |      }| j                  |       t        |       |S r*   )rF   r>   rS   r7   r;   s      r   rH   z%_ImportHookChainedLoader._load_module   s1    ((2 V$r   c                 8    | j                   j                  |      S r*   )rF   rD   )r<   specs     r   rI   z'_ImportHookChainedLoader._create_module   s    {{((..r   c                 r    | j                  |       | j                  j                  |       t        |       y r*   )rS   rF   rE   r7   )r<   r   s     r   rJ   z%_ImportHookChainedLoader._exec_module   s*     'V$r   N)r4   r?   r@   rK   rS   rH   rI   rJ   r   r   r   rB   rB      s    /10/%r   rB   c                   "    e Zd Zd ZddZddZy)r!   c                     i | _         y r*   )in_progress)r<   s    r   rK   zImportHookFinder.__init__   s
    r   Nc                    t         5  |t        vr
	 d d d        y 	 d d d        || j                  v ry d| j                  |<   	 t        s"t	        |       t               | j                  |= S t        t        |      dd       }|r(t        |t              st        |      | j                  |= S | j                  |= y # 1 sw Y   xY w# | j                  |= w xY wNTrF   )	r   r#   rZ   r   r
   r9   r   r   rB   )r<   r=   pathrF   s       r   find_modulezImportHookFinder.find_module   s    
 % 	11	 	1	 t'''%)"	+ 8$(*"   * !8!4hE*V5M"N3F;   *  *_	 	^   *s   
B8C *2C 8CCc                 R   t         5  |t        vr
	 d d d        y 	 d d d        || j                  v ry d| j                  |<   	 t        |      }t	        |dd       }|r t        |t              st        |      |_        || j                  |= S # 1 sw Y   qxY w# | j                  |= w xY wr\   )r   r#   rZ   r   r   r   rB   rF   )r<   r=   r]   targetrV   rF   s         r   r   zImportHookFinder.find_spec   s     % 	11	 	1	 t'''%)"	+ X&DT8T2Fj1IJ6v>   *?	 	>   *s   
B;B BB&r*   )NN)r4   r?   r@   rK   r^   r   r   r   r   r!   r!      s    4+l(+r   r!   c                       fd}|S )Nc                      t        |        | S r*   )r'   )r&   r   s    r   registerzwhen_imported.<locals>.register"  s    !$-r   r   )r   rc   s   ` r   when_importedrd   !  s     Or   )__doc__r   	threadingversion_infoPY2
basestringr   r   strimportlib.utilr#   r   RLockr   r   r'   r,   r2   r7   r9   rB   r!   rd   r   r   r   <module>rm      s   
  	qQ;LI4L(   ))//+ 	F=$ 4% 4%lc+ c+Pr   