
    cA                        d dl Z d dlZd dlZd dlZd dlZd dlZej                  d    dk(  ZerefZ	ne
fZ	d Z G d de      Z G d de      Z G d d	 e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 j,                  j/                  d      sddlmZmZmZmZmZmZ d Zd Zdi fdZ G d de      Zdi fdZd Zd Z d  Z!d! Z"d" Z# G d# d$e      Z$y# e$ r Y ?w xY w)%    N   c                      | d|i       S )z%Create a base class with a metaclass.NewBase )metabasess     0/usr/lib/python3/dist-packages/wrapt/wrappers.pywith_metaclassr
      s    	5"%%    c                       e Zd Zed        Zej                  d        Zed        Zej                  d        Zed        Zed        Zy)_ObjectProxyMethodsc                 .    | j                   j                  S N__wrapped__
__module__selfs    r	   r   z_ObjectProxyMethods.__module__   s    ***r   c                 &    || j                   _        y r   r   r   values     r	   r   z_ObjectProxyMethods.__module__"   s    &+#r   c                 .    | j                   j                  S r   r   __doc__r   s    r	   r   z_ObjectProxyMethods.__doc__&   s    '''r   c                 &    || j                   _        y r   r   r   s     r	   r   z_ObjectProxyMethods.__doc__*   s    #( r   c                 .    | j                   j                  S r   )r   __dict__r   s    r	   r   z_ObjectProxyMethods.__dict__1       (((r   c                 .    | j                   j                  S r   )r   __weakref__r   s    r	   r    z_ObjectProxyMethods.__weakref__:   s    +++r   N)__name__r   __qualname__propertysetterr   r   r    r   r   r	   r   r      s     + + , , ( ( ^^) ) ) ) , ,r   r   c                       e Zd Zd Zy)_ObjectProxyMetaTypec                 n    |j                  t        t                     t        j	                  | |||      S r   )updatevarsr   type__new__)clsnamer   
dictionarys       r	   r+   z_ObjectProxyMetaType.__new__?   s-     	$234||Cuj99r   N)r!   r   r"   r+   r   r   r	   r&   r&   >   s    :r   r&   c                      e Zd ZdZd Zed        Z e j                  d        Z ed        Zej                  d        Zd Zd Z	e
sd	 Zd
 Zd Ze
