§
    eŠtjÝy  ã            	      ó0  — d 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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)l0m2Z2 d!d*l3m4Z4 d!d+l5m6Z6 d!d,l5m7Z7 d!d-l5m8Z8 d!d.l5m9Z9 d!d/l5m:Z: d!d0l5m;Z; d!d1l5m<Z< d!d2l5m=Z= er`dd3l>m?Z? dd4l>m@Z@ dd5l>mAZA dd6l>mBZB dd7lmCZC dd8lDmEZE dd9lFmGZG dd:lHmIZI dd;lJmKZK dd<lJmLZL d!d=lMmNZN d!d>lOmPZP d!d?lOmQZQ d!d@lRmSZS d!dAl5mTZT d!dBl5mUZU  edCe¬D¦  «        ZV edEe¬D¦  «        ZW edFdG¬D¦  «        ZXg dH¢ZYe*jZ         G dI„ dJe eV         e#eV         ee*j[        ¦  «        ¦   «         Z\ G dK„ dLe\eV         eeV         ¦  «        Z] G dM„ dNee eV         eeV         ¦  «        Z^dOS )Pz|MapperProperty implementations.

This is a private module which defines the behavior of individual ORM-
mapped attributes.

é    )Úannotations)ÚAny)Úcast)ÚDict)ÚList)ÚOptional)ÚSequence)ÚSet)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Ú
attributes)Úexc)Ústrategy_options)Ú_DeclarativeMapped)Úclass_mapper)ÚCompositeProperty)ÚConcreteInheritedProperty)ÚSynonymProperty)Ú_AttributeOptions)Ú_DEFAULT_ATTRIBUTE_OPTIONS)Ú_IntrospectsAnnotations)Ú_MapsColumns)ÚMapperProperty)ÚPropComparator)ÚStrategizedProperty)ÚRelationshipProperty)Úde_stringify_annotationé   )Ú
ForeignKey)Úlog)Úutil)Ú	coercions)Úroles)Ú_NoArg)ÚColumn)ÚSchemaConst)Ú
TypeEngine)Úde_optionalize_union_types)Úget_args)Úincludes_none)Ú	is_a_type)Ú
is_fwd_ref)Ú	is_pep593)Ú	is_pep695)ÚSelf)Ú_IdentityKeyType)Ú_InstanceDict)Ú_ORMColumnExprArgument)Ú_RegistryType)ÚMapped)Ú_ClassScanMapperConfig)ÚMapper)ÚSession)Ú_InstallLoaderCallableProto)ÚInstanceState)Ú	_InfoType)ÚColumnElement)ÚNamedColumn)ÚOperatorType)Ú_AnnotationScanType)ÚRODescriptorReferenceÚ_T)ÚboundÚ_PTÚ_NCzNamedColumn[Any])ÚColumnPropertyr   r   r    r   c                  ó°  ‡ — e Zd ZU dZej        ZdZ	 dZde	d<   de	d<   de	d	<   d
e	d<   dZ
ddddddddddddœdWˆ fd „ZdXd2„ZedYd4„¦   «         ZedZd6„¦   «         Zd[d7„Z ej        d8d9¦  «        d\d;„¦   «         Z ej        d8d9¦  «        d\d<„¦   «         Zd]d>„Zed]d?„¦   «         Zd^dB„Zd_ˆ fdC„Zd`dE„ZdadS„Z G dT„ dUej        ee         ¦  «        ZdbdV„Zˆ xZ S )crH   z¬Describes an object attribute that corresponds to a table column
    or other column expression.

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

    TFzList[NamedColumn[Any]]ÚcolumnsÚboolÚ_is_polymorphic_discriminatorúOptional[str]Ú_mapped_by_synonymzType[PropComparator[_T]]Úcomparator_factory)rJ   ÚgroupÚdeferredÚ
instrumentrO   Úactive_historyÚexpire_on_flushÚ_creation_orderrL   rN   Ú_deferred_column_loaderÚ_raise_column_loaderÚ_renders_in_subqueriesÚ	raiseloadN)Úattribute_optionsrP   rQ   rY   rO   rS   rT   ÚinfoÚdocÚ_instrumentÚ_assume_readonly_dc_attributesÚcolumnú_ORMColumnExprArgument[_T]Úadditional_columnsú_ORMColumnExprArgument[Any]rZ   úOptional[_AttributeOptions]rP   rQ   rY   ú"Optional[Type[PropComparator[_T]]]rS   rT   r[   úOptional[_InfoType]r\   r]   r^   c               óB  •— t          ¦   «                              ||¬¦  «         |f|z   }d„ |D ¦   «         | _        || _        || _        || _        || _        |�|n| j        j        | _	        || _
        || _        |	�| j                             |	¦  «         |
�|
| _        n:t          | j        ¦  «        D ]}t!          |dd ¦  «        }
|
�	|
| _         nŒd | _        t#          j        | ¦  «         d| j        fd| j        ff| _        | j        r| xj        dz  c_        d S d S )N)rZ   r^   c                óL   — g | ]!}t          j        t          j        |¦  «        ‘Œ"S © )r&   Úexpectr'   ÚLabeledColumnExprRole©Ú.0Úcs     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sqlalchemy/orm/properties.pyú
<listcomp>z+ColumnProperty.__init__.<locals>.<listcomp>£   s5   € ð 
ð 
ð 
ØAB�IÔ�UÔ8¸!Ñ<Ô<ð
ð 
ð 
ó    r\   rQ   rR   ))rY   T)ÚsuperÚ__init__rJ   rP   rQ   rY   rR   Ú	__class__Ú
ComparatorrO   rS   rT   r[   Úupdater\   ÚreversedÚgetattrr%   Úset_creation_orderÚstrategy_key)Úselfr_   rZ   rP   rQ   rY   rO   rS   rT   r[   r\   r]   r^   ra   rJ   Úcolrs   s                   €rn   rr   zColumnProperty.__init__Ž   s€  ø€ õ  	‰Œ×ÒØ/Ø+Ið 	ñ 	
ô 	
ð 	
ð �)Ð0Ñ0ˆð
ð 
ØFMð
ñ 
ô 
ˆŒð ˆŒ
Ø ˆŒØ"ˆŒØ%ˆŒð "Ð-ð Ðà”Ô*ð 	Ôð
 -ˆÔØ.ˆÔàÐØŒI×Ò˜TÑ"Ô"Ð"àˆ?ØˆDŒHˆHå ¤Ñ-Ô-ð  ð  �Ý˜c 5¨$Ñ/Ô/�Ø�?Ø"�D”HØ�Eð #ð  �”åÔ Ñ%Ô%Ð%ð ˜œÐ'Ø˜4œ?Ð+ð
