L i  UdZddlmZddlZddlZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlmZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddl$Z$ddl%m&Z&ddl%m'Z'ddl(m)Z)ddlm*Z*ddl%m+Z+e"d Z,e"d!d"#Z-e"d$ed%ef&Z.e"d'd(&Z/e"d)d*&Z0e"d+d,&Z1e"d-d.&Z2e'jfr:dd/l4m5Z5dd0l4m6Z6d1Z7e8jrd2jtZ;d3Z< dd4Z=dd5Z>ne'j~rdd6Z>ndd7Z>dd8Z@Gd9d:ZAdd;ZBdd<ZC d dd=ZD dd?ZEdd@ZFddAZGddBZHe"dCd>&ZIddDZJ ddEZKe"dFZLe"dGZMGdHdIZNdJZOedd%dK ddLZPeddMdK ddNZPddMdK ddOZPddPZQ d ddQZR d ddRZSddSZT d ddTZUdUZVdVZW d ddWZXGdXdYZYdZZZd[Z[ dd\Z\d]Z]dd^Z^e"d_d`&Z_Gdadbee-Z`Gdcdde`e-ZaGdedfe`e-Zbe!r e`Zce`ZdeeZfeeZgnebxZcZfeaxZdZgddgZhGdhdiZie!reeZjn eijZjGdjdkZlddlZmddmZnddnZo d ddoZpddpZqddqZrddrZs d ddsZt ddtZuduZvGdvdweeZwGdxdyee,ZxGdzd{ee,ZyGd|d}ee,ZzGd~de{Z|Gdde8Z}Gdde}Z~e!r ddlmZeZne~Ze"dej&Z d ddZdaddZddZddZGddeZdddZddZiZded< ddZe jdZ d ddZ ddZe jdZe jdZeef ddZe8dZdZe jdZGddZGddZdZdZddZddZ ddZe jdZddZddZddZGddejZejJZe#e,e*ejJfZy)zRoutines to help with the creation, loading and introspection of modules, classes, hierarchies, attributes, functions, and methods. ) annotationsNupdate_wrapper)CodeType)Any)Callable)cast)Dict) FrozenSet)Generic)Iterator)List)Mapping)NoReturn)Optional)overload)Sequence)Set)Tuple)Type) TYPE_CHECKING)TypeVar)Union) _collections)compat)HAS_CYEXTENSION)Literal)exc_T_T_coT) covariant_F.)bound_MPzmemoized_property[Any]_MAz#HasMemoized.memoized_attribute[Any]_HPzhybridproperty[Any]_HMzhybridmethod[Any])call_annotate_function)Formatc~t|dd}|.t|||}t|tst |d|Sy)N __annotate__)ownerz!.__annotate__ returned a non-dict)getattrr* isinstancedict ValueError)objformatannotateanns a/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py_get_and_call_annotater8FsI35  (6ECc4( C7*K!LMMJ__annotations__ct|tr t|}nt |dd}|iSt|t st |dt |S#t$ricYSwxYw)Nr:z+.__annotations__ is neither a dict nor None)r0type_BASE_GET_ANNOTATIONSAttributeErrorr/r1r2r3r6s r7_get_dunder_annotationsr@Rsz c4  +C0 #0$7C{ #t$'DE Cy"   s A A&%A&c t|}| t|St||}| t|}|+t |t s t |riSt|d|siSt|S#t$rY`wxYw)z:A sparse implementation of annotationlib.get_annotations()z does not have annotations)r@r1 Exceptionr8r0r<callable TypeError)r3r4r6s r7_vendored_get_annotationsrEds  !)#.CCy %S&1 ; *#.C ;#t$  sg%?@A AICy1   s A// A;:A;c8t|tjS)N)r4)rEr+ FORWARDREFr3s r7get_annotationsrIs )V5F5FGGr9c,tj|SN)inspectrIrHs r7rIrIs&&s++r9ct|tr|jjdd}n t |dd}|t j Std|S)Nr:Mapping[str, Any])r0r<__dict__getr/r EMPTY_DICTr r?s r7rIrIsS c4 ,,""#4d;C#0$7C ;** *+S1 1r9c|jd}tj}|j|t t |j S)Nzutf-8)encodermd5_not_for_securityupdater str hexdigest)xms r7md5_hexrZs< A##%AHHQK Q[[] ##r9c@eZdZUdZdZded<ddZ d dZy) safe_reraiseaReraise an exception after invoking some handler code. Stores the existing exception info before invoking so that it is maintained across a potential coroutine context switch. e.g.:: try: sess.commit() except: with safe_reraise(): sess.rollback() TODO: we should at some point evaluate current behaviors in this regard based on current greenlet, gevent/eventlet implementations in Python 3, and also see the degree to which our own asyncio (based on greenlet also) is impacted by this. .rollback() will cause IO / context switch to occur in all these scenarios; what happens to the exception context from an "except:" block if we don't explicitly store it? Original issue was #2703. ) _exc_infozdUnion[None, Tuple[Type[BaseException], BaseException, types.TracebackType], Tuple[None, None, None]]r]c6tj|_yrK)sysexc_infor]selfs r7 __enter__zsafe_reraise.__enter__sr9c|jJ|,|j\}}}|Jd|_|j|d|_|J|j|rK)r]with_traceback)rbtype_value tracebackexc_type exc_valueexc_tbs r7__exit__zsafe_reraise.__exit__sq ~~))) =*... 'Hi( ((!DN**62 2!DN$ $$&&y1 1r9NreturnNone)rfzOptional[Type[BaseException]]rgzOptional[BaseException]rhzOptional[types.TracebackType]rnr)__name__ __module__ __qualname____doc__ __slots__r:rcrlr9r7r\r\sH0I(2,2'21 2  2r9r\c#Kt}|g}|rM|j}||vr|j||j|j ||rLyywrK)setpopaddextend__subclasses__)clsseenstacks r7walk_subclassesrsVUD EE iik $;  HHSM S'')*  s AA A cft|tr|S t|S#t$rd|zcYSwxYw)Nzunprintable element %r)r0rVrB)elements r7string_or_unprintablers:'3 6w<  6+g5 5 6s 00cz|xs |j}djdtjd|DS)N c3<K|]}|jywrK)lower).0ns r7 z(clsname_as_plain_name..sN!AGGINsz([A-Z][a-z]+|SQL))rpjoinrefindall)r|use_namenames r7clsname_as_plain_namers3  #s||D 88Nrzz2F'MN NNr9Callable[..., Any]czt|ts |j}n|}|j}t ||}||k7S)z1Return True if the two class methods don't match.)r0r< __class__rpr/)instance_or_clsagainst_method current_cls method_namecurrent_methods r7method_is_overriddenrs@ ot ,%// %  ))K'.{K'HN ^ ++r9cg}|j|j|jfD]/}t|dr|j }|j |1t |S)zrdecode a slice object as sent to __getitem__. takes into account the 2.5 __index__() method, basically. __index__)startstopstephasattrrappendtuple)slcretrXs r7 decode_slicersW C YY#(( * 1k " A 1  :r9c 'Kt|}|D]^tjftfdt d}|D]}||vs|j ||Qt dzyw)Nc t|zSrKrV)ibases r7z!_unique_symbols..+s$Q-r9iz&exhausted namespace for symbol base %s)rw itertoolschainmaprangery NameError)usedbasesused_setpoolsymrs @r7_unique_symbolsr&s4yH M G 't 5  MC(" S!   M DtKL L Ms AA3 (A3c#HK|r||dzz}||||z}|ryyw)z6Call the given function given each nonzero bit from n.rNru)fnrbs r7map_bitsr6s1 !aLe  Q s""_Fnc(dfd }t|S)z'A signature-matching decorator factory.c"tj|s tj|s tdt |dd}|%d|_ t j|}||_nt j|}dt|jxsdz}tj|jxsd}|ji||}ttd|dtd|dd z|j fz}t#|d d \}}t|| }|j%t'|d |j |d<tj(|r d|d<d|d<n d|d<d|d<dt+|dvrd|z} nd|z} | ||d|j,i} tt.j0t3| | |j } |j4| _|j6| _t9| |S#||_wxYw)Nznot a decoratable functionr-rKru)rdefaultskwonlydefaultszTuple[str, ...]rrtargetr)rrFgroupedrzasync prefixzawait target_prefix__zf%(prefix)sdef %(name)s%(grouped_args)s: return %(target_prefix)s%(target)s(%(fn)s, %(apply_pos)s) ze%(prefix)sdef %(name)s%(grouped_args)s: return %(target_prefix)s%(target)s(%(fn)s, %(apply_kw)s) rp)rL isfunctionismethodrBr/r-rinspect_getfullargspeclenrr1fromkeysr_replacerr rprrUformat_argspec_plusiscoroutinefunctionreprrqtypes FunctionType_exec_code_in_env __defaults____kwdefaults__r) rannofuncspecempty_defaultsempty_kwdefaultsnames targ_namefn_namemetadatacodeenv decoratedrs r7decoratezdecorator..decorateGs+!!"%g.>.>r.B89 92~t4  "BO +44R8"*004D!3t}}':#;;==)<)<)BC}}#+  $($q'2 3$d1Qi0 1{{n   -UHdC 7-1w-O+D%@A;;  & &r *!)HX (0H_ %!#HX (*H_ % 4Q=      v R        dC 5 "$ #%#4#4  i,,Q#+s H H)rrrnrr)rrs` r7 decoratorrDsT-l (F ++r9c$t||||SrK)exec)rrrs r7rrs sO w<r9_PF_TEc<eZdZ d ddZdZd dZd dZd dZy) PluginLoaderNc.||_i|_||_yrK)groupimplsauto_fn)rbrrs r7__init__zPluginLoader.__init__s %'  r9c8|jjyrK)rclearras r7rzPluginLoader.clears r9c||jvr|j|S|jr)|j|}|r||j|<|Stj|jD]<}|j |k(s|j |j|<|j cStjd|jd|)NzCan't load plugin: :) rrrimportlib_metadata_getrrloadr NoSuchModuleError)rbrloaderimpls r7rzPluginLoader.loads 4:: #4::d#% % <<\\$'F#) 4 x11$**= #DyyD #'99 4 yy{" # ##*.**d ;  r9c2fd}||j|<y)Nc|t}jdddD]}t||}t|S)N.r) __import__splitr/)modtoken modulepathobjnames r7rz#PluginLoader.register..loadsGZ(C#))#.qr2 *c5) *3( (r9r)rbrrrrs `` r7registerzPluginLoader.registers )   4r9c|j|=yrKr)rbrs r7 deregisterzPluginLoader.deregisters JJt r9rK)rrVrzOptional[Callable[..., Any]])rrVrnr)rrVrrVrrVrnro)rrVrnro)rprqrrrrrrrrur9r7rrs.BF#? & r9rc" tj}|j}|j}t |j d|t |j|zfS#t$r+tj|}|dt |dfcYSwxYw)Nrr) rLCO_VARKEYWORDS__code__ co_argcountlist co_varnamesboolco_flagsr>rr)rco_varkeywordsconargsrs r7_inspect_func_argsr s  //[[ ' ( ~- .   & ,,R0AwT!W %% &sA1B B)_setraiseerrcyrKrur|rrs r7get_cls_kwargsrs r9FcyrKrurs r7rrsr9c|du}|r t}|J|jjdd}|xr@t|tj xr$t|j tj}|r5t|\}}|j||s|s|rtd|dyd}|r|r |jD]}t||n|jd|S)aeReturn the full set of inherited kwargs for the given `cls`. Probes a class's __init__ method, collecting all named arguments. If the __init__ defines a \**kwargs catch-all, then the constructor is presumed to pass along unrecognized keywords to its base classes, and the collection process is repeated recursively on each of the bases. Uses a subset of inspect.getfullargspec() to cut down on method overhead, as this is used within the Core typing system to create copies of type objects which is a performance-sensitive operation. No anonymous tuple arguments please ! NrFz given cls z doesn't have an __init__ method)rrb)rwrOrPr0rrrrr rUrD __bases__rdiscard) r|rrtoplevelctrhas_initrhas_kwcs r7rrs"t|Hu    ,,  :u -C  5 sE.. / 5 s||U^^ 4 *3/ v Eh %EF v Aad+3  LL Kr9c2tj|dS)zReturn the set of legal kwargs for the given `func`. Uses getargspec so is safe to call for methods, functions, etc. r)rr)funcs r7get_func_kwargsr.s  ( ( .q 11r9c tj|rtd|ztj|r|r{|ryt j |}t j |jdd|j|j|j|j|j|jSt j |Stj|r|r|s |jrt j |j }t j |jdd|j|j|j|j|j|jSt j |j Stj"|rt%|j&|dSt)|drt j |j St)|drDtj|j*rt%|j*|Std |ztd |z) zReturn the argument signature for any callable. All pure-Python callables are accepted, including functions, methods, classes, objects with __call__; builtins and other edge cases like functools.partial() objects raise a TypeError. zCan't inspect builtin: %srNT)no_self_is_init__func____call__)r zCan't inspect callable: %s)rL isbuiltinrDrrr FullArgSpecargsvarargsvarkwr kwonlyargsrrr__self__r"isclassget_callable_argspecrrr#)rr r!rs r7r,r,9s3b899   B  004D%% !"    ##   004 4   "  BKK00=D%% !"    ##   00= =  # KK4   Z ,,R[[99 Z   BKK (' WE E82=> >4r9::r9c t|rtj|}n|}tj|}tj|d|d|dd|d}|dr1|dd}tj|ddd|d|dd|d}n|dr d|dz}|}nd}|}d}|dr&|t t t t|dz }|dr|t |dz }|d|dz}|r |d|z d} nd} tj||d|d| d } |dr%tj|dd|d|d| d } n| } |rt|||| || St|||dd | dd |dd | dd  S)aReturns a dictionary of formatted, introspected function arguments. A enhanced variant of inspect.formatargspec to support code generation. fn An inspectable callable or tuple of inspect getargspec() results. grouped Defaults to True; include (parens, around, argument) lists Returns: args Full inspect.formatargspec for fn self_arg The name of the first positional argument, varargs[0], or None if the function defines no positional arguments. apply_pos args, re-written in calling rather than receiving syntax. Arguments are passed positionally. apply_kw Like apply_pos, except keyword-ish args are passed as keywords. apply_pos_proxied Like apply_pos but omits the self/cls argument Example:: >>> format_argspec_plus(lambda self, a, b, c=3, **d: 123) {'grouped_args': '(self, a, b, c=3, **d)', 'self_arg': 'self', 'apply_kw': '(self, a, b, c=c, **d)', 'apply_pos': '(self, a, b, c, **d)'} rrrNz%s[0]rrucdt|zSN=rrXs r7rz%format_argspec_plus..scCFlr9) formatvaluecdt|zSr0rr2s r7rz%format_argspec_plus..s#A,r9) grouped_argsself_arg apply_posapply_kwapply_pos_proxiedapply_kw_proxied) rCrrinspect_formatargspecrr rrr1) rrrr&r7r6r9 num_defaults name_argsdefaulted_valsr8r:s r7rrqsH|,,R0  ' ' .D,, Qa$q'4aI Aw71:"88 GABKa$q'4a  aT!W$%%L AwDsT!W566  AwDG $ Q$q'!I"1|#3#56++ Q Q* H Aw!77 abM G G .  $/-   "oa^/"5-a3   r9c|tjurd}|rdnd}|rdnd}n t||St d||||| S#t$rd}|r|nd}|rdnd }Y*wxYw) a$format_argspec_plus with considerations for typical __init__ methods Wraps format_argspec_plus with error handling strategies for typical __init__ cases: .. sourcecode:: text object.__init__ -> (self) other unreflectable (usually C) -> (self, *args, **kwargs) z(self)rbz()rrz(self, *args, **kwargs)zself, *args, **kwargsz(*args, **kwargs)z*args, **kwargs)r6r5r7r8r9r:)objectrrrDr1)methodrr5r&proxieds r7format_argspec_initrDs  "x!$r L&vw? ? !!    L4L#*<0GD-4):KG Ls AAAc d}|S)aSA class decorator indicating attributes should refer to a proxy class. This decorator is now a "marker" that does nothing at runtime. Instead, it is consumed by the tools/generate_proxy_methods.py script to statically generate proxy methods and attributes that are fully recognized by typing tools such as mypy. c|SrKru)r|s r7rz&create_proxy_methods..decorates r9ru) target_clstarget_cls_sphinx_nameproxy_cls_sphinx_name classmethodsmethods attributesuse_intermediate_variablers r7create_proxy_methodsrNs& Or9c tj|S#t$r%|tjur dgdddfcYSdgdddfcYSwxYw)ainspect.getargspec with considerations for typical __init__ methods Wraps inspect.getargspec with error handling for typical __init__ cases: .. sourcecode:: text object.__init__ -> (self) other unreflectable (usually C) -> (self, *args, **kwargs) rbNr&kwargs)rrrDrAr)rBs r7getargspec_initrQ sU6,,V44 6 V__ $HdD$/ /Hfh5 5 6s"AAAcjt|tjr|js |jS|S)zSAdjust the incoming callable such that a 'self' argument is not required. )r0r MethodTyper*r") func_or_clss r7unbound_method_to_callablerU4s. +u//09M9M###r9c |g}ntj|}t}g}tj}d}t |D]/\}} t j | j} | jrt| jnd} |dk(rY| jr | j}| r |j| jd| nN|j| jddn/|j| jd| D cgc]} | |fc} | s| jsJ|jt| j| d| jD cgc] \} } | | f c} } 2g}|jfd|D|>t!|r2|jt#|Dcgc] }t%|c}|j'D]7\} }| |vr t#| |}||ur||k7r|j)| d|9|r7|D]2\} } t#| |}||ur||k7r|j)| d|4j,j.ddj1|dScc} wcc} } w#t$rYTwxYwcc}w#t*$rYwxYw#t*$rYwxYw) z}Produce a __repr__() based on direct association of the __init__() specification vs. same-named attributes present. Nrrc3JK|]}tt|dywrK)rr/)rargr3s r7rzgeneric_repr..ssDC$wsC./Ds #r1(, ))rto_listrA OrderedDict enumeraterrrrrr'rzr&rUziprDrr/ritemsrrBrrpr)r3 additional_kw to_inspect omit_kwargmissingpos_argskw_argsvargsrinspr default_lenrXdefaultoutputvaldefvals` r7 generic_reprrn@sU !))*5 hGH2>2J2J2LG EZ(4 00?D15 #dmm,1KAv<< LLEOODIIa $=>OODIIabM2/3yyKA     sHJ J $J J"5,J'.,J6 JJ' J32J36 KKc.eZdZdZdZdZdZddZdZy) portable_instancemethodz_Turn an instancemethod into a (parent, name) pair to produce a serializable callable. )rrrP __weakref__cJ|j|j|jdS)NrrrPrsras r7 __getstate__z$portable_instancemethod.__getstate__s!kkIIkk  r9cZ|d|_|d|_|jdd|_y)NrrrPru)rrrPrP)rbstates r7 __setstate__z$portable_instancemethod.__setstate__s*Ho &M ii"- r9cV|j|_|j|_||_yrK)r*rrprrP)rbmethrPs r7rz portable_instancemethod.__init__smm MM  r9c|j|jt|j|j|i|SrK)rUrPr/rr)rbrXkws r7r#z portable_instancemethod.__call__s3 $++.wt{{DII.:r::r9N)ru) rprqrrrsrtrtrwrr#rur9r7rprps" :I .  ;r9rpc|ht|j}|r|j}fd|jD}|D]$}|j |j |&|j dk(s t|dslt|ts|jn|j|Dcgc]}|vr| c}D]$}|j |j |&|rtScc}w)a'Return an unordered sequence of all classes related to cls. Traverses diamond hierarchies. Fibs slightly: subclasses of builtin types are not returned. Thus class_hierarchy(class A(object)) returns (A, object), not A plus every class systemwide that derives from object. c3,K|] }|vs| ywrKru)r_hiers r7rz"class_hierarchy..s9q1D=9s builtinsr{) r__mro__rxrrryrqr issubclassr<r{)r|processrrrr~srs @r7class_hierarchyrs 5D3;;G  KKM9AKK9 A NN1  HHQK  <<: %WQ8H-I  "!T*  "%%a(   }  A NN1  HHQK  , : s9 C>c#Kt|}|D]6}|jD]%}||jvs||j|f68yw)ziterate all the keys and attributes associated with a class, without using getattr(). Does not use getattr() so that class-sensitive descriptors (i.e. property.__get__()) are not called. N)dirrrO)r|keyskeyrs r7iterate_attributesrsU s8D Aajj AJJsO,, s .A A c|r|}nN|d}t|Dcgc]6}|jdr#|jdrt||s||vr|8}}|D]} t ||} t| dst | d| } t t j| } tj| } tj| d} tj| ddd} d tz}|duxr||ixsi}t|| | j||_t!||||ycc}w#t$rYwxYw#t$rd} d } YrwxYw#t$rYEwxYw) z9Automates delegation of __specials__ for a proxying type.N)rt__del____getattribute__ __metaclass__rtrwrr#r"rrz(self, *args, **kw)z (*args, **kw)z?def %(method)s%(fn_args)s: return %(name)s.%(method)s%(d_args)s)r startswithendswithrr/r rrr>rrr<rDlocalsrrsetattr)into_clsfrom_clsskiponlyr from_instancedundersrYrBmaybe_fnrrfn_argsd_argspyrs r7monkeypatch_proxied_specialsrs  <D]   T"JJt$!,TM     / x0H8Z0xX>He(((3B %004D2247;G11$q'!"+>F  35;X >  % ?4*? E2  R  ')CK $ &#f+.?/  &     %+G$F %   sB;D2D73'D7AE E7 EE EE E%$E%c6t|d|t|d|uS)z;Return True if the two methods are the same implementation.r")r/)meth1meth2s r7methods_equivalentr%s( 5*e , z51 r9c |s |s tdt|trt||r|St|xs+t |Dcgc]}|j dr|c}}tt |}t j}t|tr|}n(|st}t j}n t|}||j||r|St|ts<|t juxrdxsd}t|d|ddj|Gdd } |rd |jz| _ t} t|D]Z\} } | |vrtd | zt| st| d | d t| | t!| | j#| \|| |r| Stddj|| z zcc}w)aEnsure basic interface compliance for an instance or dict of callables. Checks that ``obj`` implements public methods of ``cls`` or has members listed in ``methods``. If ``required`` is not supplied, implementing at least one interface method is sufficient. Methods present on ``obj`` that are not in the interface are ignored. If ``obj`` is a dict and ``dict`` does not meet the interface requirements, the keys of the dictionary are inspected. Keys present in ``obj`` that are not in the interface will raise TypeErrors. Raises TypeError if ``obj`` does not meet the interface criteria. In all passing cases, an object with callable members is returned. In the simple case, ``obj`` is returned as-is; if dict processing kicks in then an anonymous class is returned. obj A type, instance, or dictionary of callables. cls Optional, a type. All public methods of cls are considered the interface. An ``obj`` instance of cls will always pass, ignoring ``required``.. methods Optional, a sequence of method names to consider as the interface. required Optional, a sequence of mandatory implementations. If omitted, an ``obj`` that provides at least one interface method is considered sufficient. As a convenience, required may be a type, in which case all public methods of the type are required. z2a class or collection of method names are requiredr~zany ofzall ofz does not implement z: rZceZdZdZy)(as_interface..AnonymousInterfacezA callable-holding shell.Nrprqrrrsrur9r7AnonymousInterfacerks'r9r Anonymousz%r: unknown in this interfacer1z is not callablez,dictionary does not contain required keys %s)rDr0r<rwrroperatorgegt intersectionr1rrpdictlike_iteritemsrCr staticmethodry) r3r|rKrequiredrY interface implementedcomplies qualifierrfoundrBrs r7 as_interfacer-sB wLMM#tC!5 GM3s8Ma1<<;LMNIc#h-K{{H(D! 5;;x= ((3X>  c4  +8DH Ityy3 5  (( &1CLL&@# EE*3/   ";fDE E~vtDE E"FL,>? & x !! 6 ))Hu$ % & S Ns G(G(_GFDzgeneric_fn_descriptor[Any]ceZdZUdZded<ded<ded<ddd Zedd Zedd Zdd Zerdd Z ddZ ddZ e ddZ y)generic_fn_descriptoragDescriptor which proxies a function when the attribute is not present in dict This superclass is organized in a particular way with "memoized" and "non-memoized" implementation classes that are hidden from type checkers, as Mypy seems to not be able to handle seeing multiple kinds of descriptor classes used for the same attribute. Callable[..., _T_co]fget Optional[str]rsrVrpNc^||_|xs |j|_|j|_yrKrrsrprbrdocs r7rzgeneric_fn_descriptor.__init__s$ *dll   r9cyrKrurbr3r|s r7__get__zgeneric_fn_descriptor.__get__s:=r9cyrKrurs r7rzgeneric_fn_descriptor.__get__s7:r9ctrKNotImplementedErrorrs r7rzgeneric_fn_descriptor.__get__ !##r9cyrKrurbinstancergs r7__set__zgeneric_fn_descriptor.__set__r9cyrKru)rbrs r7 __delete__z generic_fn_descriptor.__delete__rr9ctrKrrbr3s r7_resetzgeneric_fn_descriptor._resetrr9ctrKrr|r3rs r7resetzgeneric_fn_descriptor.resets !##r9rK)rrrr)rbrr3ror|rrnr)r3rAr|rrnr")rbrr3rr|rrnzUnion[_GFD, _T_co]rrrgrrnrorrrnro)r3rrnro)r3rrrVrnro)rprqrrrsr:rrrrrrr classmethodrrur9r7rrsf  M& == ::$A8$$$r9rceZdZdZesdZyy)_non_memoized_propertyza plain descriptor that proxies a function. primary rationale is to provide a plain attribute that's compatible with memoized_property which is also recognized as equivalent by mypy. c,||S|j|SrKrrs r7rz_non_memoized_property.__get__s{ 99S> !r9N)rprqrrrsrrrur9r7rrs  " r9rc0eZdZdZesdZdZedZy)_memoized_propertyz2A read-only @property that is only evaluated once.cb||S|j|x|j|j<}|SrK)rrOrprbr3r|results r7rz_memoized_property.__get__s0{ 3799S> ACLL '&Mr9cDtj||jyrK)rrrprs r7rz_memoized_property._resets  dmm4r9c<|jj|dyrK)rOrxrs r7rz_memoized_property.resets t$r9N) rprqrrrsrrrrrrur9r7rrs&<   5%%r9rc&fd}t|S)zDecorate a method memoize its return value. Best applied to no-arg methods: memoization is not sensitive to argument values, and will always return the same value even when called with different arguments. c|g|i|fd}j|_j|_||jj<S)NcSrKruar{rs r7memoz6memoized_instancemethod..oneshot..memosMr9)rprsrOrbr&r{rrrs @r7oneshotz(memoized_instancemethod..oneshotsKD&4&2&   zz %) bkk" r9r)rrs` r7memoized_instancemethodrs  '2 &&r9cxeZdZUdZesdZeZded<d dZ d dZ d dZ Gdd e e Zedd Zy ) HasMemoizedzA mixin class that maintains the names of memoized elements in a collection for easy cache clearing, generative, etc. ruzFrozenSet[str]_memoized_keysc^|jD]}|jj|d yrK)rrOrxrbelems r7_reset_memoizationszHasMemoized._reset_memoizationss+'' *D MM  dD ) *r9cF|jD]}||jvrJyrK)rrOrs r7_assert_no_memoizationsz#HasMemoized._assert_no_memoizationss)'' -Dt}}, ,, -r9cN||j|<|xj|hzc_yrK)rOr)rbrrgs r7_set_memoized_attributez#HasMemoized._set_memoized_attributes#" c u$r9cdeZdZUdZded<ded<ded<d dd Zedd Zedd Zd Zy)HasMemoized.memoized_attributezTA read-only @property that is only evaluated once. :meta private: Callable[..., _T]rrrsrVrpNc^||_|xs |j|_|j|_yrKrrs r7rz'HasMemoized.memoized_attribute.__init__,s$DI.$,,DL MMDMr9cyrKrurs r7rz&HasMemoized.memoized_attribute.__get__1s ACLL '&   4==/ 1 Mr9rK)rrrr)rbr'r3ror|rrnr')r3rr|rrnr!)rprqrrrsr:rrrrur9r7memoized_attributer!sB    * ? ? 8 8 r9rc(dfd }t|S)zMDecorate a method memoize its return value. :meta private: c|g|i|fd}j|_j|_||jj<|xjjhzc_S)NcSrKrurs r7rzBHasMemoized.memoized_instancemethod..oneshot..memoIs r9)rprsrOrrs @r7rz4HasMemoized.memoized_instancemethod..oneshotFsb*t*r*F KKDM::DL)-DMM"++ &   BKK= 0 Mr9)rbrr&rr{rrnrr)r|rrs ` r7rz#HasMemoized.memoized_instancemethod>s gr**r9Nrm)rrVrgrrnrorr$rnr$)rprqrrrsrrt frozensetrr:rrrmemoized_propertyr!rrrrur9r7rrsT  %.[NN0*-%.r2:++r9rc"eZdZdZdZdZddZy) MemoizedSlotsaTApply memoized items to an object using a __getattr__ scheme. This allows the functionality of memoized_property and memoized_instancemethod to be available to a class using __slots__. The memoized get is not threadsafe under freethreading and the creator method may in extremely rare cases be called more than once. ruct|rK)r>)rbrs r7_fallback_getattrzMemoizedSlots._fallback_getattrhs S!!r9cjdsjdr ttjdr#t d}t ||Stjdr)t dfd}j |_|SjS)N_memoized_attr__memoized_method_c|i|fd}j|_j|_t|S)NcSrKrurs r7rz8MemoizedSlots.__getattr__..oneshot..memo}s!Mr9)rprsr)r&r{rrrryrbs @r7rz*MemoizedSlots.__getattr__..oneshotzs@t*r*"!%  #|| c4( r9)rr>rrr/rrsr)rbrrgrrys`` @r7 __getattr__zMemoizedSlots.__getattr__ks >>+ , 1 !% %T^^se%< =:GDOC5"9: ?4#4SE!:;D #llGON))#. .r9N)rrVrnr)rprqrrrsrtrr rur9r7rr[sI"/r9rct|tr6|jj}|dvry|dvryt d|zt |S)N)trueyesonyt1T)falsenooffrf0FzString is not true/false: %r)r0rVstriprr2rrHs r7asboolrsS#siik! 6 6 9 9;cAB B 9r9cdfd }|S)zqReturn a callable that will evaluate a string as boolean, or one of a set of "alternate" string values. c&|vr|St|SrK)r)r3texts r7 bool_or_valuez"bool_or_str..bool_or_values $;J#; r9)r3rVrnzUnion[str, bool]ru)rrs` r7 bool_or_strr s  r9c ||St|S)zCoerce to integer.)int)rgs r7asintr#s } u:r9c||}||vrQt|trt|||s1||+|tur|rt||||<y|||||<yyyy)zIf 'key' is present in dict 'kw', coerce its value to type 'type\_' if necessary. If 'flexi_bool' is True, the string '0' is considered false when coercing to boolean. N)r0r<rr)r{rrf flexi_booldests r7coerce_kw_typer'ss | r E4( 2c7E0J sG  D=Zr#wDIbgDI 1K r9cJt|}|ftfd|DzS)zbProduce a tuple structure that is cacheable using the __dict__ of obj to retrieve values c3^K|]$}|jvs|j|f&ywrKrOrkr3s r7rz"constructor_key..s.!"qCLL/@CLLO--)rr)r3r|rs` r7constructor_keyr.s2 3 E 6E&+ r9c|t|}|jfd|j|D||i|S)zInstantiate cls using the __dict__ of obj as constructor arguments. Uses inspect to match the named arguments of ``cls``. c3^K|]$}|jvs|j|f&ywrKr*r+s r7rz#constructor_copy..s.!"a3<<>OCLLOr-)rrU difference)r3r|r&r{rs` r7constructor_copyr2sE 3 EII&+&6&6r&:   r9chtjtjdfd}|S)z%Return a threadsafe counter function.rcJ5tcdddS#1swYyxYwrK)next)counterlocksr7_nextzcounter.._nexts"  != ! ! !s ") threadingLockrcount)r8r6r7s @@r7r6r6s+ >> Dooa G! Lr9ct|dr8|j t|jtrtS|jSt |t rtnt}||t rt S||trtS||trtSt|drt St|drtSt|drtS|S)zGiven an instance or class, guess if it is or is acting as one of the basic collection types: list, set and dict. If the __emulates__ property is present, return that preferentially. __emulates__rryrw)rr=rrwr0r<rr1)specimenrjisas r7duck_type_collectionr@sx(  ,  ! !32 J(( ("8T2* C 8T Xs  Xt  x" 5 ! 5 ! r9c  t||r|St|tr>tjd|ddj d|Ddt |dtjd|d|dt |d) Nz Argument 'z ' is expected to be one of type z or c3&K|] }d|z yw)z'%s'Nru)rrs r7rz"assert_arg_type..s$AAVaZ$Asz, got ''z' is expected to be of type 'z', got ')r0rr ArgumentErrorrr<)rXargtypers r7assert_arg_typerFsu#w gu %##$A$AA49N  ##$s)- r9c JtdrtjStdtddt dztdr fd}|Stdr"t fd j DSt dz) z?Return a (key, value) iterator for almost any dict-like object.r` __getitem__rPNzObject '%r' is not dict-likeiterkeysc3XKjD]}J||fywrK)rI)rdictlikegetters r7iteratorz$dictlike_iteritems..iterator1s:((* ')))6#;&& 's'*rc32K|]}||fywrKru)rrrLs r7rz%dictlike_iteritems..8sB3S&+&Bs)rrr`r/rDiterr)rKrMrLs` @r7rr%sx!HNN$%% X}ght.L MF ~6ABBx$ ' z 6 "B(--/BBB6ABBr9c:eZdZUdZded<dfd ZdddZxZS) classpropertyaAA decorator that behaves like @property except that operates on classes rather than instances. The decorator is currently special when using the declarative module, but note that the :class:`~.sqlalchemy.ext.declarative.declared_attr` decorator should be used for this purpose with declarative. Callable[[Any], Any]rcNt||g|i||j|_yrK)superrrs)rbrrXr{rs r7rzclassproperty.__init__Js% **r*|| r9c$|j|SrKrrs r7rzclassproperty.__get__Nsyy~r9)rrRrXrr{rrK)r3rr|zOptional[type]rnr)rprqrrrsr:rr __classcell__rs@r7rQrQ=s $r9rQc$eZdZddZddZddZy)hybridpropertyc ||_||_yrK)rclslevelrbrs r7rzhybridproperty.__init__Ss  r9cN||j|}|S|j|SrKr[rrbrr.clsvals r7rzhybridproperty.__get__W*  ]]5)FM99X& &r9c||_|SrKr[r\s r7 classlevelzhybridproperty.classlevel^  r9Nrrrrr.rrnr!)rrrnzhybridproperty[_T])rprqrrrrrdrur9r7rYrYRs'r9rYc4eZdZddZddZd dZd dZd dZy) rw_hybridpropertyc.||_||_d|_yrK)rr[setfnr\s r7rzrw_hybridproperty.__init__ds  37 r9cN||j|}|S|j|SrKr^r_s r7rzrw_hybridproperty.__get__irar9cD|jJ|j||yrKrkrs r7rzrw_hybridproperty.__set__ps zz%%% 8U#r9c||_|SrKrnr\s r7setterzrw_hybridproperty.setterts  r9c||_|SrKrcr\s r7rdzrw_hybridproperty.classlevelxrer9Nrfrgr)rrrnzrw_hybridproperty[_T])rprqrrrrrrprdrur9r7rirics8 '$r9ric(eZdZdZddZddZddZy) hybridmethodz/Decorate a function as cls- or instance- level.c.|x|_|_||_yrK)rr"r[r\s r7rzhybridmethod.__init__s$(( DM r9c|&|jj||jS|jj||SrK)r[rrr)rbrr.s r7rzhybridmethod.__get__s:  ==((@ @99$$Xu5 5r9c||_|SrKrcr\s r7rdzhybridmethod.classlevelrer9Nrf)rrr.rrnr)rrrnzhybridmethod[_T])rprqrrrsrrrdrur9r7rsrs}s96 r9rsczeZdZUdZded<iZded<ejZ d d dZ dZ d Z d Z y) symbolaIA constant symbol. >>> symbol("foo") is symbol("foo") True >>> symbol("foo") A slight refinement of the MAGICCOOKIE=object() pattern. The primary advantage of symbol() is its repr(). They are also singletons. Repeated calls of symbol('name') will all return the same instance. rVrzDict[str, symbol]symbolsNcf|j5|jj|}|Yt|tsJ| t |}t jt|}||_ |r||_ ||j|<n|r||k7rtd|d||cdddS#1swYyxYw)Nz#Can't replace canonical symbol for z with new int value ) _lockryrPr0rVhashr"__new__rxrrsrD)r|rr canonicalrs r7r}zsymbol.__new__s YY ++//$'C{!$,,,$ $T Ikk&)4"%CK %( D!c!1#=dXF..7[:-   s BB''B0c>t|jdt|ffS)NrX)rxrr"ras r7 __reduce__zsymbol.__reduce__s 3D 222r9ct|SrK)rras r7__str__zsymbol.__str__s Dzr9c"d|jdS)Nzsymbol(r[)rras r7__repr__zsymbol.__repr__s Q''r9)NN)rrVrrr~ Optional[int]rnrx) rprqrrrsr:ryr9r:r{r}rrrrur9r7rxrxsi  I!#G # INN E "#' !   <3(r9rxc0eZdZ ddZddZy) _IntFlagMetac gx|_}|jD]u\}}tjd|rt |t rt ||}n|jds tdXt||||j|wtj|Dcic]}|j|c}|_ycc}w)Nz^__.*__$)r~r~z#Expected integer values for IntFlag)_itemsr`rmatchr0r"rxrrDrrr immutabledictr __members__) r| classnamerdict_r{r`r,vrs r7rz_IntFlagMeta.__init__s  UKKM DAqxx Q'!S!Q!,\\#& EFF CC LL  '44&+ ,sSXXs] ,  ,s%Cctd)Nziter not implemented to ensure compatibility with Python 3.11 IntFlag. Please use __members__. See https://github.com/python/cpython/issues/99304rras r7__iter__z_IntFlagMeta.__iter__s! =  r9N) rrVrzTuple[Type[Any], ...]rDict[str, Any]r{rrnro)rnzIterator[symbol])rprqrrrrrur9r7rrs<  %       2 r9rceZdZdZy) _FastIntFlagzAn 'IntFlag' copycat that isn't slow when performing bitwise operations. the ``FastIntFlag`` class will return ``enum.IntFlag`` under TYPE_CHECKING and ``_FastIntFlag`` otherwise. Nrrur9r7rrsr9r) metaclass)IntFlag_Ec|jD]*\}}||ur|cS|r||jk(r|cS||vs(|cS|ytjd|d|)aOGiven a user parameter, parse the parameter into a chosen value from a list of choice objects, typically Enum values. The user argument can be a string name that matches the name of a symbol, or the symbol object itself, or any number of alternate choices such as True/False/ None etc. :param arg: the user argument. :param choices: dictionary of enum values to lists of possible entries for each. :param name: name of the argument. Used in an :class:`.ArgumentError` that is raised if the parameter doesn't match any available argument. NzInvalid value for 'z': )r`rr rD)rXchoicesrresolve_symbol_names enum_valuechoices r7parse_user_argument_for_enumrsv(&mmo F *   !cZ__&<  F]   {  1$s3'B CCr9c,t|_tdz ay)zAssign a '_creation_order' sequence to the given instance. This allows multiple instances to be sorted in order of creation (typically within a single thread; the counter is not particularly threadsafe). rN)_creation_order)rs r7set_creation_orderr's /HqOr9cx ||i|S#t$r&tdtjddzYywxYw)zXexecutes the given function, catches all exceptions and converts to a warning. z%s('%s') ignoredrrN)rBwarnr_r`)rr&rPs r7warn_exceptionr4sA 7T$V$$ 7 #,,.1"5 567s  ,99cV t||kDrd|d|zS|S#t$r|cYSwxYw)Nz%s...r)rrD)rglen_s r7ellipses_stringr?s= u: U1T]* *L  s ((cPeZdZUdZded< dfd ZddZd dZxZS) _hash_limit_stringa/A string subclass that can only be hashed on a maximum amount of unique values. This is used for warnings so that we can send out parameterized warnings without the __warningregistry__ of the module, or the non-overridable "once" registry within warnings.py, overloading memory, r"_hashc||zd|zz}t|||}td|t||zfz|_|S)Nz6 (this warning may be suppressed after %d occurrences)z%s_%d)rTr}r|r)r|rgnumr& interpolatedrbrs r7r}z_hash_limit_string.__new__VsR Ds J wsL1'UD,>,D$EEF  r9c|jSrK)rras r7__hash__z_hash_limit_string.__hash__`s zzr9c0t|t|k(SrK)r|)rbothers r7__eq__z_hash_limit_string.__eq__csDzT%[((r9)rgrVrr"r& Sequence[Any]rnr)rnr")rrrnr) rprqrrrsr:r}rrrVrWs@r7rrIs> J!)6 )r9rc~|r!ttj||yt|tjy)zdIssue a warning. If msg is a string, :class:`.exc.SAWarning` is used as the category. )rN)_warnings_warnr SAWarning)msgrs r7rrgs( s}}St45sCMM*r9cV|r t|d|}t|tjy)z\Issue a warning with a parameterized string, limiting the number of registrations. N)rrr r)rr&s r7 warn_limitedrts#   b$/3 &r9z)Dict[CodeType, Tuple[str, Type[Warning]]] _warning_tagscfd}|S)Nc2ft|j<|SrK)rr)rcategorymessages r7goz#tag_method_for_warnings..gos&-x%8 bkk" r9ru)rrrs`` r7tag_method_for_warningsrs Ir9z&^(?:sqlalchemy\.(?!testing)|alembic\.)c tj|}dx}}||s6tjt|j j ddsd}|jtvr&d}t|j\}}|xs|}|d|d}|j}|s|dz }n|r|rn| |tj|||dz ytj||dz y#t$rd}YFd}YKxYw) NFrprTz (r[rr) stacklevel) r_ _getframerr_not_sa_pattern f_globalsrPf_coderf_backr2warningsr)rrrframestacklevel_foundwarning_tag_found_suffix _categorys r7rrs % j)054,$BHH!4!4Z!D- $( ||},$(!'4U\\'B$)#0y$IRy2LLE#a !&736 gxJNC g*q.9Q   sC## C50C5c"gdfd }|S)zNDecorate the given function to be a no-op after it is called exactly once.ct}rj} ||i|Sy#rjd|xYw)Nr)rxinsert)rXr{ strong_fnonce_fnronceretry_on_exceptions r7rzonly_once..gosM hhjG *r**   %KK7+s 7)rXrr{rrnz Optional[_T]ru)rrrrs`` @r7 only_oncers 4D  Ir9z%sqlalchemy/([a-z_]+/){0,2}[a-z_]+\.pyzunit(?:2|test2?/)cd}t|dz }||kr3|j||r|dz }||kr|j||r||kr3|j||r|dz}||kr|j||r|||dzS)atChop extraneous lines off beginning and end of a traceback. :param tb: a list of traceback lines as returned by ``traceback.format_stack()`` :param exclude_prefix: a regular expression object matching lines to skip at beginning of ``tb`` :param exclude_suffix: a regular expression object matching lines to skip at end of ``tb`` rr)rsearch)tbexclude_prefixexclude_suffixrends r7chop_tracebackrs" E b'A+C 3,>00E;   3,>00E; 3,>00C9 q 3,>00C9 ecAg r9c^d|z}tj}t|||dS)Nz&def set(obj, value): obj.%s = valuerw)rcopyr)attrnamerrs r7 attrsetterrs, 3h >D (--/CsO u:r9z^__.+__$c(eZdZdZdZdfd ZxZS) TypingOnlyzA mixin class that marks a class as 'typing only', meaning it has absolutely no methods, attributes, or runtime functionality whatsoever. ruct|jvrC|jDchc]}tj |r|}}|rt d|d|dt |ycc}w)NzClass z< directly inherits TypingOnly but has additional attributes r)rrrO_dundersrAssertionErrorrT__init_subclass__)r|r remainingrs r7rzTypingOnly.__init_subclass__st  &!$X^^D5II$SE"--6Kq: !#s A&A&rm)rprqrrrsrtrrVrWs@r7rrs I $ $r9rcDeZdZUdZded< dfd ZeddZxZS) EnsureKWArga6Apply translation of functions to accept \**kw arguments if they don't already. Used to ensure cross-compatibility with third party legacy code, for things like compiler visit methods that need to accept ``**kw`` arguments, but may have been copied from old code that didn't accept them. rV ensure_kwargc |j}|j}|re|D]`}tj||}|s||}t j |}|j rC|j|}t|||bt|)yrK) rrOrrrrr( _wrap_w_kwrrTr) r|fn_regclsdictrrYrrwrappedrs r7rzEnsureKWArg.__init_subclass__.s!!,,  3HHVS) B!88.wrap>s s8Or9)rXrr{rrnrr)r|rrs ` r7rzEnsureKWArg._wrap_w_kw<s dB''r9rm)rrrnr) rprqrrrsr:rrrrVrWs@r7rrs. $((r9rcvt|dr t||S|}|jj|_t|dr|j|_t|j dr3|j j r|j j |_|S|j r|j |_|S)zAugment functools.update_wrapper() to work with objects with a ``__call__()`` method. :param fn: object with __call__ method rprqrs)rrrrprqr#rs)wrapperr_fs r7 wrap_callablerDsr:gr** ll++ 2| $MMBM 2;; *r{{/B/B,,BJ ZZBJ r9cd|vr|jdSd}gg}d}t|}||kr}||}|dk(r8|dk(r-||dz kr%||dzdk(r|djd|dz }n6|dz}n0|dk(r|dk(r|jgn|dj||dz }||kr}|Dcgc]}dj|c}Scc}w)aParse a dotted identifier with accommodation for quoted names. Includes support for SQL-style double quotes as a literal character. E.g.:: >>> quoted_token_parser("name") ["name"] >>> quoted_token_parser("schema.name") ["schema", "name"] >>> quoted_token_parser('"Schema"."Name"') ['Schema', 'Name'] >>> quoted_token_parser('"Schema"."Name""Foo"') ['Schema', 'Name""Foo'] "rrrr;r)rrrr)rgrvridxlvcharrs r7quoted_token_parserr\s$ %{{3 E!dF C UB (Sz 3;zcBFluS1W~/Dr !!#&q  S[UaZ MM"  2J  d # q ()/ /uBGGEN // /s.C c@tjfd}|S)Nc|jduxr |jxsd}|rt|Dcic]}|c}}||_|Scc}w)Nr)rsinject_param_text)rrparamparamsrs r7rz$add_parameter_text..decoratesOjj$39r #C6)J%%+)JKC  *Ks A )rr\)rrrs`` r7add_parameter_textrs  ! !& )F Or9c|jdd}t|dk(r|S|\}}|jds|dztj|zStj|S)N rr)rrrtextwrapdedent)r split_text firstliners r7_dedent_docstringr scD!$J :! ) 9    $4(//)"<<<t$$r9ct|xsd}|jd}t|dk(r|jdt j |jd}|dr|j ddt|Dcgc]\}}|jr|}}}|j dd|t|t|dz } |d| |z|| dz}dj|Scc}}w)Nrrrr) r rrrrrrr^rminr) given_doctext injecttextposdoctextlines injectlinesrlineblanks inject_poss r7inject_docstring_textrs%]%8b9G MM$ E 5zQ R//*-33D9K1~1b!#,U#3 Hic44::%(3rxx{+;%;F &u)= =I  LL$ 40 1I LL$ 40 1I ]]4  LL$ 0 0 23 4  T? B 99U r9ct|dk(ryt|dk}|r|ddn |dd|ddz}|Dcgc]}t|dkDrd|ddzn|}}|rdj|Sdj|ddd |dScc}w) zTrims a list of strings from the middle and return a string of up to four elements. Strings greater than 11 characters will be truncatedrNr.rr; z%s..rZz, ..., )rr)rflagrress r7repr_tuple_namesr(s 5zQ u:?DE!AJE!AJrs$;EFK LdTR6D"I T 9 LC L yy~ $ #a( 3SW== MsBc,try|r tdy)NTzDcython extensions were expected to be installed, but are not presentF)r ImportError)raise_s r7has_compiled_extr,s"  "  r9c.eZdZejZy)_MissingN)rprqrrenumautoMissingrur9r7r.r.sdiikGr9r.)r3rr4r+rnrN)r3rrnrN)rXrrnrV)r|Type[_T]rnzIterator[Type[_T]])rrrnrVrK)r| Type[Any]rrrnrV)rzUnion[Type[Any], object]rrrnr)rslicernTuple[Any, ...])r Sequence[str]rrVrnz Iterator[str])rzCallable[[int], Any]rr"rnz Iterator[Any])rrrnzCallable[[_Fn], _Fn])rzUnion[str, types.CodeType]rrrrVrnr)r|r<rOptional[Set[str]]rz Literal[True]rnzSet[str])r|r<rr7rrrnr7)rrrn List[str])FF)rrr rr!rrnzcompat.FullArgSpec)T)rz-Union[Callable[..., Any], compat.FullArgSpec]rrrnzDict[str, Optional[str]])rurururu)rGr3rHrVrIrVrJr6rKr6rLr6rMr6rnzCallable[[_T], _T])ruNru) r3rrazSequence[Tuple[str, Any]]rbz%Optional[Union[object, List[object]]]rcr6rnrV)NNz self.proxyN)NNNr)r3rrnr)rrVrnz!Callable[[str], Union[str, bool]])rgrrnr)TN) r{rrrVrfr3r%rr&zOptional[Dict[str, Any]]rnro)r3rr|r3rnr5) r3r!r|r2r&rr{rrnr!)rnzCallable[[], int])r>rrjOptional[Type[Any]]rnr9)rXrrEz'Union[Tuple[Type[Any], ...], Type[Any]]rrVrnr)F) rXrrzDict[_E, List[Any]]rrVrrrnz Optional[_E]r)rrr&rrPrrnr))rrVrrrnro)rrVr&rrnro)rrVrz Type[Warning]rnCallable[[_F], _F])Nr)rzUnion[str, Warning]rzOptional[Type[Warning]]rr"rnro)rrrrrnzCallable[..., Optional[_T]])rr8rre.Pattern[str]rr<rnr8)rrrrVrnr;)rrVrnrV)r rr rVrr"rnrV)rrVrzDict[str, str]rnrV)rr8rnr)rs __future__rrr/ functoolsrrLrrrr_rr9rrtypingrrr r r r r rrrrrrrrrrrrrrrr_has_cyrrr r!r"r$r&r'r(r)py314 annotationlibr*r+r8r<rOrr=r@rErIpy310rZr\rrrrrrrrrrrrrr rrr,rrDrNrQrUrnrprrrrrrrrrrnon_memoized_propertypropertyro_memoized_propertyro_non_memoized_propertyrr!HasMemoized_ro_memoized_attributerrrr r#r'r.r2r6r@rFrrQrYrirsr"rxrrr FastIntFlagEnumrrrrrrrVrrrrr:rcompilerrr_SQLA_RE _UNITTEST_RErNoneTyperrrrrrrr rrrr(r,r.r1 MissingOrrur9r7rPs # $   $ T]4( T#s(+, e34 e@A e01 e./ <<5$!MM*;<DD$ # BH \\, 2"$8282v 6/3O O+OO,-,&, ,$  M e/0 Y,x $+9DGen en((V (  $!        -1E *=A  .2E2 2*2=A22j2EJ5;5;%)5;=A5;5;rHLr 5r @Dr r jJ#% "/1      -26( 028< " KB KB,KB6KB KB  KB\;;<#L &   @/FSlv9:($GEN($V"259""%.u5%<.1 $'0BA,7MM4'.J+J+Z(0%(3(F(F%-/-/b  %) '' ' ' ' # '  '4  37  /  F >FI$C0H*WR[" 472;$9(S9(x 4 D\KK T#"' D D D D D  DD 7))< +'<> 8= )"**FG )-0: 0:%0:0: 0:f/3 4 2::> ?rzz./ '3&.#$ 4 : 2::j !$$*&(&(R0)0X  % .18;(RZZ- . (V > tyy    "gh..// 0 r9