Ë
    V.jkh  ã                  óä  — 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/ dFd$„Z0dGd%„Z1n$ ejd                  d&«      Z0 ejd                  d'«      Z1ee
   Z3e4Z5ee5d(d)f   Z6ee6d*f   Z7ed(   Z8eed)e4f      Z9 ejt                  e;«      Z<dHd+„Z=d,Z>d-e?d.<   d/Z@ G d0„ d#e«      ZA G d1„ d2eA«      ZB G d3„ d4eB«      ZC eC«       eA_D         G d5„ d6ejŠ                  ee4«      ZF G d7„ d8eA«      ZG G d9„ d:eA«      ZH G d;„ d<eB«      ZI G d=„ d>eI«      ZJ G d?„ d@ee
e
f   «      ZK G dA„ dBeI«      ZLer	 	 	 	 dGdC„ZMdIdD„ZNy ejd                  d'«      ZM ejd                  dE«      ZNy)Jz@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ÚPathRegistryc                 ó   — y ©N© ©Úpaths    ú^C:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\sqlalchemy/orm/path_registry.pyÚis_rootr*   0   s   € Àó    c                 ó   — y r%   r&   r'   s    r)   Ú	is_entityr-   2   s   € ÈCr+   r*   r-   ú_InternalEntityType[Any]úStrategizedProperty[Any].c                ó,   — t         j                  | «      S r%   )r#   Údeserializer'   s    r)   Ú_unreduce_pathr2   P   s   € Ü×#Ñ# DÓ)Ð)r+   Ú*r!   Ú_WILDCARD_TOKENÚ_sa_defaultc                  óv  — 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<   d/d„Zd/d„Zed0d„«       Zd1d„Zd2d„Z	 	 	 	 	 	 	 	 d2d„Z	 d3	 	 	 	 	 	 	 d4d„Zd5d„Zd5d„Zed6d„«       Zed7d„«       Zed8d„«       Ze	 	 	 	 d9d„«       Ze	 	 	 	 d:d„«       Z	 	 	 	 d;d„Zed5d„«       Z	 	 d<d „Zd=d!„Zd>d"„Zd?d#„Ze d@d$„«       Z!e dAd%„«       Z"dBd&„Z#e dCd'„«       Z$ee dDd(„«       «       Z%ee dEd)„«       «       Z%e 	 	 	 	 dFd*„«       Z%e dGd+„«       Z&dHd,„Z'dId-„Z(dId.„Z)y)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_traversalc                ó¢   — 	 |d uxr | j                   |j                  k(  S # t        $ r$ t        j                  dt        |«      z  «       Y yw xY w)Nú1Comparison of PathRegistry to %r is not supportedF©r(   Ú_path_for_compareÚAttributeErrorr   ÚwarnÚtype©ÚselfÚothers     r)   Ú__eq__zPathRegistry.__eq__…   sU   € ð	Ø Ð$ÒM¨¯©°e×6MÑ6MÑ)MÐMøÜò 	Ü�I‰IØCÜ˜“;ñ ôñ ð	úó   ‚! ¡*AÁAc                ó¢   — 	 |d u xs | j                   |j                  k7  S # t        $ r$ t        j                  dt        |«      z  «       Y yw xY w)Nr@   TrA   rF   s     r)   Ú__ne__zPathRegistry.__ne__�   sT   € ð	Ø˜D�=ÒH D§I¡I°×1HÑ1HÑ$HÐHøÜò 	Ü�I‰IØCÜ˜“;ñ ôñ ð	úrJ   c                ó   — | j                   S r%   r'   ©rG   s    r)   rB   zPathRegistry._path_for_compare™   s   € à�y‰yÐr+   c                ó    — | j                   |   S r%   r'   )rG   Úindexs     r)   Úodd_elementzPathRegistry.odd_element�   s   € Ø�y‰y˜ÑÐr+   c                óV   — t         j                  d|| |«       |||| j                  f<   y )Nzset '%s' on path '%s' to '%s')ÚlogÚdebugr:   ©rG   Ú
attributesÚkeyÚvalues       r)   ÚsetzPathRegistry.set    s*   € Ü�	‰	Ð1°3¸¸eÔDØ/4ˆ
�C˜×*Ñ*Ð+Ò,r+   c                óp   — t         j                  d|| |«       |j                  || j                  f|«       y )Nz$setdefault '%s' on path '%s' to '%s')rS   rT   Ú
setdefaultr:   rU   s       r)   r[   zPathRegistry.setdefault¤   s2   € ô 	�	‰	Ð8¸#¸tÀUÔKØ×Ñ˜s D×$5Ñ$5Ð6¸Õ>r+   Nc                ó4   — || j                   f}||v r||   S |S r%   )r:   rU   s       r)   ÚgetzPathRegistry.getª   s+   € ð �D×%Ñ%Ð&ˆØ�*ÑØ˜c‘?Ð"àˆLr+   c                ó,   — t        | j                  «      S r%   ©Úlenr(   rN   s    r)   Ú__len__zPathRegistry.__len__³   s   € Ü�4—9‘9‹~Ðr+   c                ó   — t        | «      S r%   )ÚidrN   s    r)   Ú__hash__zPathRegistry.__hash__¶   s   € Ü�$‹xˆr+   c                 ó   — y r%   r&   ©rG   Úentitys     r)   Ú__getitem__zPathRegistry.__getitem__¹   s   € ØCFr+   c                 ó   — y r%   r&   rf   s     r)   rh   zPathRegistry.__getitem__¼   s   € Ø<?r+   c                 ó   — y r%   r&   rf   s     r)   rh   zPathRegistry.__getitem__¿   s   € ØADr+   c                 ó   — y r%   r&   rf   s     r)   rh   zPathRegistry.__getitem__Â   s   € ð "%r+   c                 ó   — y r%   r&   rf   s     r)   rh   zPathRegistry.__getitem__Ç   s   € ð r+   c                ó   — t        «       ‚r%   )ÚNotImplementedErrorrf   s     r)   rh   zPathRegistry.__getitem__Ì   s   € ô  "Ó#Ð#r+   c                ó,   — t        | j                  «      S r%   r_   rN   s    r)   ÚlengthzPathRegistry.lengthß   s   € ä�4—9‘9‹~Ðr+   c              #  ó´   K  — t        t        | j                  «      }t        t        |«      }t	        dt        |«      d«      D ]  }||   ||dz      f–— Œ y ­w)Nr   r   r   )r   Ú_OddPathRepresentationr(   Ú_EvenPathRepresentationÚranger`   )rG   Úodd_pathÚ	even_pathÚis       r)   ÚpairszPathRegistry.pairsã   sU   è ø€ ô
 Ô.°·	±	Ó:ˆÜÔ0°(Ó;ˆ	Ü�qœ#˜h›-¨Ö+ˆAØ˜1‘+˜y¨¨Q©Ñ/Ð/Ó/ñ ,ùs   ‚AAc                óÔ   — t        t        | j                  «      }t        dt	        |«      d«      D �cg c]  }||   ‘Œ	 c}D ]  }|j
                  j                  |«      sŒ y yc c}w )Nr   r   TF)r   rr   r(   rt   r`   ÚmapperÚisa)rG   rz   Ú_m_pathrw   Úpath_mappers        r)   Úcontains_mapperzPathRegistry.contains_mapperí   sb   € ÜÔ-¨t¯y©yÓ9ˆÜ05°a¼¸W»ÀqÔ0IÓJÑ0I¨1˜G A›JÐ0IÔJˆKØ×!Ñ!×%Ñ% fÕ-Ùð Kð ùò	 Ks   ³A%c                ó"   — || j                   f|v S r%   r'   )rG   rV   rW   s      r)   ÚcontainszPathRegistry.containsõ   s   € Ø�T—Y‘YÐ :Ð-Ð-r+   c                ó0   — t         | j                  «       ffS r%   )r2   Ú	serializerN   s    r)   Ú
__reduce__zPathRegistry.__reduce__ø   s   € Ü §¡Ó 0Ð2Ð2Ð2r+   c                óZ  — t        t        |«      }t        t        |«      }t        t	        t        d„ t        dt        |«      d«      D �cg c]  }||   ‘Œ	 c}D «       «      t        d„ t        dt        |«      d«      D �cg c]  }||   ‘Œ	 c}D «       «      dz   «      «      S c c}w c c}w )Nc              3  óz   K  — | ]3  }|j                   s|j                  r|j                  n
t        |«      –— Œ5 y ­wr%   )Ú	is_mapperÚis_aliased_classÚclass_Ústr)Ú.0Úms     r)   Ú	<genexpr>z/PathRegistry._serialize_path.<locals>.<genexpr>  s3   è ø€ ð áL˜ð "#§¢°×0BÒ0B�A—H’HÌÈQËÓOÙLùs   ‚9;r   r   c              3  ó`   K  — | ]&  }t        |«      r|j                  n
t        |«      –— Œ( y ­wr%   )r   rW   r‰   )rŠ   Úps     r)   rŒ   z/PathRegistry._serialize_path.<locals>.<genexpr>  s,   è ø€ ð áL˜ô 5°QÔ7�A—E’E¼SÀ»VÓCÙLùs   ‚,.r   r%   )r   rr   rs   ÚlistÚzipÚtuplert   r`   )Úclsr(   r|   Ú_p_pathrw   s        r)   Ú_serialize_pathzPathRegistry._serialize_pathû   s·   € äÔ-¨tÓ4ˆÜÔ.°Ó5ˆäÜÜñ ä27¸¼3¸w»<ÈÔ2KÓLÑ2K¨Q˜g a›jÐ2KÒLóó ô ñ ä27¸¼3¸w»<ÈÔ2KÓLÑ2K¨Q˜g a›jÐ2KÒLóó ð ñ	ó
ó
ð 	
ùò Mùò Ms   Á
B#Â B(c                ó    — dd„}dd„}t        t        |D ��cg c]  \  }} ||«       |||«      f‘Œ c}}Ž «      }|r
|d   €|dd }|S c c}}w )Nc                óz   — | t         j                  vrt        j                  | d¬«      S t         j                  |    S ©NT)Ú	configure)Ú	PathTokenÚ_internÚorm_baseÚ_inspect_mapped_class)Úmclss    r)   Ú_deserialize_mapper_tokenzAPathRegistry._deserialize_path.<locals>._deserialize_mapper_token  s>   € ð
 œy×0Ñ0Ñ0ô ×.Ñ.¨t¸tÔDðô
 ×&Ñ& tÑ,ðr+   c                ó¦   — |€y |t         j                  v rt         j                  |   S t        j                  | d¬«      }|€J ‚|j                  |   S r—   )r™   rš   r›   rœ   Úattrs)r�   rW   Úmps      r)   Ú_deserialize_key_tokenz>PathRegistry._deserialize_path.<locals>._deserialize_key_token  sS   € Øˆ{ØØœ	×)Ñ)Ñ)Ü ×(Ñ(¨Ñ-Ð-ä×3Ñ3°DÀDÔI�Ø�~Ð%�~Ø—x‘x ‘}Ð$r+   éÿÿÿÿr   )r�   r   Úreturnr   )r�   r   rW   r   r¤   r   )r‘   r   )r’   r(   rž   r¢   r�   rW   rŽ   s          r)   Ú_deserialize_pathzPathRegistry._deserialize_path  s{   € ó	ó	%ô Üñ &*ôñ
 &*™	˜˜cñ 2°$Ó7Ù.¨t°SÓ9òð &*òðó

ˆñ ��2‘�Ø�!�B�ˆAØˆùós   ˜A
c                ó<   — | j                   }| j                  |«      S r%   )r(   r”   )rG   r(   s     r)   r‚   zPathRegistry.serialize2  s   € Ø�y‰yˆØ×#Ñ# DÓ)Ð)r+   c                óN   — |€J ‚| j                  |«      }| j                  |«      S r%   )r¥   Úcoerce)r’   r(   rŽ   s      r)   r1   zPathRegistry.deserialize6  s,   € àÐÐÐØ×!Ñ! $Ó'ˆØ�z‰z˜!‹}Ðr+   c                 ó   — y r%   r&   ©r’   rz   s     r)   Ú
per_mapperzPathRegistry.per_mapper<  s   € àGJr+   c                 ó   — y r%   r&   rª   s     r)   r«   zPathRegistry.per_mapper@  s   € àJMr+   c                ór   — |j                   rt        | j                  |«      S t        | j                  |«      S r%   )r†   ÚCachingEntityRegistryr=   ÚSlotsEntityRegistryrª   s     r)   r«   zPathRegistry.per_mapperD  s/   € ð ×ÒÜ(¨¯©°6Ó:Ð:ä& s§x¡x°Ó8Ð8r+   c                ó8   — dd„}t        ||| j                  «      S )Nc                ó   — | |   S r%   r&   ©ÚprevÚnext_s     r)   Ú_redz!PathRegistry.coerce.<locals>._redO  ó   € Ø˜‘;Ðr+   ©r³   r#   r´   Ú_PathElementTyper¤   r#   )r   r=   )r’   Úrawrµ   s      r)   r¨   zPathRegistry.coerceM  s   € ó	ô �d˜C §¡Ó*Ð*r+   c                ó8   — dd„}t        ||j                  | «      S )Nc                ó   — | |   S r%   r&   r²   s     r)   rµ   z"PathRegistry.__add__.<locals>._redV  r¶   r+   r·   )r   r(   )rG   rH   rµ   s      r)   Ú__add__zPathRegistry.__add__U  s   € ó	ô �d˜EŸJ™J¨Ó-Ð-r+   c                óN   — ddj                  d„ | j                  D «       «      › d�S )Nz	ORM Path[z -> c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wr%   ©r‰   )rŠ   Úelems     r)   rŒ   z'PathRegistry.__str__.<locals>.<genexpr>\  s   è ø€ Ð&G¹Y°T¤s¨4§y¹Yùs   ‚Ú])Újoinr(   rN   s    r)   Ú__str__zPathRegistry.__str__[  s%   € Ø˜6Ÿ;™;Ñ&G¸T¿YºYÓ&GÓGÐHÈÐJÐJr+   c                óN   — | j                   j                  › d| j                  ›d�S )NÚ(Ú))Ú	__class__Ú__name__r(   rN   s    r)   Ú__repr__zPathRegistry.__repr__^  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I¨=¸Ð:Ð:r+   )rH   r   r¤   r7   ©r¤   zOptional[_PathRepresentation])rP   Úintr¤   r.   )rV   úDict[Any, Any]rW   r   rX   r   r¤   ÚNoner%   )rV   rÌ   rW   r   rX   zOptional[Any]r¤   r   )r¤   rË   )rg   Ú_StrPathTokenr¤   ÚTokenRegistry)rg   rË   r¤   r¸   )rg   Úslicer¤   r9   )rg   r.   r¤   ÚAbstractEntityRegistry)rg   r/   r¤   ÚPropRegistry)rg   zTUnion[_StrPathToken, int, slice, _InternalEntityType[Any], StrategizedProperty[Any]]r¤   zaUnion[TokenRegistry, _PathElementType, _PathRepresentation, PropRegistry, AbstractEntityRegistry])r¤   zOIterator[Tuple[_InternalEntityType[Any], Union[str, StrategizedProperty[Any]]]])rz   úMapper[Any]r¤   r7   )rV   rÌ   rW   r   r¤   r7   )r¤   r   )r(   r9   r¤   Ú_SerializedPath)r(   rÔ   r¤   r9   )r¤   rÔ   ©r(   rÔ   r¤   r#   )rz   rÓ   r¤   r®   )rz   úAliasedInsp[Any]r¤   r¯   )rz   r.   r¤   rÑ   )r¹   r9   r¤   r#   )rH   r#   r¤   r#   )r¤   r‰   )*rÈ   Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__Úis_tokenr*   Ú
has_entityÚis_propertyr-   Ú__annotations__r   ÚExtendedInternalTraversalÚdp_has_cache_key_listr>   rI   rL   ÚpropertyrB   rQ   rY   r[   r]   ra   rd   r   rh   rp   rx   r~   r€   rƒ   Úclassmethodr”   r¥   r‚   r1   r«   r¨   r¼   rÃ   rÉ   r&   r+   r)   r#   r#   X   sa  … ñð2 €Ià€HØ€GØ€JØ€KØ€IàÓà
ÓØ%Ó%Ø"Ó"Ø
Óð 
�×3Ñ3×IÑIÐJð4ÐÐ0ó óóð òó ðó ó5ð?Ø(ð?Ø/2ð?Ø;>ð?à	ó?ð LPðØ(ðØ/2ðØ;Hðà	óóóð ÚFó ØFàÚ?ó Ø?àÚDó ØDàð%Ø.ð%à	ò%ó ð%ð ðØ.ðà	òó ðð$ð
ð$ð
ó$ð& òó ðð0ð
ó0óó.ó3ð ò
ó ð
ð$ ò!ó ð!óF*ð òó ðð
 ØÚJó ó àJàØÚMó ó àMàð9Ø-ð9à	ò9ó ð9ð ò+ó ð+ó.óKô;r+   c                  ó.   — e Zd ZU dZded<   ded<   dd„Zy)ÚCreatesTokenr&   r7   r‡   r*   c                óÖ   — |j                  dt        › �«      rt        | |«      S |j                  dt        › �«      rt        | j                  |«      S t        j                  d|› �«      ‚)NÚ:zinvalid token: )Úendswithr4   rÏ   Ú_DEFAULT_TOKENr=   r   ÚArgumentError)rG   Útokens     r)   rê   zCreatesToken.tokenh  s`   € Ø�>‰>˜AœoÐ.Ð/Ô0Ü   uÓ-Ð-Ø�^‰^˜a¤Ð/Ð0Ô1Ü  §¡¨EÓ2Ð2ä×#Ñ# o°e°WÐ$=Ó>Ð>r+   N)rê   rÎ   r¤   rÏ   )rÈ   r×   rØ   rÚ   rÞ   rê   r&   r+   r)   rä   rä   b  s   … Ø€IàÓØƒMô?r+   rä   c                  óR   — 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yy)
