Ë
    ðmxi£“  ã                  ó|  — U d Z ddlmZ ddlmZ ddlZddl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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+ d d$lm,Z, d dlmZ d d%l,m-Z- d d&l,m.Z. d d'l/m0Z0 d d(l1m2Z2 d d)l1m3Z3 d d*l1m4Z4 ej$                  r�dd+l5m6Z6 dd,l5m7Z7 dd-lm8Z8 dd.lm9Z9 dd/lm:Z: dd0l;m<Z< dd1l=m>Z> dd2l?m@Z@ dd3lAmBZB dd4lAmCZC dd5lDmEZE d d6lFmGZG d d7lHmIZI d d8lJmKZK d d9lJmLZL d d:l/mMZM d d;l/mNZN d d<lOmPZP d d=lQmRZR d d>lSmTZT d d?l1mUZU d d@l1mVZV d dAl1mWZW d dBl1mXZX  edCe	¬D«      ZY edEe	¬D«      ZZ G dF„ dGe$eY   «      Z[ee\dHdIdJdKf   Z] edLe	¬D«      Z^ ej¾                  «       Z`dMeadN<    G dO„ dPe#e^   e"e[e^   «      Zb G dQ„ dRebeY   eeY   «      Zc G dS„ dTe[eY   «      Zd G dU„ dVe[eY   «      Ze G dW„ dXeeeY   eeY   «      Zfy)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                  óp   — e Zd ZU dZdZded<   dZdZded<   dd„Ze	j                  f	 	 	 	 	 	 	 dd	„Zdd
„Zy)ÚDescriptorPropertyzO:class:`.MapperProperty` which proxies access to a
    user-defined descriptor.NúOptional[str]ÚdocFzDescriptorReference[Any]Ú
descriptorc                ó   — t        d«      ‚)Nz?This MapperProperty does not implement column loader strategies©ÚNotImplementedError©Úselfs    úV/home/htdocs/ttos/venv/lib/python3.12/site-packages/sqlalchemy/orm/descriptor_props.pyÚ_column_strategy_attrsz)DescriptorProperty._column_strategy_attrsf   s   € Ü!ØMó
ð 	
ó    c                ó   — t        «       ‚©NrM   )rP   ÚstateÚdict_Úpassives       rQ   Úget_historyzDescriptorProperty.get_historyk   s   € ô "Ó#Ð#rS   c                ó‚  ‡ ‡‡— ‰ Š G ˆfd„dt         j                  «      }‰ j                  €Dt        ‰j                  ‰ j
                  d «      }‰j                  ‰ j
                  |«      r|‰ _        ‰ j                  €%d	ˆ fd„}d
ˆ fd„}dˆ fd„}t        |||¬«      ‰ _         t        j                  ‰ j                  «      ‰ j                  j                  ‰ j
                  ‰ j                  ˆˆ fd„‰ j                  ‰ ¬«      } |‰ j
                  «      |_        ‰j                  j                  ‰ j
                  |«       y )Nc                  ój   •— e Zd ZdZdZdZedˆ fd„«       Zdd„Ze	j                  f	 	 	 	 	 	 	 d	ˆ fd„Zy)
ú7DescriptorProperty.instrument_class.<locals>._ProxyImplFTc                ó   •— ‰j                   S rU   )Úuses_objects©rP   Úprops    €rQ   r^   zDDescriptorProperty.instrument_class.<locals>._ProxyImpl.uses_objects{   s   ø€ à×(Ñ(Ð(rS   c                ó   — || _         y rU   )Úkey)rP   rb   s     rQ   Ú__init__z@DescriptorProperty.instrument_class.<locals>._ProxyImpl.__init__   s	   € Ø�•rS   c                ó*   •— ‰j                  |||«      S rU   )rY   )rP   rV   rW   rX   r`   s       €rQ   rY   zCDescriptorProperty.instrument_class.<locals>._ProxyImpl.get_history‚   s   ø€ ð ×'Ñ'¨¨u°gÓ>Ð>rS   N©ÚreturnÚbool)rb   Ústr©rV   úInstanceState[Any]rW   r,   rX   r   rf   r.   )Ú__name__Ú
__module__Ú__qualname__Úaccepts_scalar_loaderÚload_on_unexpireÚ
collectionÚpropertyr^   rc   r   ÚPASSIVE_OFFrY   )r`   s   €rQ   Ú
_ProxyImplr\   v   sa   ø„ Ø$)Ð!Ø#ÐØˆJàô)ó ð)óð (3×'>Ñ'>ð	?à)ð?ð %ð?ð %ð	?ð
 ö?rS   rs   c                ó4   •— t        | ‰j                  |«       y rU   )ÚsetattrÚname)ÚobjÚvaluerP   s     €rQ   Úfsetz1DescriptorProperty.instrument_class.<locals>.fset‘   s   ø€ Ü˜˜TŸY™Y¨Õ.rS   c                ó2   •— t        | ‰j                  «       y rU   )Údelattrrv   ©rw   rP   s    €rQ   Úfdelz1DescriptorProperty.instrument_class.<locals>.fdel”   s   ø€ Ü˜˜TŸY™YÕ'rS   c                ó0   •— t        | ‰j                  «      S rU   )Úgetattrrv   r|   s    €rQ   Úfgetz1DescriptorProperty.instrument_class.<locals>.fget—   s   ø€ Ü˜s D§I¡IÓ.Ð.rS   )r€   ry   r}   c                 ó&   •— ‰j                  ‰ «      S rU   )Ú_comparator_factory)ÚmapperrP   s   €€rQ   ú<lambda>z5DescriptorProperty.instrument_class.<locals>.<lambda>    s   ø€ �D×,Ñ,¨VÓ4€ rS   )rJ   Úoriginal_property)rw   r   rx   r   rf   ÚNone)rw   r   rf   r†   )rw   r   rf   r   )r   ÚAttributeImplrK   r   Úclass_rb   Ú_is_userland_descriptorrq   Úcreate_proxied_attributeÚparentrJ   ÚimplÚclass_managerÚinstrument_attribute)	rP   rƒ   rs   Údescry   r}   r€   Ú
