Ë
    r™ãj§¥  ã                  óÜ  — 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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(l0m1Z1 d!d)l2m3Z3 d!d*l4m5Z5 d!d+l4m6Z6 d!d,l4m7Z7 d!d-l4m8Z8 d!d.l4m9Z9 d!d/l4m:Z: d!d0l4m;Z; ej&                  rœdd1l<m=Z= dd2l<m>Z> dd3lm?Z? dd4lm@Z@ dd5lmAZA dd6lBmCZC dd7lDmEZE dd8lDmFZF dd9l"mGZG dd:lHmIZI dd;lJmKZK dd<lJmLZL dd=lMmNZN d!d>lOmPZP d!d?lQmRZR d!d@lSmTZT d!dAlSmUZU d!dBl2mVZV d!dCl2mWZW d!dDlXmYZY d!dElZm[Z[ d!dFl\m]Z] d!dGl4m^Z^ d!dHl4m_Z_ d!dIl4m`Z` d!dJl4maZa  edKe	¬L«      Zb edMe	¬L«      Zc G dN„ dOe&eb   «      ZdeeedPdQdRdSf   Zf edTe	¬L«      Zg ejÐ                  «       ZidUejdV<    G dW„ dXe%eg   e$edeg   «      Zk G dY„ dZekeb   eeb   «      Zl G d[„ d\edeb   «      Zm G d]„ d^edeb   «      Zn G d_„ d`eneb   eeb   «      Zoy)azŸ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)Úget_args)ÚList)ÚNoReturn)ÚOptional)ÚSequence)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Ú
attributes)Úutil)Ú_DeclarativeMapped)ÚDONT_SET)ÚLoaderCallableStatus)ÚMapped)ÚPassiveFlag)ÚSQLORMOperations)Ú_AttributeOptions)Ú_IntrospectsAnnotations)Ú_MapsColumns)ÚMapperProperty)ÚPropComparator)Úde_stringify_annotationé   )Úevent)Úexc)Úschema)Úsql©Ú
expression)Ú	operators)Ú_NoArg)ÚBindParameter)Úde_optionalize_union_types)Úincludes_none)Ú
is_fwd_ref)Ú	is_pep593)Úis_union)ÚTupleAny)ÚUnpack)Ú_InstanceDict)Ú_RegistryType)ÚHistory)ÚInstrumentedAttribute)ÚQueryableAttribute)Ú_ORMCompileState)Ú_ClassScanAbstractConfig)Ú_DeclarativeMapperConfig)Ú_DataclassArguments)Ú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    új/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/orm/descriptor_props.pyÚ_column_strategy_attrsz)DescriptorProperty._column_strategy_attrsn   s   € Ü!ØMó
ð 	
ó    c                ó   — t        «       ‚©NrU   )rX   ÚstateÚdict_Úpassives       rY   Úget_historyzDescriptorProperty.get_historys   s   € ô "Ó#Ð#r[   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 r]   )Úuses_objects©rX   Úprops    €rY   rf   zDDescriptorProperty.instrument_class.<locals>._ProxyImpl.uses_objectsƒ   s   ø€ à×(Ñ(Ð(r[   c                ó   — || _         y r]   )Úkey©rX   rj   s     rY   Ú__init__z@DescriptorProperty.instrument_class.<locals>._ProxyImpl.__init__‡   s	   € Ø�•r[   c                ó*   •— ‰j                  |||«      S r]   )ra   )rX   r^   r_   r`   rh   s       €rY   ra   zCDescriptorProperty.instrument_class.<locals>._ProxyImpl.get_historyŠ   s   ø€ ð ×'Ñ'¨¨u°gÓ>Ð>r[   N©ÚreturnÚbool)rj   Ústr©r^   úInstanceState[Any]r_   r2   r`   r   ro   r4   )Ú__name__Ú
__module__Ú__qualname__Úaccepts_scalar_loaderÚload_on_unexpireÚ
collectionÚpropertyrf   rl   r   ÚPASSIVE_OFFra   )rh   s   €rY   Ú
_ProxyImplrd   ~   sa   ø„ Ø$)Ð!Ø#ÐØˆJàô)ó ð)óð (3×'>Ñ'>ð	?à)ð?ð %ð?ð %ð	?ð
 ö?r[   r|   c                ó4   •— t        | ‰j                  |«       y r]   )ÚsetattrÚname)ÚobjÚvaluerX   s     €rY   Úfsetz1DescriptorProperty.instrument_class.<locals>.fset™   s   ø€ Ü˜˜TŸY™Y¨Õ.r[   c                ó2   •— t        | ‰j                  «       y r]   )Údelattrr   ©r€   rX   s    €rY   Úfdelz1DescriptorProperty.instrument_class.<locals>.fdelœ   s   ø€ Ü˜˜TŸY™YÕ'r[   c                ó0   •— t        | ‰j                  «      S r]   )Úgetattrr   r…   s    €rY   Úfgetz1DescriptorProperty.instrument_class.<locals>.fgetŸ   s   ø€ Ü˜s D§I¡IÓ.Ð.r[   )r‰   r‚   r†   c                 ó&   •— ‰j                  ‰ «      S r]   )Ú_comparator_factory)ÚmapperrX   s   €€rY   ú<lambda>z5DescriptorProperty.instrument_class.<locals>.<lambda>¨   s   ø€ �D×,Ñ,¨VÓ4€ r[   )rR   Úoriginal_property)r€   r   r�   r   ro   ÚNone)r€   r   ro   r�   )r€   r   ro   r   )r   Ú_AttributeImplrS   rˆ   Úclass_rj   Ú_is_userland_descriptorrz   Ú_create_proxied_attributeÚparentrR   ÚimplÚclass_managerÚinstrument_attribute)	rX   rŒ   r|   Údescr‚   r†   r‰   Ú