r<   zXRoot registry, defers to mappers so that
    paths are maintained per-root-mapper.

    r&   TFc                óà   — |t         j                  v r5t        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   Ú
isinstancerÎ   rÏ   Ú_path_registryrC   Ú
IndexErrorrf   s     r)   Ú_getitemzRootRegistry._getitem�  st   € ð ”Y×&Ñ&Ñ&ÝÜ! &¬-Ô8Ð8Ð8Ü  ¤y×'8Ñ'8¸Ñ'@ÓAÐAðØ×,Ñ,Ð,øÜ!ò Ü ØEÀfÀXÐNóð ðús   Á	A ÁA-c                ó   — | S r%   r&   rN   s    r)   Ú_truncate_recursivez RootRegistry._truncate_recursive�  s   € Øˆr+   N)rg   r   r¤   z,Union[TokenRegistry, AbstractEntityRegistry])r¤   r<   )rÈ   r×   rØ   rÙ   rÚ   Úinherit_cacher(   r:   rÜ   r‡   r*   r8   rð   rò   r   rh   r&   r+   r)   r<   r<   q  s[   „ ñð
 €Ià€MàÐ€Dˆ<Ø€JØÐØ€GØ€LðØðà	5óóñ Ø‰ð r+   r<   c                  óX   — e Zd ZU dZi Zded<   	 	 	 	 	 	 dd„Zed	d„«       Ze	d
