a
    _                     @   s  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rJefZ	ne
fZ	dd ZG dd deZG dd deZG d	d
 d
eeZG dd deZG dd deZG dd deZG dd deZG dd deZz2e jdsddlmZmZmZmZmZmZ W n ey"   Y n0 dd Zdd Zdi fddZG dd  d eZdi fd!d"Zd#d$ Zd%d& Z d'd( Z!d)d* Z"d+d, Z#G d-d. d.eZ$dS )/    N   c                 G   s   | d|i S )z%Create a base class with a metaclass.ZNewBase )metabasesr   r   -lib/python3.9/site-packages/wrapt/wrappers.pywith_metaclass   s    r   c                   @   sX   e Zd Zedd Zejdd Zedd Zejdd Zedd Zed	d
 ZdS )_ObjectProxyMethodsc                 C   s   | j jS N__wrapped__
__module__selfr   r   r   r      s    z_ObjectProxyMethods.__module__c                 C   s   || j _d S r	   r
   r   valuer   r   r   r   "   s    c                 C   s   | j jS r	   r   __doc__r   r   r   r   r   &   s    z_ObjectProxyMethods.__doc__c                 C   s   || j _d S r	   r   r   r   r   r   r   *   s    c                 C   s   | j jS r	   )r   __dict__r   r   r   r   r   1   s    z_ObjectProxyMethods.__dict__c                 C   s   | j jS r	   )r   __weakref__r   r   r   r   r   :   s    z_ObjectProxyMethods.__weakref__N)__name__r   __qualname__propertysetterr   r   r   r   r   r   r   r      s   




r   c                   @   s   e Zd Zdd ZdS )_ObjectProxyMetaTypec                 C   s   | tt t| |||S r	   )updatevarsr   type__new__)clsnamer   Z
dictionaryr   r   r   r   ?   s    z_ObjectProxyMetaType.__new__N)r   r   r   r   r   r   r   r   r   >   s   r   c                   @   s(  e Zd ZdZdd Zedd Z e jdd Z edd Zejd	d Zed
d Zejdd Zdd Z	dd Z
es~dd Zdd Zdd Zesdd Zejdkrdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z d8d9 Z!d:d; Z"d<d= Z#d>d? Z$d@dA Z%dBdC Z&dDdE Z'dFdG Z(dHdI Z)dJdK Z*dLdM Z+dNdO Z,dPdQ Z-dRdS Z.dTdU Z/dVdW Z0dXdY Z1dZd[ Z2d\d] Z3d^d_ Z4d`da Z5dbdc Z6ddde Z7dfdg Z8dhdi Z9djdk Z:dldm Z;dndo Z<dpdq Z=drds Z>dtdu Z?dvdw Z@dxdy ZAdzd{ ZBd|d} ZCd~d ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd ZadS )ObjectProxyr   c                 C   s:   t | d| zt | d|j W n ty4   Y n0 d S )Nr   r   )object__setattr__r   AttributeError)r   wrappedr   r   r   __init__M   s
    zObjectProxy.__init__c                 C   s   | j jS r	   r   r   r   r   r   r   r   Y   s    zObjectProxy.__name__c                 C   s   || j _d S r	   r&   r   r   r   r   r   ]   s    c                 C   s   | j jS r	   r   	__class__r   r   r   r   r(   a   s    zObjectProxy.__class__c                 C   s   || j _d S r	   r'   r   r   r   r   r(   e   s    c                 C   s   | j jS r	   r   __annotations__r   r   r   r   r*   i   s    zObjectProxy.__annotations__c                 C   s   || j _d S r	   r)   r   r   r   r   r*   m   s    c                 C   s
   t | jS r	   )dirr   r   r   r   r   __dir__q   s    zObjectProxy.__dir__c                 C   s
   t | jS r	   )strr   r   r   r   r   __str__t   s    zObjectProxy.__str__c                 C   s
   t | jS r	   )bytesr   r   r   r   r   	__bytes__x   s    zObjectProxy.__bytes__c                 C   s(   d t| jt| t| jjt| jS )Nz<{} at 0x{:x} for {} at 0x{:x}>)formatr   r   idr   r   r   r   r   __repr__{   s
    
zObjectProxy.__repr__c                 C   s
   t | jS r	   )reversedr   r   r   r   r   __reversed__   s    zObjectProxy.__reversed__c                 C   s
   t | jS r	   )roundr   r   r   r   r   	__round__   s    zObjectProxy.__round__i  c                 C   s   | j fS r	   r   )r   r   r   r   r   __mro_entries__   s    zObjectProxy.__mro_entries__c                 C   s
   | j |k S r	   r8   r   otherr   r   r   __lt__   s    zObjectProxy.__lt__c                 C   s
   | j |kS r	   r8   r:   r   r   r   __le__   s    zObjectProxy.__le__c                 C   s
   | j |kS r	   r8   r:   r   r   r   __eq__   s    zObjectProxy.__eq__c                 C   s
   | j |kS r	   r8   r:   r   r   r   __ne__   s    zObjectProxy.__ne__c                 C   s
   | j |kS r	   r8   r:   r   r   r   __gt__   s    zObjectProxy.__gt__c                 C   s
   | j |kS r	   r8   r:   r   r   r   __ge__   s    zObjectProxy.__ge__c                 C   s
   t | jS r	   )hashr   r   r   r   r   __hash__   s    zObjectProxy.__hash__c                 C   s
   t | jS r	   boolr   r   r   r   r   __nonzero__   s    zObjectProxy.__nonzero__c                 C   s
   t | jS r	   rD   r   r   r   r   __bool__   s    zObjectProxy.__bool__c                 C   s   | drt| || n|dkr~t| || zt| d W n tyR   Y n0 zt| d|j W q tyz   Y q0 nR|dkrt| j|| t| || n,tt	| |rt| || nt| j|| d S )N_self_r   r   )