proxy_attrr`   s	   ``      @rQ   Úinstrument_classz#DescriptorProperty.instrument_classs   sñ   ú€ Øˆö	?œ×1Ñ1ô 	?ð( �?‰?Ð"Ü˜6Ÿ=™=¨$¯(©(°DÓ9ˆDØ×-Ñ-¨d¯h©h¸Ô=Ø"&�”à�?‰?Ð"õ/õ(õ/ô '¨D°tÀ$ÔGˆDŒOàI”Z×8Ñ8¸¿¹ÓIØ�K‰K×ÑØ�H‰HØ�O‰OÜ4Ø—‘Ø"ô
ˆ
ñ % T§X¡XÓ.ˆ
ŒØ×Ñ×1Ñ1°$·(±(¸JÕGrS   ©rf   z!Sequence[QueryableAttribute[Any]]ri   ©rƒ   úMapper[Any]rf   r†   )rk   rl   rm   Ú__doc__rJ   Ú__annotations__r^   Ú_links_to_entityrR   r   rr   rY   r‘   © rS   rQ   rH   rH   [   se   … ñ ð €CˆÓà€LØÐà(Ó(ó
ð  +×6Ñ6ð	$à!ð$ð ð$ð ð	$ð
 
ó$ô2HrS   rH   z
Column[_T]zMappedColumn[_T]zInstrumentedAttribute[_T]z
Mapped[_T]Ú_CCzFweakref.WeakKeyDictionary[Type[Any], Callable[[Any], Tuple[Any, ...]]]Ú_composite_gettersc                  ó|  ‡ — e Zd ZU dZded<   ded<   ded<   ded	<   	 d)d
ddd
d
d
dœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d*ˆ fd„Zd+ˆ fd„Zd,d„Zd-d„Z e	«       Z
d-d„Z ej                  d«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d.d„«       Zd-d„Z ej                  d«       ej                  d«      	 	 	 	 	 	 	 	 	 	 	 	 d/d„«       «       Zej"                  d0d„«       Zej"                   ej                  d«      d1d„«       «       Zd0d„Zej*                   ej                  d«      d2d„«       «       Zed3d„«       Zed4d„«       Z ej                  d«      d-d„«       Zd-d„Zej"                  d5d „«       Z	 	 d6d!„Zej>                  f	 	 	 	 	 	 	 d7d"„Z 	 	 	 	 d8d#„Z! G d$„ d%e"jF                  e$   «      Z% G d&„ d'e&e'   «      Z(d9d(„Z)ˆ xZ*S ):ÚCompositePropertyzö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         ‰
| �  |¬«       t        |t        t        t
        j                  f«      r|f|z   | _        d | _        n|| _        || _        || _	        || _
        || _        |�|n| j                  j                  | _        d | _        |�| j                   j#                  |«       t%        j&                  | «       | j)                  «        | j+                  «        y ©N)r¡   )Úsuperrc   Ú
isinstancer   rh   r$   r<   rž   r�   r¢   r£   r¤   Ú	__class__Ú
Comparatorr    rŸ   r¥   Úupdater   Úset_creation_orderÚ_create_descriptorÚ_init_accessor)rP   Ú_class_or_attrr¡   r¢   r£   r¤   r    r¥   rž   Úkwargsrª   s             €rQ   rc   zCompositeProperty.__init__Ñ   sÓ   ø€ ô 	‰ÑÐ+<ÐÔ=ä�n¤v¬s´C×4EÑ4EÐ&FÔGØ(Ð*¨UÑ2ˆDŒJà#'ˆDÕ à#1ˆDÔ ØˆDŒJà,ˆÔØ ˆŒØˆŒ
ð "Ð-ñ à—‘×*Ñ*ð 	Ôð
 .2ˆÔ*ØÐØ�I‰I×Ñ˜TÔ"ä×Ñ Ô%Ø×ÑÔ!Ø×ÑÕrS   c                óD   •— t         ‰| �  |«       | j                  «        y rU   )r¨   r‘   Ú_setup_event_handlers)rP   rƒ   rª   s     €rQ   r‘   z"CompositeProperty.instrument_classù   s   ø€ Ü‰Ñ  Ô(Ø×"Ñ"Õ$rS   c                óâ   — | j                   r| j                  |«      S 	 |j                  } |«       S # t        $ r3}t        j                  d| j
                  j                  › d�«      |‚d }~ww xY w)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�   rk   )rP   rx   ÚaccessorÚaes       rQ   Ú_composite_values_from_instancez1CompositeProperty._composite_values_from_instanceý   s   € Ø×-Ò-Ø×5Ñ5°eÓ<Ð<ð	"Ø ×5Ñ5�ñ  “zÐ!øô "ò Ü×0Ñ0Ø& t×';Ñ';×'DÑ'DÐ&Eð F/ð /óð ð	ûðús   Ÿ2 ²	A.».A)Á)A.c                ó$   — | j                  «        y)zwInitialization which occurs after the :class:`.Composite`
        has been associated with its parent mapper.

        N)Ú_setup_arguments_on_columnsrO   s    rQ   Údo_initzCompositeProperty.do_init  s   € ð
 	×(Ñ(Õ*rS   c                óT   ‡ ‡— dˆ fd„Šdˆˆ fd„}dˆˆ fd„}t        ‰||«      ‰ _        y)ztCreate the Python descriptor that will serve as
        the access point on instances of the mapped class.

        c                ó
  •— t        j                  | «      }t        j                  | «      }‰j                  |vrª‰j                  D �cg c]  }t        | |«      ‘Œ }}‰j                  |vry|j                  €t        j                  |«      sX ‰j                  |Ž |‰j                  <   |j                  j                  j                  |‰j                  ‰j                  g«       |j                  ‰j                  d «      S c c}w rU   )r   Úinstance_dictÚinstance_staterb   Ú_attribute_keysr   r   Ú
issupersetr�   ÚmanagerÚdispatchÚrefreshÚ_COMPOSITE_FGETÚget)ÚinstancerW   rV   rb   ÚvaluesrP   s        €rQ   r€   z2CompositeProperty._create_descriptor.<locals>.fget  sÞ   ø€ Ü×,Ñ,¨XÓ6ˆEÜ×-Ñ-¨hÓ7ˆEà�x‰x˜uÑ$ð
 7;×6JÑ6JöØ/2”G˜H cÕ*ð�ð ð —8‘8 5Ñ(Ø—I‘IÐ)´×1EÑ1EÀfÔ1Mà&: d×&:Ñ&:¸FÐ&C�E˜$Ÿ(™(‘OØ—M‘M×*Ñ*×2Ñ2Ø˜t×3Ñ3°d·h±h°Zôð —9‘9˜TŸX™X tÓ,Ð,ùò#s   ÁD c                óR  •— t        j                  | «      }t        j                  | «      }|j                  ‰	j                     }|j
                  j                  r	 ‰| «      }n*|j                  ‰	j                  t        j                  «      }|j
                  j                  D ]  } |||||j                  «      }Œ ||‰	j                  <   |€‰	j                  D ]  }t        | |d «       Œ y t        ‰	j                  ‰	j                  |«      «      D ]  \  }}t        | ||«       Œ y rU   )r   rÁ   rÂ   rÅ   rb   rÆ   Ú_active_historyrÉ   r   ÚNO_VALUEÚsetrŒ   rÃ   ru   Úzipr»   )
rÊ   rx   rW   rV   ÚattrÚpreviousÚfnrb   r€   rP   s
           €€rQ   ry   z2CompositeProperty._create_descriptor.<locals>.fset6  s  ø€ Ü×,Ñ,¨XÓ6ˆEÜ×-Ñ-¨hÓ7ˆEØ—=‘= §¡Ñ*ˆDà�}‰}×,Ò,Ù ›>‘à Ÿ9™9 T§X¡XÔ/C×/LÑ/LÓM�à—m‘m×'Ñ'ò >�Ù˜5 %¨°4·9±9Ó=‘ð>à#ˆE�$—(‘(‰OØˆ}Ø×/Ñ/ò 1�CÜ˜H c¨4Õ0ñ1ô #&Ø×(Ñ(Ø×8Ñ8¸Ó?ó#ò 2‘J�C˜ô ˜H c¨5Õ1ñ	2rS   c                ó  •— t        j                  | «      }t        j                  | «      }|j                  ‰j                     }|j
                  j                  r% ‰| «      }|j                  ‰j                  d «       n*|j                  ‰j                  t        j                  «      }|j                  ‰j                     }|j
                  j                  |||j                  «       ‰j                  D ]  }t        | |d «       Œ y rU   )r   rÂ   rÁ   rÅ   rb   rÆ   rÍ   Úpopr   rÎ   ÚremoverŒ   rÃ   ru   )rÊ   rV   rW   rÑ   rÒ   rb   r€   rP   s         €€rQ   r}   z2CompositeProperty._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Õ,ñ-rS   N)rÊ   r   rf   r   )rÊ   r   rx   r   rf   r†   )rÊ   r   rf   r†   )rq   rK   )rP   ry   r}   r€   s   `  @rQ   r®   z$CompositeProperty._create_descriptor  s$   ù€ õ	-ö6	2ö.	-ô  # 4¨¨tÓ4ˆ�rS   úsqlalchemy.orm.propertiesc
                óÚ  — t         j                  j                  j                  }
