
    4jS                     f   S r SSKrSSKrSSKrSSKr " S S\5      r " S S5      r " S S5      r\	R                  S	   R                  \5      S	   rS
 r\" \5      r " S S\	5      r " S S\\S9r " S S\5      r " S S\5      r " S S\5      r\" S5      r " S S\5      r " S S\5      rg)z7Core object proxy and function wrapper implementations.    Nc                       \ rS rSrSrSrg)WrapperNotInitializedError	   z
Exception raised when a wrapper is in an inconsistent state: __init__ was
called but __wrapped__ is not set. Inherits from ValueError only, so it is
not silently swallowed by hasattr/getattr/except AttributeError patterns.
 N__name__
__module____qualname____firstlineno____doc____static_attributes__r       M/root/lseg-credit/backend/venv/lib/python3.13/site-packages/wrapt/wrappers.pyr   r   	   s     	r   r   c                       \ rS rSr\S 5       r\R
                  S 5       r\S 5       r\R
                  S 5       r\S 5       r\S 5       rSr	g	)
_ObjectProxyMethods   c                 .    U R                   R                  $ N__wrapped__r	   selfs    r   r	   _ObjectProxyMethods.__module__%   s    ***r   c                 $    XR                   l        g r   r   r   values     r   r	   r   )   s    &+#r   c                 .    U R                   R                  $ r   r   r   r   s    r   r   _ObjectProxyMethods.__doc__-   s    '''r   c                 $    XR                   l        g r   r   r   s     r   r   r   1   s    #( r   c                 .    U R                   R                  $ r   )r   __dict__r   s    r   r"   _ObjectProxyMethods.__dict__8       (((r   c                 .    U R                   R                  $ r   )r   __weakref__r   s    r   r&   _ObjectProxyMethods.__weakref__A   s    +++r   r   N)
r   r	   r
   r   propertysetterr   r"   r&   r   r   r   r   r   r      s    $ + + , , ( ( ^^) ) ) ) , ,r   r   c                       \ rS rSrSrSrg)_ObjectProxyDictBaseF   at  Base class whose sole purpose is to provide a ``getset_descriptor``
