o
    y¬´\A(  ã                   @   s  d Z ddlZddlmZ ddlmZ ddlmZ ddlZddl	Z	zddl
Z
W n ey3   ddlZ
Y nw ejdkZejdkZejdkZejd	kZejd
kZejd
k ZejdkZej d¡ZeedƒZej d¡Ze ome ZeZerwddlZnzddlZW n eyŠ   ddlZY nw er’dd„ Zne Ze dg d¢¡Z!e�r%ddl"Z"ddl#m$Z% ddl&m'Z'm(Z(m)Z)m*Z*m+Z+ ddl,Z,ddl-m.Z. ddl-m/Z0 dd„ Z1e fZ2e3fZ4e3Z5e Z6e7fZ8e9Z:dd„ Z;dd„ Z<dd„ Z=erëe>Z>ndd „ Z>d!d"„ Z?d#d$„ Z@dd%lAmBZB eCe"d&ƒZDeCe"d'ƒZEddlFZFeFjGZHeIZJeKZLdd(lFmMZM ddlNZNd)d*„ ZOd+d,„ ZPnwdd-l#mQZ% e%Z1dd.lRm'Z'm(Z(m*Z*m+Z+ dd/lSm)Z) ddlTZ,ddl.m.Z. ddlUm.Z0 eVfZ2e3fZ4e Z5eWZ6e7eXfZ8d0d1„ Z:d2d„ Z;d3d„ Z<d4d„ Z=d5d6„ ZEe>Z>e@Z@eBZBddlNZNeNjOZOeNjPZPd7d8„ ZDddlFZFd9d"„ Z?eFjYZHeFjZZJeFj[ZLdd:lFm\ZM e�r¿dd;l#m]Z] dddd<i i e d=d„ d>d„ d?d„ d@d„ e]fdAdB„Z^nddCl#m_Z^ e�sËe�rÏe	j`Zane	j	Zae�rÛdPdDdE„ZbnecdFƒ dQdGdH„Zde�ríeCe"dIƒZendQdJdK„ZedLdM„ ZfedNdO„ ƒZge�rddlhmiZj dS ddlZjdS )Rz1Handle Python version/platform incompatibilities.é    N)Ú
namedtuple)Úcontextmanager)Ú
attrgetter)é   é   )r   r   )r   é   )r   é   )r   r   )r   r   r   ÚjavaÚpypy_version_infoÚwinc                 C   ó   | S ©N© )Úargr   r   úH/var/www/html/env/lib/python3.10/site-packages/sqlalchemy/util/compat.pyÚ<lambda>.   s    r   ÚArgSpec)ÚargsÚvarargsÚkeywordsÚdefaults)Úgetfullargspec)Ú
quote_plusÚunquote_plusÚ	parse_qslÚquoteÚunquote)ÚStringIO)ÚBytesIOc                 C   s   t t| ƒdd… Ž S )Nr   é   )r   Úinspect_getfullargspec)Úfuncr   r   r   Úinspect_getargspecF   s   r"   c                 C   r   r   r   ©Úsr   r   r   ÚuP   ó   r%   c                 C   r   r   r   r#   r   r   r   ÚueS   r&   r'   c                 C   s
   |   d¡S )Nzlatin-1)Úencoder#   r   r   r   ÚbV   ó   
