Ë
    r™ãj@v  ã                  óÞ  — d Z ddlmZ ddlm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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( ej$                  rld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*l6m7Z7 dd+l8m9Z9 dd,lm:Z: dd-l;m<Z< dd.l=m>Z> dd/l m?Z? dd0l m@Z@ dd1l#mAZA dd2lBmCZC dd3lDmEZE  G d4„ d5e«      ZF eGeF«      \  ZHZIZJZKZLZMeLZN G d6„ d7e&«      ZOeOj                   j£                  «       \  ZRZSZTZUZVZWZXZYZZZ[Z\Z]Z^Z_Z`ZaZbZcd8Zdd9Ze G d:„ d;e«      Zf eGef«      \  ZgZhZiZj G d<„ d=e«      Zk eGek«      \  ZlZmZn G d>„ d?e«      Zo G d@„ dAeo«      Zp eqeNg«      Zr eqdeNeHg«      Zs eqdg«      Zt ejê                  dB«      Zv ejê                  dC«      Zw ejê                  dD«      Zx edEedFef   ¬G«      Zy edH«      Zz	 	 	 	 ddI„Z{er+d€dJ„Z|ed�dK„«       Z}e	 	 	 	 d‚dL„«       Z}	 	 	 	 d‚dM„Z}dƒdN„Z~d„dO„Zn,dP„ Z|dQ„ Z} e�j                   ee«      Z~ e�j                   dR«      Zd…dS„Z�d†dT„Z‚d†dU„Zƒd‡dV„Z„dˆdW„Z…d‰dX„Z†dŠdY„Z‡d‹dZ„Zˆ e�j                  eŠ«      dŒd[„«       Z‹	 	 	 	 d�d\„ZŒ	 	 	 	 dŽd]„Z�d�d^„ZŽd�d_„Z�ed�d`„«       Z�erd‘da„Z‘n e�j$                  db«      Z‘	 d’	 	 	 	 	 d“dc„Z“d”dd„Z”d•d–de„Z• G df„ dg«      Z– G dh„ die–«      Z— G dj„ dke%e"   e(«      Z˜ G dl„ dmee"   e(«      Z™ G dn„ doee"   e(«      Zš G dp„ dqe˜e"   e$e"   e(«      Z› G dr„ dse›e"   e™e"   eše"   e�j8                  «      Z� G dt„ duee"   e(«      Zž G dv„ dwe�e"   eže"   «      ZŸ G dx„ dyeše"   «      Z d—dz„Z¡ G d{„ d|eše"   «      Z¢ G d}„ d~eše"   «      Z£y)˜z;Constants and rudimental functions used throughout the ORM.é    )Úannotations)ÚEnumN)ÚAny)ÚCallable)Úcast)ÚDict)ÚGeneric)ÚLiteral)Úno_type_check)ÚOptional)Úoverload)ÚTuple)ÚType)ÚTYPE_CHECKING)ÚTypeVar)ÚUnioné   )Úexc)Ú_HasPathString)Ú_O)Úinsp_is_mapperé   )Ú
inspection)Úutil)Úroles)Ú_T)Ú_T_co)ÚSQLColumnExpression)ÚSQLCoreOperations)ÚFastIntFlag)Ú
TypingOnly)Ú_EntityType)Ú_ExternalEntityType)Ú_InternalEntityType)ÚInstrumentedAttribute)ÚAppenderQuery)ÚClassManager)ÚPropComparator)ÚMapper)ÚMappedColumn)ÚInstanceState)ÚAliasedClass)ÚWriteOnlyCollection)ÚTypedColumns)Ú_ColumnExpressionArgument)Ú	_InfoType)ÚColumnElement)ÚOperatorType)ÚColumnc                  ó4   — e Zd ZdZ	 dZ	 dZ	 dZ	 dZ	 eZ	 dZ	y)ÚLoaderCallableStatusr   r   r   é   é   é   N)
Ú__name__Ú
__module__Ú__qualname__ÚPASSIVE_NO_RESULTÚPASSIVE_CLASS_MISMATCHÚATTR_WAS_SETÚ
ATTR_EMPTYÚNO_VALUEÚ	NEVER_SETÚDONT_SET© ó    ú^/var/www/html/python-recuperauto-other/env/lib/python3.12/site-packages/sqlalchemy/orm/base.pyr5   r5   B   sN   „ ØÐðð
 ÐðDð €Lðð
 €JØJà€Hðð
 €Iðð �HrD   r5   c                  ó´   — e Zd ZdZdZ	 dZ	 dZ	 dZ	 dZ	 dZ		 dZ
	 d	Z	 d
