zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
U
¸ý°drlã@sdZddlmZddlmZddlZddlZddlmZddlmZddlm    Z    ddlm
Z
dd    lm Z dd
lm Z dd lm Z dd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlm Z ddl!m"Z"ejrðddlm#Z#ddlm$Z$ddlm%Z%ddl&m'Z'dd l(m)Z)dd!l*m+Z+dd"l,m-Z-dd#l.m/Z/dd$l0m1Z1dd%lm2Z2dd&l3m4Z4dd'l5m6Z6dd(l5m7Z7dd)lm8Z8dd*l9m:Z:ed+ed,Z;ed-e<d,Z=Gd.d/„d/eƒZ>e?e>ƒ\Z@ZAZBZCZDeDZEGd0d1„d1eƒZFeFjG H¡\ZIZJZKZLZMZNZOZPZQZRZSZTZUZVZWZXZYd2ZZd3Z[Gd4d5„d5eƒZ\e?e\ƒ\Z]Z^Z_Z`Gd6d7„d7eƒZae?eaƒ\ZbZcZdGd8d9„d9eƒZeGd:d;„d;eeƒZfegeEgƒZhegdeEe@gƒZie jd<¡Zke jd=¡Zle jd>¡Zmed?ed@efd,ZnedAƒZodBdCdDœdEdF„Zper¢dGdHdIœdJdK„Zqe dLdMdIœdNdO„ƒZre dPdQdIœdRdO„ƒZrdPdQdIœdSdO„Zrd-dTdUœdVdW„ZsdXdYdUœdZd[„Ztn$d\dK„Zqd]dO„Zre ue[¡Zse ud^¡ZtdXd_dUœd`da„Zvdbd_dcœddde„Zwdbd_dcœdfdg„ZxdXd_d_dhœdidj„Zydbd_d_dkœdldm„Zzd+dndUœdodp„Z{d+dqdUœdrds„Z|e }e<¡d+dtdUœdudv„ƒZ~dwdndxœdydz„Zd{d|d}œd~d„Z€dBd€d}œdd‚„ZdBd€d}œdƒd„„Z‚e d…d_dBd†œd‡dˆ„ƒZƒerÂdTd‰dcœdŠd‹„Z„n
e …dŒ¡Z„d¯dGd€dŽdœdd‘„Z†d’d‰d“œd”d•„Z‡d°dGd€d‰dœd—d˜„ZˆGd™dš„dšƒZ‰Gd›dœ„dœe‰ƒZŠGddž„džee;e ƒZ‹GdŸd „d e
e;e ƒZŒGd¡d¢„d¢e
e;e ƒZGd£d¤„d¤e‹e;ee;e ƒZŽGd¥d¦„d¦eŽe;eŒe;ee;ejƒZGd§d¨„d¨e
e;e ƒZ‘Gd©dª„dªee;e‘e;ƒZ’Gd«d¬„d¬ee;ƒZ“Gd­d®„d®ee;ƒZ”dS)±z=Constants and rudimental functions used throughout the ORM.
 
