Ë
    ðmxiº ã                  óö	  — U d Z ddlmZ ddlZddlZddlm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ddlZddlZddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlm Z  ddlm!Z! ddlm"Z" ddlm#Z# ddl$Z$ddl%m&Z& ddl%m'Z' ddl(m)Z) ddlm*Z* ddl%m+Z+  e"d «      Z, e"d!d"¬#«      Z- e"d$ed%ef   ¬&«      Z. e"d'd(¬&«      Z/ e"d)d*¬&«      Z0 e"d+d,¬&«      Z1 e"d-d.¬&«      Z2e'jf                  r:dd/l4m5Z5 dd0l4m6Z6 d1„ Z7e8jr                  d2   jt                  Z;d3„ Z<	 	 	 	 	 	 d©d4„Z=dªd5„Z>ne'j~                  rdªd6„Z>ndªd7„Z>d«d8„Z@ G d9„ d:«      ZAd¬d;„ZBd­d<„ZC	 d®	 	 	 	 	 d¯d=„ZD	 	 	 	 	 	 d°d?„ZEd±d@„ZFd²dA„ZGd³dB„ZH e"dCd>¬&«      ZId´dD„ZJ	 	 	 	 	 	 	 	 dµdE„ZK e"dF«      ZL e"dG«      ZM G dH„ dI«      ZNdJ„ ZOedd%dKœ	 	 	 	 	 	 	 d¶dL„«       ZPeddMdKœ	 	 	 	 	 	 	 d·dN„«       ZPddMdKœ	 	 	 	 	 	 	 d·dO„ZPd¸dP„ZQ	 d¹	 	 	 	 	 	 	 dºdQ„ZR	 d»	 	 	 	 	 d¼dR„ZSd»dS„ZT	 	 	 	 d½	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d¾dT„ZUdU„ ZVdV„ ZW	 	 	 d¿	 	 	 	 	 	 	 	 	 dÀdW„ZX G dX„ dY«      ZYdZ„ ZZd[„ Z[	 	 	 	 dÁd\„Z\d]„ Z]dÂd^„Z^ e"d_d`¬&«      Z_ G da„ dbee-   «      Z` G dc„ dde`e-   «      Za G de„ dfe`e-   «      Zbe!r	e`Zce`ZdeeZfeeZgnebxZcZfeaxZdZgdÃdg„Zh G dh„ di«      Zie!reeZjneijÖ                  Zj G dj„ dk«      ZldÄdl„ZmdÅdm„ZndÆdn„Zo	 	 dÇ	 	 	 	 	 	 	 	 	 	 	 dÈdo„ZpdÉdp„ZqdÊdq„ZrdËdr„Zs	 d®	 	 	 	 	 dÌds„Zt	 	 	 	 	 	 	 	 dÍdt„Zudu„ Zv G dv„ dwee«      Zw G dx„ dyee,   «      Zx G dz„ d{ee,   «      Zy G d|„ d}ee,   «      Zz G d~„ de{«      Z| G d€„ d�e8«      Z} G d‚„ dƒe}¬„«      Z~e!r	dd…lmZ eZ€ne~Z€ e"d†e�j                  ¬&«      Z‚	 dÎ	 	 	 	 	 	 	 	 	 dÏd‡„Zƒda„dÐdˆ„Z…dÑd‰„Z†dÒdŠ„Z‡ G d‹„ dŒeˆ«      Z‰d®dÓd�„ZŠdÔdŽ„Z‹i ZŒd�e�d�<   	 	 	 	 	 	 dÕd‘„ZŽ e
�j                  d’«      Z�	 	 dÖ	 	 	 	 	 	 	 d×d“„Z‘	 	 	 	 	 	 dØd”„Z’ e
�j                  d•«      Z“ e
�j                  d–«      Z”e”e“f	 	 	 	 	 	 	 dÙd—„Z• e8d«      Z–d˜„ Z— e
�j                  d™«      Z˜ G dš„ d›«      Z™ G dœ„ d�«      Zšdž„ Z›dŸ„ ZœdÚd „Z�dÛd¡„Zž	 	 	 	 	 	 	 	 dÜd¢„ZŸ e
�j                  d£«      Z dÝd¤„Z¡dÞd¥„Z¢dÎd¦„Z£ G d§„ d¨e�j                  «      Z¤e¤�jJ                  Z¥e#e,e*e¤�jJ                     f   Z¦y)ßz…Routines to help with the creation, loading and introspection of
modules, classes, hierarchies, attributes, functions, and methods.

é    )ÚannotationsN©Úupdate_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Ú_MPzmemoized_property[Any]Ú_MAz#HasMemoized.memoized_attribute[Any]Ú_HPzhybridproperty[Any]Ú_HMzhybridmethod[Any])Úcall_annotate_function)ÚFormatc                ó~   — t        | dd «      }|�.t        ||| ¬«      }t        |t        «      st	        | ›d�«      ‚|S y )NÚ__annotate__)Úownerz!.__annotate__ returned a non-dict)Úgetattrr*   Ú
isinstanceÚdictÚ
ValueError)ÚobjÚformatÚannotateÚanns       úR/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.pyÚ_get_and_call_annotater8   F   sI   € Ü˜3 °Ó5ˆØÐÜ(¨°6ÀÔEˆCÜ˜c¤4Ô(Ü  C 7Ð*KÐ!LÓMÐMØˆJØó    Ú__annotations__c                óÒ   — t        | t        «      r	 t        | «      }nt	        | dd «      }|€i S t        |t
        «      st        | ›d�«      ‚t        |«      S # t        $ r i cY S w xY w)Nr:   z+.__annotations__ is neither a dict nor None)r0   ÚtypeÚ_BASE_GET_ANNOTATIONSÚAttributeErrorr/   r1   r2   ©r3   r6   s     r7   Ú_get_dunder_annotationsr@   R   sz   € Ü�cœ4Ô ðÜ+¨CÓ0‘ô
 ˜#Ð0°$Ó7ˆCØˆ{Ø�	ä˜#œtÔ$ÜØ�'ÐDÐEóð ô �C‹yÐøô "ò à’	ðús   ’A ÁA&Á%A&c               óü   — 	 t        | «      }|�t        |«      S t        | |«      }|€t        | «      }|€+t	        | t
        «      st        | «      ri S t        | ›d�«      ‚|si S t        |«      S # t        $ r Y Œ`w xY w)z:A sparse implementation of annotationlib.get_annotations()z does not have annotations)r@   r1   Ú	Exceptionr8   r0   r<   ÚcallableÚ	TypeError)r3   r4   r6   s      r7   Ú_vendored_get_annotationsrE   d   s”   € ð
	!Ü)¨#Ó.ˆCð ˆÜ˜C“yÐ ô % S¨&Ó1ˆØˆ;ô *¨#Ó.ˆCàˆ;Ü˜#œtÔ$¬°¬Ø�	Ü˜s˜gÐ%?Ð@ÓAÐAáØˆIä�C‹yÐøô1 ò 	Ùð	ús   ‚A/ Á/	A;Á:A;c                ó8   — t        | t        j                  ¬«      S )N)r4   )rE   r+   Ú
FORWARDREF©r3   s    r7   Úget_annotationsrI   …   s   € ô )¨´V×5FÑ5FÔGÐGr9   c                ó,   — t        j                  | «      S ©N)ÚinspectrI   rH   s    r7   rI   rI   �   s   € Ü×&Ñ& sÓ+Ð+r9   c                ó²   — t        | t        «      r| j                  j                  dd «      }nt	        | dd «      }|€t
        j                  S t        d|«      S )Nr:   úMapping[str, Any])r0   r<   Ú__dict__Úgetr/   r   Ú
EMPTY_DICTr	   r?   s     r7   rI   rI   ”   sS   € ô �cœ4Ô Ø—,‘,×"Ñ"Ð#4°dÓ;‰Cä˜#Ð0°$Ó7ˆCàˆ;Ü×*Ñ*Ð*äÐ+¨SÓ1Ð1r9   c                óª   — | j                  d«      } t        j                  «       }|j                  | «       t	        t
        |j                  «       «      S )Nzutf-8)Úencoder   Úmd5_not_for_securityÚupdater	   ÚstrÚ	hexdigest)ÚxÚms     r7   Úmd5_hexrZ   ¥   s<   € Ø	�‰�Ó€AÜ×#Ñ#Ó%€AØ‡H�HˆQ„KÜ”�Q—[‘[“]Ó#Ð#r9   c                  ó@   — e Zd ZU dZdZded<   dd„Z	 	 	 	 	 	 	 	 d	d„Zy)
Úsafe_reraisea  Reraise 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]   c                ó6   — t        j                  «       | _        y rK   )ÚsysÚexc_infor]   ©Úselfs    r7   Ú	__enter__zsafe_reraise.__enter__Ñ   s   € ÜŸ™›ˆ�r9   c                ó²   — | j                   €J ‚|€,| j                   \  }}}|€J ‚d | _         |j                  |«      ‚d | _         |€J ‚|j                  |«      ‚rK   )r]   Úwith_traceback)rb   Útype_ÚvalueÚ	tracebackÚexc_typeÚ	exc_valueÚexc_tbs          r7   Ú__exit__zsafe_reraise.__exit__Ô   sq   € ð �~‰~Ð)Ð)Ð)àˆ=Ø*.¯.©.Ñ'ˆH�i ØÐ(Ð(Ð(Ø!ˆDŒNØ×*Ñ*¨6Ó2Ð2à!ˆDŒNØÐ$Ð$Ð$Ø×&Ñ& yÓ1Ð1r9   N©ÚreturnÚNone)rf   zOptional[Type[BaseException]]rg   zOptional[BaseException]rh   zOptional[types.TracebackType]rn   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__r:   rc   rl   © r9   r7   r\   r\   ¬   sH   … ñð0 €Iðó ó(ð2à,ð2ð 'ð2ð 1ð	2ð
 
ô2r9   r\   c              #  óÄ   K  — t        «       }| g}|rM|j                  «       } | |v rŒ|j                  | «       |j                  | j	                  «       «       | –— |rŒLy y ­wrK   )ÚsetÚpopÚaddÚextendÚ__subclasses__)ÚclsÚseenÚstacks      r7   Úwalk_subclassesr   ç   sV   è ø€ Ü“U€DàˆE€EÙ
Ø�i‰i‹kˆØ�$‰;Øà�H‰H�SŒMØ�‰�S×'Ñ'Ó)Ô*ØŠ	ô ùs   ‚AA ÁA c                óf   — t        | t        «      r| S 	 t        | «      S # t        $ r d| z  cY S w xY w)Nzunprintable element %r)r0   rV   rB   )Úelements    r7   Ústring_or_unprintabler‚   õ   s:   € Ü�'œ3ÔØˆð	6Ü�w“<ÐøÜò 	6Ø+¨gÑ5Ò5ð	6ús   ”
 Ÿ0¯0c                óz   — |xs | j                   }dj                  d„ t        j                  d|«      D «       «      S )Nú c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wrK   )Úlower)Ú.0Úns     r7   ú	<genexpr>z(clsname_as_plain_name.<locals>.<genexpr>  s   è ø€ ÒN !�A—G‘G—IÑNùs   ‚z([A-Z][a-z]+|SQL))rp   ÚjoinÚreÚfindall)r|   Úuse_nameÚnames      r7   Úclsname_as_plain_namer�   ÿ   s3   € ð Ò#�s—|‘|€DØ�8‰8ÑN¤r§z¡zÐ2FÈÓ'MÔNÓNÐNr9   úCallable[..., Any]c                óz   — t        | t        «      s| j                  }n| }|j                  }t	        ||«      }||k7  S )z1Return True if the two class methods don't match.)r0   r<   Ú	__class__rp   r/   )Úinstance_or_clsÚagainst_methodÚcurrent_clsÚmethod_nameÚcurrent_methods        r7   Úmethod_is_overriddenr˜     s@   € ô �o¤tÔ,Ø%×/Ñ/‰à%ˆà ×)Ñ)€Kä'.¨{¸KÓ'H€Nà˜^Ñ+Ð+r9   c                óÆ   — g }| j                   | j                  | j                  fD ]/  }t        |d«      r|j	                  «       }|j                  |«       Œ1 t        |«      S )zrdecode a slice object as sent to __getitem__.

    takes into account the 2.5 __index__() method, basically.

    Ú	__index__)ÚstartÚstopÚstepÚhasattrrš   ÚappendÚtuple)ÚslcÚretrX   s      r7   Údecode_slicer£     sW   € ð €CØ�Y‰Y˜Ÿ™ #§(¡(Ð*ò ˆÜ�1�kÔ"Ø—‘“ˆAØ�
‰
�1�ðô �‹:Ðr9   c           
   '  óê   ‡K  — t        | «      }|D ]^  Št        j                  ‰ft        ˆfd„t	        d«      «      «      }|D ]  }||vsŒ|j                  |«       |–—  ŒQ t        d‰z  «      ‚ y ­w)Nc                ó    •— ‰t        | «      z   S rK   ©rV   )ÚiÚbases    €r7   ú<lambda>z!_unique_symbols.<locals>.<lambda>+  s   ø€ ˜$¤ Q£™-€ r9   iè  z&exhausted namespace for symbol base %s)rw   Ú	itertoolsÚchainÚmapÚrangery   Ú	NameError)ÚusedÚbasesÚused_setÚpoolÚsymr¨   s        @r7   Ú_unique_symbolsr´   &  s…   øè ø€ Ü�4‹y€HØò MˆÜ�‰ØˆGÜÓ'¬¨t«Ó5ó
ˆð ò 	MˆCØ˜(Ò"Ø—‘˜SÔ!Ø’	Ùð		Mô ÐDÀtÑKÓLÐLñMùs   ƒAA3Á(A3c              #  óH   K  — |r|| dz   z  } | |«      –— ||z  }|rŒyy­w)z6Call the given function given each nonzero bit from n.r   Nru   )Úfnrˆ   Úbs      r7   Úmap_bitsr¸   6  s1   è ø€ ñ Ø�!��a‘‰LˆÙ�‹eŠØ	ˆQ‰ˆô ùs   ‚" "Ú_Fnc                ó(   ‡ — dˆ fd„}t        |‰ «      S )z'A signature-matching decorator factory.c                ó"  •— t        j                  | «      s t        j                  | «      st        d«      ‚t	        | dd «      }|�%d | _        	 t        j                  | «      }|| _        nt        j                  | «      }dt        |j                  xs d«      z  }t        j                  |j                  xs d«      }|j                  i ||¬«      }t        t        d|d   «      «      t        d|dd	 «      z   | j                   fz   }t#        |d
d«      \  }}t        ||¬«      }|j%                  t'        |d¬«      «       | j                   |d<   t        j(                  | «      rd|d<   d|d<   n
d|d<   d|d<   dt+        |d   «      v rd|z  }	nd|z  }	|‰|| d| j,                  i}
t        t.        j0                  t3        |	|
| j                   «      «      }| j4                  |_        | j6                  |_        t9        || «      S # || _        w xY w)Nznot a decoratable functionr-   rK   ru   )r   ÚdefaultsÚkwonlydefaultszTuple[str, ...]r   r   é   Útargetr¶   )r¿   r¶   F©ÚgroupedrŽ   zasync Úprefixzawait Ú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   Ú
isfunctionÚismethodrB   r/   r-   r   Úinspect_getfullargspecÚlenr¼   r1   Úfromkeysr½   Ú_replacer    r	   rp   r´   rU   Úformat_argspec_plusÚiscoroutinefunctionÚreprrq   ÚtypesÚFunctionTypeÚ_exec_code_in_envÚ__defaults__Ú__kwdefaults__r   )r¶   ÚannofuncÚspecÚempty_defaultsÚempty_kwdefaultsÚnamesÚ	targ_nameÚfn_nameÚmetadataÚcodeÚenvÚ	decoratedr¿   s               €r7   Údecoratezdecorator.<locals>.decorateG  s+  ø€ Ü×!Ñ! "Ô%¬g×.>Ñ.>¸rÔ.BÜÐ8Ó9Ð9ô ˜2˜~¨tÓ4ˆØÐØ"ˆBŒOð+Ü×4Ñ4°RÓ8�à"*�•ä×0Ñ0°Ó4ˆDð !¤3 t§}¡}Ò':¸Ó#;Ñ;ˆÜŸ=™=¨×)<Ñ)<Ò)BÀÓCÐØ�}‰}ØØ#Ø+ð ó 
ˆô ”$Ð(¨$¨q©'Ó2Ó3ÜÐ$ d¨1¨Q iÓ0ñ1à�{‰{ˆnñð 	ô
 -¨U°H¸dÓCÑˆ	�7ä-1¸ÀwÔ-OˆØ�‰Ô+¨D¸%Ô@ÔAØŸ;™;ˆ�Ñä×&Ñ& rÔ*Ø!)ˆH�XÑØ(0ˆH�_Ò%à!#ˆH�XÑØ(*ˆH�_Ñ%ð ”4˜˜Q™“=Ñ ðð ñ	ñ ðð ñ	ð ð �vØ�RØ˜Ÿ™ð
ˆô Ü×ÑÜ˜d C¨¯©Ó5ó
ˆ	ð "$§¡ˆ	ÔØ#%×#4Ñ#4ˆ	Ô Ü˜i¨Ó,Ð,øðQ #+�•ús   ÁH È	H)r¶   r¹   rn   r¹   r   )r¿   rß   s   ` r7   Ú	decoratorrà   D  s   ø€ õT-ôl ˜( FÓ+Ð+r9   c                ó$   — t        | |«       ||   S rK   )Úexec)rÜ   rÝ   rÚ   s      r7   rÑ   rÑ      s   € ô 	ˆˆs„OØˆw‰<Ðr9   Ú_PFÚ_TEc                  ó<   — e Zd Z	 d	 	 	 dd„Zd„ Zd	d„Zd
d„Zdd„Zy)ÚPluginLoaderNc                ó.   — || _         i | _        || _        y rK   )ÚgroupÚimplsÚauto_fn)rb   rè   rê   s      r7   Ú__init__zPluginLoader.__init__¬  s   € ð ˆŒ
Ø%'ˆŒ
Øˆ�r9   c                ó8   — | j                   j                  «        y rK   )ré   Úclearra   s    r7   rí   zPluginLoader.clear³  s   € Ø�
‰
×ÑÕr9   c                ó¶  — || j                   v r | j                   |   «       S | j                  r)| j                  |«      }|r|| j                   |<    |«       S t        j                  | j                  «      D ]<  }|j
                  |k(  sŒ|j                  | j                   |<   |j                  «       c S  t        j                  d| j                  ›d|›�«      ‚)NzCan't load plugin: ú:)	ré   rê   r   Úimportlib_metadata_getrè   rŽ   Úloadr    ÚNoSuchModuleError)rb   rŽ   ÚloaderÚimpls       r7   rñ   zPluginLoader.load¶  s¸   € Ø�4—:‘:ÑØ#�4—:‘:˜dÑ#Ó%Ð%à�<Š<Ø—\‘\ $Ó'ˆFÙØ#)�—
‘
˜4Ñ Ù“x�ä×1Ñ1°$·*±*Ó=ò 	#ˆDØ�y‰y˜DÓ Ø#'§9¡9�—
‘
˜4Ñ Ø—y‘y“{Ò"ð	#ô
 ×#Ò#Ø*.¯*«*±dÐ;ó
ð 	
r9   c                ó2   ‡‡— ˆˆfd„}|| j                   |<   y )Nc                 ó|   •— t        ‰«      } ‰j                  d«      dd  D ]  }t        | |«      } Œ t        | ‰«      S )Nú.r   )Ú
__import__Úsplitr/   )ÚmodÚtokenÚ
modulepathÚobjnames     €€r7   rñ   z#PluginLoader.register.<locals>.loadÊ  sG   ø€ Ü˜ZÓ(ˆCØ#×)Ñ)¨#Ó.¨q¨rÐ2ò *�Ü˜c 5Ó)‘ð*ä˜3 Ó(Ð(r9   ©ré   )rb   rŽ   rü   rý   rñ   s     `` r7   ÚregisterzPluginLoader.registerÉ  s   ù€ õ	)ð  ˆ�
‰
�4Òr9   c                ó   — | j                   |= y rK   rþ   )rb   rŽ   s     r7   Ú
deregisterzPluginLoader.deregisterÒ  s   € Ø�J‰J�tÑr9   rK   )rè   rV   rê   zOptional[Callable[..., Any]])rŽ   rV   rn   r   )rŽ   rV   rü   rV   rý   rV   rn   ro   )rŽ   rV   rn   ro   )rp   rq   rr   rë   rí   rñ   rÿ   r  ru   r9   r7   ræ   ræ   «  s.   „ àBFðØðØ#?óòó
ó& ôr9   ræ   c                ó"  — 	 t         j                  }| j                  }|j                  }t	        |j
                  d | «      t        |j                  |z  «      fS # t        $ r+ t        j                  | «      }|d   t        |d   «      fcY S w xY w)Nr   r   )rL   ÚCO_VARKEYWORDSÚ__code__Úco_argcountÚlistÚco_varnamesÚboolÚco_flagsr>   r   rÈ   )r¶   Úco_varkeywordsÚcoÚnargsrÕ   s        r7   Ú_inspect_func_argsr  Ö  sŽ   € ð
Ü ×/Ñ/ˆð �[‰[ˆØ—‘ˆä�—‘  Ð'Ó(Ü�—‘˜~Ñ-Ó.ð
ð 	
øô ò &ô
 ×,Ñ,¨RÓ0ˆØ�A‰wœ˜T !™W›Ð%Ò%ð&ús   ‚A Á1BÂB)Ú_setÚraiseerrc                ó   — y rK   ru   ©r|   r  r  s      r7   Úget_cls_kwargsr  ê  s   € ð r9   Fc                ó   — y rK   ru   r  s      r7   r  r  ó  s   € ð r9   c               óÊ  — |du }|r
t        «       }|€J ‚| j                  j                  dd«      }|xr@ t        |t        j
                  «      xr$ t        |j                  t        j                  «      }|r5t        |«      \  }}|j                  |«       |s|s|rt        d| › d�«      ‚yd}|r|r | j                  D ]  }t        ||¬«      �Œ n |j                  d«       |S )ae  Return 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 !

    Nrë   Fz
given cls z  doesn't have an __init__ method)r  rb   )rw   rO   rP   r0   rÏ   rÐ   r  r   r  rU   rD   Ú	__bases__r  Údiscard)	r|   r  r  ÚtoplevelÚctrÚhas_initrØ   Úhas_kwÚcs	            r7   r  r  ù  sõ   € ð" �tˆ|€HÙÜ‹uˆØÐÐÐà
�,‰,×
Ñ
˜: uÓ
-€Cð 	ò 	5Ü�sœE×.Ñ.Ó/ò	5ä�s—|‘|¤U§^¡^Ó4ð ñ Ü*¨3Ó/‰ˆˆvØ�‰�EÔá™hÙÜØ   Ð%EÐFóð ð àˆá‘vØ—‘ò 	ˆAÜ˜a dÔ+Ñ3Ùð	ð 	‡L�L�ÔØ€Kr9   c                ó2   — t        j                  | «      d   S )zƒReturn the set of legal kwargs for the given `func`.

    Uses getargspec so is safe to call for methods, functions,
    etc.

    r   )r   rÈ   )Úfuncs    r7   Úget_func_kwargsr  .  s   € ô ×(Ñ(¨Ó.¨qÑ1Ð1r9   c           	     ó�  — t        j                  | «      rt        d| z  «      ‚t        j                  | «      r’|r{|ryt	        j
                  | «      }t	        j                  |j                  dd |j                  |j                  |j                  |j                  |j                  |j                  «      S t	        j
                  | «      S t        j                  | «      r²|r‘|s| j                  rƒt	        j
                  | j                   «      }t	        j                  |j                  dd |j                  |j                  |j                  |j                  |j                  |j                  «      S t	        j
                  | j                   «      S t        j"                  | «      rt%        | j&                  |d¬«      S t)        | d«      rt	        j
                  | j                   «      S t)        | d«      rDt        j                  | j*                  «      rt%        | j*                  |¬«      S t        d	| z  «      ‚t        d	| z  «      ‚)
zþReturn 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.

    zCan't inspect builtin: %sr   NT)Úno_selfÚ_is_initÚ__func__Ú__call__)r   zCan't inspect callable: %s)rL   Ú	isbuiltinrD   rÆ   r   rÈ   ÚFullArgSpecÚargsÚvarargsÚvarkwr¼   Ú
kwonlyargsr½   r   rÇ   Ú__self__r"  ÚisclassÚget_callable_argspecrë   rž   r#  )r¶   r   r!  rÕ   s       r7   r,  r,  9  sÍ  € ô ×Ñ˜ÔÜÐ3°bÑ8Ó9Ð9Ü	×	Ñ	˜BÔ	Ù™Ü×0Ñ0°Ó4ˆDÜ×%Ñ%Ø—	‘	˜!˜"�Ø—‘Ø—
‘
Ø—‘Ø—‘Ø×#Ñ#Ø× Ñ óð ô ×0Ñ0°Ó4Ð4Ü	×	Ñ	˜"Ô	Ù™ B§K¢KÜ×0Ñ0°·±Ó=ˆDÜ×%Ñ%Ø—	‘	˜!˜"�Ø—‘Ø—
‘
Ø—‘Ø—‘Ø×#Ñ#Ø× Ñ óð ô ×0Ñ0°·±Ó=Ð=Ü	�‰˜Ô	Ü#Ø�K‰K °4ô
ð 	
ô 
��ZÔ	 Ü×,Ñ,¨R¯[©[Ó9Ð9Ü	��ZÔ	 Ü×Ñ˜BŸK™KÔ(Ü'¨¯©¸WÔEÐEäÐ8¸2Ñ=Ó>Ð>äÐ4°rÑ9Ó:Ð:r9   c           
     óú  — t        | «      rt        j                  | «      }n| }t        j                  |Ž }t        j                  |d   |d   |d   d|d   «      }|d   r1|d   d   }t        j                  |d   dd |d   |d   d|d   «      }n|d   rd|d   z  }|}nd}|}d}|d   r&|t	        t        t        t           |d   «      «      z  }|d   r|t	        |d   «      z  }|d   |d   z   }|r	|d|z
  d }	nd}	t        j                  ||d   |d   |	d	„ ¬