proxy_attrrh   s	   ``      @rY   Úinstrument_classz#DescriptorProperty.instrument_class{   sñ   ú€ Øˆö	?œ×2Ñ2ô 	?ð( �?‰?Ð"Ü˜6Ÿ=™=¨$¯(©(°DÓ9ˆDØ×-Ñ-¨d¯h©h¸Ô=Ø"&�”à�?‰?Ð"õ/õ(õ/ô '¨D°tÀ$ÔGˆDŒOàJ”Z×9Ñ9¸$¿/¹/ÓJØ�K‰K×ÑØ�H‰HØ�O‰OÜ4Ø—‘Ø"ô
ˆ
ñ % T§X¡XÓ.ˆ
ŒØ×Ñ×1Ñ1°$·(±(¸JÕGr[   ©ro   z!Sequence[QueryableAttribute[Any]]rr   ©rŒ   úMapper[Any]ro   r�   )rt   ru   rv   Ú__doc__rR   Ú__annotations__rf   Ú_links_to_entityrZ   r   r{   ra   rš   © r[   rY   rP   rP   c   se   … ñ ð €CˆÓà€LØÐà(Ó(ó
ð  +×6Ñ6ð	$à!ð$ð ð$ð ð	$ð
 
ó$ô3Hr[   rP   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
ed<   	 d,ej                  ddddddddœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d-ˆ fd„Zej                  d.d„«       Z
d/ˆ fd„Zd0d„Zd1d„Z e«       Zd1d„Z ej"                  d«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d2d„«       Zd1d„Z ej"                  d«       ej"                  d«      	 	 	 	 	 	 	 	 	 	 	 	 d3d„«       «       Zej                  d4d„«       Zej                   ej"                  d«      d5d„«       «       Zd4d„Zej0                   ej"                  d«      d6d„«       «       Zed7d„«       Zed8d „«       Z ej"                  d«      d1d!„«       Zd1d"„Zej                  d9d#„«       Z	 	 d:d$„Z e!jD                  f	 	 	 	 	 	 	 d;d%„Z#	 	 	 	 d<d&„Z$ G d'„ d(e%jL                  e'   «      Z( G d)„ d*e)e*   «      Z+d=d+„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], ...]ÚattrsrQ   Úcolumn_templatez=CallableReference[Optional[Callable[[_CC], Tuple[Any, ...]]]]Ú_generated_composite_accessorzType[Comparator[_CC]]Úcomparator_factoryNF)Úreturn_none_onÚattribute_optionsÚactive_historyÚdeferredÚgrouprª   r¨   Úinfoc               óZ  •— t         ‰| �  |¬«       t        |t        t        t
        j                  f«      r|f|
z   | _        d | _        n|| _        |
| _        |�	 |dz   || _        || _        || _        || _        || _        |�|n| j$                  j&                  | _        d | _        |	�| j,                  j/                  |	«       t1        j2                  | «       | j5                  «        | j7                  «        y # t        t        f$ r}t        j                  d|›d�«      |‚d }~ww xY w)N©r¬   Úxzcolumn_template zS is not a valid template; expected a string containing exactly one '%s' placeholder)Úsuperrl   Ú
isinstancer   rq   r%   rD   r§   r¦   Ú	TypeErrorÚ
ValueErrorÚsa_excÚArgumentErrorr¨   r«   r­   r®   r¯   Ú	__class__Ú
Comparatorrª   r©   r°   Úupdater   Úset_creation_orderÚ_create_descriptorÚ_init_accessor)rX   Ú_class_or_attrr«   r¬   r­   r®   r¯   rª   r¨   r°   r§   ÚkwargsÚterº   s                €rY   rl   zCompositeProperty.__init__Û   s9  ø€ ô$ 	‰ÑÐ+<ÐÔ=ä�n¤v¬s´C×4EÑ4EÐ&FÔGØ(Ð*¨UÑ2ˆDŒJà#'ˆDÕ à#1ˆDÔ ØˆDŒJàÐ&ðØ #Ò%ð  /ˆÔà,ˆÔØ,ˆÔØ ˆŒØˆŒ
ð "Ð-ñ à—‘×*Ñ*ð 	Ôð
 .2ˆÔ*ØÐØ�I‰I×Ñ˜TÔ"ä×Ñ Ô%Ø×ÑÔ!Ø×ÑÕøô/ œzÐ*ò Ü×*Ñ*Ø& Ð&9ð :'ð 'óð ð	ûðús   ÁC< Ã<D*ÄD%Ä%D*c                ó^   ‡ ‡— ‰ j                   Št        ‰«      r	dˆˆ fd„}|S ‰ j                  S )Nc                 ó.   •—  ‰| Ž ry  ‰j                   | Ž S r]   )r¦   )Úargsr«   rX   s    €€rY   Ú	constructz9CompositeProperty._construct_composite.<locals>.construct  s!   ø€ Ù! 4Ñ(Øà/˜4×/Ñ/°Ð6Ð6r[   )rÅ   r   ro   r   )r«   Úcallabler¦   )rX   rÆ   r«   s   ` @rY   Ú_construct_compositez&CompositeProperty._construct_composite  s/   ù€ à×,Ñ,ˆÜ�NÔ#ö7ð Ðà×'Ñ'Ð'r[   c                óD   •— t         ‰| �  |«       | j                  «        y r]   )r´   rš   Ú_setup_event_handlers)rX   rŒ   rº   s     €rY   rš   z"CompositeProperty.instrument_class"  s   ø€ Ü‰Ñ  Ô(Ø×"Ñ"Õ$r[   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__ÚAttributeErrorr¸   ÚInvalidRequestErrorr¦   rt   )rX   r�   ÚaccessorÚaes       rY   Ú_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_columnsrW   s    rY   Údo_initzCompositeProperty.do_init5  s   € ð
 	×(Ñ(Õ*r[   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rX ‰j                  |Ž |‰j                  <   |j                  j                  j                  |‰j                  ‰j                  g«       |j                  ‰j                  d «      S c c}w r]   )r   Úinstance_dictÚinstance_staterj   Ú_attribute_keysrˆ   rÈ   ÚmanagerÚdispatchÚrefreshÚ_COMPOSITE_FGETÚget)Úinstancer_   r^   rj   ÚvaluesrX   s        €rY   r‰   z2CompositeProperty._create_descriptor.<locals>.fgetD  sÇ   ø€ Ü×,Ñ,¨XÓ6ˆEÜ×-Ñ-¨hÓ7ˆEà�x‰x˜uÑ$ð
 7;×6JÑ6JöØ/2”G˜H cÕ*ð�ð ð —8‘8 5Ñ(Ø&? d×&?Ñ&?ÀÐ&H�E˜$Ÿ(™(‘OØ—M‘M×*Ñ*×2Ñ2Ø˜t×3Ñ3°d·h±h°Zôð —9‘9˜TŸX™X tÓ,Ð,ùòs   ÁCc                óx  •— |t         j                  u ry 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 r]   )r   r   r   r×   rØ   rÚ   rj   rÛ   Ú_active_historyrÞ   ÚNO_VALUEÚsetr•   rÙ   r~   ÚziprÑ   )
rß   r�   r_   r^   ÚattrÚpreviousÚfnrj   r‰   rX   s
           €€rY   r‚   z2CompositeProperty._create_descriptor.<locals>.fsetX  s  ø€ ØÔ,×5Ñ5Ñ5Øä×,Ñ,¨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ñ	2r[   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 r]   )r   rØ   r×   rÚ   rj   rÛ   râ   Úpopr   rã   Úremover•   rÙ   r~   )rß   r^   r_   ræ   rç   rj   r‰   rX   s         €€rY   r†   z2CompositeProperty._create_descriptor.<locals>.fdelr  sÅ   ø€ Ü×-Ñ-¨hÓ7ˆEÜ×,Ñ,¨XÓ6ˆEØ—=‘= §¡Ñ*ˆDà�}‰}×,Ò,Ù ›>�Ø—	‘	˜$Ÿ(™( DÕ)à Ÿ9™9 T§X¡XÔ/C×/LÑ/LÓM�à—=‘= §¡Ñ*ˆDØ�M‰M× Ñ  ¨°$·)±)Ô<Ø×+Ñ+ò -�Ü˜ # tÕ,ñ-r[   N)rß   r   ro   r   )rß   r   r�   r   ro   r�   )rß   r   ro   r�   )rz   rS   )rX   r‚   r†   r‰   s   `  @rY   r¾   z$CompositeProperty._create_descriptor>  s$   ù€ õ	-ö(	2ö4	-ô  # 4¨¨tÓ4ˆ�r[   úsqlalchemy.orm.propertiesc
                ó¦  — t         j                  j                  j                  }