é)Ú annotations)ÚEnumN)ÚAny)ÚCallable)ÚDict)ÚGeneric)Ú no_type_check)ÚOptional)Úoverload)ÚType)Ú TYPE_CHECKING)ÚTypeVar)ÚUnioné)Úexc)Úinsp_is_mapperé)Ú
inspection)Úutil)Úroles)ÚSQLColumnExpression)ÚSQLCoreOperations)Ú FastIntFlag)Ú
TypingOnly)ÚLiteral)Ú _EntityType)Ú_ExternalEntityType)Ú_InternalEntityType)ÚInstrumentedAttribute)Ú AppenderQuery)Ú ClassManager)ÚPropComparator)ÚMapper)Ú InstanceState)Ú AliasedClass)ÚWriteOnlyCollection)Ú_ColumnExpressionArgument)Ú    _InfoType)Ú ColumnElement)Ú OperatorTypeÚ_T)ÚboundÚ_Oc@s$eZdZdZdZdZdZdZeZdS)ÚLoaderCallableStatusrrrééN)    Ú__name__Ú
__module__Ú __qualname__ÚPASSIVE_NO_RESULTÚPASSIVE_CLASS_MISMATCHÚ ATTR_WAS_SETÚ
ATTR_EMPTYÚNO_VALUEÚ    NEVER_SET©r9r9úJd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\sqlalchemy/orm/base.pyr-?sr-c@s|eZdZdZdZdZdZdZdZdZ    dZ
d    Z d
Z d Z ee    BeBeBeBZeeAZeeAZeeAZeeAZee    AZee BZd S) Ú PassiveFlagz;Bitflag interface that passes options onto loader callablesrrrr/ééé é@é€éN)r0r1r2Ú__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Ú PASSIVE_OFFÚPASSIVE_RETURN_NO_VALUEÚPASSIVE_NO_INITIALIZEÚPASSIVE_NO_FETCHÚPASSIVE_NO_FETCH_RELATEDÚPASSIVE_ONLY_PERSISTENTÚ PASSIVE_MERGEr9r9r9r:r;ns(ÿr;Z_sa_class_managerZ_sa_instance_statec@seZdZdZdZdZdZdS)ÚEventConstantsrrr.r/N)r0r1r2Ú EXT_CONTINUEÚEXT_STOPÚEXT_SKIPÚNO_KEYr9r9r9r:rTÏs
rTc@seZdZdZdZdZdZdS)Ú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`.
 
    rrr.N)r0r1r2rBÚ    ONETOMANYÚ    MANYTOONEÚ
MANYTOMANYr9r9r9r:rYßs
    rYc@seZdZdZdS)ÚInspectionAttrExtensionTypezXSymbols indicating the type of extension that a
    :class:`.InspectionAttr` is part of.N)r0r1r2rBr9r9r9r:r]sr]c@seZdZdZdS)Ú NotExtensionZ not_extensionN)r0r1r2Ú NOT_EXTENSIONr9r9r9r:r^
sr^ZSET_DEFERRED_EXPIREDZDEFER_FOR_STATEZRAISE_FOR_STATEÚ_F.Ú_SelfrzCallable[[_F], _F])Ú
assertionsÚreturncs$tjddddddœ‡fdd„ ƒ}|S)Nr`rar)ÚfnÚselfÚargsÚkwrccs*ˆD]}|||jƒq||f|ž|Ž|S©N)r0)rdrerfrgZ    assertion©rbr9r:Úgenerate'sz_assertions.<locals>.generate)rÚ    decorator)rbrjr9rir:Ú _assertions$srlzType[_O]zClassManager[_O])ÚclsrccCsdSrhr9©rmr9r9r:Úmanager_of_class3srozAliasedClass[Any]ÚNonecCsdSrhr9rnr9r9r:Úopt_manager_of_class6srqz_ExternalEntityType[_O]zOptional[ClassManager[_O]]cCsdSrhr9rnr9r9r:rq:scCsdSrhr9rnr9r9r:rq@szInstanceState[_O]©ÚinstancerccCsdSrhr9©rsr9r9r:Úinstance_stateEsruÚobjectzDict[str, Any]cCsdSrhr9rtr9r9r:Ú instance_dictHsrwc
CsHz |jtWStk
rB}zt |d|›¡|‚W5d}~XYnXdS)Nz2Can't locate an instrumentation manager for class )Ú__dict__ÚDEFAULT_MANAGER_ATTRÚKeyErrorrÚUnmappedClassError)rmZker9r9r:roOs ÿþcCs |j t¡Srh)rxÚgetryrnr9r9r:rqWsrxÚstrcCs tt|ƒƒS)z'Return a string describing an instance.)Ú    state_strrurtr9r9r:Ú instance_str_srzInstanceState[Any])ÚstaterccCs(|dkr dSd|jjt| ¡ƒfSdS)z=Return a string describing an instance via its InstanceState.Nrpz <%s at 0x%x>)Úclass_r0ÚidÚobj©r€r9r9r:r~esr~cCs|dkr dSd|jjfSdS)zNReturn a string describing an instance's class via its
    InstanceState.
    Nrpz<%s>)rr0r„r9r9r:Ústate_class_strnsr…)rsÚ    attributerccCst|ƒd|S©NÚ.)r)rsr†r9r9r:Ú attribute_strysr‰)r€r†rccCst|ƒd|Sr‡)r~)r€r†r9r9r:Ústate_attribute_str}srŠz
Mapper[_T]cCs
t|ƒjS)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Úmapperrtr9r9r:Ú object_mappersrzInstanceState[_T]cCs$t|ƒ}|dkrt |¡‚n|SdS)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.
 
    N)Ú_inspect_mapped_objectrZUnmappedInstanceError)rsr€r9r9r:r‹”s r‹zOptional[InstanceState[_T]]c    Cs0z
t|ƒWStjftjk
r*YdSXdSrh)rurr{ÚNO_STATErtr9r9r:rެs
rŽzUnion[Mapper[_T], Type[_T]])Úclass_or_mapperrccCs6t |d¡}|dk    r|jSt|tƒs(t‚t |¡‚dS)NF)rÚinspectrŒÚ
isinstanceÚtypeÚAssertionErrorrr{)rÚinspr9r9r:Ú_class_to_mapper´s
 r–z(Union[Type[_T], _InternalEntityType[_T]]zOptional[Mapper[_T]])ÚentityrccCs"t |d¡}|dk    r|jSdSdS)z`Return the :class:`_orm.Mapper` for the given class or None if the
    class is not mapped.
    FN)rr‘rŒ©r—r•r9r9r:Ú_mapper_or_noneÀs r™ÚboolcCs(t |d¡}|dk    o&|j o&|jp&|jS)zlReturn True if the given object is a mapped class,
    :class:`_orm.Mapper`, or :class:`.AliasedClass`.
    FN)rr‘Úis_clause_elementÚ    is_mapperÚis_aliased_classr˜r9r9r:Ú_is_mapped_classÏs  ÿ