«      }
|d   r%t        j                  |dd |d   |d   |	d„ ¬
«      }n|
}|rt        ||||
||¬«      S t        |||dd |
dd |dd |dd ¬«      S )a  Returns 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)'}

    r   r   r   Né   z%s[0]r¾   ru   c                ó   — dt        | «      z   S ©Nú=r¦   ©rX   s    r7   r©   z%format_argspec_plus.<locals>.<lambda>Ä  s   € ˜c¤C¨£F™l€ r9   )Úformatvaluec                ó   — dt        | «      z   S r0  r¦   r2  s    r7   r©   z%format_argspec_plus.<locals>.<lambda>Í  s   €  #¬¨A«¡,€ r9   )Úgrouped_argsÚself_argÚ	apply_posÚapply_kwÚapply_pos_proxiedÚapply_kw_proxiedéÿÿÿÿ)	rC   r   rÈ   Úinspect_formatargspecrÉ   r	   r   r   r1   )r¶   rÁ   rÕ   r&  r7  r6  r9  Únum_defaultsÚ	name_argsÚdefaulted_valsr8  r:  s               r7   rÌ   rÌ   q  s   € ôH �„|Ü×,Ñ,¨RÓ0‰àˆä×'Ñ'¨Ð.€Dä×,Ñ,ØˆQ‰��a‘˜$˜q™' 4¨¨a©ó€Ið ˆA‚wØ˜‘7˜1‘:ˆä"×8Ñ8Ø�‰G�A�BˆK˜˜a™ $ q¡'¨4°°a±ó
Ñð 
ˆaŠà˜T !™WÑ$ˆà%ÑàˆØ%Ðà€LØˆA‚wØœœD¤¤s¡¨T°!©WÓ5Ó6Ñ6ˆØˆA‚wØœ˜D ™G›Ñ$ˆà�Q‘˜$˜q™'Ñ!€Iñ Ø" 1 |Ñ#3Ð#5Ð6‰àˆä×+Ñ+ØØˆQ‰ØˆQ‰ØÙ*ô€Hð ˆA‚wÜ!×7Ñ7Ø�a�bˆMØ�‰GØ�‰GØÙ.ô
Ñð $ÐáÜØØØØØ/Ø-ô
ð 	
ô ØØØ  "�oØ˜a �^Ø/°°"Ð5Ø-¨a°Ð3ô
ð 	
r9   c                ó¼   — | t         j                  u rd}|rdnd}|rdnd}n	 t        | |¬«      S t	        d|||||¬
«      S # t        $ r d}|r|nd}|rdnd	}Y Œ*w xY w)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)rb   z()rÄ   rÀ   z(self, *args, **kwargs)zself, *args, **kwargsz(*args, **kwargs)z*args, **kwargs)r6  r5  r7  r8  r9  r:  )Úobjectrë   rÌ   rD   r1   )ÚmethodrÁ   r5  r&  Úproxieds        r7   Úformat_argspec_initrD  æ  sˆ   € ð ”—‘Ñ ØˆÙ"‰x¨ˆÙ!‘$ r‰ð	LÜ& v°wÔ?Ð?ô
 ØØ!ØØØ!Ø ôð øô	 ò 	LØ4ˆLÙ#*‘<Ð0GˆDÙ-4Ñ)Ð:KŠGð	Lús   £A ÁAÁAc                ó   — d„ }|S )aS  A 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                ó   — | S rK   ru   )r|   s    r7   rß   z&create_proxy_methods.<locals>.decorate  s   € Øˆ
r9   ru   )Ú
target_clsÚtarget_cls_sphinx_nameÚproxy_cls_sphinx_nameÚclassmethodsÚmethodsÚ
attributesÚuse_intermediate_variablerß   s           r7   Úcreate_proxy_methodsrN    s   € ò&ð €Or9   c                ó�   — 	 t        j                  | «      S # t        $ r% | t        j                  u r	dgdddfcY S dgdddfcY S w xY w)a  inspect.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)

    rb   Nr&  Úkwargs)r   rÈ   rD   rA  rë   )rB  s    r7   Úgetargspec_initrQ     sU   € ð6Ü×,Ñ,¨VÓ4Ð4øÜò 6Ø”V—_‘_Ñ$Ø�H˜d D¨$Ð/Ò/à�H˜f h°Ð5Ò5ð	6ús   ‚ —"A»AÁAc                ój   — t        | t        j                  «      r| j                  s| j                  S | S )zSAdjust the incoming callable such that a 'self' argument is not
    required.

    )r0   rÏ   Ú
MethodTyper*  r"  )Úfunc_or_clss    r7   Úunbound_method_to_callablerU  4  s.   € ô �+œu×/Ñ/Ô0¸×9MÒ9MØ×#Ñ#Ð#àÐr9   c           	     óŠ  ‡ — |€‰ g}nt        j                  |«      }t        «       }g }t        j                  «       }d}t	        |«      D �]/  \  }}		 t        j                  |	j                  «      }
|
j                  rt        |
j                  «      nd}|dk(  rY|
j                  r|
j                  }|r |j                  |
j                  d|  «       nN|j                  |
j                  dd «       n/|j                  |
j                  d|  D �cg c]  }||f‘Œ c}«       |sŒÚ|
j                  sJ ‚|j                  t        |
j                  | d |
j                  «      D ��cg c]	  \  }}||f‘Œ c}}«       �Œ2 g }|j                  ˆ fd„|D «       «       |�>t!        ‰ |«      r2|j                  t#        ‰ |«      D �cg c]  }t%        |«      ‘Œ c}«       |j'                  «       D ]7  \  }}||v rŒ	 t#        ‰ ||«      }||ur||k7  r|j)                  |›d|›�«       Œ9 |r7|D ]2  \  }}	 t#        ‰ ||«      }||ur||k7  r|j)                  |›d|›�«       Œ4 ‰ j,                  j.                  ›ddj1                  |«      ›d�S c c}w c c}}w # t        $ r Y �ŒTw xY wc c}w # t*        $ r Y ŒÉw xY w# t*        $ r Y Œšw xY w)	z}Produce a __repr__() based on direct association of the __init__()
    specification vs. same-named attributes present.

    Nr   r   c              3  óJ   •K  — | ]  }t        t        ‰|d «      «      –— Œ y ­wrK   )rÎ   r/   )r‡   Úargr3   s     €r7   r‰   zgeneric_repr.<locals>.<genexpr>s  s   øè ø€ ÒD°C”$”w˜s C¨Ó.×/ÑDùs   ƒ #r1  ú(ú, ú))r   Úto_listrA  ÚOrderedDictÚ	enumerater   rÈ   rë   r¼   rÉ   r'  rz   r&  rU   ÚziprD   rž   r/   rÎ   ÚitemsrŸ   rB   r’   rp   rŠ   )r3   Úadditional_kwÚ
