U
    ÌZjiG  ã                   @   s  d Z ddlZddlZddlZddlZddlZddl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 ¡ dkZe ¡ d	kZej d
¡Zej d¡Zde ¡  ¡ kZeeƒZejZejZejZeZe ddddddddg¡ZG dd„ deƒZ zddl!Z!W n e"k
�r"   ddl#Z!Y nX dd„ Z$e
�r@ddl%m&Z' nddl'Z'dd„ Z(e�rŽddl)Z)ddl*Z*ddl+Z+ddl,Z,ddl-Z-ddl.m/Z/ ddl0m1Z2 ddl0m3Z3 ddl,m4Z4 dd l5m6Z6 dd!l7m8Z8m9Z9m:Z:m;Z;m<Z< e=fZ>e?fZ@e?ZAe=ZBeCfZDeEZFeCZGe,jHZIeJZKeLZMeNe*d"ƒZOeNe*d#ƒZPeNe*d$ƒZQd%d&„ ZRd'd(„ ZSd)d*„ ZTd+d,„ ZUd-d.„ ZVdrd0d1„ZWd2d3„ ZXd4d5„ ZYdd6lZm[Z[ e\Z\dd7l]m^Z^ d8d9„ Z_�ntddl)Z)ddl`Z+ddl,Z,ddl3m3Z3 ddlam3Z2 dd:l,mbZ4 dd;l5mcZ6 dd<ldm;Z; dd=ldm8Z8 dd>ldm<Z< dd?ldm9Z9 dd@lem:Z: ddAl]mfZf G dBdC„ dCeƒZ^zddlgZ-W n e"k
�rX   ddl-Z-Y nX ehfZ>e?fZ@e=ZAeiZBeCejfZDejZGe\Z\eVZVe/Z/e)jTZTe)jSZSe,jkZIe,jlZKe,jmZMdDd&„ ZRdsdEdF„ZOdGdH„ ZFdIdJ„ ZPdKdL„ ZQdMd3„ ZXdNd5„ ZYdOd,„ ZUdPdQ„ ZneodRƒ d/Z[dSd9„ Z_e�rFdtdTdU„ZpddddVi i e=dWdX„ dYdX„ dZdX„ d[dX„ epfd\d]„Zqndd^lmrZs d_d]„ Zqe�rnddltm]Zu nddlZue�r–ddlvZvd`da„ Zwdbdc„ Zxnddda„ Zwdedc„ Zxdudfdg„Zydvdhdi„Zzdjdk„ Z{e�rÖddll|m}Z} nBddml|m|Z| ddnl|m~Z~ ddol|mZ G dpdq„ dqeƒZ}e}e~dƒƒe}_€dS )wz1Handle Python version/platform incompatibilities.é    N)é   é   )r   é	   )r   é   )r   é   )r   r   ÚPyPyÚCPythonÚwinÚdarwinZaarchÚFullArgSpecÚargsÚvarargsÚvarkwÚdefaultsÚ
kwonlyargsÚkwonlydefaultsÚannotationsc                   @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
ÚnullcontextzXContext manager that does no additional processing.

    Vendored from Python 3.7.

    Nc                 C   s
   || _ d S ©N©Úenter_result)Úselfr   © r   úY/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/sqlalchemy/util/compat.pyÚ__init__;   s    znullcontext.__init__c                 C   s   | j S r   r   ©r   r   r   r   Ú	__enter__>   s    znullcontext.__enter__c                 G   s   d S r   r   )r   Úexcinfor   r   r   Ú__exit__A   s    znullcontext.__exit__)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r   4   s   
r   c           	      C   sò   t  | ¡r| j} t  | ¡s(td | ¡ƒ‚| j}t  |¡sFtd |¡ƒ‚|j}|j	}t
r\|jnd}t|d|… ƒ}t|||| … ƒ}||7 }d}|jt j@ r®|j	| }|d }d}|jt j@ rÈ|j	| }t|||| j|t
rà| jndt
rì| jni ƒS )z9Fully vendored version of getfullargspec from Python 3.3.z{!r} is not a Python functionz{!r} is not a code objectr   Né   )ÚinspectÚismethodÚ__func__Ú
isfunctionÚ	TypeErrorÚformatÚ__code__ÚiscodeÚco_argcountÚco_varnamesÚpy3kÚco_kwonlyargcountÚlistÚco_flagsÚ
CO_VARARGSÚCO_VARKEYWORDSr   Ú__defaults__Ú__kwdefaults__Ú__annotations__)	ÚfuncÚcoÚnargsÚnamesÚnkwargsr   r   r   r   r   r   r   Úinspect_getfullargspecK   s:    