| j                  €|€| j                  ||«       |}t        |«      rt        |«      d   }|rÅ| j                  €¹t        |t        «      st        |d¬«      rP|€?t        |d«      r|j                  n
t        |«      }t        j                  d|› d|› d�«      ‚t        |||d¬«      }t!        |«      r:t#        |«      r/| j$                  t&        j(                  u rd	„ | _        t+        |«      }|| _        t-        | j                  «      r| j/                  |||||«       np| j0                  �t        j                  d
«      ‚| j2                  D ]@  }t        ||
t4        j6                  f«      sŒ |j8                  �Œ-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_genericc                 ó&   — t        d„ | D «       «      S )Nc              3  ó$   K  — | ]  }|d u –— Œ
 y ­wr]   r¡   )Ú.0Úargs     rY   ú	<genexpr>zGCompositeProperty.declarative_scan.<locals>.<lambda>.<locals>.<genexpr>°  s   è ø€ ò <Ø(+˜˜tœñ<ùs   ‚)Úall)rÅ   s    rY   r�   z4CompositeProperty.declarative_scan.<locals>.<lambda>°  s   € ¼ñ <Ø/3ô<ó 9€ r[   zEcolumn_template is only supported when composite_class is a dataclasszIComposite class column arguments must be named unless a dataclass is used)r   Ú	preloadedÚorm_propertiesr=   r¦   Ú_raise_for_requiredr.   r   rµ   rq   r-   Úhasattrrï   r¸   r¹   r    r/   r,   r«   r)   ÚNO_ARGr+   r   Ú_setup_for_dataclassr¨   r§   r$   rF   r   r¿   )rX   Ú	decl_scanÚregistryÚclsÚoriginating_modulerj   Úmapped_containerÚ
annotationÚextracted_mapped_annotationÚis_dataclass_fieldr=   ÚargumentÚstr_argræ   s                 rY   Údeclarative_scanz"CompositeProperty.declarative_scan„  sÓ  € ô —~‘~×4Ñ4×AÑAˆà× Ñ Ð(Ø+Ð3à×$Ñ$ S¨#Ô.Ø.ˆä�XÔÜ Ó)¨!Ñ,ˆHá˜×,Ñ,Ð4Ü˜(¤CÔ(¬JØ¨õ-ð &Ð-ô # 8Ð->Ô?ð !×0Ò0ä  ›]ð ô
 !×.Ñ.Ø0°°
