§
    eŠtjYh  ã                  ó.  — U d Z ddlmZ ddlmZ ddlm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 erEd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/ dLd'„Z0dMd)„Z1n  ej2        d*¦  «        Z0 ej2        d+¦  «        Z1ee
         Z3e4Z5ee5d,d-f         Z6ee6d.f         Z7ed,         Z8eed-e4f                  Z9 ej:        e;¦  «        Z<dNd0„Z=d1Z>d2e?d3<   d4Z@ G d5„ d$e¦  «        ZA G d6„ d7eA¦  «        ZB G d8„ d9eB¦  «        ZC eC¦   «         eA_D         G d:„ d;ejE        ee4¦  «        ZF G d<„ d=eA¦  «        ZG G d>„ d?eA¦  «        ZH G d@„ dAeB¦  «        ZI G dB„ dCeI¦  «        ZJ G dD„ dEee
e
f         ¦  «        ZK G dF„ dGeI¦  «        ZLer
dMdH„ZMdOdJ„ZNdS  ej2        d+¦  «        ZM ej2        dK¦  «        ZNdS )Pz>Path tracking utilities, representing mapper graph traversals.é    )Úannotations)Úreduce)ÚchainN)ÚAny)Úcast)ÚDict)ÚIterator)ÚList)ÚOptional)Úoverload)ÚSequence)ÚTuple)ÚTYPE_CHECKING)ÚUnioné   )Úbase)Úinsp_is_mapper_propertyé   )Úexc)Úutil)Úvisitors)ÚHasCacheKey)Ú_InternalEntityType)ÚStrategizedProperty)ÚMapper)ÚRelationshipProperty)ÚAliasedInsp)Ú_CacheKeyTraversalType)ÚBindParameter)Úanon_map)Ú_LiteralStar)Ú	TypeGuardÚpathÚPathRegistryÚreturnúTypeGuard[RootRegistry]c                ó   — d S ©N© ©r#   s    úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/orm/path_registry.pyÚis_rootr,   .   ó   € € € ó    ú!TypeGuard[AbstractEntityRegistry]c                ó   — d S r(   r)   r*   s    r+   Ú	is_entityr1   0   r-   r.   r,   r1   ú_InternalEntityType[Any]úStrategizedProperty[Any].Ú_SerializedPathc                ó6   — t                                | ¦  «        S r(   )r$   Údeserializer*   s    r+   Ú_unreduce_pathr7   N   s   € Ý×#Ò# DÑ)Ô)Ð)r.   Ú*r!   Ú_WILDCARD_TOKENÚ_sa_defaultc                  ó‚  — e Zd ZU dZdZdZdZdZdZdZ	de
d<   de
d<   de
d<   d	e
d
<   de
d<   dej        j        fgZde
d<   dOd„ZdOd„ZedPd„¦   «         ZdQd„ZdRd„ZdRd „Z	 dSdTd#„ZdUd$„ZdUd%„ZedVd)„¦   «         ZedWd+„¦   «         ZedXd-„¦   «         ZedYd/„¦   «         ZedZd2„¦   «         Zd[d5„ZedUd6„¦   «         Zd\d8„Zd]d;„Zd^d<„Zd_d=„Ze d`d?„¦   «         Z!e dad@„¦   «         Z"dbdA„Z#e dcdB„¦   «         Z$ee dddD„¦   «         ¦   «         Z%ee dedG„¦   «         ¦   «         Z%e dfdH„¦   «         Z%e dgdJ„¦   «         Z&dhdK„Z'didM„Z(didN„Z)d!S )jr$   aÜ  Represent query load paths and registry functions.

    Basically represents structures like:

    (<User mapper>, "orders", <Order mapper>, "items", <Item mapper>)

    These structures are generated by things like
    query options (joinedload(), subqueryload(), etc.) and are
    used to compose keys stored in the query._attributes dictionary
    for various options.

    They are then re-composed at query compile/result row time as
    the query is formed and as rows are fetched, where they again
    serve to compose keys to look up options in the context.attributes
    dictionary, which is copied from query._attributes.

    The path structure has a limited amount of caching, where each
    "root" ultimately pulls from a fixed registry associated with
    the first mapper, that also contains elements for each of its
    property keys.  However paths longer than two elements, which
    are the exception rather than the rule, are generated on an
    as-needed basis.

    r)   FÚboolÚis_unnaturalÚ_PathRepresentationr#   Únatural_pathzOptional[PathRegistry]ÚparentÚRootRegistryÚrootr   Ú_cache_key_traversalÚotherr   r%   c                ó–   — 	 |d uo| j         |j        k    S # t          $ r( t          j        dt          |¦  «        z  ¦  «         Y dS w xY w)Nú1Comparison of PathRegistry to %r is not supportedF©r#   Ú_path_for_compareÚAttributeErrorr   ÚwarnÚtype©ÚselfrD   s     r+   Ú__eq__zPathRegistry.__eq__ƒ   sj   € ð	Ø Ð$ÐM¨¬°eÔ6MÒ)MÐMøÝð 	ð 	ð 	ÝŒIØCÝ˜‘;”;ñ ñô ð ð �5�5ð	øøøó   ‚ –.AÁAc                ó–   — 	 |d u p| j         |j        k    S # t          $ r( t          j        dt          |¦  «        z  ¦  «         Y dS w xY w)NrF   TrG   rL   s     r+   Ú__ne__zPathRegistry.__ne__�   si   € ð	Ø˜D�=ÐH D¤I°Ô1HÒ$HÐHøÝð 	ð 	ð 	ÝŒIØCÝ˜‘;”;ñ ñô ð ð �4�4ð	øøørO   úOptional[_PathRepresentation]c                ó   — | j         S r(   r*   ©rM   s    r+   rH   zPathRegistry._path_for_compare—   s
   € àŒyÐr.   ÚindexÚintr2   c                ó   — | j         |         S r(   r*   )rM   rU   s     r+   Úodd_elementzPathRegistry.odd_element›   s   € ØŒy˜ÔÐr.   Ú
