
    hUS                        S r SSKr\R                  S   S:H  r\(       a	  \4rSS jrO\4rSSKr\	" \S5      rCSSK
Jr  SSKJr  SSKJrJr  S	S
KJr   SSKJr  S	SKJrJrJrJr   " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r \ r!SSS\4S jr"S r#\" 5       \#l$        g! \ a     Nqf = f)zoThis module implements decorators for implementing other decorators
as well as some commonly used decorators.

    N   c                     Uc3  [         R                  " S5      nUR                  nUc  UR                  nAOUc  Un[	        S5        g)zExecute code in a namespace.N   zexec _code_ in _globs_, _locs_)sys	_getframe	f_globalsf_localsexec)_code__globs__locs_frames       J/home/james-whalen/.local/lib/python3.13/site-packages/wrapt/decorators.pyexec_r      sB    ?MM!$EooG~^F12    r
   )partial)isclass)LockRLockr   )formatargspec)	signature)FunctionWrapperBoundFunctionWrapperObjectProxyCallableObjectProxyc                   x   ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
SrU =r$ )	_AdapterFunctionCode5   c                 8   > [         [        U ]  U5        X l        g N)superr   __init___self_adapter_code)selfwrapped_codeadapter_code	__class__s      r   r"   _AdapterFunctionCode.__init__7   s    "D2<@".r   c                 .    U R                   R                  $ r    )r#   co_argcountr$   s    r   r*    _AdapterFunctionCode.co_argcount;       &&222r   c                 .    U R                   R                  $ r    )r#   co_coder+   s    r   r/   _AdapterFunctionCode.co_code?   s    &&...r   c                 .    U R                   R                  $ r    )r#   co_flagsr+   s    r   r2   _AdapterFunctionCode.co_flagsC   s    &&///r   c                 .    U R                   R                  $ r    )r#   co_kwonlyargcountr+   s    r   r5   &_AdapterFunctionCode.co_kwonlyargcountG   s    &&888r   c                 .    U R                   R                  $ r    )r#   co_varnamesr+   s    r   r8    _AdapterFunctionCode.co_varnamesK   r-   r   )r#   )__name__
__module____qualname____firstlineno__r"   propertyr*   r/   r2   r5   r8   __static_attributes____classcell__r'   s   @r   r   r   5   sl    / 3 3 / / 0 0 9 9 3 3r   r   c                      ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       r\S 5       r	\
(       a
  \r\rSrU =r$ SrU =r$ )_AdapterFunctionSurrogateO   c                 8   > [         [        U ]  U5        X l        g r    )r!   rC   r"   _self_adapter)r$   wrappedadapterr'   s      r   r"   "_AdapterFunctionSurrogate.__init__Q   s    '7@$r   c                 j    [        U R                  R                  U R                  R                  5      $ r    )r   __wrapped____code__rF   r+   s    r   rL   "_AdapterFunctionSurrogate.__code__U   s,    #D$4$4$=$=""++- 	-r   c                 .    U R                   R                  $ r    )rF   __defaults__r+   s    r   rO   &_AdapterFunctionSurrogate.__defaults__Z   s    !!...r   c                 .    U R                   R                  $ r    )rF   __kwdefaults__r+   s    r   rR   (_AdapterFunctionSurrogate.__kwdefaults__^   s    !!000r   c                 t    S[        5       ;  a  U R                  R                  $ [        U R                  5      $ Nr   )globalsrF   __signature__r   r+   s    r   rW   '_AdapterFunctionSurrogate.__signature__b   s/    gi'%%333T//00r   )rF   )r:   r;   r<   r=   r"   r>   rL   rO   rR   rW   PY2	func_codefunc_defaultsr?   r@   rA   s   @r   rC   rC   O   sl    % - - / / 1 1 1 1 	$ r   rC   c                   L    \ rS rSr\S 5       r\S 5       r\(       a  \rSr	gSr	g)_BoundAdapterWrapperm   c                 j    [        U R                  R                  U R                  R                  5      $ r    )rC   rK   __func___self_parentrF   r+   s    r   r`   _BoundAdapterWrapper.__func__o   s,    ()9)9)B)B!!//1 	1r   c                     S[        5       ;  a  U R                  R                  $ [        U R                  R
                  5      $ rU   )rV   rK   rW   r   ra   rF   r+   s    r   rW   "_BoundAdapterWrapper.__signature__t   s5    gi'##111T..<<==r    N)