to_inspectÚ
omit_kwargÚmissingÚpos_argsÚkw_argsÚvargsr§   ÚinsprÕ   Údefault_lenrX  ÚdefaultÚoutputÚvalÚdefvals   `                r7   Úgeneric_reprrn  @  s®  ø€ ð ÐØ�U‰
ä!×)Ñ)¨*Ó5ˆ
ä‹h€Gà€HÜ2>×2JÑ2JÓ2L€GØ€EÜ˜ZÓ(ó ‰ˆˆ4ð	Ü×0Ñ0°·±Ó?ˆDð 15·²œ#˜dŸm™mÔ,À1ˆKØ�AŠvØ—<’<Ø ŸL™L�EÙØ—O‘O D§I¡I¨a°°Ð$=Õ>à—O‘O D§I¡I¨a¨b MÕ2à—‘Ø/3¯y©y¸¸K¸<Ð/HÖI¨�c˜7’^ÒIôò Ø—}’}Ð$�}Ø—‘ô -0Ø ŸI™I { l mÐ4°d·m±mó-÷á(˜C ð ˜gšóöð+ð: €Fà
‡M�MÓD¸8ÔDÔDàÐœW S¨%Ô0Ø�‰¬G°C¸Ó,?Ö@ S”t˜C•yÒ@ÔAà—}‘}“ò ‰ˆˆVØ�*ÑØð	Ü˜#˜s GÓ,ˆCØ˜'Ñ! c¨V¢mØ—‘ª©cÐ2Ô3øðñ Ø(ò 	‰KˆC�ðÜ˜c 3¨Ó0�Ø˜gÑ%¨#°ª-Ø—M‘MªS±#Ð"6Ô7øð		ð —}‘}×-Ó-¨t¯y©y¸Õ/@ÐAÐAùòO Jùóøô' ò 	Úð	üò> Aøô ò 	Ùð	ûô ò ÙðúsH   ÁJÄJ
Å$JÇ J"Ç5,J'È.,J6Ê	JÊJÊ'	J3Ê2J3Ê6	KËKc                  ó.   — e Zd ZdZdZd„ Zd„ Zdd„Zd„ Zy)	Úportable_instancemethodz_Turn an instancemethod into a (parent, name) pair
    to produce a serializable callable.

    )r¿   rŽ   rP  Ú__weakref__c                óJ   — | j                   | j                  | j                  dœS )N©r¿   rŽ   rP  rs  ra   s    r7   Ú__getstate__z$portable_instancemethod.__getstate__–  s!   € à—k‘kØ—I‘IØ—k‘kñ
ð 	
r9   c                óZ   — |d   | _         |d   | _        |j                  dd«      | _        y )Nr¿   rŽ   rP  ru   )r¿   rŽ   rP   rP  )rb   Ústates     r7   Ú__setstate__z$portable_instancemethod.__setstate__�  s*   € Ø˜H‘oˆŒØ˜&‘MˆŒ	Ø—i‘i ¨"Ó-ˆ�r9   c                óV   — |j                   | _        |j                  | _        || _        y rK   )r*  r¿   rp   rŽ   rP  )rb   ÚmethrP  s      r7   rë   z portable_instancemethod.__init__¢  s   € Ø—m‘mˆŒØ—M‘MˆŒ	Øˆ�r9   c                ó„   — |j                  | j                  «        t        | j                  | j                  «      |i |¤ŽS rK   )rU   rP  r/   r¿   rŽ   )rb   rX  Úkws      r7   r#  z portable_instancemethod.__call__§  s3   € Ø
�	‰	�$—+‘+ÔØ.Œw�t—{‘{ D§I¡IÓ.°Ð:°rÑ:Ð:r9   N)ru   )	rp   rq   rr   rs   rt   rt  rw  rë   r#  ru   r9   r7   rp  rp  Ž  s"   „ ñð
 :€Iò
ò.ó
ó
;r9   rp  c                ó  ‡— | hŠt        | j                  «      }|r×|j                  «       }ˆfd„|j                  D «       }|D ]$  }|j	                  |«       ‰j                  |«       Œ& |j                  dk(  st        |d«      sŒlt        |t        «      s|j                  «       n|j                  |«      D �cg c]  }|‰vr|‘Œ
 c}D ]$  }|j	                  |«       ‰j                  |«       Œ& |rŒ×t        ‰«      S c c}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.

    c              3  ó,   •K  — | ]  }|‰vsŒ|–— Œ y ­wrK   ru   )r‡   Ú_Úhiers     €r7   r‰   z"class_hierarchy.<locals>.<genexpr>»  s   øè ø€ Ò9�q¨1°Dª=”Ñ9ùs   ƒ	�Úbuiltinsr{   )r  Ú__mro__rx   r  rŸ   ry   rq   rž   Ú
issubclassr<   r{   )r|   Úprocessr  r°   r·   r~  Úsr  s          @r7   Úclass_hierarchyr…  ¬  sö   ø€ ð ˆ5€DÜ�3—;‘;Ó€GÙ
Ø�K‰K‹MˆÛ9˜AŸK™KÔ9ˆàò 	ˆAØ�N‰N˜1ÔØ�H‰H�Q�Kð	ð �<‰<˜:Ò%¬W°QÐ8HÔ-IØô " !¤TÔ*ð × Ñ Ô"à×%Ñ% aÓ(ö
àð
 ˜‰}ò ò
ò 
	ˆAð �N‰N˜1ÔØ�H‰H�Q�Kð
	ò ô, �‹:Ðùò
s   Â9C>c              #  ó˜   K  — t        | «      }|D ]6  }| j                  D ]%  }||j                  v sŒ||j                  |   f–—  Œ6 Œ8 y­w)zÍiterate 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)Údirr�  rO   )r|   ÚkeysÚkeyr  s       r7   Úiterate_attributesrŠ  Ò  sU   è ø€ ô ˆs‹8€DØò ˆØ—‘ò 	ˆAØ�a—j‘jÒ Ø˜AŸJ™J s™OÐ,Ò,Ùñ	ñùs
   ‚.A
±A
c                óÐ  — |r|}nN|€d}t        |«      D �cg c]6  }|j                  d«      r#|j                  d«      rt        | |«      s||vr|‘Œ8 }}|D ]Ø  }	 t	        ||«      }	t        |	d«      sŒt	        |	d|	«      }	t        t        j                  |	«      }
	 t        j                  |
«      }t        j                  |d   «      }t        j                  |d   dd «      }d
t        «       z  }|duxr ||ixs i }t        ||«       	 |
j                  ||   _        t!        | |||   «       ŒÚ yc c}w # t        $ r Y Œìw xY w# t        $ r d}d	}Y Œrw xY w# t        $ r Y ŒEw xY w)z9Automates delegation of __specials__ for a proxying type.N)rt   Ú__del__Ú__getattribute__Ú__metaclass__rt  rw  rÅ   r#  r"  r   r   z(self, *args, **kw)z(*args, **kw)z?def %(method)s%(fn_args)s: return %(name)s.%(method)s%(d_args)s)r‡  Ú
startswithÚendswithrž   r/   r	   rÏ   rÐ   r>   r   rÈ   r<  rD   Úlocalsrâ   rÒ   Úsetattr)Úinto_clsÚfrom_clsÚskipÚonlyrŽ   Úfrom_instanceÚdundersrY   rB  Úmaybe_fnr¶   rÕ   Úfn_argsÚd_argsÚpyrÝ   s                   r7   Úmonkeypatch_proxied_specialsr�  â  s   € ñ Ø‰àˆ<ðˆDô ˜“]ö	
àà—‘˜TÔ"Ø—J‘J˜tÔ$Ü ¨!Ô,Ø˜T‘Mò ð	
ˆð 	
ð ò /ˆð	Ü˜x¨Ó0ˆHÜ˜8 ZÔ0ØÜ˜x¨°XÓ>ˆHÜ”e×(Ñ(¨(Ó3ˆBð	%Ü×0Ñ0°Ó4ˆDÜ×2Ñ2°4¸±7Ó;ˆGÜ×1Ñ1°$°q±'¸!¸"°+Ó>ˆFð3Ü5;³Xñ>ð 	ð  Ð%Ò?¨4°Ð*?ÒEÀ2ð 	ô 	ˆR�Œð	Ø')§¡ˆC�‰KÔ$ô 	�˜& # f¡+Õ.ñ?/ùò	
øô& ò 	Ùð	ûô ò 	%Ø+ˆGØ$ŠFð	%ûô ò 	Ùð	úsB   —;D2ÁD7Á3'D7ÂAEÄEÄ7	EÅEÅEÅEÅ	E%Å$E%c                ó6   — t        | d| «      t        |d|«      u S )z;Return True if the two methods are the same implementation.r"  )r/   )Úmeth1Úmeth2s     r7   Úmethods_equivalentr¡  %  s(   € ô �5˜* eÓ,´Øˆz˜5ó1ð ð r9   c           	     óÚ  — |s|st        d«      ‚t        |t        «      rt        | |«      r| S t        |xs+ t	        |«      D �cg c]  }|j                  d«      rŒ|‘Œ c}«      }t        t	        | «      «      }t        j                  }t        |t        «      r|}n(|st        «       }t        j                  }nt        |«      } ||j                  |«      |«      r| S t        | t        «      s<|t        j                  u xr dxs d}t        | ›d|›ddj                  |«      ›�«      ‚ G d„ d	«      }	|rd
|j                  z   |	_        t        «       }
t        | «      D ]Z  \  }}||vrt        d|z  «      ‚t        |«      st        |›d|›d�«      ‚t        |	|t!        |«      «       |
j#                  |«       Œ\  ||
|«      r|	S t        ddj                  ||
z
  «      z  «      ‚c c}w )aŽ  Ensure 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~  zany ofzall ofz does not implement z: rZ  c                  ó   — e Zd ZdZy)ú(as_interface.<locals>.AnonymousInterfacezA callable-holding shell.N©rp   rq   rr   rs   ru   r9   r7   ÚAnonymousInterfacer¤  k  s   „ Ú'r9   r¦  Ú	Anonymousz%r: unknown in this interfacer1  z is not callablez,dictionary does not contain required keys %s)rD   r0   r<   rw   r‡  r�  ÚoperatorÚgeÚgtÚintersectionr1   rŠ   rp   Údictlike_iteritemsrC   r’  Ústaticmethodry   )r3   r|   rK  ÚrequiredrY   Ú	interfaceÚimplementedÚcompliesÚ	qualifierr¦  ÚfoundrB  rô   s                r7   Úas_interfacer´  -  sÅ  € ñB ‘wÜÐLÓMÐMä�#”tÔ¤¨C°Ô!5Øˆ
ä�GÒM¬3¨s«8ÖM a¸1¿<¹<ÈÕ;L¢ÒMÓN€IÜ”c˜#“h“-€Kä�{‰{€HÜ�(œDÔ!Ø‰ÙÜ“5ˆÜ—;‘;‰ä�x“=ˆá�×(Ñ(¨Ó3°XÔ>Øˆ
ô �cœ4Ô Ø¤§¡Ð+Ò8°ÒD¸Hˆ	Üâ’I˜tŸy™y¨Ô3ð5ó
ð 	
÷
(ñ (ñ Ø&1°C·L±LÑ&@ÐÔ#Ü‹E€Eä*¨3Ó/ò ‰ˆ�Ø˜Ñ"ÜÐ;¸fÑDÓEÐEÜ˜Œ~Ü²vºtÐDÓEÐEÜÐ" F¬L¸Ó,>Ô?Ø�	‰	�&Õðñ ��xÔ Ø!Ð!ä
Ø6Ø
�)‰)�H˜uÑ$Ó
%ñ	&óð ùòS  Ns   ÁG(ÁG(Ú_GFDzgeneric_fn_descriptor[Any]c                  ó”   — e Zd ZU dZded<   ded<   ded<   ddd	„Zedd
„«       Zedd„«       Zdd„Zerdd„Z	dd„Z
dd„Zedd„«       Zy)Úgeneric_fn_descriptorag  Descriptor 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]rs   rV   rp   Nc                ó^   — || _         |xs |j                  | _        |j                  | _        y rK   ©r¹  rs   rp   ©rb   r¹  Údocs      r7   rë   zgeneric_fn_descriptor.__init__•  s$   € ØˆŒ	ØÒ*˜dŸl™lˆŒØŸ™ˆ�r9   c                 ó   — y rK   ru   ©rb   r3   r|   s      r7   Ú__get__zgeneric_fn_descriptor.__get__š  s   € Ø:=r9   c                 ó   — y rK   ru   rÀ  s      r7   rÁ  zgeneric_fn_descriptor.__get__�  s   € Ø7:r9   c                ó   — t        «       ‚rK   ©ÚNotImplementedErrorrÀ  s      r7   rÁ  zgeneric_fn_descriptor.__get__   ó   € Ü!Ó#Ð#r9   c                 ó   — y rK   ru   ©rb   Úinstancerg   s      r7   Ú__set__zgeneric_fn_descriptor.__set__¥  ó   � r9   c                 ó   — y rK   ru   )rb   rÉ  s     r7   Ú
__delete__z generic_fn_descriptor.__delete__§  rË  r9   c                ó   — t        «       ‚rK   rÄ  ©rb   r3   s     r7   Ú_resetzgeneric_fn_descriptor._reset©  rÆ  r9   c                ó   — t        «       ‚rK   rÄ  ©r|   r3   rŽ   s      r7   Úresetzgeneric_fn_descriptor.reset¬  s   € ä!Ó#Ð#r9   rK   )r¹  r¸  r¾  rº  )rb   rµ  r3   ro   r|   r   rn   rµ  )r3   rA  r|   r   rn   r"   )rb   rµ  r3   r   r|   r   rn   zUnion[_GFD, _T_co]©rÉ  r   rg   r   rn   ro   ©rÉ  r   rn   ro   )r3   r   rn   ro   )r3   r   rŽ   rV   rn   ro   )rp   rq   rr   rs   r:   rë   r   rÁ  r   rÊ  rÍ  rÐ  ÚclassmethodrÓ  ru   r9   r7   r·  r·  †  sf   … ñð ÓØÓØƒMô&ð
 Ú=ó Ø=àÚ:ó Ø:ó$ñ ãAã8ó$ð ò$ó ñ$r9   r·  c                  ó   — e Zd ZdZesd„ Zyy)Ú_non_memoized_propertyzÉa 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                  |«      S rK   ©r¹  rÀ  s      r7   rÁ  z_non_memoized_property.__get__¼  s   € Øˆ{Ø�Ø—9‘9˜S“>Ð!r9   N)rp   rq   rr   rs   r   rÁ  ru   r9   r7   rØ  rØ  ±  s   „ ññ ó	"ð r9   rØ  c                  ó0   — e Zd ZdZesd„ Zd„ Zed„ «       Zy)Ú_memoized_propertyz2A read-only @property that is only evaluated once.c                ób   — |€| S | j                  |«      x|j                  | j                  <   }|S rK   )r¹  rO   rp   ©rb   r3   r|   Úresults       r7   rÁ  z_memoized_property.__get__Ç  s0   € Øˆ{Ø�Ø37·9±9¸S³>ÐAˆC�L‰L˜Ÿ™Ñ'¨&ØˆMr9   c                óD   — t         j                  || j                  «       y rK   )rÜ  rÓ  rp   rÏ  s     r7   rÐ  z_memoized_property._resetÍ  s   € Ü× Ñ   d§m¡mÕ4r9   c                ó<   — |j                   j                  |d «       y rK   )rO   rx   rÒ  s      r7   rÓ  z_memoized_property.resetÐ  s   € à�‰×Ñ˜˜tÕ$r9   N)	rp   rq   rr   rs   r   rÁ  rÐ  rÖ  rÓ  ru   r9   r7   rÜ  rÜ  Â  s&   „ Ù<áò	ò5ð ñ%ó ñ%r9   rÜ  c                ó&   ‡ — ˆ fd„}t        |‰ «      S )zàDecorate 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 |¤ŽŠˆfd„}‰j                   |_         ‰j                  |_        || j                  ‰j                   <   ‰S )Nc                 ó   •— ‰S rK   ru   ©Úar{  rß  s     €r7   Úmemoz6memoized_instancemethod.<locals>.oneshot.<locals>.memoý  s   ø€ ØˆMr9   )rp   rs   rO   ©rb   r&  r{  rç  rß  r¶   s       @€r7   Úoneshotz(memoized_instancemethod.<locals>.oneshotú  sK   ù€ Ù�DÐ&˜4Ò& 2Ñ&ˆô	ð Ÿ™ˆŒØ—z‘zˆŒØ%)ˆ�‰�b—k‘kÑ"Øˆr9   r   )r¶   ré  s   ` r7   Úmemoized_instancemethodrê  ñ  s   ø€ ô	ô ˜' 2Ó&Ð&r9   c                  óx   — e Zd ZU dZesdZ e«       Zded<   dd„Z	dd„Z
dd„Z G d„ d	ee   «      Zedd
„«       Zy)ÚHasMemoizedzA mixin class that maintains the names of memoized elements in a
    collection for easy cache clearing, generative, etc.

    ru   zFrozenSet[str]Ú_memoized_keysc                ó^   — | j                   D ]  }| j                  j                  |d «       Œ  y rK   )rí  rO   rx   ©rb   Úelems     r7   Ú_reset_memoizationszHasMemoized._reset_memoizations  s+   € Ø×'Ñ'ò 	*ˆDØ�M‰M×Ñ˜d DÕ)ñ	*r9   c                óF   — | j                   D ]  }|| j                  vrŒJ ‚ y rK   )rí  rO   rï  s     r7   Ú_assert_no_memoizationsz#HasMemoized._assert_no_memoizations  s)   € Ø×'Ñ'ò 	-ˆDØ˜tŸ}™}Ò,Ð,Ð,ñ	-r9   c                óN   — || j                   |<   | xj                  |hz  c_        y rK   )rO   rí  )rb   r‰  rg   s      r7   Ú_set_memoized_attributez#HasMemoized._set_memoized_attribute  s#   € Ø"ˆ�‰�cÑØ×Ò ˜uÑ$Ör9   c                  ód   — e Zd ZU dZded<   ded<   ded<   ddd	„Zedd
