o
    ×•`Š  ã                   @   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s2ejdd… dkr5eZnd dlmZ eZe	rld dlmZmZ d dlmZ d	d
„ Zdd„ ZdZdd„ ZG dd„ deƒZdd„ Zdd„ Znd dlmZmZ dd„ Zdd
„ ZdZdd„ ZejZdd„ Zdd„ Zeƒ ZdS )é    )Úabsolute_importÚdivisionÚprint_functionNé   ÚPyPy)é   é   )ÚOrderedDict)ÚMappingÚSequence)ÚIterableUserDictc                 C   s   t | ttjfƒS ©N)Ú
isinstanceÚtypeÚtypesÚ	ClassType©Úklass© r   ú./usr/lib/python3/dist-packages/attr/_compat.pyÚisclass   ó   r   c                 C   s   i }||ƒ t | ||ƒS )zP
        A minimal stub of types.new_class that we need for make_class.
        )r   )ÚnameÚbasesÚkwdsÚ	exec_bodyÚnsr   r   r   Ú	new_class   s   r   r   c                 C   ó   |   ¡ S r   )Ú	iteritems©Údr   r   r   r   +   ó   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   ó   t dƒ‚)Nz6'mappingproxy' object does not support item assignment©Ú	TypeError)ÚselfÚkeyÚvalr   r   r   Ú__setitem__4   ó   ÿzReadOnlyDict.__setitem__c                 C   r$   )Nz/'mappingproxy' object has no attribute 'update'©ÚAttributeError©r'   Ú_r   r   r   Úupdate:   r+   zReadOnlyDict.updatec                 C   r$   )Nz4'mappingproxy' object does not support item deletionr%   r.   r   r   r   Ú__delitem__@   r+   zReadOnlyDict.__delitem__c                 C   r$   )Nz.'mappingproxy' object has no attribute 'clear'r,   ©r'   r   r   r   ÚclearF   r+   zReadOnlyDict.clearNc                 C   r$   )Nz,'mappingproxy' object has no attribute 'pop'r,   ©r'   r(   Údefaultr   r   r   ÚpopL   r+   zReadOnlyDict.popc                 C   r$   )Nz0'mappingproxy' object has no attribute 'popitem'r,   r2   r   r   r   ÚpopitemR   r+   zReadOnlyDict.popitemc                 C   r$   )Nz3'mappingproxy' object has no attribute 'setdefault'r,   r4   r   r   r   Ú
setdefaultX   r+   zReadOnlyDict.setdefaultc                 C   s   dt | jƒ d S )Nzmappingproxy(ú))ÚreprÚdatar2   r   r   r   Ú__repr__^   s   zReadOnlyDict.__repr__r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r*   r0   r1   r3   r6   r7   r8   r<   r   r   r   r   r#   /   s    

r#   c                 C   s   t ƒ }|j | ¡ |S r   )r#   r;   r0   )r!   Úresr   r   r   Úmetadata_proxyb   s   rB   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_warng   s    rG   c                  O   s   t jdtdd� dS )rC   z§Running 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ÚRuntimeWarningrD   r   r   r   rG   q   s
   
ûc                 C   s
   t | tƒS r   )r   r   r   r   r   r   r   ~   s   
Úclassc                 C   r   r   )Úitemsr    r   r   r   r   ƒ   r"   c                 C   s   t  t| ƒ¡S r   )r   ÚMappingProxyTypeÚdictr    r   r   r   rB   ˆ   s   c                     s(  t rdd„ } | S dd„ }z|tr|j}n|j}|jdks |jdkr"t‚tjdkr1|j	|j|jd�‰ n0|j
g}ts=| |j¡ | |j|j|j|j|j|j|j|j|j|j|j|j|jg¡ tj|Ž ‰ ‡ fd	d„} d
d„ }trt|ƒ jd }n|ƒ jd }| |dƒ |jdkr†t‚W | S  ty“   t Y S w )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”   r   z/make_set_closure_cell.<locals>.set_closure_cellc                    s   | ‰ d S r   r   )rR   Úforce_x_to_be_a_cellr   ©Úxr   Úset_first_cellvar_toœ   s   z3make_set_closure_cell.<locals>.set_first_cellvar_torU   r   )r   é   )Úco_cellvarsÚco_freevarsc                    s    t  ˆ i dd| f¡}||ƒ d S )NÚsetterr   )r   ÚFunctionType)rQ   rR   r[   ©Úset_first_freevar_coder   r   rS   Ñ   s   ÿc                     s   d ‰ ‡ fdd„} | S )Nc                      s   ˆ S r   r   r   rU   r   r   Úfuncß   s   z@make_set_closure_cell.<locals>.make_func_with_cell.<locals>.funcr   )r_   r   rU   r   Úmake_func_with_cellÜ   s   z2make_set_closure_cell.<locals>.make_func_with_cellr   éd   ) ÚPYPYÚPY2Ú	func_codeÚ__code__rY   rZ   Ú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   ÚCodeTypeÚfunc_closureÚ__closure__Úcell_contentsÚ	ExceptionrG   )rS   rW   ÚcorE   r`   rQ   r   r]   r   Úmake_set_closure_cellŒ   s^   

ÿòÿ


ÿýÿr   )Ú
__future__r   r   r   Úplatformrg   r   rI   rh   rc   Úpython_implementationrb   rO   Úordered_dictÚcollectionsr	   r
   r   ÚUserDictr   r   r   ÚTYPEr   r#   rB   rG   Úcollections.abcr   rS   r   r   r   r   Ú<module>   s<    
3

f