d„«       Z
y)r™   zcacheable string tokenzDict[str, PathToken]rš   c                ó   — t        | «      fS r%   r¿   )rG   r    Ú
bindparamss      r)   Ú_gen_cache_keyzPathToken._gen_cache_keyŸ  s   € ô �D“	ˆ|Ðr+   c                 ó   — y r%   r&   rN   s    r)   rB   zPathToken._path_for_compare¤  s   € àr+   c                ót   — || j                   v r| j                   |   S t        |«      x| j                   |<   }|S r%   )rš   r™   )r’   ÚstrvalueÚresults      r)   ÚinternzPathToken.intern¨  s:   € à�s—{‘{Ñ"Ø—;‘;˜xÑ(Ð(ä-6°xÓ-@Ð@ˆC�K‰K˜Ñ! FØˆMr+   N)r    r    rö   zList[BindParameter[Any]]r¤   zTuple[Any, ...]rÊ   )rú   r‰   r¤   r™   )rÈ   r×   rØ   rÙ   rš   rÞ   r÷   rá   rB   râ   rü   r&   r+   r)   r™   r™   š  sU   … Ù à$&€GÐ!Ó&ðØ ðØ.Fðà	óð
 òó ðð òó ñ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yy)rÏ   )rê   r;   r(   r:   TrÎ   rê   rä   r;   c                óž   — t         j                  |«      }|| _        || _        |j                  |fz   | _        |j
                  |fz   | _        y r%   )r™   rü   rê   r;   r(   r:   )rG   r;   rê   s      r)   Ú__init__zTokenRegistry.__init__¹  sG   € Ü× Ñ  Ó'ˆàˆŒ
