§
    eŠtj+N  ã                  ó   — U d 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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  ej!        ses%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( n$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(  ed#e¬$¦  «        Z+ ed%e¬$¦  «        Z, ed&e¬$¦  «        Z- ed'd(¬)¦  «        Z. e/¦   «         Z0d*e1d+<    e/dg¦  «        Z2d*e1d,<   dpd1„Z3dqd5„Z4 e#¦   «         Z5d6e1d7<    G d8„ d9e&e,e-f         ¦  «        Z6 ed:e¬$¦  «        Z7 ed;e¬$¦  «        Z8 G d<„ d=ee+         ¦  «        Z9 G d>„ d?e9e+         ¦  «        Z: G d@„ dAe%e9e+         ¦  «        Z;drdB„Z<e=Z>e<Z? G dC„ dDee+         ¦  «        Z@ G dE„ dFe$¦  «        ZA G dG„ dHee,e-f         ¦  «        ZB G dI„ dJee,e-f         ¦  «        ZCeDZEe=ZFe'ZG G dK„ dLee+         ¦  «        ZHdsdO„ZIdrdtdS„ZJdudY„ZKdZ„ ZLdvd\„ZM	 drdwda„ZNdxdd„ZO G de„ dfejP        e,e-f         ¦  «        ZQ G dg„ dhe e.         ¦  «        ZR G di„ dje ¦  «        ZS G dk„ dlee+         ¦  «        ZT G dm„ dneTe+         ¦  «        ZUdo„ ZVdS )yzCollection classes and helpers.é    )ÚannotationsN)ÚAny)ÚCallable)Úcast)Ú	Container)ÚDict)Ú	FrozenSet)ÚGeneric)ÚIterable)ÚIterator)ÚList)ÚMapping)ÚNoReturn)ÚOptional)Úoverload)ÚSequence)ÚSet)ÚTuple)ÚTypeVar)ÚUnion)Ú
ValuesViewé   )ÚHAS_CYEXTENSION)Úis_non_string_iterable)ÚLiteral)ÚProtocol)Úimmutabledict)ÚIdentitySet)ÚReadOnlyContainer)ÚImmutableDictBase)Ú
OrderedSet)Úunique_listÚ_T)ÚboundÚ_KTÚ_VTÚ_T_coT)Ú	covariantzFrozenSet[Any]Ú	EMPTY_SETÚNONE_SETÚaú	List[Any]ÚbÚreturnc                ó,  — t          | ¦  «                             |¦  «        }g }t          | ¦  «        t          |¦  «        }}	 |D ]6}||v r|                     |¦  «         ||}} n,|                     |¦  «         Œ7|                     |¦  «         nŒP|S )af  merge two lists, maintaining ordering as much as possible.

    this is to reconcile vars(cls) with cls.__annotations__.

    Example::

        >>> a = ["__tablename__", "id", "x", "created_at"]
        >>> b = ["id", "name", "data", "y", "created_at"]
        >>> merge_lists_w_ordering(a, b)
        ['__tablename__', 'id', 'name', 'data', 'y', 'x', 'created_at']

    This is not necessarily the ordering that things had on the class,
    in this case the class is::

        class User(Base):
            __tablename__ = "users"

            id: Mapped[int] = mapped_column(primary_key=True)
            name: Mapped[str]
            data: Mapped[Optional[str]]
            x = Column(Integer)
            y: Mapped[int]
            created_at: Mapped[datetime.datetime] = mapped_column()

    But things are *mostly* ordered.

    The algorithm could also be done by creating a partial ordering for
    all items in both lists and then using topological_sort(), but that
    is too much overhead.

    Background on how I came up with this is at:
    https://gist.github.com/zzzeek/89de958cf0803d148e74861bd682ebae

    )ÚsetÚintersectionÚiterÚdiscardÚappendÚextend)r+   r-   ÚoverlapÚresultÚcurrentÚotherÚelements          úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/util/_collections.pyÚmerge_lists_w_orderingr<   L   s­   € õF �!‰fŒf×!Ò! !Ñ$Ô$€Gà€Få˜!‘W”W�d 1™gœgˆU€Gð
