
    +hG                     Z   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j                  d	k\  Zej                  d	k  Z ej                          d
k(  Z ej                          dk(  Zej
                  j'                  d      Zej
                  j'                  d      Zd ej,                         j/                         v Zej2                  dkD  Z ee      Zej:                  Zej<                  Zej@                  Z e!Z! ej@                  dg d      Z" G d de#      Z$	 ddl%Z%d Z(erddl)m*Z+ nddl+Z+d Z,erddl-Z-ddl.Z.ddl/Z/ddl0Z0ddl1Z1ddl2m3Z3 ddl4m5Z6 ddl4m7Z7 ddl0m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@ eAfZBeCfZDeCZEeAZFeGfZHeIZJeGZKe0j                  ZMeNZOePZQ eRe.d      ZS eRe.d      ZT eRe.d      ZUd  ZVd! ZWd" ZXd# ZYd$ ZZ	 dWd&Z[d' Z\d( Z]dd)l^m_Z_ e`Z`dd*lambZb d+ Zcnddl-Z-ddldZ/ddl0Z0ddl7m7Z7 ddlem7Z6 dd,l0mfZ8 dd-l9mgZ: dd.lhm?Z? dd/lhm<Z< dd0lhm@Z@ dd1lhm=Z= dd2lim>Z> dd3lamjZj  G d4 d5e#      Zb	 ddlkZ1elfZBeCfZDeAZEemZFeGenfZHenZKe`Z`eZZZe3Z3e-j                  ZXe-j                  ZWe0j                  ZMe0j                  ZOe0j                  ZQd6 ZVdXd7ZSd8 ZJd9 ZTd: ZUd; Z\d< Z]d= ZYd> Zr esd?       d%Z_d@ ZcerdXdAZtddddBi i eAdC dD dE dF etfdGZun	ddHlmvZw dI ZuerddlxmaZy nddlZyerddlzZzdJ Z{dK Z|ndL Z{dM Z|dXdNZ}dYdOZ~dP ZerddQlmZ yddRlmZ ddSlmZ ddTlmZ  G dU dVe      Z e ed            e_        y# e&$ r ddl'Z%Y %w xY w# e&$ r ddl1Z1Y  w xY w)Zz1Handle Python version/platform incompatibilities.    N)      )r      )r   
   )r   	   )r      )r      )r   r   PyPyCPythonwindarwinaarchl        FullArgSpec)argsvarargsvarkwdefaults
kwonlyargskwonlydefaultsannotationsc                   $    e Zd ZdZddZd Zd Zy)nullcontextzXContext manager that does no additional processing.

    Vendored from Python 3.7.

    Nc                     || _         y Nenter_result)selfr   s     I/var/www/html/venv/lib/python3.12/site-packages/sqlalchemy/util/compat.py__init__znullcontext.__init__>   s
    (    c                     | j                   S r   r   r   s    r   	__enter__znullcontext.__enter__A   s       r    c                      y r    )r   excinfos     r   __exit__znullcontext.__exit__D   s    r    r   )__name__