ØˆŒØ—K‘K 5 (Ñ*ˆŒ	Ø"×/Ñ/°5°(Ñ:ˆÕr+   Fc              #  ó  K  — | j                   }t        |«      r| –— y t        rt        |t        «      sJ ‚|j
                  sE|j                  j                  «       D ]'  }t        |j                   |   | j                  «      –— Œ) y |j
                  rot        d|j                  «      j                  rO| –— t        d|j                  «      j                  D ]'  }t        |j                   |   | j                  «      –— Œ) y | –— y ­w©NrÖ   )r;   r*   r   rí   rÑ   r‡   rz   Úiterate_to_rootrÏ   rê   r   rg   Ú_is_with_polymorphicÚ_with_polymorphic_entities©rG   r;   Úmp_entÚents       r)   Úgenerate_for_superclassesz'TokenRegistry.generate_for_superclassesÅ  sã   è ø€ à—‘ˆÜ�6Œ?ØŠJØåÜ˜fÔ&<Ô=Ð=Ð=Ø×&Ò&Ø Ÿ-™-×7Ñ7Ö9�Ü# F§M¡M°&Ñ$9¸4¿:¹:ÓFÓFñ :ð ×#Ò#ÜØ"Ø—‘ó÷ #Ñ"ð#ð
 ŠJÜØ" F§M¡Móç(Ñ(ò)�ô $ F§M¡M°#Ñ$6¸¿