startswithr!   r"   __delattr__r#   r   setattrr   hasattrr   )r   r   r   r   r   r   r"      s$    
zObjectProxy.__setattr__c                 C   s   |dkrt dt| j|S )Nr   z wrapper has not been initialised)
ValueErrorgetattrr   r   r   r   r   r   __getattr__   s    zObjectProxy.__getattr__c                 C   sx   | drt| | n\|dkr*tdnJ|dkrLt| | t| j| n(tt| |rht| | nt| j| d S )NrH   r   z__wrapped__ must be an objectr   )rI   r!   rJ   	TypeErrordelattrr   rL   r   rO   r   r   r   rJ      s    

zObjectProxy.__delattr__c                 C   s
   | j | S r	   r8   r:   r   r   r   __add__   s    zObjectProxy.__add__c                 C   s
   | j | S r	   r8   r:   r   r   r   __sub__   s    zObjectProxy.__sub__c                 C   s
   | j | S r	   r8   r:   r   r   r   __mul__   s    zObjectProxy.__mul__c                 C   s   t | j|S r	   operatorZdivr   r:   r   r   r   __div__   s    zObjectProxy.__div__c                 C   s   t | j|S r	   rW   truedivr   r:   r   r   r   __truediv__   s    zObjectProxy.__truediv__c                 C   s
   | j | S r	   r8   r:   r   r   r   __floordiv__   s    zObjectProxy.__floordiv__c                 C   s
   | j | S r	   r8   r:   r   r   r   __mod__   s    zObjectProxy.__mod__c                 C   s   t | j|S r	   divmodr   r:   r   r   r   
__divmod__   s    zObjectProxy.__divmod__c                 G   s   t | j|g|R  S r	   powr   r   r;   argsr   r   r   __pow__   s    zObjectProxy.__pow__c                 C   s
   | j |> S r	   r8   r:   r   r   r   
__lshift__   s    zObjectProxy.__lshift__c                 C   s
   | j |? S r	   r8   r:   r   r   r   
