§
    
 @gÉN  ã                  óŽ  — U d Z ddlm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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/ e0¦   «         Z1d(e2d)<    e0dg¦  «        Z3d(e2d*<   ded/„Z4dfd3„Z5 e$¦   «         Z6d4e2d5<    G d6„ d7e'e-e.f         ¦  «        Z7 ed8e
¬"¦  «        Z8 ed9e
¬"¦  «        Z9 G d:„ d;ee,         ¦  «        Z: G d<„ d=e:e,         ¦  «        Z; G d>„ d?e&e:e,         ¦  «        Z<dgd@„Z=e>Z?e=Z@ G dA„ dBee,         ¦  «        ZA G dC„ dDe%¦  «        ZB G dE„ dFee-e.f         ¦  «        ZC G dG„ dHee-e.f         ¦  «        ZDeEZFe>ZGe(ZH G dI„ dJee,         ¦  «        ZIdhdM„ZJdgdidQ„ZKdR„ ZLdS„ ZMdjdU„ZNdgdV„ZOdkdY„ZP G dZ„ d[e	jQ        e-e.f         ¦  «        ZR G d\„ d]e!e/         ¦  «        ZS G d^„ d_e!¦  «        ZT G d`„ daee,         ¦  «        ZU G db„ dceUe,         ¦  «        ZVdd„ ZWdS )lzCollection classes and helpers.é    )ÚannotationsN)ÚAny)ÚCallable)Úcast)ÚDict)Ú	FrozenSet)ÚGeneric)ÚIterable)ÚIterator)ÚList)ÚMapping)ÚNoReturn)ÚOptional)Úoverload)ÚSequence)ÚSet)ÚTuple)ÚTypeVar)ÚUnion)Ú
ValuesViewé   )ÚHAS_CYEXTENSION)Ú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          úP/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/util/_collections.pyÚmerge_lists_w_orderingr:   K   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    r9   Úcoerce_to_immutabledictrC   ƒ   s5   € Øð  ÝÐÝ	�A•}Ñ	%Ô	%ð  Øˆå˜QÑÔÐr;   zimmutabledict[Any, Any]rA   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 r@   )r   Ú__new__)ÚclsrF   Únews      r9   rI   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    r9   ÚcopyzFacadeDict.copy–   s   € Ý!ð0ñ
ô 
ð 	
r;   c                ó0   — t           t          | ¦  «        ffS r@   )rE   ÚdictrN   s    r9   Ú
__reduce__zFacadeDict.__reduce__œ   s   € Ý�D ™JœJ˜=Ð(Ð(r;   Úkeyr#   Úvaluer$   ÚNonec                ó>   — t                                | ||¦  «         dS )z,insert an item into the dictionary directly.N)rR   Ú__setitem__©rO   rT   rU   s      r9   Ú_insert_itemzFacadeDict._insert_itemŸ   s    € å×Ò˜˜s EÑ*Ô*Ð*Ð*Ð*r;   Ústrc                ó<   — dt                                | ¦  «        z  S )NzFacadeDict(%s))rR   Ú__repr__rN   s    r9   r]   zFacadeDict.__repr__£   s   € Ø¥$§-¢-°Ñ"5Ô"5Ñ5Ð5r;   N)rF   r   r,   rG   )r,   r   ©r,   r   ©rT   r#   rU   r$   r,   rV   )r,   r[   )	Ú__name__Ú
__module__Ú__qualname__Ú__doc__rI   rP   rS   rZ   r]   © r;   r9   rE   rE   �   s~   € € € € € Ø4Ð4ðð ð ð ð
ð 
ð 
ð 
ð)ð )ð )ð )ð+ð +ð +ð +ð6ð 6ð 6ð 6ð 6ð 6r;   rE   Ú_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]rj   Údatac                ó>   — t                                | d|¦  «         d S ©Nrj   ©ÚobjectÚ__setattr__)rO   rl   s     r9   Ú__init__zProperties.__init__³   s    € Ý×Ò˜4 ¨$Ñ/Ô/Ð/Ð/Ð/r;   r,   Úintc                ó*   — t          | j        ¦  «        S r@   ©Úlenrj   rN   s    r9   Ú__len__zProperties.__len__¶   ó   € Ý�4”:‰ŒÐr;   úIterator[_T]c                óh   — t          t          | j                             ¦   «         ¦  «        ¦  «        S r@   )r0   Úlistrj   ÚvaluesrN   s    r9   Ú__iter__zProperties.__iter__¹   s&   € Ý•D˜œ×*Ò*Ñ,Ô,Ñ-Ô-Ñ.Ô.Ð.r;   ú	List[str]c                ó‚   •— t          t          ¦   «         ¦  «        d„ | j                             ¦   «         D ¦   «         z   S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS rd   )r[   )Ú.0Úks     r9   ú
<listcomp>z&Properties.__dir__.<locals>.<listcomp>½   s   € ÐAÐAÐA¨!�s 1™vœvÐAÐAÐAr;   )ÚdirÚsuperrj   Úkeys)rO   Ú	__class__s    €r9   Ú__dir__zProperties.__dir__¼   s3   ø€ Ý•5‘7”7‰|Œ|ÐAÐA¨t¬z¯ªÑ/@Ô/@ÐAÑAÔAÑAÐAr;   r7   úProperties[_F]úList[Union[_T, _F]]c                ó@   — t          | ¦  «        t          |¦  «        z   S r@   )r{   )rO   r7   s     r9   Ú__add__zProperties.__add__¿   s   € Ý�D‰zŒz�D ™KœKÑ'Ð'r;   rT   r[   Úobjr!   rV   c                ó   — || j         |<   d S r@   ri   ©rO   rT   r�   s      r9   rX   zProperties.__setitem__Â   ó   € ØˆŒ
�3‰ˆˆr;   c                ó   — | j         |         S r@   ri   ©rO   rT   s     r9   Ú__getitem__zProperties.__getitem__Å   s   € ØŒz˜#ŒÐr;   c                ó   — | j         |= d S r@   ri   r’   s     r9   Ú__delitem__zProperties.__delitem__È   ó   € ØŒJ�sˆOˆOˆOr;   c                ó   — || j         |<   d S r@   ri   r�   s      r9   rq   zProperties.__setattr__Ë   r�   r;   úDict[str, Any]c                ó   — d| j         iS rn   ri   rN   s    r9   Ú__getstate__zProperties.__getstate__Î   s   € Ø˜œÐ$Ð$r;   Ústatec                óJ   — t                                | d|d         ¦  «         d S rn   ro   )rO   r›   s     r9   Ú__setstate__zProperties.__setstate__Ñ   s$   € Ý×Ò˜4 ¨%°¬.Ñ9Ô9Ð9Ð9Ð9r;   c                óX   — 	 | j         |         S # t          $ r t          |¦  «        ‚w xY wr@   )rj   ÚKeyErrorÚAttributeErrorr’   s     r9   Ú__getattr__zProperties.__getattr__Ô   s<   € ð	&Ø”:˜c”?Ð"øÝð 	&ð 	&ð 	&Ý  Ñ%Ô%Ð%ð	&øøøs   ‚ �)Úboolc                ó   — || j         v S r@   ri   r’   s     r9   Ú__contains__zProperties.__contains__Ú   ó   € Ø�d”jÐ Ð r;   úReadOnlyProperties[_T]c                ó*   — t          | j        ¦  «        S )z8Return an immutable proxy for this :class:`.Properties`.)ÚReadOnlyPropertiesrj   rN   s    r9   Úas_readonlyzProperties.as_readonlyÝ   s   € õ " $¤*Ñ-Ô-Ð-r;   rU   c                ó:   — | j                              |¦  «         d S r@   )rj   Úupdate)rO   rU   s     r9   r«   zProperties.updateâ   s   € ØŒ
×Ò˜%Ñ Ô Ð Ð Ð r;   úOptional[_T]c                ó   — d S r@   rd   r’   s     r9   ÚgetzProperties.getå   ó   € àˆr;   ÚdefaultúUnion[_DT, _T]c                ó   — d S r@   rd   ©rO   rT   r°   s      r9   r®   zProperties.geté   r¯   r;   NúOptional[Union[_DT, _T]]úOptional[Union[_T, _DT]]c                ó   — || v r| |         S |S r@   rd   r³   s      r9   r®   zProperties.getí   s   € ð �$ˆ;ˆ;Ø˜”9ÐàˆNr;   c                ó*   — t          | j        ¦  «        S r@   )r{   rj   rN   s    r9   r†   zProperties.keysõ   ó   € Ý�D”JÑÔÐr;   úList[_T]c                óN   — t          | j                             ¦   «         ¦  «        S r@   )r{   rj   r|   rN   s    r9   r|   zProperties.valuesø   s   € Ý�D”J×%Ò%Ñ'Ô'Ñ(Ô(Ð(r;   úList[Tuple[str, _T]]c                óN   — t          | j                             ¦   «         ¦  «        S r@   )r{   rj   ÚitemsrN   s    r9   r½   zProperties.itemsû   s   € Ý�D”J×$Ò$Ñ&Ô&Ñ'Ô'Ð'r;   c                ó   — || j         v S r@   ri   r’   s     r9   Úhas_keyzProperties.has_keyþ   r¥   r;   c                ó8   — | j                              ¦   «          d S r@   )rj   ÚclearrN   s    r9   rÁ   zProperties.clear  s   € ØŒ
×ÒÑÔÐÐÐr;   )rl   rk   ©r,   rs   ©r,   ry   )r,   r~   )r7   r‰   r,   rŠ   )rT   r[   r�   r!   r,   rV   )rT   r[   r,   r!   )rT   r[   r,   rV   )r,   r˜   )r›   r˜   r,   rV   )rT   r[   r,   r¢   )r,   r¦   )rU   rk   r,   rV   )rT   r[   r,   r¬   )rT   r[   r°   r±   r,   r±   r@   )rT   r[   r°   r´   r,   rµ   )r,   r¹   )r,   r»   ©r,   rV   )r`   ra   rb   rc   Ú	__slots__Ú__annotations__rr   rw   r}   rˆ   rŒ   rX   r“   r•   rq   rš   r�   r¡   r¤   r©   r«   r   r®   r†   r|   r½   r¿   rÁ   Ú__classcell__)r‡   s   @r9   rh   rh   ¬   s7  ø€ € € € € € ØBÐBà€IàÐÐÑð0ð 0ð 0ð 0ðð ð ð ð/ð /ð /ð /ðBð Bð Bð Bð Bð Bð(ð (ð (ð (ðð ð ð ðð ð ð ðð ð ð ðð ð ð ð%ð %ð %ð %ð:ð :ð :ð :ð&ð &ð &ð &ð!ð !ð !ð !ð.ð .ð .ð .ð
!ð !ð !ð !ð ðð ð ñ „Xðð ðð ð ñ „Xðð =Aðð ð ð ð ð ð  ð  ð  ð)ð )ð )ð )ð(ð (ð (ð (ð!ð !ð !ð !ðð ð ð ð ð ð ð r;   rh   c                  ó   — e Zd ZdZdZd„ ZdS )ÚOrderedPropertieszUProvide a __getattr__/__setattr__ interface with an OrderedDict
    as backing store.rd   c                óT   — t                                | t          ¦   «         ¦  «         d S r@   )rh   rr   ÚOrderedDictrN   s    r9   rr   zOrderedProperties.__init__  s"   € Ý×Ò˜D¥+¡-¤-Ñ0Ô0Ð0Ð0Ð0r;   N)r`   ra   rb   rc   rÅ   rr   rd   r;   r9   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.rd   N)r`   ra   rb   rc   rÅ   rd   r;   r9   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 rd   rd   )r�   r‚   r<   s     €r9   rƒ   z,_ordered_dictionary_sort.<locals>.<listcomp>  s!   ø€ Ð3Ð3Ð3˜1ˆa��1”ˆYÐ3Ð3Ð3r;   )rT   N)ÚsortedrÁ   r«   )r<   rT   r½   s   `  r9   Ú_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 )ÚWeakSequencerd   Ú_WeakSequence__elementsúSequence[_T]c                ój   ‡— t          j        | ¦  «        fd„Š‰| _        ˆfd„|D ¦   «         | _        d S )Nc                óV   —  |¦   «         }|�|j                              | ¦  «         d S d S r@   )Ú_storageÚremove)ÚitemÚselfrefrO   s      r9   Ú_removez&WeakSequence.__init__.<locals>._remove'  s7   € Ø�7‘9”9ˆDØÐØ”×$Ò$ TÑ*Ô*Ð*Ð*Ð*ð  Ðr;   c                ó:   •— g | ]}t          j        |‰¦  «        ‘ŒS rd   )ÚweakrefÚref)r�   r8   rÛ   s     €r9   rƒ   z)WeakSequence.__init__.<locals>.<listcomp>-  s2   ø€ ð 