| j                  €|€| j                  ||«       |}t        |«      rt        |«      d   }|r€| j                  €tt        |t        «      st        |d¬«      rP|€?t        |d«      r|j                  n
t        |«      }t        j                  d|› d|› d�«      ‚t        |||d¬«      }|| _        t!        | j                  «      r| j#                  |||||«       nO| j$                  D ]@  }t        ||
t&        j(                  f«      sŒ |j*                  �Œ-t        j                  d	«      ‚ | j-                  «        y )
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©   rh   r*   ÚhasattrrÚ   r·   ÚArgumentErrorr   r   Ú_setup_for_dataclassrž   r#   r>   rv   r¯   )rP   Ú	decl_scanÚregistryÚclsÚoriginating_modulerb   Úmapped_containerÚ
annotationÚextracted_mapped_annotationÚis_dataclass_fieldr5   ÚargumentÚstr_argrÑ   s                 rQ   Údeclarative_scanz"CompositeProperty.declarative_scan_  sv  € ô —~‘~×4Ñ4×AÑAˆà× Ñ Ð(Ø+Ð3à×$Ñ$ S¨#Ô.Ø.ˆä�XÔÜ Ó)¨!Ñ,ˆHá˜×,Ñ,Ð4Ü˜(¤CÔ(¬JØ¨õ-ð &Ð-ô # 8Ð->Ô?ð !×0Ò0ä  ›]ð ô
 !×.Ñ.Ø0°°
ð ;EØELÀIÈQðPóð ô 3Ø˜Ð#5Àtô�ð $,ˆDÔ ä˜×,Ñ,Ô-Ø×%Ñ%Ø˜8 SÐ*<¸cõð Ÿ
™
ò �ä˜t l´F·M±MÐ%BÕCØŸ	™	Ñ)ä ×.Ñ.ð5óð ðð 	×ÑÕrS   c                óœ  ‡— t        | j                  «      r¡t        | j                  d«      s‹t        j                  | j                  «      }t        j                  |j                  j                  «       D �cg c]  }|j                  ‘Œ c}Ž Št        |j                  «      dk(  rˆfd„| _        n‰| _        | j                  �„t        | j                  t        «      ri| j                  t        vrV| j                  �| j                  t        | j                  <   y t        | j                  d«      rd„ t        | j                  <   y y y y y c c}w )Nrµ   r   c                ó   •—  ‰| «      fS rU   r˜   )rw   Úgetters    €rQ   r„   z2CompositeProperty._init_accessor.<locals>.<lambda>¤  s   ø€ Á&ÈÃ+À€ rS   c                ó"   — | j                  «       S rU   ©rµ   )rw   s    rQ   r„   z2CompositeProperty._init_accessor.<locals>.<lambda>³  s   €  × 8Ñ 8Ó :€ rS   )r   r�   rà   ÚinspectÚ	signatureÚoperatorÚ
attrgetterÚ
parametersrË   rv   ÚlenrŸ   r©   Útyperš   )rP   ÚinspÚprð   s      @rQ   r¯   z CompositeProperty._init_accessor›  s   ø€ Ü˜×,Ñ,Ô-´gØ× Ñ Ð"8ô7
ô ×$Ñ$ T×%9Ñ%9Ó:ˆDÜ×(Ñ(Ø"&§/¡/×"8Ñ"8Ó":Ö;˜Q�!—&“&Ò;ðˆFô �4—?‘?Ó# qÒ(Û5O�Õ2à5;�Ô2ð × Ñ Ð,Ü˜4×/Ñ/´Ô6Ø×$Ñ$Ô,>Ñ>à×1Ñ1Ð=à×6Ñ6ô # 4×#7Ñ#7Ò8ô ˜×-Ñ-Ð/EÔFá:ô # 4×#7Ñ#7Ò8ð Gð ?ð 7ð -ùò <s   Á7E	zsqlalchemy.orm.decl_basec                ó  — t         j                  j                  j                  }t         j                  j                  }t        j                  | j                  «      }t        j                  |j                  j                  «       | j                  «      D ]í  \  }	}
|	€Xt        j                  dt        | j                  «      › d| j                  j                   › dt        |j                  «      › �«      ‚|
€ |«       }
| xj                  |
fz  c_        t#        |
|«      r,|
j%                  ||||||	j&                  |	j(                  «       Œ·t#        |
t*        j,                  «      sŒÒ|j/                  |	j&                  |
«       Œï y )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ø   rk   r©   Údeclarative_scan_for_compositerv   rè   r#   r>   Ú_undefer_column_name)rP   rã   rä   rå   ræ   rb   r5   Ú	decl_baserú   ÚparamrÑ   s              rQ   râ   z&CompositeProperty._setup_for_dataclass¶  sF  € ô —~‘~×4Ñ4×AÑAˆä—N‘N×0Ñ0ˆ	ä× Ñ  ×!5Ñ!5Ó6ˆÜ$×0Ñ0Ø�O‰O×"Ñ"Ó$ d§j¡jó
ò 	A‰KˆE�4ð ˆ}Ü×*Ñ*Ø5Ü˜4Ÿ:™:“Ð'ð (Aà×+Ñ+×4Ñ4Ð5°Q´s¸4¿?¹?Ó7KÐ6LðNóð ð ˆ|á#“~�Ø—
’
˜t˜gÑ%•
ä˜$ Ô-Ø×3Ñ3ØØØØ&ØØ—J‘JØ×$Ñ$õô ˜D¤&§-¡-Õ0Ø×.Ñ.¨u¯z©z¸4Õ@ñ5	ArS   c                ó�   — | j                   D �cg c],  }t        | j                  j                  |j                  «      ‘Œ. c}S c c}w rU   )Úpropsr   r‹   rˆ   rb   r_   s     rQ   Ú_comparable_elementsz&CompositeProperty._comparable_elementsá  s/   € àBFÇ*Á*ÖM¸$”˜Ÿ™×*Ñ*¨D¯H©HÕ5ÒMÐMùÒMs   �1Azorm.propertiesc                ó\  — g }t         j                  j                  j                  }| j                  D ]ö  }t        |t        «      r| j                  j                  |d¬«      }n�t        |t        j                  «      r| j                  j                  |   }nYt        ||«      r$| j                  j                  |j                     }n)t        |t        j                  «      r|j                  }nd }t        |t         «      st#        j$                  d|›�«      ‚|j'                  |«       Œø |S )NF)Ú_configure_mapperszYComposite expects Column objects or mapped attributes/attribute names as arguments, got: )r   rÝ   rÞ   r5   rž   r©   rh   r‹   Úget_propertyr#   r>   Ú_columntopropertyÚcolumnr   r/   rq   r   r·   rá   Úappend)rP   r  r5   rÑ   r`   s        rQ   r  zCompositeProperty.propså  sù   € ð ˆÜ—~‘~×4Ñ4×AÑAˆà—J‘Jò 	ˆDÜ˜$¤Ô$Ø—{‘{×/Ñ/°ÈÐ/ÓO‘Ü˜D¤&§-¡-Ô0Ø—{‘{×4Ñ4°TÑ:‘Ü˜D ,Ô/Ø—{‘{×4Ñ4°T·[±[ÑA‘Ü˜D¤*×"BÑ"BÔCØ—}‘}‘à�ä˜d¤NÔ3Ü×*Ñ*ðEØEIÀHðNóð ð
 �L‰L˜Õð%	ð& ˆrS   c                ó   — | j                   S rU   )r  rO   s    rQ   rR   z(CompositeProperty._column_strategy_attrs   s   € Ø×(Ñ(Ð(rS   c                óð   — t         j                  j                  j                  }| j                  D �cg c]8  }t        |t        j                  |f«      rt        ||«      r|j                  n|‘Œ: c}S c c}w rU   )	r   rÝ   rÞ   r5   rž   r©   r#   r>   r  )rP   r5   Úas      rQ   ÚcolumnszCompositeProperty.columns  sd   € ô —~‘~×4Ñ4×AÑAˆð —Z‘Zö
