
    NgUS                        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 n# e$ r Y nw xY w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#_$        dS )zoThis module implements decorators for implementing other decorators
as well as some commonly used decorators.

    N   c                 |    |&t          j        d          }|j        }||j        }~n||}t	          d           dS )zExecute code in a namespace.N   zexec _code_ in _globs_, _locs_)sys	_getframe	f_globalsf_localsexec)_code__globs__locs_frames       L/var/www/html/ai-engine/env/lib/python3.11/site-packages/wrapt/decorators.pyexec_r      sM    ?M!$$EoG~^F122222    r
   )partial)isclass)LockRLockr   )formatargspec)	signature)FunctionWrapperBoundFunctionWrapperObjectProxyCallableObjectProxyc                        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                 f    t          t          |                               |           || _        d S N)superr   __init___self_adapter_code)selfwrapped_codeadapter_code	__class__s      r   r!   z_AdapterFunctionCode.__init__7   s0    "D))22<@@@".r   c                     | j         j        S r   )r"   co_argcountr#   s    r   r(   z _AdapterFunctionCode.co_argcount;       &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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   s        / / / / / 3 3 X3 / / X/ 0 0 X0 9 9 X9 3 3 X3 3 3 3 3r   r   c                        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                 f    t          t          |                               |           || _        d S r   )r    r:   r!   _self_adapter)r#   wrappedadapterr&   s      r   r!   z"_AdapterFunctionSurrogate.__init__Q   s0    '..7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$="+- - 	-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0r   c                 b    dt                      vr| j        j        S t          | j                  S Nr   )globalsr<   __signature__r   r)   s    r   rI   z'_AdapterFunctionSurrogate.__signature__b   s.    gii''%33T/000r   )r3   r4   r5   r!   r6   rA   rC   rE   rI   PY2	func_codefunc_defaultsr7   r8   s   @r   r:   r:   O   s        % % % % % - - X- / / X/ 1 1 X1 1 1 X1  %	$% % % %r   r:   c                   F    e Zd Zed             Zed             ZereZdS dS )_BoundAdapterWrapperc                 J    t          | j        j        | j        j                  S r   )r:   r@   __func___self_parentr<   r)   s    r   rP   z_BoundAdapterWrapper.__func__o   s%    ()9)B!/1 1 	1r   c                 l    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   s1    gii''#11T.<===r   N)r3   r4   r5   r6   rP   rI   rJ   im_func r   r   rN   rN   m   s[        1 1 X1 > > X>   r   rN   c                        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                     |                     d          } t          t          |           j        |i | t	          | j        |          | _        || _        d S )Nr>   )popr    rV   r!   r:   r@   _self_surrogater<   )r#   argskwargsr>   r&   s       r   r!   zAdapterWrapper.__init__   s^    **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0r   c                     | j         j        S r   )rY   rE   r)   s    r   rE   zAdapterWrapper.__kwdefaults__   s    #22r   c                     | j         j        S r   )rY   rI   r)   s    r   rI   zAdapterWrapper.__signature__   s    #11r   )r3   r4   r5   rN   __bound_function_wrapper__r!   r6   rA   rC   rE   rJ   rK   rL   rI   r7   r8   s   @r   rV   rV   ~   s        !5% % % % % - - X- 1 1 X1 3 3 X3  %	$2 2 X2 2 2 2 2r   rV   c                       e Zd Zd ZdS )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                 d    t          t          |                                            || _        d S r   )r    rh   r!   factory)r#   rj   r&   s     r   r!   z DelegatedAdapterFactory.__init__   s+    %t,,55777r   c                 ,    |                      |          S r   )rj   re   s     r   rf   z DelegatedAdapterFactory.__call__   s    ||G$$$r   )r3   r4   r5   r!   rf   r7   r8   s   @r   rh   rh      sG            % % % % % % %r   rh   c                       !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                    |          ||           |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6 /%gg..G(( >B #%K%g|<< :w<<1,,*1"+K&-crclG"/"9/66w??RHHH mG # >2=/%gw ': : : : 5'7KKKKr   c                 |    |t                     r|s	
 fd}|S |d         }
}t          |          t          u r|s|S d }|t                     r              }nL}nIt          |          r                    d |          }n#                    |t          |                    } |||	          S )Nc                 l    }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  sd      'HH~~--' 2#11#' &-W%6%6v%6%6N "6..$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$4$4T
/ / / / / / / / /4  
 "!WN HH~~%% *))
 7## (-, &-WYYNN$ &-NN 8$$ /O. &-__T8%D%DNN0 &-__XtH~~%N%NN 6..(GLLLr   )r>   )rq   r>   rz   NN)	decoratorr   )rp   rq   r>   rz   r   r{   s   ```` @r   r   r      s    0 %	L %	L %	L %	L %	L %	L\g	M g	M g	M g	M g	M g	M g	M g	M` vgx;;;; y'7   	r   c                    t          | d          rEt          | d          r5| t          fd            } G fddt                    } ||          S d fd} G fd	d