Øð 		ð 		ˆGØ˜'Ð!Ð!Ø—’ Ñ(Ô(Ð(Ø!(¨%�w�Ø�à�MŠM˜'Ñ"Ô"Ð"Ð"à�MŠM˜%Ñ Ô Ð Øð
ð €Mó    ÚdúMapping[_KT, _VT]úimmutabledict[_KT, _VT]c                ó`   — | st           S t          | t          ¦  «        r| S t          | ¦  «        S ©N)Ú
EMPTY_DICTÚ
isinstancer   )r>   s    r;   Úcoerce_to_immutabledictrE   „   s5   € Øð  ÝÐÝ	�A•}Ñ	%Ô	%ð  Øˆå˜QÑÔÐr=   zimmutabledict[Any, Any]rC   c                  ó:   — e Zd ZdZdd„Zdd„Zdd	„Zdd„Zdd„ZdS )Ú
FacadeDictz*A dictionary that is not publicly mutable.Úargsr   r.   úFacadeDict[Any, Any]c                ó.   — t          j        | ¦  «        }|S rB   )r    Ú__new__)ÚclsrH   Únews      r;   rK   zFacadeDict.__new__“   s   € ÝÔ'¨Ñ,Ô,ˆØˆ
r=   r   c                ó    — t          d¦  «        ‚)Nz\an immutabledict shouldn't need to be copied.  use dict(d) if you need a mutable dictionary.)ÚNotImplementedError©Úselfs    r;   ÚcopyzFacadeDict.copy—   s   € Ý!ð0ñ
ô 
ð 	
r=   c                ó0   — t           t          | ¦  «        ffS rB   )rG   ÚdictrP   s    r;   Ú
__reduce__zFacadeDict.__reduce__�   s   € Ý�D ™JœJ˜=Ð(Ð(r=   Úkeyr%   Úvaluer&   ÚNonec                ó>   — t                                | ||¦  «         dS )z,insert an item into the dictionary directly.N)rT   Ú__setitem__©rQ   rV   rW   s      r;   Ú_insert_itemzFacadeDict._insert_item    s    € å×Ò˜˜s EÑ*Ô*Ð*Ð*Ð*r=   Ústrc                ó<   — dt                                | ¦  «        z  S )NzFacadeDict(%s))rT   Ú__repr__rP   s    r;   r_   zFacadeDict.__repr__¤   s   € Ø¥$§-¢-°Ñ"5Ô"5Ñ5Ð5r=   N)rH   r   r.   rI   )r.   r   ©r.   r   ©rV   r%   rW   r&   r.   rX   )r.   r]   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rK   rR   rU   r\   r_   © r=   r;   rG   rG   �   s~   € € € € € Ø4Ð4ðð ð ð ð
ð 
ð 
ð 
ð)ð )ð )ð )ð+ð +ð +ð +ð6ð 6ð 6ð 6ð 6ð 6r=   rG   Ú_DTÚ_Fc                  ó  ‡ — e Zd ZU dZdZded<   d6d„Zd7d	„Zd8d„Zd9ˆ fd„Z	d:d„Z
d;d„Zd<d„Zd=d„Zd;d„Zd>d„Zd?d„Zd<d„Zd@d!„ZdAd#„ZdBd%„ZedCd'„¦   «         ZedDd*„¦   «         Z	 dEdFd.„Zd9d/„ZdGd1„ZdHd3„Zd@d4„ZdId5„Zˆ xZS )JÚ
Propertiesz8Provide a __getattr__/__setattr__ interface over a dict.©Ú_dataúDict[str, _T]rl   Údatac                ó>   — t                                | d|¦  «         d S ©Nrl   ©ÚobjectÚ__setattr__)rQ   rn   s     r;   Ú__init__zProperties.__init__´   s    € Ý×Ò˜4 ¨$Ñ/Ô/Ð/Ð/Ð/r=   r.   Úintc                ó*   — t          | j        ¦  «        S rB   ©Úlenrl   rP   s    r;   Ú__len__zProperties.__len__·   ó   € Ý�4”:‰ŒÐr=   úIterator[_T]c                óh   — t          t          | j                             ¦   «         ¦  «        ¦  «        S rB   )r2   Úlistrl   ÚvaluesrP   s    r;   Ú__iter__zProperties.__iter__º   s&   € Ý•D˜œ×*Ò*Ñ,Ô,Ñ-Ô-Ñ.Ô.Ð.r=   ú	List[str]c                ó‚   •— t          t          ¦   «         ¦  «        d„ | j                             ¦   «         D ¦   «         z   S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rf   )r]   )Ú.0Úks     r;   ú
<listcomp>z&Properties.__dir__.<locals>.<listcomp>¾   s   € ÐAÐAÐA¨!�s 1™vœvÐAÐAÐAr=   )ÚdirÚsuperrl   Úkeys)rQ   Ú	__class__s    €r;   Ú__dir__zProperties.__dir__½   s3   ø€ Ý•5‘7”7‰|Œ|ÐAÐA¨t¬z¯ªÑ/@Ô/@ÐAÑAÔAÑAÐAr=   r9   úProperties[_F]úList[Union[_T, _F]]c                ó@   — t          | ¦  «        t          |¦  «        z   S rB   )r}   )rQ   r9   s     r;   Ú__add__zProperties.__add__À   s   € Ý�D‰zŒz�D ™KœKÑ'Ð'r=   rV   r]   Úobjr#   rX   c                ó   — || j         |<   d S rB   rk   ©rQ   rV   r�   s      r;   rZ   zProperties.__setitem__Ã   ó   € ØˆŒ
�3‰ˆˆr=   c                ó   — | j         |         S rB   rk   ©rQ   rV   s     r;   Ú__getitem__zProperties.__getitem__Æ   s   € ØŒz˜#ŒÐr=   c                ó   — | j         |= d S rB   rk   r”   s     r;   Ú__delitem__zProperties.__delitem__É   ó   € ØŒJ�sˆOˆOˆOr=   c                ó   — || j         |<   d S rB   rk   r‘   s      r;   rs   zProperties.__setattr__Ì   r’   r=   úDict[str, Any]c                ó   — d| j         iS rp   rk   rP   s    r;   Ú__getstate__zProperties.__getstate__Ï   s   € Ø˜œÐ$Ð$r=   Ústatec                óJ   — t                                | d|d         ¦  «         d S rp   rq   )rQ   r�   s     r;   Ú__setstate__zProperties.__setstate__Ò   s$   € Ý×Ò˜4 ¨%°¬.Ñ9Ô9Ð9Ð9Ð9r=   c                óX   — 	 | j         |         S # t          $ r t          |¦  «        ‚w xY wrB   )rl   ÚKeyErrorÚAttributeErrorr”   s     r;   Ú__getattr__zProperties.__getattr__Õ   s<   € ð	&Ø”:˜c”?Ð"øÝð 	&ð 	&ð 	&Ý  Ñ%Ô%Ð%ð	&øøøs   ‚ �)Úboolc                ó   — || j         v S rB   rk   r”   s     r;   Ú__contains__zProperties.__contains__Û   ó   € Ø�d”jÐ Ð r=   úReadOnlyProperties[_T]c                ó*   — t          | j        ¦  «        S )z8Return an immutable proxy for this :class:`.Properties`.)ÚReadOnlyPropertiesrl   rP   s    r;   Úas_readonlyzProperties.as_readonlyÞ   s   € õ " $¤*Ñ-Ô-Ð-r=   rW   c                ó:   — | j                              |¦  «         d S rB   )rl   Úupdate)rQ   rW   s     r;   r­   zProperties.updateã   s   € ØŒ
×Ò˜%Ñ Ô Ð Ð Ð r=   úOptional[_T]c                ó   — d S rB   rf   r”   s     r;   ÚgetzProperties.getæ   s   € Ø-0¨Sr=   ÚdefaultúUnion[_DT, _T]c                ó   — d S rB   rf   ©rQ   rV   r±   s      r;   r°   zProperties.geté   ó   € ØHKÈr=   NúOptional[Union[_DT, _T]]úOptional[Union[_T, _DT]]c                ó   — || v r| |         S |S rB   rf   r´   s      r;   r°   zProperties.getì   s   € ð �$ˆ;ˆ;Ø˜”9ÐàˆNr=   c                ó*   — t          | j        ¦  «        S rB   )r}   rl   rP   s    r;   rˆ   zProperties.keysô   ó   € Ý�D”JÑÔÐr=   úList[_T]c                óN   — t          | j                             ¦   «         ¦  «        S rB   )r}   rl   r~   rP   s    r;   r~   zProperties.values÷   s   € Ý�D”J×%Ò%Ñ'Ô'Ñ(Ô(Ð(r=   úList[Tuple[str, _T]]c                óN   — t          | j                             ¦   «         ¦  «        S rB   )r}   rl   ÚitemsrP   s    r;   r¿   zProperties.itemsú   s   € Ý�D”J×$Ò$Ñ&Ô&Ñ'Ô'Ð'r=   c                ó   — || j         v S rB   rk   r”   s     r;   Úhas_keyzProperties.has_keyý   r§   r=   c                ó8   — | j                              ¦   «          d S rB   )rl   ÚclearrP   s    r;   rÃ   zProperties.clear   s   € ØŒ
×ÒÑÔÐÐÐr=   )rn   rm   ©r.   ru   ©r.   r{   )r.   r€   )r9   r‹   r.   rŒ   )rV   r]   r�   r#   r.   rX   )rV   r]   r.   r#   )rV   r]   r.   rX   )r.   rš   )r�   rš   r.   rX   )rV   r]   r.   r¤   )r.   r¨   )rW   rm   r.   rX   )rV   r]   r.   r®   )rV   r]   r±   r²   r.   r²   rB   )rV   r]   r±   r¶   r.   r·   )r.   r»   )r.   r½   ©r.   rX   )rb   rc   rd   re   Ú	__slots__Ú__annotations__rt   ry   r   rŠ   rŽ   rZ   r•   r—   rs   rœ   rŸ   r£   r¦   r«   r­   r   r°   rˆ   r~   r¿   rÁ   rÃ   Ú__classcell__)r‰   s   @r;   rj   rj   ­   s%  ø€ € € € € € ØBÐBà€IàÐÐÑð0ð 0ð 0ð 0ðð ð ð ð/ð /ð /ð /ðBð Bð Bð Bð Bð Bð(ð (ð (ð (ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð%ð %ð %ð %ð:ð :ð :ð :ð&ð &ð &ð &ð!ð !ð !ð !ð.ð .ð .ð .ð
!ð !ð !ð !ð Ø0Ð0Ð0ñ „XØ0àØKÐKÐKñ „XØKð =Aðð ð ð ð ð ð  ð  ð  ð)ð )ð )ð )ð(ð (ð (ð (ð!ð !ð !ð !ðð ð ð ð ð ð ð r=   rj   c                  ó   — e Zd ZdZdZd„ ZdS )ÚOrderedPropertieszUProvide a __getattr__/__setattr__ interface with an OrderedDict
    as backing store.rf   c                óT   — t                                | t          ¦   «         ¦  «         d S rB   )rj   rt   ÚOrderedDictrP   s    r;   rt   zOrderedProperties.__init__
  s"   € Ý×Ò˜D¥+¡-¤-Ñ0Ô0Ð0Ð0Ð0r=   N)rb   rc   rd   re   rÇ   rt   rf   r=   r;   rË   rË     s4   € € € € € ðð ð €Ið1ð 1ð 1ð 1ð 1r=   rË   c                  ó   — e Zd ZdZdZdS )rª   zDProvide immutable dict/object attribute to an underlying dictionary.rf   N)rb   rc   rd   re   rÇ   rf   r=   r;   rª   rª     s   € € € € € ØNÐNà€I€I€Ir=   rª   c                ó”   ‡ — ˆ fd„t          ‰ |¬¦  «        D ¦   «         }‰                      ¦   «          ‰                      |¦  «         dS )zSort an OrderedDict in-place.c                ó$   •— g | ]}|‰|         f‘ŒS rf   rf   )rƒ   r„   r>   s     €r;   r…   z,_ordered_dictionary_sort.<locals>.<listcomp>  s!   ø€ Ð3Ð3Ð3˜1ˆa��1”ˆYÐ3Ð3Ð3r=   )rV   N)ÚsortedrÃ   r­   )r>   rV   r¿   s   `  r;   Ú_ordered_dictionary_sortrÒ     sK   ø€ ð 4Ð3Ð3Ð3¥ q¨cÐ 2Ñ 2Ô 2Ð3Ñ3Ô3€Eà‡G‚G�I„I€Ià‡H‚HˆU�O„O€O€O€Or=   c                  ó0   — e Zd Zd
