3
üZð]  ã            '   @   sÎ  d Z ddlZejd dkZdd„ ZyeZeefZe	e
fZW n$ ek
r^   eZefZe	fZY nX es®dd„ Zdd„ Zdd„ Zdd	lmZ dd
lmZ ddljZd"dd„ZeZnHdd„ Zdd„ Zdd„ ZddlmZ dd
lmZ ddlZedƒ dd„ Zdd„ ZdZeedƒ�r~G dd„ de ƒZ!y0ye!ƒ � e"ƒ ‚W dQ R X W n   ‚ Y nX W n. e#k
�rh   dZY n e"k
�r|   Y nX yddl$m%Z% W n e&k
�r¬   dd„ Z%Y nX G dd„ de ƒZ'e'd d!dƒZ(dS )#zî
    flask._compat
    ~~~~~~~~~~~~~

    Some py2/py3 compatibility support based on a stripped down
    version of six so we don't have to depend on a specific version
    of it.

    :copyright: 2010 Pallets
    :license: BSD-3-Clause
é    Né   c             C   s   | S )N© )Úxr   r   ú./tmp/pip-build-w1as9q70/flask/flask/_compat.pyÚ<lambda>   s    r   c             C   s   t | jƒ ƒS )N)ÚiterÚkeys)Údr   r   r   r      s    c             C   s   t | jƒ ƒS )N)r   Úvalues)r	   r   r   r   r      s    c             C   s   t | jƒ ƒS )N)r   Úitems)r	   r   r   r   r      s    )Úgetfullargspec)ÚStringIOc             C   s   |j |k	r|j|ƒ‚|‚d S )N)Ú__traceback__Úwith_traceback)ÚtpÚvalueÚtbr   r   r   Úreraise$   s    

r   c             C   s   | j ƒ S )N)Úiterkeys)r	   r   r   r   r   ,   s    c             C   s   | j ƒ S )N)Ú
itervalues)r	   r   r   r   r   -   s    c             C   s   | j ƒ S )N)Ú	iteritems)r	   r   r   r   r   .   s    )Ú
getargspecz5def reraise(tp, value, tb=None):
 raise tp, value, tbc             C   s   | j | _dd„ | _ | S )Nc             S   s   | j ƒ jdƒS )Nzutf-8)Ú__unicode__Úencode)r   r   r   r   r   8   s    z&implements_to_string.<locals>.<lambda>)Ú__str__r   )Úclsr   r   r   Úimplements_to_string6   s    
r   c                s&   G ‡ ‡fdd„dt ƒ}t j|df i ƒS )z%Create a base class with a metaclass.c                   s   e Zd Z‡ ‡fdd„ZdS )z!with_metaclass.<locals>.metaclassc                s   ˆ|ˆ |ƒS )Nr   )ÚmetaclsÚnameÚ
this_basesr	   )ÚbasesÚmetar   r   Ú__new__B   s    z)with_metaclass.<locals>.metaclass.__new__N)Ú__name__Ú
__module__Ú__qualname__r"   r   )r    r!   r   r   Ú	metaclassA   s   r&   Útemporary_class)Útyper"   )r!   r    r&   r   )r    r!   r   Úwith_metaclass<   s    r)   FÚpypy_version_infoc               @   s   e Zd Zdd„ Zdd„ ZdS )Ú_Mgrc             C   s   | S )Nr   )Úselfr   r   r   Ú	__enter__W   s    z_Mgr.__enter__c             G   s   t tdƒrtjƒ  d S )NÚ	exc_clear)ÚhasattrÚsysr.   )r,   Úargsr   r   r   Ú__exit__Z   s    
z_Mgr.__exit__N)r#   r$   r%   r-   r2   r   r   r   r   r+   V   s   r+   T)Úfspathc             C   s   t | dƒr| jƒ S | S )NÚ
__fspath__)r/   r4   )Úpathr   r   r   r3   r   s    r3   c               @   s8   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZeZdS )Ú_DeprecatedBoolc             C   s   dj ||ƒ| _|| _d S )Nz5'{}' is deprecated and will be removed in version {}.)ÚformatÚmessager   )r,   r   Úversionr   r   r   r   Ú__init__w   s    
z_DeprecatedBool.__init__c             C   s   dd l }|j| jtdd� d S )Nr   r   )Ú
stacklevel)ÚwarningsÚwarnr8   ÚDeprecationWarning)r,   r<   r   r   r   Ú_warn}   s    z_DeprecatedBool._warnc             C   s   | j ƒ  || jkS )N)r?   r   )r,   Úotherr   r   r   Ú__eq__‚   s    z_DeprecatedBool.__eq__c             C   s   | j ƒ  || jkS )N)r?   r   )r,   r@   r   r   r   Ú__ne__†   s    z_DeprecatedBool.__ne__c             C   s   | j ƒ  | jS )N)r?   r   )r,   r   r   r   Ú__bool__Š   s    z_DeprecatedBool.__bool__N)	r#   r$   r%   r:   r?   rA   rB   rC   Ú__nonzero__r   r   r   r   r6   v   s   r6   zflask.json_availablez2.0.0)N))Ú__doc__r0   Úversion_infoÚPY2Z	_identityÚunicodeÚ	text_typeÚstrÚstring_typesÚintÚlongÚinteger_typesÚ	NameErrorr   r   r   Úinspectr   r   Úior   Úcollections.abcÚabcZcollections_abcr   r   Ú	cStringIOÚcollectionsÚexecr)   ZBROKEN_PYPY_CTXMGR_EXITr/   Úobjectr+   ÚAssertionErrorÚ	TypeErrorÚosr3   ÚImportErrorr6   Zjson_availabler   r   r   r   Ú<module>   s`   

	