Z	 dZ	 dZee	z  ez  ez  ez  Z	 eez  Z	 eez  Z	 eez  Z	 eez  Z	 ee	z  Z	 eez  Zy)ÚPassiveFlagz;Bitflag interface that passes options onto loader callablesr   r   r   r7   é   é   é    é@   é€   é   i   N)r9   r:   r;   Ú__doc__Ú	NO_CHANGEÚCALLABLES_OKÚSQL_OKÚRELATED_OBJECT_OKÚINIT_OKÚNON_PERSISTENT_OKÚLOAD_AGAINST_COMMITTEDÚNO_AUTOFLUSHÚNO_RAISEÚDEFERRED_HISTORY_LOADÚINCLUDE_PENDING_MUTATIONSÚPASSIVE_OFFÚPASSIVE_RETURN_NO_VALUEÚPASSIVE_NO_INITIALIZEÚPASSIVE_NO_FETCHÚPASSIVE_NO_FETCH_RELATEDÚPASSIVE_ONLY_PERSISTENTÚPASSIVE_MERGErC   rD   rE   rG   rG   t   sî   „ ÙEà€Iðð €Lðð €FØLàÐðð €Gðð
 ÐØCàÐðð €LØ4à€HØ:àÐØFà #Ðð 	Ð-Ñ-°Ñ7¸,ÑFÈÑOð ð -à)¨GÑ3ÐØà3°lÑBÐØ,à" VÑ+ÐØà*Ð->Ñ>ÐØ%à)Ð,=Ñ=ÐØ%à (Ñ*€MðrD   rG   Ú_sa_class_managerÚ_sa_instance_statec                  ó   — e Zd ZdZdZdZdZy)ÚEventConstantsr   r   r6   r7   N)r9   r:   r;   ÚEXT_CONTINUEÚEXT_STOPÚEXT_SKIPÚNO_KEYrC   rD   rE   rd   rd   Ø   s   „ Ø€LØ€HØ€HØ€FðrD   rd   c                  ó    — e Zd ZdZdZ	 dZ	 dZy)ÚRelationshipDirectionz÷enumeration which indicates the 'direction' of a
    :class:`_orm.RelationshipProperty`.

    :class:`.RelationshipDirection` is accessible from the
    :attr:`_orm.Relationship.direction` attribute of
    :class:`_orm.RelationshipProperty`.

    r   r   r6   N)r9   r:   r;   rN   Ú	ONETOMANYÚ	MANYTOONEÚ
MANYTOMANYrC   rD   rE   rj   rj   è   s+   „ ñð €Iðð €Iðð €JðrD   rj   c                  ó   — e Zd ZdZy)ÚInspectionAttrExtensionTypezXSymbols indicating the type of extension that a
    :class:`.InspectionAttr` is part of.N)r9   r:   r;   rN   rC   rD   rE   ro   ro     s   „ ò,rD   ro   c                  ó   — e Zd ZdZy)ÚNotExtensionÚnot_extensionN)r9   r:   r;   ÚNOT_EXTENSIONrC   rD   rE   rq   rq     s   „ Ø#€MðrD   rq   ÚSET_DEFERRED_EXPIREDÚDEFER_FOR_STATEÚRAISE_FOR_STATEÚ_F.)ÚboundÚ_Selfc                 ó:   ‡ — t         j                  dˆ fd„«       }|S )Nc                óT   •— ‰D ]  } ||| j                   «       Œ  | |g|¢­i |¤Ž |S ©N)r9   )ÚfnÚselfÚargsÚkwÚ	assertionÚ