dd„Zd„ Zd„ Zd„ Zd„ Zd	S )ÚWeakSequencerf   Ú_WeakSequence__elementsúSequence[_T]c                ój   ‡— t          j        | ¦  «        fd„Š‰| _        ˆfd„|D ¦   «         | _        d S )Nc                óV   —  |¦   «         }|�|j                              | ¦  «         d S d S rB   )Ú_storageÚremove)ÚitemÚselfrefrQ   s      r;   Ú_removez&WeakSequence.__init__.<locals>._remove&  s7   € Ø�7‘9”9ˆDØÐØ”×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð  Ðr=   c                ó:   •— g | ]}t          j        |‰¦  «        ‘ŒS rf   )ÚweakrefÚref)rƒ   r:   rÝ   s     €r;   r…   z)WeakSequence.__init__.<locals>.<listcomp>,  s2   ø€ ð 
ð 
ð 
Ø.5�GŒK˜ Ñ)Ô)ð
ð 
ð 
r=   )rß   rà   rÝ   rÙ   )rQ   rÕ   rÝ   s     @r;   rt   zWeakSequence.__init__#  s]   ø€ õ #*¤+¨dÑ"3Ô"3ð 	+ð 	+ð 	+ð 	+ð
 ˆŒð
ð 
ð 
ð 
Ø9Cð
ñ 
ô 
ˆŒˆˆr=   c                ój   — | j                              t          j        || j        ¦  «        ¦  «         d S rB   )rÙ   r4   rß   rà   rÝ   )rQ   rÛ   s     r;   r4   zWeakSequence.append0  s,   € ØŒ×Ò�Wœ[¨¨t¬|Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=r=   c                ó*   — t          | j        ¦  «        S rB   )rx   rÙ   rP   s    r;   ry   zWeakSequence.__len__3  s   € Ý�4”=Ñ!Ô!Ð!r=   c                ó8   — d„ d„ | j         D ¦   «         D ¦   «         S )Nc              3  ó   K  — | ]}|®|V — Œ	d S rB   rf   )rƒ   r�   s     r;   ú	<genexpr>z(WeakSequence.__iter__.<locals>.<genexpr>7  s+   è è € ð 
ð 
Ø¸s¸ˆC¸¸¸¸ð
ð 
r=   c              3  ó*   K  — | ]} |¦   «         V — Œd S rB   rf   )rƒ   rà   s     r;   rå   z(WeakSequence.__iter__.<locals>.<genexpr>8  s(   è è € Ð;Ð; c˜C˜C™EœEÐ;Ð;Ð;Ð;Ð;Ð;r=   ©rÙ   rP   s    r;   r   zWeakSequence.__iter__6  s3   € ð
ð 
Ø;Ð;¨T¬]Ð;Ñ;Ô;ð
ñ 
ô 
ð 	
r=   c                ó,   —  | j         |         ¦   «         S rB   rç   )rQ   Úindexs     r;   r•   zWeakSequence.__getitem__;  s   € Ø#ˆtŒ}˜UÔ#Ñ%Ô%Ð%r=   N)rf   )rÕ   rÖ   )rb   rc   rd   rt   r4   ry   r   r•   rf   r=   r;   rÔ   rÔ   "  si   € € € € € ð
ð 
ð 
ð 
ð 
ð>ð >ð >ð"ð "ð "ð
ð 
ð 
ð
&ð &ð &ð &ð &r=   rÔ   c                  ó   — e Zd Zddd„ZdS )ÚOrderedIdentitySetNÚiterableúOptional[Iterable[Any]]c                ó�   — t          j        | ¦  «         t          ¦   «         | _        |r|D ]}|                      |¦  «         Œd S d S rB   )r   rt   rÍ   Ú_membersÚadd)rQ   rì   Úos      r;   rt   zOrderedIdentitySet.__init__@  sZ   € ÝÔ˜TÑ"Ô"Ð"Ý#™œˆŒØð 	Øð ð �Ø—’˜‘”��ð	ð 	ðð r=   rB   )rì   rí   )rb   rc   rd   rt   rf   r=   r;   rë   rë   ?  s-   € € € € € ðð ð ð ð ð ð r=   rë   c                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )ÚPopulateDictz•A dict which populates missing values via a creation function.

    Note the creation function takes a key, unlike
    collections.defaultdict.

    ÚcreatorúCallable[[_KT], _VT]c                ó   — || _         d S rB   ©rô   )rQ   rô   s     r;   rt   zPopulateDict.__init__P  s   € ØˆŒˆˆr=   rV   r   r.   c                ó:   — |                       |¦  «        x| |<   }|S rB   r÷   ©rQ   rV   Úvals      r;   Ú__missing__zPopulateDict.__missing__S  s!   € ØŸ,š, sÑ+Ô+Ð+ˆˆS‰	�CØˆ