for ``__dict__`` that is valid for all ``ObjectProxy`` subclasses.
The metaclass installs this descriptor as ``__self_dict__`` so that
the real instance dictionary of the proxy can always be accessed,
even though ``ObjectProxy`` replaces ``__dict__`` with a property
that delegates to the wrapped object.r   Nr   r   r   r   r+   r+   F   s    - 	r   r+   r"   c                 ,    [         R                  U 5      $ r   )_REAL_DICT_DESCRIPTOR__get__r   s    r   _get_self_dictr0   V   s     ((..r   c                       \ rS rSr\S 5       r\R
                  S 5       r\S 5       r\R
                  S 5       rS rSrg)	_ObjectProxyMetaTypea   c                 :    U R                   R                  SS5      $ )N_cls_real_modulebuiltinsr"   getclss    r   r	   _ObjectProxyMetaType.__module__j   s    || 2J??r   c                 2    [         R                  U SU5        g )Nr5   type__setattr__r:   r   s     r   r	   r;   n   s    0%8r   c                 8    U R                   R                  S5      $ N_cls_real_docr7   r9   s    r   r   _ObjectProxyMetaType.__doc__r   s    ||00r   c                 2    [         R                  U SU5        g rB   r=   r@   s     r   r   rD   v   s    ou5r   c                 v   UR                  S5      nUR                  S5      nUR                  S5      nUR                  [        [        5      5        Ub  XcS'   UR	                  S[
        5        [        R                  XX#5      nUb  [        R                  USU5        Ub  [        R                  USU5        U$ )Nr	   r   r"   __self_dict__r5   rC   )	r8   updatevarsr   
setdefault_SELF_DICT_PROPERTYr>   __new__r?   )r:   namebases
dictionaryreal_modulereal_doccustom_dictklasss           r   rL   _ObjectProxyMetaType.__new__z   s     !nn\2>>), !nnZ0$234"%0z"o/BCS:"U$6DUOX>r   r   N)	r   r	   r
   r   r(   r)   r   rL   r   r   r   r   r2   r2   a   sc     @ @ 9 9 1 1 ^^6 6&r   r2   c                      \ rS rSrSr\" \R                  5      rS r	\
S 5       rS r\
S 5       r \ R                  S 5       r \
S 5       r\R                  S	 5       rS
 rS rS rS rS rS rS^S jrS rS rS rS rS rS rS rS rS rS rS r S r!S r"S r#S  r$S! r%S" r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-S* r.S+ r/S, r0S- r1S. r2S/ r3S0 r4S1 r5S2 r6S3 r7S4 r8S5 r9S6 r:S7 r;S8 r<S9 r=S: r>S; r?S< r@S= rAS> rBS? rCS@ rDSA rESB rFSC rGSD rHSE rISF rJSG rKSH rLSI rMSJ rNSK rOSL rPSM rQSN rRSO rSSP rTSQ rUSR rVSS rWST rXSU rYSV rZSW r[SX r\SY r]SZ r^S[ r_S\ r`S]rag)_ObjectProxy   zOA transparent object proxy that delegates attribute access to a
wrapped object.c                 F   Uc3   [         R                  U S5      nUb  O/[         R                  U SU5        O[         R                  U SU5        [         R                  U SS5         [         R                  U SUR                  5        [
        R                  S:  a#   [         R                  U SUR                  5        g [         R                  U S	UR                  5        g! [         a    Sn Nf = f! [         a     Nxf = f! [         a     gf = f! [         a     gf = f)
z/Create an object proxy around the given object.N__wrapped_factory__r   __init_called__Tr
         __annotate____annotations__)	object__getattribute__AttributeErrorr?   r
   sysversion_infor^   r_   )r   wrappedcallbacks      r   __init__ObjectProxy.__init__   s    ? !2249NO #  ""4@t]G<4!2D9	t^W5I5IJ w&""49M9MN""4):G<S<STS "   0  		 " 
 " sG   C! &!C3 !D ?!D !C0/C03
D ?D 
DD
D D c                     [         $ r   )rV   r   s    r   __object_proxy__ObjectProxy.__object_proxy__   s    r   c                 0    [         R                  XU5        g r   )r`   r?   )r   rM   r   s      r   __self_setattr__ObjectProxy.__self_setattr__   s    4u-r   c                 .    U R                   R                  $ r   r   r   r   s    r   r   ObjectProxy.__name__   r$   r   c                 $    XR                   l        g r   rp   r   s     r   r   rq      s    $)!r   c                 .    U R                   R                  $ r   r   	__class__r   s    r   ru   ObjectProxy.__class__   s    )))r   c                 $    XR                   l        g r   rt   r   s     r   ru   rv      s    %*"r   c                 ,    [        U R                  5      $ r   )dirr   r   s    r   __dir__ObjectProxy.__dir__       4##$$r   c                 ,    [        U R                  5      $ r   )strr   r   s    r   __str__ObjectProxy.__str__   r|   r   c                 ,    [        U R                  5      $ r   )bytesr   r   s    r   	__bytes__ObjectProxy.__bytes__       T%%&&r   c           
          S[        U 5      R                   S[        U 5      S S[        U R                  5      R                   S[        U R                  5      S S3	$ )N<z at 0xxz for >)r>   r   idr   r   s    r   __repr__ObjectProxy.__repr__   sY    4:&&'vbhq\tDDTDT?U?^?^>__efhimiyiyfz{|e}}~r   c                 .    [        U R                  U5      $ r   )formatr   )r   format_specs     r   
__format__ObjectProxy.__format__   s    d&&44r   c                 ,    [        U R                  5      $ r   )reversedr   r   s    r   __reversed__ObjectProxy.__reversed__  s    (())r   Nc                 .    [        U R                  U5      $ r   )roundr   )r   ndigitss     r   	__round__ObjectProxy.__round__  s    T%%w//r   c                     [        U R                  [        5      (       d6  [        U R                  S5      (       a  U R                  R	                  U5      $ U R                  4$ )N__mro_entries__)
isinstancer   r>   hasattrr   )r   rN   s     r   r   ObjectProxy.__mro_entries__  sU    $**D11g/7
 7
 ##33E::  ""r   c                      U R                   U:  $ r   r   r   others     r   __lt__ObjectProxy.__lt__      %''r   c                      U R                   U:*  $ r   r   r   s     r   __le__ObjectProxy.__le__      5((r   c                      U R                   U:H  $ r   r   r   s     r   __eq__ObjectProxy.__eq__  r   r   c                      U R                   U:g  $ r   r   r   s     r   __ne__ObjectProxy.__ne__  r   r   c                      U R                   U:  $ r   r   r   s     r   __gt__ObjectProxy.__gt__  r   r   c                      U R                   U:  $ r   r   r   s     r   __ge__ObjectProxy.__ge__  r   r   c                 ,    [        U R                  5      $ r   )hashr   r   s    r   __hash__ObjectProxy.__hash__!      D$$%%r   c                 ,    [        U R                  5      $ r   )boolr   r   s    r   __bool__ObjectProxy.__bool__$  r   r   c                    UR                  S5      (       a  [        R                  XU5        g US:X  a  [        R                  XU5         [        R                  U S5         [        R                  U SUR
                  5        [        R                  S:  a:   [        R                  U S5         [        R                  U SUR                  5        O9 [        R                  U S5         [        R                  U SUR                  5        [        U SS 5      nUb  U" 5         g g US:X  a-  [        U R                  X5        [        R                  XU5        g US:X  a-  [        U R                  X5        [        R                  XU5        g US:X  a-  [        U R                  X5        [        R                  XU5        g [        [        U 5      U5      (       a  [        R                  XU5        g [        U R                  X5        g ! [         a     GNf = f! [         a     GNf = f! [         a     GNf = f! [         a     GN:f = f! [         a     GNmf = f! [         a     GN\f = f)N_self_r   r
   r[   r^   r_   __wrapped_setattr_fixups__)
startswithr`   r?   __delattr__rb   r
   rc   rd   r^   r_   getattrsetattrr   r   r>   )r   rM   r   r   s       r   r?   ObjectProxy.__setattr__'  s+   ??8$$t51]"t51""48""49K9KL 7*&&t^<&&t^U=O=OP&&t->?&&t->@U@UV *12D*& *5*, 6 ^#D$$d2t51&&D$$d2t51^#D$$d2t51T$Z&&t51 D$$d2a "  " 
 &  & 
 &  & sl   H "!H H& /!H7 I )!I 
HH
H#"H#&
H43H47
II
II
I'&I'c                 d   US:X  a2   [         R                  U S5        [         R                  U S5      " 5       $ [        U R                  U5      $ ! [         a     Of = f [         R                  U S5        O0! [         a#    [        S[        U 5      R                   S35      ef = f[        S5      e)Nr   rY   __wrapped_get__rZ   'z'' object has no attribute '__wrapped__'z;wrapper is in an inconsistent state: __wrapped__ is not set)r`   ra   rb   r>   r   r   r   r   r   rM   s     r   __getattr__ObjectProxy.__getattr__b  s    
 = J''.CD ..t5FGII$ t''..+ " ''.?@! $T
++,,WX 
 -M s   A 
AA A7 7-B$c                 z   UR                  S5      (       a  [        R                  X5        g US:X  a  [        S5      eUS:X  a,  [        R                  X5        [	        U R
                  U5        g US:X  a-   [        R                  X5        [	        U R
                  U5        g US:X  a-   [        R                  X5        [	        U R
                  U5        g [        [        U 5      U5      (       a  [        R                  X5        g [	        U R
                  U5        g ! [         a     Nf = f! [         a     Nzf = f)Nr   r   z"can't delete __wrapped__ attributer
   r_   r^   )	r   r`   r   	TypeErrordelattrr   rb   r   r>   r   s     r   r   ObjectProxy.__delattr__  s   ??8$$t*]"@AA^#t*D$$d+&&""4. D$$d+^#""4. D$$d+T$Z&&t* D$$d+ "  " s$   7D *D- 
D*)D*-
D:9D:c                      U R                   U-   $ r   r   r   s     r   __add__ObjectProxy.__add__  r   r   c                      U R                   U-
  $ r   r   r   s     r   __sub__ObjectProxy.__sub__  r   r   c                      U R                   U-  $ r   r   r   s     r   __mul__ObjectProxy.__mul__  r   r   c                 D    [         R                  " U R                  U5      $ r   operatortruedivr   r   s     r   __truediv__ObjectProxy.__truediv__  s     0 0%88r   c                      U R                   U-  $ r   r   r   s     r   __floordiv__ObjectProxy.__floordiv__  r   r   c                      U R                   U-  $ r   r   r   s     r   __mod__ObjectProxy.__mod__  r   r   c                 .    [        U R                  U5      $ r   divmodr   r   s     r   
__divmod__ObjectProxy.__divmod__  s    d&&..r   c                 0    [        U R                  U/UQ76 $ r   powr   r   r   argss      r   __pow__ObjectProxy.__pow__  s    4##U2T22r   c                      U R                   U-  $ r   r   r   s     r   
__lshift__ObjectProxy.__lshift__  r   r   c                      U R                   U-	  $ r   r   r   s     r   
__rshift__ObjectProxy.__rshift__  r   r   c                      U R                   U-  $ r   r   r   s     r   __and__ObjectProxy.__and__  r   r   c                      U R                   U-  $ r   r   r   s     r   __xor__ObjectProxy.__xor__  r   r   c                      U R                   U-  $ r   r   r   s     r   __or__ObjectProxy.__or__  r   r   c                     XR                   -   $ r   r   r   s     r   __radd__ObjectProxy.__radd__      ''''r   c                     XR                   -
  $ r   r   r   s     r   __rsub__ObjectProxy.__rsub__  r  r   c                     XR                   -  $ r   r   r   s     r   __rmul__ObjectProxy.__rmul__  r  r   c                 B    [         R                  " XR                  5      $ r   r   r   s     r   __rtruediv__ObjectProxy.__rtruediv__  s    '7'788r   c                     XR                   -  $ r   r   r   s     r   __rfloordiv__ObjectProxy.__rfloordiv__      ((((r   c                     XR                   -  $ r   r   r   s     r   __rmod__ObjectProxy.__rmod__  r  r   c                 ,    [        XR                  5      $ r   r   r   s     r   __rdivmod__ObjectProxy.__rdivmod__  s    e--..r   c                 .    [        XR                  /UQ76 $ r   r   r   s      r   __rpow__ObjectProxy.__rpow__  s    5**2T22r   c                     XR                   -  $ r   r   r   s     r   __rlshift__ObjectProxy.__rlshift__  r  r   c                     XR                   -	  $ r   r   r   s     r   __rrshift__ObjectProxy.__rrshift__  r  r   c                     XR                   -  $ r   r   r   s     r   __rand__ObjectProxy.__rand__  r  r   c                     XR                   -  $ r   r   r   s     r   __rxor__ObjectProxy.__rxor__  r  r   c                     XR                   -  $ r   r   r   s     r   __ror__ObjectProxy.__ror__  r  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-   5      $ )N__iadd__r   r   rj   r   s     r   r,  ObjectProxy.__iadd__  G    4##Z00%K(()9)9E)ABBr   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-
  5      $ )N__isub__r-  r   s     r   r1  ObjectProxy.__isub__  r/  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__imul__r-  r   s     r   r4  ObjectProxy.__imul__  r/  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__itruediv__r-  r   s     r   r7  ObjectProxy.__itruediv__
  sG    4##^44%K(()9)9E)ABBr   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__ifloordiv__r-  r   s     r   r:  ObjectProxy.__ifloordiv__  sG    4##_55&K(()9)9U)BCCr   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__imod__r-  r   s     r   r=  ObjectProxy.__imod__  r/  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__ipow__r-  r   s     r   r@  ObjectProxy.__ipow__  sG    4##Z00&K(()9)95)@AAr   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__ilshift__r-  r   s     r   rC  ObjectProxy.__ilshift__&  G    4##]33&K(()9)9U)BCCr   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-	  5      $ )N__irshift__r-  r   s     r   rG  ObjectProxy.__irshift__-  rE  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__iand__r-  r   s     r   rJ  ObjectProxy.__iand__4  r/  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__ixor__r-  r   s     r   rM  ObjectProxy.__ixor__;  r/  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__ior__r-  r   s     r   rP  ObjectProxy.__ior__B  sG    4##Y//%K(()9)9E)ABBr   c                     U R                   * $ r   r   r   s    r   __neg__ObjectProxy.__neg__I          r   c                     U R                   7$ r   r   r   s    r   __pos__ObjectProxy.__pos__L  rU  r   c                 ,    [        U R                  5      $ r   )absr   r   s    r   __abs__ObjectProxy.__abs__O  r|   r   c                     U R                   ) $ r   r   r   s    r   
__invert__ObjectProxy.__invert__R  rU  r   c                 ,    [        U R                  5      $ r   )intr   r   s    r   __int__ObjectProxy.__int__U  r|   r   c                 ,    [        U R                  5      $ r   )floatr   r   s    r   	__float__ObjectProxy.__float__X  r   r   c                 ,    [        U R                  5      $ r   )complexr   r   s    r   __complex__ObjectProxy.__complex__[  s    t''((r   c                 B    [         R                  " U R                  5      $ r   )r   indexr   r   s    r   	__index__ObjectProxy.__index__^  s    ~~d..//r   c                      U R                   U-  $ r   r   r   s     r   
__matmul__ObjectProxy.__matmul__a  r   r   c                     XR                   -  $ r   r   r   s     r   __rmatmul__ObjectProxy.__rmatmul__d  r  r   c                     [        U R                  S5      (       a  U =R                  U-  sl        U $ U R                  U R                  U-  5      $ )N__imatmul__r-  r   s     r   rw  ObjectProxy.__imatmul__g  sG    4##]33%K(()9)9E)ABBr   c                 ,    [        U R                  5      $ r   )lenr   r   s    r   __len__ObjectProxy.__len__n  r|   r   c                     XR                   ;   $ r   r   r   s     r   __contains__ObjectProxy.__contains__q  r  r   c                      U R                   U   $ r   r   r   keys     r   __getitem__ObjectProxy.__getitem__t  s    $$r   c                      X R                   U'   g r   r   )r   r  r   s      r   __setitem__ObjectProxy.__setitem__w  s     %r   c                     U R                   U	 g r   r   r  s     r   __delitem__ObjectProxy.__delitem__z  s    S!r   c                 6    U R                   R                  5       $ r   )r   	__enter__r   s    r   r  ObjectProxy.__enter__}  s    ))++r   c                 :    U R                   R                  " U0 UD6$ r   )r   __exit__r   r   kwargss      r   r  ObjectProxy.__exit__  s    (($9&99r   c                 6    U R                   R                  5       $ r   )r   
__aenter__r   s    r   r  ObjectProxy.__aenter__  s    **,,r   c                 :    U R                   R                  " U0 UD6$ r   )r   	__aexit__r  s      r   r  ObjectProxy.__aexit__  s    ))4:6::r   c                     [        S5      e)Nz#object proxy must define __copy__()NotImplementedErrorr   s    r   __copy__ObjectProxy.__copy__  s    !"GHHr   c                     [        S5      e)Nz'object proxy must define __deepcopy__()r  )r   memos     r   __deepcopy__ObjectProxy.__deepcopy__  s    !"KLLr   c                     [        S5      e)Nz%object proxy must define __reduce__()r  r   s    r   
__reduce__ObjectProxy.__reduce__  s    !"IJJr   c                 ,    [        XR                  5      $ r   )r   r   )r   instances     r   __instancecheck__ObjectProxy.__instancecheck__  s    ($4$455r   c                     [        US5      (       a   [        UR                  U R                  5      $ [        XR                  5      $ )Nr   )r   
issubclassr   )r   subclasss     r   __subclasscheck__ObjectProxy.__subclasscheck__  s9    8]++h22D4D4DEEh(8(899r   r   r   )br   r	   r
   r   r   classmethodtypesGenericAlias__class_getitem__rg   r(   rj   rm   r)   ru   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r?   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r  r  r  r   r#  r&  r)  r,  r1  r4  r7  r:  r=  r@  rC  rG  rJ  rM  rP  rS  rW  r[  r^  rb  rf  rj  rn  rq  rt  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   rV   rV      s@    $E$6$671f  . ) ) __* * * * + +%%'@5*0#()))()&&93v$/L,>(((9)(/3))((((((9)(/3))(((CCCCDCBDDCCC!!%!%')0((C%)%&",:-;IMK6:r   rV   )	metaclassc                       \ rS rSrSrS rSrg)CallableObjectProxyi  z>An object proxy for callable objects that also forwards calls.c                  :    S nU" U 6 u  p0UR                   " U 0 UD6$ )Nc                     X4$ r   r   r   r   s     r   _unpack_self2CallableObjectProxy.__call__.<locals>._unpack_self  
    :r   r   )r   r  r  r   s       r   __call__CallableObjectProxy.__call__  s+    	 "4(
000r   r   N)r   r	   r
   r   r   r  r   r   r   r   r  r    s
    H1r   r  c                   2   ^  \ rS rSrSrU 4S jrS rSrU =r$ )PartialCallableObjectProxyi  zUA callable object proxy that supports partial application of arguments
and keywords.
c                     > S nU" U 6 u  p0[        U 5      S:  a  [        S5      eU S   U SS p[        U5      (       d  [        S5      e[        [        U]  U5        Xl        Xl        g)zCreate a callable object proxy with partial application of the given
arguments and keywords. This behaves the same as `functools.partial`, but
implemented using the `ObjectProxy` class to provide better support for
introspection.
c                     X4$ r   r   r  s     r   r  9PartialCallableObjectProxy.__init__.<locals>._unpack_self  r  r      z(partial type takes at least one argumentr   Nz#the first argument must be callable)rz  r   callablesuperr  rg   
_self_args_self_kwargs)r   r  r  r   re   ru   s        r   rg   #PartialCallableObjectProxy.__init__  sr    	 "4(
t9q=FGGQab  ABB
 	($8A"r   c                      S nU" U 6 u  p0UR                   U -   n[        UR                  5      nUR                  U5        UR                  " U0 UD6$ )Nc                     X4$ r   r   r  s     r   r  9PartialCallableObjectProxy.__call__.<locals>._unpack_self  r  r   )r  dictr  rH   r   )r   r  r  r   _args_kwargss         r   r  #PartialCallableObjectProxy.__call__  sU    	 "4(
$&t(()v2'22r   )r  r  )	r   r	   r
   r   r   rg   r  r   __classcell__ru   s   @r   r  r    s    #83 3r   r  c                   F   ^  \ rS rSr    SU 4S jjrS rS rS rSrU =r	$ )_FunctionWrapperBasei  c                 @  > [         [        U ]  U5        [        R	                  U SU5        [        R	                  U SU5        [        R	                  U SU5        [        R	                  U SU5        [        R	                  U SU5        [        R	                  U SU5        g )N_self_instance_self_wrapper_self_enabled_self_binding_self_parent_self_owner)r  r  rg   r`   r?   )	r   re   r  wrapperenabledbindingparentownerru   s	           r   rg   _FunctionWrapperBase.__init__  s     	"D27;4!18<4':4':4':4846r   c           	      0   U R                   c}  U R                  S:X  a  U $ U R                  S:X  a  U $ [        U R                  SS 5      nUc  U $ U" X5      nU R	                  UUU R
                  U R                  U R                  U U5      $ U R                  c~  U R                  S;   an  U R                   R                  R                  X5      nU R                   R	                  UUU R
                  U R                  U R                  U R                   U5      $ U $ )Nbuiltinclassr/   )functioninstancemethodr  )	r  r  r   r   __bound_function_wrapper__r  r  r  r/   )r   r  r  binder
descriptors        r   r/   _FunctionWrapperBase.__get__  s&   * $ !!Y.!!W,T--y$?F~0J22"""""" $ &4+=+= B
 ,

 **66>>xOJ$$??""""""!!  r   c                     S nU" U 6 u  p0UR                   be  [        UR                   5      (       a(  UR                  5       (       d  UR                  " U 0 UD6$ O#UR                   (       d  UR                  " U 0 UD6$ UR                  S;   aD  UR                  c7  [        UR                  SS 5      nUb  UR                  UR                  X@U5      $ UR                  UR                  UR                  X5      $ )Nc                     X4$ r   r   r  s     r   r  3_FunctionWrapperBase.__call__.<locals>._unpack_self<  r  r   )r  r  r  r  __self__)r  r  r   r  r  r   r  )r   r  r  r   r  s        r   r  _FunctionWrapperBase.__call__;  s    	 "4(
 )**++))++++T<V<< ,''''888  "
 
 ""*"4#3#3ZF'--d.>.>PVWW !!$"2"2D4G4GVVr   c                 r    [        U R                  S5      (       a  U R                  R                  X5        g g )N__set_name__)r   r   r  )r   r  rM   s      r   r  !_FunctionWrapperBase.__set_name__e  s0     4##^44))%6 5r   r   )Nr  NN)
r   r	   r
   r   rg   r/   r  r  r   r  r  s   @r   r  r    s.     7.IV(WT7 7r   r  )r  r  r  r  r  r  c                   >   ^  \ rS rSrSrU 4S jrU 4S jrS rSrU =r	$ )BoundFunctionWrapperi|  z=A wrapper for bound methods, classmethods, and staticmethods.c                    > UR                  S5      (       a8  U[        ;  a.  U R                  b!  [        R	                  U R                  X5        g [
        TU ]  X5        g )Nr   )r   _FUNCTION_WRAPPER_SLOTSr  r`   r?   r  )r   rM   r   ru   s      r   r?    BoundFunctionWrapper.__setattr__  sL    ??8$$5L)L  ,""4#4#4dBD(r   c                    > U R                   b   [        U R                   U5      $ [        TU ]  U5      $ ! [         a     Nf = fr   )r  r   rb   r  r   )r   rM   ru   s     r   r    BoundFunctionWrapper.__getattr__  sM    (t00$77 w"4(( " s   5 
AAc                     S nU" U 6 u  p0UR                   be  [        UR                   5      (       a(  UR                  5       (       d  UR                  " U 0 UD6$ O#UR                   (       d  UR                  " U 0 UD6$ UR                  S:X  a  UR                  cR  U (       aK  U S   U SS  pT[        XCR                  5      (       a(  [        UR                  U5      nUR                  XdXQ5      $ UR                  UR                  UR                  X5      $ UR                  S:X  a  UR                  cR  U (       aK  U S   U SS  pT[        XCR                  5      (       a(  [        UR                  U5      nUR                  XdXQ5      $ UR                  UR                  UR                  X5      $ [        UR                  SS 5      nUR                  UR                  X@U5      $ )Nc                     X4$ r   r   r  s     r   r  3BoundFunctionWrapper.__call__.<locals>._unpack_self  r  r   r  r   r  r  r  )
r  r  r   r  r  r   r  r  r  r   )r   r  r  r   r  newargsre   s          r   r  BoundFunctionWrapper.__call__  s   	 "4(
 )**++))++++T<V<< ,''''888
 +""*t$(GT!"X'h(8(89989I9I8TG--gQQ%%  $"5"5t  :-""*t %)GT!"X'h(8(89989I9I8TG--gQQ%%  $"5"5t $ t//TBH%%d&6&6OOr   r   )
r   r	   r
   r   r   r?   r   r  r   r  r  s   @r   r  r  |  s    G))CP CPr   r  c                   4   ^  \ rS rSrSr\rSU 4S jjrSrU =r	$ )FunctionWrapperi  z
A wrapper for callable objects that can be used to apply decorators to
functions, methods, classmethods, and staticmethods, or any other callable.
It handles binding and unbinding of methods, and allows for the wrapper to
be enabled or disabled.
c                 R  > Sn[        U[        5      (       a  UR                  nU(       d  [        R                  " U5      (       a  SnO[        R
                  " U5      (       a  SnO[        R                  " U5      (       a  SnO[        U[        5      (       a  SnOt[        U[        5      (       a  SnO\[        US5      (       aI  [        R                  " UR                  5      (       a  SnO#[        R                  " U5      (       a  SnOS	nOS	n[        [        U ];  USX#U5        g)
a  
Initialize the `FunctionWrapper` with the `wrapped` callable, the
`wrapper` function, and an optional `enabled` argument. The `enabled`
argument can be a boolean or a callable that returns a boolean. When a
callable is provided, it will be called each time the wrapper is
invoked to determine if the wrapper function should be executed or
whether the wrapped function should be called directly. If `enabled`
is not provided, the wrapper is enabled by default.
Nr  r  r  r  staticmethodr  r  r  )r   r  r  inspect	isbuiltin
isfunctionisclassr  r   r   r  ismethodr  r  rg   )r   re   r  r  r  ru   s        r   rg   FunctionWrapper.__init__  s    f g344++G  ))###G,,$))!G[11'G\22(*--??7#3#344+G%%g...G(G %
 	ot-gtWwWr   r   r   )
r   r	   r
   r   r   r  r  rg   r   r  r  s   @r   r  r    s     "6vX vXr   r  )r   r  r   rc   r  
ValueErrorr   r   r+   r>   r"   r/   r.   r0   r(   rK   r2   rV   r  r  r  	frozensetr  r  r  r   r   r   <module>r	     s    =   
 	 	0, 0,f	 	 j199:NO 
/ ~. ?4 ?Dv:&2F v:r	1+ 	1,3 ,3^V7; V7r $	 UP/ UPp@X* @Xr   