attributesúDict[Any, Any]ÚkeyÚvalueÚNonec                óX   — t                                d|| |¦  «         |||| j        f<   d S )Nzset '%s' on path '%s' to '%s')ÚlogÚdebugr?   ©rM   rY   r[   r\   s       r+   ÚsetzPathRegistry.setž   s3   € Ý�	Š	Ð1°3¸¸eÑDÔDÐDØ/4ˆ
�C˜Ô*Ð+Ñ,Ð,Ð,r.   c                óz   — t                                d|| |¦  «         |                     || j        f|¦  «         d S )Nz$setdefault '%s' on path '%s' to '%s')r_   r`   Ú
setdefaultr?   ra   s       r+   rd   zPathRegistry.setdefault¢   sA   € õ 	�	Š	Ð8¸#¸tÀUÑKÔKÐKØ×Ò˜s DÔ$5Ð6¸Ñ>Ô>Ð>Ð>Ð>r.   NúOptional[Any]c                ó0   — || j         f}||v r||         S |S r(   )r?   ra   s       r+   ÚgetzPathRegistry.get¨   s+   € ð �DÔ%Ð&ˆØ�*ÐÐØ˜c”?Ð"àˆLr.   c                ó*   — t          | j        ¦  «        S r(   ©Úlenr#   rT   s    r+   Ú__len__zPathRegistry.__len__±   s   € Ý�4”9‰~Œ~Ðr.   c                ó    — t          | ¦  «        S r(   )ÚidrT   s    r+   Ú__hash__zPathRegistry.__hash__´   s   € Ý�$‰xŒxˆr.   ÚentityÚ_StrPathTokenÚTokenRegistryc                ó   — d S r(   r)   ©rM   ro   s     r+   Ú__getitem__zPathRegistry.__getitem__·   s   € ØCFÀ3r.   Ú_PathElementTypec                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__º   s   € Ø<?¸Cr.   Úslicec                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__½   s   € ØADÀr.   ÚAbstractEntityRegistryc                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__À   s	   € ð "% r.   r3   ÚPropRegistryc                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__Å   s	   € ð �sr.   úTUnion[_StrPathToken, int, slice, _InternalEntityType[Any], StrategizedProperty[Any]]úaUnion[TokenRegistry, _PathElementType, _PathRepresentation, PropRegistry, AbstractEntityRegistry]c                ó   — t          ¦   «         ‚r(   )ÚNotImplementedErrorrs   s     r+   rt   zPathRegistry.__getitem__Ê   s   € õ  "Ñ#Ô#Ð#r.   c                ó*   — t          | j        ¦  «        S r(   ri   rT   s    r+   ÚlengthzPathRegistry.lengthÝ   s   € å�4”9‰~Œ~Ðr.   úOIterator[Tuple[_InternalEntityType[Any], Union[str, StrategizedProperty[Any]]]]c              #  óÔ   K  — t          t          | j        ¦  «        }t          t          |¦  «        }t	          dt          |¦  «        d¦  «        D ]}||         ||dz            fV — Œd S )Nr   r   r   )r   Ú_OddPathRepresentationr#   Ú_EvenPathRepresentationÚrangerj   )rM   Úodd_pathÚ	even_pathÚis       r+   ÚpairszPathRegistry.pairsá   sv   è è € õ
 Õ.°´	Ñ:Ô:ˆÝÕ0°(Ñ;Ô;ˆ	Ý�q�#˜h™-œ-¨Ñ+Ô+ð 	0ð 	0ˆAØ˜1”+˜y¨¨Q©Ô/Ð/Ð/Ð/Ð/Ð/ð	0ð 	0r.   ÚmapperúMapper[Any]c                óÐ   ‡— t          t          | j        ¦  «        Šˆfd„t          dt	          ‰¦  «        d¦  «        D ¦   «         D ]}|j                             |¦  «        r dS Œ dS )Nc                ó    •— g | ]
}‰|         ‘ŒS r)   r)   ©Ú.0rŠ   Ú_m_paths     €r+   ú
<listcomp>z0PathRegistry.contains_mapper.<locals>.<listcomp>í   s   ø€ ÐJÐJÐJ¨1˜G AœJÐJÐJÐJr.   r   r   TF)r   r…   r#   r‡   rj   rŒ   Úisa)rM   rŒ   Úpath_mapperr’   s      @r+   Úcontains_mapperzPathRegistry.contains_mapperë   sv   ø€ ÝÕ-¨t¬yÑ9Ô9ˆØJÐJÐJÐJµ°a½¸W¹¼ÀqÑ0IÔ0IÐJÑJÔJð 	ð 	ˆKØÔ!×%Ò% fÑ-Ô-ð Ø�t�tðð �5r.   c                ó   — || j         f|v S r(   r*   )rM   rY   r[   s      r+   ÚcontainszPathRegistry.containsó   s   € Ø�T”YÐ :Ð-Ð-r.   c                ó:   — t           |                      ¦   «         ffS r(   )r7   Ú	serializerT   s    r+   Ú
__reduce__zPathRegistry.__reduce__ö   s   € Ý §¢Ñ 0Ô 0Ð2Ð2Ð2r.   r4   c                ó–  ‡‡— t          t          |¦  «        Št          t          |¦  «        Št          t	          t          d„ ˆfd„t          dt          ‰¦  «        d¦  «        D ¦   «         D ¦   «         ¦  «        t          d„ ˆfd„t          dt          ‰¦  «        d¦  «        D ¦   «         D ¦   «         ¦  «        dz   ¦  «        ¦  «        S )	Nc              3  ó^   K  — | ](}|j         s|j        r|j        nt          |¦  «        V — Œ)d S r(   )Ú	is_mapperÚis_aliased_classÚclass_Ústr)r‘   Úms     r+   ú	<genexpr>z/PathRegistry._serialize_path.<locals>.<genexpr>   sQ   è è € ð ð àð "#¤ÐO°Ô0BÐO�A”H�HÍÈQÉÌðð ð ð ð ð r.   c                ó    •— g | ]
}‰|         ‘ŒS r)   r)   r�   s     €r+   r“   z0PathRegistry._serialize_path.<locals>.<listcomp>  ó   ø€ ÐLÐLÐL¨Q˜g aœjÐLÐLÐLr.   r   r   c              3  ó`   K  — | ])}t          |¦  «        r|j        nt          |¦  «        V — Œ*d S r(   )r   r[   r¡   )r‘   Úps     r+   r£   z/PathRegistry._serialize_path.<locals>.<genexpr>  sO   è è € ð ð àõ 5°QÑ7Ô7ÐC�A”E�E½SÀ¹V¼Vðð ð ð ð ð r.   c                ó    •— g | ]
}‰|         ‘ŒS r)   r)   )r‘   rŠ   Ú_p_paths     €r+   r“   z0PathRegistry._serialize_path.<locals>.<listcomp>  r¥   r.   r   r(   )r   r…   r†   ÚlistÚzipÚtupler‡   rj   )Úclsr#   r’   r©   s     @@r+   Ú_serialize_pathzPathRegistry._serialize_pathù   sí   øø€ åÕ-¨tÑ4Ô4ˆÝÕ.°Ñ5Ô5ˆåÝÝð ð àLÐLÐLÐLµ%¸½3¸w¹<¼<ÈÑ2KÔ2KÐLÑLÔLðñ ô ñ ô õ ð ð àLÐLÐLÐLµ%¸½3¸w¹<¼<ÈÑ2KÔ2KÐLÑLÔLðñ ô ñ ô ð ñ	ñ
ô 
ñ
ô 
ð 	
r.   c                óˆ   ‡‡— d
d„Šdd„Št          t          ˆˆfd„|D ¦   «         Ž ¦  «        }|r|d         €
|d	d…         }|S )NÚmclsr   r%   c                ón   — | t           j        vrt          j        | d¬¦  «        nt           j        |          S ©NT)Ú	configure)Ú	PathTokenÚ_internÚorm_baseÚ_inspect_mapped_class)r°   s    r+   Ú_deserialize_mapper_tokenzAPathRegistry._deserialize_path.<locals>._deserialize_mapper_token  s:   € ð
 �yÔ0Ð0Ð0õ Ô.¨t¸tÐDÑDÔDÐDåÔ& tÔ,ðr.   r[   c                ó˜   — |€d S |t           j        v rt           j        |         S t          j        | d¬¦  «        }|€J ‚|j        |         S r²   )r´   rµ   r¶   r·   Úattrs)r°   r[   Úmps      r+   Ú_deserialize_key_tokenz>PathRegistry._deserialize_path.<locals>._deserialize_key_token  sR   € Øˆ{Ø�tØ�	Ô)Ð)Ð)Ý Ô(¨Ô-Ð-åÔ3°DÀDÐIÑIÔI�Ø�~�~�~Ø”x ”}Ð$r.   c                óD   •— g | ]\  }} ‰|¦  «         ‰||¦  «        f‘ŒS r)   r)   )r‘   r°   r[   r¼   r¸   s      €€r+   r“   z2PathRegistry._deserialize_path.<locals>.<listcomp>#  sO   ø€ ð ð ð ñ
 "˜˜cð 2Ð1°$Ñ7Ô7Ø.Ð.¨t°SÑ9Ô9ððð ð r.   éÿÿÿÿr   )r°   r   r%   r   )r°   r   r[   r   r%   r   )r¬   r   )r­   r#   r§   r¼   r¸   s      @@r+   Ú_deserialize_pathzPathRegistry._deserialize_path  s–   øø€ ð	ð 	ð 	ð 	ð	%ð 	%ð 	%ð 	%õ Ýðð ð ð ð ð
 &*ðñ ô ðñ

ô 

ˆð ð 	��2”�Ø�!�B�$”ˆAØˆr.   c                ó:   — | j         }|                      |¦  «        S r(   )r#   r®   )rM   r#   s     r+   rš   zPathRegistry.serialize0  s   € ØŒyˆØ×#Ò# DÑ)Ô)Ð)r.   c                ó^   — |€J ‚|                       |¦  «        }|                      |¦  «        S r(   )r¿   Úcoerce)r­   r#   r§   s      r+   r6   zPathRegistry.deserialize4  s1   € àÐÐÐØ×!Ò! $Ñ'Ô'ˆØ�zŠz˜!‰}Œ}Ðr.   ÚCachingEntityRegistryc                ó   — d S r(   r)   ©r­   rŒ   s     r+   Ú
per_mapperzPathRegistry.per_mapper:  s   € àGJÀsr.   úAliasedInsp[Any]ÚSlotsEntityRegistryc                ó   — d S r(   r)   rÅ   s     r+   rÆ   zPathRegistry.per_mapper>  s   € àJMÈ#r.   c                ód   — |j         rt          | j        |¦  «        S t          | j        |¦  «        S r(   )rž   rÃ   rB   rÈ   rÅ   s     r+   rÆ   zPathRegistry.per_mapperB  s3   € ð Ôð 	9Ý(¨¬°6Ñ:Ô:Ð:å& s¤x°Ñ8Ô8Ð8r.   Úrawc                ó6   — dd„}t          ||| j        ¦  «        S )NÚprevr$   Únext_ru   r%   c                ó   — | |         S r(   r)   ©rÍ   rÎ   s     r+   Ú_redz!PathRegistry.coerce.<locals>._redM  ó   € Ø˜”;Ðr.   ©rÍ   r$   rÎ   ru   r%   r$   )r   rB   )r­   rË   rÑ   s      r+   rÂ   zPathRegistry.coerceK  s,   € ð	ð 	ð 	ð 	õ �d˜C ¤Ñ*Ô*Ð*r.   c                ó6   — dd„}t          ||j        | ¦  «        S )NrÍ   r$   rÎ   ru   r%   c                ó   — | |         S r(   r)   rÐ   s     r+   rÑ   z"PathRegistry.__add__.<locals>._redT  rÒ   r.   rÓ   )r   r#   )rM   rD   rÑ   s      r+   Ú__add__zPathRegistry.__add__S  s,   € ð	ð 	ð 	ð 	õ �d˜EœJ¨Ñ-Ô-Ð-r.   r¡   c                óR   — dd                      d„ | j        D ¦   «         ¦  «        › d�S )Nz	ORM Path[z -> c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r(   ©r¡   )r‘   Úelems     r+   r£   z'PathRegistry.__str__.<locals>.<genexpr>Z  s(   è è € Ð&GÐ&G°T¥s¨4¡y¤yÐ&GÐ&GÐ&GÐ&GÐ&GÐ&Gr.   ú])Újoinr#   rT   s    r+   Ú__str__zPathRegistry.__str__Y  s0   € ØJ˜6Ÿ;š;Ð&GÐ&G¸T¼YÐ&GÑ&GÔ&GÑGÔGÐJÐJÐJÐJr.   c                ó0   — | j         j        › d| j        ›d�S )Nú(ú))Ú	__class__Ú__name__r#   rT   s    r+   Ú__repr__zPathRegistry.__repr__\  s    € Ø”.Ô)Ð:Ð:¨D¬IÐ:Ð:Ð:Ð:r.   )rD   r   r%   r<   ©r%   rR   )rU   rV   r%   r2   )rY   rZ   r[   r   r\   r   r%   r]   r(   )rY   rZ   r[   r   r\   re   r%   r   )r%   rV   )ro   rp   r%   rq   )ro   rV   r%   ru   )ro   rw   r%   r>   )ro   r2   r%   ry   )ro   r3   r%   r{   )ro   r}   r%   r~   )r%   rƒ   )rŒ   r�   r%   r<   )rY   rZ   r[   r   r%   r<   )r%   r   )r#   r>   r%   r4   )r#   r4   r%   r>   )r%   r4   ©r#   r4   r%   r$   )rŒ   r�   r%   rÃ   )rŒ   rÇ   r%   rÈ   )rŒ   r2   r%   ry   )rË   r>   r%   r$   )rD   r$   r%   r$   )r%   r¡   )*râ   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Úis_tokenr,   Ú
has_entityÚis_propertyr1   Ú__annotations__r   ÚExtendedInternalTraversalÚdp_has_cache_key_listrC   rN   rQ   ÚpropertyrH   rX   rb   rd   rg   rk   rn   r   rt   r‚   r‹   r–   r˜   r›   Úclassmethodr®   r¿   rš   r6   rÆ   rÂ   rÖ   rÝ   rã   r)   r.   r+   r$   r$   V   s¯  € € € € € € ðð ð2 €Ià€HØ€GØ€JØ€KØ€IàÐÐÑàÐÐÑØ%Ð%Ð%Ñ%Ø"Ð"Ð"Ñ"ØÐÐÑð 
�Ô3ÔIÐJð4Ðð ð ð ñ ðð ð ð ðð ð ð ð ðð ð ñ „Xðð ð  ð  ð  ð5ð 5ð 5ð 5ð?ð ?ð ?ð ?ð LPðð ð ð ð ðð ð ð ðð ð ð ð ØFÐFÐFñ „XØFàØ?Ð?Ð?ñ „XØ?àØDÐDÐDñ „XØDàð%ð %ð %ñ „Xð%ð ðð ð ñ „Xðð$ð $ð $ð $ð& ðð ð ñ „Xðð0ð 0ð 0ð 0ðð ð ð ð.ð .ð .ð .ð3ð 3ð 3ð 3ð ð
ð 
ð 
ñ „[ð
ð$ ð!ð !ð !ñ „[ð!ðF*ð *ð *ð *ð ðð ð ñ „[ðð
 ØØJÐJÐJñ „[ñ „XàJàØØMÐMÐMñ „[ñ „XàMàð9ð 9ð 9ñ „[ð9ð ð+ð +ð +ñ „[ð+ð.ð .ð .ð .ðKð Kð Kð Kð;ð ;ð ;ð ;ð ;ð ;r.   c                  ó0   — e Zd ZU dZded<   ded<   dd	„Zd
S )ÚCreatesTokenr)   r<   rŸ   r,   Útokenrp   r%   rq   c                óî   — |                      dt          › �¦  «        rt          | |¦  «        S |                      dt          › �¦  «        rt          | j        |¦  «        S t          j        d|› �¦  «        ‚)Nú:zinvalid token: )Úendswithr9   rq   Ú_DEFAULT_TOKENrB   r   ÚArgumentError)rM   rô   s     r+   rô   zCreatesToken.tokenf  sx   € Ø�>Š>Ð/�oÐ/Ð/Ñ0Ô0ð 	?Ý   uÑ-Ô-Ð-Ø�^Š^Ð0¥Ð0Ð0Ñ1Ô1ð 	?Ý  ¤¨EÑ2Ô2Ð2åÔ#Ð$=°eÐ$=Ð$=Ñ>Ô>Ð>r.   N)rô   rp   r%   rq   )râ   ræ   rç   ré   rí   rô   r)   r.   r+   ró   ró   `  sD   € € € € € € Ø€IàÐÐÑØ€M€M�Mð?ð ?ð ?ð ?ð ?ð ?r.   ró   c                  óN   — e Zd ZdZdZdZdxZZdZdZ	dZ
dZdd	„Zdd
„ZeseZdS dS )rA   zXRoot registry, defers to mappers so that
    paths are maintained per-root-mapper.

    r)   TFro   r   r%   ú,Union[TokenRegistry, AbstractEntityRegistry]c                óê   — |t           j        v r>t          rt          |t          ¦  «        sJ ‚t          | t           j        |         ¦  «        S 	 |j        S # t          $ r t          d|› �¦  «        ‚w xY w)Nz/invalid argument for RootRegistry.__getitem__: )	r´   rµ   r   Ú