r=   N)rô   rõ   ©rV   r   r.   r   ©rb   rc   rd   re   rt   rû   rf   r=   r;   ró   ró   H  sF   € € € € € ðð ðð ð ð ðð ð ð ð ð r=   ró   c                  ó"   — e Zd ZdZd
d„Zdd„Zd	S )ÚWeakPopulateDictzaLike PopulateDict, but assumes a self + a method and does not create
    a reference cycle.

    Úcreator_methodútypes.MethodTypec                ó^   — |j         | _        |j        }t          j        |¦  «        | _        d S rB   )Ú__func__rô   Ú__self__rß   rà   Úweakself)rQ   r   r  s      r;   rt   zWeakPopulateDict.__init__^  s)   € Ø%Ô.ˆŒØ!Ô*ˆÝœ HÑ-Ô-ˆŒˆˆr=   rV   r   r.   c                ó`   — |                       |                      ¦   «         |¦  «        x| |<   }|S rB   )rô   r  rù   s      r;   rû   zWeakPopulateDict.__missing__c  s+   € ØŸ,š, t§}¢}¡¤¸Ñ<Ô<Ð<ˆˆS‰	�CØˆ
r=   N)r   r  rü   rý   rf   r=   r;   rÿ   rÿ   X  sF   € € € € € ðð ð
.ð .ð .ð .ð
ð ð ð ð ð r=   rÿ   c                  óR   — e Zd ZU dZdZded<   ded<   ded<   	 ddd„Zdd„Zdd„Zd	S )ÚUniqueAppenderz½Appends items to a collection ensuring uniqueness.

    Additional appends() of the same object are ignored.  Membership is
    determined by identity (``is a``) not equality (``==``).
    )rn   Ú_data_appenderÚ_uniqueú&Union[Iterable[_T], Set[_T], List[_T]]rn   zCallable[[_T], None]r	  zDict[int, Literal[True]]r
  NÚviaúOptional[str]c                ó  — || _         i | _        |rt          ||¦  «        | _        d S t	          |d¦  «        rt          d|¦  «        j        | _        d S t	          |d¦  «        rt          d|¦  «        j        | _        d S d S )Nr4   r»   rð   zSet[_T])rn   r
  Úgetattrr	  Úhasattrr   r4   rð   )rQ   rn   r  s      r;   rt   zUniqueAppender.__init__~  s–   € ð
 ˆŒ	ØˆŒØð 	<Ý")¨$°Ñ"4Ô"4ˆDÔÐÐÝ�T˜8Ñ$Ô$ð 	<Ý"& z°4Ñ"8Ô"8Ô"?ˆDÔÐÐÝ�T˜5Ñ!Ô!ð 	<Ý"& y°$Ñ"7Ô"7Ô";ˆDÔÐÐð	<ð 	<r=   rÛ   r#   r.   rX   c                óx   — t          |¦  «        }|| j        vr!|                      |¦  «         d| j        |<   d S d S )NT)Úidr
  r	  )rQ   rÛ   Úid_s      r;   r4   zUniqueAppender.appendŒ  sH   € Ý�‰hŒhˆØ�d”lÐ"Ð"Ø×Ò Ñ%Ô%Ð%Ø $ˆDŒL˜ÑÐÐð #Ð"r=   r{   c                ó*   — t          | j        ¦  «        S rB   )r2   rn   rP   s    r;   r   zUniqueAppender.__iter__’  s   € Ý�D”I‰ŒÐr=   rB   )rn   r  r  r  )rÛ   r#   r.   rX   rÅ   )	rb   rc   rd   re   rÇ   rÈ   rt   r4   r   rf   r=   r;   r  r  q  s‘   € € € € € € ðð ð 4€Ià0Ð0Ð0Ñ0Ø(Ð(Ð(Ñ(Ø%Ð%Ð%Ñ%ð
 "ð<ð <ð <ð <ð <ð%ð %ð %ð %ðð ð ð ð ð r=   r  Úargr   c                ó²   — t          | ¦  «        dk    r5t          | d         t          j        ¦  «        rt	          | d         ¦  «        S t          d| ¦  «        S )Nr   r   r,   )rx   rD   ÚtypesÚGeneratorTyper}   r   )r  s    r;   Úcoerce_generator_argr  –  sF   € Ý
ˆ3�x„x�1‚}€}� C¨¤F­EÔ,?Ñ@Ô@€}Ý�C˜”F‰|Œ|Ðå�K Ñ%Ô%Ð%r=   Úxr±   úOptional[List[Any]]c                óz   — | €|S t          | ¦  «        s| gS t          | t          ¦  «        r| S t          | ¦  «        S rB   )r   rD   r}   )r  r±   s     r;   Úto_listr  �  sE   € Ø€yØˆÝ! !Ñ$Ô$ð Øˆsˆ
Ý	�A•tÑ	Ô	ð Øˆå�A‰wŒwˆr=   Úset_úContainer[Any]rì   úIterable[Any]r¤   c                ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )z²return True if any items of set\_ are present in iterable.

    Goes through special effort to ensure __hash__ is not called
    on items in iterable that don't support it.

    c              3  ó.   •K  — | ]}|j         ¯	|‰v V — Œd S rB   )Ú__hash__)rƒ   Úir  s     €r;   rå   z#has_intersection.<locals>.<genexpr>¯  s.   øè è € Ð9Ð9˜Q¨a¬jÐ9ˆq�DˆyÐ9Ð9Ð9Ð9Ð9Ð9r=   )Úany)r  rì   s   ` r;   Úhas_intersectionr&  ¨  s(   ø€ õ Ð9Ð9Ð9Ð9 (Ð9Ñ9Ô9Ñ9Ô9Ð9r=   c                óˆ   — | €t          ¦   «         S t          | t           ¦  «        st          t          | ¦  «        ¦  «        S | S rB   )r0   rD   r  ©r  s    r;   Úto_setr)  ²  s9   € Ø€yÝ‰uŒuˆÝ�a�ÑÔð Ý•7˜1‘:”:‰ŒÐàˆr=   úSet[Any]c                óˆ   — | €t          ¦   «         S t          | t           ¦  «        st          t          | ¦  «        ¦  «        S | S rB   )Ú