àÜ˜!œfŸm™m¨\Ð:Ô;ô # 1 lÔ3ˆA�HŠH¸Ñ:ò
ð 	
ùò 
s   ³=A3c                ó   — | S rU   r˜   rO   s    rQ   Úmapper_property_to_assignz+CompositeProperty.mapper_property_to_assign  s   € àˆrS   c                ó^   — | j                   D �cg c]  }|j                  �Œ|df‘Œ c}S c c}w )Nr   )r  Útable)rP   Úcs     rQ   Úcolumns_to_assignz#CompositeProperty.columns_to_assign  s&   € à $§¡Ö@˜1°·±±��A’Ò@Ð@ùÒ@s   �*¡*c                ó  — t         j                  j                  j                  }| j                  D ]W  }t        ||«      sŒ|}| j                  |_        | j                  r| j                  |_        d|_        | j                  |_	        ŒY y)zwPropagate 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¤   )rP   r4   r`   Úcprops       rQ   r½   z-CompositeProperty._setup_arguments_on_columns  sq   € ô Ÿ™×6Ñ6×EÑEˆà—J‘Jò 
	%ˆDÜ˜d NÔ3Øà�à#'×#6Ñ#6ˆEÔ Ø�}Š}Ø!%§¡�”Ø%O�Ô"ØŸ*™*ˆE�Kñ
	%rS   c                ó¼  ‡ ‡— 	 	 	 	 	 	 dˆfd„}	 	 	 	 	 	 	 	 dˆˆ fd„}	 	 	 	 	 	 	 	 	 	 dˆ fd„Š	 	 	 	 	 	 dˆ fd„}	 	 	 	 	 	 	 	 dˆ fd„}t        j                  ‰ j                  d|d¬«       t        j                  ‰ j                  d	|d¬«       t        j                  ‰ j                  d
|dd¬«       t        j                  ‰ j                  d|dd¬«       t        j                  ‰ j                  d|dd¬«       ‰ j                  j                  ‰ j                     }|j
                  |j                  _        ‰ j                  |j                  j
                  _        y)z>Establish events that populate/expire the composite attribute.c                ó   •—  ‰| |d d¬«       y )NF©Ú
is_refreshr˜   )rV   ÚcontextÚ_load_refresh_handlers     €rQ   Úload_handlerz=CompositeProperty._setup_event_handlers.<locals>.load_handler,  s   ø€ ñ " %¨°$À5ÖIrS   c                óŽ   •— |r5‰j                   hj                  ‰j                  «      j                  |«      r ‰| ||d¬«       y y )NTr  )rb   ÚunionrÃ   Úintersection)rV   r   Úto_loadr!  rP   s      €€rQ   Úrefresh_handlerz@CompositeProperty._setup_event_handlers.<locals>.refresh_handler1  sF   ø€ ñ Ø—‘�
× Ñ  ×!5Ñ!5Ó6ß‰l˜7Ó#ð$ñ & e¨W°gÈ$ÖOð$rS   c                ó  •— | j                   }|r|‰j                  u r‰j                  |v ry ‰j                  D ]  }||vsŒ y   ‰j                  ‰j                  D �cg c]  }| j                   |   ‘Œ c}Ž |‰j                  <   y c c}w rU   )ÚdictrÈ   rb   rÃ   r�   )rV   r   r&  r  rW   Úkrb   rP   s          €rQ   r!  zFCompositeProperty._setup_event_handlers.<locals>._load_refresh_handler=  s‹   ø€ ð —J‘JˆEñ  '¨T×-AÑ-AÑ"AØ—(‘(˜eÑ#Øð
 ×)Ñ)ò �Ø˜E’>Ùðð 3˜d×2Ñ2Ø-1×-AÑ-AÖB c�%—*‘*˜S“/ÒBðˆE�$—(‘(ŠOùÚBs   ÁBc                ó    •— |�$t        ‰j                  «      j                  |«      r'| j                  j	                  ‰j
                  d «       y y rU   )rÏ   rÃ   r%  r)  rÕ   rb   )rV   ÚkeysrP   s     €rQ   Úexpire_handlerz?CompositeProperty._setup_event_handlers.<locals>.expire_handler^  s>   ø€ ð ˆ|œs 4×#7Ñ#7Ó8×EÑEÀdÔKØ—