ˆÔð Œ>ð 	8ØÐÔÐ!7Ñ7ÐÔÐÐð	8ð 	8rp   Ú	decl_scanr9   Úregistryr7   Úclsú	Type[Any]Úoriginating_moduleÚkeyÚstrÚmapped_containerúOptional[Type[Mapped[Any]]]Ú
annotationúOptional[_AnnotationScanType]Úextracted_mapped_annotationÚis_dataclass_fieldÚreturnÚNonec
                ó\   — | j         d         }
|
j        €||
_        |
j        €	||
_        d S d S ©Nr   )rJ   r�   Úname)rz   r|   r}   r~   r€   r�   rƒ   r…   r‡   rˆ   r_   s              rn   Údeclarative_scanzColumnProperty.declarative_scanÉ   s9   € ð ”˜a”ˆØŒ:ÐØˆFŒJØŒ;ÐØˆFŒKˆKˆKð Ðrp   úOptional[MapperProperty[_T]]c                ó   — | S ©Nrh   ©rz   s    rn   Úmapper_property_to_assignz(ColumnProperty.mapper_property_to_assignÛ   s   € àˆrp   úList[Tuple[Column[Any], int]]c                ó$   — d„ | j         D ¦   «         S )Nc                óN   — g | ]"}t          |t          ¦  «        r|j        ­|df‘Œ#S rŒ   )Ú
isinstancer)   Útablerk   s     rn   ro   z4ColumnProperty.columns_to_assign.<locals>.<listcomp>â   s?   € ð 
ð 
ð 
àÝ˜!�VÑ$Ô$ð
ð *+¬¨ð �ˆFà)8¨¨rp   ©rJ   r’   s    rn   Úcolumns_to_assignz ColumnProperty.columns_to_assignß   s%   € ð
ð 
à”\ð
ñ 
ô 
ð 	
rp   c                óZ   — d| j         v r| j        j        S d| j         vp| | j        j        vS )N)Úquery_expressionT)rQ   T)ry   ÚstrategyÚ_have_default_expressionÚparentÚ_readonly_propsr’   s    rn   Ú%_memoized_attr__renders_in_subqueriesz4ColumnProperty._memoized_attr__renders_in_subqueriesè   s=   € Ø%¨Ô):Ð:Ð:Ø”=Ô9Ð9à!¨Ô):Ð:ð 
Ø˜œÔ3Ð3ð	
rp   zsqlalchemy.orm.statezsqlalchemy.orm.strategiesú _InstallLoaderCallableProto[Any]c                óÌ   — t           j        j        }t           j        j        }|j                             | j        j        |                     | j	        ¦  «        | j	        ¦  «        S r‘   ©
r%   Ú	preloadedÚ	orm_stateÚorm_strategiesr=   Ú"_instance_level_callable_processorrŸ   Úclass_managerÚLoadDeferredColumnsr�   ©rz   ÚstateÚ
strategiess      rn   Ú&_memoized_attr__deferred_column_loaderz5ColumnProperty._memoized_attr__deferred_column_loaderð   sS   € õ ”Ô(ˆÝ”^Ô2ˆ
ØÔ"×EÒEØŒKÔ%Ø×*Ò*¨4¬8Ñ4Ô4ØŒHñ
ô 
ð 	
rp   c                óÎ   — t           j        j        }t           j        j        }|j                             | j        j        |                     | j	        d¦  «        | j	        ¦  «        S )NTr¤   r«   s      rn   Ú#_memoized_attr__raise_column_loaderz2ColumnProperty._memoized_attr__raise_column_loaderü   sU   € õ ”Ô(ˆÝ”^Ô2ˆ
ØÔ"×EÒEØŒKÔ%Ø×*Ò*¨4¬8°TÑ:Ô:ØŒHñ
ô 
ð 	
rp   úroles.ColumnsClauseRolec                ó   — | j         S )zsAllow the ColumnProperty to work in expression before it is turned
        into an instrumented attribute.
        )Ú
expressionr’   s    rn   Ú__clause_element__z!ColumnProperty.__clause_element__  s   € ð
 ŒÐrp   c                ó   — | j         d         S )aÊ  Return the primary column or expression for this ColumnProperty.

        E.g.::


            class File(Base):
                # ...

                name = Column(String(64))
                extension = Column(String(8))
                filename = column_property(name + "." + extension)
                path = column_property("C:/" + filename.expression)

        .. seealso::

            :ref:`mapper_column_property_sql_expressions_composed`

        r   r™   r’   s    rn   r³   zColumnProperty.expression  s   € ð( Œ|˜AŒÐrp   ÚmapperúMapper[Any]c                ó�   — | j         sd S t          j        |j        | j        |                      | |¦  «        || j        ¬¦  «         d S )N)Ú
comparatorÚparententityr\   )rR   r   Úregister_descriptorÚclass_r�   rO   r\   )rz   r¶   s     rn   Úinstrument_classzColumnProperty.instrument_class%  sZ   € ØŒð 	ØˆFåÔ&ØŒMØŒHØ×.Ò.¨t°VÑ<Ô<ØØ”ð	
ñ 	
ô 	
ð 	
ð 	
ð 	
rp   c                ód  •— t          ¦   «                              ¦   «          t          | j        ¦  «        dk    rtt	          | j        j        ¦  «                             | j        ¦  «        rEt          j	        d| j        ›d| j        d         ›d| j        d         ›d| j
        ›d�	¦  «         d S d S d S )Nr   z