assertionss        €rE   Úgeneratez_assertions.<locals>.generate2  s7   ø€ à#ò 	)ˆIÙ�d˜BŸK™KÕ(ð	)á
ˆ4Ð�$Ò˜"ÒØˆrD   )
r}   rw   r~   ry   r   r   r€   r   Úreturnry   )r   Ú	decorator)r‚   rƒ   s   ` rE   Ú_assertionsr†   /  s"   ø€ ô 
‡^�^ôó ðð €OrD   c                 ó   — y r|   rC   ©Úclss    rE   Úmanager_of_classrŠ   >  ó   � rD   c                 ó   — y r|   rC   rˆ   s    rE   Úopt_manager_of_classr�   @  s   € Ø>ArD   c                 ó   — y r|   rC   rˆ   s    rE   r�   r�   C  s   € ð &)rD   c                 ó   — y r|   rC   rˆ   s    rE   r�   r�   H  s   € à%(rD   c                 ó   — y r|   rC   ©Úinstances    rE   Úinstance_stater“   L  r‹   rD   c                 ó   — y r|   rC   r‘   s    rE   Úinstance_dictr•   N  r‹   rD   c                ó€   — 	 | j                   t           S # t        $ r}t        j                  | d| › �«      |‚d }~ww xY w)Nz2Can't locate an instrumentation manager for class )Ú__dict__ÚDEFAULT_MANAGER_ATTRÚKeyErrorr   ÚUnmappedClassError)r‰   Úkes     rE   rŠ   rŠ   T  sJ   € ð	Ø—<‘<Ô 4Ñ5Ð5øÜò 	Ü×(Ñ(ØÐIÈ#ÈÐOóàðûð	ús   ‚ •	=ž8¸=c                ó@   — | j                   j                  t        «      S r|   )r—   Úgetr˜   rˆ   s    rE   r�   r�   \  s   € Ø�|‰|×ÑÔ 4Ó5Ð5rD   r—   c                ó*   — t        t        | «      «      S )z'Return a string describing an instance.)Ú	state_strr“   r‘   s    rE   Úinstance_strr    d  s   € ô ”^ HÓ-Ó.Ð.rD   c                ól   — | €yd| j                   j                  t        | j                  «       «      fz  S )z=Return a string describing an instance via its InstanceState.ÚNonez<%s at 0x%x>)Úclass_r9   ÚidÚobj©Ústates    rE   rŸ   rŸ   j  s0   € ð €}Øà §¡×!6Ñ!6¼¸5¿9¹9»;»Ð HÑHÐHrD   c                ó<   — | €yd| j                   j                  ›d�S )zNReturn a string describing an instance's class via its
    InstanceState.
    r¢   ú<ú>)r£   r9   r¦   s    rE   Ústate_class_strr«   s  s&   € ð
 €}Øð ð Ÿ™×.Ó.Ð0Ð0rD   c                ó$   — t        | «      dz   |z   S ©Nú.)r    )r’   Ú	attributes     rE   Úattribute_strr°   ~  s   € Ü˜Ó! CÑ'¨)Ñ3Ð3rD   c                ó$   — t        | «      dz   |z   S r­   )rŸ   )r§   r¯   s     rE   Ústate_attribute_strr²   ‚  s   € Ü�UÓ˜cÑ! IÑ-Ð-rD   c                ód   — t        t        t        j                  | «      «      j	                  «       S )ap  Return a user-facing string for a mapped entity, such as a mapped
    class, :class:`_orm.Mapper`, or :func:`_orm.aliased` construct.

    Also accepts a :class:`_orm.PathRegistry` directly, which is itself
    ``inspect()``-able and implements ``path_string()``; in that case
    this is equivalent to calling
    :meth:`_orm.PathRegistry.path_string` directly.

    )r   r   r   ÚinspectÚpath_string)Úentitys    rE   Ú
entity_strr·   †  s%   € ô ”¤
× 2Ñ 2°6Ó :Ó;×GÑGÓIÐIrD   c                ó,   — t        | «      j                  S )a¥  Given an object, return the primary Mapper associated with the object
    instance.

    Raises :class:`sqlalchemy.orm.exc.UnmappedInstanceError`
    if no mapping is configured.

    This function is available via the inspection system as::

        inspect(instance).mapper

    Using the inspection system will raise
    :class:`sqlalchemy.exc.NoInspectionAvailable` if the instance is
    not part of a mapping.

    )Úobject_stateÚmapperr‘   s    rE   Úobject_mapperr»   “  s   € ô  ˜Ó!×(Ñ(Ð(rD   c                óJ   — t        | «      }|€t        j                  | «      ‚|S )a¸  Given an object, return the :class:`.InstanceState`
    associated with the object.

    Raises :class:`sqlalchemy.orm.exc.UnmappedInstanceError`
    if no mapping is configured.

    Equivalent functionality is available via the :func:`_sa.inspect`
    function as::

        inspect(instance)

    Using the inspection system will raise
    :class:`sqlalchemy.exc.NoInspectionAvailable` if the instance is
    not part of a mapping.

    )Ú_inspect_mapped_objectr   ÚUnmappedInstanceError)r’   r§   s     rE   r¹   r¹   ¦  s)   € ô" # 8Ó,€EØ€}Ü×'Ñ'¨Ó1Ð1àˆrD   c                óp   — 	 t        | «      S # t        j                  ft        j                  z   $ r Y y w xY wr|   )r“   r   rš   ÚNO_STATEr‘   s    rE   r½   r½   ¾  s6   € ðÜ˜hÓ'Ð'øÜ×"Ñ"Ð$¤s§|¡|Ñ3ò Ùðús   ‚
 �%5´5c                ó˜   — t        j                  | d«      }|�|j                  S t        | t        «      sJ ‚t        j                  | «      ‚)NF)r   r´   rº   Ú
isinstanceÚtyper   rš   )Úclass_or_mapperÚinsps     rE   Ú_class_to_mapperrÆ   Æ  sG   € ô ×Ñ˜o¨uÓ5€DØÐØ�{‰{Ðä˜/¬4Ô0Ð0Ð0Ü×$Ñ$ _Ó5Ð5rD   c                óL   — t        j                  | d«      }|�|j                  S y)z`Return the :class:`_orm.Mapper` for the given class or None if the
    class is not mapped.
    FN)r   r´   rº   ©r¶   rÅ   s     rE   Ú_mapper_or_nonerÉ   Ò  s)   € ô ×Ñ˜f eÓ,€DØÐØ�{‰{ÐàrD   c                óŒ   — t        j                  | d«      }|duxr) |j                   xr |j                  xs |j                  S )zlReturn True if the given object is a mapped class,
    :class:`_orm.Mapper`, or :class:`.AliasedClass`.
    FN)r   r´   Úis_clause_elementÚ	is_mapperÚis_aliased_classrÈ   s     rE   Ú_is_mapped_classrÎ   á  sK   € ô
 ×Ñ˜f eÓ,€Dà�DÐò 	6Ø×&Ñ&Ð&ò	6à�^‰^Ò4˜t×4Ñ4ðrD   c                óT   — t        j                  | d«      }|d uxr t        |dd«      S )NFrÍ   )r   r´   ÚgetattrrÈ   s     rE   Ú_is_aliased_classrÑ   î  s.   € Ü×Ñ˜f eÓ,€DØ�tÐÒH¤¨Ð.@À%Ó HÐHrD   c                ó\  — t        j                  | «      }|j                  r| }|j                  } nB|j                  r|j
                  } | }n't        |d«      r|j                  j                  x}} n| }	 t        | |«      S # t        $ r"}t        j                  d|›d|›d�«      |‚d}~ww xY w)zŽReturn a class attribute given an entity and string name.

    May return :class:`.InstrumentedAttribute` or user-defined
    attribute.

    rº   zEntity 'z' has no property 'ú'N)r   r´   Úis_selectableÚcrÍ   r¶   Úhasattrrº   r£   rÐ   ÚAttributeErrorÚsa_excÚInvalidRequestError)r¶   ÚkeyrÅ   ÚdescriptionÚerrs        rE   Ú_entity_descriptorrÝ   ó  s¥   € ô ×Ñ˜fÓ%€DØ×ÒØˆØ—‘‰Ø	×	Ò	Ø—‘ˆØ‰Ü	��xÔ	 Ø#Ÿ{™{×1Ñ1Ð1ˆ‘fàˆðÜ�v˜sÓ#Ð#øÜò Ü×(Ò(Ú2=ºsÐCó