__module____qualname____doc__r   r#   r'   r%   r    r   r   r   7   s    )!r    r   c           	          t        j                  |       r| j                  } t        j                  |       st	        dj                  |             | j                  }t        j                  |      st	        dj                  |            |j                  }|j                  }t        r|j                  nd}t        |d|       }t        ||||z          }||z  }d}|j                  t         j                  z  r|j                  |   }|dz   }d}|j                  t         j                  z  r|j                  |   }t!        |||| j"                  |t        r| j$                  ndt        r| j&                        S 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   s	            r   inspect_getfullargspecrF   N   sX    }}d#7>>tDEE	B>>"3::2>??NNENNE&*b""GfuDeEEGO45J	WEG	{{W'''..'	E	{{W+++u%# $  +- r    )metadatac                     t        j                         }t        |d      r|j                  |       S |j	                  | d      S )Nselect)groupr%   )importlib_metadataentry_pointshasattrrI   get)rJ   eps     r   importlib_metadata_getrP   z   s<    		(	(	*Br8yyuy%%vveR  r    )reduce)BytesIO)StringIO)zip_longest)perf_counter)
quote_plusunquote_plus	parse_qslquoteunquoteexec
__import__printc                 $    | j                  d      S )Nzlatin-1)encodess    r   brb      s    xx	""r    c                 J    t        j                  | j                  d            S Nascii)base64	b64decoder_   xs    r   rg   rg      s     122r    c                 J    t        j                  |       j                  d      S rd   )rf   	b64encodedecoderh   s    r   rk   rk      s    "))'22r    c                 (    | j                  |d      S )Nbackslashreplaceerrors)rl   textencodings     r   decode_backslashreplacert      s    {{8,>{??r    c                     | |kD  | |k  z
  S r   r%   )arb   s     r   cmprw      s    A!a%  r    Fc                 j    || j                  |      } |dur|| _        n	||| _        	 | # ~ ~~~w xY w)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.

        F)with_traceback	__cause__)	exceptionry   replace_contextfrom_s       r   raise_r~      sR    " %!00@I"'I(
 #2I	BO
 ?E>s   , 2c                     | S r   r%   r`   s    r   ur          r    c                     | S r   r%   r`   s    r   uer      r   r    )TYPE_CHECKING)ABCc                     | j                   S r   )r*   )fns    r   	_qualnamer      s    r    )izip_longest)clock)rY   )rV   )rZ   )rW   )rX   )ABCMetac                       e Zd ZeZy)r   N)r(   r)   r*   r   __metaclass__r%   r    r   r   r      s    r    r   c                     | S r   r%   r`   s    r   rb   rb     r   r    c                 6    |t        d       y t        d       y )Nzexec func_text in globals_zexec func_text in globals_, lcl)r[   )	func_textglobals_lcls      r   exec_r     s    ;-.23r    c                     d | D        S )Nc              3   2   K   | ]  }t        |        y wr   )ord).0bytes     r   	<genexpr>ziterbytes.<locals>.<genexpr>   s     *dD	*s   r%   )bufs    r   	iterbytesr     s    *c**r    c                  ~    t        |       dk(  r#| dd | d   D cg c]  }t        |       c}fz   } t        |  S c c}w )N   r   r   )lenstrr\   )r   args     r   import_r   "  sC    t9>!9T!W =cS =??D4   !>s   :c                      |j                  dt        j                        }|y t        |       D ].  }t	        |t
              st        |      }|j                  |       0 y )Nfile)popsysstdout	enumerate
isinstance
basestringr   write)r   kwargsfpr   s       r   print_r   '  sO    ZZ

+:T? 	Cc:.#hHHSM	r    c                     t        | d      S )Nzutf-8unicoder`   s    r   r   r   0  s    
 q'""r    c                     t        | d      S )Nunicode_escaper   r`   s    r   r   r   7  s    q*++r    c                 |    	 | j                  |      S # t        $ r t        |       dd j                         cY S w xY w)Nr-   )rl   UnicodeDecodeErrorreprrq   s     r   rt   rt   :  sA    	-;;x((! 	- :a#**,,		-s    %;;c                     t        | t              st        |       j                  dd      S t        | t              r| j                  dd      S | S )Nre   rn   ro   )r   string_typesr   r_   rr   s    r   safe_bytestringr   C  sS    $-4='' 2 (   g&;;w/A;BBKr    zdef raise_(exception, with_traceback=None, replace_context=None, from_=False):
    if with_traceback:
        raise type(exception), exception, with_traceback
    else:
        raise exception
c                     | j                   j                  D ]  }| j                  |j                  v s n | j                  S |j                  d| j                  S )z6return __qualname__ equivalent for a method on a class.)im_class__mro__r(   __dict__)methclss     r   r   r   Y  sO     ==(( 	!C}},	! == ,,66r    c                     t        | dd      dk(  rt        |       j                  dd      S t        | t              r8| j
                  d|fv r| j                  S | j
                  dz   | j                  z   S t        |       S )zvendored from python 3.7r)   Ntypingztyping. builtinsr   )getattrr   replacer   typer)   r*   )
annotationbase_modules     r   _formatannotationr   g  s}     :|T2h>
#++Ir::j$'$$[(AA!...((3.1H1HHHJr    r%   c                     d| z   S )N*r%   names    r   <lambda>r   {  s
    3: r    c                     d| z   S )Nz**r%   r   s    r   r   r   |  s
     r    c                     dt        |       z   S )N=)r   )values    r   r   r   }  s    #U"3 r    c                     d| z   S )Nz -> r%   r   s    r   r   r   ~  s
    6D= r    c                 ^   |xs i }xs i fd}g }|rt        |       t        |      z
  }t        |       D ]6  \  }} ||      }|r|k\  r| |