On mapper z, primary key column 'z6' is being combined with distinct primary key column 'r   z' in attribute 'zM'. Use explicit properties to give each column its own mapped attribute name.)rq   Údo_initÚlenrJ   ÚsetrŸ   Úprimary_keyÚ
issupersetr%   Úwarnr�   )rz   rs   s    €rn   r¿   zColumnProperty.do_init1  s´   ø€ Ý‰Œ�ŠÑÔÐåˆtŒ|ÑÔ˜qÒ Ð ¥S¨¬Ô)@Ñ%AÔ%A×%LÒ%LØŒLñ&
ô &
Ð õ ŒIˆIð ”;�;�; ¤¨Q¤  °´¸a´°°À$Ä(À(À(ðLñô ð ð ð ð !Ð Ð Ð rp   úColumnProperty[_T]c                óF   — t          | j        | j        | j        | j        dœŽS )N)rQ   rP   rS   )rH   rJ   rQ   rP   rS   r’   s    rn   ÚcopyzColumnProperty.copyA  s.   € ÝØŒ\Ø”]Ø”*ØÔ.ð	
ð 
ð 
ð 	
rp   Úsessionr;   Úsource_stateúInstanceState[Any]Úsource_dictr5   Ú
dest_stateÚ	dest_dictÚloadÚ
_recursiveúDict[Any, object]Ú_resolve_conflict_mapú#Dict[_IdentityKeyType[Any], object]c	                ó,  — | j         sd S | j        |v rO|| j                 }	|s|	|| j        <   d S |                     | j        ¦  «        }
|
                     |||	d ¦  «         d S |j        r)| j        |vr"|                     || j        gd¬¦  «         d S d S d S )NT)Ú	no_loader)rR   r�   Úget_implrÁ   Úhas_identityÚ_expire_attributes)rz   rÈ   rÉ   rË   rÌ   rÍ   rÎ   rÏ   rÑ   ÚvalueÚimpls              rn   ÚmergezColumnProperty.mergeI  sÒ   € ð Œð 	ØˆFØŒX˜Ð$Ð$Ø ¤Ô)ˆEàð =Ø&+�	˜$œ(Ñ#Ð#Ð#à!×*Ò*¨4¬8Ñ4Ô4�Ø—’˜ Y°°tÑ<Ô<Ð<Ð<Ð<ØÔ$ð 	¨¬¸Ð)BÐ)BØ×)Ò)Ø˜DœH˜:°ð *ñ ô ð ð ð ð	ð 	Ð)BÐ)Brp   c                  óv   — e Zd ZU dZesdZded<   ded<   	 dd
„Zerdd„Zdd„Z	dd„Z
d d„Zd!d„Zd"d„Zd"d„ZdS )#úColumnProperty.Comparatora€  Produce boolean, comparison, and other operators for
        :class:`.ColumnProperty` attributes.

        See the documentation for :class:`.PropComparator` for a brief
        overview.

        .. seealso::

            :class:`.PropComparator`

            :class:`.ColumnOperators`

            :ref:`types_operators`

            :attr:`.TypeEngine.comparator_factory`

        )r´   r[   Úexpressionsz*RODescriptorReference[ColumnProperty[_PT]]ÚpropúSequence[NamedColumn[Any]]rÝ   r_   rG   r‰   c                óð   — | j         }|||| j        j        dœ}|}| j        j        r&|}| j        j                             |¦  «        }||d<   |                     |¦  «                             d|dœ¦  «        S )aí  annotate and possibly adapt a column to be returned
            as the mapped-attribute exposed version of the column.

            The column in this context needs to act as much like the
            column in an ORM mapped context as possible, so includes
            annotations to give hints to various ORM functions as to
            the source entity of this column.   It also adapts it
            to the mapper's with_polymorphic selectable if one is
            present.

            )Úentity_namespacerº   ÚparentmapperÚ	proxy_keyÚadapt_columnÚorm)Úcompile_state_pluginÚplugin_subject)Ú_parententityrÞ   r�   Ú_parentmapperÚ_polymorphic_adapterÚtraverseÚ	_annotateÚ_set_propagate_attrs)rz   r_   Úper   r{   Úmapper_local_cols         rn   Ú_orm_annotate_columnz.ColumnProperty.Comparator._orm_annotate_column‡  s™   € ð Ô#ˆBà$&Ø "Ø "Ø!œYœ]ð	+ð +ˆKð ˆCð Ô!Ô6ð ?Ø#&Ð ØÔ(Ô=×FÒFÀsÑKÔK�ð
 /?�˜NÑ+à—=’= Ñ-Ô-×BÒBØ).À"ÐEÐEñô ð rp   úNamedColumn[_PT]c                ó   — d S r‘   rh   r’   s    rn   r´   z,ColumnProperty.Comparator.__clause_element__±  s   € € € rp   c                óº   — | j         r0|                       | j        j        d         | j        j        ¦  «        S |                      | j        j        d         ¦  «        S rŒ   )ÚadapterrÞ   rJ   r�   rð   r’   s    rn   Ú#_memoized_method___clause_element__z=ColumnProperty.Comparator._memoized_method___clause_element__³  sO   € ð Œ|ð GØ—|’| D¤IÔ$5°aÔ$8¸$¼)¼-ÑHÔHÐHà×0Ò0°´Ô1BÀ1Ô1EÑFÔFÐFrp   r>   c                ór   — |                       ¦   «         }	 |j        S # t          $ r | j        j        cY S w xY w)z(The .info dictionary for this attribute.)r´   r[   ÚAttributeErrorrÞ   )rz   Úces     rn   Ú_memoized_attr_infoz-ColumnProperty.Comparator._memoized_attr_info»  sL   € ð ×(Ò(Ñ*Ô*ˆBð&Ø”w�øÝ!ð &ð &ð &Ø”y”~Ð%Ð%Ð%ð&øøøs   – �6µ6c                ór   ‡ — ‰ j         rˆ fd„‰ j        j        D ¦   «         S ˆ fd„‰ j        j        D ¦   «         S )z¡The full sequence of columns referenced by this
            attribute, adjusted for any aliasing in progress.

            .. versionadded:: 1.3.17

            c                óP   •— g | ]"}‰                      |‰j        j        ¦  «        ‘Œ#S rh   )rô   rÞ   r�   ©rl   r{   rz   s     €rn   ro   zHColumnProperty.Comparator._memoized_attr_expressions.<locals>.<listcomp>Ì  s;   ø€ ð ð ð àð —L’L  d¤i¤mÑ4Ô4ðð ð rp   c                ó:   •— g | ]}‰                      |¦  «        ‘ŒS rh   )rð   rü   s     €rn   ro   zHColumnProperty.Comparator._memoized_attr_expressions.<locals>.<listcomp>Ñ  s4   ø€ ð ð ð Ø7:�D×-Ò-¨cÑ2Ô2ðð ð rp   )rô   rÞ   rJ   r’   s   `rn   Ú_memoized_attr_expressionsz4ColumnProperty.Comparator._memoized_attr_expressionsÄ  so   ø€ ð Œ|ð ðð ð ð à#œyÔ0ðñ ô ð ð