„«       Zedd„«       Zd„ Zy)úHasMemoized.memoized_attributezTA read-only @property that is only evaluated once.

        :meta private:

        úCallable[..., _T]r¹  rº  rs   rV   rp   Nc                ó^   — || _         |xs |j                  | _        |j                  | _        y rK   r¼  r½  s      r7   rë   z'HasMemoized.memoized_attribute.__init__,  s$   € ØˆDŒIØÒ. $§,¡,ˆDŒLØ ŸM™MˆD�Mr9   c                 ó   — y rK   ru   rÀ  s      r7   rÁ  z&HasMemoized.memoized_attribute.__get__1  s   € Ø<?r9   c                 ó   — y rK   ru   rÀ  s      r7   rÁ  z&HasMemoized.memoized_attribute.__get__4  s   € Ø58r9   c                ó¢   — |€| S | j                  |«      x|j                  | j                  <   }|xj                  | j                  hz  c_        |S rK   )r¹  rO   rp   rí  rÞ  s       r7   rÁ  z&HasMemoized.memoized_attribute.__get__7  sG   € Øˆ{Ø�Ø37·9±9¸S³>ÐAˆC�L‰L˜Ÿ™Ñ'¨&Ø×Ò 4§=¡= /Ñ1ÕØˆMr9   rK   )r¹  rø  r¾  rº  )rb   r'   r3   ro   r|   r   rn   r'   )r3   r   r|   r   rn   r!   )rp   rq   rr   rs   r:   rë   r   rÁ  ru   r9   r7   Úmemoized_attributer÷  !  sB   … ñ	ð  ÓØÓØ‹ô	*ð
 
Ú?ó 
Ø?à	Ú8ó 
Ø8ó	r9   rý  c                ó(   ‡— dˆfd„}t        |‰«      S )zMDecorate a method memoize its return value.

        :meta private:

        c                óâ   •‡—  ‰| g|¢­i |¤ŽŠˆfd„}‰j                   |_         ‰j                  |_        || j                  ‰j                   <   | xj                  ‰j                   hz  c_        ‰S )Nc                 ó   •— ‰S rK   ru   rå  s     €r7   rç  zBHasMemoized.memoized_instancemethod.<locals>.oneshot.<locals>.memoI  s   ø€ Ø�r9   )rp   rs   rO   rí  rè  s       @€r7   ré  z4HasMemoized.memoized_instancemethod.<locals>.oneshotF  sb   ù€ Ù˜Ð*˜tÒ* rÑ*ˆFôð ŸK™KˆDŒMØŸ:™:ˆDŒLØ)-ˆD�M‰M˜"Ÿ+™+Ñ&Ø×Ò B§K¡K =Ñ0ÕØˆMr9   )rb   r   r&  r   r{  r   rn   r   r   )r|   r¶   ré  s    ` r7   rê  z#HasMemoized.memoized_instancemethod>  s   ø€ õ
	ô ˜g rÓ*Ð*r9   Nrm   )r‰  rV   rg   r   rn   ro   ©r¶   r$   rn   r$   )rp   rq   rr   rs   r   rt   Ú	frozensetrí  r:   rñ  ró  rõ  Úmemoized_propertyr!   rý  rÖ  rê  ru   r9   r7   rì  rì    sT   … ññ
 ð ˆ	á%.£[€N�NÓ0ó*ó-ó%ôÐ.¨rÑ2ô ð: ò+ó ñ+r9   rì  c                  ó"   — e Zd ZdZdZd„ Zdd„Zy)ÚMemoizedSlotsaT  Apply 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.

    ru   c                ó   — t        |«      ‚rK   )r>   )rb   r‰  s     r7   Ú_fallback_getattrzMemoizedSlots._fallback_getattrh  s   € Ü˜SÓ!Ð!r9   c                ó€  ‡ ‡‡— ‰j                  d«      s‰j                  d«      rt        ‰«      ‚t        ‰ j                  d‰› �«      r# t	        ‰ d‰› �«      «       }t        ‰ ‰|«       |S t        ‰ j                  d‰› �«      r)t	        ‰ d‰› �«      Šˆˆˆ fd„}‰j                  |_        |S ‰ j                  ‰«      S )NÚ_memoized_attr_Ú_memoized_method_c                 ó‚   •‡—  ‰| i |¤ŽŠˆfd„}‰j                   |_         ‰j                  |_        t        ‰‰|«       ‰S )Nc                 ó   •— ‰S rK   ru   rå  s     €r7   rç  z8MemoizedSlots.__getattr__.<locals>.oneshot.<locals>.memo}  s   ø€ Ø!�Mr9   )rp   rs   r’  )r&  r{  rç  rß  r‰  ry  rb   s      @€€€r7   ré  z*MemoizedSlots.__getattr__.<locals>.oneshotz  s@   ù€ Ù˜tÐ* rÑ*�ô"ð !%§¡�”Ø#Ÿ|™|�”Ü˜˜c 4Ô(Ø�r9   )r�  r>   rž   r’   r/   r’  rs   r  )rb   r‰  rg   ré  ry  s   ``  @r7   Ú__getattr__zMemoizedSlots.__getattr__k  s½   ú€ Ø�>‰>Ð+Ô,°·±Øô1
ô ! Ó%Ð%ô �T—^‘^ °s°eÐ%<Ô=Ø:”G˜D O°C°5Ð"9Ó:Ó<ˆEÜ�D˜#˜uÔ%ØˆLÜ�T—^‘^Ð'8¸¸Ð%>Ô?Ü˜4Ð#4°S°EÐ!:Ó;ˆDö	ð #Ÿl™lˆGŒOØˆNà×)Ñ)¨#Ó.Ð.r9   N)r‰  rV   rn   r   )rp   rq   rr   rs   rt   r  r  ru   r9   r7   r  r  [  s   „ ñð €Iò"ô/r9   r  c                ó¤   — t        | t        «      r6| j                  «       j                  «       } | dv ry| dv ryt	        d| z  «      ‚t        | «      S )N)ÚtrueÚyesÚonÚyÚtÚ1T)ÚfalseÚnoÚoffrˆ   ÚfÚ0FzString is not true/false: %r)r0   rV   Ústripr†   r2   r  rH   s    r7   Úasboolr  Œ  sS   € Ü�#”sÔØ�i‰i‹k×ÑÓ!ˆØÐ6Ñ6ØØÐ9Ñ9ØäÐ;¸cÑAÓBÐBÜ�‹9Ðr9   c                 ó   ‡ — dˆ fd„}|S )zqReturn a callable that will evaluate a string as
    boolean, or one of a set of "alternate" string values.

    c                ó&   •— | ‰v r| S t        | «      S rK   )r  )r3   Útexts    €r7   Úbool_or_valuez"bool_or_str.<locals>.bool_or_valuež  s   ø€ Ø�$‰;ØˆJä˜#“;Ðr9   )r3   rV   rn   zUnion[str, bool]ru   )r  r  s   ` r7   Úbool_or_strr   ˜  s   ø€ õð Ðr9   c                ó    — | €| S t        | «      S )zCoerce to integer.)Úint)rg   s    r7   Úasintr#  §  s   € ð €}ØˆÜˆu‹:Ðr9   c                ó¶   — |€| }|| v rQt        |t        «      rt        | |   |«      s1| |   �+|t        u r|rt        | |   «      ||<   y || |   «      ||<   yyyy)zµIf '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)r0   r<   r  r  )r{  r‰  rf   Ú
flexi_boolÚdests        r7   Úcoerce_kw_typer'  ¯  ss   € ð €|Øˆð 	ˆr‰	Ü˜E¤4Ô(´
¸2¸c¹7ÀEÔ0JØˆs‰GÐà”D‰=™ZÜ˜r #™w›ˆD�ŠIá˜b ™g›ˆD�ŠIð  ð 1Kð 	r9   c                óJ   ‡ — t        |«      }|ft        ˆ fd„|D «       «      z   S )zbProduce a tuple structure that is cacheable using the __dict__ of
    obj to retrieve values

    c              3  ó^   •K  — | ]$  }|‰j                   v sŒ|‰j                   |   f–— Œ& y ­wrK   ©rO   ©r‡   Úkr3   s     €r7   r‰   z"constructor_key.<locals>.<genexpr>Ï  s.   øè ø€ ò Ø!"¨q°C·L±LÒ/@ˆˆC�L‰L˜‰OÔñùó   ƒ-—-)r  r    )r3   r|   rØ   s   `  r7   Úconstructor_keyr.  É  s2   ø€ ô
 ˜3Ó€EØˆ6”Eó Ø&+ôó ñ ð r9   c                ó|   ‡ — t        |«      }|j                  ˆ fd„|j                  |«      D «       «        ||i |¤ŽS )z„Instantiate cls using the __dict__ of obj as constructor arguments.

    Uses inspect to match the named arguments of ``cls``.

    c              3  ó^   •K  — | ]$  }|‰j                   v sŒ|‰j                   |   f–— Œ& y ­wrK   r*  r+  s     €r7   r‰   z#constructor_copy.<locals>.<genexpr>Ü  s.   øè ø€ ò Ø!"¸aÀ3Ç<Á<Ò>OˆˆC�L‰L˜‰OÔñùr-  )r  rU   Ú
difference)r3   r|   r&  r{  rØ   s   `    r7   Úconstructor_copyr2  Ô  sE   ø€ ô ˜3Ó€EØ‡I�Ió Ø&+×&6Ñ&6°rÓ&:ôô ñ �Ð˜ÑÐr9   c                 óh   ‡‡— t        j                  «       Št        j                  d«      Šˆˆfd„} | S )z%Return a threadsafe counter function.r   c                 óJ   •— ‰5  t        ‰ «      cd d d «       S # 1 sw Y   y xY wrK   )Únext)ÚcounterÚlocks   €€r7   Ú_nextzcounter.<locals>._nexté  s"   ø€ Øñ 	!Ü˜“=÷	!÷ 	!ò 	!ús   „™")Ú	threadingÚLockrª   Úcount)r8  r6  r7  s    @@r7   r6  r6  â  s+   ù€ ô �>‰>Ó€DÜ�o‰o˜aÓ €Gõ!ð €Lr9   c                ó¤  — t        | d«      r8| j                  � t        | j                  t        «      rt        S | j                  S t	        | t
        «      rt        nt        } || t        «      rt        S  || t        «      rt        S  || t        «      rt        S t        | d«      rt        S t        | d«      rt        S t        | d«      rt        S |S )zÄGiven 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__rŸ   ry   rw   )rž   r=  r‚  rw   r0   r<   r  r1   )Úspecimenrj  Úisas      r7   Úduck_type_collectionr@  ð  s®   € ô ˆx˜Ô(à× Ñ Ð,´Ø×!Ñ!¤3ô2
ô ˆJà×(Ñ(Ð(ä" 8¬TÔ2�*¼
€CÙ
ˆ8”TÔÜˆÙ	ˆX”sÔ	Üˆ
Ù	ˆX”tÔ	Üˆäˆx˜Ô"ÜˆÜ	�˜5Ô	!Üˆ
Ü	�˜5Ô	!Üˆàˆr9   c           
     ó
  — t        | |«      r| S t        |t        «      r>t        j                  d|›ddj	                  d„ |D «       «      ›dt        | «      ›d�«      ‚t        j                  d|›d|›dt        | «      ›d�«      ‚)	Nz
Argument 'z ' is expected to be one of type z or c              3  ó&   K  — | ]	  }d |z  –— Œ y­w)z'%s'Nru   )r‡   ræ  s     r7   r‰   z"assert_arg_type.<locals>.<genexpr>  s   è ø€ Ò$A°A V¨a¥ZÑ$Aùs   ‚z, got 'ú'z' is expected to be of type 'z', got ')r0   r    r    ÚArgumentErrorrŠ   r<   )rX  ÚargtyperŽ   s      r7   Úassert_arg_typerF    su   € ô �#�wÔØˆ
ä�gœuÔ%Ü×#Ò#â˜Ÿ™Ñ$A¸Ô$AÕAÄ4ÈÅ9ðNóð ô
 ×#Ò#âš¤$ s¥)ð-óð r9   c           	     óJ  ‡ ‡— t        ‰ d«      rt        ‰ j                  «       «      S t        ‰ dt        ‰ dd«      «      Š‰€t	        d‰ z  «      ‚t        ‰ d«      rˆ ˆfd„} |«       S t        ‰ d«      r"t        ˆfd	„‰ j                  «       D «       «      S t	        d‰ z  «      ‚)