ýržcCs t |d¡}|dk    ot|ddƒS)NFr)rr‘Úgetattrr˜r9r9r:Ú_is_aliased_classÜs r ú_EntityType[Any])r—Úkeyrcc
Cs’t |¡}|jr|}|j}n.|jr.|j}|}nt|dƒrF|jj}}n|}z t    ||ƒWSt
k
rŒ}zt   d||f¡|‚W5d}~XYnXdS)zŽReturn a class attribute given an entity and string name.
 
    May return :class:`.InstrumentedAttribute` or user-defined
    attribute.
 
    rŒz Entity '%s' has no property '%s'N) rr‘Ú is_selectableÚcrr—ÚhasattrrŒrrŸÚAttributeErrorÚsa_excZInvalidRequestError)r—r¢r•Ú descriptionÚerrr9r9r:Ú_entity_descriptorás$
 
 
ÿþrªz
Mapper[_O]cCsdSrhr9r„r9r9r:Ú _state_mapperÿsr«zmanager.mapperFzOptional[Mapper[_O]])rÚ    configurerccCsTz&t|ƒ}|dks|jsWdS|j}Wntjk
r>YdSX|rL| ¡|SdSrh)rqZ    is_mappedrŒrrZ_check_configure)rr¬Z class_managerrŒr9r9r:Ú_inspect_mapped_classs
r­zUnion[Mapper[_O], Type[_O]])ÚargrccCs.tj|dd}t|ƒr|St d|›¡‚dS)NF)Zraiseerrz%Mapper or mapped class expected, got )rr‘rr§Ú ArgumentError)r®r•r9r9r:Ú_parse_mapper_argumentsr°TcCsBt||d}|dkr:t|tƒs.t d|f¡‚t |¡‚n|SdS)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¬Nz Class object expected, got '%r'.)r­r’r“r§r¯rr{)rr¬rŒr9r9r:Ú class_mappers 
ÿ r±c@sHeZdZUdZdZdZdZdZdZdZ    dZ
dZ dZ dZ ejZded<dS)ÚInspectionAttraMA 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.
 
    r9Fr]Úextension_typeN)r0r1r2rBÚ    __slots__r£rZ is_instancerœZ    is_bundleZ is_propertyZ is_attributeZ_is_internal_proxyr›r^r_r³Ú__annotations__r9r9r9r:r²:s
r²c@s(eZdZdZdZejddœdd„ƒZdS)ÚInspectionAttrInfoaAdds 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.
 
    r9r')rccCsiS)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`
 
        r9)rer9r9r:Úinfo‘szInspectionAttrInfo.infoN)r0r1r2rBr´rZro_memoized_propertyr·r9r9r9r:r¶†sr¶c@s^eZdZdZejrZdddœdd„Zddd    œd