t                    } || |          S )Nacquirereleasec                 L    5   | |i |cd d d            S # 1 swxY w Y   d S r   rT   )r=   r   rZ   r[   locks       r   _synchronizedz#synchronized.<locals>._synchronized  s    
  0 0w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   c                   $    e Zd Z fdZ fdZdS )'synchronized.<locals>._PartialDecoratorc                 0                                      S r   )r   )r#   r   s    r   	__enter__z1synchronized.<locals>._PartialDecorator.__enter__  s    r   c                 0                                      d S r   )r   )r#   rZ   r   s     r   __exit__z0synchronized.<locals>._PartialDecorator.__exit__  s    r   Nr3   r4   r5   r   r   )r   s   r   _PartialDecoratorr     sG                  r   r   )r=   c                     t          |                               dd           }|ht          j        5  t          |                               dd           }|t	                      }t          | d|           d d d            n# 1 swxY w Y   |S )N_synchronized_lock)varsgetsynchronized_synchronized_meta_lockr   setattr)contextr   s     r   r   z(synchronized.<locals>._synchronized_lock  s     G}}  !5t<<< 5 
A 
A G}}(()=tDD< 77DG%94@@@
A 
A 
A 
A 
A 
A 
A 
A 
A 
A 
A 
A 
A 
A 
A s   ABB
Bc                 f     ||n|           5   | |i |cd d d            S # 1 swxY w Y   d S r   rT   )r=   r   rZ   r[   r   s       r   _synchronized_wrapperz+synchronized.<locals>._synchronized_wrapper	  s    
  H,@gNN 	, 	,7D+F++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   &**c                        e Zd Z fdZd ZdS )%synchronized.<locals>._FinalDecoratorc                 n     | j                   | _        | j                                         | j        S r   )r@   
_self_lockr   )r#   r   s    r   r   z/synchronized.<locals>._FinalDecorator.__enter__  s4    001ABBDOO##%%%?"r   c                 8    | j                                          d S r   )r   r   )r#   rZ   s     r   r   z.synchronized.<locals>._FinalDecorator.__exit__  s    O##%%%%%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     s    w	"" 8ww	'B'B 8 		0 	0 	0 	0 
	0	 	 	 	 	 	 	 3 	 	 	 ! 7777  @, , , , ,& & & & & & &/ & & & ?74IJJ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 
3 
3 
3 
3 4LOOOGHf%%E             ! ! ! ! ! ! ! ! $ $ $ $ $ $	!!!!!!! 	 	 	D	           3 3 3 3 3. 3 3 34% % % % % 3 % % %<    /   "2 2 2 2 2_ 2 2 2>$ $ $ $ $V $ $ $% % % % %n % % % * D$o C C C C^[K [K [Kz (,tvv $ $ $s   A A A 