
    gUS                        d Z ddlZej                  d   dk(  ZerefZddZnefZddlZ e	ed      Z[ddl
mZ ddlmZ ddlmZmZ d	d
lmZ 	 ddlmZ d	dlmZmZmZmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z e Z!dddefdZ"d Z# e       e#_$        y# e$ r Y ow xY w)zoThis module implements decorators for implementing other decorators
as well as some commonly used decorators.

    N   c                     |1t        j                  d      }|j                  }||j                  }~n||}t	        d       y)zExecute code in a namespace.N   zexec _code_ in _globs_, _locs_)sys	_getframe	f_globalsf_localsexec)_code__globs__locs_frames       E/var/www/openai/venv/lib/python3.12/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                   n     e Zd Z fdZed        Zed        Zed        Zed        Zed        Z	 xZ
S )_AdapterFunctionCodec                 :    t         t        |   |       || _        y N)superr   __init___self_adapter_code)selfwrapped_codeadapter_code	__class__s      r   r!   z_AdapterFunctionCode.__init__7   s    "D2<@".r   c                 .    | j                   j                  S r   )r"   co_argcountr#   s    r   r(   z _AdapterFunctionCode.co_argcount;       &&222r   c                 .    | j                   j                  S r   )r"   co_coder)   s    r   r,   z_AdapterFunctionCode.co_code?   s    &&...r   c                 .    | j                   j                  S r   )r"   co_flagsr)   s    r   r.   z_AdapterFunctionCode.co_flagsC   s    &&///r   c                 .    | j                   j                  S r   )r"   co_kwonlyargcountr)   s    r   r0   z&_AdapterFunctionCode.co_kwonlyargcountG   s    &&888r   c                 .    | j                   j                  S r   )r"   co_varnamesr)   s    r   r2   z _AdapterFunctionCode.co_varnamesK   r*   r   )__name__
__module____qualname__r!   propertyr(   r,   r.   r0   r2   __classcell__r&   s   @r   r   r   5   sl    / 3 3 / / 0 0 9 9 3 3r   r   c                   r     e Zd Z fdZed        Zed        Zed        Zed        Ze	reZ
eZ xZS  xZS )_AdapterFunctionSurrogatec                 :    t         t        |   |       || _        y r   )r    r:   r!   _self_adapter)r#   wrappedadapterr&   s      r   r!   z"_AdapterFunctionSurrogate.__init__Q   s    '7@$r   c                 j    t        | j                  j                  | j                  j                        S r   )r   __wrapped____code__r<   r)   s    r   rA   z"_AdapterFunctionSurrogate.__code__U   s,    #D$4$4$=$=""++- 	-r   c                 .    | j                   j                  S r   )r<   __defaults__r)   s    r   rC   z&_AdapterFunctionSurrogate.__defaults__Z   s    !!...r   c                 .    | j                   j                  S r   )r<   __kwdefaults__r)   s    r   rE   z(_AdapterFunctionSurrogate.__kwdefaults__^   s    !!000r   c                 p    dt               vr| j                  j                  S t        | j                        S Nr   )globalsr<   __signature__r   r)   s    r   rI   z'_AdapterFunctionSurrogate.__signature__b   s/    gi'%%333T//00r   )r3   r4   r5   r!   r6   rA   rC   rE   rI   PY2	func_codefunc_defaultsr7   r8   s   @r   r:   r:   O   sl    % - - / / 1 1 1 1 	$ r   r:   c                   6    e Zd Zed        Zed        ZereZyy)_BoundAdapterWrapperc                 j    t        | j                  j                  | j                  j                        S r   )r:   r@   __func___self_parentr<   r)   s    r   rP   z_BoundAdapterWrapper.__func__o   s,    ()9)9)B)B!!//1 	1r   c                     dt               vr| j                  j                  S t        | j                  j
                        S rG   )rH   r@   rI   r   rQ   r<   r)   s    r   rI   z"_BoundAdapterWrapper.__signature__t   s5    gi'##111T..<<==r   N)r3   r4   r5   r6   rP   rI   rJ   im_func r   r   rN   rN   m   s7    1 1 > >  r   rN   c                   n     e Zd ZeZ fdZed        Zed        Zed        Z	e
reZeZed        Z xZS )AdapterWrapperc                     |j                  d      }t        t        |   |i | t	        | j
                  |      | _        || _        y )Nr>   )popr    rV   r!   r:   r@   _self_surrogater<   )r#   argskwargsr>   r&   s       r   r!   zAdapterWrapper.__init__   sE    **Y'nd,d=f=8  ' +$r   c                 .    | j                   j                  S r   )rY   rA   r)   s    r   rA   zAdapterWrapper.__code__   s    ##,,,r   c                 .    | j                   j                  S r   )rY   rC   r)   s    r   rC   zAdapterWrapper.__defaults__   s    ##000r   c                 .    | j                   j                  S r   )rY   rE   r)   s    r   rE   zAdapterWrapper.__kwdefaults__   s    ##222r   c                 .    | j                   j                  S r   )rY   rI   r)   s    r   rI   zAdapterWrapper.__signature__   s    ##111r   )r3   r4   r5   rN   __bound_function_wrapper__r!   r6   rA   rC   rE   rJ   rK   rL   rI   r7   r8   s   @r   rV   rV   ~   sk    !5% - - 1 1 3 3 	$2 2r   rV   c                       e Zd Zd Zy)AdapterFactoryc                     t               r   )NotImplementedErrorr#   r=   s     r   __call__zAdapterFactory.__call__   s    !##r   N)r3   r4   r5   rf   rT   r   r   rb   rb      s    $r   rb   c                   $     e Zd Z fdZd Z xZS )DelegatedAdapterFactoryc                 8    t         t        |           || _        y r   )r    rh   r!   factory)r#   rj   r&   s     r   r!   z DelegatedAdapterFactory.__init__   s    %t57r   c                 $    | j                  |      S r   )rj   re   s     r   rf   z DelegatedAdapterFactory.__call__   s    ||G$$r   )r3   r4   r5   r!   rf   r7   r8   s   @r   rh   rh      s    %r   rh   c                 p      dfd	 fd}  |t               S t        t               S )Nc                 >   |rt        |t              r ||       }t        |      s^i }i }t        |t              s t	        |      dk(  r