sd Zej                   dk\  rd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$d" Z%d# Z&d$ Z'd% Z(d& Z)d' Z*d( Z+d) Z,d* Z-d+ Z.d, Z/d- Z0d. Z1d/ Z2d0 Z3d1 Z4d2 Z5d3 Z6d4 Z7d5 Z8d6 Z9d7 Z:d8 Z;d9 Z<d: Z=d; Z>d< Z?d= Z@d> ZAd? ZBd@ ZCdA ZDdB ZEdC ZFdD ZGdE ZHdF ZIdG ZJdH ZKdI ZLdJ ZMdK ZNdL ZOdM ZPdN ZQdO ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[dY Z\dZ Z]d[ Z^d\ Z_d] Z`y^)_ObjectProxyr   c                     t         j                  | d|       	 t         j                  | d|j                         	 t         j                  | d|j                         y # t        $ r Y .w xY w# t        $ r Y y w xY w)Nr   r"   __annotations__)object__setattr__r"   AttributeErrorr2   )r   wrappeds     r	   __init__zObjectProxy.__init__M   sv    48	t^W5I5IJ	t%68O8OP  		  		s"   !A !A, 	A)(A),	A87A8c                 .    | j                   j                  S r   r   r!   r   s    r	   r!   zObjectProxy.__name__a   r   r   c                 &    || j                   _        y r   r9   r   s     r	   r!   zObjectProxy.__name__e   s    $)!r   c                 .    | j                   j                  S r   r   	__class__r   s    r	   r=   zObjectProxy.__class__i   s    )))r   c                 &    || j                   _        y r   r<   r   s     r	   r=   zObjectProxy.__class__m   s    %*"r   c                 ,    t        | j                        S r   )dirr   r   s    r	   __dir__zObjectProxy.__dir__q       4##$$r   c                 ,    t        | j                        S r   )strr   r   s    r	   __str__zObjectProxy.__str__t   rB   r   c                 ,    t        | j                        S r   )bytesr   r   s    r	   	__bytes__zObjectProxy.__bytes__x       ))**r   c                     dj                  t        |       j                  t        |       t        | j                        j                  t        | j                              S )Nz<{} at 0x{:x} for {} at 0x{:x}>)formatr*   r!   idr   r   s    r	   __repr__zObjectProxy.__repr__{   sJ    077T
##RXT%%&//4##$& 	&r   c                 ,    t        | j                        S r   )reversedr   r   s    r	   __reversed__zObjectProxy.__reversed__   s    (())r   c                 ,    t        | j                        S r   )roundr   r   s    r	   	__round__zObjectProxy.__round__   rI   r   i  c                     | j                   fS r   r   )r   r   s     r	   __mro_entries__zObjectProxy.__mro_entries__   s    $$&&r   c                      | j                   |k  S r   rU   r   others     r	   __lt__zObjectProxy.__lt__       %''r   c                      | j                   |k  S r   rU   rX   s     r	   __le__zObjectProxy.__le__       5((r   c                      | j                   |k(  S r   rU   rX   s     r	   __eq__zObjectProxy.__eq__   r^   r   c                      | j                   |k7  S r   rU   rX   s     r	   __ne__zObjectProxy.__ne__   r^   r   c                      | j                   |kD  S r   rU   rX   s     r	   __gt__zObjectProxy.__gt__   r[   r   c                      | j                   |k\  S r   rU   rX   s     r	   __ge__zObjectProxy.__ge__   r^   r   c                 ,    t        | j                        S r   )hashr   r   s    r	   __hash__zObjectProxy.__hash__       D$$%%r   c                 ,    t        | j                        S r   boolr   r   s    r	   __nonzero__zObjectProxy.__nonzero__   rj   r   c                 ,    t        | j                        S r   rl   r   s    r	   __bool__zObjectProxy.__bool__   rj   r   c                 H   |j                  d      rt        j                  | ||       y |dk(  rt        j                  | ||       	 t        j                  | d       	 t        j                  | d|j
                         	 t        j                  | d       	 t        j                  | d|j                         y |dk(  r/t        | j                  ||       t        j                  | ||       y |dk(  r/t        | j                  ||       t        j                  | ||       y t        t        |       |      rt        j                  | ||       y t        | j                  ||       y # t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y w xY w# t        $ r Y y w xY w)N_self_r   r"   r2   )
startswithr3   r4   __delattr__r5   r"   r2   setattrr   hasattrr*   )r   r-   r   s      r	   r4   zObjectProxy.__setattr__   s|   ??8$tT51]"tT51""48""49K9KL""4):;""4):E<Q<QR ^#D$$dE2tT51&&D$$dE2tT51T$Z&tT51 D$$dE27 "  "  "  " sH   E& !E6  F !F &	E32E36	FF	FF	F! F!c                 N    |dk(  rt        d      t        | j                  |      S )Nr   z wrapper has not been initialised)
ValueErrorgetattrr   r   r-   s     r	   __getattr__zObjectProxy.__getattr__   s+     = ?@@t''..r   c                 \   |j                  d      rt        j                  | |       y |dk(  rt        d      |dk(  r-t        j                  | |       t	        | j
                  |       y t        t        |       |      rt        j                  | |       y t	        | j
                  |       y )Nrr   r   z__wrapped__ must be an objectr"   )rs   r3   rt   	TypeErrordelattrr   rv   r*   rz   s     r	   rt   zObjectProxy.__delattr__   s    ??8$tT*]";<<^#tT*D$$d+T$Z&tT* D$$d+r   c                      | j                   |z   S r   rU   rX   s     r	   __add__zObjectProxy.__add__   r[   r   c                      | j                   |z
  S r   rU   rX   s     r	   __sub__zObjectProxy.__sub__   r[   r   c                      | j                   |z  S r   rU   rX   s     r	   __mul__zObjectProxy.__mul__   r[   r   c                 B    t        j                  | j                  |      S r   operatordivr   rX   s     r	   __div__zObjectProxy.__div__   s    ||D,,e44r   c                 B    t        j                  | j                  |      S r   r   truedivr   rX   s     r	   __truediv__zObjectProxy.__truediv__   s     0 0%88r   c                      | j                   |z  S r   rU   rX   s     r	   __floordiv__zObjectProxy.__floordiv__   r^   r   c                      | j                   |z  S r   rU   rX   s     r	   __mod__zObjectProxy.__mod__   r[   r   c                 .    t        | j                  |      S r   divmodr   rX   s     r	   
__divmod__zObjectProxy.__divmod__   s    d&&..r   c                 0    t        | j                  |g| S r   powr   r   rY   argss      r	   __pow__zObjectProxy.__pow__   s    4##U2T22r   c                      | j                   |z  S r   rU   rX   s     r	   
__lshift__zObjectProxy.__lshift__  r^   r   c                      | j                   |z	  S r   rU   rX   s     r	   
__rshift__zObjectProxy.__rshift__  r^   r   c                      | j                   |z  S r   rU   rX   s     r	   __and__zObjectProxy.__and__  r[   r   c                      | j                   |z  S r   rU   rX   s     r	   __xor__zObjectProxy.__xor__
  r[   r   c                      | j                   |z  S r   rU   rX   s     r	   __or__zObjectProxy.__or__  r[   r   c                      || j                   z   S r   rU   rX   s     r	   __radd__zObjectProxy.__radd__      t''''r   c                      || j                   z
  S r   rU   rX   s     r	   __rsub__zObjectProxy.__rsub__  r   r   c                      || j                   z  S r   rU   rX   s     r	   __rmul__zObjectProxy.__rmul__  r   r   c                 B    t        j                  || j                        S r   r   rX   s     r	   __rdiv__zObjectProxy.__rdiv__  s    ||E4#3#344r   c                 B    t        j                  || j                        S r   r   rX   s     r	   __rtruediv__zObjectProxy.__rtruediv__  s    t'7'788r   c                      || j                   z  S r   rU   rX   s     r	   __rfloordiv__zObjectProxy.__rfloordiv__      ((((r   c                      || j                   z  S r   rU   rX   s     r	   __rmod__zObjectProxy.__rmod__"  r   r   c                 .    t        || j                        S r   r   rX   s     r	   __rdivmod__zObjectProxy.__rdivmod__%  s    eT--..r   c                 0    t        || j                  g| S r   r   r   s      r	   __rpow__zObjectProxy.__rpow__(  s    5$**2T22r   c                      || j                   z  S r   rU   rX   s     r	   __rlshift__zObjectProxy.__rlshift__+  r   r   c                      || j                   z	  S r   rU   rX   s     r	   __rrshift__zObjectProxy.__rrshift__.  r   r   c                      || j                   z  S r   rU   rX   s     r	   __rand__zObjectProxy.__rand__1  r   r   c                      || j                   z  S r   rU   rX   s     r	   __rxor__zObjectProxy.__rxor__4  r   r   c                      || j                   z  S r   rU   rX   s     r	   __ror__zObjectProxy.__ror__7  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __iadd__zObjectProxy.__iadd__:      E!r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __isub__zObjectProxy.__isub__>  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __imul__zObjectProxy.__imul__B  r   r   c                 P    t        j                  | j                  |      | _        | S r   )r   idivr   rX   s     r	   __idiv__zObjectProxy.__idiv__F  s     #==)9)95Ar   c                 P    t        j                  | j                  |      | _        | S r   )r   itruedivr   rX   s     r	   __itruediv__zObjectProxy.__itruediv__J  s"    #,,T-=-=uEr   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __ifloordiv__zObjectProxy.__ifloordiv__N      U"r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __imod__zObjectProxy.__imod__R  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __ipow__zObjectProxy.__ipow__V  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __ilshift__zObjectProxy.__ilshift__Z  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __irshift__zObjectProxy.__irshift__^  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __iand__zObjectProxy.__iand__b  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __ixor__zObjectProxy.__ixor__f  r   r   c                 0    | xj                   |z  c_         | S r   rU   rX   s     r	   __ior__zObjectProxy.__ior__j  r   r   c                     | j                    S r   rU   r   s    r	   __neg__zObjectProxy.__neg__n          r   c                     | j                   S r   rU   r   s    r	   __pos__zObjectProxy.__pos__q  r   r   c                 ,    t        | j                        S r   )absr   r   s    r	   __abs__zObjectProxy.__abs__t  rB   r   c                     | j                    S r   rU   r   s    r	   
__invert__zObjectProxy.__invert__w  r   r   c                 ,    t        | j                        S r   )intr   r   s    r	   __int__zObjectProxy.__int__z  rB   r   c                 ,    t        | j                        S r   )longr   r   s    r	   __long__zObjectProxy.__long__}  rj   r   c                 ,    t        | j                        S r   )floatr   r   s    r	   	__float__zObjectProxy.__float__  s    T%%&&r   c                 ,    t        | j                        S r   )complexr   r   s    r	   __complex__zObjectProxy.__complex__  s    t''((r   c                 ,    t        | j                        S r   )octr   r   s    r	   __oct__zObjectProxy.__oct__  rB   r   c                 ,    t        | j                        S r   )hexr   r   s    r	   __hex__zObjectProxy.__hex__  rB   r   c                 @    t        j                  | j                        S r   )r   indexr   r   s    r	   	__index__zObjectProxy.__index__  s    ~~d..//r   c                 ,    t        | j                        S r   )lenr   r   s    r	   __len__zObjectProxy.__len__  rB   r   c                     || j                   v S r   rU   r   s     r	   __contains__zObjectProxy.__contains__  s    ((((r   c                      | j                   |   S r   rU   r   keys     r	   __getitem__zObjectProxy.__getitem__  s    $$r   c                 "    || j                   |<   y r   rU   )r   r  r   s      r	   __setitem__zObjectProxy.__setitem__  s     %r   c                     | j                   |= y r   rU   r  s     r	   __delitem__zObjectProxy.__delitem__  s    S!r   c                      | j                   || S r   rU   r   ijs      r	   __getslice__zObjectProxy.__getslice__  s    !$$r   c                 "    || j                   || y r   rU   )r   r  r  r   s       r	   __setslice__zObjectProxy.__setslice__  s     %1r   c                 "    | j                   ||= y r   rU   r  s      r	   __delslice__zObjectProxy.__delslice__  s    QqS!r   c                 6    | j                   j                         S r   )r   	__enter__r   s    r	   r  zObjectProxy.__enter__  s    ))++r   c                 :     | j                   j                  |i |S r   )r   __exit__)r   r   kwargss      r	   r  zObjectProxy.__exit__  s     (t(($9&99r   c                 ,    t        | j                        S r   )iterr   r   s    r	   __iter__zObjectProxy.__iter__  rj   r   c                     t        d      )Nz#object proxy must define __copy__()NotImplementedErrorr   s    r	   __copy__zObjectProxy.__copy__  s    !"GHHr   c                     t        d      )Nz'object proxy must define __deepcopy__()r   )r   memos     r	   __deepcopy__zObjectProxy.__deepcopy__  s    !"KLLr   c                     t        d      Nz(object proxy must define __reduce_ex__()r   r   s    r	   
__reduce__zObjectProxy.__reduce__      !:< 	<r   c                     t        d      r'  r   )r   protocols     r	   __reduce_ex__zObjectProxy.__reduce_ex__  r)  r   N)ar!   r   r"   	__slots__r7   r#   r$   r=   rA   rE   PY2rH   rM   rP   rS   sys
hexversionrV   rZ   r]   r`   rb   rd   rf   ri   rn   rp   r4   r{   rt   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   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	   r0   r0   I   s/   I( ) ) __* * * * + +%% 	+&* 	+ ~~#	'()))()&&&#3J/,"(((59)(/3))((((((59)(/3))(((!!%!%&')%%0%)%&"%&",:&IM<<r   r0   c                       e Zd Zd Zy)CallableObjectProxyc                  <    d } ||  \  }}  |j                   | i |S )Nc                 
    | |fS r   r   r   r   s     r	   _unpack_selfz2CallableObjectProxy.__call__.<locals>._unpack_self      :r   rU   )r   r  r6  r   s       r	   __call__zCallableObjectProxy.__call__  s/    	 "4(
dt000r   Nr!   r   r"   r8  r   r   r	   r2  r2    s    1r   r2  c                   $     e Zd Z fdZd Z xZS )PartialCallableObjectProxyc                      d } ||  \  }} t        |       dk  rt        d      | d   | dd  } }t        |      st        d      t        t        |  |       | |_        ||_        y )Nc                 
    | |fS r   r   r5  s     r	   r6  z9PartialCallableObjectProxy.__init__.<locals>._unpack_self  r7  r      z(partial type takes at least one argumentr   z#the first argument must be callable)r  r}   callablesuperr;  r7   
_self_args_self_kwargs)r   r  r6  r   r6   r=   s        r	   r7   z#PartialCallableObjectProxy.__init__  su    	 "4(
dt9q=FGGQab ABB($8A"r   c                      d } ||  \  }} |j                   | z   }t        |j                        }|j                  |        |j                  |i |S )Nc                 
    | |fS r   r   r5  s     r	   r6  z9PartialCallableObjectProxy.__call__.<locals>._unpack_self  r7  r   )rA  dictrB  r(   r   )r   r  r6  r   _args_kwargss         r	   r8  z#PartialCallableObjectProxy.__call__  sY    	 "4(
d$&t(()vt2'22r   )r!   r   r"   r7   r8  __classcell__r=   s   @r	   r;  r;    s    #&3r   r;  c                   F     e Zd ZdZ	 	 d fd	Zd Zd Zd Zd Zd Z	 xZ
S )	_FunctionWrapperBase)_self_instance_self_wrapper_self_enabled_self_binding_self_parentc                    t         t        |   |       t        j	                  | d|       t        j	                  | d|       t        j	                  | d|       t        j	                  | d|       t        j	                  | d|       y )NrL  rM  rN  rO  rP  )r@  rK  r7   r3   r4   )r   r6   instancewrapperenabledbindingparentr=   s          r	   r7   z_FunctionWrapperBase.__init__  sp     	"D27;4!18<4':4':4':48r   c                    | j                   qt        j                  | j                        sP| j                  j	                  ||      }| j                  ||| j                  | j                  | j                  |       S | S | j                  }| j                  dk(  rn| j                   j                  j	                  ||      }| j                   j                  ||| j                  | j                  | j                  | j                         S | S )Nfunction)
rP  inspectisclassr   __get____bound_function_wrapper__rM  rN  rO  rL  )r   rR  owner
descriptors       r	   r[  z_FunctionWrapperBase.__get__  s    4 $??4#3#34!--55hF
66z8**D,>,>**D2 2 K &4+=+=+K**66>>e%J $$??$*<*<&&(:(:%%' '
 r   c                     d } ||  \  }} |j                   Ut        |j                         r"|j                         s0 |j                  | i |S |j                   s |j                  | i |S |j                  dv rC|j                  7t        |j                  dd       }||j                  |j                  || |      S |j                  |j                  |j                  | |      S )Nc                 
    | |fS r   r   r5  s     r	   r6  z3_FunctionWrapperBase.__call__.<locals>._unpack_self3  r7  r   )rX  classmethod__self__)rN  r?  r   rO  rL  ry   rM  )r   r  r6  r   rR  s        r	   r8  z_FunctionWrapperBase.__call__2  s    	 "4(
d )**+))++4++T<V<<'''t''888 !<<""*"4#3#3ZF'--d.>.> &* * !!$"2"2D4G4Gf 	r   c                 j    t        | j                  d      r| j                  j                  ||       y y )N__set_name__)rv   r   rd  )r   r]  r-   s      r	   rd  z!_FunctionWrapperBase.__set_name__Y  s/     4##^4))%6 5r   c                 .    t        || j                        S r   )
isinstancer   r   rR  s     r	   __instancecheck__z&_FunctionWrapperBase.__instancecheck__c  s     (D$4$455r   c                     t        |d      r t        |j                  | j                        S t        || j                        S )Nr   )rv   
issubclassr   )r   subclasss     r	   __subclasscheck__z&_FunctionWrapperBase.__subclasscheck__h  s:     8]+h22D4D4DEEh(8(899r   )NrX  N)r!   r   r"   r-  r7   r[  r8  rd  rh  rl  rH  rI  s   @r	   rK  rK    s3    -I <@'+	96p%N76

:r   rK  c                       e Zd Zd Zy)BoundFunctionWrapperc                  L   d } ||  \  }} |j                   Ut        |j                         r"|j                         s0 |j                  | i |S |j                   s |j                  | i |S |j                  dk(  ru|j                  A| st        d      | d   | dd  } }t        |j                  |      }|j                  ||| |      S |j                  |j                  |j                  | |      S t        |j                  dd       }|j                  |j                  || |      S )Nc                 
    | |fS r   r   r5  s     r	   r6  z3BoundFunctionWrapper.__call__.<locals>._unpack_selfw  r7  r   rX  z&missing 1 required positional argumentr   r>  rb  )	rN  r?  r   rO  rL  r}   r;  rM  ry   )r   r  r6  r   rR  r6   s         r	   r8  zBoundFunctionWrapper.__call__v  sA   	 "4(
