§
    
 @gRe  ã                  ó.  — 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)ÚMapperProperty)ÚMapper)ÚRelationshipProperty)ÚAliasedInsp)Ú_CacheKeyTraversalType)ÚBindParameter)Úanon_map)Ú_LiteralStar)Ú	TypeGuardÚpathÚPathRegistryÚreturnúTypeGuard[RootRegistry]c                ó   — d S ©N© ©r#   s    úP/var/www/piapp/venv/lib/python3.11/site-packages/sqlalchemy/orm/path_registry.pyÚis_rootr,   0   ó   € Øˆó    ú!TypeGuard[AbstractEntityRegistry]c                ó   — d S r(   r)   r*   s    r+   Ú	is_entityr1   3   r-   r.   r,   r1   ú_InternalEntityType[Any]úMapperProperty[Any].Ú_SerializedPathc                ó6   — t                                | ¦  «        S r(   )r$   Údeserializer*   s    r+   Ú_unreduce_pathr7   R   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__»   ó   € àˆr.   Ú_PathElementTypec                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__¿   ru   r.   Úslicec                ó   — d S r(   r)   rs   s     r+   rt   zPathRegistry.__getitem__Ã   ru   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__Í   ru   r.   úOUnion[_StrPathToken, int, slice, _InternalEntityType[Any], MapperProperty[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.   úJIterator[Tuple[_InternalEntityType[Any], Union[str, MapperProperty[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.serialize7  s   € ØŒyˆØ×#Ò# DÑ)Ô)Ð)r.   c                ó^   — |€J ‚|                       |¦  «        }|                      |¦  «        S r(   )rÀ   Úcoerce)r®   r#   r¨   s      r+   r6   zPathRegistry.deserialize;  s1   € àÐÐÐØ×!Ò! $Ñ'Ô'ˆØ�zŠz˜!‰}Œ}Ðr.   ÚCachingEntityRegistryc                ó   — d S r(   r)   ©r®   r�   s     r+   Ú
per_mapperzPathRegistry.per_mapperA  ó	   € ð 	ˆr.   úAliasedInsp[Any]ÚSlotsEntityRegistryc                ó   — d S r(   r)   rÆ   s     r+   rÇ   zPathRegistry.per_mapperF  rÈ   r.   c                ód   — |j         rt          | j        |¦  «        S t          | j        |¦  «        S r(   )rŸ   rÄ   rB   rÊ   rÆ   s     r+   rÇ   zPathRegistry.per_mapperK  s3   € ð Ôð 	9Ý(¨¬°6Ñ:Ô:Ð:å& s¤x°Ñ8Ô8Ð8r.   Úrawc                ó6   — dd„}t          ||| j        ¦  «        S )NÚprevr$   Únext_rv   r%   c                ó   — | |         S r(   r)   ©rÏ   rÐ   s     r+   Ú_redz!PathRegistry.coerce.<locals>._redV  ó   € Ø˜”;Ðr.   ©rÏ   r$   rÐ   rv   r%   r$   )r   rB   )r®   rÍ   rÓ   s      r+   rÃ   zPathRegistry.coerceT  s,   € ð	ð 	ð 	ð 	õ �d˜C ¤Ñ*Ô*Ð*r.   c                ó6   — dd„}t          ||j        | ¦  «        S )NrÏ   r$   rÐ   rv   r%   c                ó   — | |         S r(   r)   rÒ   s     r+   rÓ   z"PathRegistry.__add__.<locals>._red]  rÔ   r.   rÕ   )r   r#   )rM   rD   rÓ   s      r+   Ú__add__zPathRegistry.__add__\  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>c  s(   è è € Ð&GÐ&G°T¥s¨4¡y¤yÐ&GÐ&GÐ&GÐ&GÐ&GÐ&Gr.   ú])Újoinr#   rT   s    r+   Ú__str__zPathRegistry.__str__b  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__e  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%   rv   )ro   rx   r%   r>   )ro   r2   r%   rz   )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%   rz   )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$   Z   sá  € € € € € € ðð ð2 €Ià€HØ€GØ€JØ€KØ€IàÐÐÑàÐÐÑØ%Ð%Ð%Ñ%Ø"Ð"Ð"Ñ"ØÐÐÑð 
�Ô3ÔIÐJð4Ðð ð ð ñ ðð ð ð ðð ð ð ð ðð ð ñ „Xðð ð  ð  ð  ð5ð 5ð 5ð 5ð?ð ?ð ?ð ?ð LPðð ð ð ð ðð ð ð ðð ð ð ð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð ðð ð ñ „Xðð
 ðð ð ñ „Xðð$ð $ð $ð $ð& ðð ð ñ „Xðð0ð 0ð 0ð 0ðð ð ð ð.ð .ð .ð .ð3ð 3ð 3ð 3ð ð