‘
—‘˜tŸx™x¨Õ.ð  LrS   c                óR   •— |j                   j                  ‰j                  d«       y)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)r)  rÕ   rb   )rƒ   Ú
connectionrV   rP   s      €rQ   Úinsert_update_handlerzFCompositeProperty._setup_event_handlers.<locals>.insert_update_handlerd  s   ø€ ð �J‰J�N‰N˜4Ÿ8™8 TÕ*rS   Úafter_insertT)ÚrawÚafter_updateÚload)r2  Ú	propagaterÇ   ÚexpireN)rV   rj   r   r1   rf   r†   )rV   rj   r   r1   r&  úOptional[Sequence[str]]rf   r†   )
rV   rj   r   r1   r&  r7  r  rg   rf   r†   )rV   rj   r,  r7  rf   r†   )rƒ   r”   r/  r7   rV   rj   rf   r†   )	r!   Úlistenr‹   r�   rb   rÆ   rŒ   r¢   rÍ   )rP   r"  r'  r-  r0  r�   r!  s   `     @rQ   r³   z'CompositeProperty._setup_event_handlers)  sŸ  ù€ ð	JØ%ð	JØ0?ð	Jàõ	Jð

	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ˆ
�‰× Ñ Õ0rS   c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w rU   )r  rb   r_   s     rQ   rÃ   z!CompositeProperty._attribute_keysˆ  s   € à%)§Z¡ZÖ0˜T�—“Ò0Ð0ùÒ0s   �%c                ó¨   ‡ ‡‡— ‰ j                   r‰ j                   Šndd„Š‰ j                  D �cg c]  }|j                  ‘Œ c}Šdˆˆˆ fd„}|S c c}w )Nc                ó"   — | j                  «       S rU   rò   )Úvals    rQ   Ú
get_valueszOCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.get_values“  s   € Ø×/Ñ/Ó1Ð1rS   c           
     ó®   •— | j                  t        ‰ ‰| j                  ‰j                  «      «      «      D ��ci c]  \  }}||“Œ
 c}}«       y c c}}w rU   )r¬   rÐ   rÕ   rb   )Ú	dest_dictrb   r<  rž   r=  rP   s      €€€rQ   ÚpopulatezMCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.populate˜  sR   ø€ Ø×Ñô %(Ø™z¨)¯-©-¸¿¹Ó*AÓBó%÷á ˜˜Sð ˜‘Hóõùós   »A
)r<  r   rf   z
Tuple[Any])r?  zDict[str, Any]rf   r†   )rŸ   r  rb   )rP   r`   r@  rž   r=  s   `  @@rQ   Ú)_populate_composite_bulk_save_mappings_fnz;CompositeProperty._populate_composite_bulk_save_mappings_fnŒ  sI   ú€ ð ×-Ò-Ø×;Ñ;‰Jó2ð '+§j¡jÖ1˜d�—“Ò1ˆ÷	ð ˆùò 2s   ¯Ac                óN  — g }g }d}| j                   D ]·  }|j                  }|j                  |   j                  j	                  ||«      }	|	j                  «       rd}|	j                  «       }
|
r|j                  |
«       n|j                  d«       |	j                  r|j                  |	j                  «       Œ§|j                  d«       Œ¹ |r3t        j                   | j                  |Ž gd | j                  |Ž g«      S t        j                  d | j                  |Ž gd«      S )z>Provided for userland code that uses attributes.get_history().FTNr˜   )r  rb   rÅ   rŒ   rY   Úhas_changesÚnon_deletedÚextendr  Údeletedr   r.   r�   )rP   rV   rW   rX   ÚaddedrF  Úhas_historyr`   rb   ÚhistrD  s              rQ   rY   zCompositeProperty.get_history¤  s  € ð ˆØˆàˆØ—J‘Jò 	%ˆDØ—(‘(ˆCØ—=‘= Ñ%×*Ñ*×6Ñ6°u¸eÓDˆDØ×ÑÔ!Ø"�à×*Ñ*Ó,ˆKÙØ—‘˜[Õ)à—‘˜TÔ"Ø�|Š|Ø—‘˜tŸ|™|Õ,à—‘˜tÕ$ð	%ñ  Ü×%Ñ%Ø%�×%Ñ% uÐ-Ð.ØØ%�×%Ñ% wÐ/Ð0óð ô ×%Ñ% bÐ+?¨4×+?Ñ+?ÀÐ+GÐ*HÈ"ÓMÐMrS   c                ó&   — | j                  | |«      S rU   )r    )rP   rƒ   s     rQ   r‚   z%CompositeProperty._comparator_factoryÉ  s   € ð ×&Ñ& t¨VÓ4Ð4rS   c                  ó@   ‡ — e Zd Z	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ú!CompositeProperty.CompositeBundlec                óH   •— || _         t        ‰| �  |j                  g|¢­Ž  y rU   )rq   r¨   rc   rb   )rP   Ú	property_Úexprrª   s      €rQ   rc   z*CompositeProperty.CompositeBundle.__init__Ï  s"   ø€ ð
 &ˆDŒMÜ‰GÑ˜YŸ]™]Ð2¨TÔ2rS   c                ó   ‡ ‡— dˆˆ fd„}|S )Nc                óh   •—  ‰j                   j                  ‰D �cg c]
  } || «      ‘Œ c}Ž S c c}w rU   )rq   r�   )ÚrowÚprocÚprocsrP   s     €€rQ   rS  zDCompositeProperty.CompositeBundle.create_row_processor.<locals>.procÝ  s1   ø€ Ø4�t—}‘}×4Ñ4Ø,1Ö2 D‘d˜3•iÒ2ðð ùÚ2s   œ/)rR  zRow[Any]rf   r   r˜   )rP   ÚqueryrT  ÚlabelsrS  s   ` `  rQ   Úcreate_row_processorz6CompositeProperty.CompositeBundle.create_row_processor×  s   ù€ öð
 ˆKrS   )rN  zComposite[_T]rO  r;   )rU  zSelect[Any]rT  z#Sequence[Callable[[Row[Any]], Any]]rV  úSequence[str]rf   zCallable[[Row[Any]], Any])rk   rl   rm   rc   rW  Ú__classcell__©rª   s   @rQ   ÚCompositeBundlerL  Î  sE   ø„ ð	3à$ð	3ð õ	3ð	àð	ð 7ð	ð "ð		ð
 '÷	rS   r[  c                  óî   — e Zd ZU dZdZded<   ej                  dd„«       Zdd„Z	ej                  dd„«       Z
	 	 	 	 dd„Zej                  dd	„«       Zdd
„Zdd„Zdd„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Zy)úCompositeProperty.Comparatora·  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]]r`   c                ó@   — t        j                  | j                  ddiŽS )Nr¤   F)r&   r;   r  rO   s    rQ   Úclausesz$CompositeProperty.Comparator.clausesü  s&   € ä×(Ñ(Ø"×7Ñ7ðØñð rS   c                ó   — | j                   S rU   r%   rO   s    rQ   Ú__clause_element__z/CompositeProperty.Comparator.__clause_element__  s   € Ø—?‘?Ð"rS   c                óÐ   — | j                   j                  | j                  | j                  | j                  j                  dœ«      }t
        j                  | j                  |«      S )N)ÚparententityÚparentmapperÚ	proxy_key)r_  Ú	_annotateÚ_parententityr`   rb   rœ   r[  )rP   r_  s     rQ   r&   z'CompositeProperty.Comparator.expression  sQ   € à—l‘l×,Ñ,à$(×$6Ñ$6Ø$(×$6Ñ$6Ø!%§¡§¡ñóˆGô %×4Ñ4°T·Y±YÀÓHÐHrS   c                óØ  — t        |t        «      r|j                  }|€$| j                  j                  D �cg c]  }d ‘Œ }}n…t        | j                  j
                  t        «      r<t        || j                  j
                  «      r| j                  j                  |«      }n%t        j                  d| j                  ›d|›�«      ‚t        t        | j                  |«      «      S c c}w )Nz!Can't UPDATE composite attribute z to )r©   r(   rx   r`   rÃ   r�   rù   r»   r·   rá   ÚlistrÐ   r  )rP   rx   rb   rË   s       rQ   Ú_bulk_update_tuplesz0CompositeProperty.Comparator._bulk_update_tuples  sÂ   € ô ˜%¤Ô/ØŸ™�ð ˆ}Ø*.¯)©)×*CÑ*CÖD 3š$ÐD�ÑDÜ˜DŸI™I×5Ñ5´tÔ<ÄØ�t—y‘y×0Ñ0ôBð Ÿ™×BÑBØó‘ô ×*Ò*à—y“y¡%ð)óð ô
 œ˜D×5Ñ5°vÓ>Ó?Ð?ùò Es   ·	C'c                óè   — | j                   rL| j                  j                  D �cg c],  }t        | j                   j                  |j
                  «      ‘Œ. c}S | j                  j                  S c c}w rU   )Ú_adapt_to_entityr`   r  r   Úentityrb   r_   s     rQ   r  z1CompositeProperty.Comparator._comparable_elements(  s`   € à×$Ò$ð !%§	¡	× >Ñ >öàô ˜D×1Ñ1×8Ñ8¸$¿(¹(ÕCòð ð
 —y‘y×5Ñ5Ð5ùòs   ¥1A/c                óB   — | j                  t        j                  |«      S rU   )Ú_comparer'   Úeq©rP   Úothers     rQ   Ú__eq__z#CompositeProperty.Comparator.__eq__2  ó   € Ø—=‘=¤§¡¨uÓ5Ð5rS   c                óB   — | j                  t        j                  |«      S rU   )ro  r'   Únerq  s     rQ   Ú__ne__z#CompositeProperty.Comparator.__ne__5  rt  rS   c                óB   — | j                  t        j                  |«      S rU   )ro  r'   Últrq  s     rQ   Ú__lt__z#CompositeProperty.Comparator.__lt__8  rt  rS   c                óB   — | j                  t        j                  |«      S rU   )ro  r'   Úgtrq  s     rQ   Ú__gt__z#CompositeProperty.Comparator.__gt__;  rt  rS   c                óB   — | j                  t        j                  |«      S rU   )ro  r'   Úlerq  s     rQ   Ú__le__z#CompositeProperty.Comparator.__le__>  rt  rS   c                óB   — | j                  t        j                  |«      S rU   )ro  r'   Úgerq  s     rQ   Ú__ge__z#CompositeProperty.Comparator.__ge__A  rt  rS   c                ó   — |€$d gt        | j                  j                  «      z  }n| j                  j                  |«      }t	        | j                  j                  |«      D ��cg c]  \  }} |||«      ‘Œ }}}| j
                  r,| j                  €J ‚|D �cg c]  }| j                  |«      ‘Œ }}t        j                  |Ž S c c}}w c c}w rU   )	rø   r`   r  r»   rÐ   rl  Úadapterr$   Úand_)rP   rõ   rr  rË   r  ÚbÚcomparisonsÚxs           rQ   ro  z%CompositeProperty.Comparator._compareK  sÂ   € ð ˆ}Ø˜¤# d§i¡i×&DÑ&DÓ"EÑE‘àŸ™×BÑBÀ5ÓI�ô   §	¡	× >Ñ >ÀÓG÷á�A�qñ ˜˜A•ðˆKñ ð ×$Ò$Ø—|‘|Ð/Ð/Ð/Ø8CÖD°1˜tŸ|™|¨A�ÐD�ÐDÜ—8‘8˜[Ð)Ð)ùóùò Es   Á%CÂC)rf   r;   )rf   z&CompositeProperty.CompositeBundle[_PT])rx   r   rf   z(Sequence[Tuple[_DMLColumnArgument, Any]]r’   )rr  r   rf   úColumnElement[bool])rõ   r=   rr  r   rf   rŠ  )rk   rl   rm   r•   Ú__hash__r–   r   Úmemoized_propertyr_  ra  r&   rj  r  rs  rw  rz  r}  r€  rƒ  ro  r˜   rS   rQ   r«   r]  ä  sº   … ñ	ð& ˆà3Ó3à	×	Ñ	ò	ó 
 ð	ó
	#ð 
×	Ñ	ò	Ió 
 ð	Ið	@Øð	@à5ó	@ð0 
×	Ñ	ò	6ó 
 ð	6ó	6ó	6ó	6ó	6ó	6ó	6ð	*Ø(ð	*Ø14ð	*à ô	*rS   r«   c                ót   — t        | j                  j                  j                  «      dz   | j                  z   S )Nú.)rh   r‹   rˆ   rk   rb   rO   s    rQ   Ú__str__zCompositeProperty.__str__\  s+   € Ü�4—;‘;×%Ñ%×.Ñ.Ó/°#Ñ5¸¿¹Ñ@Ð@rS   rU   )r°   zCUnion[None, Type[_CC], Callable[..., _CC], _CompositeAttrType[Any]]rž   z_CompositeAttrType[Any]r¡   úOptional[_AttributeOptions]r¢   rg   r£   rg   r¤   rI   r    zOptional[Type[Comparator[_CC]]]r¥   úOptional[_InfoType]r±   r   r“   )rx   r™   rf   zTuple[Any, ...]©rf   r†   )rã   r2   rä   r-   rå   ú	Type[Any]ræ   rI   rb   rh   rç   zOptional[Type[Mapped[Any]]]rè   úOptional[_AnnotationScanType]ré   r”  rê   rg   rf   r†   )rã   r2   rä   r-   rå   r“  ræ   rI   rb   rh   rf   r†   r’   )rf   zSequence[MapperProperty[Any]])rf   zSequence[Column[Any]])rf   zOptional[MapperProperty[_CC]])rf   z$List[Tuple[schema.Column[Any], int]])rf   rX  )rf   z Callable[[Dict[str, Any]], None]ri   )rƒ   r”   rf   zComposite.Comparator[_CC])rf   rh   )+rk   rl   rm   r•   r–   rc   r‘   r»   r¾   ÚobjectrÈ   r®   r   Úpreload_modulerí   r¯   râ   rŒ  r  r  rR   Únon_memoized_propertyr  rq   r  r  r½   r³   rÃ   rA  r   rr   rY   r‚   Úorm_utilÚBundlerD   r[  r   rF   r«   r�  rY  rZ  s   @rQ   rœ   rœ   ¹   sG  ø… ñ
ð :Ó9Ø.Ó.ð$ó ð .Ó-ð ð	&ð :>Ø$ØØ#Ø>BØ$(ñ&ð
ð&ð
 (ð&ð 7ð&ð ð&ð ð&ð ð&ð <ð&ð "ð&ð õ&õP%ó"ó+ñ “h€OóH5ðT €T×ÑÐ4Ó5ð9à)ð9ð  ð9ð ð	9ð
 *ð9ð ð9ð 6ð9ð 2ð9ð &Cð9ð !ð9ð 
ò9ó 6ð9óvð6 €T×ÑÐ4Ó5Ø€T×ÑÐ3Ó4ð'Aà)ð'Að  ð'Að ð	'Að
 *ð'Að ð'Að 
ò'Aó 5ó 6ð'AðR 
×ÑòNó ðNð 
×ÑØ€T×ÑÐ)Ó*òó +ó ðó2)ð 
×ÑØ€T×ÑÐ)Ó*ò
ó +ó  ð
ð òó ðð òAó ðAð €T×ÑÐ)Ó*ò%ó +ð%ó&[Gð~ 
×Ñò1ó ð1ðà	)óð8  +×6Ñ6ð	#Nà!ð#Nð ð#Nð ð	#Nð
 
ó#NðJ5Ø!ð5à	"ó5ô
˜(Ÿ/™/¨"Ñ-ô ô,v*�^ CÑ(ô v*÷pArS   rœ   c                  ó   — e Zd ZdZdZy)Ú	CompositeaS  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`

    TN©rk   rl   rm   r•   Úinherit_cacher˜   rS   rQ   r›  r›  `  s   „ ñð €MØrS   r›  c                  ó4   ‡ — e Zd ZdZ	 	 	 	 dd„Zdˆ fd„Zˆ xZS )ÚConcreteInheritedPropertya4  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                óÆ   — d }| j                   j                  «       D ]6  }|j                  | j                     }t	        |dd «      €Œ*|j
                  } n |€J ‚ ||«      S )Nr    )r‹   Úiterate_to_rootÚ_propsrb   r   r    )rP   rƒ   Úcomparator_callableÚmrû   s        rQ   r‚   z-ConcreteInheritedProperty._comparator_factory„  sr   € ð #Ðà—‘×,Ñ,Ó.ò 	ˆAØ—‘˜Ÿ™Ñ"ˆAÜ�qÐ.°Ó5ÑAØ&'×&:Ñ&:Ð#Ùð		ð
 #Ð.Ð.Ð.Ù" 1 fÓ-Ð-rS   c                ód   •‡ ‡— t         ‰‰ �  «        dˆ fd„Š G ˆ ˆfd„d«      } |«       ‰ _        y )Nc            	     ój   •— t        d‰ j                  ›d‰ j                  ›d‰ j                  ›d�«      ‚)Nz	Concrete z does not implement attribute z9 at the instance level.  Add this property explicitly to rŽ  )r¶   r‹   rb   rO   s   €rQ   Úwarnz0ConcreteInheritedProperty.__init__.<locals>.warn”  s*   ø€ Ý ð —;“; §£¨$¯+«+ð7óð rS   c                  ó4   •— e Zd Zdˆfd„Zdˆfd„Zdˆ ˆfd„Zy)úDConcreteInheritedProperty.__init__.<locals>.NoninheritedConcretePropc                ó   •—  ‰«        y rU   r˜   )Úsrw   rx   r§  s      €rQ   Ú__set__zLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__set__�  ó   ø€ Ù•rS   c                ó   •—  ‰«        y rU   r˜   )r«  rw   r§  s     €rQ   Ú
__delete__zOConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__delete__   r­  rS   c                ó0   •— |€‰j                   S  ‰«        y rU   )rK   )r«  rw   ÚownerrP   r§  s      €€rQ   Ú__get__zLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__get__£  s   ø€ Ø�;ØŸ?™?Ð*Ù•rS   N)r«  r   rw   r   rx   r   rf   r	   )r«  r   rw   r   rf   r	   )r«  r   rw   r   r±  r   rf   r   )rk   rl   rm   r¬  r¯  r²  )rP   r§  s   €€rQ   ÚNoninheritedConcretePropr©  œ  s   ø„ õõ÷rS   r³  )rf   r	   )r¨   rc   rK   )rP   r³  r§  rª   s   ` @€rQ   rc   z"ConcreteInheritedProperty.__init__‘  s)   ú€ Ü‰ÑÔõ	÷
	ô 
	ñ 3Ó4ˆ�rS   )rƒ   r”   rf   zType[PropComparator[_T]]r’  )rk   rl   rm   r•   r‚   rc   rY  rZ  s   @rQ   rŸ  rŸ  s  s'   ø„ ñð .Ø!ð.à	!ó.÷5ñ 5rS   rŸ  c                  ó  ‡ — e Zd ZU dZded<   	 	 	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Zes	edd„«       Ze	j                  	 	 dd„«       Zdd„Zdd„Zej                  f	 	 	 	 	 	 	 dd	„Z e	j"                  d