column_setrD   r  r(  s    r;   Úto_column_setr-  »  s<   € Ø€yÝ‰|Œ|ÐÝ�a�Ñ$Ô$ð Ý�' !™*œ*Ñ%Ô%Ð%àˆr=   úDict[Any, Any]Ú_newúOptional[Dict[Any, Any]]Úkwc                óv   — |                       ¦   «         } |r|                      |¦  «          | j        di |¤Ž | S )z5Copy the given dict and update with the given values.rf   )rR   r­   )r>   r/  r1  s      r;   Úupdate_copyr3  Ä  s@   € ð
 	
�Š‰Œ€AØð Ø	�Š�‰ŒˆØ€A„H€N€Nˆr€N€N€NØ€Hr=   úIterable[_T]r{   c              #  ó’   K  — | D ]A}t          |t          ¦  «        s&t          |d¦  «        rt          |¦  «        E d{V —† Œ=|V — ŒBdS )z�Given an iterator of which further sub-elements may also be
    iterators, flatten the sub-elements into a single iterator.

    r   N)rD   r]   r  Úflatten_iterator)r  Úelems     r;   r6  r6  Ð  sr   è è € ð ð ð ˆÝ˜$¥Ñ$Ô$ð 	­°°zÑ)BÔ)Bð 	Ý'¨Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-àˆJˆJˆJˆJð	ð r=   c                  óØ   — e Zd ZU dZdZded<   ded<   ded<   	 	 	 d'd(d„Zd„ Zed)d„¦   «         Z	ed*d„¦   «         Z		 d+d,d„Z	d-d„Z