|d   }|d d }t        | }t        dj                  |      ||       |d   }|r||_        t        | |||      S  | ||      S )N   zdef adapter{}: passr>   )r=   wrapperenabledr>   )r=   rp   rq   )

isinstancerb   callablestring_typeslenr   r   format__annotations__rV   )r=   rp   rq   r>   nsannotationsproxys         r   _buildzdecorator.<locals>._build   s    g~6%g.G(B #%K%g|<w<1,*1"+K&-crlG"/"9/66w?RH mG #2=/%gw ': : '7KKr   c                 0    |t               r|s	
 fd}|S |d   }
}t        |      t        u r|s|S d }|t               r         }n<}n9t        |      rj                  d |      }nj                  |t        |            } |||	      S )Nc                 \    }t        |      t        u r|s| S d } di } | ||      S )NrT   )typebool)target_wrapped_enabledtarget_wrapperr{   r>   rq   r[   r=   s      r   _capturez-decorator.<locals>._wrapper.<locals>._capture  sK      'HH~-'#11#' &-%6v%6N "..$g/ /r   r   )r   r~   r   __get__)r=   instancerZ   r[   r   r   r   r   r{   r>   rq   rp   s   `  `    r   _wrapperzdecorator.<locals>._wrapper   s    * GG$4T
/ /4  
 "!WN HH~%))
 7#, &-YN$ &-N 8$. &-__T8%DN0 &-__XtH~%NN ..(GLLr   )r>   )rq   r>   rz   NN)	decoratorr   )rp   rq   r>   rz   r   r{   s   ```` @r   r   r      sC    0 %	L\g	M` gx;; y'7 	r   c                     t        | d      r6t        | d      r*| t        fd       } G fddt              } ||      S d fd} G fd	d
t              } || |      S )Nacquirereleasec                 D    5   | |i |cd d d        S # 1 sw Y   y xY wr   rT   )r=   r   rZ   r[   locks       r   _synchronizedz#synchronized.<locals>._synchronized  s    
 // s   c                   "    e Zd Z fdZ fdZy)'synchronized.<locals>._PartialDecoratorc                 (    j                          S r   )r   )r#   r   s    r   	__enter__z1synchronized.<locals>._PartialDecorator.__enter__  s    r   c                 &    j                          y r   )r   )r#   rZ   r   s     r   __exit__z0synchronized.<locals>._PartialDecorator.__exit__  s    r   Nr3   r4   r5   r   r   )r   s   r   _PartialDecoratorr     s    r   r   )r=   c                     t        |       j                  dd       }|Ot        j                  5  t        |       j                  dd       }|t	               }t        | d|       d d d        |S |S # 1 sw Y   |S xY w)N_synchronized_lock)varsgetsynchronized_synchronized_meta_lockr   setattr)contextr   s     r   r   z(synchronized.<locals>._synchronized_lock  sz     G}  !5t<< 55 G}(()=tD< 7DG%94@ 6 t 6 s   5A//A9c                 X     ||n|       5   | |i |cd d d        S # 1 sw Y   y xY wr   rT   )r=   r   rZ   r[   r   s       r   _synchronized_wrapperz+synchronized.<locals>._synchronized_wrapper	  s.    
  H,@gND+F+ ONNs    )c                       e Zd Z fdZd Zy)%synchronized.<locals>._FinalDecoratorc                 ~     | j                         | _        | j                  j                          | j                  S r   )r@   
_self_lockr   )r#   r   s    r   r   z/synchronized.<locals>._FinalDecorator.__enter__  s/    01A1ABDOOO##%??"r   c                 8    | j                   j                          y r   )r   r   )r#   rZ   s     r   r   z.synchronized.<locals>._FinalDecorator.__exit__  s    OO##%r   Nr   )r   s   r   _FinalDecoratorr     s    	#
	&r   r   )r=   rp   )hasattrr   r   r   )r=   r   r   r   r   r   r   s        @@r   r   r     sr     w	"ww	'B 		0 
	0	 3 	 !77@,&/ & 74IJJr   r   )%__doc__r   version_inforJ   
basestringrt   r   strbuiltinsgetattr	functoolsr   inspectr   	threadingr   r   	argumentsr   r   ImportError	__wrapt__r   r   r   r   r   r:   rN   rV   objectrb   rh   adapter_factoryr   r   r   rT   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   B= =CC