ð ð ð Ø>B¼iÔ>Oðñ ô ð rp   r�   r‚   r   c                óF   — t          |                      ¦   «         |¦  «        S )z‡proxy attribute access down to the mapped column.

            this allows user-defined comparison methods to be accessed.
            )rw   r´   )rz   r�   s     rn   Ú_fallback_getattrz+ColumnProperty.Comparator._fallback_getattrÕ  s    € õ
 ˜4×2Ò2Ñ4Ô4°cÑ:Ô:Ð:rp   ÚoprA   ÚotherÚkwargsúColumnElement[Any]c                ó>   —  ||                       ¦   «         g|¢R i |¤ŽS r‘   ©r´   ©rz   r  r  r  s       rn   Úoperatez!ColumnProperty.Comparator.operateÜ  s0   € ð �2�d×-Ò-Ñ/Ô/ÐB°%ÐBÐBÐB¸6ÐBÐBÐBrp   c                óf   — |                       ¦   «         } ||                     ||¦  «        |fi |¤ŽS r‘   ©r´   Ú_bind_param©rz   r  r  r  r{   s        rn   Úreverse_operatez)ColumnProperty.Comparator.reverse_operateá  s=   € ð ×)Ò)Ñ+Ô+ˆCØ�2�c—o’o b¨%Ñ0Ô0°#Ð@Ð@¸Ð@Ð@Ð@rp   N)r_   rG   r‰   rG   )r‰   rñ   )r‰   r>   )r‰   rß   )r�   r‚   r‰   r   ©r  rA   r  r   r  r   r‰   r  )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	__slots__Ú__annotations__rð   r´   rõ   rù   rþ   r   r  r  rh   rp   rn   rt   rÜ   c  sÿ   € € € € € € ð	ð 	ð$ ð 	DàCˆIà8Ð8Ð8Ñ8à/Ð/Ð/Ñ/ð	ð&	ð &	ð &	ð &	ðP ð 	BàAÐAÐAÐAð	Gð 	Gð 	Gð 	Gð	&ð 	&ð 	&ð 	&ð	ð 	ð 	ð 	ð"	;ð 	;ð 	;ð 	;ð	Cð 	Cð 	Cð 	Cð
	Að 	Að 	Að 	Að 	Að 	Arp   rt   c                ó¤   — | j         r| j        st                               | ¦  «        S t	          | j         j        j        ¦  «        dz   | j        z   S )Nú.)rŸ   r�   ÚobjectÚ__repr__r‚   r¼   r  r’   s    rn   Ú__str__zColumnProperty.__str__ç  sI   € ØŒ{ð 	) $¤(ð 	)Ý—?’? 4Ñ(Ô(Ð(Ý�4”;Ô%Ô.Ñ/Ô/°#Ñ5¸¼Ñ@Ð@rp   )r_   r`   ra   rb   rZ   rc   rP   rM   rQ   rK   rY   rK   rO   rd   rS   rK   rT   rK   r[   re   r\   rM   r]   rK   r^   rK   ©r|   r9   r}   r7   r~   r   r€   rM   r�   r‚   rƒ   r„   r…   r†   r‡   r†   rˆ   rK   r‰   rŠ   ©r‰   r�   ©r‰   r”   )r‰   rK   )r‰   r¢   )r‰   r±   )r¶   r·   r‰   rŠ   )r‰   rŠ   )r‰   rÅ   )rÈ   r;   rÉ   rÊ   rË   r5   rÌ   rÊ   rÍ   r5   rÎ   rK   rÏ   rÐ   rÑ   rÒ   r‰   rŠ   ©r‰   r‚   )!r  r  r  r  r   Ú_COLUMN_TOKENÚstrategy_wildcard_keyÚinherit_cacheÚ_links_to_entityr  r  rr   rŽ   Úpropertyr“   rš   r¡   r%   Úpreload_moduler®   r°   r´   r³   r½   r¿   rÇ   rÚ   ÚMemoizedSlotsr   rF   rt   r  Ú__classcell__)rs   s   @rn   rH   rH   a   s„  ø€ € € € € € ðð ð -Ô:ÐØ€MØàÐà#Ð#Ð#Ñ#à'Ð'Ð'Ñ'à%Ð%Ð%Ñ%à0Ð0Ð0Ñ0ð€Ið* :>Ø#ØØØAEØ$Ø $Ø$(Ø!Ø Ø/4ð98ð 98ð 98ð 98ð 98ð 98ð 98ð 98ðvð ð ð ð$ ðð ð ñ „Xðð ð
ð 
ð 
ñ „Xð
ð
ð 
ð 
ð 
ð €TÔÐ/Ð1LÑMÔMð	
ð 	
ð 	
ñ NÔMð	
ð €TÔÐ/Ð1LÑMÔMð	
ð 	
ð 	
ñ NÔMð	
ðð ð ð ð ðð ð ñ „Xðð*

ð 

ð 

ð 

ðð ð ð ð ð ð 
ð 
ð 
ð 
ðð ð ð ð4BAð BAð BAð BAð BA�TÔ'¨¸Ô)<ñ BAô BAð BAðHAð Að Að Að Að Að Að Arp   rH   c                  ó   — e Zd ZdZdZdS )ÚMappedSQLExpressionaN  Declarative front-end for the :class:`.ColumnProperty` class.

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

    .. versionchanged:: 2.0 Added :class:`_orm.MappedSQLExpression` as
       a Declarative compatible subclass for :class:`_orm.ColumnProperty`.

    .. seealso::

        :class:`.MappedColumn`

    TN)r  r  r  r  r   rh   rp   rn   r'  r'  í  s!   € € € € € ðð ð €MØÐrp   r'  c                  ó  — e Zd ZU dZdZded<   ded<   ded<   d	ed
<   ded<   ded<   d?d„Zd@d„ZedAd„¦   «         Z	edBd„¦   «         Z
edCd„¦   «         ZdDd„ZdEd"„ZdEd#„ZdFd$„ZdGd)„ZdHd6„Z ej        d7¦  «        dId;„¦   «         ZdJd=„Zd>S )KÚMappedColumna_  Maps a single :class:`_schema.Column` on a class.

    :class:`_orm.MappedColumn` is a specialization of the
    :class:`_orm.ColumnProperty` class and is oriented towards declarative
    configuration.

    To construct :class:`_orm.MappedColumn` objects, use the
    :func:`_orm.mapped_column` constructor function.

    .. versionadded:: 2.0


    )r_   rU   Ú_sort_orderÚforeign_keysÚ_has_nullableÚ_has_insert_defaultrQ   Údeferred_groupÚdeferred_raiseloadrS   Ú_attribute_optionsÚ_has_dataclass_argumentsÚ_use_existing_columnzUnion[_NoArg, bool]rQ   rK   r/  rM   r.  ú
Column[_T]r_   zOptional[Set[ForeignKey]]r+  r   r0  Úargr   Úkwc                óÔ  ‡— |                      dt          ¦  «        x| _        Š|                      dd¦  «        | _        ‰d uo7‰t          k    o,t	          ˆfd„t          ‰j        ¦  «        D ¦   «         ¦  «        | _        |                      dt          j	        ¦  «        }|t          j	        u| _
        | j
        r||d<   n‰j        t          j	        ur
