ó
©û_]c           @   s˜   d  d l  Z  d d l m Z d d l m Z d d l m Z d d l m Z d e f d „  ƒ  YZ d	 e	 f d
 „  ƒ  YZ
 d e e
 ƒ f d „  ƒ  YZ d S(   iÿÿÿÿNi   (   t   PY2(   t   PY3(   t   with_metaclass(   t   identityt   _ProxyMethodsc           B   sh   e  Z e d  „  ƒ Z e j d „  ƒ Z e d „  ƒ Z e j d „  ƒ Z e d „  ƒ Z e d „  ƒ Z RS(   c         C   s
   |  j  j S(   N(   t   __wrapped__t
   __module__(   t   self(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR      s    c         C   s   | |  j  _ d  S(   N(   R   R   (   R   t   value(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR      s    c         C   s
   |  j  j S(   N(   R   t   __doc__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR	      s    c         C   s   | |  j  _ d  S(   N(   R   R	   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR	      s    c         C   s
   |  j  j S(   N(   R   t   __dict__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR
   &   s    c         C   s
   |  j  j S(   N(   R   t   __weakref__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   /   s    (   t   __name__R   t   propertyt   setterR	   R
   R   (    (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   	   s   
	t   _ProxyMetaTypec           B   s   e  Z d  „  Z RS(   c         C   s)   | j  t t ƒ ƒ t j |  | | | ƒ S(   N(   t   updatet   varsR   t   typet   __new__(   t   clst   namet   basest
   dictionary(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   5   s    (   R   R   R   (    (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   4   s   t   Proxyc           B   sé  e  Z d  Z d` Z d „  Z e e j e j e j	 d „ ƒ Z
 e
 j e j	 d „ ƒ Z
 e
 j e j d „ ƒ Z
 e d „  ƒ Z  e  j d „  ƒ Z  e d	 „  ƒ Z e j d
 „  ƒ Z e d „  ƒ Z e j d „  ƒ Z d „  Z d „  Z e ró d „  Z n  e j d „ Z d „  Z e rd „  Z n  d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e j d „ Z d „  Z e j	 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/ „  Z0 d0 „  Z1 d1 „  Z2 d2 „  Z3 d3 „  Z4 d4 „  Z5 d5 „  Z6 d6 „  Z7 d7 „  Z8 d8 „  Z9 d9 „  Z: d: „  Z; d; „  Z< d< „  Z= d= „  Z> d> „  Z? d? „  Z@ d@ „  ZA dA „  ZB dB „  ZC dC „  ZD dD „  ZE dE „  ZF dF „  ZG dG „  ZH dH „  ZI dI „  ZJ dJ „  ZK dK „  ZL dL „  ZM eN rEdM „  ZO n  dN „  ZP dO „  ZQ dP „  ZR dQ „  ZS dR „  ZT dS „  ZU dT „  ZV dU „  ZW dV „  ZX dW „  ZY dX „  ZZ dY „  Z[ dZ „  Z\ d[ „  Z] d\ „  Z^ d] „  Z_ d^ „  Z` d_ „  Za RS(a   s  
    A proxy implementation in pure Python, using slots. You can subclass this to add
    local methods or attributes, or enable __dict__.

    The most important internals:

    * ``__factory__`` is the callback that "materializes" the object we proxy to.
    * ``__target__`` will contain the object we proxy to, once it's "materialized".
    * ``__wrapped__`` is a property that does either:

      * return ``__target__`` if it's set.
      * calls ``__factory__``, saves result to ``__target__`` and returns said result.
    t
   __target__t   __factory__c         C   s   t  j |  d | ƒ d  S(   NR   (   t   objectt   __setattr__(   R   t   factory(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __init__Q   s    c         C   sv   y | |  d ƒ SWn^ t  k
 rq y | |  d ƒ } Wn t  k
 rS t d ƒ ‚ n X| ƒ  } | |  d | ƒ | SXd  S(   NR   R   s4   Proxy hasn't been initiated: __factory__ is missing.(   t   AttributeErrort
   ValueError(   R   t   __getattr__R   t   __delattr__R   t   target(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   T   s    	c         C   s   | |  d ƒ d  S(   NR   (    (   R   R"   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   b   s    c         C   s   | |  d | ƒ d  S(   NR   (    (   R   R#   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   f   s    c         C   s
   |  j  j S(   N(   R   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   j   s    c         C   s   | |  j  _ d  S(   N(   R   R   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   n   s    c         C   s
   |  j  j S(   N(   R   t	   __class__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR$   r   s    c         C   s   | |  j  _ d  S(   N(   R   R$   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR$   v   s    c         C   s
   |  j  j S(   N(   R   t   __anotations__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __annotations__z   s    c         C   s   | |  j  _ d  S(   N(   R   R&   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR&   ~   s    c         C   s   t  |  j ƒ S(   N(   t   dirR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __dir__‚   s    c         C   s   t  |  j ƒ S(   N(   t   strR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __str__…   s    c         C   s   t  |  j ƒ S(   N(   t   bytesR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt	   __bytes__‰   s    c         C   s~   y | |  d ƒ } Wn3 t  k
 rH d j t |  ƒ j t |  ƒ |  j ƒ SXd j t |  ƒ j t |  ƒ | t | ƒ |  j ƒ Sd  S(   NR   s    <{} at 0x{:x} with factory {!r}>s8   <{} at 0x{:x} wrapping {!r} at 0x{:x} with factory {!r}>(   R   t   formatR   R   t   idR   (   R   R!   R#   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __repr__Œ   s    c         C   s   t  |  j ƒ S(   N(   t   reversedR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __reversed__›   s    c         C   s   t  |  j ƒ S(   N(   t   roundR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt	   __round__Ÿ   s    c         C   s   |  j  | k  S(   N(   R   (   R   t   other(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __lt__¢   s    c         C   s   |  j  | k S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __le__¥   s    c         C   s   |  j  | k S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __eq__¨   s    c         C   s   |  j  | k S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ne__«   s    c         C   s   |  j  | k S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __gt__®   s    c         C   s   |  j  | k S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ge__±   s    c         C   s   t  |  j ƒ S(   N(   t   hashR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __hash__´   s    c         C   s   t  |  j ƒ S(   N(   t   boolR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __nonzero__·   s    c         C   s   t  |  j ƒ S(   N(   R=   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __bool__º   s    c         C   s?   t  t |  ƒ | ƒ r( | |  | | ƒ n t |  j | | ƒ d  S(   N(   t   hasattrR   t   setattrR   (   R   R   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   ½   s    c         C   s/   | d k r t  | ƒ ‚ n t |  j | ƒ Sd  S(   NR   R   (   R   R   (   R   t   getattrR   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR!   Ã   s    c         C   s9   t  t |  ƒ | ƒ r% | |  | ƒ n t |  j | ƒ d  S(   N(   R@   R   t   delattrR   (   R   R   R"   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR"   É   s    c         C   s   |  j  | S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __add__Ï   s    c         C   s   |  j  | S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __sub__Ò   s    c         C   s   |  j  | S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __mul__Õ   s    c         C   s   t  j |  j | ƒ S(   N(   t   operatort   divR   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __div__Ø   s    c         C   s   t  j |  j | ƒ S(   N(   RG   t   truedivR   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __truediv__Û   s    c         C   s   |  j  | S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __floordiv__Þ   s    c         C   s   |  j  | S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __mod__á   s    c         C   s   t  |  j | ƒ S(   N(   t   divmodR   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt
   __divmod__ä   s    c         G   s   t  |  j | | Œ S(   N(   t   powR   (   R   R4   t   args(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __pow__ç   s    c         C   s   |  j  | >S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt
   __lshift__ê   s    c         C   s   |  j  | ?S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt
   __rshift__í   s    c         C   s   |  j  | @S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __and__ð   s    c         C   s   |  j  | AS(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __xor__ó   s    c         C   s   |  j  | BS(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __or__ö   s    c         C   s   | |  j  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __radd__ù   s    c         C   s   | |  j  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rsub__ü   s    c         C   s   | |  j  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rmul__ÿ   s    c         C   s   t  j | |  j ƒ S(   N(   RG   RH   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rdiv__  s    c         C   s   t  j | |  j ƒ S(   N(   RG   RJ   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rtruediv__  s    c         C   s   | |  j  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rfloordiv__  s    c         C   s   | |  j  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rmod__  s    c         C   s   t  | |  j ƒ S(   N(   RN   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rdivmod__  s    c         G   s   t  | |  j | Œ S(   N(   RP   R   (   R   R4   RQ   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rpow__  s    c         C   s   | |  j  >S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rlshift__  s    c         C   s   | |  j  ?S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rrshift__  s    c         C   s   | |  j  @S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rand__  s    c         C   s   | |  j  AS(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __rxor__  s    c         C   s   | |  j  BS(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ror__   s    c         C   s   |  j  | 7_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __iadd__#  s    c         C   s   |  j  | 8_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __isub__'  s    c         C   s   |  j  | 9_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __imul__+  s    c         C   s   t  j |  j | ƒ |  _ |  S(   N(   RG   t   idivR   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __idiv__/  s    c         C   s   t  j |  j | ƒ |  _ |  S(   N(   RG   t   itruedivR   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __itruediv__3  s    c         C   s   |  j  | _  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ifloordiv__7  s    c         C   s   |  j  | ;_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __imod__;  s    c         C   s   |  j  | C_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ipow__?  s    c         C   s   |  j  | K_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ilshift__C  s    c         C   s   |  j  | L_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __irshift__G  s    c         C   s   |  j  | M_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __iand__K  s    c         C   s   |  j  | N_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ixor__O  s    c         C   s   |  j  | O_  |  S(   N(   R   (   R   R4   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __ior__S  s    c         C   s   |  j  S(   N(   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __neg__W  s    c         C   s   |  j  
S(   N(   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __pos__Z  s    c         C   s   t  |  j ƒ S(   N(   t   absR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __abs__]  s    c         C   s   |  j  S(   N(   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt
   __invert__`  s    c         C   s   t  |  j ƒ S(   N(   t   intR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __int__c  s    c         C   s   t  |  j ƒ S(   N(   t   longR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __long__g  s    c         C   s   t  |  j ƒ S(   N(   t   floatR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt	   __float__j  s    c         C   s   t  |  j ƒ S(   N(   t   octR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __oct__m  s    c         C   s   t  |  j ƒ S(   N(   t   hexR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __hex__p  s    c         C   s   t  j |  j ƒ S(   N(   RG   t   indexR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt	   __index__s  s    c         C   s   t  |  j ƒ S(   N(   t   lenR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __len__v  s    c         C   s   | |  j  k S(   N(   R   (   R   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __contains__y  s    c         C   s   |  j  | S(   N(   R   (   R   t   key(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __getitem__|  s    c         C   s   | |  j  | <d  S(   N(   R   (   R   R‰   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __setitem__  s    c         C   s   |  j  | =d  S(   N(   R   (   R   R‰   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __delitem__‚  s    c         C   s   |  j  | | !S(   N(   R   (   R   t   it   j(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __getslice__…  s    c         C   s   | |  j  | | +d  S(   N(   R   (   R   R   RŽ   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __setslice__ˆ  s    c         C   s   |  j  | | 5d  S(   N(   R   (   R   R   RŽ   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __delslice__‹  s    c         C   s   |  j  j ƒ  S(   N(   R   t	   __enter__(   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR’   Ž  s    c         O   s   |  j  j | | Ž  S(   N(   R   t   __exit__(   R   RQ   t   kwargs(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR“   ‘  s    c         C   s   t  |  j ƒ S(   N(   t   iterR   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __iter__”  s    c         O   s   |  j  | | Ž  S(   N(   R   (   R   RQ   R”   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __call__—  s    c         C   s   t  |  j f f S(   N(   R   R   (   R   (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt
   __reduce__š  s    c         C   s   t  |  j f f S(   N(   R   R   (   R   t   protocol(    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   __reduce_ex__  s    (   R   R   (b   R   R   R	   t	   __slots__R   R   R   t   __getattribute__R   R"   R   t   deleterR   R$   R&   R(   R*   R   R,   R/   R1   R3   R5   R6   R7   R8   R9   R:   R<   R>   R?   R!   RD   RE   RF   RI   RK   RL   RM   RO   RR   RS   RT   RU   RV   RW   RX   RY   RZ   R[   R\   R]   R^   R_   R`   Ra   Rb   Rc   Rd   Re   Rf   Rg   Rh   Rj   Rl   Rm   Rn   Ro   Rp   Rq   Rr   Rs   Rt   Ru   Rv   Rx   Ry   R{   R    R}   R   R   Rƒ   R…   R‡   Rˆ   RŠ   R‹   RŒ   R   R   R‘   R’   R“   R–   R—   R˜   Rš   (    (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyR   @   sÌ   																																																																													(   RG   t   compatR    R   R   t   utilsR   R   R   R   R   R   (    (    (    s6   lib/python2.7/site-packages/lazy_object_proxy/slots.pyt   <module>   s   +