U
    'Q^                  	   @   s  d Z ddlZejd dkZdd Zz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sdd Zdd Zdd Zdd	lmZ dd
lmZ ddlm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rG dd de Z!z0ze!  e" W 5 Q R X W n    Y nX W n. e#k
rj   dZY n e"k
r~   Y nX z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   0/tmp/pip-install-bd4o36v9/Flask/flask/_compat.py<lambda>       r   c                 C   s   t |  S r   )iterkeysdr   r   r   r      r	   c                 C   s   t |  S r   )r
   valuesr   r   r   r   r      r	   c                 C   s   t |  S r   )r
   itemsr   r   r   r   r      r	   )getfullargspec)StringIOc                 C   s   |j |k	r|||d S r   )__traceback__with_traceback)tpvaluetbr   r   r   reraise$   s    

r   c                 C   s   |   S r   )iterkeysr   r   r   r   r   ,   r	   c                 C   s   |   S r   )
itervaluesr   r   r   r   r   -   r	   c                 C   s   |   S r   )	iteritemsr   r   r   r   r   .   r	   )
getargspecz5def reraise(tp, value, tb=None):
 raise tp, value, tbc                 C   s   | j | _dd | _ | S )Nc                 S   s   |   dS )Nzutf-8)__unicode__encoder   r   r   r   r   8   r	   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 |dd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 r   r   )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   	metaclassA   s   r+   temporary_classr   )typer'   )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 r   r   selfr   r   r   	__enter__W   s    z_Mgr.__enter__c                 G   s   t tdrt  d S )N	exc_clear)hasattrsysr4   )r2   argsr   r   r   __exit__Z   s    
z_Mgr.__exit__N)r(   r)   r*   r3   r8   r   r   r   r   r0   V   s   r0   T)fspathc                 C   s   t | dr|  S | S )N
__fspath__)r5   r:   )pathr   r   r   r9   r   s    r9   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 ||| _|| _d S )Nz5'{}' is deprecated and will be removed in version {}.)formatmessager   )r2   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warnr>   DeprecationWarning)r2   rB   r   r   r   _warn}   s    z_DeprecatedBool._warnc                 C   s   |    || jkS r   rE   r   r2   otherr   r   r   __eq__   s    z_DeprecatedBool.__eq__c                 C   s   |    || jkS r   rF   rG   r   r   r   __ne__   s    z_DeprecatedBool.__ne__c                 C   s   |    | jS r   rF   r1   r   r   r   __bool__   s    z_DeprecatedBool.__bool__N)	r(   r)   r*   r@   rE   rI   rJ   rK   __nonzero__r   r   r   r   r<   v   s   r<   zflask.json_availablez2.0.0)N))__doc__r6   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_EXITr5   objectr0   AssertionError	TypeErrorosr9   ImportErrorr<   Zjson_availabler   r   r   r   <module>   s`   
	