àð	ûðús   Á4B  Â 	B+Â	B&Â&B+c                 ó   — y r|   rC   r¦   s    rE   Ú_state_mapperrß     r‹   rD   zmanager.mapperc                óª   — 	 t        | «      }|�|j                  sy |j                  }|r|j                  «        |S # t        j
                  $ r Y y w xY wr|   )r�   Ú	is_mappedrº   Ú_check_configurer   rÀ   )r£   Ú	configureÚclass_managerrº   s       rE   Ú_inspect_mapped_classrå     s[   € ð
Ü,¨VÓ4ˆØÐ ¨×(?Ò(?ØØ×%Ñ%ˆñ Ø×#Ñ#Ô%Øˆøô �<‰<ò Ùðús   ‚< œ< ¼AÁAc                óz   — t        j                  | d¬«      }t        |«      r|S t        j                  d| ›�«      ‚)NF)Úraiseerrz%Mapper or mapped class expected, got )r   r´   r   rØ   ÚArgumentError)ÚargrÅ   s     rE   Ú_parse_mapper_argumentrê   '  s:   € Ü×Ñ˜c¨EÔ2€DÜ�dÔØˆä
×
Ñ
Ð!FÀsÀgÐNÓ
OÐOrD   c                ó    — t        | |¬«      }|€>t        | t        «      st        j                  d| ›d�«      ‚t        j                  | «      ‚|S )aé  Given a class, return the primary :class:`_orm.Mapper` associated
    with the key.

    Raises :exc:`.UnmappedClassError` if no mapping is configured
    on the given class, or :exc:`.ArgumentError` if a non-class
    object is passed.

    Equivalent functionality is available via the :func:`_sa.inspect`
    function as::

        inspect(some_mapped_class)

    Using the inspection system will raise
    :class:`sqlalchemy.exc.NoInspectionAvailable` if the class is not mapped.

    )rã   zClass object expected, got 'z'.)rå   rÂ   rÃ   rØ   rè   r   rš   )r£   rã   rº   s      rE   Úclass_mapperrì   /  sP   € ô" # 6°YÔ?€FØ€~Ü˜&¤$Ô'Ü×&Ò&Ú6<Ð>óð ô ×$Ñ$ VÓ,Ð,àˆrD   c                  óx   — e Zd ZU dZdZded<   dZ	 dZ	 dZ	 dZ		 dZ
	 dZ	 dZ	 dZ	 dZ	 ej                   Zded<   y)	ÚInspectionAttraM  A base class applied to all ORM objects and attributes that are
    related to things that can be returned by the :func:`_sa.inspect` function.

    The attributes defined here allow the usage of simple boolean
    checks to test basic facts about the object returned.

    While the boolean checks here are basically the same as using
    the Python isinstance() function, the flags here can be used without
    the need to import all of these classes, and also such that
    the SQLAlchemy class system can change while leaving the flags
    here intact for forwards-compatibility.

    rC   zTuple[str, ...]Ú	__slots__Fro   Úextension_typeN)r9   r:   r;   rN   rï   Ú__annotations__rÔ   rÍ   Úis_instancerÌ   Ú	is_bundleÚis_propertyÚis_attributeÚ_is_internal_proxyrË   rq   rs   rð   rC   rD   rE   rî   rî   K  s€   … ñð "$€IˆÓ#à€Mð(ð ÐØGà€KØHà€IØEà€IØAà€KØIà€Lðð ÐØ:àÐð+ð 3?×2LÑ2L€NÐ/ÓLð	rD   rî   c                  ó:   — e Zd ZdZdZej                  dd„«       Zy)ÚInspectionAttrInfoa  Adds the ``.info`` attribute to :class:`.InspectionAttr`.

    The rationale for :class:`.InspectionAttr` vs. :class:`.InspectionAttrInfo`
    is that the former is compatible as a mixin for classes that specify
    ``__slots__``; this is essentially an implementation artifact.

    rC   c                ó   — i S )aì  Info dictionary associated with the object, allowing user-defined
        data to be associated with this :class:`.InspectionAttr`.

        The dictionary is generated when first accessed.  Alternatively,
        it can be specified as a constructor argument to the
        :func:`.column_property`, :func:`_orm.relationship`, or
        :func:`.composite`
        functions.

        .. seealso::

            :attr:`.QueryableAttribute.info`

            :attr:`.SchemaItem.info`

        rC   )r~   s    rE   ÚinfozInspectionAttrInfo.infož  s	   € ð$ ˆ	rD   N)r„   r0   )r9   r:   r;   rN   rï   r   Úro_memoized_propertyrú   rC   rD   rE   rø   rø   “  s&   „ ñð €Ià	×Ñòó ñrD   rø   c                  óv   — e Zd ZdZej
                  r'	 	 	 	 dd„Z	 	 	 	 dd„Z	 d		 	 	 	 	 d