¹
ÓCÓCñ)ð
 ‹Jùs   ‚DDc              #  ó^  K  — | j                   }t        |«      r| j                  –— y t        rt	        |t
        «      sJ ‚|j                  j                  «       D ]1  }t        |j                   |   | j                  «      j                  –— Œ3 |j                  rƒt        d|j                  «      j                  rc| j                  –— t        d|j                  «      j                  D ]1  }t        |j                   |   | j                  «      j                  –— Œ3 y | j                  –— y ­wr  )r;   r*   r:   r   rí   rÑ   rz   r  rÏ   rê   r‡   r   rg   r  r  r  s       r)   Ú"_generate_natural_for_superclassesz0TokenRegistry._generate_natural_for_superclassesà  sÿ   è ø€ ð —‘ˆÜ�6Œ?Ø×#Ñ#Ò#ØåÜ˜fÔ&<Ô=Ð=Ð=Ø—m‘m×3Ñ3Ö5ˆFÜ §¡¨fÑ 5°t·z±zÓB×OÑOÓOð 6ð ×#Ò#ÜØ"Ø—‘ó÷ #Ñ"ð#ð
 ×#Ñ#Ò#ÜØ" F§M¡Móç(Ñ(ò)�ô " &§-¡-°Ñ"4°d·j±jÓA×NÑNóñ)ð ×#Ñ#Ó#ùs   ‚D+D-c                ó^   — 	 | j                   |   S # t        $ r}t        |› «      |‚d }~ww xY wr%   )r(   Ú	TypeErrorrï   )rG   rg   Úerrs      r)   rð   zTokenRegistry._getitemý  s5   € ð	3Ø—9‘9˜VÑ$Ð$øÜò 	3Ü ˜xÓ)¨sÐ2ûð	3ús   ‚ ‘	,š'§,N)r;   rä   rê   rÎ   )r¤   zIterator[PathRegistry])r¤   zIterator[_PathRepresentation]©rg   r   r¤   r   )rÈ   r×   rØ   rÚ   ró   rÞ   rÿ   rÜ   rÛ   r  r
  rð   r   rh   r&   r+   r)   rÏ   rÏ   ±  sO   … Ø;€Ià€MàÓØÓó;ð €Jà€Hóð6$à	&ó$ó:3ñ Ø‰ð r+   rÏ   c                  ó|   — 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yy)rÒ   )Úpropr;   r(   r:   rÜ   rg   rz   Ú_wildcard_path_loader_keyÚ_default_path_loader_keyÚ_loader_keyr8   Tr/   r  zOptional[Mapper[Any]]rz   z"Optional[_InternalEntityType[Any]]rg   c                óè  — t        d|d   «      }|}|j                  j                  xs t        |j                  j
                  «      | _        |j                  r|j                  r|j                  |j                     x}}nû|j                  r�|j                  ru|j                  |j                  v r]|d   j                  |j                  «      }|j                  |   }|j                  r!|j                  |j                     }d| _        nq|}nn|j                  rb|j                  rV|j                  |j                  ur>|j                  j                  |j                  «      r|j                  |j                     }|| _        || _        |j                  |fz   | _        |j                  |fz   | _        |j                  | _        |j                   r;t"        rt%        |t&        «      sJ ‚|j(                  | _        |j                  | _        nd | _        d | _        d|j                  | j                  j*                  z   f| _        | j                  j.                  | _        d| j                  f| _        y )Nr.   r£   TÚloader)r   r;   r8   r7   rz   Úinheritsr‡   Ú_use_mapper_pathÚwith_polymorphic_mappersÚ_entity_for_mapperr{   r  r(   r:   Ú_links_to_entityrÜ   Ú_is_relationshipr   rí   r   rg   Ú_wildcard_tokenr  r  r  )rG   r;   r  ÚinspÚnatural_parentÚsubclass_entitys         r)   rÿ   zPropRegistry.__init__  s  € ô Ð.°°r±