‰j        |d<   |                      dd ¦  «        | _        |                      dd ¦  «        | _        |                      d	t          j	        ¦  «        | _        |                      d
d¦  «        | _        |                      dt          j	        ¦  «        | _        t#          dt%          |i |¤Ž¦  «        | _        | j        j        | _        d|v o"|                     d¦  «        d t,          j        fv| _        t3          j        | ¦  «         d S )NrZ   Úuse_existing_columnFc              3  óR   •K  — | ]!\  }}|d k    ¯‰|         t           j        uV — Œ"dS )Údataclasses_defaultN)r(   ÚNO_ARG)rl   ÚiÚattrÚ	attr_optss      €rn   ú	<genexpr>z(MappedColumn.__init__.<locals>.<genexpr>4  sJ   øè è € ð ð á�A�tØÐ0Ò0Ð0ð ˜!”¥F¤MÐ1à0Ð0Ð0Ð0ðð rp   Úinsert_defaultÚdefaultr.  r/  rQ   rS   Ú
sort_orderr3  Únullable)Úpopr   r0  r2  ÚanyÚ	enumerateÚ_fieldsr1  r(   r:  r-  r9  r.  r/  rQ   rS   r*  r   r)   r_   r+  Úgetr*   ÚNULL_UNSPECIFIEDr,  r%   rx   )rz   r4  r5  r?  r=  s       @rn   rr   zMappedColumn.__init__*  sç  ø€ Ø.0¯fªfØÕ!;ñ/
ô /
ð 	
ˆÔ )ð %'§F¢FÐ+@À%Ñ$HÔ$HˆÔ!ð ˜TÐ!ð ØÕ7Ò7ðåð ð ð ð å(¨Ô):Ñ;Ô;ðñ ô ñ ô ð 	Ô%ð ŸšÐ 0µ&´-Ñ@Ô@ˆØ#1½¼Ð#FˆÔ àÔ#ð 	:Ø*ˆBˆy‰MˆMØÔ*µ&´-Ð?Ð?Ø%Ô9ˆBˆy‰Mà ŸfšfÐ%5°tÑ<Ô<ˆÔØ"$§&¢&Ð)=¸tÑ"DÔ"DˆÔØŸš˜z­6¬=Ñ9Ô9ˆŒØ ŸfšfÐ%5°uÑ=Ô=ˆÔàŸ6š6 ,µ´Ñ>Ô>ˆÔÝ˜<­°Ð);¸Ð);Ð);Ñ<Ô<ˆŒØ œKÔ4ˆÔØ'¨2Ð-ð 
°"·&²&¸Ñ2DÔ2DØÝÔ(ðM
ð 3
ˆÔõ 	Ô Ñ%Ô%Ð%Ð%Ð%rp   r‰   r3   c                ó¬  — | j                              | j         ¦  «        } | j        j        di |¤Ž|_        | j        |_        | j        |_        | j        |_        |j        j        |_        | j        |_        | j	        |_	        | j
        |_
        | j        |_        | j        |_        | j        |_        | j        |_        t          j        |¦  «         |S )Nrh   )rs   Ú__new__r_   Ú_copyrQ   r.  r/  r+  rS   r,  r0  r-  r1  r2  r*  r%   rx   )rz   r5  Únews      rn   rK  zMappedColumn._copyQ  sÃ   € ØŒn×$Ò$ T¤^Ñ4Ô4ˆØ&�T”[Ô&Ð,Ð,¨Ð,Ð,ˆŒ
Ø”}ˆŒØ!Ô0ˆÔØ!%Ô!8ˆÔØœ:Ô2ˆÔØ!Ô0ˆÔØ Ô.ˆÔØ!%Ô!8ˆÔØ"&Ô":ˆÔØ'+Ô'DˆÔ$Ø#'Ô#<ˆÔ ØÔ*ˆŒÝÔ Ñ$Ô$Ð$Øˆ
rp   r‚   c                ó   — | j         j        S r‘   )r_   r�   r’   s    rn   r�   zMappedColumn.nameb  s   € àŒ{ÔÐrp   r�   c                óÔ   — | j         }|t          j        u rt          | j        p| j        ¦  «        }|s| j        r.t          | j        || j        | j        | j	        | j        ¬¦  «        S d S )N)rQ   rP   rY   rZ   rS   )
rQ   r(   r:  rK   r.  r/  rS   rH   r_   r0  )rz   Úeffective_deferreds     rn   r“   z&MappedColumn.mapper_property_to_assignf  s‡   € à!œ]ÐØ¥¤Ð.Ð.Ý!%ØÔ#Ð> tÔ'>ñ"ô "Ðð ð 
	 Ô!4ð 
	Ý!Ø”Ø+ØÔ)ØÔ1Ø"&Ô"9Ø#Ô2ðñ ô ð ð �4rp   r”   c                óJ   — | j         | j        t          j        ur| j        ndfgS rŒ   )r_   r*  r(   r:  r’   s    rn   rš   zMappedColumn.columns_to_assignz  s8   € ð ”ð Ô'­v¬}Ð<Ð<ð Ô$Ð$àðð	