ùr<   )Úmetadatac                 C   s.   t  ¡ }t|dƒr|j| d�S | | d¡S d S )NÚselect)Úgroupr   )Úimportlib_metadataÚentry_pointsÚhasattrr>   Úget)r?   Úepr   r   r   Úimportlib_metadata_getw   s    
rE   )Úreduce)ÚBytesIO)ÚStringIO)Úzip_longest)Úperf_counter)Ú
quote_plusÚunquote_plusÚ	parse_qslÚquoteÚunquoteÚexecÚ
__import__Úprintc                 C   s
   |   d¡S )Nzlatin-1)Úencode©Úsr   r   r   Úb£   s    rV   c                 C   s   t  |  d¡¡S ©NÚascii)Úbase64Ú	b64decoderS   ©Úxr   r   r   rZ   ¦   s    rZ   c                 C   s   t  | ¡ d¡S rW   )rY   Ú	b64encodeÚdecoder[   r   r   r   r]   ©   s    r]   c                 C   s   | j |dd�S )NÚbackslashreplace©Úerrors)r^   ©ÚtextÚencodingr   r   r   Údecode_backslashreplace¬   s    re   c                 C   s   | |k| |k  S r   r   )ÚarV   r   r   r   Úcmp¯   s    rg   Fc                 C   sH   |dk	r|   |¡} |dk	r"|| _n|dk	r0|| _z| ‚W 5 ~ ~~~X dS )a{  implement "raise" with cause support.

        :param exception: exception to raise
        :param with_traceback: will call exception.with_traceback()
        :param replace_context: an as-yet-unsupported feature.  This is
         an exception object which we are "replacing", e.g., it's our
         "cause" but we don't want it printed.    Basically just what
         ``__suppress_context__`` does but we don't want to suppress
         the enclosing context, if any.  So for now we make it the
         cause.
        :param from\_: the cause.  this actually sets the cause and doesn't
         hope to hide it someday.

        NF)Úwith_tracebackÚ	__cause__)Ú	exceptionrh   Zreplace_contextÚfrom_r   r   r   Úraise_²   s    
rl   c                 C   s   | S r   r   rT   r   r   r   Úu×   s    rm   c                 C   s   | S r   r   rT   r   r   r   ÚueÚ   s    rn   )ÚTYPE_CHECKING)ÚABCc                 C   s   | j S r   )r!   )Úfnr   r   r   Ú	_qualnameä   s    rr   )Úizip_longest)Úclock)rN   )rK   )rO   )rL   )rM   )ÚABCMetac                   @   s   e Zd ZeZdS )rp   N)r   r    r!   ru   Z__metaclass__r   r   r   r   rp   ù   s   rp   c                 C   s   | S r   r   rT   r   r   r   rV     s    c                 C   s   |d krt dƒ nt dƒ d S )Nzexec func_text in globals_zexec func_text in globals_, lcl)rP   )Z	func_textÚglobals_Zlclr   r   r   Úexec_  s    
rw   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  s    r}   c                  G   s4   t | ƒdkr,| dd… dd„ | d D ƒf } t| Ž S )Né   r   r   c                 S   s   g | ]}t |ƒ‘qS r   )Ústr)ry   Úargr   r   r   Ú
<listcomp>!  s     zimport_.<locals>.<listcomp>)ÚlenrQ   )r   r   r   r   Úimport_  s     rƒ   c                  O   sH   |  dtj¡}|d krd S t| ƒD ] }t|tƒs8t|ƒ}| |¡ q"d S )NÚfile)ÚpopÚsysÚstdoutÚ	enumerateÚ
isinstanceÚ
basestringr   Úwrite)r   ÚkwargsÚfpr€   r   r   r   Úprint_$  s    
rŽ   c                 C   s
   t | dƒS )Nzutf-8©ÚunicoderT   r   r   r   rm   -  s    c                 C   s
   t | dƒS )NZunicode_escaper�   rT   r   r   r   rn   4  s    c                 C   s:   z|   |¡W S  tk
r4   t| ƒdd…   ¡  Y S X d S )Nr#   éÿÿÿÿ)r^   ÚUnicodeDecodeErrorÚreprrb   r   r   r   re   7  s    c                 C   s<   t | tƒst| ƒjddd�S t | tƒr4| jddd�S | S d S )NrX   r_   r`   )r‰   Ústring_typesr�   rS   ©rc   r   r   r   Úsafe_bytestring@  s    
 ÿ
r–   zÁdef raise_(exception, with_traceback=None, replace_context=None, from_=False):
    if with_traceback:
        raise type(exception), exception, with_traceback
    else:
        raise exception
c                 C   s4   | j jD ]}| j|jkr q$q| jS d|j| jf S )z6return __qualname__ equivalent for a method on a classz%s.%s)Zim_classÚ__mro__r   Ú__dict__)ÚmethÚclsr   r   r   rr   V  s
    c                 C   sV   t | ddƒdkr t| ƒ dd¡S t| tƒrN| jd|fkr>| jS | jd | j S t| ƒS )zvendored from python 3.7r    NÚtypingztyping.Ú ÚbuiltinsÚ.)Úgetattrr“   Úreplacer‰   Útyper    r!   )Ú
