U
    ]]                     @   s  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
 dkZesdejdd dkrjeZnd dlmZ eZe	rd dlmZ d dlmZmZ d	d
 ZdZdd ZG dd deZdd Zdd Zn4d dlmZmZ dd Zdd
 ZdZdd Zdd Zdd Ze ZdS )    )absolute_importdivisionprint_functionN   ZPyPy)      )OrderedDict)IterableUserDict)MappingSequencec                 C   s   t | ttjfS N)
isinstancetypetypesZ	ClassTypeklass r   ./usr/lib/python3/dist-packages/attr/_compat.pyisclass   s    r   r   c                 C   s   |   S r   )	iteritemsdr   r   r   r   !   s    r   c                   @   sT   e Zd ZdZdd Zdd Zdd Zdd	 ZdddZdd Z	dddZ
dd Zd
S )ReadOnlyDictz5
        Best-effort read-only dict wrapper.
        c                 C   s   t dd S )Nz6'mappingproxy' object does not support item assignment	TypeError)selfkeyvalr   r   r   __setitem__*   s    zReadOnlyDict.__setitem__c                 C   s   t dd S )Nz/'mappingproxy' object has no attribute 'update'AttributeErrorr   _r   r   r   update0   s    zReadOnlyDict.updatec                 C   s   t dd S )Nz4'mappingproxy' object does not support item deletionr   r!   r   r   r   __delitem__6   s    zReadOnlyDict.__delitem__c                 C   s   t dd S )Nz.'mappingproxy' object has no attribute 'clear'r   r   r   r   r   clear<   s    zReadOnlyDict.clearNc                 C   s   t dd S )Nz,'mappingproxy' object has no attribute 'pop'r   r   r   defaultr   r   r   popB   s    zReadOnlyDict.popc                 C   s   t dd S )Nz0'mappingproxy' object has no attribute 'popitem'r   r%   r   r   r   popitemH   s    zReadOnlyDict.popitemc                 C   s   t dd S )Nz3'mappingproxy' object has no attribute 'setdefault'r   r'   r   r   r   
setdefaultN   s    zReadOnlyDict.setdefaultc                 C   s   dt | j d S )Nzmappingproxy())reprdatar%   r   r   r   __repr__T   s    zReadOnlyDict.__repr__)N)N)__name__
__module____qualname____doc__r   r#   r$   r&   r)   r*   r+   r/   r   r   r   r   r   %   s   

r   c                 C   s   t  }|j|  |S r   )r   r.   r#   )r   resr   r   r   metadata_proxyX   s    r5   c                  O   s   dS )
        We only warn on Python 3 because we are not aware of any concrete
        consequences of not setting the cell on Python 2.
        Nr   argskwr   r   r   	just_warn]   s    r:   c                  O   s   t jdtdd dS )r6   zRunning interpreter doesn't sufficiently support code object introspection.  Some features like bare super() or accessing __class__ will not work with slotted classes.r   )
stacklevelN)warningswarnRuntimeWarningr7   r   r   r   r:   g   s
    c                 C   s
   t | tS r   )r   r   r   r   r   r   r   t   s    classc                 C   s   |   S r   )itemsr   r   r   r   r   y   s    c                 C   s   t t| S r   )r   MappingProxyTypedictr   r   r   r   r5   |   s    c                     s4  t rdd } | S dd }ztr&|j}n|j}|jdks@|jdkrDttjdkrb|j	|j|jd n`|j
g}tsz||j ||j|j|j|j|j|j|j|j|j|j|j|j|jg tj|   fd	d} d
d }tr| jd }n| jd }| |d |jdkrtW n tk
r*   t Y S X | S dS )z|Return a function of two arguments (cell, value) which sets
    the value stored in the closure cell `cell` to `value`.
    c                 S   s   |  |f d S r   )__setstate__)cellvaluer   r   r   set_closure_cell   s    z/make_set_closure_cell.<locals>.set_closure_cellc                    s   |  d S )Nc                      s    S r   r   r   xr   r   force_x_to_be_a_cell   s    zQmake_set_closure_cell.<locals>.set_first_cellvar_to.<locals>.force_x_to_be_a_cellr   )rE   rI   r   rG   r   set_first_cellvar_to   s    z3make_set_closure_cell.<locals>.set_first_cellvar_torG   r   )r      )co_cellvarsco_freevarsc                    s    t  i dd| f}|| d S )Nsetterr   )r   FunctionType)rD   rE   rN   Zset_first_freevar_coder   r   rF      s        c                     s   d   fdd} | S )Nc                      s    S r   r   r   rG   r   r   func   s    z@make_set_closure_cell.<locals>.make_func_with_cell.<locals>.funcr   )rQ   r   rG   r   make_func_with_cell   s    z2make_set_closure_cell.<locals>.make_func_with_cellr   d   N) PYPYPY2Z	func_code__code__rL   rM   AssertionErrorsysversion_inforeplaceco_argcountappendco_kwonlyargcountextend
co_nlocalsco_stacksizeco_flagsco_code	co_constsco_namesco_varnamesco_filenameco_nameco_firstlineno	co_lnotabr   CodeTypeZfunc_closure__closure__cell_contents	Exceptionr:   )rF   rJ   cor8   rR   rD   r   rP   r   make_set_closure_cell   s\    

 


ro   )Z
__future__r   r   r   platformrX   r   r<   rY   rU   Zpython_implementationrT   rB   Zordered_dictcollectionsr   UserDictr	   r
   r   r   ZTYPEr   r   r5   r:   Zcollections.abcro   rF   r   r   r   r   <module>   s6   3
f