ó
    Ñ]jYh  ã                  ó  • % S r SSKJr  SSKJr  SSKJr  SSKrSSKrSSK	J
r
  SSK	Jr  SSK	Jr  SS	K	Jr  SS
K	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SSK	Jr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  \(       aG  SSKJ r   SSK!J"r"  SSK#J$r$  SSK%J&r&  SSKJ'r'  SSKJ(r(  SSK)J*r*  SS K+J,r,  SS!K-J.r.  SS"K-J/r/  SFS$ jr0SGS% jr1O$\Rd                  " S&5      r0\Rd                  " S'5      r1\\
   r3\4r5\\5S(S)4   r6\\6S*4   r7\S(   r8\\S)\44      r9\Rt                  " \;5      r<SHS+ jr=S,r>S-\?S.'   S/r@ " S0 S#\5      rA " S1 S2\A5      rB " S3 S4\B5      rC\C" 5       \AlD         " S5 S6\RŠ                  \\45      rF " S7 S8\A5      rG " S9 S:\A5      rH " S; S<\B5      rI " S= S>\I5      rJ " S? S@\\
\
4   5      rK " SA SB\I5      rL\(       a      SGSC jrMSISD jrNg\Rd                  " S'5      rM\Rd                  " SE5      rNg)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                ó   • g ©N© ©Úpaths    ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/orm/path_registry.pyÚis_rootr*   .   s   € Àó    c                ó   • g r%   r&   r'   s    r)   Ú	is_entityr-   0   s   € ÈCr+   r*   r-   ú_InternalEntityType[Any]úStrategizedProperty[Any].c                ó,   • [         R                  U 5      $ r%   )r#   Údeserializer'   s    r)   Ú_unreduce_pathr2   N   s   € Ü×#Ñ# DÓ)Ð)r+   Ú*r!   Ú_WILDCARD_TOKENÚ_sa_defaultc                  ó¾  • \ rS rSr% SrSrSrSrSrSr	Sr
S\S'   S\S'   S\S	'   S
\S'   S\S'   S\R                  R                  4/rS\S'   S0S jrS0S jr\S1S j5       rS2S jrS3S jr        S3S jr S4       S5S jjrS6S jrS6S jr\S7S j5       r\S8S j5       r\S9S j5       r\    S:S j5       r\    S;S j5       r    S<S jr\S6S  j5       r  S=S! jrS>S" jrS?S# jrS@S$ jr \!SAS% j5       r"\!SBS& j5       r#SCS' jr$\!SDS( j5       r%\\!SES) j5       5       r&\\!SFS* j5       5       r&\!    SGS+ j5       r&\!SHS, j5       r'SIS- jr(SJS. jr)SJS/ jr*Sr+g)Kr#   éV   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                ó°   •  US L=(       a    U R                   UR                  :H  $ ! [         a%    [        R                  " S[        U5      -  5         gf = f)Nú1Comparison of PathRegistry to %r is not supportedF©r(   Ú_path_for_compareÚAttributeErrorr   ÚwarnÚtype©ÚselfÚothers     r)   Ú__eq__ÚPathRegistry.__eq__ƒ   sU   € ð	Ø Ð$×M¨¯©°e×6MÑ6MÑ)MÐMøÜó 	Ü�IŠIØCÜ˜“;ñ ôñ ð	úó   ‚#& ¦,AÁAc                ó°   •  US L =(       d    U R                   UR                  :g  $ ! [         a%    [        R                  " S[        U5      -  5         gf = f)NrA   TrB   rG   s     r)   Ú__ne__ÚPathRegistry.__ne__�   sT   € ð	Ø˜D�=×H D§I¡I°×1HÑ1HÑ$HÐHøÜó 	Ü�IŠIØCÜ˜“;ñ ôñ ð	úrL   c                ó   • U R                   $ r%   r'   ©rH   s    r)   rC   ÚPathRegistry._path_for_compare—   s   € à�y‰yÐr+   c                ó    • U R                   U   $ r%   r'   )rH   Úindexs     r)   Úodd_elementÚPathRegistry.odd_element›   s   € Ø�y‰y˜ÑÐr+   c                óP   • [         R                  SX U5        X1X R                  4'   g )Nzset '%s' on path '%s' to '%s')ÚlogÚdebugr;   ©rH   Ú
attributesÚkeyÚvalues       r)   ÚsetÚPathRegistry.setž   s$   € Ü�	‰	Ð1°3¸eÔDØ/4�C×*Ñ*Ð+Ò,r+   c                ól   • [         R                  SX U5        UR                  X R                  4U5        g )Nz$setdefault '%s' on path '%s' to '%s')rX   rY   Ú
setdefaultr;   rZ   s       r)   ra   ÚPathRegistry.setdefault¢   s.   € ô 	�	‰	Ð8¸#ÀUÔKØ×Ñ˜s×$5Ñ$5Ð6¸Õ>r+   Nc                ó2   • X R                   4nX!;   a  X   $ U$ r%   )r;   rZ   s       r)   ÚgetÚPathRegistry.get¨   s%   € ð ×%Ñ%Ð&ˆØÓØ‘?Ð"àˆLr+   c                ó,   • [        U R                  5      $ r%   ©Úlenr(   rQ   s    r)   Ú__len__ÚPathRegistry.__len__±   s   € Ü�4—9‘9‹~Ðr+   c                ó   • [        U 5      $ r%   )ÚidrQ   s    r)   Ú__hash__ÚPathRegistry.__hash__´   s   € Ü�$‹xˆr+   c                ó   • g r%   r&   ©rH   Úentitys     r)   Ú__getitem__ÚPathRegistry.__getitem__·   s   € ØCFr+   c                ó   • g r%   r&   rp   s     r)   rr   rs   º   s   € Ø<?r+   c                ó   • g r%   r&   rp   s     r)   rr   rs   ½   s   € ØADr+   c                ó   • g r%   r&   rp   s     r)   rr   rs   À   s   € ð "%r+   c                ó   • g r%   r&   rp   s     r)   rr   rs   Å   s   € ð r+   c                ó   • [        5       er%   )ÚNotImplementedErrorrp   s     r)   rr   rs   Ê   s   € ô  "Ó#Ð#r+   c                ó,   • [        U R                  5      $ r%   rg   rQ   s    r)   ÚlengthÚPathRegistry.lengthÝ   s   € ä�4—9‘9‹~Ðr+   c              #  ó´   #   • [        [        U R                  5      n[        [        U5      n[	        S[        U5      S5       H  nX   X#S-      4v •  M     g 7f)Nr   r   r   )r   Ú_OddPathRepresentationr(   Ú_EvenPathRepresentationÚrangerh   )rH   Úodd_pathÚ	even_pathÚis       r)   ÚpairsÚPathRegistry.pairsá   sP   é € ô
 Ô.°·	±	Ó:ˆÜÔ0°(Ó;ˆ	Ü�qœ#˜h›-¨Ö+ˆAØ‘+˜y¨Q©Ñ/Ð/Ô/ò ,ùs   ‚AAc                óæ   • [        [        U R                  5      n[        S[	        U5      S5       Vs/ s H  o2U   PM	     sn H%  nUR
                  R                  U5      (       d  M%    g   gs  snf )Nr   r   TF)r   r~   r(   r€   rh   ÚmapperÚisa)rH   r‡   Ú_m_pathrƒ   Úpath_mappers        r)   Úcontains_mapperÚPathRegistry.contains_mapperë   sc   € ÜÔ-¨t¯y©yÓ9ˆÜ05°a¼¸W»ÀqÔ0IÓJÒ0I¨1 AœJÑ0IÔJˆKØ×!Ñ!×%Ñ% f×-Ó-Ùñ Kð ùò	 Ks   ³A.c                ó"   • X R                   4U;   $ r%   r'   )rH   r[   r\   s      r)   ÚcontainsÚPathRegistry.containsó   s   € Ø—Y‘YÐ :Ñ-Ð-r+   c                ó0   • [         U R                  5       44$ r%   )r2   Ú	serializerQ   s    r)   Ú