«      dd„«       Zˆ xZS )ÚSynonymPropertya8  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         ‰| �  |¬«       || _        || _        || _        || _        |r|| _        n'|r|j                  r|j                  | _        nd | _        |r| j                  j                  |«       t        j                  | «       y r§   )r¨   rc   rv   Ú
map_columnrK   r    rJ   r•   r¥   r¬   r   r­   )	rP   rv   r¸  rK   r    r¡   r¥   rJ   rª   s	           €rQ   rc   zSynonymProperty.__init__»  s   ø€ ô 	‰ÑÐ+<ÐÔ=àˆŒ	Ø$ˆŒØ$ˆŒØ"4ˆÔÙØˆD�HÙ˜J×.Ò.Ø!×)Ñ)ˆD�HàˆDŒHÙØ�I‰I×Ñ˜TÔ"ä×Ñ Õ%rS   c                ó~   — t        | j                  j                  | j                  «      j                  j
                  S rU   )r   r‹   rˆ   rv   rŒ   r^   rO   s    rQ   r^   zSynonymProperty.uses_objectsØ  s)   € ä˜4Ÿ;™;×-Ñ-¨t¯y©yÓ9×>Ñ>×KÑKÐKrS   c                ó¶  — t        | j                  j                  | j                  «      }t	        |d«      rt        |j                  t        «      s~t        |t        j                  «      r|j                  S t        |t        «      r|S t        j                  d| j                  j                  j                  ›d| j                  ›d|›�«      ‚|j                  S )Nrq   zsynonym() attribute "rŽ  z+" only supports ORM mapped attributes, got )r   r‹   rˆ   rv   rà   r©   rq   r   r   r0   Ú