ð 		
rp   c                ó   — | j         S r‘   )r_   r’   s    rn   r´   zMappedColumn.__clause_element__‡  s
   € ØŒ{Ðrp   r  rA   r  r  r  c                ó>   —  ||                       ¦   «         g|¢R i |¤ŽS r‘   r  r  s       rn   r  zMappedColumn.operateŠ  s0   € ð ˆr�$×)Ò)Ñ+Ô+Ð>¨eÐ>Ð>Ð>°vÐ>Ð>Ð>rp   c                óf   — |                       ¦   «         } ||                     ||¦  «        |fi |¤ŽS r‘   r
  r  s        rn   r  zMappedColumn.reverse_operate�  s=   € ð ×%Ò%Ñ'Ô'ˆØˆr�#—/’/ " eÑ,Ô,¨cÐ<Ð<°VÐ<Ð<Ð<rp   c                ó   — t          ¦   «         S r‘   )r)  r’   s    rn   Úfound_in_pep593_annotatedz&MappedColumn.found_in_pep593_annotated•  s   € õ ‰~Œ~Ðrp   r|   r9   r�   Úgiven_columnc                óð   — | j         rn|j        rg|j        r`|j        rt	          j        d¦  «        ‚t          |j        d¦  «        }|j        �|j        n|}|j        j	         
                    ||¦  «        }|S )Nz3Can't use use_existing_column with deferred mappersF)r2  ÚinheritsÚsingleÚis_deferredÚsa_excÚArgumentErrorr   r�   Úlocal_tablerm   rG  )rz   r|   r�   rV  Úsupercls_mapperÚcolnames         rn   Ú_adjust_for_existing_columnz(MappedColumn._adjust_for_existing_columnš  s¤   € ð Ô%ð	àÔ"ð	ð Ô ð	ð
 Ô$ð ÝÔ*ØIñô ð õ +¨9Ô+=¸uÑEÔEˆOð &2Ô%6Ð%B�Ô!Ð!Èð ð +Ô6Ô8×<Ò<Ø˜ñô ˆLð Ðrp   r}   r7   r~   r   r€   rƒ   r„   r…   r†   r‡   rˆ   rŠ   c
                ó0  — | j         }