ð ;EØELÀIÈQðPóð ô 3Ø˜Ð#5Àtô�ô ˜Ô!¤m°HÔ&=Ø×&Ñ&¬&¯-©-Ñ7ñ+�DÔ'ô 6°hÓ?�à#+ˆDÔ ä˜×,Ñ,Ô-Ø×%Ñ%Ø˜8 SÐ*<¸cõð ×#Ñ#Ð/Ü×*Ñ*ð%óð ð Ÿ
™
ò �ä˜t l´F·M±MÐ%BÕCØŸ	™	Ñ)ä ×.Ñ.ð5óð ðð 	×ÑÕr[   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 r]   r¡   )r€   Úgetters    €rY   r�   z2CompositeProperty._init_accessor.<locals>.<lambda>Õ  s   ø€ Á&ÈÃ+À€ r[   c                ó"   — | j                  «       S r]   ©rÌ   )r€   s    rY   r�   z2CompositeProperty._init_accessor.<locals>.<lambda>ä  s   €  × 8Ñ 8Ó :€ r[   )r   r¦   rû   ÚinspectÚ	signatureÚoperatorÚ
attrgetterÚ
parametersrà   r   Úlenr©   rµ   Útyper£   )rX   ÚinspÚpr  s      @rY   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                ój  — 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                  «      › �«      ‚|
€I| j"                  �  || j"                  |	j$                  z  «      }
n |«       }
| xj                  |
fz  c_        t'        |
|«      r,|
j)                  ||||||	j$                  |	j*                  «       Œät'        |
t,        j.                  «      sŒÿ|j1                  |	j$                  |
«       �Œ y )Nznumber of composite attributes z3 exceeds that of the number of attributes in class ú )r   rø   rù   r=   Úorm_decl_baser  r  r¦   Ú	itertoolsÚzip_longestr  rà   r§   r¸   r¹   r  rt   r¨   r   rµ   Údeclarative_scan_for_compositer  r$   rF   Ú_undefer_column_name)rX   rþ   rÿ   r   r  rj   r=   Ú	decl_baser  Úparamræ   s              rY   rý   z&CompositeProperty._setup_for_dataclassç  sm  € ô —~‘~×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óð ð ˆ|ð ×'Ñ'Ð3Ù'¨×(<Ñ(<¸u¿z¹zÑ(IÓJ‘Dá'›>�DØ—
’
˜t˜gÑ%•
ä˜$ Ô-Ø×3Ñ3ØØØØ&ØØ—J‘JØ×$Ñ$õô ˜D¤&§-¡-Õ0Ø×.Ñ.¨u¯z©z¸4Ö@ñ=	Ar[   c                ó�   — | j                   D �cg c],  }t        | j                  j                  |j                  «      ‘Œ. c}S c c}w r]   )Úpropsrˆ   r”   r‘   rj   rg   s     rY   Ú_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ù   r=   r§   rµ   rq   r”   Úget_propertyr$   rF   Ú_columntopropertyÚcolumnr   r5   rz   r   r¸   r¹   Úappend)rX   r!  r=   ræ   rh   s        rY   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˜Õð%	ð& ˆr[   c                ó   — | j                   S r]   )r"  rW   s    rY   rZ   z(CompositeProperty._column_strategy_attrs5  s   € Ø×(Ñ(Ð(r[   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 r]   )	r   rø   rù   r=   r§   rµ   r$   rF   r'  )rX   r=   Úas      rY   ÚcolumnszCompositeProperty.columns8  sd   € ô —~‘~×4Ñ4×AÑAˆð —Z‘Zö
àÜ˜!œfŸm™m¨\Ð:Ô;ô # 1 lÔ3ˆA�HŠH¸Ñ:ò
ð 	
ùò 
s   ³=A3c                ó   — | S r]   r¡   rW   s    rY   Úmapper_property_to_assignz+CompositeProperty.mapper_property_to_assignB  s   € àˆr[   c                ó^   — | j                   D �cg c]  }|j                  �Œ|df‘Œ c}S c c}w )Nr   )r,  Útable)rX   Úcs     rY   Úcolumns_to_assignz#CompositeProperty.columns_to_assignF  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ù   r<   r!  rµ   r­   r®   Ústrategy_keyr¯   )rX   r<   rh   Úcprops       rY   rÓ   z-CompositeProperty._setup_arguments_on_columnsJ  sq   € ô Ÿ™×6Ñ6×EÑEˆà—J‘Jò 
	%ˆDÜ˜d NÔ3Øà�à#'×#6Ñ#6ˆEÔ Ø�}Š}Ø!%§¡�”Ø%O�Ô"ØŸ*™*ˆE�Kñ
	%r[   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¡   )r^   ÚcontextÚ_load_refresh_handlers     €rY   Úload_handlerz=CompositeProperty._setup_event_handlers.<locals>.load_handlera  s   ø€ ñ " %¨°$À5ÖIr[   c                óŽ   •— |r5‰j                   hj                  ‰j                  «      j                  |«      r ‰| ||d¬«       y y )NTr9  )rj   ÚunionrÙ   Úintersection)r^   r;  Úto_loadr<  rX   s      €€rY   Úrefresh_handlerz@CompositeProperty._setup_event_handlers.<locals>.refresh_handlerf  sF   ø€ ñ Ø—‘�
× Ñ  ×!5Ñ!5Ó6ß‰l˜7Ó#ð$ñ & e¨W°gÈ$ÖOð$r[   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 r]   )ÚdictrÝ   rj   rÙ   rÈ   )r^   r;  rA  r:  r_   Úkrj   rX   s          €rY   r<  zFCompositeProperty._setup_event_handlers.<locals>._load_refresh_handlerr  s‹   ø€ ð —J‘JˆEñ  '¨T×-AÑ-AÑ"AØ—(‘(˜eÑ#Øð
 ×)Ñ)ò �Ø˜E’>Ùðð 8˜d×7Ñ7Ø-1×-AÑ-AÖB c�%—*‘*˜S“/ÒBðˆE�$—(‘(ŠOùÚBs   ÁBc                ó    •— |�$t        ‰j                  «      j                  |«      r'| j                  j	                  ‰j
                  d «       y y r]   )rä   rÙ   r@  rD  rê   rj   )r^   ÚkeysrX   s     €rY   Úexpire_handlerz?CompositeProperty._setup_event_handlers.<locals>.expire_handler“  s>   ø€ ð ˆ|œs 4×#7Ñ#7Ó8×EÑEÀdÔKØ—