isinstancerp   rq   Ú_path_registryrI   Ú
IndexErrorrs   s     r+   Ú_getitemzRootRegistry._getitem  sŽ   € ð •YÔ&Ð&Ð&Ýð 9Ý! &­-Ñ8Ô8Ð8Ð8Ð8Ý  ¥yÔ'8¸Ô'@ÑAÔAÐAðØÔ,Ð,øÝ!ð ð ð Ý ØNÀfÐNÐNñô ð ðøøøs   ÁA ÁA2c                ó   — | S r(   r)   rT   s    r+   Ú_truncate_recursivez RootRegistry._truncate_recursiveŽ  s   € Øˆr.   N)ro   r   r%   rû   )r%   rA   )râ   ræ   rç   rè   ré   Úinherit_cacher#   r?   rë   rŸ   r,   r=   r   r  r   rt   r)   r.   r+   rA   rA   o  s„   € € € € € ðð ð
 €Ià€MàÐ€Dˆ<Ø€JØÐØ€GØ€Lðð ð ð ðð ð ð ð ð Øˆˆˆðð r.   rA   c                  óZ   — e Zd ZU dZi Zded<   dd	„Zedd„¦   «         Ze	dd„¦   «         Z
dS )r´   zcacheable string tokenzDict[str, PathToken]rµ   r    Ú
bindparamsúList[BindParameter[Any]]r%   úTuple[Any, ...]c                ó"   — t          | ¦  «        fS r(   rÙ   )rM   r    r  s      r+   Ú_gen_cache_keyzPathToken._gen_cache_key�  s   € õ �D‘	”	ˆ|Ðr.   rR   c                ó   — d S r(   r)   rT   s    r+   rH   zPathToken._path_for_compare¢  s   € àˆtr.   Ústrvaluer¡   c                ód   — || j         v r| j         |         S t          |¦  «        x| j         |<   }|S r(   )rµ   r´   )r­   r  Úresults      r+   ÚinternzPathToken.intern¦  s:   € à�s”{Ð"Ð"Ø”;˜xÔ(Ð(å-6°xÑ-@Ô-@Ð@ˆCŒK˜Ñ! FØˆMr.   N)r    r    r  r  r%   r  rä   )r  r¡   r%   r´   )râ   ræ   rç   rè   rµ   rí   r	  rð   rH   rñ   r  r)   r.   r+   r´   r´   ˜  s�   € € € € € € Ø Ð à$&€GÐ&Ð&Ð&Ñ&ðð ð ð ð
 ðð ð ñ „Xðð ðð ð ñ „[ðð ð r.   r´   c                  ó`   — e Zd ZU dZdZded<   ded<   dd„ZdZdZdd„Z	dd„Z
dd„ZeseZdS dS )rq   )rô   r@   r#   r?   Trp   rô   ró   r@   c                ó–   — t                                |¦  «        }|| _        || _        |j        |fz   | _        |j        |fz   | _        d S r(   )r´   r  rô   r@   r#   r?   )rM   r@   rô   s      r+   Ú__init__zTokenRegistry.__init__·  sK   € Ý× Ò  Ñ'Ô'ˆàˆŒ
ØˆŒØ”K 5 (Ñ*ˆŒ	Ø"Ô/°5°(Ñ:ˆÔÐÐr.   Fr%   úIterator[PathRegistry]c              #  óà  K  — | j         }t          |¦  «        r| V — d S t          rt          |t          ¦  «        sJ ‚|j        s@|j                             ¦   «         D ]$}t          |j         |         | j	        ¦  «        V — Œ%d S |j        r_t          d|j        ¦  «        j        rE| V — t          d|j        ¦  «        j        D ]$}t          |j         |         | j	        ¦  «        V — Œ%d S | V — d S ©NrÇ   )r@   r,   r   rý   ry   rŸ   rŒ   Úiterate_to_rootrq   rô   r   ro   Ú_is_with_polymorphicÚ_with_polymorphic_entities©rM   r@   Úmp_entÚents       r+   Úgenerate_for_superclassesz'TokenRegistry.generate_for_superclassesÃ  s;  è è € à”ˆÝ�6‰?Œ?ð 	ØˆJˆJˆJØˆFåð 	>Ý˜fÕ&<Ñ=Ô=Ð=Ð=Ð=ØÔ&ð 	Ø œ-×7Ò7Ñ9Ô9ð Gð G�Ý# F¤M°&Ô$9¸4¼:ÑFÔFÐFÐFÐFÐFðGð Gð Ô#ð	åØ"Ø”ñô ô #ð	ð ˆJˆJˆJÝØ" F¤Mñô ä(ðDð D�õ $ F¤M°#Ô$6¸¼
ÑCÔCÐCÐCÐCÐCðDð Dð
 ˆJˆJˆJˆJˆJr.   úIterator[_PathRepresentation]c              #  ó   K  — | j         }t          |¦  «        r| j        V — d S t          rt	          |t
          ¦  «        sJ ‚|j                             ¦   «         D ])}t          |j         |         | j	        ¦  «        j        V — Œ*|j
        rit          d|j        ¦  «        j        rO| j        V — t          d|j        ¦  «        j        D ])}t          |j         |         | j	        ¦  «        j        V — Œ*d S | j        V — d S r  )r@   r,   r?   r   rý   ry   rŒ   r  rq   rô   rŸ   r   ro   r  r  r  s       r+   Ú"_generate_natural_for_superclassesz0TokenRegistry._generate_natural_for_superclassesÞ  sB  è è € ð ”ˆÝ�6‰?Œ?ð 	ØÔ#Ð#Ð#Ð#ØˆFåð 	>Ý˜fÕ&<Ñ=Ô=Ð=Ð=Ð=Ø”m×3Ò3Ñ5Ô5ð 	Pð 	PˆFÝ ¤¨fÔ 5°t´zÑBÔBÔOÐOÐOÐOÐOàÔ#ð	$åØ"Ø”ñô ô #ð	$ð Ô#Ð#Ð#Ð#ÝØ" F¤Mñô ä(ðð �õ " &¤-°Ô"4°d´jÑAÔAÔNðð ð ð ðð ð Ô#Ð#Ð#Ð#Ð#Ð#r.   ro   r   c                ód   — 	 | j         |         S # t          $ r}t          |› ¦  «        |‚d }~ww xY wr(   )r#   Ú	TypeErrorrÿ   )rM   ro   Úerrs      r+   r   zTokenRegistry._getitemû  sE   € ð	3Ø”9˜VÔ$Ð$øÝð 	3ð 	3ð 	3Ý ˜[Ñ)Ô)¨sÐ2øøøøð	3øøøs   ‚ �
/™*ª/N)r@   ró   rô   rp   )r%   r  )r%   r  ©ro   r   r%   r   )râ   ræ   rç   ré   r  rí   r  rë   rê   r  r  r   r   rt   r)   r.   r+   rq   rq   ¯  s§   € € € € € € Ø;€Ià€MàÐÐÑØÐÐÑð;ð ;ð ;ð ;ð €Jà€Hðð ð ð ð6$ð $ð $ð $ð:3ð 3ð 3ð 3ð ð Øˆˆˆðð r.   rq   c                  óv   — e Zd ZU dZdZdZded<   ded<   ded<   dd„Zdd„Ze	dd„¦   «         Z
dd„ZeseZdS dS )r{   )Úpropr@   r#   r?   rë   ro   rŒ   Ú_wildcard_path_loader_keyÚ_default_path_loader_keyÚ_loader_keyr=   Tr3   r$  zOptional[Mapper[Any]]rŒ   z"Optional[_InternalEntityType[Any]]ro   r@   ry   c                óÄ  — t          d|d         ¦  «        }|}|j        j        pt          |j        j        ¦  «        | _        |j        r|j        r|j        |j                 x}}nº|j        rf|j        r_|j        |j        v rQ|d          	                    |j        ¦  «        }|j        |         }|j        r|j        |j                 }d| _        nP|}nM|j        rF|j        r?|j        |j        ur1|j         
                    |j        ¦  «        r|j        |j                 }|| _        || _        |j        |fz   | _        |j        |fz   | _        |j        | _        |j        r7t"          rt%          |t&          ¦  «        sJ ‚|j        | _        |j        | _        nd | _        d | _        d|j        | j        j        z   f| _        | j        j        | _        d| j        f| _        d S )Nr2   r¾   TÚloader)r   r@   r=   r<   rŒ   ÚinheritsrŸ   Ú_use_mapper_pathÚwith_polymorphic_mappersÚ_entity_for_mapperr”   r$  r#   r?   Ú_links_to_entityrë   Ú_is_relationshipr   rý   r   ro   Ú_wildcard_tokenr%  r&  r'  )rM   r@   r$  ÚinspÚnatural_parentÚsubclass_entitys         r+   r  zPropRegistry.__init__  s  € õ Ð.°°r´
Ñ;Ô;ˆØ17ˆð #œMÔ6ð 
½$ØŒMÔ"ñ;
ô ;
ˆÔð Ô$ð 4	8¨Ô(=ð 4	8Ø&,¤m°D´KÔ&@Ð@ˆF�^�^àÔ!ð2	8àÔ-ð2	8ð ”˜tÔ<Ð<Ð<à8>¸r¼
×8UÒ8UÐVZÔVaÑ8bÔ8bˆOØ”] ?Ô3ˆFð@ Œ}ð (Ø!'¤¨Ô/EÔ!F�Ø$(�Ô!Ð!à!'��àÔ!ð	8àÔ%ð	8ð ”Ø”;ðð à”—’ ¤Ñ,Ô,ðð $œ]¨4¬;Ô7ˆNàˆŒ	ØˆŒØ”K 4 'Ñ)ˆŒ	Ø*Ô7¸4¸'ÑAˆÔàÔ/ˆŒØÔ ð 	Ýð >Ý! $Õ(<Ñ=Ô=Ð=Ð=Ð=Øœ+ˆDŒKØœ+ˆDŒKˆKàˆDŒKØˆDŒKð ØÔ $¤)Ô";Ñ;ð*
ˆÔ&ð )-¬	Ô(JˆÔ%Ø$ dÔ&7Ð8ˆÔÐÐr.   r%   c                óÎ   — d }t          t          | j        d d…         ¦  «        ¦  «        D ]\  }}|| j        u r|}Œ|€| S |                      | j        d|dz    …         ¦  «        S )Nr¾   r   r   )Ú	enumerateÚreversedr#   r$  rÂ   )rM   ÚearliestrŠ   rô   s       r+   r  z PropRegistry._truncate_recursivet  sv   € ØˆÝ!¥(¨4¬9°S°b°S¬>Ñ":Ô":Ñ;Ô;ð 	ð 	‰HˆAˆuØ˜œ	Ð!Ð!Ø�øàÐØˆKà—;’;˜tœy¨¨x¸!©|¨_Ð)<Ô=Ñ>Ô>Ð>r.   c                ó.   — | j         €J ‚| | j                  S r(   )ro   rT   s    r+   Úentity_pathzPropRegistry.entity_path  s   € àŒ{Ð&Ð&Ð&Ø�D”KÔ Ð r.   ú+Union[int, slice, _InternalEntityType[Any]]úDUnion[AbstractEntityRegistry, _PathElementType, _PathRepresentation]c                ót   — t          |t          t          f¦  «        r| j        |         S t	          | |¦  «        S r(   )rý   rV   rw   r#   rÈ   rs   s     r+   r   zPropRegistry._getitem„  s7   € õ �f�s¥E˜lÑ+Ô+ð 	5Ø”9˜VÔ$Ð$å& t¨VÑ4Ô4Ð4r.   N)r@   ry   r$  r3   )r%   r{   ©r%   ry   )ro   r:  r%   r;  )râ   ræ   rç   ré   r  rì   rí   r  r  rð   r9  r   r   rt   r)   r.   r+   r{   r{     sÁ   € € € € € € ð€Ið €MØ€Kà"Ð"Ð"Ñ"Ø!Ð!Ð!Ñ!Ø.Ð.Ð.Ñ.ðX9ð X9ð X9ð X9ðt	?ð 	?ð 	?ð 	?ð ð!ð !ð !ñ „Xð!ð5ð 5ð 5ð 5ð ð Øˆˆˆðð r.   r{   c                  ó¸   — e Zd ZU dZdZdZded<   ded<   ded<   ded	<   dd
„Zdd„Ze	dd„¦   «         Z
e	dd„¦   «         Ze	dd„¦   «         Zdd„Zdd„ZeseZdS dS )ry   )r[   r@   rŸ   r#   ro   r?   Tú!Union[RootRegistry, PropRegistry]r@   r2   r[   ro   r<   rŸ   c                óœ  — || _         || _        |j        | _        || _        |j        |fz   | _        |j        r‡| j        s|j        ry|j        d         }|j                             |j        ¦  «        s|j                             |j        ¦  «        r|j        |j        fz   | _        d S |j        |j        fz   | _        d S | j        | _        d S )Nr¾   )	r[   r@   rŸ   ro   r#   r=   r?   rŒ   r”   )rM   r@   ro   Úparent_natural_entitys       r+   r  zAbstractEntityRegistry.__init__¢  sô   € ð
 ˆŒØˆŒØ &Ô 7ˆÔØˆŒØ”K 6 )Ñ+ˆŒ	ð$ Œ;ð  	*˜DÔ1ð  	*°VÔ5Hð  	*ð %+Ô$7¸Ô$;Ð!àŒ}× Ò Ø%Ô,ñô ð à&Ô-×1Ò1Ø”ñô ðð %+Ô$7¸6¼=Ð:JÑ$J�Ô!Ð!Ð!à$*Ô$7Ø)Ô0ð;ñ %�Ô!Ð!Ð!ð !%¤	ˆDÔÐÐr.   r%   c                óJ   — | j                              ¦   «         | j                 S r(   )r@   r  ro   rT   s    r+   r  z*AbstractEntityRegistry._truncate_recursiveß  s   € ØŒ{×.Ò.Ñ0Ô0°´Ô=Ð=r.   c                ó,   — |                       d¦  «        S )Nr   )rX   rT   s    r+   Úroot_entityz"AbstractEntityRegistry.root_entityâ  s   € à×Ò Ñ"Ô"Ð"r.   r$   c                ó   — | S r(   r)   rT   s    r+   r9  z"AbstractEntityRegistry.entity_pathæ  s   € àˆr.   r�   c                ó   — | j         j        S r(   )ro   rŒ   rT   s    r+   rŒ   zAbstractEntityRegistry.mapperê  s   € àŒ{Ô!Ð!r.   c                ó   — dS )NTr)   rT   s    r+   Ú__bool__zAbstractEntityRegistry.__bool__î  s   € Øˆtr.   r   ú:Union[_PathElementType, _PathRepresentation, PathRegistry]c                óÐ   — t          |t          t          f¦  «        r| j        |         S |t          j        v r t          | t          j        |         ¦  «        S t          | |¦  «        S r(   )rý   rV   rw   r#   r´   rµ   rq   r{   rs   s     r+   r   zAbstractEntityRegistry._getitemñ  s]   € õ �f�s¥E˜lÑ+Ô+ð 	.Ø”9˜VÔ$Ð$Ø•yÔ(Ð(Ð(Ý  ¥yÔ'8¸Ô'@ÑAÔAÐAå  fÑ-Ô-Ð-r.   N©r@   r?  ro   r2   r=  )r%   r2   )r%   r$   )r%   r�   )r%   r<   )ro   r   r%   rI  )râ   ræ   rç   ré   rë   r1   rí   r  r  rð   rD  r9  rŒ   rH  r   r   rt   r)   r.   r+   ry   ry   �  s  € € € € € € ð€Ið €JØ€Ià-Ð-Ð-Ñ-Ø!Ð!Ð!Ñ!Ø$Ð$Ð$Ñ$ØÐÐÑð;*ð ;*ð ;*ð ;*ðz>ð >ð >ð >ð ð#ð #ð #ñ „Xð#ð ðð ð ñ „Xðð ð"ð "ð "ñ „Xð"ðð ð ð ð.ð .ð .ð .ð ð Øˆˆˆðð r.   ry   c                  ó   — e Zd ZdZdS )rÈ   TN)râ   ræ   rç   r  r)   r.   r+   rÈ   rÈ   ÿ  s   € € € € € ð €M€M€Mr.   rÈ   c                  ó   — e Zd Zd
d„Zdd„Zd	S )Ú_ERDictÚregistryrÃ   c                ó   — || _         d S r(   )rO  )rM   rO  s     r+   r  z_ERDict.__init__  s   € Ø ˆŒˆˆr.   r[   r   r%   r{   c                ó:   — t          | j        |¦  «        x| |<   }|S r(   )r{   rO  )rM   r[   Úitems      r+   Ú__missing__z_ERDict.__missing__	  s!   € Ý'¨¬°sÑ;Ô;Ð;ˆˆS‰	�Dàˆr.   N)rO  rÃ   )r[   r   r%   r{   )râ   ræ   rç   r  rS  r)   r.   r+   rN  rN    s<   € € € € € ð!ð !ð !ð !ðð ð ð ð ð r.   rN  c                  óH   ‡ — e Zd ZdZdZdˆ fd„Zdd„Zdd„ZeseZ	ˆ xZ
S ˆ xZ
S )rÃ   )Ú_cacheTr@   r?  ro   r2   c                ót   •— t          ¦   «                              ||¦  «         t          | ¦  «        | _        d S r(   )Úsuperr  rN  rU  )rM   r@   ro   rá   s      €r+   r  zCachingEntityRegistry.__init__  s0   ø€ õ
 	‰Œ×Ò˜ Ñ(Ô(Ð(Ý˜d‘m”mˆŒˆˆr.   r[   r   Údefaultr%   c                ó8   — | j                              ||¦  «        S r(   )rU  Úpop)rM   r[   rX  s      r+   rZ  zCachingEntityRegistry.pop  s   € ØŒ{�Š˜s GÑ,Ô,Ð,r.   c                ó¸   — t          |t          t          f¦  «        r| j        |         S t          |t          ¦  «        rt          | |¦  «        S | j        |         S r(   )rý   rV   rw   r#   r´   rq   rU  rs   s     r+   r   zCachingEntityRegistry._getitem"  sT   € Ý�f�s¥E˜lÑ+Ô+ð 	'Ø”9˜VÔ$Ð$Ý˜¥	Ñ*Ô*ð 	'Ý   vÑ.Ô.Ð.à”;˜vÔ&Ð&r.   rK  )r[   r   rX  r   r%   r   r"  )râ   ræ   rç   ré   r  r  rZ  r   r   rt   Ú__classcell__)rá   s   @r+   rÃ   rÃ     sˆ   ø€ € € € € ð €Ià€Mð$ð $ð $ð $ð $ð $ð-ð -ð -ð -ð'ð 'ð 'ð 'ð ð Øˆˆˆˆˆðð ð ð r.   rÃ   c                ó   — d S r(   r)   r*   s    r+   Úpath_is_entityr^  0  s   € à,/¨Cr.   úTypeGuard[PropRegistry]c                ó   — d S r(   r)   r*   s    r+   Úpath_is_propertyra  4  r-   r.   rì   )r#   r$   r%   r&   )r#   r$   r%   r/   rå   )r#   r$   r%   r_  )Orè   Ú
__future__r   Ú	functoolsr   Ú	itertoolsr   ÚloggingÚoperatorÚtypingr   r   r   r	   r
   r   r   r   r   r   r   Ú r   r¶   Ú_typingr   r   r   Úsqlr   Úsql.cache_keyr   r   Ú
interfacesr   rŒ   r   Úrelationshipsr   r   r   Úsql.elementsr   Úsql.visitorsr    Úutil.typingr!   r"   r,   r1   Ú
attrgetterr4   r¡   rp   ru   r>   r…   r†   Ú	getLoggerrâ   r_   r7   r9   rí   rø   r$   ró   rA   rB   ÚInspectionAttrr´   rq   r{   ry   rÈ   rN  rÃ   r^  ra  r)   r.   r+   ú<module>rt     sp  ðð EÐ DÐ Dà "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð 1Ø,Ð,Ð,Ð,Ð,Ð,Ø/Ð/Ð/Ð/Ð/Ð/ØÐÐÐÐÐØ3Ð3Ð3Ð3Ð3Ð3Ø!Ð!Ð!Ð!Ð!Ð!Ø6Ð6Ð6Ð6Ð6Ð6Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'Ø*Ð*Ð*Ð*Ð*Ð*Ø'Ð'Ð'Ð'Ð'Ð'àCÐCÐCÐCàOÐOÐOÐOÐOð "ˆhÔ! )Ñ,Ô,€GØ#�Ô# KÑ0Ô0€Ið �s”)€Ø€ØØÐ-Ð/IÐIôÐ ð Ð,¨cÐ1Ô2Ð ð "Ð"<Ô=Ð Ø" 5Ð)CÀSÐ)HÔ#IÔJÐ ð €gÔ˜Ñ!Ô!€ð*ð *ð *ð *ð !$€Ð #Ð #Ð #Ñ #Ø€ðG;ð G;ð G;ð G;ð G;�;ñ G;ô G;ð G;ðT?ð ?ð ?ð ?ð ?�<ñ ?ô ?ð ?ð#ð #ð #ð #ð #�<ñ #ô #ð #ðL !�L‘N”N€Ô ðð ð ð ð �Ô'¨°cñ ô ð ð.Sð Sð Sð Sð S�Lñ Sô Sð SðlHð Hð Hð Hð H�<ñ Hô Hð HðVlð lð lð lð l˜\ñ lô lð lð^ð ð ð ð Ð0ñ ô ð ðð ð ð ð ˆd�3˜�8Œnñ ô ð ðð ð ð ð Ð2ñ ô ð ð> ð 
:ð0ð 0ð 0ð 0ð MÐLÐLÐLÐLÐLð )�XÔ(¨Ñ5Ô5€NØ*�xÔ*¨=Ñ9Ô9ÐÐÐr.   