d„Z	 d		 	 	 	 	 d
d„Z	yy)ÚSQLORMOperationsrC   c                 ó   — y r|   rC   )r~   r£   s     rE   Úof_typezSQLORMOperations.of_type¸  s   € à$'rD   c                 ó   — y r|   rC   )r~   Úcriterias     rE   Úand_zSQLORMOperations.and_¼  s   € à#&rD   Nc                 ó   — y r|   rC   ©r~   Ú	criterionÚkwargss      rE   ÚanyzSQLORMOperations.anyÀ  ó   € ð #&rD   c                 ó   — y r|   rC   r  s      rE   ÚhaszSQLORMOperations.hasÆ  r  rD   )r£   ú_EntityType[Any]r„   zPropComparator[_T_co])r  z_ColumnExpressionArgument[bool]r„   zPropComparator[bool]r|   )r  z)Optional[_ColumnExpressionArgument[bool]]r  r   r„   zColumnElement[bool])
r9   r:   r;   rï   Útypingr   rÿ   r  r  r
  rC   rD   rE   rý   rý   ³  s�   „ Ø€Ià×Òð	(Ø*ð	(à"ó	(ð	'Ø<ð	'à!ó	'ð DHð	&à@ð	&ð ð	&ð !ó		&ð DHð	&à@ð	&ð ð	&ð !ô		&ð! rD   rý   c                  ó�   — e Zd ZdZdZej                  r2e	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 d	d„«       Zed
d„«       Z	 	 	 	 	 	 dd„Zyy)ÚORMDescriptorz`Represent any Python descriptor that provides a SQL expression
    construct at the class level.rC   c                 ó   — y r|   rC   ©r~   r’   Úowners      rE   Ú__get__zORMDescriptor.__get__Õ  ó   € ð $'rD   c                 ó   — y r|   rC   r  s      rE   r  zORMDescriptor.__get__Ú  s   € ð (+rD   c                 ó   — y r|   rC   r  s      rE   r  zORMDescriptor.__get__ß  ó   € ØBErD   c                 ó   — y r|   rC   r  s      rE   r  zORMDescriptor.__get__â  s   € àKNrD   N)r’   r   r  úLiteral[None]r„   zORMDescriptor[_T_co])r’   r  r  r   r„   zSQLCoreOperations[_T_co]©r’   Úobjectr  r   r„   r   )r’   r  r  r   r„   z<Union[ORMDescriptor[_T_co], SQLCoreOperations[_T_co], _T_co])	r9   r:   r;   rN   rï   r  r   r   r  rC   rD   rE   r  r  Í  s£   „ ñ%ð €Ià×Òà	ð	'Øð	'Ø(5ð	'à!ò	'ó 
ð	'ð 
ð	+Ø)ð	+Ø25ð	+à%ò	+ó 
ð	+ð 
ÚEó 
ØEð	OØ"ð	OØ+.ð	OàIô	Oð rD   r  c                  ó   — e Zd ZdZdZy)Ú_MappedAnnotationBasezócommon class for Mapped and similar ORM container classes.

    these are classes that can appear on the left side of an ORM declarative
    mapping, containing a mapped class or in some cases a collection
    surrounding a mapped class.

    rC   N©r9   r:   r;   rN   rï   rC   rD   rE   r  r  ç  s   „ ñð �IrD   r  c                  ó   — e Zd ZdZdZy)ÚSQLORMExpressionaC  A type that may be used to indicate any ORM-level attribute or
    object that acts in place of one, in the context of SQL expression
    construction.

    :class:`.SQLORMExpression` extends from the Core
    :class:`.SQLColumnExpression` to add additional SQL methods that are ORM
    specific, such as :meth:`.PropComparator.of_type`, and is part of the bases
    for :class:`.InstrumentedAttribute`. It may be used in :pep:`484` typing to
    indicate arguments or return values that should behave as ORM-level
    attribute expressions.

    .. versionadded:: 2.0.0b4


    rC   Nr  rC   rD   rE   r  r  ó  s   „ ñð  �IrD   r  c                  óÂ   — e Zd ZdZdZej                  rKe	 	 	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 dd„«       Zedd„«       Z	 	 	 	 	 	 dd„Ze	dd„«       Z
	 	 	 	 	 	 dd„Zdd	„Zy
y
)ÚMappedaj  Represent an ORM mapped attribute on a mapped class.

    This class represents the complete descriptor interface for any class
    attribute that will have been :term:`instrumented` by the ORM
    :class:`_orm.Mapper` class.   Provides appropriate information to type
    checkers such as pylance and mypy so that ORM-mapped attributes
    are correctly typed.

    The most prominent use of :class:`_orm.Mapped` is in
    the :ref:`Declarative Mapping <orm_explicit_declarative_base>` form
    of :class:`_orm.Mapper` configuration, where used explicitly it drives
    the configuration of ORM attributes such as :func:`_orm.mapped_class`
    and :func:`_orm.relationship`.

    .. seealso::

        :ref:`orm_explicit_declarative_base`

        :ref:`orm_declarative_table`

    .. tip::

        The :class:`_orm.Mapped` class represents attributes that are handled
        directly by the :class:`_orm.Mapper` class. It does not include other
        Python descriptor classes that are provided as extensions, including
        :ref:`hybrids_toplevel` and the :ref:`associationproxy_toplevel`.
        While these systems still make use of ORM-specific superclasses
        and structures, they are not :term:`instrumented` by the
        :class:`_orm.Mapper` and instead provide their own functionality
        when they are accessed on a class.

    .. versionadded:: 1.4


    rC   c                 ó   — y r|   rC   r  s      rE   r  zMapped.__get__7  s   € ð  rD   c                 ó   — y r|   rC   r  s      rE   r  zMapped.__get__<  ó   € ð ,/rD   c                 ó   — y r|   rC   r  s      rE   r  zMapped.__get__A  r  rD   c                 ó   — y r|   rC   r  s      rE   r  zMapped.__get__D  ó   € àHKrD   c                 ó   — y r|   rC   )r‰   Úarg1s     rE   Ú_empty_constructorzMapped._empty_constructorH  s   € ØADrD   c                 ó   — y r|   rC   ©r~   r’   Úvalues      rE   Ú__set__zMapped.__set__K  ó   € àrD   c                 ó   — y r|   rC   )r~   r’   s     rE   Ú
__delete__zMapped.__delete__O  r‹   rD   N)r~   zMappedColumn[_T_co]r’   r.   r  r   r„   zColumn[_T_co]©r’   r¢   r  r   r„   zInstrumentedAttribute[_T_co]r  )r’   úOptional[object]r  r   r„   z9Union[InstrumentedAttribute[_T_co], Column[_T_co], _T_co])r)  r   r„   zMapped[_T_co])r’   r   r-  z&Union[SQLCoreOperations[_T_co], _T_co]r„   r¢   )r’   r   r„   r¢   )r9   r:   r;   rN   rï   r  r   r   r  Úclassmethodr*  r.  r1  rC   rD   rE   r!  r!  	  sÞ   „ ñ"ðH €Ià×Òà	ð	 Ø%ð	 Ø1=ð	 ØFIð	 àò	 ó 
ð	 ð 
ð	/Ø ð	/Ø),ð	/à)ò	/ó 
ð	/ð 
ÚEó 
ØEð	LØ,ð	LØ58ð	LàFó	Lð 
ÚDó 
ØDð	Øð	Ø(Nð	àó	ô 	9ð5 rD   r!  c                  ó   — e Zd ZdZdZy)Ú_MappedAttributezVMixin for attributes which should be replaced by mapper-assigned
    attributes.

    rC   Nr  rC   rD   rE   r6  r6  R  s   „ ñð
 �IrD   r6  c                  ó8   — e Zd ZdZdZdd„ZeZ	 	 	 	 	 	 	 	 dd„Zy)Ú_DeclarativeMappedz‚Mixin for :class:`.MapperProperty` subclasses that allows them to
    be compatible with ORM-annotated declarative mappings.

    rC   c                ó   — t         S r|   ©ÚNotImplemented©r~   ÚopÚotherr  s       rE   Úoperatez_DeclarativeMapped.operatei  s   € ÜÐrD   c                ó   — t         S r|   r:  r<  s       rE   Úreverse_operatez"_DeclarativeMapped.reverse_operaten  s
   € ô ÐrD   N)r=  r2   r>  r   r  r   r„   r   )r9   r:   r;   rN   rï   r?  Ú__sa_operate__rA  rC   rD   rE   r8  r8  [  s?   „ ñð
 €Ióð €NðØðØ'*ðØ69ðà	ôrD   r8  c                  ó   — e Zd ZdZdZy)ÚUnmappedaÃ  Represent a database column that is part of the mapped
    :class:`_schema.Table`, but is not mapped by the ORM.

    The :class:`_orm.Unmapped` type annotation is used in an
    :ref:`Annotated Declarative Table <orm_declarative_mapped_column>`
    mapping, in conjunction with the :func:`_orm.unmapped_column`
    construct, to indicate a column that should be present in the
    :class:`_schema.Table` generated for the class, while not being part
    of the Python model at all.  The type and nullability of the
    :class:`_schema.Column` are derived from the annotation in the same
    way as for :class:`_orm.Mapped`.

    E.g.::

        class User(Base):
            __tablename__ = "user"

            id: Mapped[int] = mapped_column(primary_key=True)
            name: Mapped[str]

            legacy_name: Unmapped[str | None] = unmapped_column()

    The ``legacy_name`` column is part of ``User.__table__``, but there is
    no ``User.legacy_name`` attribute, and when using
    :ref:`orm_declarative_native_dataclasses`, it is not part of the
    dataclass.

    A bare ``Unmapped[]`` annotation with no right-hand side is equivalent to
    ``unmapped_column()`` with no arguments.  When using
    :ref:`orm_declarative_native_dataclasses`, the attribute is omitted from
    the dataclass and its ``__init__()`` method in both cases; however,
    :pep:`681` typing tools are only able to determine this when
    :func:`_orm.unmapped_column` is present, and otherwise see the attribute
    as a required ``__init__()`` argument, so it should always be included
    in that case.

    .. versionadded:: 2.1.5

    .. seealso::

        :ref:`orm_declarative_unmapped_column`

        :func:`_orm.unmapped_column`

    rC   Nr  rC   rD   rE   rD  rD  t  s   „ ñ,ð\ �IrD   rD  c                ó   — | t         u S r|   )rD  )Úmapped_containers    rE   Ú_is_unmapped_containerrG  ¦  s   € ØœxÐ'Ð'rD   c                  ó~   — e Zd ZdZdZer3e	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 d	d„«       Z	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Zyy)ÚDynamicMappedaú  Represent the ORM mapped attribute type for a "dynamic" relationship.

    The :class:`_orm.DynamicMapped` type annotation may be used in an
    :ref:`Annotated Declarative Table <orm_declarative_mapped_column>` mapping
    to indicate that the ``lazy="dynamic"`` loader strategy should be used
    for a particular :func:`_orm.relationship`.

    .. legacy::  The "dynamic" lazy loader strategy is the legacy form of what
       is now the "write_only" strategy described in the section
       :ref:`write_only_relationship`.

    E.g.::

        class User(Base):
            __tablename__ = "user"
            id: Mapped[int] = mapped_column(primary_key=True)
            addresses: DynamicMapped[Address] = relationship(
                cascade="all,delete-orphan"
            )

    See the section :ref:`dynamic_relationship` for background.

    .. versionadded:: 2.0

    .. seealso::

        :ref:`dynamic_relationship` - complete background

        :class:`.WriteOnlyMapped` - fully 2.0 style version

    rC   c                 ó   — y r|   rC   r  s      rE   r  zDynamicMapped.__get__Ï  r$  rD   c                 ó   — y r|   rC   r  s      rE   r  zDynamicMapped.__get__Ô  r  rD   c                 ó   — y r|   rC   r  s      rE   r  zDynamicMapped.__get__Ù  r'  rD   c                 ó   — y r|   rC   r,  s      rE   r.  zDynamicMapped.__set__Ý  r/  rD   Nr2  )r’   r  r  r   r„   zAppenderQuery[_T_co])r’   r3  r  r   r„   z9Union[InstrumentedAttribute[_T_co], AppenderQuery[_T_co]]©r’   r   r-  ztyping.Collection[_T_co]r„   r¢   ©	r9   r:   r;   rN   rï   r   r   r  r.  rC   rD   rE   rI  rI  ª  s«   „ ñð@ €Iáà	ð	/Ø ð	/Ø),ð	/à)ò	/ó 
ð	/ð 
ð	'Ø"ð	'Ø+.ð	'à!ò	'ó 
ð	'ð	LØ,ð	LØ58ð	LàFó	Lð	Øð	Ø(@ð	àô	ð! rD   rI  c                  ó~   — e Zd ZdZdZer3e	 	 	 	 	 	 dd„«       Ze	 	 	 	 	 	 d	d„«       Z	 	 	 	 	 	 d
d„Z	 	 	 	 	 	 dd„Zyy)ÚWriteOnlyMappedad  Represent the ORM mapped attribute type for a "write only" relationship.

    The :class:`_orm.WriteOnlyMapped` type annotation may be used in an
    :ref:`Annotated Declarative Table <orm_declarative_mapped_column>` mapping
    to indicate that the ``lazy="write_only"`` loader strategy should be used
    for a particular :func:`_orm.relationship`.

    E.g.::

        class User(Base):
            __tablename__ = "user"
            id: Mapped[int] = mapped_column(primary_key=True)
            addresses: WriteOnlyMapped[Address] = relationship(
                cascade="all,delete-orphan"
            )

    See the section :ref:`write_only_relationship` for background.

    .. versionadded:: 2.0

    .. seealso::

        :ref:`write_only_relationship` - complete background

        :class:`.DynamicMapped` - includes legacy :class:`_orm.Query` support

    rC   c                 ó   — y r|   rC   r  s      rE   r  zWriteOnlyMapped.__get__  r$  rD   c                 ó   — y r|   rC   r  s      rE   r  zWriteOnlyMapped.__get__  s   € ð *-rD   c                 ó   — y r|   rC   r  s      rE   r  zWriteOnlyMapped.__get__  s   € ð rD   c                 ó   — y r|   rC   r,  s      rE   r.  zWriteOnlyMapped.__set__  r/  rD   Nr2  )r’   r  r  r   r„   zWriteOnlyCollection[_T_co])r’   r3  r  r   r„   z?Union[InstrumentedAttribute[_T_co], WriteOnlyCollection[_T_co]]rN  rO  rC   rD   rE   rQ  rQ  â  s¨   „ ñð8 €Iáà	ð	/Ø ð	/Ø),ð	/à)ò	/ó 
ð	/ð 
ð	-Ø"ð	-Ø+.ð	-à'ò	-ó 
ð	-ð	Ø,ð	Ø58ð	ð
ó	ð	Øð	Ø(@ð	àô	ð% rD   rQ  )r‚   r   r„   zCallable[[_F], _F])r‰   úType[_O]r„   zClassManager[_O])r‰   zAliasedClass[Any]r„   r¢   )r‰   z_ExternalEntityType[_O]r„   zOptional[ClassManager[_O]])r’   r   r„   úInstanceState[_O])r’   r  r„   zDict[str, Any])r’   r  r„   Ústr)r§   úInstanceState[Any]r„   rX  )r’   r  r¯   rX  r„   rX  )r§   rY  r¯   rX  r„   rX  )r¶   r   r„   rX  )r’   r   r„   ú
Mapper[_T])r’   r   r„   zInstanceState[_T])r’   r   r„   zOptional[InstanceState[_T]])rÄ   zUnion[Mapper[_T], Type[_T]]r„   rZ  )r¶   z(Union[Type[_T], _InternalEntityType[_T]]r„   zOptional[Mapper[_T]])r¶   r   r„   Úbool)r¶   r  rÚ   rX  r„   r   )r§   rW  r„   ú
Mapper[_O])F)r£   rV  rã   r[  r„   zOptional[Mapper[_O]])ré   zUnion[Mapper[_O], Type[_O]]r„   r\  )T)r£   rV  rã   r[  r„   r\  )rF  zOptional[type]r„   r[  )¤rN   Ú
__future__r   Úenumr   Úoperatorr  r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Ú r   Ú_typingr   r   r   rØ   r   r   Úsqlr   Úsql._typingr   r   Úsql.elementsr   r   r    Úutil.langhelpersr!   r"   r#   r$   Ú
attributesr%   Údynamicr&   Úinstrumentationr'   Ú
interfacesr(   rº   r)   Ú
propertiesr*   r§   r+   r,   Ú	writeonlyr-   Úsql._annotated_colsr.   r/   r0   r1   Úsql.operatorsr2   Ú
sql.schemar3   r5   Útupler<   r=   r>   r?   r@   rB   rA   rG   Ú__members__ÚvaluesrO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   r˜   ÚDEFAULT_STATE_ATTRrd   re   rf   rg   rh   rj   rk   rl   rm   ro   rq   Ú	frozensetÚ
_never_setÚ	_none_setÚ_none_only_setÚsymbolÚ_SET_DEFERRED_EXPIREDÚ_DEFER_FOR_STATEÚ_RAISE_FOR_STATErw   ry   r†   rŠ   r�   r“   r•   Ú
attrgetterr    rŸ   r«   r°   r²   r·   r»   r¹   Ú	_inspectsr  r½   rÆ   rÉ   rÎ   rÑ   rÝ   rß   Údottedgetterrå   rê   rì   rî   rø   rý   r  r  r  ÚDDLConstraintColumnRoler!  r6  r8  rD  rG  rI  rQ  rC   rD   rE   ú<module>r     s¨  ðñ Bå "å Û Û Ý Ý Ý Ý Ý Ý Ý  Ý Ý Ý Ý Ý  Ý Ý å Ý #Ý Ý #Ý Ý Ý Ý Ý Ý Ý .Ý ,Ý Ý )à	×ÒÝ$Ý,Ý,Ý1Ý&Ý-Ý*ÝÝ(Ý$Ý"Ý.Ý2Ý7Ý'Ý,Ý,Ý#ô#˜4ô #ñZ 
Ð
ÓñØØØØØØð €	ôH�+ô Hð| ×Ñ×"Ñ"Ó$ñ'ØØØ
ØØØØØØØØØØØØØØØð +Ð Ø)Ð ô
�Tô 
ñ ,1°Ó+@Ñ (€ˆh˜ &ô ˜Dô  ñF $)Ð)>Ó#?Ñ  €	ˆ9�jô, $ô ,ô
Ð.ô ñ ˜	�{Ó#€
á�t˜YÐ(9Ð:Ó;€	á˜D˜6Ó"€à#˜Ÿ™Ð$:Ó;Ð à�4—;‘;Ð0Ó1Ð à�4—;‘;Ð0Ó1Ð ñ ˆT˜ # s (Ñ+Ô,€Ù�Ó€ð
Øð
àó
ñ ã@àÚAó ØAàð)Ø$ð)à	#ò)ó ð)ð)Ø$ð)à	#ó)ó ?ä>òò6ð )�X×(Ò(Ð);Ó<€Nà'�H×'Ò'¨
Ó3€Mó/óIó1ó4ó.ó
Jó)ó&ð0 €×Ò�fÓòó ðð	6Ø0ð	6àó	6ðØ4ðàóó
óIð
 òó ðñ6 äBð &�D×%Ò%Ð&6Ó7€Mð ).ðØðØ!%ðàóó Pô÷8Eñ EôP˜ô ô@&Ð(¨Ñ/°ô &ô4O�G˜E‘N Jô Oô4	˜G E™N¨Jô 	ôØ�UÑÐ0°Ñ7¸ôô,F9Ø�UÑØ�%ÑØ˜%Ñ Ø	×!Ò!ô	F9ôR�w˜u‘~ zô ô˜ ™Ð(8¸Ñ(?ô ô2/Ð$ UÑ+ô /ód(ô5Ð)¨%Ñ0ô 5ôp3Ð+¨EÑ2õ 3rD   