o
    i                     @   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y.   eZefZe	fZY nw esWd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n$d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!zze!  e" 1 sw   Y  W n    W n e#y   dZY n	 e"y   Y nw zddl$m%Z% W n e&y   dd Z%Y nw 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 N xr   r   H/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/flask/_compat.py<lambda>   s    r	   c                 C      t |  S r   )iterkeysdr   r   r   r	          c                 C   r
   r   )r   valuesr   r   r   r   r	      r   c                 C   r
   r   )r   itemsr   r   r   r   r	      r   )getfullargspec)StringIOc                 C   s   |j |ur
|||r   )__traceback__with_traceback)tpvaluetbr   r   r   reraise$   s   

r   c                 C      |   S r   )iterkeysr   r   r   r   r	   ,       c                 C   r   r   )
itervaluesr   r   r   r   r	   -   r   c                 C   r   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   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 |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   r2   Fpypy_version_infoc                   @   s   e Zd Zdd Zdd ZdS )_Mgrc                 C   r   r   r   selfr   r   r   	__enter__W   s   z_Mgr.__enter__c                 G   s   t tdrt  d S d S )N	exc_clear)hasattrsysr8   )r6   argsr   r   r   __exit__Z   s   
z_Mgr.__exit__N)r,   r-   r.   r7   r<   r   r   r   r   r4   V   s    r4   T)fspathc                 C   s   t | dr	|  S | S )N
__fspath__)r9   r>   )pathr   r   r   r=   r   s   r=   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   )r6   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warnrB   DeprecationWarning)r6   rF   r   r   r   _warn}   s   z_DeprecatedBool._warnc                 C   s   |    || jkS r   rI   r   r6   otherr   r   r   __eq__      
z_DeprecatedBool.__eq__c                 C   s   |    || jkS r   rJ   rK   r   r   r   __ne__   rN   z_DeprecatedBool.__ne__c                 C   s   |    | jS r   rJ   r5   r   r   r   __bool__   s   z_DeprecatedBool.__bool__N)	r,   r-   r.   rD   rI   rM   rO   rP   __nonzero__r   r   r   r   r@   v   s    r@   zflask.json_availablez2.0.0r   ))__doc__r:   version_infoPY2	_identityunicode	text_typestrstring_typesintlonginteger_types	NameErrorr   r   r   inspectr   r   ior   collections.abcabccollections_abcr   r$   	cStringIOcollectionsexecr2   BROKEN_PYPY_CTXMGR_EXITr9   objectr4   AssertionError	TypeErrorosr=   ImportErrorr@   json_availabler   r   r   r   <module>   sl   


	