ð 
ð 
Ø.5�GŒK˜ Ñ)Ô)ð
ð 
ð 
r;   )rÝ   rÞ   rÛ   r×   )rO   rÓ   rÛ   s     @r9   rr   zWeakSequence.__init__$  s]   ø€ õ #*¤+¨dÑ"3Ô"3ð 	+ð 	+ð 	+ð 	+ð
 ˆŒð
ð 
ð 
ð 
Ø9Cð
ñ 
ô 
ˆŒˆˆr;   c                ój   — | j                              t          j        || j        ¦  «        ¦  «         d S r@   )r×   r2   rÝ   rÞ   rÛ   )rO   rÙ   s     r9   r2   zWeakSequence.append1  s,   € ØŒ×Ò�Wœ[¨¨t¬|Ñ<Ô<Ñ=Ô=Ð=Ð=Ð=r;   c                ó*   — t          | j        ¦  «        S r@   )rv   r×   rN   s    r9   rw   zWeakSequence.__len__4  s   € Ý�4”=Ñ!Ô!Ð!r;   c                ó8   — d„ d„ | j         D ¦   «         D ¦   «         S )Nc              3  ó   K  — | ]}|®|V — Œ	d S r@   rd   )r�   r�   s     r9   ú	<genexpr>z(WeakSequence.__iter__.<locals>.<genexpr>8  s+   è è € ð 
ð 
Ø¸s¸ˆC¸¸¸¸ð
ð 
r;   c              3  ó*   K  — | ]} |¦   «         V — Œd S r@   rd   )r�   rÞ   s     r9   rã   z(WeakSequence.__iter__.<locals>.<genexpr>9  s(   è è € Ð;Ð; c˜C˜C™EœEÐ;Ð;Ð;Ð;Ð;Ð;r;   )r×   rN   s    r9   r}   zWeakSequence.__iter__7  s3   € ð
ð 
Ø;Ð;¨T¬]Ð;Ñ;Ô;ð
ñ 
ô 
ð 	
r;   c                ór   — 	 | j         |         } |¦   «         S # t          $ r t          d|z  ¦  «        ‚w xY w)NzIndex %s out of range)r×   rŸ   Ú
IndexError)rO   Úindexr�   s      r9   r“   zWeakSequence.__getitem__<  sQ   € ð	Ø”- Ô&ˆCð �3‘5”5ˆLøõ ð 	>ð 	>ð 	>ÝÐ4°uÑ<Ñ=Ô=Ð=ð	>øøøs   ‚ ™6N)rd   )rÓ   rÔ   )r`   ra   rb   rr   r2   rw   r}   r“   rd   r;   r9   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 r@   )r   rr   rË   Ú_membersÚadd)rO   rê   Úos      r9   rr   zOrderedIdentitySet.__init__F  sZ   € ÝÔ˜TÑ"Ô"Ð"Ý#™œˆŒØð 	Øð ð �Ø—’˜‘”��ð	ð 	ðð r;   r@   )rê   rë   )r`   ra   rb   rr   rd   r;   r9   ré   ré   E  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 r@   ©rò   )rO   rò   s     r9   rr   zPopulateDict.__init__V  s   € ØˆŒˆˆr;   rT   r   r,   c                ó:   — |                       |¦  «        x| |<   }|S r@   rõ   ©rO   rT   Úvals      r9   Ú__missing__zPopulateDict.__missing__Y  s!   € ØŸ,š, sÑ+Ô+Ð+ˆˆS‰	�CØˆ
r;   N)rò   ró   ©rT   r   r,   r   ©r`   ra   rb   rc   rr   rù   rd   r;   r9   rñ   rñ   N  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 r@   )Ú__func__rò   Ú__self__rÝ   rÞ   Úweakself)rO   rþ   r  s      r9   rr   zWeakPopulateDict.__init__d  s)   € Ø%Ô.ˆŒØ!Ô*ˆÝœ HÑ-Ô-ˆŒˆˆr;   rT   r   r,   c                ó`   — |                       |                      ¦   «         |¦  «        x| |<   }|S r@   )rò   r  r÷   s      r9   rù   zWeakPopulateDict.__missing__i  s+   € ØŸ,š, t§}¢}¡¤¸Ñ<Ô<Ð<ˆˆS‰	�CØˆ
r;   N)rþ   rÿ   rú   rû   rd   r;   r9   rý   rý   ^  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 (``==``).
    )rl   Ú_data_appenderÚ_uniqueú&Union[Iterable[_T], Set[_T], List[_T]]rl   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 )Nr2   r¹   rî   zSet[_T])rl   r  Úgetattrr  Úhasattrr   r2   rî   )rO   rl   r
  s      r9   rr   zUniqueAppender.__init__„  s–   € ð
 ˆŒ	ØˆŒØð 	<Ý")¨$°Ñ"4Ô"4ˆDÔÐÐÝ�T˜8Ñ$Ô$ð 	<Ý"& z°4Ñ"8Ô"8Ô"?ˆDÔÐÐÝ�T˜5Ñ!Ô!ð 	<Ý"& y°$Ñ"7Ô"7Ô";ˆDÔÐÐð	<ð 	<r;   rÙ   r!   r,   rV   c                óx   — t          |¦  «        }|| j        vr!|                      |¦  «         d| j        |<   d S d S )NT)Úidr  r  )rO   rÙ   Úid_s      r9   r2   zUniqueAppender.append’  sH   € Ý�‰hŒhˆØ�d”lÐ"Ð"Ø×Ò Ñ%Ô%Ð%Ø $ˆDŒL˜ÑÐÐð #Ð"r;   ry   c                ó*   — t          | j        ¦  «        S r@   )r0   rl   rN   s    r9   r}   zUniqueAppender.__iter__˜  s   € Ý�D”I‰ŒÐr;   r@   )rl   r	  r
  r  )rÙ   r!   r,   rV   rÃ   )	r`   ra   rb   rc   rÅ   rÆ   rr   r2   r}   rd   r;   r9   r  r  w  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*   )rv   rB   ÚtypesÚGeneratorTyper{   r   )r  s    r9   Úcoerce_generator_argr  œ  sF   € Ý
ˆ3�x„x�1‚}€}� C¨¤F­EÔ,?Ñ@Ô@€}Ý�C˜”F‰|Œ|Ðå�K Ñ%Ô%Ð%r;   Úxr°   úOptional[List[Any]]c                óÈ   — | €|S t          | t          j        ¦  «        rt          | t          t          f¦  «        r| gS t          | t
          ¦  «        r| S t          | ¦  «        S r@   )rB   Úcollections_abcr
   r[   Úbytesr{   )r  r°   s     r9   Úto_listr  £  sf   € Ø€yØˆÝ�a�Ô1Ñ2Ô2ð µjØ	�C•ˆ<ñ7ô 7ð ð ˆsˆ
Ý	�A•tÑ	Ô	ð Øˆå�A‰wŒwˆr;   c                óZ   — t          |                      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                ó    — g | ]}|j         ¯	|‘ŒS rd   )Ú__hash__)r�   Úis     r9   rƒ   z$has_intersection.<locals>.<listcomp>¸  s   € Ð"EÐ"EÐ"E¨¸!¼*Ð"E 1Ð"EÐ"EÐ"Er;   )r¢   r/   )Úset_rê   s     r9   Úhas_intersectionr#  °  s/   € õ �×!Ò!Ð"EÐ"E¨hÐ"EÑ"EÔ"EÑFÔFÑGÔGÐGr;   c                óˆ   — | €t          ¦   «         S t          | t           ¦  «        st          t          | ¦  «        ¦  «        S | S r@   )r.   rB   r  ©r  s    r9   Úto_setr&  »  s9   € Ø€yÝ‰uŒuˆÝ�a�ÑÔð Ý•7˜1‘:”:‰ŒÐàˆr;   úSet[Any]c                óˆ   — | €t          ¦   «         S t          | t           ¦  «        st          t          | ¦  «        ¦  «        S | S r@   )Ú
column_setrB   r  r%  s    r9   Úto_column_setr*  Ä  s<   € Ø€yÝ‰|Œ|ÐÝ�a�Ñ$Ô$ð Ý�' !™*œ*Ñ%Ô%Ð%àˆr;   c                óv   — |                       ¦   «         } |r|                      |¦  «          | j        di |¤Ž | S )z5Copy the given dict and update with the given values.rd   )rP   r«   )r<   Ú_newÚkws      r9   Úupdate_copyr.  Í  s@   € ð 	
�Š‰Œ€AØð Ø	�Š�‰ŒˆØ€A„H€N€Nˆr€N€N€NØ€Hr;   úIterable[_T]ry   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)rB   r[   r  Úflatten_iterator)r  Úelems     r9   r1  r1  ×  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_alertrj   Ú_counterÚ_mutexrs   r5  Úfloatr6  z.Optional[Callable[[LRUCache[_KT, _VT]], None]]r7  éd   ç      à?NúOptional[Callable[..., None]]c                ó|   — || _         || _        || _        d| _        t	          j        ¦   «         | _        i | _        d S )Nr   )r5  r6  r7  r8  Ú	threadingÚLockr9  rj   )rO   r5  r6  r7  s       r9   rr   zLRUCache.__init__û  s:   € ð !ˆŒØ"ˆŒØ$ˆŒØˆŒÝ”nÑ&Ô&ˆŒØ<>ˆŒ
ˆ
ˆ
r;   c                ó0   — | xj         dz  c_         | j         S )Nr   )r8  rN   s    r9   Ú_inc_counterzLRUCache._inc_counter  s   € ØˆŒ˜ÑˆŒØŒ}Ðr;   rT   r#   r,   úOptional[_VT]c                ó   — d S r@   rd   r’   s     r9   r®   zLRUCache.get  r¯   r;   r°   úUnion[_VT, _T]c                ó   — d S r@   rd   r³   s      r9   r®   zLRUCache.get  r¯   r;   úOptional[Union[_VT, _T]]c                óˆ   — | j                              |¦  «        }|�%|                      ¦   «         |d         d<   |d         S |S ©Né   r   r   )rj   r®   rB  )rO   rT   r°   rÙ   s       r9   r®   zLRUCache.get  sD   € ð Œz�~Š~˜cÑ"Ô"ˆØÐØ×*Ò*Ñ,Ô,ˆD�ŒG�A‰JØ˜”7ˆNàˆNr;   r$   c                óf   — | j         |         }|                      ¦   «         |d         d<   |d         S rI  )rj   rB  )rO   rT   rÙ   s      r9   r“   zLRUCache.__getitem__  s/   € ØŒz˜#ŒˆØ×&Ò&Ñ(Ô(ˆˆQŒ�‰
Ø�AŒwˆr;   úIterator[_KT]c                ó*   — t          | j        ¦  «        S r@   )r0   rj   rN   s    r9   r}   zLRUCache.__iter__#  r¸   r;   c                ó*   — t          | j        ¦  «        S r@   ru   rN   s    r9   rw   zLRUCache.__len__&  rx   r;   úValuesView[_VT]c                ól   — t          j        d„ | j                             ¦   «         D ¦   «         ¦  «        S )Nc                ó&   — i | ]\  }}||d          “ŒS )r   rd   )r�   r‚   r!  s      r9   ú
<dictcomp>z#LRUCache.values.<locals>.<dictcomp>*  s"   € Ð!IÐ!IÐ!I©d¨a° ! Q q¤TÐ!IÐ!IÐ!Ir;   )Útypingr   rj   r½   rN   s    r9   r|   zLRUCache.values)  s0   € ÝÔ Ð!IÐ!I°d´j×6FÒ6FÑ6HÔ6HÐ!IÑ!IÔ!IÑJÔJÐJr;   rU   rV   c                ón   — |||                       ¦   «         gf| j        |<   |                      ¦   «          d S r@   )rB  rj   Ú_manage_sizerY   s      r9   rX   zLRUCache.__setitem__,  s;   € Ø ¨×(9Ò(9Ñ(;Ô(;Ð'<Ð=ˆŒ
�3‰Ø×ÒÑÔÐÐÐr;   Ú_LRUCache__vc                ó   — | j         |= d S r@   ri   )rO   rV  s     r9   r•   zLRUCache.__delitem__0  r–   r;   c                ó0   — | j         | j         | j        z  z   S r@   )r5  r6  rN   s    r9   Úsize_thresholdzLRUCache.size_threshold3  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)NFrJ  T)rT   Úreverser   )r9  Úacquirer¢   r7  rv   r5  r6  rÏ   rj   r|   ÚoperatorÚ
itemgetterrŸ   Úrelease)rO   r7  Ú
by_counterrÙ   s       r9   rU  zLRUCache._manage_size7  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;  r<  N)r5  rs   r6  r:  r7  r=  )rT   r#   r,   rC  )rT   r#   r°   rE  r,   rE  r@   )rT   r#   r°   rG  r,   rG  )rT   r#   r,   r$   )r,   rL  rÂ   )r,   rO  r_   )rV  r#   r,   rV   )r,   r:  rÄ   )r`   ra   rb   rc   rÅ   rÆ   rr   rB  r   r®   r“   r}   rw   r|   rX   r•   ÚpropertyrY  rU  rd   r;   r9   r4  r4  ä  sŒ  € € € € € € ðð ð€Ið €M€M�MØÐÐÑØ>Ð>Ð>Ñ>ð ØØ48ð	?ð ?ð ?ð ?ð ?ðð ð ð ðð ð ñ „Xðð ðð ð ñ „Xðð =Aðð ð ð ð ðð ð ð ð
 ð  ð  ð  ðð ð ð ðKð Kð Kð Kðð ð ð ðð ð ð ð ð>ð >ð >ñ „Xð>ð"ð "ð "ð "ð "ð "r;   r4  c                  ó   — e Zd Zdd„ZdS )Ú_CreateFuncTyper,   r%   c                ó   — d S r@   rd   rN   s    r9   Ú__call__z_CreateFuncType.__call__P  ó   € Øˆr;   N)r,   r%   ©r`   ra   rb   re  rd   r;   r9   rc  rc  O  ó(   € € € € € ðð ð ð ð ð r;   rc  c                  ó   — e Zd Zdd„ZdS )Ú_ScopeFuncTyper,   r   c                ó   — d S r@   rd   rN   s    r9   re  z_ScopeFuncType.__call__U  rf  r;   Nr^   rg  rd   r;   r9   rj  rj  T  rh  r;   rj  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]ro  rj  rp  r   rq  ú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).

        Nrn  )rO   ro  rp  s      r9   rr   zScopedRegistry.__init__n  s   € ð %ˆŒØ"ˆŒØˆŒˆˆr;   r,   r!   c                óÀ   — |                       ¦   «         }	 | j        |         S # t          $ r0 | j                             ||                      ¦   «         ¦  «        cY S w xY wr@   )rp  rq  rŸ   Ú
setdefaultro  r’   s     r9   re  zScopedRegistry.__call__  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.)rp  rq  rN   s    r9   ÚhaszScopedRegistry.has†  s   € ð �~Š~ÑÔ 4¤=Ð0Ð0r;   r�   rV   c                ó>   — || j         |                      ¦   «         <   dS )z$Set the value for the current scope.N)rq  rp  ©rO   r�   s     r9   r.   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)rq  rp  rŸ   rN   s    r9   rÁ   zScopedRegistry.clear�  sC   € ð	Ø”˜dŸnšnÑ.Ô.Ð/Ð/Ð/øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ž
,«,N)ro  rr  rp  rs  ©r,   r!   ©r,   r¢   ©r�   r!   r,   rV   rÄ   )r`   ra   rb   rc   rÅ   rÆ   rr   re  rx  r.   rÁ   rd   r;   r9   rm  rm  Y  s°   € € € € € € ðð ð 6€Ià#Ð#Ð#Ñ#ØÐÐÑØ€M€M�Mðð ð ð ð"Dð Dð Dð Dð1ð 1ð 1ð 1ð
.ð .ð .ð .ð
ð ð ð ð ð r;   rm  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.

    ro  rr  c                óD   — || _         t          j        ¦   «         | _        d S r@   )ro  r?  Úlocalrq  )rO   ro  s     r9   rr   zThreadLocalRegistry.__init__Ÿ  s   € Ø$ˆŒÝ!œÑ)Ô)ˆŒˆˆr;   r,   r!   c                ó€   — 	 | j         j        S # t          $ r% |                      ¦   «         x}| j         _        |cY S w xY wr@   )rq  rU   r    ro  )rO   rø   s     r9   re  zThreadLocalRegistry.__call__£  sO   € ð	Ø”=Ô&Ð&øÝð 	ð 	ð 	Ø(,¯ªÑ(9Ô(9Ð9ˆC�$”-Ô%ØˆJˆJˆJð	øøøs   ‚ Ž,=¼=r¢   c                ó,   — t          | j        d¦  «        S )NrU   )r  rq  rN   s    r9   rx  zThreadLocalRegistry.hasª  s   € Ý�t”} gÑ.Ô.Ð.r;   r�   rV   c                ó   — || j         _        d S r@   )rq  rU   rz  s     r9   r.   zThreadLocalRegistry.set­  s   € Ø!ˆŒÔÐÐr;   c                ó8   — 	 | j         `d S # t          $ r Y d S w xY wr@   )rq  rU   r    rN   s    r9   rÁ   zThreadLocalRegistry.clear°  s7   € ð	Ø”Ð#Ð#Ð#øÝð 	ð 	ð 	ØˆDˆDð	øøøs   ‚ ‹