r:   r;   r<   r=   r>   r`   rW   rY   im_funcr?   re   r   r   r]   r]   m   s7    1 1 > >  r   r]   c                      ^  \ rS rSr\rU 4S jr\S 5       r\S 5       r	\S 5       r
\(       a  \r\	r\S 5       rSrU =r$ )AdapterWrapper~   c                    > UR                  S5      n[        [        U ]  " U0 UD6  [	        U R
                  U5      U l        X0l        g )NrH   )popr!   rh   r"   rC   rK   _self_surrogaterF   )r$   argskwargsrH   r'   s       r   r"   AdapterWrapper.__init__   sC    **Y'nd,d=f=8  ' +$r   c                 .    U R                   R                  $ r    )rl   rL   r+   s    r   rL   AdapterWrapper.__code__   s    ##,,,r   c                 .    U R                   R                  $ r    )rl   rO   r+   s    r   rO   AdapterWrapper.__defaults__   s    ##000r   c                 .    U R                   R                  $ r    )rl   rR   r+   s    r   rR   AdapterWrapper.__kwdefaults__   s    ##222r   c                 .    U R                   R                  $ r    )rl   rW   r+   s    r   rW   AdapterWrapper.__signature__   s    ##111r   )rF   rl   )r:   r;   r<   r=   r]   __bound_function_wrapper__r"   r>   rL   rO   rR   rY   rZ   r[   rW   r?   r@   rA   s   @r   rh   rh   ~   sk    !5% - - 1 1 3 3 	$2 2r   rh   c                       \ rS rSrS rSrg)AdapterFactory   c                     [        5       er    )NotImplementedErrorr$   rG   s     r   __call__AdapterFactory.__call__   s    !##r   re   N)r:   r;   r<   r=   r   r?   re   r   r   rz   rz      s    $r   rz   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )DelegatedAdapterFactory   c                 6   > [         [        U ]  5         Xl        g r    )r!   r   r"   factory)r$   r   r'   s     r   r"    DelegatedAdapterFactory.__init__   s    %t57r   c                 $    U R                  U5      $ r    r   r~   s     r   r    DelegatedAdapterFactory.__call__   s    ||G$$r   r   )r:   r;   r<   r=   r"   r   r?   r@   rA   s   @r   r   r      s    % %r   r   c                 l   ^ ^^^^ T b  SU4S jjmUUUU 4S jnT" T U[         S9$ [        [         TTTS9$ )Nc                 \  > U(       a  [        U[        5      (       a  U" U 5      n[        U5      (       dg  0 n0 n[        U[        5      (       d!  [	        U5      S:X  a
  US   nUS S n[        U6 n[        SR                  U5      XD5        US   nU(       a  XSl        [        XX#S9$ T" XUS9$ )N   zdef adapter{}: passrH   )rG   wrapperenabledrH   )rG   r   r   )

isinstancerz   callablestring_typeslenr   r   format__annotations__rh   )rG   r   r   rH   nsannotationsproxys         r   _builddecorator.<locals>._build   s    g~66%g.G((B #%K%g|<<w<1,*1"+K&-crlG"/"9/66w?H mG #2=/%g ': : 7KKr   c                 h  >^ ^ Uc#  [        T 5      (       a  U(       d  UU	U
UU 4S jnU$ US   nT
n[        U5      [        L a  U(       d  U$ S nUc  [        T 5      (       a  T " 5       nOATnO>[        U5      (       a  TR                  S U5      nOTR                  U[        U5      5      nT" XWUT	5      $ )Nc                 f   > Tn[        U5      [        L a  U(       d  U $ S nT" S0 TD6nT" XUT5      $ )Nre   )typebool)target_wrapped_enabledtarget_wrapperr   rH   r   rn   rG   s      r   _capture-decorator.<locals>._wrapper.<locals>._capture  sI      'HH~-'#11#' &-%6v%6N ".$g/ /r   r   )r   r   r   __get__)rG   instancerm   rn   r   r   r   r   r   rH   r   r   s   `  `    r   _wrapperdecorator.<locals>._wrapper   s    * GG$4$4T
/ /4  
 "!WN HH~%))
 7##, &-YN$ &-N 8$$. &-__T8%DN0 &-__XtH~%NN .(GLLr   )rH   )r   rH   r   NN)	decoratorr   )r   r   rH   r   r   r   s   ```` @r   r   r      sJ    0 %	L\g	M g	M` gx;; y'7 	r   c                    ^^ [        U S5      (       a:  [        U S5      (       a)  U m[        U4S j5       n " U4S jS[        5      nU" US9$ S mU4S jn " U4S	 jS