Ó;ˆØ17ˆð #ŸM™M×6Ñ6ò 
¼$Ø�M‰M×"Ñ"ó;
ˆÔð ×$Ò$¨×(=Ò(=Ø&,§m¡m°D·K±KÑ&@Ð@ˆF‘^à×!Ò!Ø×-Ò-Ø—‘˜t×<Ñ<Ñ<à8>¸r¹
×8UÑ8UÐVZ×VaÑVaÓ8bˆOØ—]‘] ?Ñ3ˆFð@ �}Š}Ø!'§¡¨×/EÑ/EÑ!F�Ø$(�Õ!à!'‘à×!Ò!Ø×%Ò%Ø—‘Ø—;‘;ñà—‘—‘ §¡Ô,à#Ÿ]™]¨4¯;©;Ñ7ˆNàˆŒ	ØˆŒØ—K‘K 4 'Ñ)ˆŒ	Ø*×7Ñ7¸4¸'ÑAˆÔà×/Ñ/ˆŒØ× Ò ÝÜ! $Ô(<Ô=Ð=Ð=ØŸ+™+ˆDŒKØŸ+™+ˆD�KàˆDŒKØˆDŒKð Ø×Ñ $§)¡)×";Ñ";Ñ;ð*
ˆÔ&ð )-¯	©	×(JÑ(JˆÔ%Ø$ d×&7Ñ&7Ð8ˆÕr+   c                óÆ   — d }t        t        | j                  d d «      «      D ]  \  }}|| j                  u sŒ|}Œ |€| S | j	                  | j                  d|dz     «      S )Nr£   r   r   )Ú	enumerateÚreversedr(   r  r¨   )rG   Úearliestrw   rê   s       r)   rò   z PropRegistry._truncate_recursivev  sg   € ØˆÜ!¤(¨4¯9©9°S°b¨>Ó":Ö;‰HˆAˆuØ˜Ÿ	™	Ò!Ø‘ð <ð ÐØˆKà—;‘;˜tŸy™y¨¨x¸!©|¨_Ð=Ó>Ð>r+   c                ó<   — | j                   €J ‚| | j                      S r%   )rg   rN   s    r)   Úentity_pathzPropRegistry.entity_path�  s!   € à�{‰{Ð&Ð&Ð&Ø�D—K‘KÑ Ð r+   c                ód   — t        |t        t        f«      r| j                  |   S t	        | |«      S r%   )rí   rË   rÐ   r(   r¯   rf   s     r)   rð   zPropRegistry._getitem†  s.   € ô �fœs¤E˜lÔ+Ø—9‘9˜VÑ$Ð$ä& t¨VÓ4Ð4r+   N)r;   rÑ   r  r/   )r¤   rÒ   ©r¤   rÑ   )rg   z+Union[int, slice, _InternalEntityType[Any]]r¤   zDUnion[AbstractEntityRegistry, _PathElementType, _PathRepresentation])rÈ   r×   rØ   rÚ   ró   rÝ   rÞ   rÿ   rò   rá   r%  rð   r   rh   r&   r+   r)   rÒ   rÒ     s}   … ð€Ið €MØ€Kà
"Ó"Ø!Ó!Ø.Ó.ðX9Ø,ðX9Ø4LóX9ót	?ð ò!ó ð!ð5ØAð5à	Mó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yy)rÑ   )rW   r;   r‡   r(   rg   r:   Tú!Union[RootRegistry, PropRegistry]r;   r.   rW   rg   r7   r‡   c                óâ  — || _         || _        |j                  | _        || _        |j                  |fz   | _        |j                  r—| j                  s|j
                  r|j                  j                  |j                  d   j                  «      r |j                  |j                  fz   | _        y |j                  |j                  d   j                  fz   | _        y | j                  | _        y )Nr£   )	rW   r;   r‡   rg   r(   r8   rz   r{   r:   )rG   r;   rg   s      r)   rÿ   zAbstractEntityRegistry.__init__¤  sË   € ð
 ˆŒØˆŒØ &× 7Ñ 7ˆÔØˆŒØ—K‘K 6 )Ñ+ˆŒ	ð$ �;Š;˜D×1Ò1°V×5HÒ5Hð �}‰}× Ñ  ×!4Ñ!4°RÑ!8×!?Ñ!?Ô@Ø$*×$7Ñ$7¸6¿=¹=Ð:JÑ$J�Õ!à$*×$7Ñ$7Ø×'Ñ'¨Ñ+×2Ñ2ð;ñ %�Õ!ð !%§	¡	ˆDÕr+   c                óP   — | j                   j                  «       | j                     S r%   )r;   rò   rg   rN   s    r)   rò   z*AbstractEntityRegistry._truncate_recursiveÒ  s   € Ø�{‰{×.Ñ.Ó0°·±Ñ=Ð=r+   c                ó$   — | j                  d«      S )Nr   )rQ   rN   s    r)   Úroot_entityz"AbstractEntityRegistry.root_entityÕ  s   € à×Ñ Ó"Ð"r+   c                ó   — | S r%   r&   rN   s    r)   r%  z"AbstractEntityRegistry.entity_pathÙ  s   € àˆr+   c                ó.   — | j                   j                  S r%   )rg   rz   rN   s    r)   rz   zAbstractEntityRegistry.mapperÝ  s   € à�{‰{×!Ñ!Ð!r+   c                 ó   — y)NTr&   rN   s    r)   Ú__bool__zAbstractEntityRegistry.__bool__á  s   € Ør+   c                óÂ   — t        |t        t        f«      r| j                  |   S |t        j
                  v rt        | t        j
                  |   «      S t        | |«      S r%   )rí   rË   rÐ   r(   r™   rš   rÏ   rÒ   rf   s     r)   rð   zAbstractEntityRegistry._getitemä  sT   € ô �fœs¤E˜lÔ+Ø—9‘9˜VÑ$Ð$Ø”y×(Ñ(Ñ(Ü  ¤y×'8Ñ'8¸Ñ'@ÓAÐAä  fÓ-Ð-r+   N©r;   r)  rg   r.   r'  )r¤   r.   )r¤   r#   )r¤   rÓ   )r¤   r7   )rg   r   r¤   z:Union[_PathElementType, _PathRepresentation, PathRegistry])rÈ   r×   rØ   rÚ   rÜ   r-   rÞ   rÿ   rò   rá   r-  r%  rz   r1  rð   r   rh   r&   r+   r)   rÑ   rÑ   ’  s¯   … ð€Ið €JØ€Ià-Ó-Ø	!Ó!Ø$Ó$ØÓð,*à1ð,*ð )ó,*ó\>ð ò#ó ð#ð òó ðð ò"ó ð"óð.Øð.à	Có.ñ Ø‰ð r+   rÑ   c                  ó   — e Zd ZdZy)r¯   TN)rÈ   r×   rØ   ró   r&   r+   r)   r¯   r¯   ò  s	   „ ð �Mr+   r¯   c                  ó   — e Zd Zdd„Zdd„Zy)Ú_ERDictc                ó   — || _         y r%   )Úregistry)rG   r8  s     r)   rÿ   z_ERDict.__init__ù  s	   € Ø ˆ�r+   c                ó<   — t        | j                  |«      x| |<   }|S r%   )rÒ   r8  )rG   rW   Úitems      r)   Ú__missing__z_ERDict.__missing__ü  s    € Ü'¨¯©°sÓ;Ð;ˆˆS‰	�Dàˆr+   N)r8  r®   )rW   r   r¤   rÒ   )rÈ   r×   rØ   rÿ   r;  r&   r+   r)   r6  r6  ø  s   „ ó!ôr+   r6  c                  óP   ‡ — 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®   )Ú_cacheTc                óF   •— t         ‰| �  ||«       t        | «      | _        y r%   )Úsuperrÿ   r6  r=  )rG   r;   rg   rÇ   s      €r)   rÿ   zCachingEntityRegistry.__init__
  s   ø€ ô
 	‰Ñ˜ Ô(Ü˜d“mˆ�r+   c                ó:   — | j                   j                  ||«      S r%   )r=  Úpop)rG   rW   Údefaults      r)   rA  zCachingEntityRegistry.pop  s   € Ø�{‰{�‰˜s GÓ,Ð,r+   c                ó¢   — t        |t        t        f«      r| j                  |   S t        |t        «      rt        | |«      S | j                  |   S r%   )rí   rË   rÐ   r(   r™   rÏ   r=  rf   s     r)   rð   zCachingEntityRegistry._getitem  sE   € Ü�fœs¤E˜lÔ+Ø—9‘9˜VÑ$Ð$Ü˜¤	Ô*Ü   vÓ.Ð.à—;‘;˜vÑ&Ð&r+   r3  )rW   r   rB  r   r¤   r   r  )rÈ   r×   rØ   rÚ   ró   rÿ   rA  rð   r   rh   Ú__classcell__)rÇ   s   @r)   r®   r®     s?   ø„ ð €Ià€Mð$à1ð$ð )õ$ó-ó'ñ ØŒó r+   r®   c                 ó   — y r%   r&   r'   s    r)   Úpath_is_entityrF  #  s   € à,/r+   c                 ó   — y r%   r&   r'   s    r)   Úpath_is_propertyrH  '  s   € Èr+   rÝ   )r(   r#   r¤   zTypeGuard[RootRegistry])r(   r#   r¤   z!TypeGuard[AbstractEntityRegistry]rÕ   )r(   r#   r¤   zTypeGuard[PropRegistry])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   rz   r   Úrelationshipsr   r   r   Úsql.elementsr   Úsql.visitorsr    Úutil.typingr!   r"   r*   r-   Ú