__rshift__   s    zObjectProxy.__rshift__c                 C   s
   | j |@ S r	   r8   r:   r   r   r   __and__   s    zObjectProxy.__and__c                 C   s
   | j |A S r	   r8   r:   r   r   r   __xor__   s    zObjectProxy.__xor__c                 C   s
   | j |B S r	   r8   r:   r   r   r   __or__  s    zObjectProxy.__or__c                 C   s
   || j  S r	   r8   r:   r   r   r   __radd__  s    zObjectProxy.__radd__c                 C   s
   || j  S r	   r8   r:   r   r   r   __rsub__  s    zObjectProxy.__rsub__c                 C   s
   || j  S r	   r8   r:   r   r   r   __rmul__
  s    zObjectProxy.__rmul__c                 C   s   t || jS r	   rV   r:   r   r   r   __rdiv__  s    zObjectProxy.__rdiv__c                 C   s   t || jS r	   rY   r:   r   r   r   __rtruediv__  s    zObjectProxy.__rtruediv__c                 C   s
   || j  S r	   r8   r:   r   r   r   __rfloordiv__  s    zObjectProxy.__rfloordiv__c                 C   s
   || j  S r	   r8   r:   r   r   r   __rmod__  s    zObjectProxy.__rmod__c                 C   s   t || jS r	   r^   r:   r   r   r   __rdivmod__  s    zObjectProxy.__rdivmod__c                 G   s   t || jg|R  S r	   ra   rc   r   r   r   __rpow__  s    zObjectProxy.__rpow__c                 C   s
   || j > S r	   r8   r:   r   r   r   __rlshift__  s    zObjectProxy.__rlshift__c                 C   s
   || j ? S r	   r8   r:   r   r   r   __rrshift__"  s    zObjectProxy.__rrshift__c                 C   s
   || j @ S r	   r8   r:   r   r   r   __rand__%  s    zObjectProxy.__rand__c                 C   s
   || j A S r	   r8   r:   r   r   r   __rxor__(  s    zObjectProxy.__rxor__c                 C   s
   || j B S r	   r8   r:   r   r   r   __ror__+  s    zObjectProxy.__ror__c                 C   s   |  j |7  _ | S r	   r8   r:   r   r   r   __iadd__.  s    zObjectProxy.__iadd__c                 C   s   |  j |8  _ | S r	   r8   r:   r   r   r   __isub__2  s    zObjectProxy.__isub__c                 C   s   |  j |9  _ | S r	   r8   r:   r   r   r   __imul__6  s    zObjectProxy.__imul__c                 C   s   t | j|| _| S r	   )rW   Zidivr   r:   r   r   r   __idiv__:  s    zObjectProxy.__idiv__c                 C   s   t | j|| _| S r	   )rW   itruedivr   r:   r   r   r   __itruediv__>  s    zObjectProxy.__itruediv__c                 C   s   |  j |  _ | S r	   r8   r:   r   r   r   __ifloordiv__B  s    zObjectProxy.__ifloordiv__c                 C   s   |  j |;  _ | S r	   r8   r:   r   r   r   __imod__F  s    zObjectProxy.__imod__c                 C   s   |  j |C  _ | S r	   r8   r:   r   r   r   __ipow__J  s    zObjectProxy.__ipow__c                 C   s   |  j |K  _ | S r	   r8   r:   r   r   r   __ilshift__N  s    zObjectProxy.__ilshift__c                 C   s   |  j |L  _ | S r	   r8   r:   r   r   r   __irshift__R  s    zObjectProxy.__irshift__c                 C   s   |  j |M  _ | S r	   r8   r:   r   r   r   __iand__V  s    zObjectProxy.__iand__c                 C   s   |  j |N  _ | S r	   r8   r:   r   r   r   __ixor__Z  s    zObjectProxy.__ixor__c                 C   s   |  j |O  _ | S r	   r8   r:   r   r   r   __ior__^  s    zObjectProxy.__ior__c                 C   s   | j  S r	   r8   r   r   r   r   __neg__b  s    zObjectProxy.__neg__c                 C   s   | j 
 S r	   r8   r   r   r   r   __pos__e  s    zObjectProxy.__pos__c                 C   s
   t | jS r	   )absr   r   r   r   r   __abs__h  s    zObjectProxy.__abs__c                 C   s   | j  S r	   r8   r   r   r   r   
