ó
    Ñ]j£“  ã                  ót  • % S r SSKJr  SSKJr  SSKrSSK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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+  S S$KJ,r,  S SKJr  S S%K,J-r-  S S&K,J.r.  S S'K/J0r0  S S(K1J2r2  S S)K1J3r3  S S*K1J4r4  \R$                  (       a�  SS+K5J6r6  SS,K5J7r7  SS-KJ8r8  SS.KJ9r9  SS/KJ:r:  SS0K;J<r<  SS1K=J>r>  SS2K?J@r@  SS3KAJBrB  SS4KAJCrC  SS5KDJErE  S S6KFJGrG  S S7KHJIrI  S S8KJJKrK  S S9KJJLrL  S S:K/JMrM  S S;K/JNrN  S S<KOJPrP  S S=KQJRrR  S S>KSJTrT  S S?K1JUrU  S S@K1JVrV  S SAK1JWrW  S SBK1JXrX  \" SC\	SD9rY\" SE\	SD9rZ " SF SG\$\Y   5      r[\\\SHSISJSK4   r]\" SL\	SD9r^\R¾                  " 5       r`SM\aSN'    " SO SP\#\^   \"\[\^   5      rb " SQ SR\b\Y   \\Y   5      rc " SS ST\[\Y   5      rd " SU SV\[\Y   5      re " SW SX\e\Y   \\Y   5      rfg)YzŸDescriptor properties are more "auxiliary" properties
that exist as configurational elements, but don't participate
as actively in the load/persist ORM loop.

é    )Úannotations)Úis_dataclassN)ÚAny)ÚCallable)ÚDict)ÚList)ÚNoReturn)ÚOptional)ÚSequence)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Ú
attributes)Úutil)Ú_DeclarativeMapped)ÚLoaderCallableStatus)ÚMapped)ÚPassiveFlag)ÚSQLORMOperations)Ú_AttributeOptions)Ú_IntrospectsAnnotations)Ú_MapsColumns)ÚMapperProperty)ÚPropComparator)Ú	_none_set)Úde_stringify_annotationé   )Úevent)Úexc)Úschema)Úsql©Ú
expression)Ú	operators)ÚBindParameter)Úget_args)Ú
is_fwd_ref)Ú	is_pep593)Ú_InstanceDict)Ú_RegistryType)ÚHistory)ÚInstrumentedAttribute)ÚQueryableAttribute)ÚORMCompileState)Ú_ClassScanMapperConfig)ÚMapper)ÚColumnProperty)ÚMappedColumn)ÚInstanceState)Ú
Connection)ÚRow)Ú_DMLColumnArgument)Ú	_InfoType)Ú
ClauseList)ÚColumnElement)ÚOperatorType)ÚColumn)ÚSelect)Ú_AnnotationScanType)ÚCallableReference)ÚDescriptorReference)ÚRODescriptorReferenceÚ_T)ÚboundÚ_PTc                  ó€   • \ rS rSr% SrSrS\S'   SrSrS\S'   SS	 jr	\
R                  4       SS
 jjrSS jrSrg)ÚDescriptorPropertyé[   zK:class:`.MapperProperty` which proxies access to a
user-defined descriptor.NúOptional[str]ÚdocFzDescriptorReference[Any]Ú
descriptorc                ó   • [        S5      e)Nz?This MapperProperty does not implement column loader strategies©ÚNotImplementedError©Úselfs    Ú\/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sqlalchemy/orm/descriptor_props.pyÚ_column_strategy_attrsÚ)DescriptorProperty._column_strategy_attrsf   s   € Ü!ØMó
ð 	
ó    c                ó   • [        5       e©NrN   )rQ   ÚstateÚdict_Úpassives       rR   Úget_historyÚDescriptorProperty.get_historyk   s   € ô "Ó#Ð#rU   c           	     ó”  ^ ^^• T m " U4S jS[         R                  5      nT R                  cI  [        TR                  T R
                  S 5      nTR                  T R
                  U5      (       a  UT l        T R                  c'  S	U 4S jjnS
U 4S jjnSU 4S jjn[        XdUS9T l        [         R                  " T R                  5      " T R                  R                  T R
                  T R                  UU 4S jT R                  T S9nU" T R
                  5      Ul        TR                  R                  T R
                  U5        g )Nc                  ó~   >• \ rS rSrSrSrSr\S	U 4S jj5       rS
S jr	\
R                  4       SU 4S jjjrSrg)Ú7DescriptorProperty.instrument_class.<locals>._ProxyImplév   FTc                ó   >• TR                   $ rW   )Úuses_objects©rQ   Úprops    €rR   rb   ÚDDescriptorProperty.instrument_class.<locals>._ProxyImpl.uses_objects{   s   ø€ à×(Ñ(Ð(rU   c                ó   • Xl         g rW   ©Úkey)rQ   rh   s     rR   Ú__init__Ú@DescriptorProperty.instrument_class.<locals>._ProxyImpl.__init__   s   € Ø•rU   c                ó(   >• TR                  XU5      $ rW   )r[   )rQ   rX   rY   rZ   rd   s       €rR   r[   ÚCDescriptorProperty.instrument_class.<locals>._ProxyImpl.get_history‚   s   ø€ ð ×'Ñ'¨°gÓ>Ð>rU   rg   N©ÚreturnÚbool)rh   Ústr©rX   úInstanceState[Any]rY   r,   rZ   r   rn   r.   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Úaccepts_scalar_loaderÚload_on_unexpireÚ
collectionÚpropertyrb   ri   r   ÚPASSIVE_OFFr[   Ú__static_attributes__)rd   s   €rR   Ú
_ProxyImplr_   v   sf   ø† Ø$)Ð!Ø#ÐØˆJàö)ó ð)ôð (3×'>Ñ'>ð	?à)ð?ð %ð?ð %ð	?ð
 ÷?ó ?rU   r}   c                ó4   >• [        U TR                  U5        g rW   )ÚsetattrÚname)ÚobjÚvaluerQ   s     €rR   ÚfsetÚ1DescriptorProperty.instrument_class.<locals>.fset‘   s   ø€ Ü˜˜TŸY™Y¨Õ.rU   c                ó2   >• [        U TR                  5        g rW   )Údelattrr€   ©r�   rQ   s    €rR   ÚfdelÚ1DescriptorProperty.instrument_class.<locals>.fdel”   s   ø€ Ü˜˜TŸY™YÕ'rU   c                ó0   >• [        U TR                  5      $ rW   )Úgetattrr€   r‡   s    €rR   ÚfgetÚ1DescriptorProperty.instrument_class.<locals>.fget—   s   ø€ Ü˜s D§I¡IÓ.Ð.rU   )rŒ   rƒ   rˆ   c                 ó&   >• TR                  T 5      $ rW   )Ú_comparator_factory)ÚmapperrQ   s   €€rR   Ú<lambda>Ú5DescriptorProperty.instrument_class.<locals>.<lambda>    s   ø€ �D×,Ñ,¨VÔ4rU   )rK   Úoriginal_property)r�   r   r‚   r   rn   ÚNone)r�   r   rn   r”   )r�   r   rn   r   )r   ÚAttributeImplrL   r‹   Úclass_rh   Ú_is_userland_descriptorrz   Úcreate_proxied_attributeÚparentrK   ÚimplÚclass_managerÚinstrument_attribute)	rQ   r�   r}   Údescrƒ   rˆ   rŒ   Ú
proxy_attrrd   s	   ``      @rR   Úinstrument_classÚ#DescriptorProperty.instrument_classs   sð   ú€ Øˆ÷	?œ×1Ñ1ô 	?ð( �?‰?Ñ"Ü˜6Ÿ=™=¨$¯(©(°DÓ9ˆDØ×-Ñ-¨d¯h©h¸×=Ñ=Ø"&�”à�?‰?Ñ"÷/÷(÷/ô '¨DÀ$ÑGˆDŒOä×8Ò8¸¿¹ÔIØ�K‰K×ÑØ�H‰HØ�O‰OÝ4Ø—‘Ø"ñ
ˆ
ñ % T§X¡XÓ.ˆ
ŒØ×Ñ×1Ñ1°$·(±(¸JÕGrU   ©rL   ©rn   z!Sequence[QueryableAttribute[Any]]rq   ©r�   úMapper[Any]rn   r”   )rs   rt   ru   rv   Ú__doc__rK   Ú__annotations__rb   Ú_links_to_entityrS   r   r{   r[   rŸ   r|   © rU   rR   rH   rH   [   se   ‡ ñ ð €CˆÓà€LØÐà(Ó(ô
ð  +×6Ñ6ð	$à!ð$ð ð$ð ð	$ð
 
õ$÷2HrU   rH   z
Column[_T]zMappedColumn[_T]zInstrumentedAttribute[_T]z
Mapped[_T]Ú_CCzFweakref.WeakKeyDictionary[Type[Any], Callable[[Any], Tuple[Any, ...]]]Ú_composite_gettersc                  ó¸  ^ • \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'    S+SSSSSSS.                 S,U 4S jjjjrS-U 4S jjrS.S jrS/S jr	\
" 5       rS/S jr\R                  " S5                          S0S j5       rS/S jr\R                  " S5      \R                  " S5                  S1S j5       5       r\R$                  S2S j5       r\R$                  \R                  " S5      S3S j5       5       rS2S jr\R,                  \R                  " S5      S4S j5       5       r\S5S j5       r\S6S j5       r\R                  " S5      S/S j5       rS/S  jr\R$                  S7S! j5       r  S8S" jr\R@                  4       S9S# jjr!    S:S$ jr" " S% S&\#RH                  \%   5      r& " S' S(\'\(   5      r)S;S) jr*S*r+U =r,$ )<ÚCompositePropertyé¹   zÞDefines a "composite" mapped attribute, representing a collection
of columns as one attribute.

:class:`.CompositeProperty` is constructed using the :func:`.composite`
function.

.. seealso::

    :ref:`mapper_composite`

z$Union[Type[_CC], Callable[..., _CC]]Úcomposite_classz#Tuple[_CompositeAttrType[Any], ...]Úattrsz=CallableReference[Optional[Callable[[_CC], Tuple[Any, ...]]]]Ú_generated_composite_accessorzType[Comparator[_CC]]Úcomparator_factoryNF)Úattribute_optionsÚactive_historyÚdeferredÚgroupr±   Úinfoc               óÌ  >• [         T
U ]  US9  [        U[        [        [
        R                  45      (       a  U4U-   U l        S U l        OXl        X€l        X0l	        X@l
        XPl        Ub  UOU R                  R                  U l        S U l        Ub  U R                   R#                  U5        [$        R&                  " U 5        U R)                  5         U R+                  5         g ©N)r²   )Úsuperri   Ú
isinstancer   rp   r$   r<   r¯   r®   r³   r´   rµ   Ú	__class__Ú
Comparatorr±   r°   r¶   Úupdater   Úset_creation_orderÚ_create_descriptorÚ_init_accessor)rQ   Ú_class_or_attrr²   r³   r´   rµ   r±   r¶   r¯   Úkwargsr»   s             €rR   ri   ÚCompositeProperty.__init__Ñ   sÌ   ø€ ô 	‰ÑÐ+<ÐÑ=ä�n¤v¬s´C×4EÑ4EÐ&F×GÑGØ(Ð*¨UÑ2ˆDŒJà#'ˆDÕ à#1Ô ØŒJà,ÔØ ŒØŒ
ð "Ñ-ñ à—‘×*Ñ*ð 	Ôð
 .2ˆÔ*ØÑØ�I‰I×Ñ˜TÔ"ä×Ò Ô%Ø×ÑÔ!Ø×ÑÕrU   c                óD   >• [         TU ]  U5        U R                  5         g rW   )r¹   rŸ   Ú_setup_event_handlers)rQ   r�   r»   s     €rR   rŸ   Ú"CompositeProperty.instrument_classù   s   ø€ Ü‰Ñ  Ô(Ø×"Ñ"Õ$rU   c                óð   • U R                   (       a  U R                  U5      $  UR                  nU" 5       $ ! [         a4  n[        R                  " SU R
                  R                   S35      UeS nAff = f)NzComposite class zX is not a dataclass and does not define a __composite_values__() method; can't get state)r°   Ú__composite_values__ÚAttributeErrorÚsa_excÚInvalidRequestErrorr®   rs   )rQ   r‚   ÚaccessorÚaes       rR   Ú_composite_values_from_instanceÚ1CompositeProperty._composite_values_from_instanceý   s   € Ø×-×-Ø×5Ñ5°eÓ<Ð<ð	"Ø ×5Ñ5�ñ  “zÐ!øô "ó Ü×0Ò0Ø& t×';Ñ';×'DÑ'DÐ&Eð F/ð /óð ð	ûðús   ¤7 ·
A5Á/A0Á0A5c                ó$   • U R                  5         g)zgInitialization which occurs after the :class:`.Composite`
has been associated with its parent mapper.

N)Ú_setup_arguments_on_columnsrP   s    rR   Údo_initÚCompositeProperty.do_init  s   € ð
 	×(Ñ(Õ*rU   c                ó^   ^ ^• SU 4S jjmSUU 4S jjnSUU 4S jjn[        TX5      T l        g)zdCreate the Python descriptor that will serve as
the access point on instances of the mapped class.

c                ó(  >• [         R                  " U 5      n[         R                  " U 5      nTR                  U;  aµ  TR                   Vs/ s H  n[        X5      PM     nnTR                  U;  a€  UR                  c  [        R                  " U5      (       dX  TR                  " U6 UTR                  '   UR                  R                  R                  UTR                  TR                  /5        UR                  TR                  S 5      $ s  snf rW   )r   Úinstance_dictÚinstance_staterh   Ú_attribute_keysr‹   r   Ú
issupersetr®   ÚmanagerÚdispatchÚrefreshÚ_COMPOSITE_FGETÚget)ÚinstancerY   rX   rh   ÚvaluesrQ   s        €rR   rŒ   Ú2CompositeProperty._create_descriptor.<locals>.fget  sà   ø€ Ü×,Ò,¨XÓ6ˆEÜ×-Ò-¨hÓ7ˆEà�x‰x˜uÓ$ð
 7;×6JÒ6JóÚ6J¨s”G˜HÖ*Ñ6Jð ð ð —8‘8 5Ó(Ø—I‘IÑ)´×1EÒ1EÀf×1MÑ1Mà&*×&:Ò&:¸FÐ&C�E˜$Ÿ(™(‘OØ—M‘M×*Ñ*×2Ñ2Ø˜t×3Ñ3°d·h±h°Zôð —9‘9˜TŸX™X tÓ,Ð,ùò#s   ÁDc                ób  >• [         R                  " U 5      n[         R                  " U 5      nUR                  T	R                     nUR
                  R                  (       a	  T" U 5      nO*UR                  T	R                  [        R                  5      nUR
                  R                   H  nU" X1XTR                  5      nM     XT	R                  '   Uc   T	R                   H  n[        XS 5        M     g [        T	R                  T	R                  U5      5       H  u  pq[        XU5        M     g rW   )r   rÖ   r×   rÚ   rh   rÛ   Ú_active_historyrÞ   r   ÚNO_VALUEÚsetrš   rØ   r   ÚziprÎ   )
rß   r‚   rY   rX   ÚattrÚpreviousÚfnrh   rŒ   rQ   s
           €€rR   rƒ   Ú2CompositeProperty._create_descriptor.<locals>.fset6  sê   ø€ Ü×,Ò,¨XÓ6ˆEÜ×-Ò-¨hÓ7ˆEØ—=‘= §¡Ñ*ˆDà�}‰}×,×,Ù ›>‘à Ÿ9™9 T§X¡XÔ/C×/LÑ/LÓM�à—m‘m×'Ô'�Ù˜5¨·9±9Ó=’ñ (à#�$—(‘(‰OØ‰}Ø×/Ô/�CÜ˜H¨4Ö0ò 0ô #&Ø×(Ñ(Ø×8Ñ8¸Ó?ö#‘J�Cô ˜H¨5Ö1ò	#rU   c                ó   >• [         R                  " U 5      n[         R                  " U 5      nUR                  TR                     nUR
                  R                  (       a%  T" U 5      nUR                  TR                  S 5        O*UR                  TR                  [        R                  5      nUR                  TR                     nUR
                  R                  XUR                  5        TR                   H  n[        XS 5        M     g rW   )r   r×   rÖ   rÚ   rh   rÛ   rã   Úpopr   rä   Úremoverš   rØ   r   )rß   rX   rY   rç   rè   rh   rŒ   rQ   s         €€rR   rˆ   Ú2CompositeProperty._create_descriptor.<locals>.fdelM  s¼   ø€ Ü×-Ò-¨hÓ7ˆEÜ×,Ò,¨XÓ6ˆEØ—=‘= §¡Ñ*ˆDà�}‰}×,×,Ù ›>�Ø—	‘	˜$Ÿ(™( DÕ)à Ÿ9™9 T§X¡XÔ/C×/LÑ/LÓM�à—=‘= §¡Ñ*ˆDØ�M‰M× Ñ  °$·)±)Ô<Ø×+Ô+�Ü˜ tÖ,ò ,rU   N)rß   r   rn   r   )rß   r   r‚   r   rn   r”   )rß   r   rn   r”   )rz   rL   )rQ   rƒ   rˆ   rŒ   s   `  @rR   r¿   Ú$CompositeProperty._create_descriptor  s,   ù€ ÷	-÷6	2ð 	2÷.	-ð 	-ô  # 4¨Ó4ˆ�rU   úsqlalchemy.orm.propertiesc
                ó  • [         R                  R                  R                  n
U R                  c  Uc  U R                  XS5        Un[        U5      (       a  [        U5      S   nU(       aŠ  U R                  c}  [        U[        5      (       d  [        USS9(       aS  UcE  [        US5      (       a  UR                  O
[        U5      n[        R                  " SU SU S35      e[        X;USS9nX°l        [!        U R                  5      (       a  U R#                  XX4U5        OXU R$                   HH  n[        XÚ[&        R(                  45      (       d  M%  UR*                  b  M4  [        R                  " S	5      e   U R-                  5         g )
Nr   T)Úcheck_genericÚ__forward_arg__zCan't use forward ref z9 for composite class argument; set up the type as Mapped[Ú])Úinclude_genericzIComposite class column arguments must be named unless a dataclass is used)r   Ú	preloadedÚorm_propertiesr5   r®   Ú_raise_for_requiredr+   r)   rº   rp   r*   Úhasattrró   rÊ   ÚArgumentErrorr   r   Ú_setup_for_dataclassr¯   r#   r>   r€   rÀ   )rQ   Ú	decl_scanÚregistryÚclsÚoriginating_modulerh   Úmapped_containerÚ
annotationÚextracted_mapped_annotationÚis_dataclass_fieldr5   ÚargumentÚstr_argrç   s                 rR   Údeclarative_scanÚ"CompositeProperty.declarative_scan_  ss  € ô —~‘~×4Ñ4×AÑAˆà× Ñ Ñ(Ø+Ñ3à×$Ñ$ SÔ.Ø.ˆä�X×ÑÜ Ó)¨!Ñ,ˆHæ˜×,Ñ,Ñ4Ü˜(¤C×(Ñ(¬JØ¨÷-ð &Ñ-ô # 8Ð->×?Ñ?ð !×0Ò0ä  ›]ð ô
 !×.Ò.Ø0°°
ð ;EØELÀIÈQðPóð ô 3ØÐ#5Àtñ�ð $,Ô ä˜×,Ñ,×-Ñ-Ø×%Ñ%Ø S¸cõð Ÿ
œ
�ä˜t´F·M±MÐ%B×CÓCØŸ	™	Ó)ä ×.Ò.ð5óð ñ #ð 	×ÑÕrU   c                óØ  ^• [        U R                  5      (       a¬  [        U R                  S5      (       d‘  [        R                  " U R                  5      n[
        R                  " UR                  R                  5        Vs/ s H  o"R                  PM     sn6 m[        UR                  5      S:X  a  U4S jU l        OTU l        U R                  b‘  [        U R                  [        5      (       aq  U R                  [        ;  a\  U R                  b  U R                  [        U R                  '   g [        U R                  S5      (       a  S [        U R                  '   g g g g g s  snf )NrÈ   r   c                ó   >• T" U 5      4$ rW   r¨   )r�   Úgetters    €rR   r‘   Ú2CompositeProperty._init_accessor.<locals>.<lambda>¤  s   ø€ Á&ÈÃ+ÁrU   c                ó"   • U R                  5       $ rW   ©rÈ   )r�   s    rR   r‘   r  ³  s   €  × 8Ñ 8Ô :rU   )r   r®   rù   ÚinspectÚ	signatureÚoperatorÚ
attrgetterÚ
parametersrà   r€   Úlenr°   rº   Útyperª   )rQ   ÚinspÚpr
  s      @rR   rÀ   Ú CompositeProperty._init_accessor›  s2  ø€ Ü˜×,Ñ,×-Ñ-´gØ× Ñ Ð"8÷7
ñ 7
ô ×$Ò$ T×%9Ñ%9Ó:ˆDÜ×(Ò(Ø"&§/¡/×"8Ñ"8Ô":Ó;Ò":˜Q—&”&Ñ":Ñ;ðˆFô �4—?‘?Ó# qÓ(Ü5O�Õ2à5;�Ô2ð × Ñ Ñ,Ü˜4×/Ñ/´×6Ñ6Ø×$Ñ$Ô,>Ó>à×1Ñ1Ñ=à×6Ñ6ô # 4×#7Ñ#7Ò8ô ˜×-Ñ-Ð/E×FÑFá:ô # 4×#7Ñ#7Ò8ð Gð ?ð 7ð -ùò <s   ÂE'zsqlalchemy.orm.decl_basec                ó0  • [         R                  R                  R                  n[         R                  R                  n[
        R                  " U R                  5      n[        R                  " UR                  R                  5       U R                  5       Hû  u  pšU	cY  [        R                  " S[        U R                  5       SU R                  R                    S[        UR                  5       35      eU
c  U" 5       n
U =R                  U
4-  sl        [#        X¦5      (       a-  U
R%                  UUUUUU	R&                  U	R(                  5        M¾  [#        U
[*        R,                  5      (       d  Mß  UR/                  U	R&                  U
5        Mý     g )Nznumber of composite attributes z3 exceeds that of the number of attributes in class Ú )r   rö   r÷   r5   Úorm_decl_baser  r  r®   Ú	itertoolsÚzip_longestr  rà   r¯   rÊ   rú   r  rs   rº   Údeclarative_scan_for_compositer€   r  r#   r>   Ú_undefer_column_name)rQ   rü   rý   rþ   rÿ   rh   r5   Ú	decl_baser  Úparamrç   s              rR   rû   Ú&CompositeProperty._setup_for_dataclass¶  sA  € ô —~‘~×4Ñ4×AÑAˆä—N‘N×0Ñ0ˆ	ä× Ò  ×!5Ñ!5Ó6ˆÜ$×0Ò0Ø�O‰O×"Ñ"Ó$ d§j¡jö
‰KˆEð ‰}Ü×*Ò*Ø5Ü˜4Ÿ:™:“Ð'ð (Aà×+Ñ+×4Ñ4Ð5°Q´s¸4¿?¹?Ó7KÐ6LðNóð ð ‰|á#“~�Ø—
’
˜t˜gÑ%•
ä˜$×-Ñ-Ø×3Ñ3ØØØØ&ØØ—J‘JØ×$Ñ$öô ˜D¤&§-¡-×0Ó0Ø×.Ñ.¨u¯z©z¸4Ö@ò5
rU   c                ó–   • U R                    Vs/ s H-  n[        U R                  R                  UR                  5      PM/     sn$ s  snf rW   )Úpropsr‹   r™   r–   rh   rc   s     rR   Ú_comparable_elementsÚ&CompositeProperty._comparable_elementsá  s3   € àBFÇ*Â*ÓMÂ*¸$”˜Ÿ™×*Ñ*¨D¯H©HÖ5Á*ÑMÐMùÒMs   �4Azorm.propertiesc                ó’  • / n[         R                  R                  R                  nU R                   GH  n[        U[        5      (       a  U R                  R                  USS9nO›[        U[        R                  5      (       a  U R                  R                  U   nOb[        X25      (       a$  U R                  R                  UR                     nO.[        U[        R                  5      (       a  UR                  nOS n[        U[         5      (       d  ["        R$                  " SU< 35      eUR'                  U5        GM     U$ )NF)Ú_configure_mapperszYComposite expects Column objects or mapped attributes/attribute names as arguments, got: )r   rö   r÷   r5   r¯   rº   rp   r™   Úget_propertyr#   r>   Ú_columntopropertyÚcolumnr   r/   rz   r   rÊ   rú   Úappend)rQ   r#  r5   rç   rd   s        rR   r#  ÚCompositeProperty.propså  s  € ð ˆÜ—~‘~×4Ñ4×AÑAˆà—J•JˆDÜ˜$¤×$Ñ$Ø—{‘{×/Ñ/°ÈÐ/ÐO‘Ü˜D¤&§-¡-×0Ñ0Ø—{‘{×4Ñ4°TÑ:‘Ü˜D×/Ñ/Ø—{‘{×4Ñ4°T·[±[ÑA‘Ü˜D¤*×"BÑ"B×CÑCØ—}‘}‘à�ä˜d¤N×3Ñ3Ü×*Ò*ðEØEIÁHðNóð ð
 �L‰L˜×ñ% ð& ˆrU   c                ó   • U R                   $ rW   )r$  rP   s    rR   rS   Ú(CompositeProperty._column_strategy_attrs   s   € Ø×(Ñ(Ð(rU   c                ó  • [         R                  R                  R                  nU R                   Vs/ s HD  n[        U[        R                  U45      (       d  M&  [        X!5      (       a  UR                  OUPMF     sn$ s  snf rW   )	r   rö   r÷   r5   r¯   rº   r#   r>   r*  )rQ   r5   Úas      rR   ÚcolumnsÚCompositeProperty.columns  sl   € ô —~‘~×4Ñ4×AÑAˆð —Z’Zó
â�Ü˜!œfŸm™m¨\Ð:×;ó ;œ
 1×3Ñ3ˆA�HŠH¸Ò:Ùñ
ð 	
ùò 
s   ³%BÁ"Bc                ó   • U $ rW   r¨   rP   s    rR   Úmapper_property_to_assignÚ+CompositeProperty.mapper_property_to_assign  s   € àˆrU   c                óf   • U R                    Vs/ s H  oR                  b  M  US4PM     sn$ s  snf )Nr   )r1  Útable)rQ   Úcs     rR   Úcolumns_to_assignÚ#CompositeProperty.columns_to_assign  s(   € à $§¢Ó@¢˜1·±“��A“¡Ñ@Ð@ùÒ@s   �.£.c                ó0  • [         R                  R                  R                  nU R                   Hb  n[        X!5      (       d  M  UnU R                  Ul        U R                  (       a  U R                  Ul        SUl        U R                  Ul	        Md     g)zgPropagate configuration arguments made on this composite
to the target columns, for those that apply.

))r´   T)Ú
instrumentTN)
r   rö   r÷   r4   r#  rº   r³   r´   Ústrategy_keyrµ   )rQ   r4   rd   Úcprops       rR   rÑ   Ú-CompositeProperty._setup_arguments_on_columns  sm   € ô Ÿ™×6Ñ6×EÑEˆà—J”JˆDÜ˜d×3Ñ3Ùà�à#'×#6Ñ#6ˆEÔ Ø�}�}Ø!%§¡�”Ø%O�Ô"ØŸ*™*ˆEŽKò rU   c                ó¼  ^ ^•       SU4S jjn        SUU 4S jjn          SU 4S jjm      SU 4S jjn        SU 4S jjn[         R                  " T R                  SUSS9  [         R                  " T R                  S	USS9  [         R                  " T R                  S
USSS9  [         R                  " T R                  SUSSS9  [         R                  " T R                  SUSSS9  T R                  R                  T R                     nUR
                  UR                  l        T R                  UR                  R
                  l        g)z>Establish events that populate/expire the composite attribute.c                ó   >• T" XS SS9  g )NF©Ú
is_refreshr¨   )rX   ÚcontextÚ_load_refresh_handlers     €rR   Úload_handlerÚ=CompositeProperty._setup_event_handlers.<locals>.load_handler,  s   ø€ ñ " %°$À5ÓIrU   c                óš   >• U(       a:  TR                   1R                  TR                  5      R                  U5      (       a	  T" XUSS9  g g )NTrB  )rh   ÚunionrØ   Úintersection)rX   rD  Úto_loadrE  rQ   s      €€rR   Úrefresh_handlerÚ@CompositeProperty._setup_event_handlers.<locals>.refresh_handler1  sD   ø€ ö Ø—‘�
× Ñ  ×!5Ñ!5Ó6ß‰l˜7Ó#õ$ñ & e°gÈ$ÓOð$rU   c                ó0  >• U R                   nU(       a  UTR                  L a  TR                  U;   a  g TR                   H
  nXT;  d  M
    g    TR                  " TR                   Vs/ s H  o`R                   U   PM     sn6 UTR                  '   g s  snf rW   )ÚdictrÝ   rh   rØ   r®   )rX   rD  rK  rC  rY   Úkrh   rQ   s          €rR   rE  ÚFCompositeProperty._setup_event_handlers.<locals>._load_refresh_handler=  s†   ø€ ð —J‘JˆEö  '¨T×-AÑ-AÒ"AØ—(‘(˜eÓ#Øð
 ×)Ô)�Ø•>Ùñ *ð #×2Ò2Ø-1×-AÒ-AÓBÒ-A c—*‘*˜S”/Ñ-AÑBðˆE�$—(‘(ŠOùÚBs   Á)Bc                ó¬   >• Ub)  [        TR                  5      R                  U5      (       a'  U R                  R	                  TR
                  S 5        g g rW   )rå   rØ   rJ  rO  rì   rh   )rX   ÚkeysrQ   s     €rR   Úexpire_handlerÚ?CompositeProperty._setup_event_handlers.<locals>.expire_handler^  sA   ø€ ð ‰|œs 4×#7Ñ#7Ó8×EÑEÀd×KÑKØ—
‘
—‘˜tŸx™x¨Õ.ð  LrU   c                óR   >• UR                   R                  TR                  S5        g)zºAfter an insert or update, some columns may be expired due
to server side defaults, or re-populated due to client side
defaults.  Pop out the composite value here so that it
recreates.

N)rO  rì   rh   )r�   Ú
connectionrX   rQ   s      €rR   Úinsert_update_handlerÚFCompositeProperty._setup_event_handlers.<locals>.insert_update_handlerd  s   ø€ ð �J‰J�N‰N˜4Ÿ8™8 TÕ*rU   Úafter_insertT)ÚrawÚafter_updateÚload)r[  Ú	propagaterÜ   ÚexpireN)rX   rr   rD  r1   rn   r”   )rX   rr   rD  r1   rK  úOptional[Sequence[str]]rn   r”   )
rX   rr   rD  r1   rK  r`  rC  ro   rn   r”   )rX   rr   rS  r`  rn   r”   )r�   r¤   rW  r7   rX   rr   rn   r”   )	r!   Úlistenr™   r›   rh   rÛ   rš   r³   rã   )rQ   rF  rL  rT  rX  rž   rE  s   `     @rR   rÅ   Ú'CompositeProperty._setup_event_handlers)  s¥  ù€ ð	JØ%ð	JØ0?ð	Jà÷	Jð

	PØ%ð
	Pà$ð
	Pð -ð
	Pð ÷	
	Pð 
	Pð	Ø%ð	à$ð	ð -ð	ð ð		ð
 ÷	ðB	/Ø%ð	/Ø-Dð	/à÷	/ð	+Øð	+à"ð	+ð &ð	+ð ÷		+ô 	�ŠØ�K‰K˜Ð)>ÀDò	
ô 	�ŠØ�K‰K˜Ð)>ÀDò	
ô 	�ŠØ�K‰K˜ °4À4ò	
ô 	�ŠØ�K‰K˜ O¸Èò	
ô 	�ŠØ�K‰K˜ >°tÀtò	
ð —[‘[×.Ñ.¨t¯x©xÑ8ˆ
Ø#-×#6Ñ#6ˆ
�‰Ô Ø37×3FÑ3Fˆ
�‰× Ñ Õ0rU   c                óX   • U R                    Vs/ s H  oR                  PM     sn$ s  snf rW   )r#  rh   rc   s     rR   rØ   Ú!CompositeProperty._attribute_keysˆ  s    € à%)§Z¢ZÓ0¢Z˜T—”¡ZÑ0Ð0ùÒ0s   �'c                ó¼   ^ ^^• T R                   (       a  T R                   mOSS jmT R                   Vs/ s H  oR                  PM     snmSUUU 4S jjnU$ s  snf )Nc                ó"   • U R                  5       $ rW   r  )Úvals    rR   Ú
get_valuesÚOCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.get_values“  s   € Ø×/Ñ/Ó1Ð1rU   c           
     ó°   >• U R                  [        TT" U R                  TR                  5      5      5       VVs0 s H  u  pX_M	     snn5        g s  snnf rW   )r½   ræ   rì   rh   )Ú	dest_dictrh   rg  r¯   rh  rQ   s      €€€rR   ÚpopulateÚMCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.populate˜  sW   ø€ Ø×Ñô %(Ø™z¨)¯-©-¸¿¹Ó*AÓBô%ôò%™˜ð ’Hñ%òõùós   »A
)rg  r   rn   z
Tuple[Any])rk  zDict[str, Any]rn   r”   )r°   r#  rh   )rQ   rd   rl  r¯   rh  s   `  @@rR   Ú)_populate_composite_bulk_save_mappings_fnÚ;CompositeProperty._populate_composite_bulk_save_mappings_fnŒ  sP   ú€ ð ×-×-Ø×;Ñ;‰Jô2ð '+§j¢jÓ1¢j˜d—”¡jÑ1ˆ÷	ñ 	ð ˆùò 2s   µAc                ó~  • / n/ nSnU R                    HÇ  nUR                  nUR                  U   R                  R	                  X5      n	U	R                  5       (       a  SnU	R                  5       n
U
(       a  UR                  U
5        OUR                  S5        U	R                  (       a  UR                  U	R                  5        M¶  UR                  S5        MÉ     U(       a4  [        R                  " U R                  " U6 /SU R                  " U6 /5      $ [        R                  " SU R                  " U6 /S5      $ )z>Provided for userland code that uses attributes.get_history().FTNr¨   )r#  rh   rÚ   rš   r[   Úhas_changesÚnon_deletedÚextendr+  Údeletedr   r.   r®   )rQ   rX   rY   rZ   Úaddedrt  Úhas_historyrd   rh   Úhistrr  s              rR   r[   ÚCompositeProperty.get_history¤  s  € ð ˆØˆàˆØ—J”JˆDØ—(‘(ˆCØ—=‘= Ñ%×*Ñ*×6Ñ6°uÓDˆDØ×Ñ×!Ñ!Ø"�à×*Ñ*Ó,ˆKÞØ—‘˜[Õ)à—‘˜TÔ"Ø�|�|Ø—‘˜tŸ|™|Ö,à—‘˜tÖ$ñ ö  Ü×%Ò%Ø×%Ò% uÐ-Ð.ØØ×%Ò% wÐ/Ð0óð ô ×%Ò% b¨4×+?Ò+?ÀÐ+GÐ*HÈ"ÓMÐMrU   c                ó$   • U R                  X5      $ rW   )r±   )rQ   r�   s     rR   r�   Ú%CompositeProperty._comparator_factoryÉ  s   € ð ×&Ñ& tÓ4Ð4rU   c                  óN   ^ • \ rS rSr    SU 4S jjr        SS jrSrU =r$ )Ú!CompositeProperty.CompositeBundleiÎ  c                óH   >• Xl         [        TU ]  " UR                  /UQ76   g rW   )rz   r¹   ri   rh   )rQ   Ú	property_Úexprr»   s      €rR   ri   Ú*CompositeProperty.CompositeBundle.__init__Ï  s    ø€ ð
 &ŒMÜ‰GÒ˜YŸ]™]Ð2¨TÔ2rU   c                ó   ^ ^• SUU 4S jjnU$ )Nc                ól   >• TR                   R                  " T Vs/ s H
  o" U 5      PM     sn6 $ s  snf rW   )rz   r®   )ÚrowÚprocÚprocsrQ   s     €€rR   r„  ÚDCompositeProperty.CompositeBundle.create_row_processor.<locals>.procÝ  s3   ø€ Ø—}‘}×4Ò4Ù,1Ó2ªE D�d˜3–i©EÑ2ðð ùÚ2s   œ1)rƒ  zRow[Any]rn   r   r¨   )rQ   Úqueryr…  Úlabelsr„  s   ` `  rR   Úcreate_row_processorÚ6CompositeProperty.CompositeBundle.create_row_processor×  s   ù€ ÷ð ð
 ˆKrU   )rz   )r~  zComposite[_T]r  r;   )r‡  zSelect[Any]r…  z#Sequence[Callable[[Row[Any]], Any]]rˆ  úSequence[str]rn   zCallable[[Row[Any]], Any])rs   rt   ru   rv   ri   r‰  r|   Ú__classcell__©r»   s   @rR   ÚCompositeBundler|  Î  sJ   ø† ð	3à$ð	3ð ÷	3ð	àð	ð 7ð	ð "ð		ð
 '÷	ò 	rU   rŽ  c                  ó  • \ rS rSr% SrSrS\S'   \R                  SS j5       r	SS jr