‘
—‘˜tŸx™x¨Õ.ð  Lr[   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)rD  rê   rj   )rŒ   Ú
connectionr^   rX   s      €rY   Úinsert_update_handlerzFCompositeProperty._setup_event_handlers.<locals>.insert_update_handler™  s   ø€ ð �J‰J�N‰N˜4Ÿ8™8 TÕ*r[   Úafter_insertT)ÚrawÚafter_updateÚload)rM  Ú	propagaterÜ   ÚexpireN)r^   rs   r;  r7   ro   r�   )r^   rs   r;  r7   rA  úOptional[Sequence[str]]ro   r�   )
r^   rs   r;  r7   rA  rR  r:  rp   ro   r�   )r^   rs   rG  rR  ro   r�   )rŒ   r�   rJ  r?   r^   rs   ro   r�   )	r"   Úlistenr”   r–   rj   rÛ   r•   r­   râ   )rX   r=  rB  rH  rK  r™   r<  s   `     @rY   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ˆ
�‰× Ñ Õ0r[   c                óT   — | j                   D �cg c]  }|j                  ‘Œ c}S c c}w r]   )r!  rj   rg   s     rY   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 r]   r  )Úvals    rY   Ú
get_valueszOCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.get_valuesÈ  s   € Ø×/Ñ/Ó1Ð1r[   c           
     ó®   •— | j                  t        ‰ ‰| j                  ‰j                  «      «      «      D ��ci c]  \  }}||“Œ
 c}}«       y c c}}w r]   )r¼   rå   rê   rj   )Ú	dest_dictrj   rW  r§   rX  rX   s      €€€rY   ÚpopulatezMCompositeProperty._populate_composite_bulk_save_mappings_fn.<locals>.populateÍ  sR   ø€ Ø×Ñô %(Ø™z¨)¯-©-¸¿¹Ó*AÓBó%÷á ˜˜Sð ˜‘Hóõùós   »A
)rW  r   ro   z
Tuple[Any])rZ  zDict[str, Any]ro   r�   )r©   r!  rj   )rX   rh   r[  r§   rX  s   `  @@rY   Ú)_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!  rj   rÚ   r•   ra   Úhas_changesÚnon_deletedÚextendr(  Údeletedr   r4   rÈ   )rX   r^   r_   r`   Úaddedra  Úhas_historyrh   rj   Úhistr_  s              rY   ra   zCompositeProperty.get_historyÙ  s  € ð ˆØˆàˆØ—J‘Jò 	%ˆDØ—(‘(ˆCØ—=‘= Ñ%×*Ñ*×6Ñ6°u¸eÓDˆDØ×ÑÔ!Ø"�à×*Ñ*Ó,ˆKÙØ—‘˜[Õ)à—‘˜TÔ"Ø�|Š|Ø—‘˜tŸ|™|Õ,à—‘˜tÕ$ð	%ñ  Ü×%Ñ%Ø*�×*Ñ*¨EÐ2Ð3ØØ*�×*Ñ*¨GÐ4Ð5óð ô ×%Ñ%ØÐ.�T×.Ñ.°Ð6Ð7¸óð r[   c                ó&   — | j                  | |«      S r]   )rª   )rX   rŒ   s     rY   r‹   z%CompositeProperty._comparator_factory   s   € ð ×&Ñ& t¨VÓ4Ð4r[   c                  ó@   ‡ — e Zd Z	 	 	 	 dˆ fd„Z	 	 	 	 	 	 	 	 dd„Zˆ xZS )ú!CompositeProperty.CompositeBundlec                óH   •— || _         t        ‰| �  |j                  g|¢­Ž  y r]   )rz   r´   rl   rj   )rX   Ú	property_Úexprrº   s      €rY   rl   z*CompositeProperty.CompositeBundle.__init__  s"   ø€ ð
 &ˆDŒMÜ‰GÑ˜YŸ]™]Ð2¨TÔ2r[   c                ó   ‡ ‡— dˆˆ fd„}|S )Nc                óh   •—  ‰j                   j                  ‰D �cg c]
  } || «      ‘Œ c}Ž S c c}w r]   )rz   rÈ   )ÚrowÚprocÚprocsrX   s     €€rY   rn  zDCompositeProperty.CompositeBundle.create_row_processor.<locals>.proc  s1   ø€ Ø9�t—}‘}×9Ñ9Ø,1Ö2 D‘d˜3•iÒ2ðð ùÚ2s   œ/)rm  zRow[Unpack[TupleAny]]ro   r   r¡   )rX   Úqueryro  Úlabelsrn  s   ` `  rY   Úcreate_row_processorz6CompositeProperty.CompositeBundle.create_row_processor  s   ù€ öð
 ˆKr[   )ri  zComposite[_T]rj  rC   )rp  zSelect[Unpack[TupleAny]]ro  z0Sequence[Callable[[Row[Unpack[TupleAny]]], Any]]rq  úSequence[str]ro   z&Callable[[Row[Unpack[TupleAny]]], Any])rt   ru   rv   rl   rr  Ú__classcell__©rº   s   @rY   ÚCompositeBundlerg    sF   ø„ ð	3à$ð	3ð õ	3ð	à+ð	ð Dð	ð "ð		ð
 4÷	r[   rv  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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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]]rh   c                ó@   — t        j                  | j                  ddiŽS )Nr¯   F)r'   rC   r"  rW   s    rY   Úclausesz$CompositeProperty.Comparator.clauses3  s&   € ä×(Ñ(Ø"×7Ñ7ðØñð r[   c                ó   — | j                   S r]   r&   rW   s    rY   Ú__clause_element__z/CompositeProperty.Comparator.__clause_element__9  s   € Ø—?‘?Ð"r[   c                óÐ   — | j                   j                  | j                  | j                  | j                  j                  dœ«      }t
        j                  | j                  |«      S )N)ÚparententityÚparentmapperÚ	proxy_key)rz  Ú	_annotateÚ_parententityrh   rj   r¥   rv  )rX   rz  s     rY   r'   z'CompositeProperty.Comparator.expression<  sQ   € à—l‘l×,Ñ,à$(×$6Ñ$6Ø$(×$6Ñ$6Ø!%§¡§¡ñóˆGô %×4Ñ4°T·Y±YÀÓHÐHr[   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*   r�   rh   rÙ   r¦   r  rÑ   r¸   r¹   Úlistrå   r"  )rX   r�   rj   rà   s       rY   Ú_bulk_update_tuplesz0CompositeProperty.Comparator._bulk_update_tuplesG  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                ó6   — | j                   j                  «       S r]   )rh   r\  rk   s     rY   Ú_bulk_dml_setterz-CompositeProperty.Comparator._bulk_dml_setter_  s   € Ø—9‘9×FÑFÓHÐHr[   c                óè   — | j                   rL| j                  j                  D �cg c],  }t        | j                   j                  |j
                  «      ‘Œ. c}S | j                  j                  S c c}w r]   )Ú_adapt_to_entityrh   r"  rˆ   Úentityrj   rg   s     rY   r"  z1CompositeProperty.Comparator._comparable_elementsb  s`   € à×$Ò$ð !%§	¡	× >Ñ >öàô ˜D×1Ñ1×8Ñ8¸$¿(¹(ÕCòð ð
 —y‘y×5Ñ5Ð5ùòs   ¥1A/c                óB   — | j                  t        j                  |«      S r]   )Ú_comparer(   Úeq©rX   Úothers     rY   Ú__eq__z#CompositeProperty.Comparator.__eq__l  ó   € Ø—=‘=¤§¡¨uÓ5Ð5r[   c                óB   — | j                  t        j                  |«      S r]   )rŒ  r(   ÚnerŽ  s     rY   Ú__ne__z#CompositeProperty.Comparator.__ne__o  r‘  r[   c                óB   — | j                  t        j                  |«      S r]   )rŒ  r(   ÚltrŽ  s     rY   Ú__lt__z#CompositeProperty.Comparator.__lt__r  r‘  r[   c                óB   — | j                  t        j                  |«      S r]   )rŒ  r(   ÚgtrŽ  s     rY   Ú__gt__z#CompositeProperty.Comparator.__gt__u  r‘  r[   c                óB   — | j                  t        j                  |«      S r]   )rŒ  r(   ÚlerŽ  s     rY   Ú__le__z#CompositeProperty.Comparator.__le__x  r‘  r[   c                óB   — | j                  t        j                  |«      S r]   )rŒ  r(   ÚgerŽ  s     rY   Ú__ge__z#CompositeProperty.Comparator.__ge__{  r‘  r[   c                ó‚   — t        j                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      S c c}w r]   )r'   ÚOrderByListr"  r˜   ©rX   Úes     rY   r˜   z!CompositeProperty.Comparator.desc~  s2   € Ü×)Ñ)Ø#'×#<Ñ#<Ö=˜a�—‘•Ò=óð ùÚ=ó   ž<c                ó‚   — t        j                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      S c c}w r]   )r'   r¢  r"  Úascr£  s     rY   r§  z CompositeProperty.Comparator.ascƒ  s2   € Ü×)Ñ)Ø"&×";Ñ";Ö<˜Q�—‘•Ò<óð ùÚ<r¥  c                ó‚   — t        j                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      S c c}w r]   )r'   r¢  r"  Únulls_firstr£  s     rY   r©  z(CompositeProperty.Comparator.nulls_firstˆ  s2   € Ü×)Ñ)Ø*.×*CÑ*CÖD Q�—‘•ÒDóð ùÚDr¥  c                ó‚   — t        j                  | j                  D �cg c]  }|j                  «       ‘Œ c}«      S c c}w r]   )r'   r¢  r"  Ú
nulls_lastr£  s     rY   r«  z'CompositeProperty.Comparator.nulls_last�  s2   € Ü×)Ñ)Ø)-×)BÑ)BÖC A�—‘•ÒCóð ùÚCr¥  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 r]   )	r  rh   r"  rÑ   rå   r‰  Úadapterr%   Úand_)rX   r  r�  rà   r+  ÚbÚcomparisonsr³   s           rY   rŒ  z%CompositeProperty.Comparator._compare™  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)ro   rC   )ro   z&CompositeProperty.CompositeBundle[_PT])r�   r   ro   z(Sequence[Tuple[_DMLColumnArgument, Any]])rj   rq   ro   zOptional[Callable[..., Any]]r›   )r�  r   ro   úColumnElement[bool])ro   zoperators.OrderingOperators)r  rE   r�  r   ro   r±  )rt   ru   rv   rž   Ú__hash__rŸ   r   Úmemoized_propertyrz  r|  r'   r…  r‡  r"  r�  r”  r—  rš  r�  r   r˜   r§  r©  r«  rŒ  r¡   r[   rY   r»   rx    sÔ   … ñ	ð& ˆà3Ó3à	×	Ñ	ò	ó 
 ð	ó
	#ð 
×	Ñ	ò	Ió 
 ð	Ið	@Øð	@à5ó	@ó0	Ið 
×	Ñ	ò	6ó 
 ð	6ó	6ó	6ó	6ó	6ó	6ó	6ó	ó
	ó
	ó
	ð	*Ø(ð	*Ø14ð	*à ô	*r[   r»   c                ót   — t        | j                  j                  j                  «      dz   | j                  z   S )Nú.)rq   r”   r‘   rt   rj   rW   s    rY   Ú__str__zCompositeProperty.__str__ª  s+   € Ü�4—;‘;×%Ñ%×.Ñ.Ó/°#Ñ5¸¿¹Ñ@Ð@r[   r]   )rÀ   zCUnion[None, Type[_CC], Callable[..., _CC], _CompositeAttrType[Any]]r§   z_CompositeAttrType[Any]r«   z(Union[_NoArg, None, Callable[..., bool]]r¬   úOptional[_AttributeOptions]r­   rp   r®   rp   r¯   rQ   rª   zOptional[Type[Comparator[_CC]]]r¨   rQ   r°   úOptional[_InfoType]rÁ   r   )ro   zCallable[..., Any]rœ   )r�   r¢   ro   zTuple[Any, ...]©ro   r�   )rþ   r9   rÿ   r3   r   ú	Type[Any]r  rQ   rj   rq   r  zOptional[Type[Mapped[Any]]]r  úOptional[_AnnotationScanType]r  r»  r  rp   ro   r�   )rþ   r9   rÿ   r3   r   rº  r  rQ   rj   rq   ro   r�   r›   )ro   zSequence[MapperProperty[Any]])ro   zSequence[Column[Any]])ro   zOptional[MapperProperty[_CC]])ro   z$List[Tuple[schema.Column[Any], int]])ro   rs  )ro   z Callable[[Dict[str, Any]], None]rr   )rŒ   r�   ro   zComposite.Comparator[_CC])ro   rq   ).rt   ru   rv   rž   rŸ   r)   rü   rl   r   r³  rÈ   rš   rÑ   rÔ   ÚobjectrÝ   r¾   Úpreload_moduler  r¿   rý   r"  r!  rZ   Únon_memoized_propertyr,  rz   r.  r2  rÓ   rÊ   rÙ   r\  r   r{   ra   r‹   Úorm_utilÚBundlerL   rv  r   rN   r»   r¶  rt  ru  s   @rY   r¥   r¥   Â   sŒ  ø… ñ
ð :Ó9Ø.Ó.Ø"Ó"ð$ó ð .Ó-ð ð	6ð �M‰MØ9=Ø$ØØ#Ø>BØ)-Ø$(ñ6ð
ð6ð
 (ð6ð
ð6ð 7ð6ð ð6ð ð6ð ð6ð <ð6ð 'ð6ð "ð6ð  õ!6ðp 
×Ñò(ó ð(õ%ó"ó+ñ “h€OóD5ðL €T×ÑÐ4Ó5ðEà+ðEð  ðEð ð	Eð
 *ðEð ðEð 6ðEð 2ðEð &CðEð !ðEð 
òEó 6ðEóNð6 €T×ÑÐ4Ó5Ø€T×ÑÐ3Ó4ð+Aà+ð+Að  ð+Að ð	+Að
 *ð+Að ð+Að 
ò+Aó 5ó 6ð+AðZ 
×ÑòNó ðNð 
×ÑØ€T×ÑÐ)Ó*òó +ó ðó2)ð 
×ÑØ€T×ÑÐ)Ó*ò
ó +ó  ð
ð òó ðð òAó ðAð €T×ÑÐ)Ó*ò%ó +ð%ó&[Gð~ 
×Ñò1ó ð1ðà	)óð8  +×6Ñ6ð	%à!ð%ð ð%ð ð	%ð
 
ó%ðN5Ø!ð5à	"ó5ô
˜(Ÿ/™/¨"Ñ-ô ô,M*�^ CÑ(ô M*÷^Ar[   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©rt   ru   rv   rž   Úinherit_cacher¡   r[   rY   rÂ  rÂ  ®  s   „ ñð €MØr[   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Ú_propsrj   rˆ   rª   )rX   rŒ   Úcomparator_callableÚmr  s        rY   r‹   z-ConcreteInheritedProperty._comparator_factoryÒ  sr   € ð #Ðà—‘×,Ñ,Ó.ò 	ˆAØ—‘˜Ÿ™Ñ"ˆAÜ�qÐ.°Ó5ÑAØ&'×&:Ñ&:Ð#Ùð		ð
 #Ð.Ð.Ð.Ù" 1 fÓ-Ð-r[   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”   rj   rW   s   €rY   Úwarnz0ConcreteInheritedProperty.__init__.<locals>.warnâ  s*   ø€ Ý ð —;“; §£¨$¯+«+ð7óð r[   c                  ó4   •— e Zd Zdˆfd„Zdˆfd„Zdˆ ˆfd„Zy)úDConcreteInheritedProperty.__init__.<locals>.NoninheritedConcretePropc                ó   •—  ‰«        y r]   r¡   )Úsr€   r�   rÎ  s      €rY   Ú__set__zLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__set__ë  ó   ø€ Ù•r[   c                ó   •—  ‰«        y r]   r¡   )rÒ  r€   rÎ  s     €rY   Ú
__delete__zOConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__delete__î  rÔ  r[   c                ó0   •— |€‰j                   S  ‰«        y r]   )rS   )rÒ  r€   ÚownerrX   rÎ  s      €€rY   Ú__get__zLConcreteInheritedProperty.__init__.<locals>.NoninheritedConcreteProp.__get__ñ  s   ø€ Ø�;ØŸ?™?Ð*Ù•r[   N)rÒ  r   r€   r   r�   r   ro   r
   )rÒ  r   r€   r   ro   r
   )rÒ  r   r€   r   rØ  r   ro   r   )rt   ru   rv   rÓ  rÖ  rÙ  )rX   rÎ  s   €€rY   ÚNoninheritedConcreteProprÐ  ê  s   ø„ õõ÷r[   rÚ  )ro   r
   )r´   rl   rS   )rX   rÚ  rÎ  rº   s   ` @€rY   rl   z"ConcreteInheritedProperty.__init__ß  s)   ú€ Ü‰ÑÔõ	÷
	ô 
	ñ 3Ó4ˆ�r[   )rŒ   r�   ro   zType[PropComparator[_T]]r¹  )rt   ru   rv   rž   r‹   rl   rt  ru  s   @rY   rÆ  rÆ  Á  s'   ø„ ñð .Ø!ð.à	!ó.÷5ñ 5r[   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	 	 	 	 	 	 	 	 	 	 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 )Nr²   )r´   rl   r   Ú