annotationÚbase_moduler   r   r   Ú_formatannotationd  s    
r¤   r   c                 C   s   d|  S )NÚ*r   ©Únamer   r   r   Ú<lambda>x  ó    r¨   c                 C   s   d|  S )Nz**r   r¦   r   r   r   r¨   y  r©   c                 C   s   dt | ƒ S )Nú=)r“   )Úvaluer   r   r   r¨   z  r©   c                 C   s   d|  S )Nz -> r   r•   r   r   r   r¨   {  r©   c                    s0  |pi }ˆ pi ‰ ‡ ‡‡fdd„}g }|r8t | ƒt |ƒ }t| ƒD ]:\}}||ƒ}|rp||krp||
|||  ƒ }| |¡ q@|dk	r˜| |||ƒƒ¡ n|r¦| d¡ |râ|D ]2}||ƒ}|rÖ||krÖ||
|| ƒ7 }| |¡ q®|dk	rü| |	||ƒƒ¡ dd |¡ d }dˆ k�r,||ˆˆ d ƒƒ7 }|S )	ab  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.

        Ultimately 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(   ˆ| ƒ}| ˆ kr$|dˆˆ |  ƒ 7 }|S )Nz: r   )r€   Úresult©r   ÚformatannotationÚ	formatargr   r   Úformatargandannotation�  s    z5inspect_formatargspec.<locals>.formatargandannotationNr¥   ú(z, ú)Úreturn)r‚   rˆ   ÚappendÚjoin)r   r   r   r   r   r   r   r¯   ÚformatvarargsÚformatvarkwÚformatvalueÚformatreturnsr®   r°   ÚspecsÚfirstdefaultÚir€   ÚspecÚ	kwonlyargr¬   r   r­   r   Úinspect_formatargspeco  s6    

r¿   )Úformatargspecc                  O   s   t | dd… |ŽS )Nr   r~   )Ú_inspect_formatargspec)r½   Úkwr   r   r   r¿   ·  s    c                 C   s   t  | ¡rt  | ¡S g S dS )zSReturn a sequence of all dataclasses.Field objects associated
        with a class.N)ÚdataclassesÚis_dataclassÚfields©rš   r   r   r   Údataclass_fieldsÇ  s    

rÇ   c                    sJ   t  | ¡rBtƒ ‰ | jD ]}ˆ  t|ƒ¡ q‡ fdd„t  | ¡D ƒS g S dS )z…Return a sequence of all dataclasses.Field objects associated with
        a class, excluding those that originate from a superclass.c                    s   g | ]}|ˆ kr|‘qS r   r   )ry   Úf©Zsuper_fieldsr   r   r�   Ø  s     z*local_dataclass_fields.<locals>.<listcomp>N)rÃ   rÄ   ÚsetÚ	__bases__ÚupdaterÇ   rÅ   )rš   Úsupr   rÉ   r   Úlocal_dataclass_fieldsÐ  s    


ÿrÎ   c                 C   s   g S r   r   rÆ   r   r   r   rÇ   á  s    c                 C   s   g S r   r   rÆ   r   r   r   rÎ   ä  s    c                 C   sB   |dkrt  ¡ }|\}}}|| k	r&|nd}tt| ƒ| ||d� dS )úlegacy.  use raise\_()N)ÚtbÚcause)r†   Úexc_infoÚreraiser¡   )rj   rÒ   Úexc_typeÚ	exc_valueÚexc_tbrÑ   r   r   r   Úraise_from_causeè  s
    