z?Return a (key, value) iterator for almost any dict-like object.r`  Ú__getitem__rP   NzObject '%r' is not dict-likeÚiterkeysc               3  óX   •K  — ‰j                  «       D ]  } ‰€J ‚|  ‰| «      f–— Œ y ­wrK   )rI  )r‰  ÚdictlikeÚgetters    €€r7   Úiteratorz$dictlike_iteritems.<locals>.iterator1  s:   øè ø€ Ø×(Ñ(Ó*ò '�ØÐ)Ð)Ð)Ø™6 #›;Ð&Ó&ñ'ùs   ƒ'*rˆ  c              3  ó2   •K  — | ]  }| ‰|«      f–— Œ y ­wrK   ru   )r‡   r‰  rL  s     €r7   r‰   z%dictlike_iteritems.<locals>.<genexpr>8  s   øè ø€ ÒB¨3�S™& ›+Ô&ÑBùs   ƒ)rž   r  r`  r/   rD   Úiterrˆ  )rK  rM  rL  s   ` @r7   r¬  r¬  %  s™   ù€ ô ˆx˜Ô!Ü�H—N‘NÓ$Ó%Ð%ä�X˜}¬g°hÀÀtÓ.LÓM€FØ€~ÜÐ6¸ÑAÓBÐBäˆx˜Ô$õ	'ñ
 ‹zÐÜ	�˜6Ô	"ÜÓB°(·-±-³/ÔBÓBÐBäÐ6¸ÑAÓBÐBr9   c                  ó:   ‡ — e Zd ZU dZded<   dˆ fd„Zddd„Zˆ xZS )	ÚclasspropertyaA  A 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]r¹  c                óN   •— t        ‰| �  |g|¢­i |¤Ž |j                  | _        y rK   )Úsuperrë   rs   )rb   r¹  rX  r{  r’   s       €r7   rë   zclassproperty.__init__J  s%   ø€ Ü‰Ñ˜Ð* Ò* rÒ*Ø—|‘|ˆ�r9   c                ó$   — | j                  |«      S rK   rÚ  rÀ  s      r7   rÁ  zclassproperty.__get__N  s   € Ø�y‰y˜‹~Ðr9   )r¹  rR  rX  r   r{  r   rK   )r3   r   r|   zOptional[type]rn   r   )rp   rq   rr   rs   r:   rë   rÁ  Ú__classcell__©r’   s   @r7   rQ  rQ  =  s   ø… ñð Óõ$÷ð r9   rQ  c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)Úhybridpropertyc                ó    — || _         || _        y rK   )r  Úclslevel©rb   r  s     r7   rë   zhybridproperty.__init__S  s   € ØˆŒ	Øˆ�r9   c                óN   — |€| j                  |«      }|S | j                  |«      S rK   ©r[  r  ©rb   rÉ  r.   Úclsvals       r7   rÁ  zhybridproperty.__get__W  ó*   € ØÐØ—]‘] 5Ó)ˆFØˆMà—9‘9˜XÓ&Ð&r9   c                ó   — || _         | S rK   ©r[  r\  s     r7   Ú
classlevelzhybridproperty.classlevel^  ó   € ØˆŒØˆr9   N©r  rø  ©rÉ  r   r.   r   rn   r!   )r  r�   rn   zhybridproperty[_T])rp   rq   rr   rë   rÁ  rd  ru   r9   r7   rY  rY  R  s   „ óó'ôr9   rY  c                  ó4   — e Zd Zdd„Zdd„Zd	d„Zd
d„Zd
d„Zy)Úrw_hybridpropertyc                ó.   — || _         || _        d | _        y rK   )r  r[  Úsetfnr\  s     r7   rë   zrw_hybridproperty.__init__d  s   € ØˆŒ	ØˆŒØ37ˆ�
r9   c                óN   — |€| j                  |«      }|S | j                  |«      S rK   r^  r_  s       r7   rÁ  zrw_hybridproperty.__get__i  ra  r9   c                óD   — | j                   €J ‚| j                  ||«       y rK   ©rk  rÈ  s      r7   rÊ  zrw_hybridproperty.__set__p  s    € Ø�z‰zÐ%Ð%Ð%Ø�
‰
�8˜UÕ#r9   c                ó   — || _         | S rK   rn  r\  s     r7   Úsetterzrw_hybridproperty.settert  s   € ØˆŒ
Øˆr9   c                ó   — || _         | S rK   rc  r\  s     r7   rd  zrw_hybridproperty.classlevelx  re  r9   Nrf  rg  rÔ  )r  r�   rn   zrw_hybridproperty[_T])rp   rq   rr   rë   rÁ  rÊ  rp  rd  ru   r9   r7   ri  ri  c  s   „ ó8ó
'ó$óôr9   ri  c                  ó(   — e Zd ZdZdd„Zdd„Zdd„Zy)	Úhybridmethodz/Decorate a function as cls- or instance- level.c                ó.   — |x| _         | _        || _        y rK   )r  r"  r[  r\  s     r7   rë   zhybridmethod.__init__€  s   € Ø$(Ð(ˆŒ	�D”MØˆ�r9   c                óŠ   — |€&| j                   j                  ||j                  «      S | j                  j                  ||«      S rK   )r[  rÁ  r’   r  )rb   rÉ  r.   s      r7   rÁ  zhybridmethod.__get__„  s:   € ØÐØ—=‘=×(Ñ(¨°·±Ó@Ð@à—9‘9×$Ñ$ X¨uÓ5Ð5r9   c                ó   — || _         | S rK   rc  r\  s     r7   rd  zhybridmethod.classlevelŠ  re  r9   Nrf  )rÉ  r   r.   r   rn   rø  )r  r�   rn   zhybridmethod[_T])rp   rq   rr   rs   rë   rÁ  rd  ru   r9   r7   rs  rs  }  s   „ Ù9óó6ôr9   rs  c                  óz   — e Zd ZU dZded<   i Zded<    ej                  «       Z	 	 d	 	 	 	 	 	 	 dd„Z	d„ Z
d	„ Zd
„ Zy)ÚsymbolaI  A constant symbol.

    >>> symbol("foo") is symbol("foo")
    True
    >>> symbol("foo")
    <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.

    rV   rŽ   zDict[str, symbol]ÚsymbolsNc                óf  — | j                   5  | j                  j                  |«      }|€Yt        |t        «      sJ ‚|€t        |«      }t        j                  t        |«      }||_	        |r||_
        || j                  |<   n|r||k7  rt        d|›d|› �«      ‚|cd d d «       S # 1 sw Y   y xY w)Nz#Can't replace canonical symbol for z with new int value )Ú_lockry  rP   r0   rV   Úhashr"  Ú__new__rx  rŽ   rs   rD   )r|   rŽ   r¾  Ú	canonicalr³   s        r7   r}  zsymbol.__new__£  sº   € ð �Y‰Yñ 	Ø—+‘+—/‘/ $Ó'ˆCØˆ{Ü! $¬Ô,Ð,Ð,ØÐ$Ü $ T£
�IÜ—k‘k¤&¨)Ó4�Ø�”ÙØ"%�C”Kð %(�—‘˜DÒ!á ¨cÒ!1Ü#Ø=¸d¸Xð F.Ø.7¨[ð:óð ð ÷-	÷ 	ò 	ús   �BB'Â'B0c                ó>   — t         | j                  dt        | «      ffS )NrX   )rx  rŽ   r"  ra   s    r7   Ú
__reduce__zsymbol.__reduce__Á  s   € Ü˜Ÿ	™	 3¬¨D«	Ð2Ð2Ð2r9   c                ó   — t        | «      S rK   )rÎ   ra   s    r7   Ú__str__zsymbol.__str__Ä  s   € Ü�D‹zÐr9   c                ó"   — d| j                   ›d�S )Nzsymbol(r[  )rŽ   ra   s    r7   Ú__repr__zsymbol.__repr__Ç  s   € Ø˜Ÿ™˜ QÐ'Ð'r9   )NN)rŽ   rV   r¾  rº  r~  úOptional[int]rn   rx  )rp   rq   rr   rs   r:   ry  r9  r:  r{  r}  r€  r‚  r„  ru   r9   r7   rx  rx  �  si   … ñð ƒIà!#€GÐÓ#ØˆI�N‰NÓ€Eð
 "Ø#'ð	àðð ðð !ð	ð
 
óò<3òó(r9   rx  c                  ó0   — e Zd Z	 	 	 	 	 	 	 	 	 	 dd„Zdd„Zy)Ú_IntFlagMetac                ó–  — g x| _         }|j                  «       D ]u  \  }}t        j                  d|«      rŒt	        |t
        «      rt        ||¬«      }n|j                  d«      st        d«      ‚ŒXt        | ||«       |j                  |«       Œw t        j                  |D �ci c]  }|j                  |“Œ c}«      | _        y c c}w )Nz^__.*__$)r~  r~  z#Expected integer values for IntFlag)Ú_itemsr`  r‹   Úmatchr0   r"  rx  r�  rD   r’  rŸ   r   ÚimmutabledictrŽ   Ú__members__)	r|   Ú	classnamer°   Údict_r{  r`  r,  Úvr³   s	            r7   rë   z_IntFlagMeta.__init__Ì  s°   € ð  ÐˆŒ
�UØ—K‘K“Mò 
	‰DˆAˆqÜ�x‰x˜ QÔ'ØÜ˜!œSÔ!Ü˜Q¨!Ô,‘Ø—\‘\ #Ô&ÜÐ EÓFÐFàÜ�C˜˜CÔ Ø�L‰L˜Õð
	ô '×4Ñ4Ø&+Ö,˜sˆS�X‰X�s‰]Ò,ó
ˆ�ùÚ,s   Â%Cc                ó   — t        d«      ‚)Nz“iter not implemented to ensure compatibility with Python 3.11 IntFlag.  Please use __members__.  See https://github.com/python/cpython/issues/99304rÄ  ra   s    r7   Ú__iter__z_IntFlagMeta.__iter__å  s   € Ü!ð=ó
ð 	
r9   N)
r�  rV   r°   zTuple[Type[Any], ...]rŽ  úDict[str, Any]r{  r   rn   ro   )rn   zIterator[symbol])rp   rq   rr   rë   r‘  ru   r9   r7   r‡  r‡  Ë  s<   „ ð
àð
ð %ð
ð ð	
ð
 ð
ð 
ó
ô2
r9   r‡  c                  ó   — e Zd ZdZy)Ú_FastIntFlagzÆAn 'IntFlag' copycat that isn't slow when performing bitwise
    operations.

    the ``FastIntFlag`` class will return ``enum.IntFlag`` under TYPE_CHECKING
    and ``_FastIntFlag`` otherwise.

    Nr¥  ru   r9   r7   r”  r”  í  s   „ òr9   r”  )Ú	metaclass)ÚIntFlagÚ_Ec                ó¸   — |j                  «       D ]*  \  }}| |u r|c S |r| |j                  k(  r|c S | |v sŒ(|c S  | €yt        j                  d|› d| ›�«      ‚)aO  Given 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.

    NzInvalid value for 'z': )r`  rŽ   r    rD  )rX  ÚchoicesrŽ   Úresolve_symbol_namesÚ
enum_valueÚchoices         r7   Úparse_user_argument_for_enumr�    sv   € ð( &Ÿm™m›oò Ñˆ
�FØ�*ÑØÒÙ! c¨Z¯_©_Ò&<ØÒØ�FŠ]ØÒðð €{Øä
×
Ñ
Ð1°$°°s¸3¸'ÐBÓ
CÐCr9   c                ó,   — t         | _         t         dz  a y)zÞAssign 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).

    r   N)Ú_creation_order)rÉ  s    r7   Úset_creation_orderr   '  s   € ô  /€HÔÜ�qÑ�Or9   c                óx   — 	  | |i |¤ŽS # t         $ r& t        dt        j                  «       dd z  «       Y yw xY w)zXexecutes the given function, catches all exceptions and converts to
    a warning.

    z%s('%s') ignoredr   r   N)rB   Úwarnr_   r`   )r  r&  rP  s      r7   Úwarn_exceptionr£  4  sA   € ð
7Ù�TÐ$˜VÑ$Ð$øÜò 7ÜÐ¤#§,¡,£.°°1Ð"5Ñ5Ö6ð7ús   ‚
 Š,9¸9c                óV   — 	 t        | «      |kD  rd| d| z  S | S # t        $ r | cY S w xY w)Nz%s...r   )rÉ   rD   )rg   Úlen_s     r7   Úellipses_stringr¦  ?  s=   € ðÜˆu‹:˜ÒØ˜U 1 T˜]Ñ*Ð*àˆLøÜò ØŠðús   ‚ ˜ š(§(c                  óP   ‡ — e Zd ZU dZded<   	 	 	 	 	 	 	 	 dˆ fd„Zdd„Zd	d„Zˆ xZS )
