
    hBe&                         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j                         Zd Z ee      d	        Zd
 Zd Z ee      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_spec   )synchronizedFc                       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         .lib/python3.12/site-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              rt        |       } t        s*dat        j
                  j                  dt                      t        j                  |d       }|?t        j                  j                  |d       }|g t        |<    | |       y | gt        |<   y |g k(  rt        j                  |   } | |       y t        |   j                  |        y )NTr   )
isinstancestring_typesr   _post_import_hooks_initr   	meta_pathinsertImportHookFinder_post_import_hooksgetr   append)hookr   hooksr   s       r   register_post_import_hookr(   0   s    
 $%.t4 #"&Q 0 23
 ""4.E} t,')t$L )-vt$	"
 T"V 	4 ''-r   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_hookh   sQ    :))*;;z556$$ 	/Dx.H	/r   r   )r,   r   s   ` r   #_create_import_hook_from_entrypointr-   g   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/   r0   r,   r   s       r   discover_post_import_hooksr3   p   sU     $55E5B =
6zB!(JOO<=  s   ? 	A
Ac                     t        | dd       }t        j                  |d       }|rg t        |<   |D ]
  } ||         y y )N__name__)r   r#   r$   )r   r   r'   r&   s       r   notify_module_loadedr6      sK    6:t,D""4.E#%4  	DL	 r   c                       e Zd Zd Zy)_ImportHookLoaderc                 B    t         j                  |   }t        |       |S r+   )r   r   r6   selffullnamer   s      r   load_modulez_ImportHookLoader.load_module   s    X&V$r   N)r5   
__module____qualname__r=   r   r   r   r8   r8      s    r   r8   c                   $    e 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_modulerC   _exec_modulerD   )r;   rE   s     r   __init__z!_ImportHookChainedLoader.__init__   sV    6=)!..$
6?+#22$
6=)!..$
 *r   c                 R    | j                   j                  |      }t        |       |S r+   )rE   r=   r6   r:   s      r   rG   z%_ImportHookChainedLoader._load_module   s#    ((2V$r   c                 8    | j                   j                  |      S r+   )rE   rC   )r;   specs     r   rH   z'_ImportHookChainedLoader._create_module   s    {{((..r   c                 P    | j                   j                  |       t        |       y r+   )rE   rD   r6   )r;   r   s     r   rI   z%_ImportHookChainedLoader._exec_module   s    'V$r   N)r5   r>   r?   rJ   rG   rH   rI   r   r   r   rA   rA      s    //%r   rA   c                   8    e Zd Zd Z ee      dd       ZddZy)r"   c                     i | _         y r+   )in_progress)r;   s    r   rJ   zImportHookFinder.__init__   s
    r   Nc                 b   |t         vry || 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 # | j                  |= w xY wNTrE   )r#   rQ   r   r   r8   r   r   rA   )r;   r<   pathrE   s       r   find_modulezImportHookFinder.find_module   s     -- t'''%)"	+ 8$(*"   * !8!4hE*V5M"N3F;   *  *  *s   B 2B B.c                    |t         vry || j                  v ry d| j                  |<   	 t        |      }t        |dd       }|r t	        |t
              st        |      |_        || j                  |= S # | j                  |= w xY wrS   )r#   rQ   r   r   r   rA   rE   )r;   r<   rT   targetrM   rE   s         r   r   zImportHookFinder.find_spec   s     -- t'''%)"	+ X&DT8T2Fj1IJ6v>   *  *s   ;A2 2Br+   )NN)r5   r>   r?   rJ   r   _post_import_hooks_lockrU   r   r   r   r   r"   r"      s'     )*3+ +3+j'+r   r"   c                       fd}|S )Nc                      t        |        | S r+   )r(   )r&   r   s    r   registerzwhen_imported.<locals>.register  s    !$-r   r   )r   r[   s   ` r   when_importedr\     s     Or   )__doc__r   	threadingversion_infoPY2
basestringr   r   strimportlib.util
decoratorsr   r#   r   RLockrX   r   r(   r-   r3   r6   r8   rA   r"   r\   r   r   r   <module>rf      s   
  	qQ;LI4L( $   ))//+ 	 %&2. '2.l= %& ' % %8b+ b+Nr   