r×   c                 C   s   t |||d� dS )rÏ   )rh   rk   N)rl   )Útpr«   rÐ   rÑ   r   r   r   rÓ   ò  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: https://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                    sP   |d krt  | |d|¡} nˆ|ˆ |ƒ} t| dƒrLt| jdƒrL| jj| fˆŽ | S )Nr   Ú__init_subclass__r&   )r¡   Ú__new__rB   rÙ   r&   )rš   r§   Ú
this_basesÚd©ÚbasesrÂ   Úmetar   r   rÚ     s     ÿz)with_metaclass.<locals>.metaclass.__new__N)r   r    r!   r¡   Ú__call__r   rÚ   r   rÝ   r   r   Ú	metaclass  s   rá   Útemporary_classNr   )rß   rÞ   rÂ   rá   r   rÝ   r   Úwith_metaclassø  s    	rã   )Útimezone)Údatetime©Ú	timedelta)Útzinfoc                   @   s’   e Zd ZdZdZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZedd„ ƒZedd„ ƒZeddd�Ze ZdS )rä   z(Minimal port of python 3 timezone objectÚ_offsetc                 C   s>   t |tƒstdƒ‚| j|  kr*| jks4n tdƒ‚|| _d S )Nzoffset must be a timedeltazYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)r‰   rç   r(   Ú
_minoffsetÚ
_maxoffsetÚ
ValueErrorré   )r   Úoffsetr   r   r   r      s    
ÿztimezone.__init__c                 C   s   t |ƒtkrdS | j|jkS )NF)r¡   rä   ré   )r   Úotherr   r   r   Ú__eq__+  s    ztimezone.__eq__c                 C   s
   t | jƒS r   )Úhashré   r   r   r   r   Ú__hash__0  s    ztimezone.__hash__c                 C   s   d| j j| jf S )Nzsqlalchemy.util.%s(%r))Ú	__class__r   ré   r   r   r   r   Ú__repr__3  s    þztimezone.__repr__c                 C   s
   |   d ¡S r   )Útznamer   r   r   r   Ú__str__9  s    ztimezone.__str__c                 C   s   | j S r   )ré   ©r   Údtr   r   r   Ú	utcoffset<  s    ztimezone.utcoffsetc                 C   s   |   | j¡S r   )Ú_name_from_offsetré   rö   r   r   r   rô   ?  s    ztimezone.tznamec                 C   s   d S r   r   rö   r   r   r   ÚdstB  s    ztimezone.dstc                 C   s2   t |tƒr&|j| k	rtdƒ‚|| j S tdƒ‚d S )Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)r‰   rå   rè   rì   ré   r(   rö   r   r   r   ÚfromutcE  s    


ÿztimezone.fromutcc                 C   s   | j d | j d | j S )z(backport of timedelta._to_microseconds()i€Q i@B )ÚdaysÚsecondsÚmicrosecondsræ   r   r   r   Ú_timedelta_to_microsecondsN  s
    þþz#timezone._timedelta_to_microsecondsc                 C   s*   t t | ¡t |¡ƒ\}}|tdd|ƒfS )z backport of timedelta.__divmod__r   )Údivmodrä   rÿ   rç   )rf   rV   ÚqÚrr   r   r   Ú_divmod_timedeltasU  s
    þztimezone._divmod_timedeltasc                 C   sŽ   | sdS | t dƒk r d}|  } nd}t | t dd�¡\}}t |t dd�¡\}}d|||f }|jrt|d	|jf 7 }|jrŠ|d
|jf 7 }|S )NÚUTCr   ú-ú+r#   )Úhours)ÚminuteszUTC%s%02d:%02dz:%02dz.%06d)rç   rä   r  rý   rþ   )ÚdeltaÚsignr  Úrestr  r¬   r   r   r   rù   _  s(     ÿ ÿztimezone._name_from_offseté   é;   )r  r  N)r   r    r!   r"   Ú	__slots__r   rï   rñ   ró   rõ   rø   rô   rú   rû   Ústaticmethodrÿ   r  rù   rç   rë   rê   r   r   r   r   rä     s&   	

	
rä   )NNF)N)N)N)NN)�r"   ÚcollectionsÚ
contextlibr$   ÚoperatorÚplatformr†   Úversion_infoZpy311Zpy39Zpy38Zpy37r.   Zpy2kÚpython_implementationÚpypyÚcpythonÚ
startswithÚwin32ZosxÚmachineÚlowerÚarmÚboolZhas_refcount_gcÚcontextmanagerÚ
attrgetterZdottedgetterÚ
namedtupleÚnextr   Úobjectr   Ú	threadingÚImportErrorZdummy_threadingr<   Ú	importlibr=   r@   rE   rY   r�   ÚconfigparserÚ	itertoolsÚpickleÚ	functoolsrF   ÚiorG   Zbyte_bufferrH   rI   ÚtimerJ   Úurllib.parserK   rL   rM   rN   rO   r   r”   ÚbytesZbinary_typesÚbinary_typeÚ	text_typeÚintZ	int_typesÚiterr}   Z	long_typeÚfilterfalseZitertools_filterfalseÚfilterZitertools_filterÚmapZitertools_imaprŸ   rw   rƒ   rŽ   rV   rZ   r]   re   rg   rl   rm   rn   r›   ro   ÚcallableÚabcrp   rr   ÚConfigParserÚ	cStringIOrs   rt   ÚurllibÚurlparseru   ÚcPicklerŠ   r�   ÚlongÚifilterfalseÚifilterÚimapr–   rP   r¤   r¿   rÀ   rÁ   Úcollections.abcÚcollections_abcrÃ   rÇ   rÎ   r×   rÓ   rã   rå   rä   rç   rè   Úutcr   r   r   r   Ú<module>   sJ  





ùþ&


     ÿ
%
		ÿ	
óF	



]