σ
Wa]c           @` sn  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z e j d  d k Z	 e j
   d k Z e s e j d  d k r e Z n d  d l m Z e Z e	 rd  d l m Z d  d	 l m Z m Z d
   Z d Z d   Z d e f d     YZ d   Z d   Z n@ d  d	 l m Z m Z d   Z d   Z d Z d   Z d   Z d   Z e   Z d S(   i    (   t   absolute_importt   divisiont   print_functionNi   t   PyPyi   i   (   t   OrderedDict(   t   IterableUserDict(   t   Mappingt   Sequencec         C` s   t  |  t t j f  S(   N(   t
   isinstancet   typet   typest	   ClassType(   t   klass(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   isclass   s    R	   c         C` s
   |  j    S(   N(   t	   iteritems(   t   d(    (    s+   lib/python2.7/site-packages/attr/_compat.pyR   !   s    t   ReadOnlyDictc           B` s\   e  Z d  Z d   Z d   Z d   Z d   Z d	 d  Z d   Z	 d	 d  Z
 d   Z RS(
   s5   
        Best-effort read-only dict wrapper.
        c         C` s   t  d   d  S(   Ns6   'mappingproxy' object does not support item assignment(   t	   TypeError(   t   selft   keyt   val(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   __setitem__*   s    c         C` s   t  d   d  S(   Ns/   'mappingproxy' object has no attribute 'update'(   t   AttributeError(   R   t   _(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   update0   s    c         C` s   t  d   d  S(   Ns4   'mappingproxy' object does not support item deletion(   R   (   R   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   __delitem__6   s    c         C` s   t  d   d  S(   Ns.   'mappingproxy' object has no attribute 'clear'(   R   (   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   clear<   s    c         C` s   t  d   d  S(   Ns,   'mappingproxy' object has no attribute 'pop'(   R   (   R   R   t   default(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   popB   s    c         C` s   t  d   d  S(   Ns0   'mappingproxy' object has no attribute 'popitem'(   R   (   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   popitemH   s    c         C` s   t  d   d  S(   Ns3   'mappingproxy' object has no attribute 'setdefault'(   R   (   R   R   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt
   setdefaultN   s    c         C` s   d t  |  j  d S(   Ns   mappingproxy(t   )(   t   reprt   data(   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   __repr__T   s    N(   t   __name__t
   __module__t   __doc__R   R   R   R   t   NoneR   R   R   R"   (    (    (    s+   lib/python2.7/site-packages/attr/_compat.pyR   %   s   					c         C` s   t    } | j j |   | S(   N(   R   R!   R   (   R   t   res(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   metadata_proxyX   s    	c          O` s   d S(   s   
        We only warn on Python 3 because we are not aware of any concrete
        consequences of not setting the cell on Python 2.
        N(    (   t   argst   kw(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt	   just_warn]   t    c          O` s   t  j d t d d d S(   s   
        We only warn on Python 3 because we are not aware of any concrete
        consequences of not setting the cell on Python 2.
        s§   Running interpreter doesn't sufficiently support code object introspection.  Some features like bare super() or accessing __class__ will not work with slotted classes.t
   stackleveli   N(   t   warningst   warnt   RuntimeWarning(   R)   R*   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyR+   g   s    c         C` s   t  |  t  S(   N(   R   R	   (   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyR   t   s    t   classc         C` s
   |  j    S(   N(   t   items(   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyR   y   s    c         C` s   t  j t |    S(   N(   R
   t   MappingProxyTypet   dict(   R   (    (    s+   lib/python2.7/site-packages/attr/_compat.pyR(   |   s    c          ` s€  t  r d   }  |  Sd   } ykt r1 | j } n	 | j } | j d k sX | j d k ra t  n  t j d k r | j	 d | j d | j    n | j
 g } t sΆ | j | j  n  | j | j | j | j | j | j | j | j | j | j | j | j | j | j g  t j |       f d   }  d	   } t rQ|   j d
 } n |   j d
 } |  | d  | j d k rt  n  Wn t k
 rt SX|  Sd S(   s|   Return a function of two arguments (cell, value) which sets
    the value stored in the closure cell `cell` to `value`.
    c         S` s   |  j  | f  d  S(   N(   t   __setstate__(   t   cellt   value(    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   set_closure_cell   s    c         ` s   |    d  S  f d   } (   Nc           ` s     S(   N(    (    (   t   x(    s+   lib/python2.7/site-packages/attr/_compat.pyt   force_x_to_be_a_cell   s    (    (   R7   R:   (    (   R9   s+   lib/python2.7/site-packages/attr/_compat.pyt   set_first_cellvar_to   s    R9   i   i   t   co_cellvarst   co_freevarsc         ` s,   t  j   i  d d |  f  } | |  d  S(   Nt   setter(    (   R
   t   FunctionType(   R6   R7   R>   (   t   set_first_freevar_code(    s+   lib/python2.7/site-packages/attr/_compat.pyR8   Ε   s    c          ` s   d      f d   }  |  S(   Nc           ` s     S(   N(    (    (   R9   (    s+   lib/python2.7/site-packages/attr/_compat.pyt   funcΣ   s    (   R&   (   RA   (    (   R9   s+   lib/python2.7/site-packages/attr/_compat.pyt   make_func_with_cellΠ   s    i    id   N(   R9   (    (   i   i   (    t   PYPYt   PY2t	   func_codet   __code__R<   R=   t   AssertionErrort   syst   version_infot   replacet   co_argcountt   appendt   co_kwonlyargcountt   extendt
   co_nlocalst   co_stacksizet   co_flagst   co_codet	   co_constst   co_namest   co_varnamest   co_filenamet   co_namet   co_firstlinenot	   co_lnotabR
   t   CodeTypet   func_closuret   __closure__t   cell_contentst	   ExceptionR+   (   R8   R;   t   coR)   RB   R6   (    (   R@   s+   lib/python2.7/site-packages/attr/_compat.pyt   make_set_closure_cell   sT    		
				(   i   i   (   t
   __future__R    R   R   t   platformRH   R
   R.   RI   RD   t   python_implementationRC   R4   t   ordered_dictt   collectionsR   t   UserDictR   R   R   R   t   TYPER   R   R(   R+   t   collections.abcR`   R8   (    (    (    s+   lib/python2.7/site-packages/attr/_compat.pyt   <module>   s6   			3						f