map_columnrS   rª   rR   rž   r°   r¼   r   r½   )	rX   r   rß  rS   rª   r¬   r°   rR   rº   s	           €rY   rl   zSynonymProperty.__init__	  s   ø€ ô 	‰ÑÐ+<ÐÔ=àˆŒ	Ø$ˆŒØ$ˆŒØ"4ˆÔÙØˆD�HÙ˜J×.Ò.Ø!×)Ñ)ˆD�HàˆDŒHÙØ�I‰I×Ñ˜TÔ"ä×Ñ Õ%r[   c                ó~   — t        | j                  j                  | j                  «      j                  j
                  S r]   )rˆ   r”   r‘   r   r•   rf   rW   s    rY   rf   zSynonymProperty.uses_objects&  s)   € ä˜4Ÿ;™;×-Ñ-¨t¯y©yÓ9×>Ñ>×KÑKÐKr[   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 )Nrz   zsynonym() attribute "rµ  z+" only supports ORM mapped attributes, got )rˆ   r”   r‘   r   rû   rµ   rz   r   r   r6   Ú
comparatorr   r¸   rÎ   rt   )rX   ræ   s     rY   Ú_proxied_objectzSynonymProperty._proxied_object-  s¦   € ô �t—{‘{×)Ñ)¨4¯9©9Ó5ˆÜ�t˜ZÔ(´
Ø�M‰Mœ>ô1
ô
 ˜$¤
× =Ñ =Ô>Ø—‘Ð&Ü˜DÔ"2Ô3à�ä×,Ò,ð —;‘;×%Ñ%×.Ó.°·	³	¹4ðAóð ð
 �}‰}Ðr[   c                óX   — t        | j                  j                  | j                  «      fS r]   )rˆ   r”   r‘   r   rW   s    rY   rZ   z&SynonymProperty._column_strategy_attrsD  s    € Ü˜Ÿ™×*Ñ*¨D¯I©IÓ6Ð8Ð8r[   c                ó¦   — | j                   }t        |t        «      r4| j                  r| j                  ||«      }|S |j                  ||«      }|S |S r]   )rã  rµ   r   rª   )rX   rŒ   rh   Úcomps       rY   r‹   z#SynonymProperty._comparator_factoryG  sW   € Ø×#Ñ#ˆä�dœNÔ+Ø×&Ò&Ø×.Ñ.¨t°VÓ<�ð ˆKð ×.Ñ.¨t°VÓ<�ØˆKàˆKr[   c                ó’   — t        | j                  j                  | j                  «      }|j                  j                  |||¬«      S )N)r`   )rˆ   r”   r‘   r   r•   ra   )rX   r^   r_   r`   ræ   s        rY   ra   zSynonymProperty.get_historyS  s:   € ô )0°·±×0BÑ0BÀDÇIÁIÓ(NˆØ�y‰y×$Ñ$ U¨E¸7Ð$ÓCÐCr[   c                ó  — | j                   j                  }|t        j                  urÍt	        |«      sÂ|rÀt        |j                  dd«      s©|j                  | j                     }|j                   j                  }||k7  rNt        j                  d|›d|›d| j                  ›d|t        j                  urt        |«      › �«      ‚d› �«      ‚|| _        | j                   j                  t        ¬«      S | j                   S )	NÚ_sa_disable_descriptor_defaultsFzSynonym z default argument z< must match the dataclasses default value of proxied object z, currently znot set)Údataclasses_default)Ú_attribute_optionsrê  r)   rü   rÇ   rˆ   r   Úcollected_attributesr   r¸   r¹   ÚreprÚ_default_scalar_valueÚ_replacer   )rX   rþ   rj   Údataclass_setup_argumentsÚenable_descriptor_defaultsrê  ÚproxiedÚproxied_defaults           rY   Ú_get_dataclass_setup_optionsz,SynonymProperty._get_dataclass_setup_options\  s  € ð #×5Ñ5×IÑIÐà¤v§}¡}Ñ4ÜÐ0Ô1Ù*ÜØ—‘Ð@À%ôð  ×4Ñ4°T·Y±YÑ?ˆGØ%×8Ñ8×LÑLˆOØÐ"5Ò5Ü×*Ñ*Ø˜s˜gÐ%7Ø*Ð-ð .7Ø7;·y±y°mð D#ð +´&·-±-Ñ?ô ˜_Ó-ð#(ð+óð ð 'ð#(ð+óð ð *=ˆDÔ&Ø×*Ñ*×3Ñ3Ü$,ð 4ó ð ð ×&Ñ&Ð&r[   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ß  rj   Úpersist_selectabler1  r¸   r¹   r   Údescriptionr&  r<   Ú_configure_propertyÚ_mapped_by_synonymr”   )rX   r”   rø  Ú