Ú_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                ó€   •— ||z  d|z  z   }t         ‰| �  | |«      }t        d|t        |«      |z  fz  «      |_        |S )Nz6 (this warning may be suppressed after %d occurrences)z%s_%d)rT  r}  r|  r©  )r|   rg   Únumr&  Úinterpolatedrb   r’   s         €r7   r}  z_hash_limit_string.__new__V  sR   ø€ ð  ™ØDÀsÑJñ
ˆô ‰w‰˜s LÓ1ˆÜ˜' U¬D°Ó,>ÀÑ,DÐ$EÑEÓFˆŒ
Øˆr9   c                ó   — | j                   S rK   )r©  ra   s    r7   Ú__hash__z_hash_limit_string.__hash__`  s   € Ø�z‰zÐr9   c                ó0   — t        | «      t        |«      k(  S rK   )r|  )rb   Úothers     r7   Ú__eq__z_hash_limit_string.__eq__c  s   € Ü�D‹zœT %›[Ñ(Ð(r9   )rg   rV   r«  r"  r&  úSequence[Any]rn   r¨  )rn   r"  )r°  r   rn   r  )	rp   rq   rr   rs   r:   r}  r®  r±  rV  rW  s   @r7   r¨  r¨  I  s>   ø… ñð ƒJðØðØ!ðØ)6ðà	õó÷)r9   r¨  c                ó~   — |r!t        t        j                  | |¬«      «       yt        | t        j                  «       y)zdIssue a warning.

    If msg is a string, :class:`.exc.SAWarning` is used as
    the category.

    )rÜ   N)Ú_warnings_warnr    Ú	SAWarning)ÚmsgrÜ   s     r7   r¢  r¢  g  s(   € ñ Ü”s—}‘} S¨tÔ4Õ5ä�sœCŸM™MÕ*r9   c                óV   — |rt        | d|«      } t        | t        j                  «       y)z\Issue a warning with a parameterized string, limiting the number
    of registrations.

    é
   N)r¨  r´  r    rµ  )r¶  r&  s     r7   Úwarn_limitedr¹  t  s#   € ñ
 Ü   b¨$Ó/ˆÜ�3œŸ™Õ&r9   z)Dict[CodeType, Tuple[str, Type[Warning]]]Ú_warning_tagsc                ó   ‡ ‡— ˆˆ fd„}|S )Nc                ó2   •— ‰‰ft         | j                  <   | S rK   )rº  r  )r¶   ÚcategoryÚmessages    €€r7   Úgoz#tag_method_for_warnings.<locals>.go„  s   ø€ Ø&-¨xÐ%8Œ�b—k‘kÑ"Øˆ	r9   ru   )r¾  r½  r¿  s   `` r7   Útag_method_for_warningsrÀ  �  s   ù€ õð €Ir9   z&^(?:sqlalchemy\.(?!testing)|alembic\.)c                óð  — 	 t        j                  |«      }dx}}|��|s6t        j                  t        |j
                  j                  dd«      «      sd}|j                  t        v r&d}t        |j                     \  }}|xs |}| › d|› d�} |j                  }|s|dz  }n|r|rn|�ŒŒ	 |�t        j                  | ||dz   ¬	«       y t        j                  | |dz   ¬	«       y # t        $ r d}Y ŒF d}Y ŒKxY w)
NFrp   rÄ   Tz (r[  r   r   )Ú
stacklevel)r_   Ú	_getframer‹   rŠ  Ú_not_sa_patternÚ	f_globalsrP   Úf_coderº  Úf_backr2   Úwarningsr¢  )r¾  r½  rÂ  ÚframeÚstacklevel_foundÚwarning_tag_foundÚ_suffixÚ	_categorys           r7   r´  r´  Ž  s  € ð%Ü—‘˜jÓ)ˆð 05Ð4ÐÐ,ØÐñ $¬B¯H©HÜ §¡×!4Ñ!4°ZÀÓ!Dô-ð
 $(Ð ð
 �|‰|œ}Ñ,Ø$(Ð!Ü'4°U·\±\Ñ'BÑ$�˜)Ø#Ò0 y�Ø$˜I R¨ y°Ð2�à—L‘LˆEá#Ø˜a‘‘
Ù!Ñ&7Øð3 Òð6 ÐÜ�‰�g˜x°JÀ±NÖCä�‰�g¨*°q©.Ö9øôQ ò ð Š
ðð Š
ús   ‚C# Ã#C5Ã0C5c                ó"   ‡ ‡‡— ‰ gŠdˆ ˆˆfd„}|S )zNDecorate the given function to be a no-op after it is called exactly
    once.c                 ót   •— ‰}‰r‰j                  «       }	  || i |¤ŽS y #  ‰r‰j                  d|«       ‚ xY w)Nr   )rx   Úinsert)rX  r{  Ú	strong_fnÚonce_fnr¶   ÚonceÚretry_on_exceptions       €€€r7   r¿  zonly_once.<locals>.goÉ  sM   ø€ ð ˆ	ÙØ—h‘h“jˆGðÙ Ð* rÑ*Ð*ð øðÙ%Ø—K‘K  7Ô+Øús   —   7)rX  r   r{  r   rn   zOptional[_T]ru   )r¶   rÔ  r¿  rÓ  s   `` @r7   Ú	only_oncerÕ  Á  s   ú€ ð ˆ4€D÷ð €Ir9   z%sqlalchemy/([a-z_]+/){0,2}[a-z_]+\.pyzunit(?:2|test2?/)c                ó  — d}t        | «      dz
  }||k  r3|j                  | |   «      r|dz  }||k  r|j                  | |   «      rŒ||k  r3|j                  | |   «      r|dz  }||k  r|j                  | |   «      rŒ| ||dz    S )at  Chop 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``
    r   r   )rÉ   Úsearch)ÚtbÚexclude_prefixÚexclude_suffixr›   Úends        r7   Úchop_tracebackrÜ  ß  s�   € ð" €EÜ
ˆb‹'�A‰+€CØ
�3Š,˜>×0Ñ0°°E±Ô;Ø�‰
ˆð �3Š,˜>×0Ñ0°°E±Õ;à
�3Š,˜>×0Ñ0°°C±Ô9Øˆq‰ˆð �3Š,˜>×0Ñ0°°C±Õ9àˆe�c˜A‘gÐÐr9   c                ó^   — d| z  }t        «       j                  «       }t        ||«       |d   S )Nz&def set(obj, value):    obj.%s = valuerw   )r‘  Úcopyrâ   )ÚattrnamerÜ   rÝ   s      r7   Ú
attrsetterrà  ü  s,   € Ø3°hÑ>€DÜ
‹(�-‰-‹/€CÜˆˆs„OØˆu‰:Ðr9   z^__.+__$c                  ó(   ‡ — e Zd ZdZdZdˆ fd„Zˆ xZS )Ú
TypingOnlyz“A mixin class that marks a class as 'typing only', meaning it has
    absolutely no methods, attributes, or runtime functionality whatsoever.

    ru   c                óÖ   •— t         | j                  v rC| j                  D �ch c]  }t        j	                  |«      rŒ|’Œ }}|rt        d| › d|› d�«      ‚t        ‰| �  «        y c c}w )NzClass z< directly inherits TypingOnly but has additional attributes r÷   )râ  r  rO   Ú_dundersrŠ  ÚAssertionErrorrT  Ú__init_subclass__)r|   rŽ   Ú	remainingr’   s      €r7   ræ  zTypingOnly.__init_subclass__  st   ø€ Ü˜Ÿ™Ñ&à!$§¡öØ´X·^±^ÀDÕ5I’ðˆIð ñ Ü$Ø˜S˜Eð "-Ø-6¨K°qð:óð ô 	‰Ñ!Õ#ùòs
   ¢A&½A&rm   )rp   rq   rr   rs   rt   ræ  rV  rW  s   @r7   râ  râ    s   ø„ ñð
 €I÷
$ñ 
$r9   râ  c                  óD   ‡ — e Zd ZU dZded<   	 dˆ fd„Zedd„«       Zˆ xZS )ÚEnsureKWArga6  Apply 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 ]`  }t        j                  ||«      }|sŒ||   }t	        j
                  |«      }|j                  rŒC| j                  |«      }t        | ||«       Œb t        ‰| �)  «        y rK   )rê  rO   r‹   rŠ  r   rÈ   r(  Ú
_wrap_w_kwr’  rT  ræ  )	r|   Úfn_regÚclsdictr‰  rY   r¶   rÕ   Úwrappedr’   s	           €r7   ræ  zEnsureKWArg.__init_subclass__.  sƒ   ø€ Ø×!Ñ!ˆØ—,‘,ˆÙØò 3�Ü—H‘H˜V SÓ)�ÚØ  ™�BÜ!×8Ñ8¸Ó<�DØŸ:›:Ø"%§.¡.°Ó"4˜Ü  S¨'Õ2ð3ô 	‰Ñ!Õ#r9   c                ó(   ‡— dˆfd„}t        |‰«      S )Nc                 ó   •—  ‰| Ž S rK   ru   )rX  r{  r¶   s     €r7   Úwrapz$EnsureKWArg._wrap_w_kw.<locals>.wrap>  s   ø€ Ù�s�8ˆOr9   )rX  r   r{  r   rn   r   r   )r|   r¶   rò  s    ` r7   rì  zEnsureKWArg._wrap_w_kw<  s   ø€ õ	ô ˜d BÓ'Ð'r9   rm   )r¶   r�   rn   r�   )	rp   rq   rr   rs   r:   ræ  rÖ  rì  rV  rW  s   @r7   ré  ré    s.   ø… ñð Óðõ$ð ò(ó ô(r9   ré  c                óv  — t        |d«      rt        | |«      S | }|j                  j                  |_        t        |d«      r|j                  |_        t        |j
                  d«      r3|j
                  j                  r|j
                  j                  |_        |S |j                  r|j                  |_        |S )z‘Augment functools.update_wrapper() to work with objects with
    a ``__call__()`` method.

    :param fn:
      object with __call__ method

    rp   rq   rs   )rž   r   r’   rp   rq   r#  rs   )Úwrapperr¶   Ú_fs      r7   Úwrap_callablerö  D  s‘   € ô ˆr�:ÔÜ˜g rÓ*Ð*àˆØ—l‘l×+Ñ+ˆŒÜ�2�|Ô$ØŸM™MˆBŒMä�2—;‘; 	Ô*¨r¯{©{×/BÒ/BØŸ™×,Ñ,ˆBŒJð ˆ	ð �ZŠZØŸ™ˆBŒJàˆ	r9   c                óœ  — d| vr| j                  d«      S d}g g}d}t        | «      }||k  r}| |   }|dk(  r8|dk(  r-||dz
  k  r%| |dz      dk(  r|d   j                  d«       |dz  }n6|dz  }n0|dk(  r|dk(  r|j                  g «       n|d   j                  |«       |dz  }||k  rŒ}|D �cg c]  }dj                  |«      ‘Œ c}S c c}w )aÄ  Parse 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']

    ú"r÷   r   r   r;  rÄ   )rù   rÉ   rŸ   rŠ   )rg   rv  rß  ÚidxÚlvÚcharrû   s          r7   Úquoted_token_parserrü  \  sí   € ð$ �%ÑØ�{‰{˜3ÓÐð €EØ!˜d€FØ
€CÜ	ˆU‹€BØ
�Š(Ø�S‰zˆØ�3Š;Ø˜Šz˜c B¨¡Fšl¨u°S¸1±W©~ÀÒ/DØ�r‘
×!Ñ! #Ô&Ø�q‘‘à˜‘
‘Ø�SŠ[˜U ašZØ�M‰M˜"Õà�2‰J×Ñ˜dÔ#Øˆq‰ˆð �‹(ð )/Ö/˜uˆB�G‰G�E�NÒ/Ð/ùÒ/s   Â.C	c                ó@   ‡ ‡— t        j                  ‰ «      Š ˆ ˆfd„}|S )Nc                óš   •— | j                   d uxr | j                   xs d}|rt        |‰D �ci c]  }|‰“Œ c}«      }|| _         | S c c}w )NrÄ   )rs   Úinject_param_text)r¶   r¾  ÚparamÚparamsr  s      €€r7   rß   z$add_parameter_text.<locals>.decorate‹  sO   ø€ Ø�j‰j Ð$Ò3¨¯©Ò9°rˆÙÜ# CÀ6Ö)J¸%¨%°©+Ò)JÓKˆCØˆŒ
Øˆ	ùò *Ks   ®
A
)r   r\  )r  r  rß   s   `` r7   Úadd_parameter_textr  ˆ  s   ù€ Ü×!Ñ! &Ó)€Fõð €Or9   c                óÒ   — | j                  dd«      }t        |«      dk(  r| S |\  }}|j                  d«      s|dz   t        j                  |«      z   S t        j                  | «      S )Nú
r   r„   )rù   rÉ   r�  ÚtextwrapÚdedent)r  Ú
split_textÚ	firstlinerç  s       r7   Ú_dedent_docstringr	  •  sc   € Ø—‘˜D !Ó$€JÜ
ˆ:ƒ˜!ÒØˆà)Ñˆ	�9Ø×Ñ Ô$Ø˜4Ñ¤(§/¡/°)Ó"<Ñ<Ð<ä�‰˜tÓ$Ð$r9   c                óö  — t        | xs d«      }|j                  d«      }t        |«      dk(  r|j                  d«       t	        j
                  |«      j                  d«      }|d   r|j                  dd«       t        |«      D ��cg c]  \  }}|j                  «       rŒ|‘Œ }}}|j                  dd«       |t        |t        |«      dz
  «         }	|d|	 |z   ||	d  z   }dj                  |«      S c c}}w )NrÄ   r  r   r   )r	  rù   rÉ   rŸ   r  r  rÐ  r^  r  ÚminrŠ   )