d.d„Zd/d„Zd0d„Zd1d"„Zd2d$„Zed3d%„¦   «         Zd4d&„ZdS )5ÚLRUCachezóDictionary with 'squishy' removal of least
    recently used items.

    Note that either get() or [] should be used here, but
    generally its not safe to do an "in" check first as the dictionary
    can change subsequent to that call.

    )ÚcapacityÚ	thresholdÚ
size_alertrl   Ú_counterÚ_mutexru   r:  Úfloatr;  z.Optional[Callable[[LRUCache[_KT, _VT]], None]]r<  éd   ç      à?NúOptional[Callable[..., None]]c                ó|   — || _         || _        || _        d| _        t	          j        ¦   «         | _        i | _        d S )Nr   )r:  r;  r<  r=  Ú	threadingÚLockr>  rl   )rQ   r:  r;  r<  s       r;   rt   zLRUCache.__init__ô  s:   € ð !ˆŒØ"ˆŒØ$ˆŒØˆŒÝ”nÑ&Ô&ˆŒØ<>ˆŒ
ˆ
ˆ
r=   c                ó0   — | xj         dz  c_         | j         S )Nr   )r=  rP   s    r;   Ú_inc_counterzLRUCache._inc_counter  s   € ØˆŒ˜ÑˆŒØŒ}Ðr=   rV   r%   r.   úOptional[_VT]c                ó   — d S rB   rf   r”   s     r;   r°   zLRUCache.get  s   € Ø.1¨cr=   r±   úUnion[_VT, _T]c                ó   — d S rB   rf   r´   s      r;   r°   zLRUCache.get  rµ   r=   úOptional[Union[_VT, _T]]c                óˆ   — | j                              |¦  «        }|�%|                      ¦   «         |d         d<   |d         S |S ©Né   r   r   )rl   r°   rG  )rQ   rV   r±   rÛ   s       r;   r°   zLRUCache.get  sD   € ð Œz�~Š~˜cÑ"Ô"ˆØÐØ×*Ò*Ñ,Ô,ˆD�ŒG�A‰JØ˜”7ˆNàˆNr=   r&   c                óf   — | j         |         }|                      ¦   «         |d         d<   |d         S rN  )rl   rG  )rQ   rV   rÛ   s      r;   r•   zLRUCache.__getitem__  s/   € ØŒz˜#ŒˆØ×&Ò&Ñ(Ô(ˆˆQŒ�‰
Ø�AŒwˆr=   úIterator[_KT]c                ó*   — t          | j        ¦  «        S rB   )r2   rl   rP   s    r;   r   zLRUCache.__iter__  rº   r=   c                ó*   — t          | j        ¦  «        S rB   rw   rP   s    r;   ry   zLRUCache.__len__  rz   r=   úValuesView[_VT]c                ól   — t          j        d„ | j                             ¦   «         D ¦   «         ¦  «        S )Nc                ó&   — i | ]\  }}||d          “ŒS )r   rf   )rƒ   r„   r$  s      r;   ú
<dictcomp>z#LRUCache.values.<locals>.<dictcomp>!  s"   € Ð!IÐ!IÐ!I©d¨a° ! Q q¤TÐ!IÐ!IÐ!Ir=   )Útypingr   rl   r¿   rP   s    r;   r~   zLRUCache.values   s0   € ÝÔ Ð!IÐ!I°d´j×6FÒ6FÑ6HÔ6HÐ!IÑ!IÔ!IÑJÔJÐJr=   rW   rX   c                ón   — |||                       ¦   «         gf| j        |<   |                      ¦   «          d S rB   )rG  rl   Ú_manage_sizer[   s      r;   rZ   zLRUCache.__setitem__#  s;   € Ø ¨×(9Ò(9Ñ(;Ô(;Ð'<Ð=ˆŒ
�3‰Ø×ÒÑÔÐÐÐr=   Ú_LRUCache__vc                ó   — | j         |= d S rB   rk   )rQ   r[  s     r;   r—   zLRUCache.__delitem__'  r˜   r=   c                ó0   — | j         | j         | j        z  z   S rB   )r:  r;  rP   s    r;   Úsize_thresholdzLRUCache.size_threshold*  s   € àŒ}˜tœ}¨t¬~Ñ=Ñ=Ð=r=   c                ó€  — | j                              d¦  «        sd S 	 t          | j        ¦  «        }t	          | ¦  «        | j        | j        | j        z  z   k    r­|rd}|                      | ¦  «         t          | j         	                    ¦   «         t          j        d¦  «        d¬¦  «        }|| j        d …         D ]!}	 | j        |d         = Œ# t          $ r Y Œw xY wt	          | ¦  «        | j        | j        | j        z  z   k    °­| j                              ¦   «          d S # | j                              ¦   «          w xY w)NFrO  T)rV   Úreverser   )r>  Úacquirer¤   r<  rx   r:  r;  rÑ   rl   r~   ÚoperatorÚ
itemgetterr¡   Úrelease)rQ   r<  Ú
by_counterrÛ   s       r;   rZ  zLRUCache._manage_size.  sT  € ØŒ{×"Ò" 5Ñ)Ô)ð 	ØˆFð	"Ý˜dœoÑ.Ô.ˆJÝ�d‘)”)˜dœm¨d¬m¸d¼nÑ.LÑLÒLÐLØð *Ø!&�JØ—O’O DÑ)Ô)Ð)Ý#Ø”J×%Ò%Ñ'Ô'Ý Ô+¨AÑ.Ô.Ø ðñ ô �
ð
 ' t¤}  Ô7ð !ð !�Dð!Ø œJ t¨A¤wÐ/Ð/øÝ#ð !ð !ð !à ˜ð!øøøõ �d‘)”)˜dœm¨d¬m¸d¼nÑ.LÑLÒLÐLð  ŒK×ÒÑ!Ô!Ð!Ð!Ð!øˆDŒK×ÒÑ!Ô!Ð!Ð!øøøs0   žB!D" Ã CÃD" Ã