|                      ||| j         ¦  «        x}
| _         |
j        €||
_        |
j        €||
_        |
j        }|€,|j        r#| j         j        s|                      ||¦  «         nd S |                      ||||||¦  «         d S r‘   )	r_   r`  r�   r�   ÚtypeÚ_isnullr+  Ú_raise_for_requiredÚ_init_column_for_annotation)rz   r|   r}   r~   r€   r�   rƒ   r…   r‡   rˆ   r_   Úsqltypes               rn   rŽ   zMappedColumn.declarative_scan³  sÇ   € ð ”ˆà#×?Ò?Ø�s˜DœKñ 
ô  
ð 	
ˆ�”ð Œ:ÐØˆFŒJØŒ;ÐØˆFŒKà”+ˆà&Ð.ØŒð  t¤{Ô'?ð Ø×(Ò(¨¨cÑ2Ô2Ð2Ð2à�à×(Ò(ØØØØØ'Øñ	
ô 	
ð 	
ð 	
ð 	
rp   zsqlalchemy.orm.decl_baseÚ
param_nameÚparam_annotationrB   c                ó’   — t           j        j        }|                     || j        ¦  «         |                      ||||||¦  «         d S r‘   )r%   r¥   Úorm_decl_baseÚ_undefer_column_namer_   re  )	rz   r|   r}   r~   r€   r�   rg  rh  Ú	decl_bases	            rn   Údeclarative_scan_for_compositez+MappedColumn.declarative_scan_for_compositeÛ  sW   € õ ”NÔ0ˆ	Ø×&Ò& z°4´;Ñ?Ô?Ð?Ø×(Ò(Ø�˜C Ð+;Ð=Oñ	
ô 	
ð 	
ð 	
ð 	
rp   Úargumentc                óì  — | j         j        }t          |dd¬¦  «        r|€J ‚t          |||d¬¦  «        }t	          |¦  «        }| j        s|| j         _        d}	d}
d }d }t          |¦  «        }t          |¦  «        r/|}t          |j	        ¦  «        }t          |¦  «        }|r||         }t          |¦  «        r4d}
t          |¦  «        }|d         }|rt          |¦  «        }|dd …         }	|	D ]}t          |t          ¦  «        r|} nŒd }|��º|                     ||| j         ¦  «        | _         | j        s|j         j        �d | j         _        |j                              | j         ¦  «         | j         j        }|j        t&          j        ur| j        t&          j        u r|j        | _        |j        �| j        €|j        | _        |j        �| j        €|j        | _        |j        r| j        sd| _        |j        r|j        | _        |j        �| j        t&          j        u r|j        | _        |j         j        €|j         j        �t9          j        dd	¦  «         |j        rgt?          |j         j!        ¦  «        D ]M\  }}|j         |         t&          j        ur/| "                    d
d¦  «        }t9          j        d|› d�d	¦  «         ŒN|j#        �r�| j         j$        �s’|
r||g}n|g}|�| %                    d|¦  «         |D ] }| &                    |||u ¬¦  «        }|� �n0Œ!t          |tN          ¦  «        s*t          |t          ¦  «        r:tQ          |tN          ¦  «        r%tS          j*        d| j         j        ›d|› d�¦  «        ‚tW          |d         ¦  «        r‘tY          |¦  «        dk    rd}nNtY          |¦  «        dk    rd|d         › d|d         › d�}n%dd -                    d„ |D ¦   «         ¦  «        z   dz   }tS          j*        d|d         › d| j         j        ›d|› �¦  «        ‚tS          j*        d| j         j        ›d|›d �¦  «        ‚| j          .                    |¦  «         d S d S d S )!NT)Úcheck_genericÚcheck_for_plain_string)Úinclude_genericrh   Fr   r   z_Can't use the 'key' or 'name' arguments in Annotated with mapped_column(); this will be ignoredz2.0.22Údataclasses_Ú z
Argument 'zp' is a dataclass argument and cannot be specified within a mapped_column() bundled inside of an Annotated object)Ú_do_fallbackszThe type provided inside the z4 attribute Mapped annotation is the SQLAlchemy type z . Expected a Python type insteadz1the type object is not resolvable by the registryr"   z	neither 'z' nor 'z ' are resolvable by the registryznone of z, c              3  ó"   K  — | ]
}d |› d �V — ŒdS )ú'Nrh   )rl   Úts     rn   r>  z;MappedColumn._init_column_for_annotation.<locals>.<genexpr>”  s*   è è € Ð'AÐ'A°Q¨¨A¨¨¨Ð'AÐ'AÐ'AÐ'AÐ'AÐ'Arp   z are resolvable by the registryzSCould not locate SQLAlchemy Core type when resolving for Python type indicated by 'z)' inside the Mapped[] annotation for the z attribute; zThe object provided inside the zC attribute Mapped annotation is not a Python type, it's the object z. Expected a Python type.)/r_   rb  r0   r!   r.   r,  rB  r,   r2   Ú	__value__r-   r1   r—   r)  r`  r-  r@  Ú_mergerQ   r(   r:  r.  r/  r2  rS   r*  r�   r�   r%   Úwarn_deprecatedr1  rE  r0  rF  Úreplacerc  r+  ÚinsertÚ_resolve_typer+   Ú
issubclassÚorm_excÚMappedAnnotationErrorr/   rÀ   ÚjoinÚ	_set_type)rz   r~   r|   r�   r}   rn  r€   rf  rB  Úfind_mapped_inÚour_type_is_pep593Úraw_pep_593_typeÚraw_pep_695_typeÚour_typeÚour_argsÚpep_593_componentsÚelemÚuse_args_fromÚidxr4  ÚchecksÚ
check_typeÚnew_sqltypeÚdetails                           rn   re  z(MappedColumn._init_column_for_annotationì  sö  € ð ”+Ô"ˆåØ DÀð
ñ 
ô 
ð 	ð &Ð1Ð1Ð1Ý.Ø�XÐ1À4ðñ ô ˆHõ ! Ñ*Ô*ˆàÔ!ð 	,Ø#+ˆDŒKÔ à*,ˆØ"ÐØÐØÐå2°8Ñ<Ô<ˆå�XÑÔð 	.Ø'ÐÝ1Ð2BÔ2LÑMÔMˆHÝÐ 0Ñ1Ô1ˆHØð .Ø# HÔ-�å�XÑÔð 	4Ø!%Ðå!)¨(Ñ!3Ô!3ÐØ1°!Ô4ÐØð PÝ#=Ð>NÑ#OÔ#OÐ Ø/°°°Ô3ˆNð #ð 	!ð 	!ˆDÝ˜$¥Ñ-Ô-ð Ø $�Ø�ðð !ˆMàÑ$à'×CÒCØ˜3 ¤ñô ˆDŒKð
 Ô,ð+à!Ô(Ô0Ð<à&*�”Ô#àÔ ×'Ò'¨¬Ñ4Ô4Ð4Ø”kÔ&ˆGð Ô&­f¬mÐ;Ð;Ø”M¥V¤]Ð2Ð2à -Ô 6�”ð Ô,Ð8ØÔ'Ð/à&3Ô&B�Ô#ð Ô0Ð<ØÔ+Ð3à*7Ô*J�Ô'ð Ô2ð1àÔ1ð1ð -1�Ô)àÔ+ð CØ&3Ô&B�Ô#ð Ô)Ð5ØÔ$­¬Ð5Ð5à#0Ô#<�Ô ð Ô$Ô(Ð4Ø Ô'Ô,Ð8åÔ$ðKàñô ð ð Ô5ð Ý )Ø!Ô4Ô<ñ!ô !ð ð ‘H�C˜ð &Ô8¸Ô=Ý%œ}ð-ð -ð "Ÿkšk¨.¸"Ñ=Ô=˜ÝÔ,ðD¨ð Dð Dð Dð %ñ	ô ð øð Œ?ñ 9	/ 4¤;Ô#;ñ 9	/à!ð $Ø"Ð$4Ð5��à"˜�àÐ+Ø—’˜aÐ!1Ñ2Ô2Ð2à$ð -ð -�
Ø&×4Ò4Ø¨j¸HÐ.Dð 5ñ ô �ð Ð*Ø‘Eð +õ ˜h­
Ñ3Ô3ð &Ý˜x­Ñ.Ô.ð&å" 8­ZÑ8Ô8ð&õ "Ô7ðF¸¼¼ð Fð Fà#ðFð Fð Fñô ð õ
 ˜v aœyÑ)Ô)ð Ý˜6‘{”{ aÒ'Ð'àOð ˜õ ˜V™œ¨Ò)Ð)ð=¨¨q¬	ð =ð =¸&À¼)ð =ð =ð =ð ˜ð 'Ø"ŸišiÐ'AÐ'A¸&Ð'AÑ'AÔ'AÑAÔAñBà?ñ@ð õ
 "Ô7ð/Ø9?À¼ð/ð /ð 8<´{´ð/ð /ð '-ð	/ð /ñô ð õ "Ô7ð ¸$¼+¼/ð  ð  à+3ð ð  ð  ñô ð ð ŒK×!Ò! +Ñ.Ô.Ð.Ð.Ð.ðs9	/ð 9	/ð 9	/ð 9	/rp   N)r4  r   r5  r   )r5  r   r‰   r3   r  r  r  )r‰   r3  r  )r‰   r   )r|   r9   r�   r‚   rV  r3  r‰   r3  r  )r|   r9   r}   r7   r~   r   r€   rM   r�   r‚   rg  r‚   rh  rB   r‰   rŠ   )r~   r   r|   r9   r�   r‚   r}   r7   rn  rB   r€   rM   r‰   rŠ   )r  r  r  r  r  r  rr   rK  r"  r�   r“   rš   r´   r  r  rU  r`  rŽ   r%   r#  rm  re  rh   rp   rn   r)  r)  ÿ  s¼  € € € € € € ð