__invert__k  s    zObjectProxy.__invert__c                 C   s
   t | jS r	   )intr   r   r   r   r   __int__n  s    zObjectProxy.__int__c                 C   s
   t | jS r	   )Zlongr   r   r   r   r   __long__q  s    zObjectProxy.__long__c                 C   s
   t | jS r	   )floatr   r   r   r   r   	__float__t  s    zObjectProxy.__float__c                 C   s
   t | jS r	   )complexr   r   r   r   r   __complex__w  s    zObjectProxy.__complex__c                 C   s
   t | jS r	   )octr   r   r   r   r   __oct__z  s    zObjectProxy.__oct__c                 C   s
   t | jS r	   )hexr   r   r   r   r   __hex__}  s    zObjectProxy.__hex__c                 C   s   t | jS r	   )rW   indexr   r   r   r   r   	__index__  s    zObjectProxy.__index__c                 C   s
   t | jS r	   )lenr   r   r   r   r   __len__  s    zObjectProxy.__len__c                 C   s
   || j v S r	   r8   r   r   r   r   __contains__  s    zObjectProxy.__contains__c                 C   s
   | j | S r	   r8   r   keyr   r   r   __getitem__  s    zObjectProxy.__getitem__c                 C   s   || j |< d S r	   r8   )r   r   r   r   r   r   __setitem__  s    zObjectProxy.__setitem__c                 C   s   | j |= d S r	   r8   r   r   r   r   __delitem__  s    zObjectProxy.__delitem__c                 C   s   | j || S r	   r8   r   ijr   r   r   __getslice__  s    zObjectProxy.__getslice__c                 C   s   || j ||< d S r	   r8   )r   r   r   r   r   r   r   __setslice__  s    zObjectProxy.__setslice__c                 C   s   | j ||= d S r	   r8   r   r   r   r   __delslice__  s    zObjectProxy.__delslice__c                 C   s
   | j  S r	   )r   	__enter__r   r   r   r   r     s    zObjectProxy.__enter__c                 O   s   | j j|i |S r	   )r   __exit__r   rd   kwargsr   r   r   r     s    zObjectProxy.__exit__c                 C   s
   t | jS r	   )iterr   r   r   r   r   __iter__  s    zObjectProxy.__iter__c                 C   s   t dd S )Nz#object proxy must define __copy__()NotImplementedErrorr   r   r   r   __copy__  s    zObjectProxy.__copy__c                 C   s   t dd S )Nz'object proxy must define __deepcopy__()r   )r   memor   r   r   __deepcopy__  s    zObjectProxy.__deepcopy__c                 C   s   t dd S Nz(object proxy must define __reduce_ex__()r   r   r   r   r   