|||z
           z   }|j                  |       8 ||j                   | ||                   n|r|j                  d       |r4|D ]/  } ||      }|r||v r| |
||         z  }|j                  |       1 ||j                   |	 ||                   ddj                  |      z   dz   }dv r| | d               z  }|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                 B     |       }| v r|d |          z   z  }|S )Nz: r%   )r   resultr   formatannotation	formatargs     r   formatargandannotationz5inspect_formatargspec.<locals>.formatargandannotation  s3    s^Fk!$!1+c2B!CCCMr    r   (z, )return)r   r   appendjoin)r   r   r   r   r   r   r   r   formatvarargsformatvarkwformatvalueformatreturnsr   r   specsfirstdefaultir   spec	kwonlyargr   s         ``    `        r   inspect_formatargspecr   r  s\   : (-2!'R	 t9s8}4Lo 	FAs)#.DA-k(1|3C*DEELL		 LL'=g'FGHS!' #	-i8!i>&AKy(ABBDT"	# LL%;E%BCDtyy''#-{"m$4[5J$KLLFr    )formatargspecc                      t        | dd i |S )Nr   r   )_inspect_formatargspec)r   kws     r   r   r     s    %tAay7B77r    c                 Z    t        j                  |       rt        j                  |       S g S )zSReturn a sequence of all dataclasses.Field objects associated
        with a class.)dataclassesis_dataclassfieldsr   s    r   dataclass_fieldsr     s(     ##C(%%c**Ir    c                     t        j                  |       r]t               }| j                  D ]  }|j	                  t        |              t        j                  |       D cg c]	  }||vs| c}S g S c c}w )zReturn a sequence of all dataclasses.Field objects associated with
        a class, excluding those that originate from a superclass.)r   r   set	__bases__updater   r   )r   super_fieldssupfs       r   local_dataclass_fieldsr     sx     ##C(5L}} ;##$4S$9:; '--c2a|6K  I	s   "	A5,A5c                     g S r   r%   r   s    r   r   r         	r    c                     g S r   r%   r   s    r   r   r     r   r    c                 |    |t        j                         }|\  }}}|| ur|nd}t        t        |       | ||       y)legacy.  use raise\_()N)tbcause)r   exc_inforeraiser   )r{   r  exc_type	exc_valueexc_tbr  s         r   raise_from_causer	    sA     <<>"*Hi")3IEDOY6?r    c                      t        |||       y)r  )ry   r}   N)r~   )tpr   r  r  s       r   r  r    s     551r    c                 :      G  fdd       } |ddi       S )zCreate 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                   L    e Zd Zej                  Zej
                  Z fdZy)!with_metaclass.<locals>.metaclassc                     |t         j                  | |d|      } n
 ||      } t        | d      r3t        | j                  d      r | j                  j                  | fi  | S )Nr%   __init_subclass__r0   )r   __new__rM   r  r0   )r   r   
this_basesdbasesr   metas       r   r  z)with_metaclass.<locals>.metaclass.__new__  sj    !ll3b!44*s/0W%%z6 /%%..s9b9Jr    N)r(   r)   r*   r   __call__r   r  )r  r   r  s   r   	metaclassr    s    ====
	r    r  temporary_classNr%   )r  r  r   r  s   ``` r   with_metaclassr    s&     D   &b11r    )timezone)datetime	timedelta)tzinfoc                       e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zed        Zed        Zed        Z edd      Ze Zy)r  z(Minimal port of python 3 timezone object_offsetc                     t        |t              st        d      | j                  |cxk  r| j                  k  st        d       t        d      || _        y )Nzoffset must be a timedeltazYoffset must be a timedelta strictly between -timedelta(hours=24) and timedelta(hours=24).)r   r  r2   