[        5      nU" XS9$ )Nacquirereleasec                 N   > T   U " U0 UD6sS S S 5        $ ! , (       d  f       g = fr    re   )rG   r   rm   rn   locks       r   _synchronized#synchronized.<locals>._synchronized  s    
 // s   
$c                   .   > \ rS rSrU 4S jrU 4S jrSrg)'synchronized.<locals>._PartialDecoratori  c                 (   > TR                  5         T$ r    )r   )r$   r   s    r   	__enter__1synchronized.<locals>._PartialDecorator.__enter__  s    r   c                 &   > TR                  5         g r    )r   )r$   rm   r   s     r   __exit__0synchronized.<locals>._PartialDecorator.__exit__  s    r   re   Nr:   r;   r<   r=   r   r   r?   )r   s   r   _PartialDecoratorr     s     r   r   )rG   c                    [        U 5      R                  SS 5      nUcP  [        R                     [        U 5      R                  SS 5      nUc  [	        5       n[        U SU5        S S S 5        U$ U$ ! , (       d  f       U$ = f)N_synchronized_lock)varsgetsynchronized_synchronized_meta_lockr   setattr)contextr   s     r   r   (synchronized.<locals>._synchronized_lock  s}     G}  !5t<< 55 G}(()=tD< 7DG%94@ 6 t 65 s   6A11
B c                 d   > T" Ub  UOU 5         U " U0 UD6sS S S 5        $ ! , (       d  f       g = fr    re   )rG   r   rm   rn   r   s       r   _synchronized_wrapper+synchronized.<locals>._synchronized_wrapper	  s.    
  H,@gND+F+ ONNs   !
/c                   (   > \ rS rSrU 4S jrS rSrg)%synchronized.<locals>._FinalDecoratori  c                 ~   > T" U R                   5      U l        U R                  R                  5         U R                  $ r    )rK   
_self_lockr   )r$   r   s    r   r   /synchronized.<locals>._FinalDecorator.__enter__  s/    01A1ABDOOO##%??"r   c                 8    U R                   R                  5         g r    )r   r   )r$   rm   s     r   r   .synchronized.<locals>._FinalDecorator.__exit__  s    OO##%r   )r   Nr   )r   s   r   _FinalDecoratorr     s    	#
	&r   r   )rG   r   )hasattrr   r   r   )rG   r   r   r   r   r   r   s        @@r   r   r     su     w	""ww	'B'B 		0 
	0	 3 	 !77@,&/ & 7JJr   r   )%__doc__r   version_inforY   
basestringr   r   strbuiltinsgetattr	functoolsr   inspectr   	threadingr   r   	argumentsr   r   ImportError	__wrapt__r   r   r   r   r   rC   r]   rh   objectrz   r   adapter_factoryr   r   r   re   r   r   <module>r      s   
 	qQ;L
3 4LHf%E   ! $	! 3. 34% 3 %</ "2_ 2>$V $%n % * D$o C^[Kz (,v $i  		s   C CC