CÃD" ÃCÃ+D" Ä"D=)r@  rA  N)r:  ru   r;  r?  r<  rB  )rV   r%   r.   rH  )rV   r%   r±   rJ  r.   rJ  rB   )rV   r%   r±   rL  r.   rL  )rV   r%   r.   r&   )r.   rQ  rÄ   )r.   rT  ra   )r[  r%   r.   rX   )r.   r?  rÆ   )rb   rc   rd   re   rÇ   rÈ   rt   rG  r   r°   r•   r   ry   r~   rZ   r—   Úpropertyr^  rZ  rf   r=   r;   r9  r9  Ý  sz  € € € € € € ðð ð€Ið €M€M�MØÐÐÑØ>Ð>Ð>Ñ>ð ØØ48ð	?ð ?ð ?ð ?ð ?ðð ð ð Ø1Ð1Ð1ñ „XØ1àØKÐKÐKñ „XØKð =Aðð ð ð ð ðð ð ð ð
 ð  ð  ð  ðð ð ð ðKð Kð Kð Kðð ð ð ðð ð ð ð ð>ð >ð >ñ „Xð>ð"ð "ð "ð "ð "ð "r=   r9  c                  ó   — e Zd Zdd„ZdS )Ú_CreateFuncTyper.   r'   c                ó   — d S rB   rf   rP   s    r;   Ú__call__z_CreateFuncType.__call__G  ó   € € € r=   N)r.   r'   ©rb   rc   rd   rj  rf   r=   r;   rh  rh  F  s   € € € € € Ø$Ð$Ð$Ð$Ð$Ð$r=   rh  c                  ó   — e Zd Zdd„ZdS )Ú_ScopeFuncTyper.   r   c                ó   — d S rB   rf   rP   s    r;   rj  z_ScopeFuncType.__call__K  rk  r=   Nr`   rl  rf   r=   r;   rn  rn  J  s   € € € € € Ø"Ð"Ð"Ð"Ð"Ð"r=   rn  c                  ó^   — e Zd ZU dZdZded<   ded<   ded<   dd„Zdd„Zdd„Zdd„Z	dd„Z
dS )ÚScopedRegistryaÆ  A Registry that can store one or multiple instances of a single
    class on the basis of a "scope" function.

    The object implements ``__call__`` as the "getter", so by
    calling ``myregistry()`` the contained object is returned
    for the current scope.

    :param createfunc:
      a callable that returns a new object to be placed in the registry

    :param scopefunc:
      a callable that will return a key to store/retrieve an object.
    ©Ú
createfuncÚ	scopefuncÚregistryz_CreateFuncType[_T]rs  rn  rt  r   ru  úCallable[[], _T]úCallable[[], Any]c                ó0   — || _         || _        i | _        dS )aV  Construct a new :class:`.ScopedRegistry`.

        :param createfunc:  A creation function that will generate
          a new value for the current scope, if none is present.

        :param scopefunc:  A function that returns a hashable
          token representing the current scope (such as, current
          thread identifier).

        Nrr  )rQ   rs  rt  s      r;   rt   zScopedRegistry.__init__c  s   € ð %ˆŒØ"ˆŒØˆŒˆˆr=   r.   r#   c                óÀ   — |                       ¦   «         }	 | j        |         S # t          $ r0 | j                             ||                      ¦   «         ¦  «        cY S w xY wrB   )rt  ru  r¡   Ú
setdefaultrs  r”   s     r;   rj  zScopedRegistry.__call__t  sk   € Ø�nŠnÑÔˆð	DØ”= Ô%Ð%øÝð 	Dð 	Dð 	DØ”=×+Ò+¨C°·²Ñ1BÔ1BÑCÔCÐCÐCÐCð	Døøøs   –# £7AÁAr¤   c                ó8   — |                       ¦   «         | j        v S )z9Return True if an object is present in the current scope.)rt  ru  rP   s    r;   ÚhaszScopedRegistry.has{  s   € ð �~Š~ÑÔ 4¤=Ð0Ð0r=   r�   rX   c                ó>   — || j         |                      ¦   «         <   dS )z$Set the value for the current scope.N)ru  rt  ©rQ   r�   s     r;   r0   zScopedRegistry.set€  s    € ð +.ˆŒ�d—n’nÑ&Ô&Ñ'Ð'Ð'r=   c                ó^   — 	 | j         |                      ¦   «         = dS # t          $ r Y dS w xY w)z Clear the current scope, if any.N)ru  rt  r¡   rP   s    r;   rÃ   zScopedRegistry.clear…  sC   € ð	Ø”˜dŸnšnÑ.Ô.Ð/Ð/Ð/øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ž
,«,N)rs  rv  rt  rw  ©r.   r#   ©r.   r¤   ©r�   r#   r.   rX   rÆ   )rb   rc   rd   re   rÇ   rÈ   rt   rj  r|  r0   rÃ   rf   r=   r;   rq  rq  N  s°   € € € € € € ðð ð 6€Ià#Ð#Ð#Ñ#ØÐÐÑØ€M€M�Mðð ð ð ð"Dð Dð Dð Dð1ð 1ð 1ð 1ð
.ð .ð .ð .ð
ð ð ð ð ð r=   rq  c                  ó:   — e Zd ZdZdd„Zdd„Zdd	„Zdd„Zdd„ZdS )ÚThreadLocalRegistryz\A :class:`.ScopedRegistry` that uses a ``threading.local()``
    variable for storage.

    rs  rv  c                óD   — || _         t          j        ¦   «         | _        d S rB   )rs  rD  Úlocalru  )rQ   rs  s     r;   rt   zThreadLocalRegistry.__init__”  s   € Ø$ˆŒÝ!œÑ)Ô)ˆŒˆˆr=   r.   r#   c                ó€   — 	 | j         j        S # t          $ r% |                      ¦   «         x}| j         _        |cY S w xY wrB   )ru  rW   r¢   rs  )rQ   rú   s     r;   rj  zThreadLocalRegistry.__call__˜  sO   € ð	Ø”=Ô&Ð&øÝð 	ð 	ð 	Ø(,¯ªÑ(9Ô(9Ð9ˆC�$”-Ô%ØˆJˆJˆJð	øøøs   ‚ Ž,=¼=r¤   c                ó,   — t          | j        d¦  «        S )NrW   )r  ru  rP   s    r;   r|  zThreadLocalRegistry.hasŸ  s   € Ý�t”} gÑ.Ô.Ð.r=   r�   rX   c                ó   — || j         _        d S rB   )ru  rW   r~  s     r;   r0   zThreadLocalRegistry.set¢  s   € Ø!ˆŒÔÐÐr=   c                ó8   — 	 | j         `d S # t          $ r Y d S w xY wrB   )ru  rW   r¢   rP   s    r;   rÃ   zThreadLocalRegistry.clear¥  s7   € ð	Ø”Ð#Ð#Ð#øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ‹