r)   c                 C   ó
   t | dƒS )NÚ__call__)Úhasattr)Úfnr   r   r   Úcallable]   r*   r/   c                 C   s   | j |dd�S )NÚbackslashreplace)Úerrors)Údecode©ÚtextÚencodingr   r   r   Údecode_backslashreplace`   ó   r6   c                 C   s   | |k| |k  S r   r   )Úar)   r   r   r   Úcmpc   ó   r9   )ÚreduceÚprintÚ
__import__)Úzip_longestc                 C   s   t  | ¡ d¡S ©NÚascii)Úbase64Ú	b64encoder2   ©Úxr   r   r   rB   u   r:   rB   c                 C   s   t  |  d¡¡S r?   )rA   Ú	b64decoder(   rC   r   r   r   rE   x   r:   rE   )Ú
getargspec)r   r   r   r   )r   c                 C   s   dd„ | D ƒS )Nc                 s   s   � | ]}t |ƒV  qd S r   )Úord)Ú.0Úbyter   r   r   Ú	<genexpr>�   s   € ziterbytes.<locals>.<genexpr>r   )Úbufr   r   r   Ú	iterbytesŒ   r7   rL   c                 C   r+   )Nzutf-8©Úunicoder#   r   r   r   r%   �   s   
c                 C   r+   )NÚunicode_escaperM   r#   r   r   r   r'   –   r*   c                 C   r   r   r   r#   r   r   r   r)   ™   r&   c                  G   s4   t | ƒdkr| dd… dd„ | d D ƒf } t| Ž S )Nr   r   r   c                 S   s   g | ]}t |ƒ‘qS r   )Ústr)rH   r   r   r   r   Ú
<listcomp>ž   s    zimport_.<locals>.<listcomp>)Úlenr=   )r   r   r   r   Úimport_œ   s    rS   c                  O   sH   |  dtj¡}|d u rd S t| ƒD ]}t|tƒst|ƒ}| |¡ qd S )NÚfile)ÚpopÚsysÚstdoutÚ	enumerateÚ
isinstanceÚ
basestringrP   Úwrite)r   ÚkwargsÚfpr   r   r   r   Úprint_ª   s   
ýr^   c                 C   s4   z|   |¡W S  ty   t| ƒdd…   ¡  Y S w )Né   éÿÿÿÿ)r2   ÚUnicodeDecodeErrorÚreprr3   r   r   r   r6   µ   s
   ü)Úizip_longest)Úformatannotationr   c                 C   ó   d|  S )NÚ*r   ©Únamer   r   r   r   Ï   ó    c                 C   re   )Nz**r   rg   r   r   r   r   Ð   ri   c                 C   s   dt | ƒ S )Nú=)rb   )Úvaluer   r   r   r   Ñ   s    c                 C   re   )Nz -> r   )r4   r   r   r   r   Ò   ri   c                    s  ‡ ‡‡fdd„}g }|rt | ƒt |ƒ }t| ƒD ]\}}||ƒ}|r0||kr0||
|||  ƒ }| |¡ q|durD| |||ƒƒ¡ n|rK| d¡ |ri|D ]}||ƒ}|rc||v rc||
|| ƒ7 }| |¡ qO|durv| |	||ƒƒ¡ dd |¡ d }dˆ v r�||ˆˆ d ƒƒ7 }|S )	aa  Copy formatargspec from python 3.7 standard library.

        Python 3 has deprecated formatargspec and requested that Signature
        be used instead, however this requires a full reimplementation
        of formatargspec() in terms of creating Parameter objects and such.
        Instead of introducing all the object-creation overhead and having
        to reinvent from scratch, just copy their compatibility routine.

        Utimately we would need to rewrite our "decorator" routine completely
        which is not really worth it right now, until all Python 2.x support
        is dropped.

        c                    s(   ˆ| ƒ}| ˆ v r|dˆˆ |  ƒ 7 }|S )Nz: r   )r   Úresult©Úannotationsrd   Ú	formatargr   r   Úformatargandannotationã   s   z5inspect_formatargspec.<locals>.formatargandannotationNrf   ú(z, ú)Úreturn)rR   rX   ÚappendÚjoin)r   r   Úvarkwr   Ú
kwonlyargsÚkwonlydefaultsrn   ro   ÚformatvarargsÚformatvarkwÚformatvalueÚformatreturnsrd   rp   ÚspecsÚfirstdefaultÚir   ÚspecÚ	kwonlyargrl   r   rm   r   Úinspect_formatargspecÆ   s2   
r‚   )Úformatargspecc                 C   s6   |d ur||usJ dƒ‚||_ |j|ur| |¡‚|‚)NzSame cause emitted)Ú	__cause__Ú__traceback__Úwith_traceback)Útprk   ÚtbÚcauser   r   r   Úreraise  s   

rŠ   z—def reraise(tp, value, tb=None, cause=None):
    if cause is not None:
        assert cause is not value, 'Same cause emitted'
    raise tp, value, tb
c                 C   sB   |d u rt  ¡ }|\}}}|| ur|nd }tt| ƒ| ||d� d S )N)rˆ   r‰   )rV   Úexc_inforŠ   Útype)Ú	exceptionr‹   Úexc_typeÚ	exc_valueÚexc_tbr‰   r   r   r   Úraise_from_cause#  s
   
r‘   Úexecc                 C   s    |d u r
t dƒ d S t dƒ d S )Nzexec func_text in globals_zexec func_text in globals_, lcl)r’   )Ú	func_textÚglobals_Úlclr   r   r   Úexec_/  s   r–   c                    s"   G ‡ ‡fdd„dˆƒ}|ddi ƒS )z Create a base class with a metaclass.

    Drops the middle class upon creation.

    Source: http://lucumr.pocoo.org/2013/5/21/porting-to-python-3-redux/

    c                       s&   e Zd ZejZejZ‡ ‡fdd„ZdS )z!with_metaclass.<locals>.metaclassc                    s$   |d u rt  | |d|¡S ˆ|ˆ |ƒS )Nr   )rŒ   Ú__new__)Úclsrh   Ú
this_basesÚd©ÚbasesÚmetar   r   r—   C  s   z)with_metaclass.<locals>.metaclass.__new__N)Ú__name__Ú
__module__Ú__qualname__rŒ   r,   Ú__init__r—   r   r›   r   r   Ú	metaclass?  s    r¢   Útemporary_classNr   )r�   rœ   r¢   r   r›   r   Úwith_metaclass6  s   		r¤   c                  g   s
  � g }g }d}zRz| D ]}|j }|j}| |ƒ ¡ | |¡ q|V  W n   t ¡ }Y W |rF| ¡ }z||Ž r:d}W n   t ¡ }Y |s/|dkrXt|d |d |d ƒ dS dS |rs| ¡ }z||Ž rgd}W n   t ¡ }Y |s\|dkr„t|d |d |d ƒ w w )zôImplement contextlib.nested, mostly for unit tests.

    As tests still need to run on py2.6 we can't use multiple-with yet.

    Function is removed in py3k but also emits deprecation warning in 2.7
    so just roll it here for everyone.

    )NNNr   r_   r   N)Ú__exit__Ú	__enter__rt   rV   r‹   rU   rŠ   )ÚmanagersÚexitsÚvars_ÚexcÚmgrÚexit_Úenterr   r   r   ÚnestedK  sL   €

€€
úÿù€
úÿr®   )NNr   )kÚ__doc__Úcollectionsr   Ú
contextlibr   Úoperatorr   ÚdottedgetterrV   ÚtimeÚ	threadingÚImportErrorÚdummy_threadingÚversion_infoÚpy36Úpy33Úpy35Úpy32Úpy3kÚpy2kÚpy265ÚplatformÚ
startswithÚjythonr-   ÚpypyÚwin32ÚcpythonÚnextÚpickleÚcPickleÚ
safe_kwargrP   r   ÚbuiltinsÚinspectr   r    Úurllib.parser   r   r   r   r   ÚconfigparserÚior   r   Úbyte_bufferr"   Ústring_typesÚbytesÚbinary_typesÚbinary_typeÚ	text_typeÚintÚ	int_typesÚiterrL   r%   r'   r)   r/   r6   r9   Ú	functoolsr;   Úgetattrr^   rS   Ú	itertoolsÚfilterfalseÚitertools_filterfalseÚfilterÚitertools_filterÚmapÚitertools_imapr>   rA   rB   rE   rF   ÚurllibÚurlparseÚConfigParserÚ	cStringIOrZ   rN   ÚlongÚifilterfalseÚifilterÚimaprc   rd   r‚   rƒ   ÚclockÚ	time_funcrŠ   r’   r‘   r–   r¤   r®   Úcollections.abcÚabcÚcollections_abcr   r   r   r   Ú<module>   s  ÿ








ÿ
ÿ


		ó?ÿ


$