B
    ;=[L              	   @   sV  d Z ddlZejd dkZdd ZesveZefZefZ	dd Z
dd Zdd Zdd	lmZ dd
lmZ dddZeZnTeZeefZeefZ	dd Z
dd Zdd ZddlmZ dd
lmZ ed dd Zdd ZdZeedrRG dd deZy0ye  e W dQ R X W n    Y nX W n. ek
r<   dZY n ek
rP   Y nX dS )u  
    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 by the Pallets team.
    :license: BSD, see LICENSE for more details.
    N   c             C   s   | S )N )xr   r   ,lib/python3.7/site-packages/flask/_compat.py<lambda>   s    r   c             C   s   t |  S )N)iterkeys)dr   r   r   r      s    c             C   s   t |  S )N)r   values)r	   r   r   r   r      s    c             C   s   t |  S )N)r   items)r	   r   r   r   r      s    )getfullargspec)StringIOc             C   s   |j |k	r|||d S )N)__traceback__with_traceback)tpvaluetbr   r   r   reraise    s    

r   c             C   s   |   S )N)iterkeys)r	   r   r   r   r   ,   s    c             C   s   |   S )N)
itervalues)r	   r   r   r   r   -   s    c             C   s   |   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   |   dS )Nzutf-8)__unicode__encode)r   r   r   r   r   7   s    z&implements_to_string.<locals>.<lambda>)__str__r   )clsr   r   r   implements_to_string5   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 )Nr   )r   nameZ
this_basesr	   )basesmetar   r   __new__A   s    z)with_metaclass.<locals>.metaclass.__new__N)__name__
__module____qualname__r    r   )r   r   r   r   	metaclass@   s   r$   Ztemporary_classr   )typer    )r   r   r$   r   )r   r   r   with_metaclass;   s    r&   FZ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__T   s    z_Mgr.__enter__c             G   s   t tdrt  d S )N	exc_clear)hasattrsysr*   )r(   argsr   r   r   __exit__V   s    
z_Mgr.__exit__N)r!   r"   r#   r)   r.   r   r   r   r   r'   S   s   r'   T)N)__doc__r,   version_infoZPY2Z	_identitystrZ	text_typeZstring_typesintZinteger_typesr   r   r   inspectr   r   ior   r   r   ZunicodeZlongZ	cStringIOexecr&   ZBROKEN_PYPY_CTXMGR_EXITr+   objectr'   AssertionError	TypeErrorr   r   r   r   <module>   sL   