__reduce__ÚPathRegistry.__reduce__ö   s   € Ü §¡Ó 0Ð2Ð2Ð2r+   c                ób  • [        [        U5      n[        [        U5      n[        [	        [        S [        S[        U5      S5       Vs/ s H  oBU   PM	     sn 5       5      [        S [        S[        U5      S5       Vs/ s H  oCU   PM	     sn 5       5      S-   5      5      $ s  snf s  snf )Nc              3  ó”   #   • U  H>  nUR                   (       d  UR                  (       a  UR                  O
[        U5      v •  M@     g 7fr%   )Ú	is_mapperÚis_aliased_classÚclass_Ústr)Ú.0Úms     r)   Ú	<genexpr>Ú/PathRegistry._serialize_path.<locals>.<genexpr>   s2   é € ð âL˜ð "#§§°×0B×0B�A—H’HÌÈQËÔOÚLùs   ‚AAr   r   c              3  óp   #   • U  H,  n[        U5      (       a  UR                  O
[        U5      v •  M.     g 7fr%   )r   r\   r™   )rš   Úps     r)   rœ   r�     s.   é € ð âL˜ô 5°Q×7Ñ7�A—E’E¼SÀ»VÔCÚLùs   ‚46r   r%   )r   r~   r   ÚlistÚzipÚtupler€   rh   )Úclsr(   r‰   Ú_p_pathrƒ   s        r)   Ú_serialize_pathÚPathRegistry._serialize_pathù   s³   € äÔ-¨tÓ4ˆÜÔ.°Ó5ˆäÜÜñ ä27¸¼3¸w»<ÈÔ2KÓLÒ2K¨Q aœjÑ2KÒLóó ô ñ ä27¸¼3¸w»<ÈÔ2KÓLÒ2K¨Q aœjÑ2KÒLóó ð ñ	ó
ó
ð 	
ùò Mùò Ms   Á
B'ÂB,c                ó²   • SS jnSS jn[        [        U VVs/ s H  u  pEU" U5      U" XE5      4PM     snn6 5      nU(       a  US   c  USS nU$ s  snnf )Nc                óz   • U [         R                  ;  a  [        R                  " U SS9$ [         R                  U    $ ©NT)Ú	configure)Ú	PathTokenÚ_internÚorm_baseÚ_inspect_mapped_class)Úmclss    r)   Ú_deserialize_mapper_tokenÚAPathRegistry._deserialize_path.<locals>._deserialize_mapper_token  s>   € ð
 œy×0Ñ0Ó0ô ×.Ò.¨t¸tÑDðô
 ×&Ñ& tÑ,ðr+   c                óª   • Uc  g U[         R                  ;   a  [         R                  U   $ [        R                  " U SS9nUc   eUR                  U   $ r©   )r«   r¬   r­   r®   Úattrs)r¯   r\   Úmps      r)   Ú_deserialize_key_tokenÚ>PathRegistry._deserialize_path.<locals>._deserialize_key_token  sS   € Ø‰{ØØœ	×)Ñ)Ó)Ü ×(Ñ(¨Ñ-Ð-ä×3Ò3°DÀDÑI�Ø‘~Ð%�~Ø—x‘x ‘}Ð$r+   éÿÿÿÿr   )r¯   r   Úreturnr   )r¯   r   r\   r   r¸   r   )r¢   r   )r£   r(   r°   rµ   r¯   r\   rŸ   s          r)   Ú_deserialize_pathÚPathRegistry._deserialize_path  sw   € ô	ô	%ô Üñ &*ôò
 &*™	˜ñ 2°$Ó7Ù.¨tÓ9óñ &*òðó

ˆö ��2‘‘Ø�!�B�ˆAØˆùós   šAc                ó<   • U R                   nU R                  U5      $ r%   )r(   r¥   )rH   r(   s     r)   r‘   ÚPathRegistry.serialize0  s   € Ø�y‰yˆØ×#Ñ# DÓ)Ð)r+   c                óP   • Uc   eU R                  U5      nU R                  U5      $ r%   )r¹   Úcoerce)r£   r(   rŸ   s      r)   r1   ÚPathRegistry.deserialize4  s,   € àÑÐÐØ×!Ñ! $Ó'ˆØ�z‰z˜!‹}Ðr+   c                ó   • g r%   r&   ©r£   r‡   s     r)   Ú
per_mapperÚPathRegistry.per_mapper:  s   € àGJr+   c                ó   • g r%   r&   rÁ   s     r)   rÂ   rÃ   >  s   € àJMr+   c                ó|   • UR                   (       a  [        U R                  U5      $ [        U R                  U5      $ r%   )r–   ÚCachingEntityRegistryr>   ÚSlotsEntityRegistryrÁ   s     r)   rÂ   rÃ   B  s/   € ð ××Ü(¨¯©°6Ó:Ð:ä& s§x¡x°Ó8Ð8r+   c                ó8   • SS jn[        X!U R                  5      $ )Nc                ó
   • X   $ r%   r&   ©ÚprevÚnext_s     r)   Ú_redÚ!PathRegistry.coerce.<locals>._redM  ó
   € Ø‘;Ðr+   ©rË   r#   rÌ   Ú_PathElementTyper¸   r#   )r   r>   )r£   ÚrawrÍ   s      r)   r¾   ÚPathRegistry.coerceK  s   € ô	ô �d §¡Ó*Ð*r+   c                ó8   • SS jn[        X!R                  U 5      $ )Nc                ó
   • X   $ r%   r&   rÊ   s     r)   rÍ   Ú"PathRegistry.__add__.<locals>._redT  rÏ   r+   rÐ   )r   r(   )rH   rI   rÍ   s      r)   Ú__add__ÚPathRegistry.__add__S  s   € ô	ô �dŸJ™J¨Ó-Ð-r+   c                óN   • SSR                  S U R                   5       5       S3$ )Nz	ORM Path[z -> c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr%   ©r™   )rš   Úelems     r)   rœ   Ú'PathRegistry.__str__.<locals>.<genexpr>Z  s   é € Ð&GºY°T¤s¨4§y yºYùs   ‚Ú])Újoinr(   rQ   s    r)   Ú__str__ÚPathRegistry.__str__Y  s%   € Ø˜6Ÿ;™;Ñ&G¸T¿YºYÓ&GÓGÐHÈÐJÐJr+   c                óP   • U R                   R                   SU R                  < S3$ )NÚ(Ú))Ú	__class__Ú__name__r(   rQ   s    r)   Ú__repr__ÚPathRegistry.__repr__\  s$   € Ø—.‘.×)Ñ)Ð*¨!¨D¯I©I©=¸Ð:Ð:r+   )rI   r   r¸   r8   ©r¸   zOptional[_PathRepresentation])rT   Úintr¸   r.   )r[   úDict[Any, Any]r\   r   r]   r   r¸   ÚNoner%   )r[   rë   r\   r   r]   zOptional[Any]r¸   r   )r¸   rê   )rq   Ú_StrPathTokenr¸   ÚTokenRegistry)rq   rê   r¸   rÑ   )rq   Úslicer¸   r:   )rq   r.   r¸   ÚAbstractEntityRegistry)rq   r/   r¸   ÚPropRegistry)rq   zTUnion[_StrPathToken, int, slice, _InternalEntityType[Any], StrategizedProperty[Any]]r¸   zaUnion[TokenRegistry, _PathElementType, _PathRepresentation, PropRegistry, AbstractEntityRegistry])r¸   zOIterator[Tuple[_InternalEntityType[Any], Union[str, StrategizedProperty[Any]]]])r‡   úMapper[Any]r¸   r8   )r[   rë   r\   r   r¸   r8   )r¸   r   )r(   r:   r¸   Ú_SerializedPath)r(   ró   r¸   r:   )r¸   ró   ©r(   ró   r¸   r#   )r‡   rò   r¸   rÆ   )r‡   úAliasedInsp[Any]r¸   rÇ   )r‡   r.   r¸   rð   )rÒ   r:   r¸   r#   )rI   r#   r¸   r#   )r¸   r™   ),ræ   Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	__slots__Úis_tokenr*   Ú
has_entityÚis_propertyr-   Ú__annotations__r   ÚExtendedInternalTraversalÚdp_has_cache_key_listr?   rJ   rN   ÚpropertyrC   rU   r^   ra   rd   ri   rm   r   rr   r{   r„   r‹   rŽ   r’   Úclassmethodr¥   r¹   r‘   r1   rÂ   r¾   r×   rà   rç   Ú__static_attributes__r&   r+   r)   r#   r#   V   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                  ó8   • \ rS rSr% SrS\S'   S\S'   SS jrSrg)	ÚCreatesTokeni`  r&   r8   r—   r*   c                óê   • UR                  S[         35      (       a  [        X5      $ UR                  S[         35      (       a  [        U R                  U5      $ [
        R                  " SU 35      e)NÚ:zinvalid token: )Úendswithr4   rî   Ú_DEFAULT_TOKENr>   r   ÚArgumentError)rH   Útokens     r)   r  ÚCreatesToken.tokenf  sd   € Ø�>‰>˜AœoÐ.Ð/×0Ñ0Ü  Ó-Ð-Ø�^‰^˜a¤Ð/Ð0×1Ñ1Ü  §¡¨EÓ2Ð2ä×#Ò# o°e°WÐ$=Ó>Ð>r+   N)r  rí   r¸   rî   )ræ   rö   r÷   rø   rú   rþ   r  r  r&   r+   r)   r  r  `  s   ‡ Ø€IàÓØƒM÷?r+   r  c                  ól   • \ rS rSrSrSrSrS=rrSr	Sr
SrSr    S	S jrS
S jr\(       d  \rSrgSrg)r=   io  zPRoot registry, defers to mappers so that
paths are maintained per-root-mapper.

r&   TFc                óú   • U[         R                  ;   a?  [        (       a  [        U[        5      (       d   e[        U [         R                  U   5      $  UR                  $ ! [         a    [        SU 35      ef = f)Nz/invalid argument for RootRegistry.__getitem__: )	r«   r¬   r   Ú
isinstancerí   rî   Ú_path_registryrD   Ú
IndexErrorrp   s     r)   Ú_getitemÚRootRegistry._getitem  sy   € ð ”Y×&Ñ&Ó&ßŠ}Ü! &¬-×8Ñ8Ð8Ð8Ü  ¤y×'8Ñ'8¸Ñ'@ÓAÐAðØ×,Ñ,Ð,øÜ!ó Ü ØEÀfÀXÐNóð ðús   ÁA! Á!A:c                ó   • U $ r%   r&   rQ   s    r)   Ú_truncate_recursiveÚ RootRegistry._truncate_recursiveŽ  s   € Øˆr+   N)rq   r   r¸   z,Union[TokenRegistry, AbstractEntityRegistry])r¸   r=   )ræ   rö   r÷   rø   rù   rú   Úinherit_cacher(   r;   rü   r—   r*   r9   r  r  r   rr   r  r&   r+   r)   r=   r=   o  s[   † ñð
 €Ià€MàÐ€Dˆ<Ø€JØÐØ€GØ€LðØðà	5ôôö Ø‹ò r+   r=   c                  óf   • \ rS rSr% Sr0 rS\S'         S
S jr\SS j5       r	\
SS j5       rSrg	)r«   i˜  zcacheable string tokenzDict[str, PathToken]r¬   c                ó   • [        U 5      4$ r%   rÛ   )rH   r    Ú
bindparamss      r)   Ú_gen_cache_keyÚPathToken._gen_cache_key�  s   € ô �D“	ˆ|Ðr+   c                ó   • g r%   r&   rQ   s    r)   rC   ÚPathToken._path_for_compare¢  s   € àr+   c                óv   • XR                   ;   a  U R                   U   $ [        U5      =U R                   U'   nU$ r%   )r¬   r«   )r£   ÚstrvalueÚresults      r)   ÚinternÚPathToken.intern¦  s8   € à—{‘{Ó"Ø—;‘;˜xÑ(Ð(ä-6°xÓ-@Ð@ˆC�K‰K˜Ñ! FØˆMr+   r&   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  r  rC   r  r"  r  r&   r+   r)   r«   r«   ˜  sU   ‡ Ù à$&€GÐ!Ó&ðØ ðØ.Fðà	ôð
 óó ðð óó ór+   r«   c                  ó~   • \ rS rSr% SrSrS\S'   S\S'   SS jrS	rSr	SS
 jr
  SS jrSS jr\(       d  \rSrgSrg)rî   i¯  )r  r<   r(   r;   Trí   r  r  r<   c                óš   • [         R                  U5      nX l        Xl        UR                  U4-   U l        UR
                  U4-   U l        g r%   )r«   r"  r  r<   r(   r;   )rH   r<   r  s      r)   Ú__init__ÚTokenRegistry.__init__·  sC   € Ü× Ñ  Ó'ˆàŒ
ØŒØ—K‘K 5 (Ñ*ˆŒ	Ø"×/Ñ/°5°(Ñ:ˆÕr+   Fc              #  óX  #   • U R                   n[        U5      (       a  U v •  g [        (       a  [        U[        5      (       d   eUR
                  (       dG  UR                  R                  5        H(  n[        UR                   U   U R                  5      v •  M*     g UR
                  (       av  [        SUR                  5      R                  (       aQ  U v •  [        SUR                  5      R                   H(  n[        UR                   U   U R                  5      v •  M*     g U v •  g 7f©Nrõ   )r<   r*   r   r  rð   r—   r‡   Úiterate_to_rootrî   r  r   rq   Ú_is_with_polymorphicÚ_with_polymorphic_entities©rH   r<   Úmp_entÚents       r)   Úgenerate_for_superclassesÚ'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              #  ó˜  #   • U R                   n[        U5      (       a  U R                  v •  g [        (       a  [	        U[
        5      (       d   eUR                  R                  5        H2  n[        UR                   U   U R                  5      R                  v •  M4     UR                  (       aŠ  [        SUR                  5      R                  (       ae  U R                  v •  [        SUR                  5      R                   H2  n[        UR                   U   U R                  5      R                  v •  M4     g U R                  v •  g 7fr)  )r<   r*   r;   r   r  rð   r‡   r*  rî   r  r—   r   rq   r+  r,  r-  s       r)   Ú"_generate_natural_for_superclassesÚ0TokenRegistry._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   ‚EE
c                ó`   •  U R                   U   $ ! [         a  n[        U 5      UeS nAff = fr%   )r(   Ú	TypeErrorr  )rH   rq   Úerrs      r)   r  ÚTokenRegistry._getitemû  s5   € ð	3Ø—9‘9˜VÑ$Ð$øÜó 	3Ü ˜xÓ)¨sÐ2ûð	3ús   ‚ ‘
-›(¨-)r;   r<   r(   r  N)r<   r  r  rí   )r¸   zIterator[PathRegistry])r¸   zIterator[_PathRepresentation]©rq   r   r¸   r   )ræ   rö   r÷   rø   rú   r  rþ   r&  rü   rû   r0  r3  r  r   rr   r  r&   r+   r)   rî   rî   ¯  sO   ‡ Ø;€Ià€MàÓØÓô;ð €Jà€Hôð6$à	&ô$ô:3ö Ø‹ò r+   rî   c                  óš   • \ rS rSr% SrSrSrS\S'   S\S'   S\S	'       SS
 jrSS jr	\
SS j5       r    SS jr\(       d  \rSrgSrg)rñ   i  )Úpropr<   r(   r;   rü   rq   r‡   Ú_wildcard_path_loader_keyÚ_default_path_loader_keyÚ_loader_keyr9   Tr/   r;  zOptional[Mapper[Any]]r‡   z"Optional[_InternalEntityType[Any]]rq   c                ób  • [        SUS   5      nUnUR                  R                  =(       d    [        UR                  R
                  5      U l        UR                  (       a  UR                  (       a  UR                  UR                     =pGOUR                  (       a�  UR                  (       a|  UR                  UR                  ;   ab  US   R                  UR                  5      nUR                  U   nUR                  (       a!  UR                  UR                     nSU l        O�UnO~UR                  (       am  UR                  (       a\  UR                  UR                  LaC  UR                  R                  UR                  5      (       a  UR                  UR                     nX l        Xl        UR                  U4-   U l        UR                  U4-   U l        UR                  U l        UR                   (       aE  ["        (       a  [%        U[&        5      (       d   eUR(                  U l        UR                  U l        OS U l        S U l        SUR                  U R                  R*                  -   4U l        U R                  R.                  U l        SU R                  4U l        g )Nr.   r·   TÚloader)r   r<   r9   r8   r‡   Úinheritsr—   Ú_use_mapper_pathÚwith_polymorphic_mappersÚ_entity_for_mapperrˆ   r;  r(   r;   Ú_links_to_entityrü   Ú_is_relationshipr   r  r   rq   Ú_wildcard_tokenr<  r=  r>  )rH   r<   r;  ÚinspÚnatural_parentÚsubclass_entitys         r)   r&  Ú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                óÌ   • S n[        [        U R                  S S 5      5       H  u  p#X0R                  L d  M  UnM     Uc  U $ U R	                  U R                  SUS-   *  5      $ )Nr·   r   r   )Ú	enumerateÚreversedr(   r;  r¾   )rH   Úearliestrƒ   r  s       r)   r  Ú PropRegistry._truncate_recursivet  sc   € ØˆÜ!¤(¨4¯9©9°S°b¨>Ó":Ö;‰HˆAØŸ	™	Ô!Ø’ñ <ð ÑØˆKà—;‘;˜tŸy™y¨¨x¸!©|¨_Ð=Ó>Ð>r+   c                ó<   • U R                   c   eX R                      $ r%   )rq   rQ   s    r)   Úentity_pathÚPropRegistry.entity_path  s   € à�{‰{Ñ&Ð&Ð&Ø—K‘KÑ Ð r+   c                ól   • [        U[        [        45      (       a  U R                  U   $ [	        X5      $ r%   )r  rê   rï   r(   rÇ   rp   s     r)   r  ÚPropRegistry._getitem„  s/   € ô �fœs¤E˜l×+Ñ+Ø—9‘9˜VÑ$Ð$ä& tÓ4Ð4r+   )r=  r>  r<  rq   rü   r9   r‡   r;   r<   r(   r;  N)r<   rð   r;  r/   )r¸   rñ   ©r¸   rð   )rq   z+Union[int, slice, _InternalEntityType[Any]]r¸   zDUnion[AbstractEntityRegistry, _PathElementType, _PathRepresentation])ræ   rö   r÷   rø   rú   r  rý   rþ   r&  r  r  rR  r  r   rr   r  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                  óÖ   • \ rS rSr% SrSrSrS\S'   S\S'   S\S'   S	\S
'       SS jrSS jr	\
SS j5       r\
SS j5       r\
SS j5       rSS jr    SS jr\(       d  \rSrgSrg)rð   i�  )r\   r<   r—   r(   rq   r;   Tú!Union[RootRegistry, PropRegistry]r<   r.   r\   rq   r8   r—   c                óB  • X l         Xl        UR                  U l        X l        UR                  U4-   U l        UR                  (       aÅ  U R                  (       d  UR
                  (       a£  UR                  S   nUR                  R                  UR                  5      (       d*  UR                  R                  UR                  5      (       a   UR                  UR                  4-   U l        g UR                  UR                  4-   U l        g U R                  U l        g )Nr·   )	r\   r<   r—   rq   r(   r9   r;   r‡   rˆ   )rH   r<   rq   Úparent_natural_entitys       r)   r&  ÚAbstractEntityRegistry.__init__¢  sê   € ð
 ŒØŒØ &× 7Ñ 7ˆÔØŒØ—K‘K 6 )Ñ+ˆŒ	ð$ �;�;˜D×1×1°V×5H×5Hð %+×$7Ñ$7¸Ñ$;Ð!à�}‰}× Ñ Ø%×,Ñ,÷ñ à&×-Ñ-×1Ñ1Ø—‘÷ñ ð %+×$7Ñ$7¸6¿=¹=Ð:JÑ$J�Õ!à$*×$7Ñ$7Ø)×0Ñ0ð;ñ %�Õ!ð !%§	¡	ˆDÕr+   c                óP   • U R                   R                  5       U R                     $ r%   )r<   r  rq   rQ   s    r)   r  Ú*AbstractEntityRegistry._truncate_recursiveß  s   € Ø�{‰{×.Ñ.Ó0°·±Ñ=Ð=r+   c                ó$   • U R                  S5      $ )Nr   )rU   rQ   s    r)   Úroot_entityÚ"AbstractEntityRegistry.root_entityâ  s   € à×Ñ Ó"Ð"r+   c                ó   • U $ r%   r&   rQ   s    r)   rR  Ú"AbstractEntityRegistry.entity_pathæ  s   € àˆr+   c                ó.   • U R                   R                  $ r%   )rq   r‡   rQ   s    r)   r‡   ÚAbstractEntityRegistry.mapperê  s   € à�{‰{×!Ñ!Ð!r+   c                ó   • g)NTr&   rQ   s    r)   Ú__bool__ÚAbstractEntityRegistry.__bool__î  s   € Ør+   c                óÎ   • [        U[        [        45      (       a  U R                  U   $ U[        R
                  ;   a  [        U [        R
                  U   5      $ [        X5      $ r%   )r  rê   rï   r(   r«   r¬   rî   rñ   rp   s     r)   r  ÚAbstractEntityRegistry._getitemñ  sU   € ô �fœs¤E˜l×+Ñ+Ø—9‘9˜VÑ$Ð$Ø”y×(Ñ(Ó(Ü  ¤y×'8Ñ'8¸Ñ'@ÓAÐAä Ó-Ð-r+   )rq   r—   r\   r;   r<   r(   N©r<   rX  rq   r.   rV  )r¸   r.   )r¸   r#   )r¸   rò   )r¸   r8   )rq   r   r¸   z:Union[_PathElementType, _PathRepresentation, PathRegistry])ræ   rö   r÷   rø   rú   rü   r-   rþ   r&  r  r  r_  rR  r‡   rf  r  r   rr   r  r&   r+   r)   rð   rð   �  s¯   ‡ ð€Ið €JØ€Ià-Ó-Ø	!Ó!Ø$Ó$ØÓð;*à1ð;*ð )ô;*ôz>ð ó#ó ð#ð óó ðð ó"ó ð"ôð.Øð.à	Cô.ö Ø‹ò r+   rð   c                  ó   • \ rS rSrSrSrg)rÇ   iÿ  Tr&   N)ræ   rö   r÷   rø   r  r  r&   r+   r)   rÇ   rÇ   ÿ  s	   † ð ƒMr+   rÇ   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú_ERDicti  c                ó   • Xl         g r%   ©Úregistry)rH   rp  s     r)   r&  Ú_ERDict.__init__  s   € Ø �r+   c                ó:   • [        U R                  U5      =X'   nU$ r%   )rñ   rp  )rH   r\   Úitems      r)   Ú__missing__Ú_ERDict.__missing__	  s   € Ü'¨¯©°sÓ;Ð;ˆ‰	�Dàˆr+   ro  N)rp  rÆ   )r\   r   r¸   rñ   )ræ   rö   r÷   rø   r&  rt  r  r&   r+   r)   rm  rm    s   † ô!÷r+   rm  c                  ón   ^ • \ rS rSrSrSr    SU 4S jjrSS jrS	S jr\	(       d  \r
SrU =r$ SrU =r$ )
rÆ   i  )Ú_cacheTc                óD   >• [         TU ]  X5        [        U 5      U l        g r%   )Úsuperr&  rm  rw  )rH   r<   rq   rå   s      €r)   r&  ÚCachingEntityRegistry.__init__  s   ø€ ô
 	‰Ñ˜Ô(Ü˜d“mˆ�r+   c                ó8   • U R                   R                  X5      $ r%   )rw  Úpop)rH   r\   Údefaults      r)   r|  ÚCachingEntityRegistry.pop  s   € Ø�{‰{�‰˜sÓ,Ð,r+   c                ó´   • [        U[        [        45      (       a  U R                  U   $ [        U[        5      (       a  [        X5      $ U R                  U   $ r%   )r  rê   rï   r(   r«   rî   rw  rp   s     r)   r  ÚCachingEntityRegistry._getitem"  sI   € Ü�fœs¤E˜l×+Ñ+Ø—9‘9˜VÑ$Ð$Ü˜¤	×*Ñ*Ü  Ó.Ð.à—;‘;˜vÑ&Ð&r+   rj  )r\   r   r}  r   r¸   r   r9  )ræ   rö   r÷   rø   rú   r  r&  r|  r  r   rr   r  Ú__classcell__)rå   s   @r)   rÆ   rÆ     s?   ø† ð €Ià€Mð$à1ð$ð )÷$ô-ô'ö ØŽõ r+   rÆ   c                ó   • g r%   r&   r'   s    r)   Úpath_is_entityrƒ  0  s   € à,/r+   c                ó   • g r%   r&   r'   s    r)   Úpath_is_propertyr…  4  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   r‡   r   Úrelationshipsr   r   r   Úsql.elementsr   Úsql.visitorsr    Úutil.typingr!   r"   r*   r-   Ú
attrgetterró   r™   rí   rÑ   r:   r~   r   Ú	getLoggerræ   rX   r2   r4   rþ   r	  r#   r  r=   r>   ÚInspectionAttrr«   rî   rñ   rð   rÇ   rm  rÆ   rƒ  r…  r&   r+   r)   Ú<module>r˜     s  ðò Eå "å Ý Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý å Ý ,Ý Ý Ý Ý 'æÝ,Ý/ÝÝ3Ý!Ý6Ý,Ý'Ý*Ý'äCåOð ×!Ò! )Ó,€GØ×#Ò# KÓ0€Ið �s‘)€Ø€ØØÐ-Ð/IÐIñÐ ð Ð,¨cÐ1Ñ2Ð ð "Ð"<Ñ=Ð Ø" 5Ð)CÀSÐ)HÑ#IÑJÐ ð ×Ò˜Ó!€ô*ð !$€�Ó #Ø€ôG;�;ô G;ôT?�<ô ?ô#�<ô #ñL !“N€Ô ô�×'Ñ'¨°cô ô.S�Lô SôlH�<ô HôVl˜\ô lô^Ð0ô ôˆd�3˜�8‰nô ôÐ2ô ö> ð0Øð0à	*ô0õ Mð ×(Ò(¨Ó5€NØ×*Ò*¨=Ó9Ñr+   