attrgetterrÔ   r‰   rÎ   r¸   r9   rr   rs   Ú	getLoggerrÈ   rS   r2   r4   rÞ   rè   r#   rä   r<   r=   ÚInspectionAttrr™   rÏ   rÒ   rÑ   r¯   r6  r®   rF  rH  r&   r+   r)   Ú<module>r[     s  ðòõ #å Ý Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý ,Ý Ý Ý Ý 'áÝ,Ý/ÝÝ3Ý!Ý6Ý,Ý'Ý*Ý'ãCäOð "ˆh×!Ñ! )Ó,€GØ#�×#Ñ# KÓ0€Ið �s‘)€Ø€ØØÐ-Ð/IÐIñÐ ð Ð,¨cÐ1Ñ2Ð ð "Ð"<Ñ=Ð Ø" 5Ð)CÀSÐ)HÑ#IÑJÐ ð €g×Ñ˜Ó!€ó*ð !$€�Ó #Ø€ôG;�;ô G;ôT?�<ô ?ô#�<ô #ñL !“N€Ô ô�×'Ñ'¨°cô ô.S�Lô SôlH�<ô HôV]˜\ô ]ô@Ð0ô ôˆd�3˜�8‰nô ôÐ2ô ñ> ð0Øð0à	*ó0ô Mð )�X×(Ñ(¨Ó5€NØ*�x×*Ñ*¨=Ó9Ñr+   