propertiesr  s        rY   Ú
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Ô àˆ�r[   )NNNNNN)r   rq   rß  zOptional[bool]rS   zOptional[Any]rª   rÝ  r¬   r·  r°   r¸  rR   rQ   rn   )ro   z/Union[MapperProperty[_T], SQLORMOperations[_T]]r›   )rŒ   r�   ro   zSQLORMOperations[_T]rr   )
rþ   r8   rj   rq   rð  r:   rñ  rp   ro   r   )r”   r�   rø  rp   ro   r�   )rt   ru   rv   rž   rŸ   rl   r   rz   rf   r   r³  rã  rZ   r‹   r   r{   ra   rô  r½  rÿ  rt  ru  s   @rY   rÜ  rÜ  ù  sE  ø… ñð ;Ó:ð
 &*Ø$(ØAEØ9=Ø$(Ø!ð&àð&ð #ð&ð "ð	&ð
 ?ð&ð 7ð&ð "ð&ð õ&ñ6 à	ò	Ló 
ð	Lð 
×Ñðà	8òó ðó,9ó
ð   +×6Ñ6ð	Dà!ðDð ðDð ð	Dð
 
óDð!'à+ð!'ð ð!'ð $7ð	!'ð
 %)ð!'ð 
ó!'ðF €T×ÑÐ4Ó5ò#ó 6ô#r[   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¡   r[   rY   r  r  ¦  s   „ ñð €MØr[   r  )prž   Ú
__future__r   Údataclassesr   r  r  r  Útypingr   r   r   r   r	   r
   r   r   r   r   r   r   r   ÚweakrefÚ r   r   r¿  Úbaser   r   r   r   r   r   Ú
interfacesr   r   r   r   r   r    r"   r#   r¸   r$   r%   r'   r(   Úsql.baser)   Úsql.elementsr*   Úutil.typingr+   r,   r-   r.   r/   r0   r1   Ú_typingr2   r3   r4   r5   r6   r;  r7   r  r8   r9   r:   rŒ   r;   rþ  r<   r=   r^   r>   Úengine.baser?   Ú
engine.rowr@   Úsql._typingrA   rB   rC   rD   Úsql.operatorsrE   Ú
sql.schemarF   Úsql.selectablerG   rH   rI   rJ   rK   rL   rN   rP   rq   Ú_CompositeAttrTyper¢   ÚWeakKeyDictionaryr£   rŸ   r¥   rÂ  rÆ  rÜ  r  r¡   r[   rY   ú<module>r     sò  ðòõ #å $Û Û Û Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Ý Ý Û å Ý Ý $Ý Ý &Ý Ý Ý "Ý )Ý /Ý $Ý &Ý &Ý )Ý Ý Ý Ý Ý Ý Ý Ý Ý (Ý 4Ý 'Ý $Ý #Ý "Ý "Ý  à	×ÒÝ&Ý&Ý#Ý1Ý.Ý)Ý3Ý3Ý/ÝÝ*Ý(Ý$Ý(Ý Ý0Ý'Ý)Ý,Ý,Ý#Ý'Ý1Ý/Ý1Ý3áˆT˜Ô€Ùˆe˜3Ô€ôKH˜¨Ñ+ô KHð\ ØØØØØð	ñÐ ñ ˆe˜3Ô€ð
 €G×ÑÓð ð ó  ô
iAØ�ÑÐ.Ð0BÀ3Ñ0GôiAôXÐ! "Ñ%Ð'9¸"Ñ'=ô ô&55Ð 2°2Ñ 6ô 55ôpjÐ(¨Ñ,ô jôZˆo˜bÑ!Ð#5°bÑ#9õ r[   