__reduce__  s    zObjectProxy.__reduce__c                 C   s   t dd S r   r   )r   Zprotocolr   r   r   __reduce_ex__  s    zObjectProxy.__reduce_ex__N)br   r   r   	__slots__r%   r   r   r(   r*   r,   r.   PY2r0   r3   r5   r7   sys
hexversionr9   r<   r=   r>   r?   r@   rA   rC   rF   rG   r"   rP   rJ   rS   rT   rU   rX   r[   r\   r]   r`   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   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    I   s   






	r    c                   @   s   e Zd Zdd ZdS )CallableObjectProxyc                 O   s   | j |i |S r	   r8   r   r   r   r   __call__  s    zCallableObjectProxy.__call__Nr   r   r   r   r   r   r   r   r     s   r   c                       s$   e Zd Z fddZdd Z  ZS )PartialCallableObjectProxyc                    sZ   t |dk rtd|d |dd   }}t|s:tdtt| | || _|| _d S )N   z(partial type takes at least one argumentr   z#the first argument must be callable)r   rQ   callablesuperr   r%   
_self_args_self_kwargs)r   rd   r   r$   r(   r   r   r%     s    z#PartialCallableObjectProxy.__init__c                 O   s.   | j | }t| j}|| | j|i |S r	   )r   dictr   r   r   )r   rd   r   Z_argsZ_kwargsr   r   r   r     s    


z#PartialCallableObjectProxy.__call__)r   r   r   r%   r   __classcell__r   r   r   r   r     s   r   c                       s2   e Zd ZdZd
 fdd	Zdd Zdd	 Z  ZS )_FunctionWrapperBase)_self_instance_self_wrapper_self_enabled_self_binding_self_parentNfunctionc                    sZ   t t| | t| d| t| d| t| d| t| d| t| d| d S )Nr   r   r   r   r   )r   r   r%   r!   r"   )r   r$   instancewrapperenabledbindingparentr   r   r   r%     s    z_FunctionWrapperBase.__init__c                 C   s   | j d u rBt| js>| j||}| ||| j| j| j| S | S | j	d u r| jdkr| j j||}| j ||| j| j| j| j S | S )Nr   )
r   inspectisclassr   __get____bound_function_wrapper__r   r   r   r   )r   r   ownerZ
descriptorr   r   r   r     s$    
z_FunctionWrapperBase.__get__c                 O   s   | j d urDt| j r.|   sD| j|i |S n| j sD| j|i |S | jdkr| jd u rt| jdd }|d ur| | j|||S | | j| j||S )Nr   __self__)r   r   r   r   r   rN   r   )r   rd   r   r   r   r   r   r     s     




	z_FunctionWrapperBase.__call__)Nr   N)r   r   r   r   r%   r   r   r   r   r   r   r   r     s     8r   c                   @   s   e Zd Zdd ZdS )BoundFunctionWrapperc                 O   s   | j d urDt| j r.|   sD| j|i |S n| j sD| j|i |S | jdkr| jd u r|sdtd|d |dd   }}t| j|}| ||||S | | j| j||S t| jdd }| | j|||S d S )Nr   z&missing 1 required positional argumentr   r   r   )	r   r   r   r   r   rQ   r   r   rN   )r   rd   r   r   r$   r   r   r   r   ;  s(    



zBoundFunctionWrapper.__call__Nr   r   r   r   r   r   9  s   r   c                       s"   e Zd ZeZd fdd	Z  ZS )FunctionWrapperNc                    sb   t |trd}n6t |tr d}n&t|drBt|jr<d}qFd}nd}tt| 	|d ||| d S )Nclassmethodstaticmethodr   r   )

isinstancer   r   rL   r   r   r   r   r   r%   )r   r$   r   r   r   r   r   r   r%   w  s    I


zFunctionWrapper.__init__)N)r   r   r   r   r   r%   r   r   r   r   r   r   s  s   r   ZWRAPT_DISABLE_EXTENSIONSr   )r    r   r   r   r   r   c                 C   sn   t | trt|  tj|  } | }|d}|d }dd }|||}|dd  D ]}|}|||}qP|||fS )N.r   c                 S   sN   t | r@t | D ] }|t|v rt||   S qt| |S t| |S d S r	   )r   r   Zgetmror   rN   )r   	attributer   r   r   r   lookup_attribute  s    

z&resolve_path.<locals>.lookup_attributer   )r   string_types
__import__r   modulessplit)moduler   r   pathr   r   originalr   r   r   resolve_path  s    