˜N)ro  rr  r|  r}  r~  rÄ   )	r`   ra   rb   rc   rr   re  rx  r.   rÁ   rd   r;   r9   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   TFrd   )ÚsequenceÚtargetÚcrÙ   s       r9   Ú	has_dupesr‹  ·  s@   € ð 	
€AØð ð ˆØ�6ˆ>ˆ>Ø�‰FˆAØ�1ŠuˆuØ�t�tøØˆ5r;   )r)   r*   r+   r*   r,   r*   )r<   r=   r,   r>   r@   )r  r   r,   r*   )r  r   r°   r  r,   r*   )r  r   r,   r'  )r  r/  r,   ry   )Xrc   Ú
__future__r   Úcollections.abcÚabcr  r]  r?  r  rS  r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   rÝ   Ú_has_cyr   r   r   ÚTYPE_CHECKINGÚ_py_collectionsr   r   r   r   r   r    Ú$sqlalchemy.cyextension.immutabledictÚ"sqlalchemy.cyextension.collectionsr!   r#   r$   r%   Ú	frozensetr'   rÆ   r(   r:   rC   rA   rE   re   rf   rh   rÉ   r¨   rÐ   rR   rË   Úsort_dictionaryrÒ   ré   rñ   rý   r.   r)  Úcolumn_dictÚordered_column_setr  r  r  r#  r&  r*  r.  r1  ÚMutableMappingr4  rc  rj  rm  r€  r‹  rd   r;   r9   ú<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˜ÐÑÔ€ðVð Vð Vð Vð V�˜”ñ Vô Vð Vðr1ð 1ð 1ð 1ð 1˜
 2œñ 1ô 1ð 1ðð ð ð ð Ð*¨J°r¬Nñ ô ð ðð ð ð ð €Ø*€ðð ð ð ð �8˜B”<ñ ô ð ðDð ð ð ð ˜ñ ô ð ðð ð ð ð �4˜˜S˜”>ñ ô ð ð ð ð ð ð �t˜C ˜H”~ñ ô ð ð( €
Ø€ØÐ ð"ð "ð "ð "ð "�W˜R”[ñ "ô "ð "ðJ&ð &ð &ð &ð
ð 
ð 
ð 
ð 
ðHð Hð Hðð ð ðð ð ð ðð ð ð ð
ð 
ð 
ð 
ðh"ð h"ð h"ð h"ð h"ˆvÔ$ S¨# XÔ.ñ h"ô h"ð h"ðVð ð ð ð �h˜u”oñ ô ð ð
ð ð ð ð �Xñ ô ð ð
=ð =ð =ð =ð =�W˜R”[ñ =ô =ð =ð@ð ð ð ð ˜.¨Ô,ñ ô ð ð<ð ð ð ð r;   