ð 
ð 
ñ „[ð
ð$ ð!ð !ð !ñ „[ð!ðF*ð *ð *ð *ð ðð ð ñ „[ðð
 Øðð ð ñ „[ñ „Xðð Øðð ð ñ „[ñ „Xðð ð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.tokeno  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õ   i  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   x  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ÿ   rz   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ÿ   rz   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@   rz   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_recursive|  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   rx   r#   rÊ   rs   s     r+   r  zPropRegistry._getitemŒ  s7   € õ �f�s¥E˜lÑ+Ô+ð 	5Ø”9˜VÔ$Ð$å& t¨VÑ4Ô4Ð4r.   N)r@   rz   r&  r3   )r%   r|   ©r%   rz   )ro   r<  r%   r=  )rä   rè   ré   rë   r  rî   rï   r  r  rò   r;  r  r   rt   r)   r.   r+   r|   r|     sÁ   € € € € € € ð€Ið €MØ€KàÐÐÑØ!Ð!Ð!Ñ!Ø.Ð.Ð.Ñ.ðW9ð W9ð W9ð W9ðr	?ð 	?ð 	?ð 	?ð ð!ð !ð !ñ „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 )rz   )r[   r@   r    r#   ro   r?   Tú!Union[RootRegistry, PropRegistry]r@   r2   r[   ro   r<   r    c                óp  — || _         || _        |j        | _        || _        |j        |fz   | _        |j        rq| j        s|j        rc|j                             |j        d         j        ¦  «        r|j        |j        fz   | _        d S |j        |j        d         j        fz   | _        d S | j        | _        d S )Nr¿   )	r[   r@   r    ro   r#   r=   r�   r•   r?   )rM   r@   ro   s      r+   r  zAbstractEntityRegistry.__init__ª  sÏ   € ð
 ˆŒØˆŒØ &Ô 7ˆÔØˆŒØ”K 6 )Ñ+ˆŒ	ð$ Œ;ð 	*˜DÔ1ð 	*°VÔ5Hð 	*ð Œ}× Ò  Ô!4°RÔ!8Ô!?Ñ@Ô@ð Ø$*Ô$7¸6¼=Ð:JÑ$J�Ô!Ð!Ð!à$*Ô$7ØÔ'¨Ô+Ô2ð;ñ %�Ô!Ð!Ð!ð !%¤	ˆ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+   r;  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   rx   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@   rA  ro   r2   r?  )r%   r2   )r%   r$   )r%   rŽ   )r%   r<   )ro   r   r%   rJ  )rä   rè   ré   rë   rí   r1   rï   r  r  rò   rE  r;  r�   rI  r  r   rt   r)   r.   r+   rz   rz   ˜  s  € € € € € € ð€Ið €JØ€Ià-Ð-Ð-Ñ-Ø!Ð!Ð!Ñ!Ø$Ð$Ð$Ñ$ØÐÐÑð,*ð ,*ð ,*ð ,*ð\>ð >ð >ð >ð ð#ð #ð #ñ „Xð#ð ðð ð ñ „Xðð ð"ð "ð "ñ „Xð"ðð ð ð ð.ð .ð .ð .ð ð Øˆˆˆðð r.   rz   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(   )rP  )rM   rP  s     r+   r  z_ERDict.__init__ÿ  s   € Ø ˆŒˆˆr.   r[   r   r%   r|   c                ó:   — t          | j        |¦  «        x| |<   }|S r(   )r|   rP  )rM   r[   Úitems      r+   Ú__missing__z_ERDict.__missing__  s!   € Ý'¨¬°sÑ;Ô;Ð;ˆˆS‰	�Dàˆr.   N)rP  rÄ   )r[   r   r%   r|   )rä   rè   ré   r  rT  r)   r.   r+   rO  rO  þ  s<   € € € € € ð!ð !ð !ð !ðð ð ð ð ð r.   rO  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@   rA  ro   r2   c                ót   •— t          ¦   «                              ||¦  «         t          | ¦  «        | _        d S r(   )Úsuperr  rO  rV  )rM   r@   ro   rã   s      €r+   r  zCachingEntityRegistry.__init__  s0   ø€ õ
 	‰Œ×Ò˜ Ñ(Ô(Ð(Ý˜d‘m”mˆŒˆˆr.   r[   r   Údefaultr%   c                ó8   — | j                              ||¦  «        S r(   )rV  Úpop)rM   r[   rY  s      r+   r[  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   rx   r#   rµ   rq   rV  rs   s     r+   r  zCachingEntityRegistry._getitem  sT   € Ý�f�s¥E˜lÑ+Ô+ð 	'Ø”9˜VÔ$Ð$Ý˜¥	Ñ*Ô*ð 	'Ý   vÑ.Ô.Ð.à”;˜vÔ&Ð&r.   rL  )r[   r   rY  r   r%   r   r$  )rä   rè   ré   rë   r  r  r[  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_  )  rÈ   r.   úTypeGuard[PropRegistry]c                ó   — d S r(   r)   r*   s    r+   Úpath_is_propertyrb  .  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   rv   r>   r†   r‡   Ú	getLoggerrä   r_   r7   r9   rï   rú   r$   rõ   rA   rB   ÚInspectionAttrrµ   rq   r|   rz   rÊ   rO  rÄ   r_  rb  r)   r.   r+   ú<module>ru     s�  ððð ð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø €€€Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'àð 1Ø,Ð,Ð,Ð,Ð,Ð,Ø*Ð*Ð*Ð*Ð*Ð*ØÐÐÐÐÐØ3Ð3Ð3Ð3Ð3Ð3Ø!Ð!Ð!Ð!Ð!Ð!Ø6Ð6Ð6Ð6Ð6Ð6Ø,Ð,Ð,Ð,Ð,Ð,Ø'Ð'Ð'Ð'Ð'Ð'Ø*Ð*Ð*Ð*Ð*Ð*Ø'Ð'Ð'Ð'Ð'Ð'ðð ð ð ðð ð ð ð ð "ˆhÔ! )Ñ,Ô,€GØ#�Ô# KÑ0Ô0€Ið �s”)€Ø€ØØÐ-Ð/DÐDôÐ ð Ð,¨cÐ1Ô2Ð ð "Ð"<Ô=Ð Ø" 5Ð)>ÀÐ)CÔ#DÔEÐ ð €gÔ˜Ñ!Ô!€ð*ð *ð *ð *ð !$€Ð #Ð #Ð #Ñ #Ø€ðL;ð L;ð L;ð L;ð L;�;ñ L;ô L;ð L;ð^?ð ?ð ?ð ?ð ?�<ñ ?ô ?ð ?ð#ð #ð #ð #ð #�<ñ #ô #ð #ðL !�L‘N”N€Ô ðð ð ð ð �Ô'¨°cñ ô ð ð.Sð Sð Sð Sð S�Lñ Sô Sð SðlGð Gð Gð Gð G�<ñ Gô Gð GðT]ð ]ð ]ð ]ð ]˜\ñ ]ô ]ð ]ð@ð ð ð ð Ð0ñ ô ð ðð ð ð ð ˆd�3˜�8Œnñ ô ð ðð ð ð ð Ð2ñ ô ð ð> ð :ðð ð ð ð
ð ð ð ð ð ð )�XÔ(¨Ñ5Ô5€NØ*�xÔ*¨=Ñ9Ô9ÐÐÐr.   