comparatorr   r·   r¸   rk   )rP   rÑ   s     rQ   Ú_proxied_objectzSynonymProperty._proxied_objectß  s¦   € ô �t—{‘{×)Ñ)¨4¯9©9Ó5ˆÜ�t˜ZÔ(´
Ø�M‰Mœ>ô1
ô
 ˜$¤
× =Ñ =Ô>Ø—‘Ð&Ü˜DÔ"2Ô3à�ä×,Ò,ð —;‘;×%Ñ%×.Ó.°·	³	¹4ðAóð ð
 �}‰}ÐrS   c                óX   — t        | j                  j                  | j                  «      fS rU   )r   r‹   rˆ   rv   rO   s    rQ   rR   z&SynonymProperty._column_strategy_attrsö  s    € Ü˜Ÿ™×*Ñ*¨D¯I©IÓ6Ð8Ð8rS   c                ó¦   — | j                   }t        |t        «      r4| j                  r| j                  ||«      }|S |j                  ||«      }|S |S rU   )r¼  r©   r   r    )rP   rƒ   r`   Úcomps       rQ   r‚   z#SynonymProperty._comparator_factoryù  sW   € Ø×#Ñ#ˆä�dœNÔ+Ø×&Ò&Ø×.Ñ.¨t°VÓ<�ð ˆKð ×.Ñ.¨t°VÓ<�ØˆKàˆKrS   c                ó’   — t        | j                  j                  | j                  «      }|j                  j                  |||¬«      S )N)rX   )r   r‹   rˆ   rv   rŒ   rY   )rP   rV   rW   rX   rÑ   s        rQ   rY   zSynonymProperty.get_history  s:   € ô )0°·±×0BÑ0BÀDÇIÁIÓ(NˆØ�y‰y×$Ñ$ U¨E¸7Ð$ÓCÐCrS   r×   c           
     ót  — t         j                  j                  }| j                  �rŠ| j                  |j
                  j                  vrGt        j                  d| j                  ›d|j
                  j                  ›d| j                  ›d�«      ‚|j
                  j                  | j                     |j                  v r�|j                  |j
                  j                  | j                        j                  | j                  k(  rIt        j                  d| j                  ›d| j                  ›d| j                  ›d| j                  ›�«      ‚|j                  |j
                  j                  | j                     «      }|j                  | j                  ||d	¬
«       | j                  |_        || _        y )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¸  rb   Úpersist_selectabler  r·   rá   rv   Údescriptionr  r4   Ú_configure_propertyÚ_mapped_by_synonymr‹   )rP   r‹   rÄ  Ú
propertiesrû   s        rQ   Ú
set_parentzSynonymProperty.set_parent  sV  € ä—^‘^×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Ô àˆ�rS   )NNNNNN)rv   rh   r¸  zOptional[bool]rK   zOptional[Any]r    r¶  r¡   r�  r¥   r‘  rJ   rI   re   )rf   z/Union[MapperProperty[_T], SQLORMOperations[_T]]r’   )rƒ   r”   rf   zSQLORMOperations[_T]ri   )r‹   r”   rÄ  rg   rf   r†   )rk   rl   rm   r•   r–   rc   r   rq   r^   r   rŒ  r¼  rR   r‚   r   rr   rY   r–  rË  rY  rZ  s   @rQ   rµ  rµ  «  s  ø… ñð ;Ó:ð
 &*Ø$(ØAEØ9=Ø$(Ø!ð&àð&ð #ð&ð "ð	&ð
 ?ð&ð 7ð&ð "ð&ð õ&ñ6 à	ò	Ló 
ð	Lð 
×Ñðà	8òó ðó,9ó
ð   +×6Ñ6ð	Dà!ðDð ðDð ð	Dð
 
óDð €T×ÑÐ4Ó5ò#ó 6ô#rS   rµ  c                  ó   — e Zd ZdZdZy)ÚSynonymaK  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

    TNrœ  r˜   rS   rQ   rÍ  rÍ  5  s   „ ñð €MØrS   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   r   r1   r  r2   rƒ   r3   rÊ  r4   r5   rV   r6   Úengine.baser7   Ú
engine.rowr8   Úsql._typingr9   r:   r;   r<   Úsql.operatorsr=   Ú
sql.schemar>   Úsql.selectabler?   r@   rA   rB   rC   rD   rF   rH   rh   Ú_CompositeAttrTyper™   ÚWeakKeyDictionaryrš   r–   rœ   r›  rŸ  rµ  rÍ  r˜   rS   rQ   ú<module>rà     sÜ  ðòõ
 #å $Û Û Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý Û å Ý Ý $Ý &Ý Ý Ý "Ý )Ý /Ý $Ý &Ý &Ý Ý )Ý Ý Ý Ý Ý Ý Ý Ý (Ý "Ý $Ý #ð 
×ÒÝ&Ý&Ý#Ý1Ý.Ý(Ý1ÝÝ*Ý(Ý$Ý(Ý Ý0Ý'Ý)Ý,Ý,Ý#Ý'Ý1Ý/Ý1Ý3áˆT˜Ô€Ùˆe˜3Ô€ôJH˜¨Ñ+ô JHðZ ØØØØØð	ñÐ ñ ˆe˜3Ô€ð
 €G×ÑÓð ð ó  ô
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õ rS   