d „Zdd dddœdd„Zdd dddœdd„Z    d S)ÚSQLORMOperationsr9r¡zPropComparator[_T])rrccCsdSrhr9)rerr9r9r:Úof_type«szSQLORMOperations.of_typez_ColumnExpressionArgument[bool]zPropComparator[bool])ÚcriteriarccGsdSrhr9)rerºr9r9r:Úand_®szSQLORMOperations.and_Nz)Optional[_ColumnExpressionArgument[bool]]rzColumnElement[bool])Ú    criterionÚkwargsrccKsdSrhr9©rer¼r½r9r9r:Úany³szSQLORMOperations.anycKsdSrhr9r¾r9r9r:ÚhasºszSQLORMOperations.has)N)N)
r0r1r2r´Útypingr r¹r»r¿rÀr9r9r9r:r¸¦sþ    þr¸c@sneZdZdZdZejrjeddddœdd„ƒZeddd    dœd
d„ƒZed dd dœd d„ƒZd dddœdd„ZdS)Ú ORMDescriptorz`Represent any Python descriptor that provides a SQL expression
    construct at the class level.r9rz Literal[None]zORMDescriptor[_T]©rsÚownerrccCsdSrhr9©rersrÄr9r9r:Ú__get__ÊszORMDescriptor.__get__zSQLCoreOperations[_T]cCsdSrhr9rÅr9r9r:rÆÐsrvr*cCsdSrhr9rÅr9r9r:rÆÖsz3Union[ORMDescriptor[_T], SQLCoreOperations[_T], _T]cCsdSrhr9rÅr9r9r:rÆÚsN)    r0r1r2rBr´rÁr r
rÆr9r9r9r:rÂÂsrÂc@seZdZdZdZdS)Ú_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.
 
    r9N©r0r1r2rBr´r9r9r9r:rÇàsrÇc@seZdZdZdZdS)ÚSQLORMExpressionaCA 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
 
 
    r9NrÈr9r9r9r:rÉìsrÉc@sŽeZdZdZdZejrŠeddddœdd„ƒZed    dd
dœd d„ƒZd dd dœdd„Ze    dddœdd„ƒZ
ddddœdd„Z dddœdd„Z dS)ÚMappedajRepresent 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
 
 
    r9rprzInstrumentedAttribute[_T]rÃcCsdSrhr9rÅr9r9r:rÆ0szMapped.__get__rvr*cCsdSrhr9rÅr9r9r:rÆ6súOptional[object]z$Union[InstrumentedAttribute[_T], _T]cCsdSrhr9rÅr9r9r:rÆ:sz
Mapped[_T])Úarg1rccCsdSrhr9)rmrÌr9r9r:Ú_empty_constructor?szMapped._empty_constructorz Union[SQLCoreOperations[_T], _T]©rsÚvaluerccCsdSrhr9©rersrÏr9r9r:Ú__set__CszMapped.__set__rrcCsdSrhr9)rersr9r9r:Ú
__delete__HszMapped.__delete__N) r0r1r2rBr´rÁr r
rÆÚ classmethodrÍrÑrÒr9r9r9r:rÊs$rÊc@seZdZdZdZdS)Ú_MappedAttributezVMixin for attributes which should be replaced by mapper-assigned
    attributes.
 
    r9NrÈr9r9r9r:rÔLsrÔc@s@eZdZdZdZdddddœdd„ZeZdddddœdd    „Zd
S) Ú_DeclarativeMappedz‚Mixin for :class:`.MapperProperty` subclasses that allows them to
    be compatible with ORM-annotated declarative mappings.
 
    r9r)r)ÚopÚotherr½rccOstSrh©ÚNotImplemented©rerÖr×r½r9r9r:Úoperatecsz_DeclarativeMapped.operatecKstSrhrØrÚr9r9r:Úreverse_operatehsz"_DeclarativeMapped.reverse_operateN)r0r1r2rBr´rÛZ__sa_operate__rÜr9r9r9r:rÕUs
rÕc@s<eZdZdZdZer8ddddœdd„Zdd    d
d œd d „ZdS)Ú 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
 
    r9rËrzAppenderQuery[_T]rÃcCsdSrhr9rÅr9r9r:rƓszDynamicMapped.__get__útyping.Collection[_T]rprÎcCsdSrhr9rÐr9r9r:rјszDynamicMapped.__set__N©r0r1r2rBr´r rÆrÑr9r9r9r:rÝns
 rÝc@s<eZdZdZdZer8ddddœdd„Zdd    d
d œd d „ZdS)ÚWriteOnlyMappedadRepresent 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
 
    r9rËrzWriteOnlyCollection[_T]rÃcCsdSrhr9rÅr9r9r:rƽszWriteOnlyMapped.__get__rÞrprÎcCsdSrhr9rÐr9r9r:rÑÂszWriteOnlyMapped.__set__Nrßr9r9r9r:ràœs
rà)F)T)•rBÚ
__future__rÚenumrÚoperatorrÁrrrrrr    r
r r r rÚrÚ_typingrr§rrZsqlrZ sql.elementsrrrZutil.langhelpersrZ util.typingrrrrÚ
attributesrZdynamicrZinstrumentationr Z
interfacesr!rŒr"r€r#r$Z    writeonlyr%Z sql._typingr&r'r(Z sql.operatorsr)r*rvr,r-Útupler3r4r5r6r7r8r;Ú __members__ÚvaluesrCrDrErFrGrHrIrJrKrLrMrNrOrPrQrRrSryZDEFAULT_STATE_ATTRrTrUrVrWrXrYrZr[r\r]r^Ú    frozensetZ
_never_setZ    _none_setÚsymbolZ_SET_DEFERRED_EXPIREDZ_DEFER_FOR_STATEZ_RAISE_FOR_STATEr`rarlrorqrurwÚ
attrgetterrr~r…r‰rŠrr‹Z    _inspectsrŽr–r™ržr rªr«Z dottedgetterr­r°r±r²r¶r¸rÂrÇrÉZDDLConstraintColumnRolerÊrÔrÕrÝràr9r9r9r:Ú<module>s                                          *ú[î #
 
 
 
 
 
       
ÿL 
ÿ
üJ    .