\R                  SS j5       r    SS	 jr\R                  SS
 j5       rSS jrSS jrSS jrSS jrSS jrSS jr      SS jrSrg)ÚCompositeProperty.Comparatoriä  ao  Produce boolean, comparison, and other operators for
:class:`.Composite` attributes.

See the example in :ref:`composite_operations` for an overview
of usage , as well as the documentation for :class:`.PropComparator`.

.. seealso::

    :class:`.PropComparator`

    :class:`.ColumnOperators`

    :ref:`types_operators`

    :attr:`.TypeEngine.comparator_factory`

Nz%RODescriptorReference[Composite[_PT]]rd   c                óB   • [         R                  " U R                  SS06$ )Nrµ   F)r&   r;   r$  rP   s    rR   ÚclausesÚ$CompositeProperty.Comparator.clausesü  s&   € ä×(Ò(Ø"×7Ñ7ðØñð rU   c                ó   • U R                   $ rW   r%   rP   s    rR   Ú__clause_element__Ú/CompositeProperty.Comparator.__clause_element__  s   € Ø—?‘?Ð"rU   c                óÐ   • U R                   R                  U R                  U R                  U R                  R                  S.5      n[
        R                  U R                  U5      $ )N)ÚparententityÚparentmapperÚ	proxy_key)r’  Ú	_annotateÚ_parententityrd   rh   r¬   rŽ  )rQ   r’  s     rR   r&   Ú'CompositeProperty.Comparator.expression  sQ   € à—l‘l×,Ñ,à$(×$6Ñ$6Ø$(×$6Ñ$6Ø!%§¡§¡ñóˆGô %×4Ñ4°T·Y±YÀÓHÐHrU   c                ó  • [        U[        5      (       a  UR                  nUc'  U R                  R                   Vs/ s H  nS PM     nnO‘[        U R                  R
                  [        5      (       a@  [        XR                  R
                  5      (       a  U R                  R                  U5      nO([        R                  " SU R                  < SU< 35      e[        [        U R                  U5      5      $ s  snf )Nz!Can't UPDATE composite attribute z to )rº   r(   r‚   rd   rØ   r®   r  rÎ   rÊ   rú   Úlistræ   r$  )rQ   r‚   rh   rà   s       rR   Ú_bulk_update_tuplesÚ0CompositeProperty.Comparator._bulk_update_tuples  sÑ   € ô ˜%¤×/Ñ/ØŸ™�ð ‰}Ø*.¯)©)×*CÒ*CÓDÒ*C 3›$Ñ*C�ÐD�Ü˜DŸI™I×5Ñ5´t×<Ñ<ÄØ—y‘y×0Ñ0÷Bñ Bð Ÿ™×BÑBØó‘ô ×*Ó*à—y”y¢%ð)óð ô
 œ˜D×5Ñ5°vÓ>Ó?Ð?ùò Es   ½C<c                óø   • U R                   (       aO  U R                  R                   Vs/ s H-  n[        U R                   R                  UR
                  5      PM/     sn$ U R                  R                  $ s  snf rW   )Ú_adapt_to_entityrd   r$  r‹   Úentityrh   rc   s     rR   r$  Ú1CompositeProperty.Comparator._comparable_elements(  se   € à×$×$ð !%§	¡	× >Ò >óâ >˜ô ˜D×1Ñ1×8Ñ8¸$¿(¹(ÖCÙ >ñð ð
 —y‘y×5Ñ5Ð5ùòs   ª4A7c                óB   • U R                  [        R                  U5      $ rW   )Ú_comparer'   Úeq©rQ   Úothers     rR   Ú__eq__Ú#CompositeProperty.Comparator.__eq__2  ó   € Ø—=‘=¤§¡¨uÓ5Ð5rU   c                óB   • U R                  [        R                  U5      $ rW   )r§  r'   Úner©  s     rR   Ú__ne__Ú#CompositeProperty.Comparator.__ne__5  r­  rU   c                óB   • U R                  [        R                  U5      $ rW   )r§  r'   Últr©  s     rR   Ú__lt__Ú#CompositeProperty.Comparator.__lt__8  r­  rU   c                óB   • U R                  [        R                  U5      $ rW   )r§  r'   Úgtr©  s     rR   Ú__gt__Ú#CompositeProperty.Comparator.__gt__;  r­  rU   c                óB   • U R                  [        R                  U5      $ rW   )r§  r'   Úler©  s     rR   Ú__le__Ú#CompositeProperty.Comparator.__le__>  r­  rU   c                óB   • U R                  [        R                  U5      $ rW   )r§  r'   Úger©  s     rR   Ú__ge__Ú#CompositeProperty.Comparator.__ge__A  r­  rU   c                ó¶  • Uc$  S /[        U R                  R                  5      -  nOU R                  R                  U5      n[	        U R                  R                  U5       VVs/ s H  u  pEU" XE5      PM     nnnU R
                  (       a/  U R                  c   eU Vs/ s H  opR                  U5      PM     nn[        R                  " U6 $ s  snnf s  snf rW   )	r  rd   r$  rÎ   ræ   r£  Úadapterr$   Úand_)rQ   r  rª  rà   r0  ÚbÚcomparisonsÚxs           rR   r§  Ú%CompositeProperty.Comparator._compareK  sÀ   € ð ‰}Ø˜¤# d§i¡i×&DÑ&DÓ"EÑE‘àŸ™×BÑBÀ5ÓI�ô   §	¡	× >Ñ >ÀÔGôâG‘D�Añ ˜–ÙGð ñ ð ×$×$Ø—|‘|Ñ/Ð/Ð/Ù8CÓDº°1Ÿ|™|¨Až¹�ÐDÜ—8’8˜[Ð)Ð)ùóùò Es   Á&CÂ!Cr¨   )rn   r;   )rn   z&CompositeProperty.CompositeBundle[_PT])r‚   r   rn   z(Sequence[Tuple[_DMLColumnArgument, Any]]r¢   )rª  r   rn   úColumnElement[bool])r  r=   rª  r   rn   rÉ  )rs   rt   ru   rv   r¥   Ú__hash__r¦   r   Úmemoized_propertyr’  r•  r&   r   r$  r«  r°  r´  r¸  r¼  rÀ  r§  r|   r¨   rU   rR   r¼   r�  ä  sº   ‡ ñ	ð& ˆà3Ó3à	×	Ñ	ó	ó 
 ð	ô
	#ð 
×	Ñ	ó	Ió 
 ð	Ið	@Øð	@à5ô	@ð0 
×	Ñ	ó	6ó 
 ð	6ô	6ô	6ô	6ô	6ô	6ô	6ð	*Ø(ð	*Ø14ð	*à ÷	*rU   r¼   c                ót   • [        U R                  R                  R                  5      S-   U R                  -   $ )NÚ.)rp   r™   r–   rs   rh   rP   s    rR   Ú__str__ÚCompositeProperty.__str__\  s+   € Ü�4—;‘;×%Ñ%×.Ñ.Ó/°#Ñ5¸¿¹Ñ@Ð@rU   )r°   r³   r¯   r±   r®   r´   rL   rµ   rW   )rÁ   zCUnion[None, Type[_CC], Callable[..., _CC], _CompositeAttrType[Any]]r¯   z_CompositeAttrType[Any]r²   úOptional[_AttributeOptions]r³   ro   r´   ro   rµ   rJ   r±   zOptional[Type[Comparator[_CC]]]r¶   úOptional[_InfoType]rÂ   r   r£   )r‚   r©   rn   zTuple[Any, ...]©rn   r”   )rü   r2   rý   r-   rþ   ú	Type[Any]rÿ   rJ   rh   rp   r   zOptional[Type[Mapped[Any]]]r  úOptional[_AnnotationScanType]r  rÔ  r  ro   rn   r”   )rü   r2   rý   r-   rþ   rÓ  rÿ   rJ   rh   rp   rn   r”   r¢   )rn   zSequence[MapperProperty[Any]])rn   zSequence[Column[Any]])rn   zOptional[MapperProperty[_CC]])rn   z$List[Tuple[schema.Column[Any], int]])rn   r‹  )rn   z Callable[[Dict[str, Any]], None]rq   )r�   r¤   rn   zComposite.Comparator[_CC])rn   rp   )-rs   rt   ru   rv   r¥   r¦   ri   rŸ   rÎ   rÒ   ÚobjectrÝ   r¿   r   Úpreload_moduler  rÀ   rû   rË  r$  r#  rS   Únon_memoized_propertyr1  rz   r4  r9  rÑ   rÅ   rØ   rn  r   r{   r[   r�   Úorm_utilÚBundlerD   rŽ  r   rF   r¼   rÎ  r|   rŒ  r�  s   @rR   r¬   r¬   ¹   sF  ø‡ ñ
ð :Ó9Ø.Ó.ð$ó ð .Ó-ð ð	&ð :>Ø$ØØ#Ø>BØ$(ñ&ð
ð&ð
 (ð&ð 7ð&ð ð&ð ð&ð ð&ð <ð&ð "ð&ð ÷&ñ &÷P%ô"ô+ñ “h€OôH5ðT 
×ÒÐ4Ó5ð9à)ð9ð  ð9ð ð	9ð
 *ð9ð ð9ð 6ð9ð 2ð9ð &Cð9ð !ð9ð 
ó9ó 6ð9ôvð6 
×ÒÐ4Ó5Ø	×ÒÐ3Ó4ð'Aà)ð'Að  ð'Að ð	'Að
 *ð'Að ð'Að 
ó'Aó 5ó 6ð'AðR 
×ÑóNó ðNð 
×ÑØ	×ÒÐ)Ó*óó +ó ðô2)ð 
×ÑØ	×ÒÐ)Ó*ó
ó +ó  ð
ð óó ðð óAó ðAð 
×ÒÐ)Ó*ó%ó +ð%ô&[Gð~ 
×Ñó1ó ð1ðà	)ôð8  +×6Ñ6ð	#Nà!ð#Nð ð#Nð ð	#Nð
 
õ#NðJ5Ø!ð5à	"ô5ô
˜(Ÿ/™/¨"Ñ-ô ô,v*�^ CÑ(ô v*÷pAò ArU   r¬   c                  ó   • \ rS rSrSrSrSrg)Ú	Compositei`  a7  Declarative-compatible front-end for the :class:`.CompositeProperty`
class.

Public constructor is the :func:`_orm.composite` function.

.. versionchanged:: 2.0 Added :class:`_orm.Composite` as a Declarative
   compatible subclass of :class:`_orm.CompositeProperty`.

.. seealso::

    :ref:`mapper_composite`

Tr¨   N©rs   rt   ru   rv   r¥   Úinherit_cacher|   r¨   rU   rR   rÛ  rÛ  `  s   † ñð €MÚrU   rÛ  c                  óB   ^ • \ rS rSrSr    SS jrSU 4S jjrSrU =r$ )ÚConcreteInheritedPropertyis  a  A 'do nothing' :class:`.MapperProperty` that disables
an attribute on a concrete subclass that is only present
on the inherited mapper, not the concrete classes' mapper.

Cases where this occurs include:

* When the superclass mapper is mapped against a
  "polymorphic union", which includes all attributes from
  all subclasses.
* When a relationship() is configured on an inherited mapper,
  but not on the subclass mapper.  Concrete mappers require
  that relationship() is configured explicitly on each
  subclass.

c                óÎ   • S nU R                   R                  5        H8  nUR                  U R                     n[	        USS 5      c  M,  UR
                  n  O   Uc   eU" WU5      $ )Nr±   )r™   Úiterate_to_rootÚ_propsrh   r‹   r±   )rQ   r�   Úcomparator_callableÚmr  s        rR   r�   Ú-ConcreteInheritedProperty._comparator_factory„  sm   € ð #Ðà—‘×,Ñ,Ö.ˆAØ—‘˜Ÿ™Ñ"ˆAÜ�qÐ.°Ó5ÓAØ&'×&:Ñ&:Ð#Ùñ	 /ð
 #Ñ.Ð.Ð.Ù" 1 fÓ-Ð-rU   c                ój   >^ ^• [         TT ]  5         SU 4S jjm " U U4S jS5      nU" 5       T l        g )Nc            	     óp   >• [        ST R                  < ST R                  < ST R                  < S35      e)Nz	Concrete z does not implement attribute z9 at the instance level.  Add this property explicitly to rÍ  )rÉ   r™   rh   rP   s   €rR   ÚwarnÚ0ConcreteInheritedProperty.__init__.<locals>.warn”  s*   ø€ Ý ð —;”; §¤¨$¯+¬+ð7óð rU   c                  óH   >• \ rS rSrSU4S jjrSU4S jjrS	U U4S jjrSrg)
ÚDConcreteInheritedProperty.__init__.<locals>.NoninheritedConcretePropiœ  c                ó   >• T" 5         g rW   r¨   )Úsr�   r‚   rè  s      €rR   Ú__set__ÚLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__set__�  ó   ø€ Ù•rU   c                ó   >• T" 5         g rW   r¨   )rí  r�   rè  s     €rR   Ú
__delete__ÚOConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__delete__   rð  rU   c                ó2   >• Uc  TR                   $ T" 5         g rW   r¡   )rí  r�   ÚownerrQ   rè  s      €€rR   Ú__get__ÚLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__get__£  s   ø€ Ø‘;ØŸ?™?Ð*Ù•rU   r¨   N)rí  r   r�   r   r‚   r   rn   r	   )rí  r   r�   r   rn   r	   )rí  r   r�   r   rõ  r   rn   r   )rs   rt   ru   rv   rî  rò  rö  r|   )rQ   rè  s   €€rR   ÚNoninheritedConcreteProprë  œ  s   ø† ÷÷÷ó rU   rø  )rn   r	   )r¹   ri   rL   )rQ   rø  rè  r»   s   ` @€rR   ri   Ú"ConcreteInheritedProperty.__init__‘  s)   ú€ Ü‰ÑÔ÷	÷
	õ 
	ñ 3Ó4ˆ�rU   r¡   )r�   r¤   rn   zType[PropComparator[_T]]rÒ  )	rs   rt   ru   rv   r¥   r�   ri   r|   rŒ  r�  s   @rR   rß  rß  s  s'   ø† ñð .Ø!ð.à	!ô.÷5õ 5rU   rß  c                  ó.  ^ • \ rS rSr% SrS\S'         S             SU 4S jjjr\(       d
  \SS j5       r	\
R                    SS j5       rSS jrSS	 jr\R                   4       SS
 jjr\
R$                  " S5      SS j5       rSrU =r$ )ÚSynonymPropertyi«  a  Denote an attribute name as a synonym to a mapped property,
in that the attribute will mirror the value and expression behavior
of another attribute.

:class:`.Synonym` is constructed using the :func:`_orm.synonym`
function.

.. seealso::

    :ref:`synonyms` - Overview of synonyms

ú"Optional[Type[PropComparator[_T]]]r±   c                ó>  >• [         TU ]  US9  Xl        X l        X0l        X@l        U(       a  Xpl        O1U(       a#  UR                  (       a  UR                  U l        OS U l        U(       a  U R                  R                  U5        [        R                  " U 5        g r¸   )r¹   ri   r€   Ú
map_columnrL   r±   rK   r¥   r¶   r½   r   r¾   )	rQ   r€   rþ  rL   r±   r²   r¶   rK   r»   s	           €rR   ri   ÚSynonymProperty.__init__»  su   ø€ ô 	‰ÑÐ+<ÐÑ=àŒ	Ø$ŒØ$ŒØ"4ÔÞØ�HÞ˜J×.×.Ø!×)Ñ)ˆD�HàˆDŒHÞØ�I‰I×Ñ˜TÔ"ä×Ò Õ%rU   c                ó~   • [        U R                  R                  U R                  5      R                  R
                  $ rW   )r‹   r™   r–   r€   rš   rb   rP   s    rR   rb   ÚSynonymProperty.uses_objectsØ  s)   € ä˜4Ÿ;™;×-Ñ-¨t¯y©yÓ9×>Ñ>×KÑKÐKrU   c                óæ  • [        U R                  R                  U R                  5      n[	        US5      (       a  [        UR                  [        5      (       dŒ  [        U[        R                  5      (       a  UR                  $ [        U[        5      (       a  U$ [        R                  " SU R                  R                  R                  < SU R                  < SU< 35      eUR                  $ )Nrz   zsynonym() attribute "rÍ  z+" only supports ORM mapped attributes, got )r‹   r™   r–   r€   rù   rº   rz   r   r   r0   Ú
comparatorr   rÊ   rË   rs   )rQ   rç   s     rR   Ú_proxied_objectÚSynonymProperty._proxied_objectß  s´   € ô �t—{‘{×)Ñ)¨4¯9©9Ó5ˆÜ�t˜Z×(Ñ(´
Ø�M‰Mœ>÷1
ñ 1
ô
 ˜$¤
× =Ñ =×>Ñ>Ø—‘Ð&Ü˜DÔ"2×3Ñ3à�ä×,Ó,ð —;‘;×%Ñ%×.Ô.°·	´	º4ðAóð ð
 �}‰}ÐrU   c                óX   • [        U R                  R                  U R                  5      4$ rW   )r‹   r™   r–   r€   rP   s    rR   rS   Ú&SynonymProperty._column_strategy_attrsö  s    € Ü˜Ÿ™×*Ñ*¨D¯I©IÓ6Ð8Ð8rU   c                ó¶   • U R                   n[        U[        5      (       a7  U R                  (       a  U R                  X!5      nU$ UR                  X!5      nU$ U$ rW   )r  rº   r   r±   )rQ   r�   rd   Úcomps       rR   r�   Ú#SynonymProperty._comparator_factoryù  sV   € Ø×#Ñ#ˆä�dœN×+Ñ+Ø×&×&Ø×.Ñ.¨tÓ<�ð ˆKð ×.Ñ.¨tÓ<�ØˆKàˆKrU   c                óŠ   • [        U R                  R                  U R                  5      nUR                  R                  XUS9$ )N)rZ   )r‹   r™   r–   r€   rš   r[   )rQ   rX   rY   rZ   rç   s        rR   r[   ÚSynonymProperty.get_history  s8   € ô )0°·±×0BÑ0BÀDÇIÁIÓ(NˆØ�y‰y×$Ñ$ U¸7Ð$ÐCÐCrU   rð   c           
     ó�  • [         R                  R                  nU R                  (       Ga”  U R                  UR
                  R                  ;  aK  [        R                  " SU R                  < SUR
                  R                  < SU R                  < S35      eUR
                  R                  U R                     UR                  ;   a–  UR                  UR
                  R                  U R                        R                  U R                  :X  aN  [        R                  " SU R                  < SU R                  < SU R                  < SU R                  < 35      eUR                  UR
                  R                  U R                     5      nUR                  U R                  XBS	S
9  U R                  Ul        Xl        g )NzCan't compile synonym 'z': no column on table 'z	' named 'Ú'z'Can't call map_column=True for synonym Ú=z4, a ColumnProperty already exists keyed to the name z for column T)ÚinitÚ	setparent)r   rö   r÷   rþ  rh   Úpersist_selectabler8  rÊ   rú   r€   Údescriptionr)  r4   Ú_configure_propertyÚ_mapped_by_synonymr™   )rQ   r™   r  Ú
propertiesr  s        rR   Ú
set_parentÚSynonymProperty.set_parent  sT  € ä—^‘^×2Ñ2ˆ
à�?�?ˆ?à�x‰x˜v×8Ñ8×:Ñ:Ó:Ü×*Ó*ð Ÿ	œ	Ø×1Ñ1×=Ô=ØŸœðóð ð ×)Ñ)×+Ñ+¨D¯H©HÑ5Ø×+Ñ+ó,à×,Ñ,Ø×-Ñ-×/Ñ/°·±Ñ9ñç‘#Ø—9‘9óô
 ×*Ó*ð —x”x §¤¨D¯I¬I°t·x³xðAóð ð &0×%>Ñ%>Ø×)Ñ)×+Ñ+¨D¯H©HÑ5ó&ˆAð ×&Ñ& t§y¡y°!È$Ð&ÑOØ#'§8¡8ˆAÔ à�rU   )r±   rL   rK   rþ  r€   r™   )NNNNNN)r€   rp   rþ  zOptional[bool]rL   zOptional[Any]r±   rü  r²   rÐ  r¶   rÑ  rK   rJ   rm   )rn   z/Union[MapperProperty[_T], SQLORMOperations[_T]]r¢   )r�   r¤   rn   zSQLORMOperations[_T]rq   )r™   r¤   r  ro   rn   r”   )rs   rt   ru   rv   r¥   r¦   ri   r   rz   rb   r   rË  r  rS   r�   r   r{   r[   rÖ  r  r|   rŒ  r�  s   @rR   rû  rû  «  s  ø‡ ñð ;Ó:ð
 &*Ø$(ØAEØ9=Ø$(Ø!ð&àð&ð #ð&ð "ð	&ð
 ?ð&ð 7ð&ð "ð&ð ÷&ð &ö6 à	ó	Ló 
ð	Lð 
×Ñðà	8óó ðô,9ô
ð   +×6Ñ6ð	Dà!ðDð ðDð ð	Dð
 
õDð 
×ÒÐ4Ó5ó#ó 6ö#rU   rû  c                  ó   • \ rS rSrSrSrSrg)ÚSynonymi5  a3  Declarative front-end for the :class:`.SynonymProperty` class.

Public constructor is the :func:`_orm.synonym` function.

.. versionchanged:: 2.0 Added :class:`_orm.Synonym` as a Declarative
   compatible subclass for :class:`_orm.SynonymProperty`

.. seealso::

    :ref:`synonyms` - Overview of synonyms

Tr¨   NrÜ  r¨   rU   rR   r  r  5  s   † ñð €MÚrU   r  )gr¥   Ú
__future__r   Údataclassesr   r  r  r  Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   ÚweakrefÚ r   r   rØ  Úbaser   r   r   r   r   Ú
interfacesr   r   r   r   r   r   r   r!   r"   rÊ   r#   r$   r&   r'   Úsql.elementsr(   Úutil.typingr)   r*   r+   Ú_typingr,   r-   r.   r/   r0   rD  r1   r  r2   r�   r3   r  r4   r5   rX   r6   Úengine.baser7   Ú
engine.rowr8   Úsql._typingr9   r:   r;   r<   Úsql.operatorsr=   Ú
sql.schemar>   Úsql.selectabler?   r@   rA   rB   rC   rD   rF   rH   rp   Ú_CompositeAttrTyper©   ÚWeakKeyDictionaryrª   r¦   r¬   rÛ  rß  rû  r  r¨   rU   rR   Ú<module>r-     sÚ  ðòõ
 #å $Û Û Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý Û å Ý Ý $Ý &Ý Ý Ý "Ý )Ý /Ý $Ý &Ý &Ý Ý )Ý Ý Ý Ý Ý Ý Ý Ý (Ý "Ý $Ý #ð 
××Ý&Ý&Ý#Ý1Ý.Ý(Ý1ÝÝ*Ý(Ý$Ý(Ý Ý0Ý'Ý)Ý,Ý,Ý#Ý'Ý1Ý/Ý1Ý3áˆT˜Ñ€Ùˆe˜3Ñ€ôJH˜¨Ñ+ô JHðZ ØØØØØð	ñÐ ñ ˆe˜3Ñ€ð
 ×ÒÓð ð ó  ô
d
AØ�ÑÐ.Ð0BÀ3Ñ0Gôd
AôNÐ! "Ñ%Ð'9¸"Ñ'=ô ô&55Ð 2°2Ñ 6ô 55ôpGÐ(¨Ñ,ô GôTˆo˜bÑ!Ð#5°bÑ#9õ rU   