ð ð€Ið  "Ð!Ð!Ñ!ØÐÐÑØ!Ð!Ð!Ñ!àÐÐÑØ+Ð+Ð+Ñ+Ø)Ð)Ð)Ñ)ð%&ð %&ð %&ð %&ðNð ð ð ð" ð ð  ð  ñ „Xð ð ðð ð ñ „Xðð& ð

ð 

ð 

ñ „Xð

ðð ð ð ð?ð ?ð ?ð ?ð
=ð =ð =ð =ðð ð ð ð
ð ð ð ð2&
ð &
ð &
ð &
ðP €TÔÐ3Ñ4Ô4ð
ð 
ð 
ñ 5Ô4ð
ð z/ð z/ð z/ð z/ð z/ð z/rp   r)  N)_r  Ú
__future__r   Útypingr   r   r   r   r   r	   r
   r   r   r   r   r   rt  r   r   r€  r   Úbaser   r   Údescriptor_propsr   r   r   Ú
interfacesr   r   r   r   r   r   r   Úrelationshipsr    r%   r!   r[  r#   r$   Úsqlr&   r'   Úsql.baser(   Ú
sql.schemar)   r*   Úsql.type_apir+   Úutil.typingr,   r-   r.   r/   r0   r1   r2   r3   Ú_typingr4   r5   r6   r7   r8   rl  r9   r¶   r:   rÈ   r;   r¬   r<   r=   Úsql._typingr>   Úsql.elementsr?   r@   Úsql.operatorsrA   rB   rC   rD   rF   rG   Ú__all__Úclass_loggerÚ
IdentifiedrH   r'  r)  rh   rp   rn   ú<module>r¤     sÎ  ððð ð #Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø /Ð /Ð /Ð /Ð /Ð /Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø -Ð -Ð -Ð -Ð -Ð -Ø )Ð )Ð )Ð )Ð )Ð )Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø /Ð /Ð /Ð /Ð /Ð /Ø $Ð $Ð $Ð $Ð $Ð $Ø &Ð &Ð &Ð &Ð &Ð &Ø &Ð &Ð &Ð &Ð &Ð &Ø +Ð +Ð +Ð +Ð +Ð +Ø /Ð /Ð /Ð /Ð /Ð /Ø )Ð )Ð )Ð )Ð )Ð )Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø "Ð "Ð "Ð "Ð "Ð "Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð àð 4Ø)Ð)Ð)Ð)Ð)Ð)Ø&Ð&Ð&Ð&Ð&Ð&Ø/Ð/Ð/Ð/Ð/Ð/Ø&Ð&Ð&Ð&Ð&Ð&ØÐÐÐÐÐØ1Ð1Ð1Ð1Ð1Ð1ØÐÐÐÐÐØ Ð Ð Ð Ð Ð Ø2Ð2Ð2Ð2Ð2Ð2Ø$Ð$Ð$Ð$Ð$Ð$Ø'Ð'Ð'Ð'Ð'Ð'Ø,Ð,Ð,Ð,Ð,Ð,Ø*Ð*Ð*Ð*Ð*Ð*Ø,Ð,Ð,Ð,Ð,Ð,Ø1Ð1Ð1Ð1Ð1Ð1Ø3Ð3Ð3Ð3Ð3Ð3à€WˆT˜ÐÑÔ€Ø€gˆe˜3ÐÑÔ€Ø€gˆeÐ-Ð.Ñ.Ô.€ðð ð €ð ÔðHAð HAð HAð HAð HAØ�ÔØ˜ÔØØ„Nñ	HAô HAñ ÔðHAðVð ð ð ð ˜.¨Ô,Ð.@ÀÔ.Dñ ô ð ð$g/ð g/ð g/ð g/ð g/ØØ�ÔØ�rÔñg/ô g/ð g/ð g/ð g/rp   