_minoffset
_maxoffset
ValueErrorr   )r   offsets     r   r   ztimezone.__init__#  s`    fi0 <==??f?? +  @ + 
 "DLr    c                 Z    t        |      t        k7  ry| j                  |j                  k(  S )NF)r   r  r   )r   others     r   __eq__ztimezone.__eq__.  s$    E{h&<<5==00r    c                 ,    t        | j                        S r   )hashr   r"   s    r   __hash__ztimezone.__hash__3  s    %%r    c                 P    d| j                   j                  d| j                  dS )Nzsqlalchemy.util.r   r   )	__class__r(   r   r"   s    r   __repr__ztimezone.__repr__6  s     '' r    c                 $    | j                  d       S r   )tznamer"   s    r   __str__ztimezone.__str__<  s    ;;t$$r    c                     | j                   S r   )r   r   dts     r   	utcoffsetztimezone.utcoffset?  s    <<r    c                 8    | j                  | j                        S r   )_name_from_offsetr   r3  s     r   r0  ztimezone.tznameB  s    ))$,,77r    c                      y r   r%   r3  s     r   dstztimezone.dstE  s    r    c                     t        |t              r(|j                  | urt        d      || j                  z   S t        d      )Nzfromutc: dt.tzinfo is not selfz6fromutc() argument must be a datetime instance or None)r   r  r  r$  r   r2   r3  s     r   fromutcztimezone.fromutcH  sC    "h'99D($%HIIDLL((K r    c                 Z    | j                   dz  | j                  z   dz  | j                  z   S )z(backport of timedelta._to_microseconds()iQ i@B )dayssecondsmicrosecondsr  s    r   _timedelta_to_microsecondsz#timezone._timedelta_to_microsecondsQ  s6     ),y/@/@@#001 1r    c                     t        t        j                  |       t        j                  |            \  }}|t        dd|      fS )z backport of timedelta.__divmod__r   )divmodr  r@  r  )rv   rb   qrs       r   _divmod_timedeltasztimezone._divmod_timedeltasX  sD     33A633A6DAq i1a(((r    c                 P   | sy| t        d      k  rd}|  } nd}t        j                  | t        d            \  }}t        j                  |t        d            \  }}d|||fz  }|j                  r|d	|j                  fz  z  }|j                  r|d
|j                  fz  z  }|S )NUTCr   -+r-   )hours)minuteszUTC%s%02d:%02dz:%02dz.%06d)r  r  rE  r>  r?  )deltasignrJ  restrK  r   s         r   r7  ztimezone._name_from_offsetb  s    y|#"55yq)KE4 %77i*MGT &ug(>>F||'T\\O33  'T%6%6$888Mr       ;   )rJ  rK  N)r(   r)   r*   r+   	__slots__r   r(  r+  r.  r1  r5  r0  r9  r;  staticmethodr@  rE  r7  r  r#  r"  r%   r    r   r  r    s    6			"	1
	&		%	 	8		 
	1 
	1 
	) 
	) 
	 
	* R4
 [
r    r  )NNFr   )NN)r+   collections
contextlibr.   operatorplatformr   version_infopy312py311py310py39py38py37r8   py2kpython_implementationpypycpython
startswithwin32osxmachinelowerarmmaxsizeis64bitboolhas_refcount_gccontextmanager
attrgetterdottedgetter
namedtuplenextr   objectr   	threadingImportErrordummy_threadingrF   	importlibrG   rK   rP   rf   r   configparser	itertoolspickle	functoolsrQ   iorR   byte_bufferrS   rT   timerU   urllib.parserV   rW   rX   rY   rZ   r   r   bytesbinary_typesbinary_type	text_typeint	int_typesiterr   	long_typefilterfalseitertools_filterfalsefilteritertools_filtermapitertools_imapr   r   r   r   rb   rg   rk   rt   rw   r~   r   r   r   r   callableabcr   r   ConfigParser	cStringIOr   r   urlliburlparser   cPickler   r   longifilterfalseifilterimapr   r[   r   r   r   r   collections.abccollections_abcr   r   r   r	  r  r  r  r  r  r  utcr%   r    r   <module>r     s0   8      
G#G#G#
6!
6!
6!
6!
& %x%%'61 )(
(
(
*i
7&	llh'!!!#))++
++
w-**""##
$k$$& "(
#L 8!  )%!  6L8LKIIII%11NHf%Eh-GXw'F#33@! EJ#BJ % H
 '!15*!#" f    =L8LKIT	IIH
CF  I  I%22 ((^^N4+!
#,-	 		$ M	7 	  -,30*BL @8 -) "@228 !!"[!6 [!z IaL)HLc  ('(n  s$   0N N 	NN	N*)N*