Úgiven_doctextÚ
injecttextÚposÚdoctextÚlinesÚinjectlinesr«  ÚlineÚblanksÚ
inject_poss
             r7   Úinject_docstring_textr  ¡  så   € ô % ]Ò%8°bÓ9€GØ�M‰M˜$Ó€EÜ
ˆ5ƒz�Q‚Ø�‰�RÔÜ—/‘/ *Ó-×3Ñ3°DÓ9€KØ�1‚~Ø×Ñ˜1˜bÔ!ä#,¨UÓ#3×H‘i�c˜4¸4¿:¹:½<ŠcÐH€FÑHØ
‡M�M�!�QÔàœ˜C¤ V£¨q¡Ó1Ñ2€Jà�!�JÐ +Ñ-°°j°kÐ0BÑB€EØ�9‰9�UÓÐùó Is   Â	C5Â"C5z(\s+):param (.+?):c                óê  — t        j                  | j                  «       «      }g }d }|�r9|j                  «       }t        j                  |«      }|€‰|rû|j                  d«      j                  d«      }||v r×dt        |j                  d«      «      z  dz   }|r8t        j
                  d|d   «      }	|	rdt        |	j                  d«      «      z  }|||   z   }nt|r|j                  d|dg«       d }n[|j                  «       s|j                  ||dg«       d }n4|j                  d«      r#|j                  ||j                  «       g«       �Œ'|j                  |«       |r�Œ9dj                  |«      S )	Nr   Ú*r„   r   z(\s+)\Sr   r  z::)ÚcollectionsÚdequeÚ
splitlinesÚpopleftÚ
_param_regrŠ  rè   ÚlstriprÉ   r‹   rz   Úrstripr�  rŸ   rŠ   )
r  Úinject_paramsÚdoclinesr  Ú	to_injectr  rY   r   ÚindentÚm2s
             r7   rÿ  rÿ  ¸  sX  € Ü× Ñ  ×!3Ñ!3Ó!5Ó6€HØ€Eð €IÚ
Ø×ÑÓ!ˆä×Ñ˜TÓ"ˆàÐÙØŸ™ ›
×)Ñ)¨#Ó.�Ø˜MÑ)à ¤3 q§w¡w¨q£z£?Ñ2°SÑ8�Fñ  ÜŸX™X j°(¸1±+Ó>˜ÙØ%(¬3¨r¯x©x¸«{Ó+;Ñ%;˜Fà &¨°uÑ)=Ñ =‘IÙØ�L‰L˜$ 	¨4Ð0Ô1Ø‰IØ—‘”Ø�L‰L˜$ 	¨4Ð0Ô1Ø‰IØ�]‰]˜4Ô ð �L‰L˜$ × 0Ñ 0Ó 2Ð3Ô4ÙØ�‰�TÔó? ðB �9‰9�UÓÐr9   c                ó  — t        | «      dk(  ryt        | «      dk  }|r| dd n
| dd | dd z   } | D �cg c]  }t        |«      dkD  rd|dd z  n|‘Œ }}|rdj                  |«      S dj                  |dd «      ›d	|d   ›�S c c}w )
zŒTrims a list of strings from the middle and return a string of up to
    four elements. Strings greater than 11 characters will be truncatedr   Nr.  r¾   r;  é   z%s..rZ  z, ..., )rÉ   rŠ   )rØ   ÚflagrŽ   Úress       r7   Úrepr_tuple_namesr(  ã  s¡   € ô ˆ5ƒz�Q‚ØÜˆu‹:˜‰?€DÙˆE�!�A‰J E¨!¨A J°°r°s°Ñ$;€EØFKÖ
L¸d¤ T£¨R¢ˆ6�D˜˜"�IÒ°TÑ9Ð
L€CÐ
LÙØ�y‰y˜‹~Ðà $§	¡	¨#¨a°¨(Õ 3°S¸²WÐ=Ð=ùò	 Ms   ´Bc                ó,   — t         ry| rt        d«      ‚y)NTzDcython extensions were expected to be installed, but are not presentF)r   ÚImportError)Úraise_s    r7   Úhas_compiled_extr,  ñ  s"   € ÝØÙ	Üð"ó
ð 	
ð
 r9   c                  ó.   — e Zd Z ej                  «       Zy)Ú_MissingN)rp   rq   rr   ÚenumÚautoÚMissingru   r9   r7   r.  r.  ý  s   „ Øˆd�i‰i‹k�Gr9   r.  )r3   r   r4   r+   rn   rN   )r3   r   rn   rN   )rX   r   rn   rV   )r|   úType[_T]rn   zIterator[Type[_T]])r�   r   rn   rV   rK   )r|   ú	Type[Any]r�   rº  rn   rV   )r“   zUnion[Type[Any], object]r”   r�   rn   r  )r¡   Úslicern   úTuple[Any, ...])r¯   úSequence[str]r°   rV   rn   zIterator[str])r¶   zCallable[[int], Any]rˆ   r"  rn   zIterator[Any])r¿   r�   rn   zCallable[[_Fn], _Fn])rÜ   zUnion[str, types.CodeType]rÝ   r’  rÚ   rV   rn   r�   )r|   r<   r  úOptional[Set[str]]r  zLiteral[True]rn   zSet[str])r|   r<   r  r7  r  r  rn   r7  )r  r�   rn   ú	List[str])FF)r¶   r�   r   r  r!  r  rn   zcompat.FullArgSpec)T)r¶   z-Union[Callable[..., Any], compat.FullArgSpec]rÁ   r  rn   zDict[str, Optional[str]])ru   ru   ru   ru   )rG  r3  rH  rV   rI  rV   rJ  r6  rK  r6  rL  r6  rM  r6  rn   zCallable[[_T], _T])ru   Nru   )
r3   r   ra  zSequence[Tuple[str, Any]]rb  z%Optional[Union[object, List[object]]]rc  r6  rn   rV   )NNz
self.proxyN)NNNr  )r3   r   rn   r  )r  rV   rn   z!Callable[[str], Union[str, bool]])rg   r   rn   r…  )TN)r{  r’  r‰  rV   rf   r3  r%  r  r&  zOptional[Dict[str, Any]]rn   ro   )r3   r   r|   r3  rn   r5  )
r3   r!   r|   r2  r&  r   r{  r   rn   r!   )rn   zCallable[[], int])r>  r   rj  úOptional[Type[Any]]rn   r9  )rX  r   rE  z'Union[Tuple[Type[Any], ...], Type[Any]]rŽ   rV   rn   r   )F)
rX  r   r™  zDict[_E, List[Any]]rŽ   rV   rš  r  rn   zOptional[_E]rÕ  )r  r�   r&  r   rP  r   rn   r   )é   )r¶  rV   rÜ   rº  rn   ro   )r¶  rV   r&  r²  rn   ro   )r¾  rV   r½  zType[Warning]rn   úCallable[[_F], _F])Nr   )r¾  zUnion[str, Warning]r½  zOptional[Type[Warning]]rÂ  r"  rn   ro   )r¶   rø  rÔ  r  rn   zCallable[..., Optional[_T]])rØ  r8  rÙ  úre.Pattern[str]rÚ  r<  rn   r8  )r  r   r  rV   rn   r;  )r  rV   rn   rV   )r  rº  r  rV   r  r"  rn   rV   )r  rV   r  zDict[str, str]rn   rV   )rØ   r8  rn   rº  )§rs   Ú
__future__r   r  r/  Ú	functoolsr   rL   rª   r¨  r‹   r_   r  r9  rÏ   r   Útypingr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rÈ  rÄ   r   r   Ú_has_cyr   r   r    r!   r"   r$   r&   r'   r(   r)   Úpy314Úannotationlibr*   r+   r8   r<   rO   rÁ  r=   r@   rE   rI   Úpy310rZ   r\   r   r‚   r�   r˜   r£   r´   r¸   r¹   rà   rÑ   rã   rä   ræ   r  r  r  r,  rÌ   rD  rN  rQ  rU  rn  rp  r…  rŠ  r�  r¡  r´  rµ  r·  rØ  rÜ  r  Únon_memoized_propertyÚpropertyÚro_memoized_propertyÚro_non_memoized_propertyrê  rì  Ú!HasMemoized_ro_memoized_attributerý  r  r  r   r#  r'  r.  r2  r6  r@  rF  r¬  rQ  rY  ri  rs  r"  rx  r‡  r”  r–  ÚFastIntFlagÚEnumr—  r�  rŸ  r   r£  r¦  rV   r¨  r¢  r¹  rº  r:   rÀ  ÚcompilerÄ  r´  rÕ  Ú_SQLA_REÚ_UNITTEST_RErÜ  ÚNoneTyperà  rä  râ  ré  rö  rü  r  r	  r  r  rÿ  r(  r,  r.  r1  Ú	MissingOrru   r9   r7   ú<module>rP     s	  ðòõ #ã Û Ý $Û Û Û Û 	Û 
Û Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý Û å Ý Ý $Ý Ý áˆTƒ]€Ù� 4Ô(€ÙˆT˜ # s (Ñ+Ô,€ÙˆeÐ3Ô4€ÙˆeÐ@ÔA€ÙˆeÐ0Ô1€ÙˆeÐ.Ô/€ð 
‡<‚<õ 5Ý$òð !ŸM™MÐ*;Ñ<×DÑDÐòð$ØðØ#ðà	óôBHð ‡\‚\ô,ó
2ó"$÷82ñ 82óvó6ð /3ðOØ	ðOØ+ðOàóOð,Ø-ð,à&ð,ð 
ó,ó$óMó ñ ˆeÐ/Ô0€ó
Y,ðxØ
$ðØ+9ðØDGðàóñ ˆeƒn€Ùˆeƒn€÷(ñ (òV
ð( 
ð  $Ø!ñ	Ø	ðð ðð ð	ð
 òó 
ðð 
à-1ÀEñØ	ðØ*ðØ=Aðàòó 
ðð .2ÀEñ2Ø	ð2Ø*ð2Ø=Að2àó2ój2ð EJð5;Øð5;Ø%)ð5;Ø=Að5;àó5;ðr HLðr
Ø5ðr
Ø@Dðr
àór
ójðJ #%ØØ "Ø/1ðØðàðð ðð  ð	ð
 ðð ðð  -ðð óò26ò(	ð 02Ø8<Ø "ð	KBØ	ðKBà,ðKBð 6ðKBð ð	KBð
 	óKB÷\;ñ ;ò<#òLð& 
Ø	Ø	Øó@/òFóSñl ˆvÐ9Ô:€ô($˜G E™Nô ($ôV"Ð2°5Ñ9ô "ô"%Ð.¨uÑ5ô %ñ< ð .ÐØ1Ðð
 $ÐØ'Ñð 0BÐAÐÐ,Ø7MÐMÐÐ4ó'÷.J+ñ J+ñZ Ø(0Ñ%à(3×(FÑ(FÐ%÷-/ñ -/ób	óóð Ø%)ð'Øð'à	ð'ð ð'ð ð	'ð
 #ð'ð 
ó'ó4óóð 37ð Øð Ø/ð àó ðFØ	ðØ>ðØFIðàóò$Cô0�Hô ô*�W˜R‘[ô ô"˜ ™ô ô4�7˜2‘;ô ô$9(ˆSô 9(ôx
�4ô 
ôD˜\õ ñ Ýà�Kà€Kñ ˆT˜ŸšÔ#€ð "'ð	DØ	ðDà ðDð ðDð ð	Dð
 óDðD €ó
ó7óô)˜ô )ô<
+ó'ð <>€Ð8Ó =ðØðØ)ðàóð �"—*’*ÐFÓG€ð
 )-Øð0:Ø ð0:à%ð0:ð ð0:ð 
ó	0:ðfØðØ/3ðà óð4 ˆ2�:Š:Ð>Ó?€Øˆr�zŠzÐ.Ó/€ð
 '3Ø&.ðØðà#ðð $ðð ó	ñ4 �‹:€òð ˆ2�:Š:�jÓ!€÷$ñ $÷*&(ñ &(òRò0)0óX
ó	%ðØ ðØ.1ðØ8;ðàóð( ˆR�ZŠZÐ-Ó.€
ó(óV>ó	ôˆt�yŠyô ð ×
Ò
€Ø�"�g˜h×.Ò.Ñ/Ð/Ñ0�	r9   