˜N)rs  rv  r€  r�  r‚  rÆ   )	rb   rc   rd   re   rt   rj  r|  r0   rÃ   rf   r=   r;   r„  r„  Ž  s‚   € € € € € ðð ð
*ð *ð *ð *ðð ð ð ð/ð /ð /ð /ð"ð "ð "ð "ðð ð ð ð ð r=   r„  c                ó8   — d}| D ]}||u r|dz  }|dk    r dS ŒdS )zrGiven a sequence and search object, return True if there's more
    than one, False if zero or one of them.


    r   r   TFrf   )ÚsequenceÚtargetÚcrÛ   s       r;   Ú	has_dupesr�  ¬  s@   € ð 	
€AØð ð ˆØ�6ˆ>ˆ>Ø�‰FˆAØ�1ŠuˆuØ�t�tøØˆ5r=   )r+   r,   r-   r,   r.   r,   )r>   r?   r.   r@   rB   )r  r   r.   r,   )r  r   r±   r  r.   r,   )r  r  rì   r   r.   r¤   )r  r   r.   r*  )r>   r.  r/  r0  r1  r   r.   r.  )r  r4  r.   r{   )Wre   Ú
__future__r   rb  rD  r  rX  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   ÚTYPE_CHECKINGÚ_py_collectionsr   r   r   r    r!   r"   Ú$sqlalchemy.cyextension.immutabledictÚ"sqlalchemy.cyextension.collectionsr#   r%   r&   r'   Ú	frozensetr)   rÈ   r*   r<   rE   rC   rG   rg   rh   rj   rË   rª   rÒ   rT   rÍ   Úsort_dictionaryrÔ   rë   ró   rÿ   r0   r,  Úcolumn_dictÚordered_column_setr  r  r  r&  r)  r-  r3  r6  ÚMutableMappingr9  rh  rn  rq  r„  r�  rf   r=   r;   ú<module>r›     sŸ  ðð &Ð %Ð %à "Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€à $Ð $Ð $Ð $Ð $Ð $Ø *Ð *Ð *Ð *Ð *Ð *Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à	Ôð ˜ð Ø?Ð?Ð?Ð?Ð?Ð?Ø;Ð;Ð;Ð;Ð;Ð;ØGÐGÐGÐGÐGÐGØGÐGÐGÐGÐGÐGØ9Ð9Ð9Ð9Ð9Ð9Ø;Ð;Ð;Ð;Ð;Ð;Ð;ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð NÐMÐMÐMÐMÐMØKÐKÐKÐKÐKÐKðð ð ð ð ð ð €WˆT˜ÐÑÔ€Ø€gˆe˜3ÐÑÔ€Ø€gˆe˜3ÐÑÔ€Øˆ� 4Ð(Ñ(Ô(€à%˜I™KœK€	Ð 'Ð 'Ð 'Ñ 'Ø$˜9 d VÑ,Ô,€Ð ,Ð ,Ð ,Ñ ,ð5ð 5ð 5ð 5ðp ð  ð  ð  ð '4 m¡o¤o€
Ð 5Ð 5Ð 5Ñ 5ð6ð 6ð 6ð 6ð 6Ð" 3¨ 8Ô,ñ 6ô 6ð 6ð0 €gˆe˜3ÐÑÔ€à€WˆT˜ÐÑÔ€ðTð Tð Tð Tð T�˜”ñ Tô Tð Tðn1ð 1ð 1ð 1ð 1˜
 2œñ 1ô 1ð 1ðð ð ð ð Ð*¨J°r¬Nñ ô ð ðð ð ð ð €Ø*€ð&ð &ð &ð &ð &�8˜B”<ñ &ô &ð &ð:ð ð ð ð ˜ñ ô ð ðð ð ð ð �4˜˜S˜”>ñ ô ð ð ð ð ð ð �t˜C ˜H”~ñ ô ð ð( €
Ø€ØÐ ð"ð "ð "ð "ð "�W˜R”[ñ "ô "ð "ðJ&ð &ð &ð &ðð ð ð ð ð:ð :ð :ð :ðð ð ðð ð ð ð 9=ð	ð 	ð 	ð 	ð 	ð
ð 
ð 
ð 
ðf"ð f"ð f"ð f"ð f"ˆvÔ$ S¨# XÔ.ñ f"ô f"ð f"ðR%ð %ð %ð %ð %�h˜u”oñ %ô %ð %ð#ð #ð #ð #ð #�Xñ #ô #ð #ð=ð =ð =ð =ð =�W˜R”[ñ =ô =ð =ð@ð ð ð ð ˜.¨Ô,ñ ô ð ð<ð ð ð ð r=   