U
    ]gp                     @   s   d dl Z d dlZd dlZe jd  dkZer2e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dS )    N   c                 G   s   | d|i S )z%Create a base class with a metaclass.ZNewBase )metabasesr   r   2/tmp/pip-unpacked-wheel-8a6eta5t/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   .   s    z_ObjectProxyMethods.__dict__c                 C   s   | j jS r	   )r   __weakref__r   r   r   r   r   7   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   
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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sldd Zdd Zdd Zdd Zesdd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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 Zadd ZbdS )ObjectProxyr   c                 C   sf   t | d| zt | d|j W n tk
r6   Y nX zt | d|j W n tk
r`   Y nX d S )Nr   r   __annotations__)object__setattr__r   AttributeErrorr"   )r   wrappedr   r   r   __init__J   s    zObjectProxy.__init__c                 C   s   t | || d S r	   )r#   r$   r   r   r   r   r   r   __self_setattr__^   s    zObjectProxy.__self_setattr__c                 C   s   | j jS r	   r   r   r   r   r   r   r   a   s    zObjectProxy.__name__c                 C   s   || j _d S r	   r*   r   r   r   r   r   e   s    c                 C   s   | j jS r	   r   	__class__r   r   r   r   r,   i   s    zObjectProxy.__class__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	   )r3   r   )r   format_specr   r   r   
__format__   s    zObjectProxy.__format__c                 C   s
   t | jS r	   )reversedr   r   r   r   r   __reversed__   s    zObjectProxy.__reversed__Nc                 C   s   t | j|S r	   )roundr   )r   ndigitsr   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	   r=   r   otherr   r   r   __lt__   s    zObjectProxy.__lt__c                 C   s
   | j |kS r	   r=   r?   r   r   r   __le__   s    zObjectProxy.__le__c                 C   s
   | j |kS r	   r=   r?   r   r   r   __eq__   s    zObjectProxy.__eq__c                 C   s
   | j |kS r	   r=   r?   r   r   r   __ne__   s    zObjectProxy.__ne__c                 C   s
   | j |kS r	   r=   r?   r   r   r   __gt__   s    zObjectProxy.__gt__c                 C   s
   | j |kS r	   r=   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	   rI   r   r   r   r   __bool__   s    zObjectProxy.__bool__c                 C   sT  | drt| || n4|dkrt| || zt| d W n tk
rV   Y nX zt| d|j W n tk
r   Y nX zt| d W n tk
r   Y nX zt| d|j W n tk
r   Y nX n||dkrt| j|| t| || nV|dkr"t| j|| t| || n.t	t
| |rBt| || nt| j|| d S )N_self_r   r   r"   )
startswithr#   r$   __delattr__r%   r   r"   setattrr   hasattrr   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 )NrM   r   z__wrapped__ must be an objectr   )rN   r#   rO   	TypeErrordelattrr   rQ   r   rT   r   r   r   rO      s    

zObjectProxy.__delattr__c                 C   s
   | j | S r	   r=   r?   r   r   r   __add__   s    zObjectProxy.__add__c                 C   s
   | j | S r	   r=   r?   r   r   r   __sub__   s    zObjectProxy.__sub__c                 C   s
   | j | S r	   r=   r?   r   r   r   __mul__   s    zObjectProxy.__mul__c                 C   s   t | j|S r	   operatordivr   r?   r   r   r   __div__   s    zObjectProxy.__div__c                 C   s   t | j|S r	   r\   truedivr   r?   r   r   r   __truediv__   s    zObjectProxy.__truediv__c                 C   s
   | j | S r	   r=   r?   r   r   r   __floordiv__   s    zObjectProxy.__floordiv__c                 C   s
   | j | S r	   r=   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|f| S r	   powr   r   r@   argsr   r   r   __pow__  s    zObjectProxy.__pow__c                 C   s
   | j |> S r	   r=   r?   r   r   r   
__lshift__  s    zObjectProxy.__lshift__c                 C   s
   | j |? S r	   r=   r?   r   r   r   
__rshift__  s    zObjectProxy.__rshift__c                 C   s
   | j |@ S r	   r=   r?   r   r   r   __and__
  s    zObjectProxy.__and__c                 C   s
   | j |A S r	   r=   r?   r   r   r   __xor__  s    zObjectProxy.__xor__c                 C   s
   | j |B S r	   r=   r?   r   r   r   __or__  s    zObjectProxy.__or__c                 C   s
   || j  S r	   r=   r?   r   r   r   __radd__  s    zObjectProxy.__radd__c                 C   s
   || j  S r	   r=   r?   r   r   r   __rsub__  s    zObjectProxy.__rsub__c                 C   s
   || j  S r	   r=   r?   r   r   r   __rmul__  s    zObjectProxy.__rmul__c                 C   s   t || jS r	   r[   r?   r   r   r   __rdiv__  s    zObjectProxy.__rdiv__c                 C   s   t || jS r	   r_   r?   r   r   r   __rtruediv__  s    zObjectProxy.__rtruediv__c                 C   s
   || j  S r	   r=   r?   r   r   r   __rfloordiv__"  s    zObjectProxy.__rfloordiv__c                 C   s
   || j  S r	   r=   r?   r   r   r   __rmod__%  s    zObjectProxy.__rmod__c                 C   s   t || jS r	   rd   r?   r   r   r   __rdivmod__(  s    zObjectProxy.__rdivmod__c                 G   s   t || jf| S r	   rg   ri   r   r   r   __rpow__+  s    zObjectProxy.__rpow__c                 C   s
   || j > S r	   r=   r?   r   r   r   __rlshift__.  s    zObjectProxy.__rlshift__c                 C   s
   || j ? S r	   r=   r?   r   r   r   __rrshift__1  s    zObjectProxy.__rrshift__c                 C   s
   || j @ S r	   r=   r?   r   r   r   __rand__4  s    zObjectProxy.__rand__c                 C   s
   || j A S r	   r=   r?   r   r   r   __rxor__7  s    zObjectProxy.__rxor__c                 C   s
   || j B S r	   r=   r?   r   r   r   __ror__:  s    zObjectProxy.__ror__c                 C   s   |  j |7  _ | S r	   r=   r?   r   r   r   __iadd__=  s    zObjectProxy.__iadd__c                 C   s   |  j |8  _ | S r	   r=   r?   r   r   r   __isub__A  s    zObjectProxy.__isub__c                 C   s   |  j |9  _ | S r	   r=   r?   r   r   r   __imul__E  s    zObjectProxy.__imul__c                 C   s   t | j|| _| S r	   )r\   Zidivr   r?   r   r   r   __idiv__I  s    zObjectProxy.__idiv__c                 C   s   t | j|| _| S r	   )r\   itruedivr   r?   r   r   r   __itruediv__M  s    zObjectProxy.__itruediv__c                 C   s   |  j |  _ | S r	   r=   r?   r   r   r   __ifloordiv__Q  s    zObjectProxy.__ifloordiv__c                 C   s   |  j |;  _ | S r	   r=   r?   r   r   r   __imod__U  s    zObjectProxy.__imod__c                 C   s   |  j |C  _ | S r	   r=   r?   r   r   r   __ipow__Y  s    zObjectProxy.__ipow__c                 C   s   |  j |K  _ | S r	   r=   r?   r   r   r   __ilshift__]  s    zObjectProxy.__ilshift__c                 C   s   |  j |L  _ | S r	   r=   r?   r   r   r   __irshift__a  s    zObjectProxy.__irshift__c                 C   s   |  j |M  _ | S r	   r=   r?   r   r   r   __iand__e  s    zObjectProxy.__iand__c                 C   s   |  j |N  _ | S r	   r=   r?   r   r   r   __ixor__i  s    zObjectProxy.__ixor__c                 C   s   |  j |O  _ | S r	   r=   r?   r   r   r   __ior__m  s    zObjectProxy.__ior__c                 C   s   | j  S r	   r=   r   r   r   r   __neg__q  s    zObjectProxy.__neg__c                 C   s   | j 
 S r	   r=   r   r   r   r   __pos__t  s    zObjectProxy.__pos__c                 C   s
   t | jS r	   )absr   r   r   r   r   __abs__w  s    zObjectProxy.__abs__c                 C   s   | j  S r	   r=   r   r   r   r   
__invert__z  s    zObjectProxy.__invert__c                 C   s
   t | jS r	   )intr   r   r   r   r   __int__}  s    zObjectProxy.__int__c                 C   s
   t | jS r	   )longr   r   r   r   r   __long__  s    zObjectProxy.__long__c                 C   s
   t | jS r	   )floatr   r   r   r   r   	__float__  s    zObjectProxy.__float__c                 C   s
   t | jS r	   )complexr   r   r   r   r   __complex__  s    zObjectProxy.__complex__c                 C   s
   t | jS r	   )octr   r   r   r   r   __oct__  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	   )r\   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 kS r	   r=   r   r   r   r   __contains__  s    zObjectProxy.__contains__c                 C   s
   | j | S r	   r=   r   keyr   r   r   __getitem__  s    zObjectProxy.__getitem__c                 C   s   || j |< d S r	   r=   )r   r   r   r   r   r   __setitem__  s    zObjectProxy.__setitem__c                 C   s   | j |= d S r	   r=   r   r   r   r   __delitem__  s    zObjectProxy.__delitem__c                 C   s   | j || S r	   r=   r   ijr   r   r   __getslice__  s    zObjectProxy.__getslice__c                 C   s   || j ||< d S r	   r=   )r   r   r   r   r   r   r   __setslice__  s    zObjectProxy.__setslice__c                 C   s   | j ||= d S r	   r=   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||S r	   )r   __exit__)r   rj   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__()r   r   r   r   r   
__reduce__  s    zObjectProxy.__reduce__c                 C   s   t dd S )Nz(object proxy must define __reduce_ex__()r   )r   protocolr   r   r   __reduce_ex__  s    zObjectProxy.__reduce_ex__)N)cr   r   r   	__slots__r'   r)   r   r   r,   r.   r0   PY2r2   r5   r7   r9   r<   sys
hexversionr>   rA   rB   rC   rD   rE   rF   rH   rK   rL   r$   rU   rO   rX   rY   rZ   r^   ra   rb   rc   rf   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   r   r   r   r   r   r!   F   s   





%	r!   c                   @   s   e Zd Zdd ZdS )CallableObjectProxyc                  O   s    dd }||  \}} |j | |S )Nc                 W   s   | |fS r	   r   r   rj   r   r   r   _unpack_self  s    z2CallableObjectProxy.__call__.<locals>._unpack_selfr=   )rj   r   r   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                     sn   dd }||  \}} t | dk r(td| d | dd   }} t|sNtdtt|| | |_||_d S )Nc                 W   s   | |fS r	   r   r   r   r   r   r     s    z9PartialCallableObjectProxy.__init__.<locals>._unpack_self   z(partial type takes at least one argumentr   z#the first argument must be callable)r   rV   callablesuperr   r'   
_self_args_self_kwargs)rj   r   r   r   r&   r,   r   r   r'     s    z#PartialCallableObjectProxy.__init__c                  O   s>   dd }||  \}} |j |  }t|j}|| |j||S )Nc                 W   s   | |fS r	   r   r   r   r   r   r     s    z9PartialCallableObjectProxy.__call__.<locals>._unpack_self)r   dictr   r   r   )rj   r   r   r   _args_kwargsr   r   r   r     s    


z#PartialCallableObjectProxy.__call__)r   r   r   r'   r   __classcell__r   r   r   r   r     s   r   c                       sJ   e Zd ZdZd fdd	Zdd Zdd	 Zd
d Zdd Zdd Z	  Z
S )_FunctionWrapperBase)_self_instance_self_wrapper_self_enabled_self_binding_self_parent_self_ownerNr   c                    sh   t t| | t| d| t| d| t| d| t| d| t| d| t| d| d S )Nr   r   r   r   r   r   )r   r   r'   r#   r$   )r   r&   instancewrapperenabledbindingparentownerr   r   r   r'     s    z_FunctionWrapperBase.__init__c              	   C   s   | j d krf| jdkr| S | jdkr&| S t| jdd }|d kr@| S |||}| ||| j| j| j| |S | jd kr| jdkr| j j||}| j ||| j| j| j| j |S | S )Nbuiltinclass__get__)functioninstancemethodr   )	r   r   rS   r   __bound_function_wrapper__r   r   r   r   )r   r   r   ZbinderZ
descriptorr   r   r   r     s>    



        z_FunctionWrapperBase.__get__c                  O   s   dd }||  \}} |j d k	rPt|j r>|  sP|j| |S n|j sP|j| |S |jdkr|jd krt|jdd }|d k	r||j|| |S ||j|j| |S )Nc                 W   s   | |fS r	   r   r   r   r   r   r   >  s    z3_FunctionWrapperBase.__call__.<locals>._unpack_self)r   r   classmethodr   __self__)r   r   r   r   r   rS   r   )rj   r   r   r   r   r   r   r   r   =  s(    




 	 z_FunctionWrapperBase.__call__c                 C   s   t | jdr| j|| d S )N__set_name__)rQ   r   r   )r   r   r   r   r   r   r   d  s    z!_FunctionWrapperBase.__set_name__c                 C   s   t || jS r	   )
isinstancer   )r   r   r   r   r   __instancecheck__n  s    z&_FunctionWrapperBase.__instancecheck__c                 C   s(   t |drt|j| jS t|| jS d S )Nr   )rQ   
issubclassr   )r   subclassr   r   r   __subclasscheck__s  s    
z&_FunctionWrapperBase.__subclasscheck__)Nr   NN)r   r   r   r   r'   r   r   r   r   r   r   r   r   r   r   r     s         ?'
r   c                   @   s   e Zd Zdd ZdS )BoundFunctionWrapperc                  O   sH  dd }||  \}} |j d k	rPt|j r>|  sP|j| |S n|j sP|j| |S |jdkr|jd kr| r| d | dd   }}t||jrt|j|}|||||S ||j|j| |S |jdkr$|jd kr| st	d| d | dd   }} t|j|}|||| |S ||j|j| |S t
|jdd }||j|| |S d S )	Nc                 W   s   | |fS r	   r   r   r   r   r   r     s    z3BoundFunctionWrapper.__call__.<locals>._unpack_selfr   r   r   r   z&missing 1 required positional argumentr   )r   r   r   r   r   r   r   r   r   rV   rS   )rj   r   r   r   r   Znewargsr&   r   r   r   r     sB    


  zBoundFunctionWrapper.__call__Nr   r   r   r   r   r     s   r   c                       s"   e Zd ZeZd fdd	Z  ZS )FunctionWrapperNc                    s   d }t |tr|j}|st|r(d}nvt|r8d}nft|rHd}nVt |trXd}nFt |trhd}n6t	|drt|j
rd}qt|rd}qd}nd}tt| |d ||| d S )	Nr   r   r   r   staticmethodr   r   r   )r   r   r   inspect	isbuiltin
isfunctionisclassr   r   rQ   r   ismethodr   r   r'   )r   r&   r   r   r   r   r   r   r'     s2    I







 zFunctionWrapper.__init__)N)r   r   r   r   r   r'   r   r   r   r   r   r     s   r   )r   r\   r   version_infor   
basestringstring_typesr/   r   r#   r   r   r   r!   r   r   r   r   r   r   r   r   r   <module>   s$   +  }
" H