d )**+))++4++T<V<<'''t''888 +""* #$LMM!%a$qr($4T5E5ExP))'8T6JJ%%d&6&68K8K&" "" t//TBH%%d&6&6$ r   Nr9  r   r   r	   rn  rn  t  s    ;r   rn  c                   $     e Zd ZeZd fd	Z xZS )FunctionWrapperc                     t        |t              rd}nFt        |t              rd}n3t        |d      r%t	        j
                  |j                        rd}nd}nd}t        t        | '  |d |||       y )Nra  staticmethodrb  rX  )
rf  ra  rt  rv   rY  rZ  rb  r@  rr  r7   )r   r6   rS  rT  rU  r=   s        r	   r7   zFunctionWrapper.__init__  sk    R g{+#G.$GWj)w//0'$ !Got-gtW	"r   r   )r!   r   r"   rn  r\  r7   rH  rI  s   @r	   rr  rr    s    !5Y" Y"r   rr  WRAPT_DISABLE_EXTENSIONSr>  )r0   r2  r;  rr  rn  rK  c                     t        | t              rt        |        t        j                  |    } | }|j                  d      }|d   }d } |||      }|dd  D ]  }|} |||      } |||fS )N.r   c                     t        j                  |       rCt        j                  |       D ]  }|t        |      v st        |      |   c S  t	        | |      S t	        | |      S r   )rY  rZ  getmror)   ry   )rV  	attributer,   s      r	   lookup_attributez&resolve_path.<locals>.lookup_attribute3  s]    ??6"~~f- 2S	)9Y//2 vy1169--r   r>  )rf  string_types
__import__r/  modulessplit)moduler-   rV  pathrz  r{  originals          r	   resolve_pathr    s    &,'6V$F::c?DQI.  	2H!"X 7	#FI67 Ix((r   c                     t        | ||       y r   )ru   )rV  rz  replacements      r	   apply_patchr  E  s    FI{+r   r   c                 X    t        | |      \  }}} ||g|i |}t        |||       |S r   )r  r  )	r  r-   factoryr   r  rV  rz  r  rS  s	            r	   wrap_objectr  H  s:    $0$>!VYh000G	7+Nr   c                   $    e Zd Zd Zd Zd Zd Zy)AttributeWrapperc                 <    || _         || _        || _        || _        y r   )rz  r  r   r  )r   rz  r  r   r  s        r	   r7   zAttributeWrapper.__init__V  s    "	r   c                     |j                   | j                     } | j                  |g| j                  i | j                  S r   )r   rz  r  r   r  )r   rR  r]  r   s       r	   r[  zAttributeWrapper.__get__\  s9    !!$..1t||E=DII===r   c                 6    ||j                   | j                  <   y r   r   rz  )r   rR  r   s      r	   __set__zAttributeWrapper.__set__`  s    ,1$..)r   c                 2    |j                   | j                  = y r   r  rg  s     r	   
__delete__zAttributeWrapper.__delete__c  s    dnn-r   N)r!   r   r"   r7   r[  r  r  r   r   r	   r  r  T  s    >2.r   r  c                     |j                  dd      \  }}t        | |      d   }t        ||||      }t        |||       |S )Nrw  r>  r   )rsplitr  r  r  )	r  r-   r  r   r  r  rz  rV  rS  s	            r	   wrap_object_attributer  f  sH    kk#q)OD)&$'*Fy'4@G	7+Nr   c                 &      fd}t         |      S )Nc                     |d   }|}nCt        j                  |      rj                  d |      }nj                  |t        |            }t	        ||      S )Nr   rY  rZ  r[  r*   rr  )r6   rR  r   r  target_wrappedtarget_wrapperrS  s         r	   _wrapperz"function_wrapper.<locals>._wrappers  sT    a$N__X&$__T8<N$__XtH~FN~~>>r   rr  )rS  r  s   ` r	   function_wrapperr  r  s    ? 7H--r   c                 (    t        | |t        |f      S r   r  rr  )r  r-   rS  s      r	   wrap_function_wrapperr  ~  s    vt_wjAAr   c                       fd}|S )Nc                 *    t        t        | f      S r   r  )rS  r  r-   s    r	   r  z(patch_function_wrapper.<locals>._wrapper  s    647*EEr   r   )r  r-   r  s   `` r	   patch_function_wrapperr    s    FOr   c                       fd}|S )Nc                 ,      fd}t         |      S )Nc                     |d   }|	nCt        j                  |      r	j                  d |      n	j                  |t        |            fd}t	        ||      S )Nr   c                     t        	      \  }}}t        |
      }t        |||       	  | |i |t        |||       S # t        |||       w xY wr   )r  rr  ru   )r6   rR  r   r  rV  rz  r  r  r  r-   r  s           r	   _executezRtransient_function_wrapper.<locals>._decorator.<locals>._wrapper.<locals>._execute  sY    0<VT0J-H-hG	;79"D3F3FIx8GFIx8s   A Ar  )
r6   rR  r   r  r  r  r  r  r-   rS  s
         @r	   r  z@transient_function_wrapper.<locals>._decorator.<locals>._wrapper  s[    !!WN!(*!(x!@!(4>!J9 #>8<<r   r  )rS  r  r  r-   s   ` r	   
_decoratorz.transient_function_wrapper.<locals>._decorator  s    	=" w11r   r   )r  r-   r  s   `` r	   transient_function_wrapperr    s    2& r   c                 B    |j                   ry d|_         |	 ||       y y )NT)_self_expired)refproxycallbacks      r	   _weak_function_proxy_callbackr    s*    E  r   c                   *     e Zd ZdZd fd	Zd Z xZS )WeakFunctionProxy)r  rL  c                    |xr t        j                  t        | |      }d| _        t	        |t
              rt        j                  |j                  |      | _        |j                  2t        t        | 3  t        j                  |j                  |             y t        t        | 3  t        j                  ||             y 	 t        j                  |j                  |      | _        t        t        | 3  t        j                  |j                  |             y # t         $ r1 d | _        t        t        | 3  t        j                  ||             Y y w xY w)N)r  r  F)	functoolspartialr  r  rf  rK  weakrefr  rL  rP  r@  r  r7   r  rb  __func__r5   )r   r6   r  	_callbackr=   s       r	   r7   zWeakFunctionProxy.__init__  s,     #!2!2-T!"#	 #g34")++g.D.D#D ##/'7g&:&:IFH  '7gy9; 
	7")++g.>.>	"JD#T3MM'"2"2I>@  	7"&D#T3MM'957	7s   AD 7EEc                      d } ||  \  }} |j                   xr |j                         }|j                  xr |j                  }| |j                  | i |S  |j                  |t        |            | i |S )Nc                 
    | |fS r   r   r5  s     r	   r6  z0WeakFunctionProxy.__call__.<locals>._unpack_self  r7  r   )rL  r   r[  r*   )r   r  r6  r   rR  rX  s         r	   r8  zWeakFunctionProxy.__call__  s    	 "4(
d &&@4+>+>+@##8(8(8 #4##T4V449x$x.94J6JJr   r   )r!   r   r"   r-  r7   r8  rH  rI  s   @r	   r  r    s    3I+7ZKr   r  )%osr/  r  r   r  rY  version_infor.  
basestringr|  rD   r
   r3   r   r*   r&   r0   r2  r;  rK  rn  rr  environget	_wrappersImportErrorr  r  r  r  r  r  r  r  r  r  r  r   r   r	   <module>r     sD   	 
    	qQ;L4L&),& ),V	:4 	:s<.!56 s<j1+ 1 3  3DH:; H:T=/ =~]"* ]"~	::>>45	8 	8')R, -/r .v .$ 79 
.B
>FK FKw  		s   +C9 9D D