r   c                 C   s   t | || d S r	   )rK   )r   r   replacementr   r   r   apply_patch  s    r   r   c           	      C   s6   t | |\}}}||g|R i |}t||| |S r	   )r   r   )	r   r   factoryrd   r   r   r   r   r   r   r   r   wrap_object  s    r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
AttributeWrapperc                 C   s   || _ || _|| _|| _d S r	   )r   r   rd   r   )r   r   r   rd   r   r   r   r   r%     s    zAttributeWrapper.__init__c                 C   s(   |j | j }| j|g| jR i | jS r	   )r   r   r   rd   r   )r   r   r   r   r   r   r   r     s    zAttributeWrapper.__get__c                 C   s   ||j | j< d S r	   r   r   )r   r   r   r   r   r   __set__   s    zAttributeWrapper.__set__c                 C   s   |j | j= d S r	   r   )r   r   r   r   r   
__delete__#  s    zAttributeWrapper.__delete__N)r   r   r   r%   r   r   r   r   r   r   r   r     s   r   c           	      C   s<   | dd\}}t| |d }t||||}t||| |S )Nr   r   r   )rsplitr   r   r   )	r   r   r   rd   r   r   r   r   r   r   r   r   wrap_object_attribute&  s
    r   c                    s    fdd}t  |S )Nc                    sH   |d }|d u r }n(t |r. d |}n |t|}t||S )Nr   r   r   r   r   r   )r$   r   rd   r   target_wrappedtarget_wrapperr   r   r   _wrapper3  s    
z"function_wrapper.<locals>._wrapperr   r   r   r   r   r   function_wrapper2  s    	r   c                 C   s   t | |t|fS r	   r   r   r   r   r   r   r   r   wrap_function_wrapper>  s    r   c                    s    fdd}|S )Nc                    s   t  t| fS r	   r   r   r   r   r   r   r   B  s    z(patch_function_wrapper.<locals>._wrapperr   )r   r   r   r   r   r   patch_function_wrapperA  s    r   c                    s    fdd}|S )Nc                    s    fdd}t  |S )Nc                    sX   |d }|d u r n(t |r.d | n|t|  fdd}t||S )Nr   c              
      sV   t  \}}}t|}t||| z| |i |W t||| S t||| 0 d S r	   )r   r   rK   )r$   r   rd   r   r   r   r   r   )r   r   r   r   r   _executeP  s    
zRtransient_function_wrapper.<locals>._decorator.<locals>._wrapper.<locals>._executer   )r$   r   rd   r   r   r   r   )r   r   r   H  s    
z@transient_function_wrapper.<locals>._decorator.<locals>._wrapperr   r   r   r   r   
_decoratorG  s    z.transient_function_wrapper.<locals>._decoratorr   )r   r   r   r   r   r   transient_function_wrapperF  s    r   c                 C   s$   |j r
d S d|_ |d ur || d S )NT)_self_expired)refproxycallbackr   r   r   _weak_function_proxy_callbacke  s
    r  c                       s*   e Zd ZdZd fdd	Zdd Z  ZS )WeakFunctionProxy)r  r   Nc              	      s   |ot jt| |d}d| _t|trvt|j|| _|j	d urZt
t| t|j	| nt
t| t|| d S z.t|j|| _t
t| t|j| W n0 ty   d | _t
t| t|| Y n0 d S )N)r  r  F)	functoolspartialr  r  r   r   weakrefr  r   r   r   r  r%   r  r   __func__r#   )r   r$   r  Z	_callbackr   r   r   r%   v  s6    







zWeakFunctionProxy.__init__c                 O   sL   | j o|   }| jo| j}|d u r2| j|i |S ||t||i |S r	   )r   r   r   r   )r   rd   r   r   r   r   r   r   r     s
    zWeakFunctionProxy.__call__)N)r   r   r   r   r%   r   r   r   r   r   r   r  r  s   -r  )%osr   r  rW   r	  r   version_infor   Z
basestringr   r-   r   r!   r   r   r   r    r   r   r   r   r   environgetZ	_wrappersImportErrorr   r   r   r   r   r   r   r   r   r  r  r   r   r   r   <module>   sH   +  kj:_$)