Coverage for sqlmodel / main.py: 95%
349 statements
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
« prev ^ index » next coverage.py v7.13.0, created at 2026-01-06 21:09 +0000
1from __future__ import annotations 1daefbghci
3import builtins 1daefbghci
4import ipaddress 1daefbghci
5import uuid 1daefbghci
6import weakref 1daefbghci
7from collections.abc import Mapping, Sequence, Set 1daefbghci
8from datetime import date, datetime, time, timedelta 1daefbghci
9from decimal import Decimal 1daefbghci
10from enum import Enum 1daefbghci
11from pathlib import Path 1daefbghci
12from typing import ( 1daefbghci
13 TYPE_CHECKING,
14 Any,
15 Callable,
16 ClassVar,
17 Optional,
18 TypeVar,
19 Union,
20 cast,
21 overload,
22)
24from pydantic import BaseModel, EmailStr 1daefbghci
25from pydantic.fields import FieldInfo as PydanticFieldInfo 1daefbghci
26from sqlalchemy import ( 1daefbghci
27 Boolean,
28 Column,
29 Date,
30 DateTime,
31 Float,
32 ForeignKey,
33 Integer,
34 Interval,
35 Numeric,
36 inspect,
37)
38from sqlalchemy import Enum as sa_Enum 1daefbghci
39from sqlalchemy.orm import ( 1daefbghci
40 Mapped,
41 RelationshipProperty,
42 declared_attr,
43 registry,
44 relationship,
45)
46from sqlalchemy.orm.attributes import set_attribute 1daefbghci
47from sqlalchemy.orm.decl_api import DeclarativeMeta 1daefbghci
48from sqlalchemy.orm.instrumentation import is_instrumented 1daefbghci
49from sqlalchemy.sql.schema import MetaData 1daefbghci
50from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid 1daefbghci
51from typing_extensions import Literal, TypeAlias, deprecated, get_origin 1daefbghci
53from ._compat import ( # type: ignore[attr-defined] 1daefbghci
54 PYDANTIC_MINOR_VERSION,
55 BaseConfig,
56 ModelMetaclass,
57 Representation,
58 SQLModelConfig,
59 Undefined,
60 UndefinedType,
61 finish_init,
62 get_annotations,
63 get_field_metadata,
64 get_model_fields,
65 get_relationship_to,
66 get_sa_type_from_field,
67 init_pydantic_private_attrs,
68 is_field_noneable,
69 is_table_model_class,
70 sqlmodel_init,
71 sqlmodel_validate,
72)
73from .sql.sqltypes import AutoString 1daefbghci
75if TYPE_CHECKING: 1daefbghci
76 from pydantic._internal._model_construction import ModelMetaclass as ModelMetaclass
77 from pydantic._internal._repr import Representation as Representation
78 from pydantic_core import PydanticUndefined as Undefined
79 from pydantic_core import PydanticUndefinedType as UndefinedType
81_T = TypeVar("_T") 1daefbghci
82NoArgAnyCallable = Callable[[], Any] 1daefbghci
83IncEx: TypeAlias = Union[ 1daefbghci
84 set[int],
85 set[str],
86 Mapping[int, Union["IncEx", bool]],
87 Mapping[str, Union["IncEx", bool]],
88]
89OnDeleteType = Literal["CASCADE", "SET NULL", "RESTRICT"] 1daefbghci
92def __dataclass_transform__( 1daefbghci
93 *,
94 eq_default: bool = True,
95 order_default: bool = False,
96 kw_only_default: bool = False,
97 field_descriptors: tuple[Union[type, Callable[..., Any]], ...] = (()),
98) -> Callable[[_T], _T]:
99 return lambda a: a 1daefbghci
102class FieldInfo(PydanticFieldInfo): # type: ignore[misc] 1daefbghci
103 # mypy - ignore that PydanticFieldInfo is @final
104 def __init__(self, default: Any = Undefined, **kwargs: Any) -> None: 1daefbghci
105 primary_key = kwargs.pop("primary_key", False) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
106 nullable = kwargs.pop("nullable", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
107 foreign_key = kwargs.pop("foreign_key", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
108 ondelete = kwargs.pop("ondelete", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
109 unique = kwargs.pop("unique", False) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
110 index = kwargs.pop("index", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
111 sa_type = kwargs.pop("sa_type", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
112 sa_column = kwargs.pop("sa_column", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
113 sa_column_args = kwargs.pop("sa_column_args", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
114 sa_column_kwargs = kwargs.pop("sa_column_kwargs", Undefined) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
115 if sa_column is not Undefined: 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
116 if sa_column_args is not Undefined: 2tb6enfefwf.lXf`d`eDcub7eofffxf/lYf{d{eEcvb8epfgfyf:lZf|d|eFcwb9eqfhfzf;l0f}d}eGcxb!erfifAf=l1f~d~eHcyb#esfjfBf?l2faeafIczb$etfkfCf@l3fbebfJcAb%euflfDf[l4fcecfKcBb'evfmfEf]l5fdedfLc
117 raise RuntimeError( 2.l/l:l;l=l?l@l[l]l
118 "Passing sa_column_args is not supported when "
119 "also passing a sa_column"
120 )
121 if sa_column_kwargs is not Undefined: 2tb6enfefwfXf`d`eDcub7eofffxfYf{d{eEcvb8epfgfyfZf|d|eFcwb9eqfhfzf0f}d}eGcxb!erfifAf1f~d~eHcyb#esfjfBf2faeafIczb$etfkfCf3fbebfJcAb%euflfDf4fcecfKcBb'evfmfEf5fdedfLc
122 raise RuntimeError( 2XfYfZf0f1f2f3f4f5f
123 "Passing sa_column_kwargs is not supported when "
124 "also passing a sa_column"
125 )
126 if primary_key is not Undefined: 2tb6enfefwf`d`eDcub7eofffxf{d{eEcvb8epfgfyf|d|eFcwb9eqfhfzf}d}eGcxb!erfifAf~d~eHcyb#esfjfBfaeafIczb$etfkfCfbebfJcAb%euflfDfcecfKcBb'evfmfEfdedfLc
127 raise RuntimeError( 2wfxfyfzfAfBfCfDfEf
128 "Passing primary_key is not supported when also passing a sa_column"
129 )
130 if nullable is not Undefined: 2tb6enfef`d`eDcub7eofff{d{eEcvb8epfgf|d|eFcwb9eqfhf}d}eGcxb!erfif~d~eHcyb#esfjfaeafIczb$etfkfbebfJcAb%euflfcecfKcBb'evfmfdedfLc
131 raise RuntimeError( 2nfofpfqfrfsftfufvf
132 "Passing nullable is not supported when also passing a sa_column"
133 )
134 if foreign_key is not Undefined: 2tb6eef`d`eDcub7eff{d{eEcvb8egf|d|eFcwb9ehf}d}eGcxb!eif~d~eHcyb#ejfaeafIczb$ekfbebfJcAb%elfcecfKcBb'emfdedfLc
135 raise RuntimeError( 2tbubvbwbxbybzbAbBb
136 "Passing foreign_key is not supported when also passing a sa_column"
137 )
138 if ondelete is not Undefined: 26eef`d`eDc7eff{d{eEc8egf|d|eFc9ehf}d}eGc!eif~d~eHc#ejfaeafIc$ekfbebfJc%elfcecfKc'emfdedfLc
139 raise RuntimeError( 2efffgfhfifjfkflfmf
140 "Passing ondelete is not supported when also passing a sa_column"
141 )
142 if unique is not Undefined: 26e`d`eDc7e{d{eEc8e|d|eFc9e}d}eGc!e~d~eHc#eaeafIc$ebebfJc%ececfKc'ededfLc
143 raise RuntimeError( 2`e{e|e}e~eafbfcfdf
144 "Passing unique is not supported when also passing a sa_column"
145 )
146 if index is not Undefined: 26e`dDc7e{dEc8e|dFc9e}dGc!e~dHc#eaeIc$ebeJc%eceKc'edeLc
147 raise RuntimeError( 26e7e8e9e!e#e$e%e'e
148 "Passing index is not supported when also passing a sa_column"
149 )
150 if sa_type is not Undefined: 2`dDc{dEc|dFc}dGc~dHcaeIcbeJcceKcdeLc
151 raise RuntimeError( 2`d{d|d}d~daebecede
152 "Passing sa_type is not supported when also passing a sa_column"
153 )
154 if ondelete is not Undefined: 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
155 if foreign_key is Undefined: 2d :ds a ;dt e =du f ?dv b @dw g [dx h ]dy c ^dz i _dA
156 raise RuntimeError("ondelete can only be used with foreign_key") 2:d;d=d?d@d[d]d^d_d
157 super().__init__(default=default, **kwargs) 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
158 self.primary_key = primary_key 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
159 self.nullable = nullable 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
160 self.foreign_key = foreign_key 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
161 self.ondelete = ondelete 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
162 self.unique = unique 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
163 self.index = index 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
164 self.sa_type = sa_type 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
165 self.sa_column = sa_column 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
166 self.sa_column_args = sa_column_args 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
167 self.sa_column_kwargs = sa_column_kwargs 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
170class RelationshipInfo(Representation): 1daefbghci
171 def __init__( 1daefbghci
172 self,
173 *,
174 back_populates: Optional[str] = None,
175 cascade_delete: Optional[bool] = False,
176 passive_deletes: Optional[Union[bool, Literal["all"]]] = False,
177 link_model: Optional[Any] = None,
178 sa_relationship: Optional[RelationshipProperty] = None, # type: ignore
179 sa_relationship_args: Optional[Sequence[Any]] = None,
180 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None,
181 ) -> None:
182 if sa_relationship is not None: 2d 'd5dj s a (d6dk t e )d7dl u f *d8dm v b +d9dn w g ,d!do x h -d#dp y c .d$dq z i /d%dr A
183 if sa_relationship_args is not None: 2'd5dj (d6dk )d7dl *d8dm +d9dn ,d!do -d#dp .d$dq /d%dr
184 raise RuntimeError( 2'd(d)d*d+d,d-d.d/d
185 "Passing sa_relationship_args is not supported when "
186 "also passing a sa_relationship"
187 )
188 if sa_relationship_kwargs is not None: 25dj 6dk 7dl 8dm 9dn !do #dp $dq %dr
189 raise RuntimeError( 25d6d7d8d9d!d#d$d%d
190 "Passing sa_relationship_kwargs is not supported when "
191 "also passing a sa_relationship"
192 )
193 self.back_populates = back_populates 1djsaktelufmvbnwgoxhpycqzirA
194 self.cascade_delete = cascade_delete 1djsaktelufmvbnwgoxhpycqzirA
195 self.passive_deletes = passive_deletes 1djsaktelufmvbnwgoxhpycqzirA
196 self.link_model = link_model 1djsaktelufmvbnwgoxhpycqzirA
197 self.sa_relationship = sa_relationship 1djsaktelufmvbnwgoxhpycqzirA
198 self.sa_relationship_args = sa_relationship_args 1djsaktelufmvbnwgoxhpycqzirA
199 self.sa_relationship_kwargs = sa_relationship_kwargs 1djsaktelufmvbnwgoxhpycqzirA
202# include sa_type, sa_column_args, sa_column_kwargs
203@overload 1daefbghci
204def Field( 1daefbghci
205 default: Any = Undefined, 1daefbghci
206 *,
207 default_factory: Optional[NoArgAnyCallable] = None, 1daefbghci
208 alias: Optional[str] = None, 1daefbghci
209 validation_alias: Optional[str] = None, 1daefbghci
210 serialization_alias: Optional[str] = None, 1daefbghci
211 title: Optional[str] = None, 1daefbghci
212 description: Optional[str] = None, 1daefbghci
213 exclude: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
214 include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
215 const: Optional[bool] = None, 1daefbghci
216 gt: Optional[float] = None, 1daefbghci
217 ge: Optional[float] = None, 1daefbghci
218 lt: Optional[float] = None, 1daefbghci
219 le: Optional[float] = None, 1daefbghci
220 multiple_of: Optional[float] = None, 1daefbghci
221 max_digits: Optional[int] = None, 1daefbghci
222 decimal_places: Optional[int] = None, 1daefbghci
223 min_items: Optional[int] = None, 1daefbghci
224 max_items: Optional[int] = None, 1daefbghci
225 unique_items: Optional[bool] = None, 1daefbghci
226 min_length: Optional[int] = None, 1daefbghci
227 max_length: Optional[int] = None, 1daefbghci
228 allow_mutation: bool = True, 1daefbghci
229 regex: Optional[str] = None, 1daefbghci
230 discriminator: Optional[str] = None, 1daefbghci
231 repr: bool = True, 1daefbghci
232 primary_key: Union[bool, UndefinedType] = Undefined, 1daefbghci
233 foreign_key: Any = Undefined, 1daefbghci
234 unique: Union[bool, UndefinedType] = Undefined, 1daefbghci
235 nullable: Union[bool, UndefinedType] = Undefined, 1daefbghci
236 index: Union[bool, UndefinedType] = Undefined, 1daefbghci
237 sa_type: Union[type[Any], UndefinedType] = Undefined, 1daefbghci
238 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, 1daefbghci
239 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, 1daefbghci
240 schema_extra: Optional[dict[str, Any]] = None, 1daefbghci
241) -> Any: ... 1abc
244# When foreign_key is str, include ondelete
245# include sa_type, sa_column_args, sa_column_kwargs
246@overload 1daefbghci
247def Field( 1daefbghci
248 default: Any = Undefined, 1daefbghci
249 *,
250 default_factory: Optional[NoArgAnyCallable] = None, 1daefbghci
251 alias: Optional[str] = None, 1daefbghci
252 validation_alias: Optional[str] = None, 1daefbghci
253 serialization_alias: Optional[str] = None, 1daefbghci
254 title: Optional[str] = None, 1daefbghci
255 description: Optional[str] = None, 1daefbghci
256 exclude: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
257 include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
258 const: Optional[bool] = None, 1daefbghci
259 gt: Optional[float] = None, 1daefbghci
260 ge: Optional[float] = None, 1daefbghci
261 lt: Optional[float] = None, 1daefbghci
262 le: Optional[float] = None, 1daefbghci
263 multiple_of: Optional[float] = None, 1daefbghci
264 max_digits: Optional[int] = None, 1daefbghci
265 decimal_places: Optional[int] = None, 1daefbghci
266 min_items: Optional[int] = None, 1daefbghci
267 max_items: Optional[int] = None, 1daefbghci
268 unique_items: Optional[bool] = None, 1daefbghci
269 min_length: Optional[int] = None, 1daefbghci
270 max_length: Optional[int] = None, 1daefbghci
271 allow_mutation: bool = True, 1daefbghci
272 regex: Optional[str] = None, 1daefbghci
273 discriminator: Optional[str] = None, 1daefbghci
274 repr: bool = True, 1daefbghci
275 primary_key: Union[bool, UndefinedType] = Undefined, 1daefbghci
276 foreign_key: str, 1abc
277 ondelete: Union[OnDeleteType, UndefinedType] = Undefined, 1daefbghci
278 unique: Union[bool, UndefinedType] = Undefined, 1daefbghci
279 nullable: Union[bool, UndefinedType] = Undefined, 1daefbghci
280 index: Union[bool, UndefinedType] = Undefined, 1daefbghci
281 sa_type: Union[type[Any], UndefinedType] = Undefined, 1daefbghci
282 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined, 1daefbghci
283 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined, 1daefbghci
284 schema_extra: Optional[dict[str, Any]] = None, 1daefbghci
285) -> Any: ... 1abc
288# Include sa_column, don't include
289# primary_key
290# foreign_key
291# ondelete
292# unique
293# nullable
294# index
295# sa_type
296# sa_column_args
297# sa_column_kwargs
298@overload 1daefbghci
299def Field( 1daefbghci
300 default: Any = Undefined, 1daefbghci
301 *,
302 default_factory: Optional[NoArgAnyCallable] = None, 1daefbghci
303 alias: Optional[str] = None, 1daefbghci
304 validation_alias: Optional[str] = None, 1daefbghci
305 serialization_alias: Optional[str] = None, 1daefbghci
306 title: Optional[str] = None, 1daefbghci
307 description: Optional[str] = None, 1daefbghci
308 exclude: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
309 include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None, 1daefbghci
310 const: Optional[bool] = None, 1daefbghci
311 gt: Optional[float] = None, 1daefbghci
312 ge: Optional[float] = None, 1daefbghci
313 lt: Optional[float] = None, 1daefbghci
314 le: Optional[float] = None, 1daefbghci
315 multiple_of: Optional[float] = None, 1daefbghci
316 max_digits: Optional[int] = None, 1daefbghci
317 decimal_places: Optional[int] = None, 1daefbghci
318 min_items: Optional[int] = None, 1daefbghci
319 max_items: Optional[int] = None, 1daefbghci
320 unique_items: Optional[bool] = None, 1daefbghci
321 min_length: Optional[int] = None, 1daefbghci
322 max_length: Optional[int] = None, 1daefbghci
323 allow_mutation: bool = True, 1daefbghci
324 regex: Optional[str] = None, 1daefbghci
325 discriminator: Optional[str] = None, 1daefbghci
326 repr: bool = True, 1daefbghci
327 sa_column: Union[Column[Any], UndefinedType] = Undefined, 1daefbghci
328 schema_extra: Optional[dict[str, Any]] = None, 1daefbghci
329) -> Any: ... 1abc
332def Field( 1daefbghci
333 default: Any = Undefined,
334 *,
335 default_factory: Optional[NoArgAnyCallable] = None,
336 alias: Optional[str] = None,
337 validation_alias: Optional[str] = None,
338 serialization_alias: Optional[str] = None,
339 title: Optional[str] = None,
340 description: Optional[str] = None,
341 exclude: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
342 include: Union[Set[Union[int, str]], Mapping[Union[int, str], Any], Any] = None,
343 const: Optional[bool] = None,
344 gt: Optional[float] = None,
345 ge: Optional[float] = None,
346 lt: Optional[float] = None,
347 le: Optional[float] = None,
348 multiple_of: Optional[float] = None,
349 max_digits: Optional[int] = None,
350 decimal_places: Optional[int] = None,
351 min_items: Optional[int] = None,
352 max_items: Optional[int] = None,
353 unique_items: Optional[bool] = None,
354 min_length: Optional[int] = None,
355 max_length: Optional[int] = None,
356 allow_mutation: bool = True,
357 regex: Optional[str] = None,
358 discriminator: Optional[str] = None,
359 repr: bool = True,
360 primary_key: Union[bool, UndefinedType] = Undefined,
361 foreign_key: Any = Undefined,
362 ondelete: Union[OnDeleteType, UndefinedType] = Undefined,
363 unique: Union[bool, UndefinedType] = Undefined,
364 nullable: Union[bool, UndefinedType] = Undefined,
365 index: Union[bool, UndefinedType] = Undefined,
366 sa_type: Union[type[Any], UndefinedType] = Undefined,
367 sa_column: Union[Column, UndefinedType] = Undefined, # type: ignore
368 sa_column_args: Union[Sequence[Any], UndefinedType] = Undefined,
369 sa_column_kwargs: Union[Mapping[str, Any], UndefinedType] = Undefined,
370 schema_extra: Optional[dict[str, Any]] = None,
371) -> Any:
372 current_schema_extra = schema_extra or {} 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
373 # Extract possible alias settings from schema_extra so we can control precedence
374 schema_validation_alias = current_schema_extra.pop("validation_alias", None) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
375 schema_serialization_alias = current_schema_extra.pop("serialization_alias", None) 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
376 field_info_kwargs = { 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
377 "alias": alias,
378 "title": title,
379 "description": description,
380 "exclude": exclude,
381 "include": include,
382 "const": const,
383 "gt": gt,
384 "ge": ge,
385 "lt": lt,
386 "le": le,
387 "multiple_of": multiple_of,
388 "max_digits": max_digits,
389 "decimal_places": decimal_places,
390 "min_items": min_items,
391 "max_items": max_items,
392 "unique_items": unique_items,
393 "min_length": min_length,
394 "max_length": max_length,
395 "allow_mutation": allow_mutation,
396 "regex": regex,
397 "discriminator": discriminator,
398 "repr": repr,
399 "primary_key": primary_key,
400 "foreign_key": foreign_key,
401 "ondelete": ondelete,
402 "unique": unique,
403 "nullable": nullable,
404 "index": index,
405 "sa_type": sa_type,
406 "sa_column": sa_column,
407 "sa_column_args": sa_column_args,
408 "sa_column_kwargs": sa_column_kwargs,
409 **current_schema_extra,
410 }
412 # explicit params > schema_extra > alias propagation
413 field_info_kwargs["validation_alias"] = ( 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
414 validation_alias or schema_validation_alias or alias
415 )
416 field_info_kwargs["serialization_alias"] = ( 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
417 serialization_alias or schema_serialization_alias or alias
418 )
420 field_info = FieldInfo( 2d McNc4c/c5c:cK CbDb3b$btb6enfefwf.lXf`d`eDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bub7eofffxf/lYf{d{eEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvb8epfgfyf:lZf|d|eFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwb9eqfhfzf;l0f}d}eGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxb!erfifAf=l1f~d~eHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/byb#esfjfBf?l2faeafIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzb$etfkfCf@l3fbebfJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAb%euflfDf[l4fcecfKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBb'evfmfEf]l5fdedfLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
421 default,
422 default_factory=default_factory,
423 **field_info_kwargs,
424 )
425 return field_info 2d McNc4c/c5c:cK CbDb3b$btbDc'd5dmd2 ndj 3 4 5 ^bL Ub%b:ds odpddd6 7 _b`bucB a OcPc6c;c7c=cM EbFb4b'bubEc(d6dqd8 rdk 9 ! # {bN Vb(b;dt sdtded$ % |b}bvcC e QcRc8c?c9c@cO GbHb5b)bvbFc)d7dud' vdl ( ) * ~bP Wb*b=du wdxdfd+ , acbcwcD f ScTc!c[c#c]cQ IbJb6b+bwbGc*d8dyd- zdm . / : ccR Xb,b?dv AdBdgd; = dcecxcE b UcVc$c^c%c_cS KbLb7b-bxbHc+d9dCd? Ddn @ [ ] fcT Yb.b@dw EdFdhd^ _ gchcycF g WcXc'c`c(c{cU MbNb8b/bybIc,d!dGd` Hdo { | } icV Zb:b[dx IdJdid~ abjckczcG h YcZc)c|c*c}cW ObPb9b;bzbJc-d#dKdbbLdp cbdbeblcX 0b=b]dy MdNdjdfbgbmcncAcH c 0c1c+c~c,cadY QbRb!b?bAbKc.d$dOdhbPdq ibjbkbocZ 1b@b^dz QdRdkdlbmbpcqcBcI i 2c3c-cbd.ccd0 SbTb#b[bBbLc/d%dSdnbTdr obpbqbrc1 2b]b_dA UdVdldrbsbsctcCcJ
428@overload 1daefbghci
429def Relationship( 1daefbghci
430 *,
431 back_populates: Optional[str] = None, 1daefbghci
432 cascade_delete: Optional[bool] = False, 1daefbghci
433 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 1daefbghci
434 link_model: Optional[Any] = None, 1daefbghci
435 sa_relationship_args: Optional[Sequence[Any]] = None, 1daefbghci
436 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None, 1daefbghci
437) -> Any: ... 1abc
440@overload 1daefbghci
441def Relationship( 1daefbghci
442 *,
443 back_populates: Optional[str] = None, 1daefbghci
444 cascade_delete: Optional[bool] = False, 1daefbghci
445 passive_deletes: Optional[Union[bool, Literal["all"]]] = False, 1daefbghci
446 link_model: Optional[Any] = None, 1daefbghci
447 sa_relationship: Optional[RelationshipProperty[Any]] = None, 1daefbghci
448) -> Any: ... 1abc
451def Relationship( 1daefbghci
452 *,
453 back_populates: Optional[str] = None,
454 cascade_delete: Optional[bool] = False,
455 passive_deletes: Optional[Union[bool, Literal["all"]]] = False,
456 link_model: Optional[Any] = None,
457 sa_relationship: Optional[RelationshipProperty[Any]] = None,
458 sa_relationship_args: Optional[Sequence[Any]] = None,
459 sa_relationship_kwargs: Optional[Mapping[str, Any]] = None,
460) -> Any:
461 relationship_info = RelationshipInfo( 2d 'd5dj s a (d6dk t e )d7dl u f *d8dm v b +d9dn w g ,d!do x h -d#dp y c .d$dq z i /d%dr A
462 back_populates=back_populates,
463 cascade_delete=cascade_delete,
464 passive_deletes=passive_deletes,
465 link_model=link_model,
466 sa_relationship=sa_relationship,
467 sa_relationship_args=sa_relationship_args,
468 sa_relationship_kwargs=sa_relationship_kwargs,
469 )
470 return relationship_info 1djsaktelufmvbnwgoxhpycqzirA
473@__dataclass_transform__(kw_only_default=True, field_descriptors=(Field, FieldInfo)) 1daefbghci
474class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta): 1daefbghci
475 __sqlmodel_relationships__: dict[str, RelationshipInfo] 1daefbghci
476 model_config: SQLModelConfig 1daefbghci
477 model_fields: ClassVar[dict[str, FieldInfo]] 1daefbghci
479 # Replicate SQLAlchemy
480 def __setattr__(cls, name: str, value: Any) -> None: 1daefbghci
481 if is_table_model_class(cls): 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
482 DeclarativeMeta.__setattr__(cls, name, value) 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
483 else:
484 super().__setattr__(name, value) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
486 def __delattr__(cls, name: str) -> None: 1daefbghci
487 if is_table_model_class(cls): 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
488 DeclarativeMeta.__delattr__(cls, name) 1daefbghci
489 else:
490 super().__delattr__(name) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
492 # From Pydantic
493 def __new__( 1daefbghci
494 cls,
495 name: str,
496 bases: tuple[type[Any], ...],
497 class_dict: dict[str, Any],
498 **kwargs: Any,
499 ) -> Any:
500 relationships: dict[str, RelationshipInfo] = {} 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
501 dict_for_pydantic = {} 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
502 original_annotations = get_annotations(class_dict) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
503 pydantic_annotations = {} 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
504 relationship_annotations = {} 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
505 for k, v in class_dict.items(): 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
506 if isinstance(v, RelationshipInfo): 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
507 relationships[k] = v 1djsaktelufmvbnwgoxhpycqzirA
508 else:
509 dict_for_pydantic[k] = v 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
510 for k, v in original_annotations.items(): 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
511 if k in relationships: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
512 relationship_annotations[k] = v 1djsaktelufmvbnwgoxhpycqzirA
513 else:
514 pydantic_annotations[k] = v 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
515 dict_used = { 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
516 **dict_for_pydantic,
517 "__weakref__": None,
518 "__sqlmodel_relationships__": relationships,
519 "__annotations__": pydantic_annotations,
520 }
521 # Duplicate logic from Pydantic to filter config kwargs because if they are
522 # passed directly including the registry Pydantic will pass them over to the
523 # superclass causing an error
524 allowed_config_kwargs: set[str] = { 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
525 key
526 for key in dir(BaseConfig)
527 if not (
528 key.startswith("__") and key.endswith("__")
529 ) # skip dunder methods and attributes
530 }
531 config_kwargs = { 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
532 key: kwargs[key] for key in kwargs.keys() & allowed_config_kwargs
533 }
534 new_cls = super().__new__(cls, name, bases, dict_used, **config_kwargs) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
535 new_cls.__annotations__ = { 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
536 **relationship_annotations,
537 **pydantic_annotations,
538 **new_cls.__annotations__,
539 }
541 def get_config(name: str) -> Any: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
542 config_class_value = new_cls.model_config.get(name, Undefined) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
543 if config_class_value is not Undefined: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
544 return config_class_value
545 kwarg_value = kwargs.get(name, Undefined) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
546 if kwarg_value is not Undefined: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
547 return kwarg_value 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
548 return Undefined 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
550 config_table = get_config("table") 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
551 if config_table is True: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 ^bL Ub%bs odpddd6 7 _b`bucB Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # {bN Vb(bt sdtded$ % |b}bvcC Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * ~bP Wb*bu wdxdfd+ , acbcwcD Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : ccR Xb,bv AdBdgd; = dcecxcE Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] fcT Yb.bw EdFdhd^ _ gchcycF 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } icV Zb:bx IdJdid~ abjckczcG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbeblcX 0b=by MdNdjdfbgbmcncAcH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbocZ 1b@bz QdRdkdlbmbpcqcBcI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqbrc1 2b]bA UdVdldrbsbsctcCcJ 4d
552 # If it was passed by kwargs, ensure it's also set in config
553 new_cls.model_config["table"] = config_table 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
554 for k, v in get_model_fields(new_cls).items(): 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
555 col = get_column_from_field(v) 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
556 setattr(new_cls, k, col) 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
557 # Set a config flag to tell FastAPI that this should be read with a field
558 # in orm_mode instead of preemptively converting it to a dict.
559 # This could be done by reading new_cls.model_config['table'] in FastAPI, but
560 # that's very specific about SQLModel, so let's have another config that
561 # other future tools based on Pydantic can use.
562 new_cls.model_config["read_from_attributes"] = True 2d K CbDb3b$btbDc2 j 3 4 5 L Ub%bs 6 7 B a M EbFb4b'bubEc8 k 9 ! # N Vb(bt $ % C e O GbHb5b)bvbFc' l ( ) * P Wb*bu + , D f Q IbJb6b+bwbGc- m . / : R Xb,bv ; = E b S KbLb7b-bxbHc? n @ [ ] T Yb.bw ^ _ F g U MbNb8b/bybIc` o { | } V Zb:bx ~ abG h W ObPb9b;bzbJcbbp cbdbebX 0b=by fbgbH c Y QbRb!b?bAbKchbq ibjbkbZ 1b@bz lbmbI i 0 SbTb#b[bBbLcnbr obpbqb1 2b]bA rbsbJ
563 # For compatibility with older versions
564 # TODO: remove this in the future
565 new_cls.model_config["read_with_orm_mode"] = True 2d K CbDb3b$btbDc2 j 3 4 5 L Ub%bs 6 7 B a M EbFb4b'bubEc8 k 9 ! # N Vb(bt $ % C e O GbHb5b)bvbFc' l ( ) * P Wb*bu + , D f Q IbJb6b+bwbGc- m . / : R Xb,bv ; = E b S KbLb7b-bxbHc? n @ [ ] T Yb.bw ^ _ F g U MbNb8b/bybIc` o { | } V Zb:bx ~ abG h W ObPb9b;bzbJcbbp cbdbebX 0b=by fbgbH c Y QbRb!b?bAbKchbq ibjbkbZ 1b@bz lbmbI i 0 SbTb#b[bBbLcnbr obpbqb1 2b]bA rbsbJ
567 config_registry = get_config("registry") 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
568 if config_registry is not Undefined: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
569 config_registry = cast(registry, config_registry) 1daefbghci
570 # If it was passed by kwargs, ensure it's also set in config
571 new_cls.model_config["registry"] = config_table 1daefbghci
572 setattr(new_cls, "_sa_registry", config_registry) # noqa: B010 1daefbghci
573 setattr(new_cls, "metadata", config_registry.metadata) # noqa: B010 1daefbghci
574 setattr(new_cls, "__abstract__", True) # noqa: B010 1daefbghci
575 return new_cls 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
577 # Override SQLAlchemy, allow both SQLAlchemy and plain Pydantic models
578 def __init__( 1daefbghci
579 cls, classname: str, bases: tuple[type, ...], dict_: dict[str, Any], **kw: Any
580 ) -> None:
581 # Only one of the base classes (or the current one) should be a table model
582 # this allows FastAPI cloning a SQLModel for the response_model without
583 # trying to create a new SQLAlchemy, for a new table, with the same name, that
584 # triggers an error
585 base_is_table = any(is_table_model_class(base) for base in bases) 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
586 if is_table_model_class(cls) and not base_is_table: 2d McNc4c/c5c:cK CbDb3b$btbDcmd2 ndj 3 4 5 L Ub%bs odpddd6 7 B Wda OcPc6c;c7c=cM EbFb4b'bubEcqd8 rdk 9 ! # N Vb(bt sdtded$ % C Xde QcRc8c?c9c@cO GbHb5b)bvbFcud' vdl ( ) * P Wb*bu wdxdfd+ , D Ydf ScTc!c[c#c]cQ IbJb6b+bwbGcyd- zdm . / : R Xb,bv AdBdgd; = E Zdb UcVc$c^c%c_cS KbLb7b-bxbHcCd? Ddn @ [ ] T Yb.bw EdFdhd^ _ F 0dg WcXc'c`c(c{cU MbNb8b/bybIcGd` Hdo { | } V Zb:bx IdJdid~ abG 1dh YcZc)c|c*c}cW ObPb9b;bzbJcKdbbLdp cbdbebX 0b=by MdNdjdfbgbH 2dc 0c1c+c~c,cadY QbRb!b?bAbKcOdhbPdq ibjbkbZ 1b@bz QdRdkdlbmbI 3di 2c3c-cbd.ccd0 SbTb#b[bBbLcSdnbTdr obpbqb1 2b]bA UdVdldrbsbJ 4d
587 for rel_name, rel_info in cls.__sqlmodel_relationships__.items(): 2d K CbDb3b$btbDc2 j 3 4 5 L Ub%bs 6 7 B a M EbFb4b'bubEc8 k 9 ! # N Vb(bt $ % C e O GbHb5b)bvbFc' l ( ) * P Wb*bu + , D f Q IbJb6b+bwbGc- m . / : R Xb,bv ; = E b S KbLb7b-bxbHc? n @ [ ] T Yb.bw ^ _ F g U MbNb8b/bybIc` o { | } V Zb:bx ~ abG h W ObPb9b;bzbJcbbp cbdbebX 0b=by fbgbH c Y QbRb!b?bAbKchbq ibjbkbZ 1b@bz lbmbI i 0 SbTb#b[bBbLcnbr obpbqb1 2b]bA rbsbJ
588 if rel_info.sa_relationship: 1djsaktelufmvbnwgoxhpycqzirA
589 # There's a SQLAlchemy relationship declared, that takes precedence
590 # over anything else, use that and continue with the next attribute
591 setattr(cls, rel_name, rel_info.sa_relationship) # Fix #315 1jklmnopqr
592 continue 1jklmnopqr
593 raw_ann = cls.__annotations__[rel_name] 1dsateufvbwgxhycziA
594 origin: Any = get_origin(raw_ann) 1dsateufvbwgxhycziA
595 if origin is Mapped: 1dsateufvbwgxhycziA
596 ann = raw_ann.__args__[0]
597 else:
598 ann = raw_ann 1dsateufvbwgxhycziA
599 # Plain forward references, for models not yet defined, are not
600 # handled well by SQLAlchemy without Mapped, so, wrap the
601 # annotations in Mapped here
602 cls.__annotations__[rel_name] = Mapped[ann] # type: ignore[valid-type] 1dsateufvbwgxhycziA
603 relationship_to = get_relationship_to( 1dsateufvbwgxhycziA
604 name=rel_name, rel_info=rel_info, annotation=ann
605 )
606 rel_kwargs: dict[str, Any] = {} 1dsateufvbwgxhycziA
607 if rel_info.back_populates: 1dsateufvbwgxhycziA
608 rel_kwargs["back_populates"] = rel_info.back_populates 1dsateufvbwgxhycziA
609 if rel_info.cascade_delete: 1dsateufvbwgxhycziA
610 rel_kwargs["cascade"] = "all, delete-orphan" 1daefbghci
611 if rel_info.passive_deletes: 1dsateufvbwgxhycziA
612 rel_kwargs["passive_deletes"] = rel_info.passive_deletes 1dsateufvbwgxhycziA
613 if rel_info.link_model: 1dsateufvbwgxhycziA
614 ins = inspect(rel_info.link_model) 1daefbghci
615 local_table = getattr(ins, "local_table") # noqa: B009 1daefbghci
616 if local_table is None: 1daefbghci
617 raise RuntimeError(
618 "Couldn't find the secondary table for "
619 f"model {rel_info.link_model}"
620 )
621 rel_kwargs["secondary"] = local_table 1daefbghci
622 rel_args: list[Any] = [] 1dsateufvbwgxhycziA
623 if rel_info.sa_relationship_args: 1dsateufvbwgxhycziA
624 rel_args.extend(rel_info.sa_relationship_args)
625 if rel_info.sa_relationship_kwargs: 1dsateufvbwgxhycziA
626 rel_kwargs.update(rel_info.sa_relationship_kwargs)
627 rel_value = relationship(relationship_to, *rel_args, **rel_kwargs) 1dsateufvbwgxhycziA
628 setattr(cls, rel_name, rel_value) # Fix #315 1dsateufvbwgxhycziA
629 # SQLAlchemy no longer uses dict_
630 # Ref: https://github.com/sqlalchemy/sqlalchemy/commit/428ea01f00a9cc7f85e435018565eb6da7af1b77
631 # Tag: 1.4.36
632 DeclarativeMeta.__init__(cls, classname, bases, dict_, **kw) 2d K CbDb3b$btbDc2 j 3 4 5 L Ub%bs 6 7 B a M EbFb4b'bubEc8 k 9 ! # N Vb(bt $ % C e O GbHb5b)bvbFc' l ( ) * P Wb*bu + , D f Q IbJb6b+bwbGc- m . / : R Xb,bv ; = E b S KbLb7b-bxbHc? n @ [ ] T Yb.bw ^ _ F g U MbNb8b/bybIc` o { | } V Zb:bx ~ abG h W ObPb9b;bzbJcbbp cbdbebX 0b=by fbgbH c Y QbRb!b?bAbKchbq ibjbkbZ 1b@bz lbmbI i 0 SbTb#b[bBbLcnbr obpbqb1 2b]bA rbsbJ
633 else:
634 ModelMetaclass.__init__(cls, classname, bases, dict_, **kw) 2d McNc4c/c5c:cCbDbmdndodpdddB Wda OcPc6c;c7c=cEbFbqdrdsdtdedC Xde QcRc8c?c9c@cGbHbudvdwdxdfdD Ydf ScTc!c[c#c]cIbJbydzdAdBdgdE Zdb UcVc$c^c%c_cKbLbCdDdEdFdhdF 0dg WcXc'c`c(c{cMbNbGdHdIdJdidG 1dh YcZc)c|c*c}cObPbKdLdMdNdjdH 2dc 0c1c+c~c,cadQbRbOdPdQdRdkdI 3di 2c3c-cbd.ccdSbTbSdTdUdVdldJ 4d
637def get_sqlalchemy_type(field: Any) -> Any: 1daefbghci
638 field_info = field 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
639 sa_type = getattr(field_info, "sa_type", Undefined) # noqa: B009 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
640 if sa_type is not Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
641 return sa_type
643 type_ = get_sa_type_from_field(field) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
644 metadata = get_field_metadata(field) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
646 # Check enums first as an enum can also be a str, needed by Pydantic/FastAPI
647 if issubclass(type_, Enum): 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
648 return sa_Enum(type_) 2d CbDba EbFbe GbHbf IbJbb KbLbg MbNbh ObPbc QbRbi SbTb
649 if issubclass( 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
650 type_,
651 (
652 str,
653 ipaddress.IPv4Address,
654 ipaddress.IPv4Network,
655 ipaddress.IPv6Address,
656 ipaddress.IPv6Network,
657 Path,
658 EmailStr,
659 ),
660 ):
661 max_length = getattr(metadata, "max_length", None) 2d 3btb2 j 3 4 5 L Ubs 6 7 B a 4bub8 k 9 ! # N Vbt $ % C e 5bvb' l ( ) * P Wbu + , D f 6bwb- m . / : R Xbv ; = E b 7bxb? n @ [ ] T Ybw ^ _ F g 8byb` o { | } V Zbx ~ abG h 9bzbbbp cbdbebX 0by fbgbH c !bAbhbq ibjbkbZ 1bz lbmbI i #bBbnbr obpbqb1 2bA rbsbJ
662 if max_length: 2d 3btb2 j 3 4 5 L Ubs 6 7 B a 4bub8 k 9 ! # N Vbt $ % C e 5bvb' l ( ) * P Wbu + , D f 6bwb- m . / : R Xbv ; = E b 7bxb? n @ [ ] T Ybw ^ _ F g 8byb` o { | } V Zbx ~ abG h 9bzbbbp cbdbebX 0by fbgbH c !bAbhbq ibjbkbZ 1bz lbmbI i #bBbnbr obpbqb1 2bA rbsbJ
663 return AutoString(length=max_length)
664 return AutoString 2d 3btb2 j 3 4 5 L Ubs 6 7 B a 4bub8 k 9 ! # N Vbt $ % C e 5bvb' l ( ) * P Wbu + , D f 6bwb- m . / : R Xbv ; = E b 7bxb? n @ [ ] T Ybw ^ _ F g 8byb` o { | } V Zbx ~ abG h 9bzbbbp cbdbebX 0by fbgbH c !bAbhbq ibjbkbZ 1bz lbmbI i #bBbnbr obpbqb1 2bA rbsbJ
665 if issubclass(type_, float): 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
666 return Float
667 if issubclass(type_, bool): 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
668 return Boolean 1daefbghci
669 if issubclass(type_, int): 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
670 return Integer 2d 3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a 4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e 5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f 6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b 7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g 8b/byb` o { | } icV Zb:bx ~ abjckczcG h 9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c !b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i #b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
671 if issubclass(type_, datetime): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
672 return DateTime
673 if issubclass(type_, date): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
674 return Date
675 if issubclass(type_, timedelta): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
676 return Interval
677 if issubclass(type_, time): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
678 return Time
679 if issubclass(type_, bytes): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
680 return LargeBinary
681 if issubclass(type_, Decimal): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
682 return Numeric( 1daefbghci
683 precision=getattr(metadata, "max_digits", None),
684 scale=getattr(metadata, "decimal_places", None),
685 )
686 if issubclass(type_, uuid.UUID): 2d K CbDb^b_b`ba M EbFb{b|b}be O GbHb~bacbcf Q IbJbccdcecb S KbLbfcgchcg U MbNbicjckch W ObPblcmcncc Y QbRbocpcqci 0 SbTbrcsctc
687 return Uuid 2d K CbDba M EbFbe O GbHbf Q IbJbb S KbLbg U MbNbh W ObPbc Y QbRbi 0 SbTb
688 raise ValueError(f"{type_} has no matching SQLAlchemy type") 2^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctc
691def get_column_from_field(field: Any) -> Column: # type: ignore 1daefbghci
692 field_info = field 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
693 sa_column = getattr(field_info, "sa_column", Undefined) 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
694 if isinstance(sa_column, Column): 2d K CbDb3b$btbDc2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bubEc8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvbFc' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwbGc- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxbHc? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/bybIc` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbJcbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbKchbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbLcnbr obpbqbrc1 2b]bA rbsbsctcCcJ
695 return sa_column 2DcEcFcGcHcIcJcKcLc
696 sa_type = get_sqlalchemy_type(field) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
697 primary_key = getattr(field_info, "primary_key", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
698 if primary_key is Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
699 primary_key = False 2d CbDb3b$btb2 j 3 4 5 L Ubs 6 7 B a EbFb4b'bub8 k 9 ! # N Vbt $ % C e GbHb5b)bvb' l ( ) * P Wbu + , D f IbJb6b+bwb- m . / : R Xbv ; = E b KbLb7b-bxb? n @ [ ] T Ybw ^ _ F g MbNb8b/byb` o { | } V Zbx ~ abG h ObPb9b;bzbbbp cbdbebX 0by fbgbH c QbRb!b?bAbhbq ibjbkbZ 1bz lbmbI i SbTb#b[bBbnbr obpbqb1 2bA rbsbJ
700 index = getattr(field_info, "index", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
701 if index is Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
702 index = False 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
703 nullable = not primary_key and is_field_noneable(field) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
704 # Override derived nullability if the nullable property is set explicitly
705 # on the field
706 field_nullable = getattr(field_info, "nullable", Undefined) # noqa: B009 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
707 if field_nullable is not Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
708 assert not isinstance(field_nullable, UndefinedType) 2L Ub%bN Vb(bP Wb*bR Xb,bT Yb.bV Zb:bX 0b=bZ 1b@b1 2b]b
709 nullable = field_nullable 2L Ub%bN Vb(bP Wb*bR Xb,bT Yb.bV Zb:bX 0b=bZ 1b@b1 2b]b
710 args = [] 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
711 foreign_key = getattr(field_info, "foreign_key", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
712 if foreign_key is Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
713 foreign_key = None 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
714 unique = getattr(field_info, "unique", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
715 if unique is Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
716 unique = False 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
717 if foreign_key: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
718 if field_info.ondelete == "SET NULL" and not nullable: 1djsaktelufmvbnwgoxhpycqzirA
719 raise RuntimeError('ondelete="SET NULL" requires nullable=True') 1stuvwxyzA
720 assert isinstance(foreign_key, str) 1djakelfmbngohpcqir
721 ondelete = getattr(field_info, "ondelete", Undefined) 1djakelfmbngohpcqir
722 if ondelete is Undefined: 1djakelfmbngohpcqir
723 ondelete = None 1djakelfmbngohpcqir
724 assert isinstance(ondelete, (str, type(None))) # for typing 1djakelfmbngohpcqir
725 args.append(ForeignKey(foreign_key, ondelete=ondelete)) 1djakelfmbngohpcqir
726 kwargs = { 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
727 "primary_key": primary_key,
728 "nullable": nullable,
729 "index": index,
730 "unique": unique,
731 }
732 sa_default = Undefined 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
733 if field_info.default_factory: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
734 sa_default = field_info.default_factory 1dKaMeOfQbSgUhWcYi0
735 elif field_info.default is not Undefined: 2d CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
736 sa_default = field_info.default 2d 3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a 4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e 5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f 6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b 7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g 8b/byb` o { | } icV Zb:bx ~ abjckczcG h 9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c !b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i #b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
737 if sa_default is not Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
738 kwargs["default"] = sa_default 2d K 3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M 4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O 5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q 6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S 7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U 8b/byb` o { | } icV Zb:bx ~ abjckczcG h W 9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y !b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 #b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
739 sa_column_args = getattr(field_info, "sa_column_args", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
740 if sa_column_args is not Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
741 args.extend(list(cast(Sequence[Any], sa_column_args))) 23b4b5b6b7b8b9b!b#b
742 sa_column_kwargs = getattr(field_info, "sa_column_kwargs", Undefined) 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
743 if sa_column_kwargs is not Undefined: 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
744 kwargs.update(cast(dict[Any, Any], sa_column_kwargs)) 2$b'b)b+b-b/b;b?b[b
745 return Column(sa_type, *args, **kwargs) # type: ignore 2d K CbDb3b$btb2 j 3 4 5 ^bL Ub%bs 6 7 _b`bucB a M EbFb4b'bub8 k 9 ! # {bN Vb(bt $ % |b}bvcC e O GbHb5b)bvb' l ( ) * ~bP Wb*bu + , acbcwcD f Q IbJb6b+bwb- m . / : ccR Xb,bv ; = dcecxcE b S KbLb7b-bxb? n @ [ ] fcT Yb.bw ^ _ gchcycF g U MbNb8b/byb` o { | } icV Zb:bx ~ abjckczcG h W ObPb9b;bzbbbp cbdbeblcX 0b=by fbgbmcncAcH c Y QbRb!b?bAbhbq ibjbkbocZ 1b@bz lbmbpcqcBcI i 0 SbTb#b[bBbnbr obpbqbrc1 2b]bA rbsbsctcCcJ
748class_registry = weakref.WeakValueDictionary() # type: ignore 1daefbghci
750default_registry = registry() 1daefbghci
752_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 1daefbghci
755class SQLModel(BaseModel, metaclass=SQLModelMetaclass, registry=default_registry): 1daefbghci
756 # SQLAlchemy needs to set weakref(s), Pydantic will set the other slots values
757 __slots__ = ("__weakref__",) 1daefbghci
758 __tablename__: ClassVar[Union[str, Callable[..., str]]] 1daefbghci
759 __sqlmodel_relationships__: ClassVar[builtins.dict[str, RelationshipProperty[Any]]] 1daefbghci
760 __name__: ClassVar[str] 1daefbghci
761 metadata: ClassVar[MetaData] 1daefbghci
762 __allow_unmapped__ = True # https://docs.sqlalchemy.org/en/20/changelog/migration_20.html#migration-20-step-six 1daefbghci
763 model_config = SQLModelConfig(from_attributes=True) 1daefbghci
765 def __new__(cls, *args: Any, **kwargs: Any) -> Any: 1daefbghci
766 new_object = super().__new__(cls) 2fqVmgqhq8o9o!o(eWmXmYmZm0m1miq2mjqkq#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc4c/clqmqnqoqpqcmdmqq5c:cemK ^l;p{pmd2 ndj 3 4 5 L odpddd6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wdrq*msqtq-o.o/o*e+m,m-m.m/m:muq;mvqwq:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc6c;cxqyqzqAqBqhmimCq7c=cjmM _l=p|pqd8 rdk 9 ! # N sdtded$ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC XdDqcnEqFq`o{o|o,ednenfngnhninGqjnHqIq}o~oap-eknlnmnnnonpnchdhehQcRc8c?cJqKqLqMqNqmmnmOq9c@comO `l?p}pud' vdl ( ) * P wdxdfd+ , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD YdPqynQqRqhpipjp.eznAnBnCnDnEn#h$h%hScTc!c[cSqTqUqVqWqrmsmXq#c]ctmQ {l@p~pyd- zdm . / : R AdBdgd; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdYqNnZq0qqprpsp/eOnPnQnRnSnTn1qUn2q3qtpupvp:eVnWnXnYnZn0nJiKiLiUcVc$c^c4q5q6q7q8qwmxm9q%c_cymS |l[paqCd? Ddn @ [ ] T EdFdhd^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d!q9n#q$qCpDpEp;e!n#n$n%n'n(n%q)n'q(qFpGpHp=e*n+n,n-n.n/nhjijjjWcXc'c`c)q*q+q,q-qBmCm.q(c{cDmU }l]pbqGd` Hdo { | } V IdJdid~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d/q_n:q;qOpPpQp?e`n{n|n}n~nao=qbo?q@qRpSpTp@ecodoeofogoho)j*j+jYcZc)c|c[q]q^q_q`qGmHm{q*c}cImW ~l^pcqKdbbLdp cbdbebX MdNdjdfbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2d|qqo}q~q0p1p2p[erosotouovowoarxobrcr3p4p5p]eyozoAoBoCoDoOkPkQk0c1c+c~cdrerfrgrhrLmMmir,cadNmY am_pdqOdhbPdq ibjbkbZ QdRdkdlbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3djrMokrlr$p%p'p^eNoOoPoQoRoSomrTonror(p)p*p_eUoVoWoXoYoZomlnlol2c3c-cbdprqrrrsrtrQmRmur.ccdSm0 bm`peqSdnbTdr obpbqb1 UdVdldrbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
767 # SQLAlchemy doesn't call __init__ on the base class when querying from DB
768 # Ref: https://docs.sqlalchemy.org/en/14/orm/constructors.html
769 # Set __fields_set__ here, that would have been set when calling __init__
770 # in the Pydantic model so that when SQLAlchemy sets attributes that are
771 # added (e.g. when querying from DB) to the __fields_set__, this already exists
772 init_pydantic_private_attrs(new_object) 2fqVmgqhq8o9o!o(eWmXmYmZm0m1miq2mjqkq#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc4c/clqmqnqoqpqcmdmqq5c:cemK ^l;p{pmd2 ndj 3 4 5 L odpddd6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wdrq*msqtq-o.o/o*e+m,m-m.m/m:muq;mvqwq:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc6c;cxqyqzqAqBqhmimCq7c=cjmM _l=p|pqd8 rdk 9 ! # N sdtded$ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC XdDqcnEqFq`o{o|o,ednenfngnhninGqjnHqIq}o~oap-eknlnmnnnonpnchdhehQcRc8c?cJqKqLqMqNqmmnmOq9c@comO `l?p}pud' vdl ( ) * P wdxdfd+ , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD YdPqynQqRqhpipjp.eznAnBnCnDnEn#h$h%hScTc!c[cSqTqUqVqWqrmsmXq#c]ctmQ {l@p~pyd- zdm . / : R AdBdgd; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdYqNnZq0qqprpsp/eOnPnQnRnSnTn1qUn2q3qtpupvp:eVnWnXnYnZn0nJiKiLiUcVc$c^c4q5q6q7q8qwmxm9q%c_cymS |l[paqCd? Ddn @ [ ] T EdFdhd^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d!q9n#q$qCpDpEp;e!n#n$n%n'n(n%q)n'q(qFpGpHp=e*n+n,n-n.n/nhjijjjWcXc'c`c)q*q+q,q-qBmCm.q(c{cDmU }l]pbqGd` Hdo { | } V IdJdid~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d/q_n:q;qOpPpQp?e`n{n|n}n~nao=qbo?q@qRpSpTp@ecodoeofogoho)j*j+jYcZc)c|c[q]q^q_q`qGmHm{q*c}cImW ~l^pcqKdbbLdp cbdbebX MdNdjdfbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2d|qqo}q~q0p1p2p[erosotouovowoarxobrcr3p4p5p]eyozoAoBoCoDoOkPkQk0c1c+c~cdrerfrgrhrLmMmir,cadNmY am_pdqOdhbPdq ibjbkbZ QdRdkdlbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3djrMokrlr$p%p'p^eNoOoPoQoRoSomrTonror(p)p*p_eUoVoWoXoYoZomlnlol2c3c-cbdprqrrrsrtrQmRmur.ccdSm0 bm`peqSdnbTdr obpbqb1 UdVdldrbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
773 return new_object 2fqVmgqhq8o9o!o(eWmXmYmZm0m1miq2mjqkq#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc4c/clqmqnqoqpqcmdmqq5c:cemK ^l;p{pmd2 ndj 3 4 5 L odpddd6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wdrq*msqtq-o.o/o*e+m,m-m.m/m:muq;mvqwq:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc6c;cxqyqzqAqBqhmimCq7c=cjmM _l=p|pqd8 rdk 9 ! # N sdtded$ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC XdDqcnEqFq`o{o|o,ednenfngnhninGqjnHqIq}o~oap-eknlnmnnnonpnchdhehQcRc8c?cJqKqLqMqNqmmnmOq9c@comO `l?p}pud' vdl ( ) * P wdxdfd+ , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD YdPqynQqRqhpipjp.eznAnBnCnDnEn#h$h%hScTc!c[cSqTqUqVqWqrmsmXq#c]ctmQ {l@p~pyd- zdm . / : R AdBdgd; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdYqNnZq0qqprpsp/eOnPnQnRnSnTn1qUn2q3qtpupvp:eVnWnXnYnZn0nJiKiLiUcVc$c^c4q5q6q7q8qwmxm9q%c_cymS |l[paqCd? Ddn @ [ ] T EdFdhd^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d!q9n#q$qCpDpEp;e!n#n$n%n'n(n%q)n'q(qFpGpHp=e*n+n,n-n.n/nhjijjjWcXc'c`c)q*q+q,q-qBmCm.q(c{cDmU }l]pbqGd` Hdo { | } V IdJdid~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d/q_n:q;qOpPpQp?e`n{n|n}n~nao=qbo?q@qRpSpTp@ecodoeofogoho)j*j+jYcZc)c|c[q]q^q_q`qGmHm{q*c}cImW ~l^pcqKdbbLdp cbdbebX MdNdjdfbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2d|qqo}q~q0p1p2p[erosotouovowoarxobrcr3p4p5p]eyozoAoBoCoDoOkPkQk0c1c+c~cdrerfrgrhrLmMmir,cadNmY am_pdqOdhbPdq ibjbkbZ QdRdkdlbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3djrMokrlr$p%p'p^eNoOoPoQoRoSomrTonror(p)p*p_eUoVoWoXoYoZomlnlol2c3c-cbdprqrrrsrtrQmRmur.ccdSm0 bm`peqSdnbTdr obpbqb1 UdVdldrbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
775 def __init__(__pydantic_self__, **data: Any) -> None: 1daefbghci
776 # Uses something other than `self` the first arg to allow "self" as a
777 # settable attribute
779 # SQLAlchemy does very dark black magic and modifies the __init__ method in
780 # sqlalchemy.orm.instrumentation._generate_init()
781 # so, to make SQLAlchemy work, it's needed to explicitly call __init__ to
782 # trigger all the SQLAlchemy logic, it doesn't work using cls.__new__, setting
783 # attributes obj.__dict__, etc. The __init__ method has to be called. But
784 # there are cases where calling all the default logic is not ideal, e.g.
785 # when calling Model.model_validate(), as the validation is done outside
786 # of instance creation.
787 # At the same time, __init__ is what users would normally call, by creating
788 # a new instance, which should have validation and all the default logic.
789 # So, to be able to set up the internal SQLAlchemy logic alone without
790 # executing the rest, and support things like Model.model_validate(), we
791 # use a contextvar to know if we should execute everything.
792 if finish_init.get(): 2fqVmgqhq8o9o!o(eWmXmYmZm0m1miq2mjqkq#o$o%o)e3m4m5m6m7m8m6f7f8f4clqmqnqoqpqcmdmqq5cemK ^l;pmd2 ndj 3 4 5 L odpddd6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB rq*msqtq-o.o/o*e+m,m-m.m/m:muq;mvqwq:o;o=o+e=m?m@m[m]m^mEgFgGg6cxqyqzqAqBqhmimCq7cjmM _l=pqd8 rdk 9 ! # N sdtded$ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC DqcnEqFq`o{o|o,ednenfngnhninGqjnHqIq}o~oap-eknlnmnnnonpnchdheh8cJqKqLqMqNqmmnmOq9comO `l?pud' vdl ( ) * P wdxdfd+ , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD PqynQqRqhpipjp.eznAnBnCnDnEn#h$h%h!cSqTqUqVqWqrmsmXq#ctmQ {l@pyd- zdm . / : R AdBdgd; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE YqNnZq0qqprpsp/eOnPnQnRnSnTn1qUn2q3qtpupvp:eVnWnXnYnZn0nJiKiLi$c4q5q6q7q8qwmxm9q%cymS |l[pCd? Ddn @ [ ] T EdFdhd^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF !q9n#q$qCpDpEp;e!n#n$n%n'n(n%q)n'q(qFpGpHp=e*n+n,n-n.n/nhjijjj'c)q*q+q,q-qBmCm.q(cDmU }l]pGd` Hdo { | } V IdJdid~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG /q_n:q;qOpPpQp?e`n{n|n}n~nao=qbo?q@qRpSpTp@ecodoeofogoho)j*j+j)c[q]q^q_q`qGmHm{q*cImW ~l^pKdbbLdp cbdbebX MdNdjdfbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH |qqo}q~q0p1p2p[erosotouovowoarxobrcr3p4p5p]eyozoAoBoCoDoOkPkQk+cdrerfrgrhrLmMmir,cNmY am_pOdhbPdq ibjbkbZ QdRdkdlbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI jrMokrlr$p%p'p^eNoOoPoQoRoSomrTonror(p)p*p_eUoVoWoXoYoZomlnlol-cprqrrrsrtrQmRmur.cSm0 bm`pSdnbTdr obpbqb1 UdVdldrbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ
793 sqlmodel_init(self=__pydantic_self__, data=data) 2fqVmgqhq8o9o!o(eWmXmYmZm0m1miq2mjqkq#o$o%o)e3m4m5m6m7m8m6f7f8f4clqmqnqoqpqcmdmqq5cemK ^l;pmd2 ndj 3 4 5 L odpddd6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB rq*msqtq-o.o/o*e+m,m-m.m/m:muq;mvqwq:o;o=o+e=m?m@m[m]m^mEgFgGg6cxqyqzqAqBqhmimCq7cjmM _l=pqd8 rdk 9 ! # N sdtded$ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC DqcnEqFq`o{o|o,ednenfngnhninGqjnHqIq}o~oap-eknlnmnnnonpnchdheh8cJqKqLqMqNqmmnmOq9comO `l?pud' vdl ( ) * P wdxdfd+ , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD PqynQqRqhpipjp.eznAnBnCnDnEn#h$h%h!cSqTqUqVqWqrmsmXq#ctmQ {l@pyd- zdm . / : R AdBdgd; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE YqNnZq0qqprpsp/eOnPnQnRnSnTn1qUn2q3qtpupvp:eVnWnXnYnZn0nJiKiLi$c4q5q6q7q8qwmxm9q%cymS |l[pCd? Ddn @ [ ] T EdFdhd^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF !q9n#q$qCpDpEp;e!n#n$n%n'n(n%q)n'q(qFpGpHp=e*n+n,n-n.n/nhjijjj'c)q*q+q,q-qBmCm.q(cDmU }l]pGd` Hdo { | } V IdJdid~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG /q_n:q;qOpPpQp?e`n{n|n}n~nao=qbo?q@qRpSpTp@ecodoeofogoho)j*j+j)c[q]q^q_q`qGmHm{q*cImW ~l^pKdbbLdp cbdbebX MdNdjdfbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH |qqo}q~q0p1p2p[erosotouovowoarxobrcr3p4p5p]eyozoAoBoCoDoOkPkQk+cdrerfrgrhrLmMmir,cNmY am_pOdhbPdq ibjbkbZ QdRdkdlbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI jrMokrlr$p%p'p^eNoOoPoQoRoSomrTonror(p)p*p_eUoVoWoXoYoZomlnlol-cprqrrrsrtrQmRmur.cSm0 bm`pSdnbTdr obpbqb1 UdVdldrbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ
795 def __setattr__(self, name: str, value: Any) -> None: 1daefbghci
796 if name in {"_sa_instance_state"}: 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc/c:cK ;p{p2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wd*m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc;c=cM =p|p8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC Xdcn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehQcRc?c@cO ?p}p' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD Ydynhpipjp.eznAnBnCnDnEn#h$h%hScTc[c]cQ @p~p- m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdNnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiUcVc^c_cS [paq? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjWcXc`c{cU ]pbq` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d_nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jYcZc|c}cW ^pcqbbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2dqo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQk0c1c~cadY _pdqhbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3dMo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol2c3cbdcd0 `peqnbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
797 self.__dict__[name] = value 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fK 2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB *m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgM 8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC cn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehO ' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD ynhpipjp.eznAnBnCnDnEn#h$h%hQ - m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE Nnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiS ? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjU ` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG _nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jW bbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH qo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQkY hbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI Mo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol0 nbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ
798 return 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fK 2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB *m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgM 8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC cn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehO ' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD ynhpipjp.eznAnBnCnDnEn#h$h%hQ - m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE Nnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiS ? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjU ` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG _nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jW bbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH qo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQkY hbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI Mo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol0 nbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ
799 else:
800 # Set in SQLAlchemy, before Pydantic to trigger events and updates
801 if is_table_model_class(self.__class__) and is_instrumented(self, name): # type: ignore[no-untyped-call] 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc/c:cK ;p{p2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wd*m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc;c=cM =p|p8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC Xdcn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehQcRc?c@cO ?p}p' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD Ydynhpipjp.eznAnBnCnDnEn#h$h%hScTc[c]cQ @p~p- m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdNnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiUcVc^c_cS [paq? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjWcXc`c{cU ]pbq` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d_nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jYcZc|c}cW ^pcqbbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2dqo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQk0c1c~cadY _pdqhbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3dMo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol2c3cbdcd0 `peqnbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
802 set_attribute(self, name, value) 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fK 2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB *m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgM 8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC cn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehO ' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD ynhpipjp.eznAnBnCnDnEn#h$h%hQ - m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE Nnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiS ? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjU ` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG _nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jW bbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH qo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQkY hbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI Mo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol0 nbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ
803 # Set in Pydantic model to trigger possible validation changes, only for
804 # non relationship values
805 if name not in self.__sqlmodel_relationships__: 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc/c:cK ;p{p2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wd*m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc;c=cM =p|p8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC Xdcn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehQcRc?c@cO ?p}p' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD Ydynhpipjp.eznAnBnCnDnEn#h$h%hScTc[c]cQ @p~p- m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdNnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiUcVc^c_cS [paq? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjWcXc`c{cU ]pbq` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d_nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jYcZc|c}cW ^pcqbbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2dqo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQk0c1c~cadY _pdqhbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3dMo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol2c3cbdcd0 `peqnbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
806 super().__setattr__(name, value) 2Vm8o9o!o(eWmXmYmZm0m1m2m#o$o%o)e3m4m5m6m7m8m6f7f8fMcNc/c:cK ;p{p2 j 3 4 5 L 6 7 9f!f#f$f%f'f(f)f*f+f,f-f.f9m!m#m$m%m'mee(mfmgm)mfe'oge/fheiejeFfGf(o)o*o:f;f=f?f@f[f]f^f+o_f`f{f|f}f~f,oagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgB Wd*m-o.o/o*e+m,m-m.m/m:m;m:o;o=o+e=m?m@m[m]m^mEgFgGgOcPc;c=cM =p|p8 k 9 ! # N $ % HgIgJgKgLgMgNgOgPgQgRgSgTg_m`m{m|m}m~mkeankmlmbnle?omeUgneoepeHfIf@o[o]oVgWgXgYgZg0g1g2g^o3g4g5g6g7g8g_o9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhC Xdcn`o{o|o,ednenfngnhninjn}o~oap-eknlnmnnnonpnchdhehQcRc?c@cO ?p}p' l ( ) * P + , fhghhhihjhkhlhmhnhohphqhrhqnrnsntnunvnqewnpmqmxnrebpseshteueveJfKfcpdpepthuhvhwhxhyhzhAhfpBhChDhEhFhGhgpHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!hD Ydynhpipjp.eznAnBnCnDnEn#h$h%hScTc[c]cQ @p~p- m . / : R ; = 'h(h)h*h+h,h-h.h/h:h;h=h?hFnGnHnInJnKnweLnumvmMnxekpye@hzeAeBeLfMflpmpnp[h]h^h_h`h{h|h}hop~haibicidieippfigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiE ZdNnqprpsp/eOnPnQnRnSnTnUntpupvp:eVnWnXnYnZn0nJiKiLiUcVc^c_cS [paq? n @ [ ] T ^ _ MiNiOiPiQiRiSiTiUiViWiXiYi1n2n3n4n5n6nCe7nzmAm8nDewpEeZiFeGeHeNfOfxpypzp0i1i2i3i4i5i6i7iAp8i9i!i#i$i%iBp'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjF 0d9nCpDpEp;e!n#n$n%n'n(n)nFpGpHp=e*n+n,n-n.n/nhjijjjWcXc`c{cU ]pbq` o { | } V ~ abkjljmjnjojpjqjrjsjtjujvjwj:n;n=n?n@n[nIe]nEmFm^nJeIpKexjLeMeNePfQfJpKpLpyjzjAjBjCjDjEjFjMpGjHjIjJjKjLjNpMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(jG 1d_nOpPpQp?e`n{n|n}n~naoboRpSpTp@ecodoeofogoho)j*j+jYcZc|c}cW ^pcqbbp cbdbebX fbgb,j-j.j/j:j;j=j?j@j[j]j^j_jiojokolomonoOeooJmKmpoPeUpQe`jReSeTeRfSfVpWpXp{j|j}j~jakbkckdkYpekfkgkhkikjkZpkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkH 2dqo0p1p2p[erosotouovowoxo3p4p5p]eyozoAoBoCoDoOkPkQk0c1c~cadY _pdqhbq ibjbkbZ lbmbRkSkTkUkVkWkXkYkZk0k1k2k3kEoFoGoHoIoJoUeKoOmPmLoVe6pWe4kXeYeZeTfUf7p8p9p5k6k7k8k9k!k#k$k!p%k'k(k)k*k+k#p,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklllI 3dMo$p%p'p^eNoOoPoQoRoSoTo(p)p*p_eUoVoWoXoYoZomlnlol2c3cbdcd0 `peqnbr obpbqb1 rbsbplqlrlsltlulvlwlxlylzlAlBl0o1o2o3o4o5o0e6oTmUm7o1e+p2eCl3e4e5eVfWf,p-p.pDlElFlGlHlIlJlKl/pLlMlNlOlPlQl:pRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-lJ 4d
808 def __repr_args__(self) -> Sequence[tuple[Optional[str], Any]]: 1daefbghci
809 # Don't show SQLAlchemy private attributes
810 return [ 2ddedfdgdhdidjdkdld
811 (k, v)
812 for k, v in super().__repr_args__()
813 if not (isinstance(k, str) and k.startswith("_sa_"))
814 ]
816 @declared_attr # type: ignore 1daefbghci
817 def __tablename__(cls) -> str: 1daefbghci
818 return cls.__name__.lower() 2d vrwrK CbDb3b$btbDc2 j 3 4 5 L Ub%bs 6 7 xryrzrfmgmFfGfArB a BrCrM EbFb4b'bubEc8 k 9 ! # N Vb(bt $ % DrErFrkmlmHfIfGrC e HrIrO GbHb5b)bvbFc' l ( ) * P Wb*bu + , JrKrLrpmqmJfKfMrD f NrQ IbJb6b+bwbGc- m . / : R Xb,bv ; = OrPrQrumvmLfMfRrE b SrTrS KbLb7b-bxbHc? n @ [ ] T Yb.bw ^ _ UrVrWrzmAmNfOfXrF g YrZrU MbNb8b/bybIc` o { | } V Zb:bx ~ ab0r1r2rEmFmPfQf3rG h 4r5rW ObPb9b;bzbJcbbp cbdbebX 0b=by fbgb6r7r8rJmKmRfSf9rH c !r#rY QbRb!b?bAbKchbq ibjbkbZ 1b@bz lbmb$r%r'rOmPmTfUf(rI i )r*r0 SbTb#b[bBbLcnbr obpbqb1 2b]bA rbsb+r,r-rTmUmVfWf.rJ
820 @classmethod 1daefbghci
821 def model_validate( # type: ignore[override] 1daefbghci
822 cls: type[_TSQLModel],
823 obj: Any,
824 *,
825 strict: Union[bool, None] = None,
826 from_attributes: Union[bool, None] = None,
827 context: Union[builtins.dict[str, Any], None] = None,
828 update: Union[builtins.dict[str, Any], None] = None,
829 ) -> _TSQLModel:
830 return sqlmodel_validate( 2VmWmXmYmZm0m1m2m3m4m5m6m7m8mMcNc/c:c;p{p9m!m#m$m%m'mee(mfmgm)mfegeheiejeWd*m+m,m-m.m/m:m;m=m?m@m[m]m^mOcPc;c=c=p|p_m`m{m|m}m~mkeankmlmbnlemeneoepeXdcndnenfngnhninjnknlnmnnnonpnQcRc?c@c?p}pqnrnsntnunvnqewnpmqmxnreseteueveYdynznAnBnCnDnEnScTc[c]c@p~pFnGnHnInJnKnweLnumvmMnxeyezeAeBeZdNnOnPnQnRnSnTnUnVnWnXnYnZn0nUcVc^c_c[paq1n2n3n4n5n6nCe7nzmAm8nDeEeFeGeHe0d9n!n#n$n%n'n(n)n*n+n,n-n.n/nWcXc`c{c]pbq:n;n=n?n@n[nIe]nEmFm^nJeKeLeMeNe1d_n`n{n|n}n~naobocodoeofogohoYcZc|c}c^pcqiojokolomonoOeooJmKmpoPeQeReSeTe2dqorosotouovowoxoyozoAoBoCoDo0c1c~cad_pdqEoFoGoHoIoJoUeKoOmPmLoVeWeXeYeZe3dMoNoOoPoQoRoSoToUoVoWoXoYoZo2c3cbdcd`peq0o1o2o3o4o5o0e6oTmUm7o1e2e3e4e5e4d
831 cls=cls,
832 obj=obj,
833 strict=strict,
834 from_attributes=from_attributes,
835 context=context,
836 update=update,
837 )
839 def model_dump( 1daefbghci
840 self,
841 *,
842 mode: Union[Literal["json", "python"], str] = "python",
843 include: Union[IncEx, None] = None,
844 exclude: Union[IncEx, None] = None,
845 context: Union[Any, None] = None, # v2.7
846 by_alias: Union[bool, None] = None,
847 exclude_unset: bool = False,
848 exclude_defaults: bool = False,
849 exclude_none: bool = False,
850 exclude_computed_fields: bool = False, # v2.12
851 round_trip: bool = False,
852 warnings: Union[bool, Literal["none", "warn", "error"]] = True,
853 fallback: Union[Callable[[Any], Any], None] = None, # v2.11
854 serialize_as_any: bool = False, # v2.7
855 ) -> builtins.dict[str, Any]:
856 if PYDANTIC_MINOR_VERSION < (2, 11): 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
857 by_alias = by_alias or False
858 extra_kwargs: dict[str, Any] = {} 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
859 extra_kwargs["context"] = context 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
860 extra_kwargs["serialize_as_any"] = serialize_as_any 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
861 if PYDANTIC_MINOR_VERSION >= (2, 11): 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
862 extra_kwargs["fallback"] = fallback 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
863 if PYDANTIC_MINOR_VERSION >= (2, 12): 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
864 extra_kwargs["exclude_computed_fields"] = exclude_computed_fields 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
865 return super().model_dump( 2(e)e6f7f8fMcNc4ccmdm5cem^l9f!f#f$f%f'f(f)f*f+f,f-f.feefege/fheiejeFfGf:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDg*e+eEgFgGgOcPc6chmim7cjm_lHgIgJgKgLgMgNgOgPgQgRgSgTgkelemeUgneoepeHfIfVgWgXgYgZg0g1g2g3g4g5g6g7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbh,e-echdhehQcRc8cmmnm9com`lfhghhhihjhkhlhmhnhohphqhrhqereseshteueveJfKfthuhvhwhxhyhzhAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h.e#h$h%hScTc!crmsm#ctm{l'h(h)h*h+h,h-h.h/h:h;h=h?hwexeye@hzeAeBeLfMf[h]h^h_h`h{h|h}h~haibicidieifigihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIi/e:eJiKiLiUcVc$cwmxm%cym|lMiNiOiPiQiRiSiTiUiViWiXiYiCeDeEeZiFeGeHeNfOf0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgj;e=ehjijjjWcXc'cBmCm(cDm}lkjljmjnjojpjqjrjsjtjujvjwjIeJeKexjLeMeNePfQfyjzjAjBjCjDjEjFjGjHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j?e@e)j*j+jYcZc)cGmHm*cIm~l,j-j.j/j:j;j=j?j@j[j]j^j_jOePeQe`jReSeTeRfSf{j|j}j~jakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNk[e]eOkPkQk0c1c+cLmMm,cNmamRkSkTkUkVkWkXkYkZk0k1k2k3kUeVeWe4kXeYeZeTfUf5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?k@k[k]k^k_k`k{k|k}k~kalblcldlelflglhliljlklll^e_emlnlol2c3c-cQmRm.cSmbmplqlrlsltlulvlwlxlylzlAlBl0e1e2eCl3e4e5eVfWfDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0l1l2l3l4l5l6l7l8l9l!l#l$l%l'l(l)l*l+l,l-l
866 mode=mode,
867 include=include,
868 exclude=exclude,
869 by_alias=by_alias,
870 exclude_unset=exclude_unset,
871 exclude_defaults=exclude_defaults,
872 exclude_none=exclude_none,
873 round_trip=round_trip,
874 warnings=warnings,
875 **extra_kwargs,
876 )
878 @deprecated( 1daefbghci
879 """
880 🚨 `obj.dict()` was deprecated in SQLModel 0.0.14, you should
881 instead use `obj.model_dump()`.
882 """
883 )
884 def dict( 1daefbghci
885 self,
886 *,
887 include: Union[IncEx, None] = None,
888 exclude: Union[IncEx, None] = None,
889 by_alias: bool = False,
890 exclude_unset: bool = False,
891 exclude_defaults: bool = False,
892 exclude_none: bool = False,
893 ) -> builtins.dict[str, Any]:
894 return self.model_dump( 2^l_l`l{l|l}l~lambm
895 include=include,
896 exclude=exclude,
897 by_alias=by_alias,
898 exclude_unset=exclude_unset,
899 exclude_defaults=exclude_defaults,
900 exclude_none=exclude_none,
901 )
903 @classmethod 1daefbghci
904 @deprecated( 1daefbghci
905 """
906 🚨 `obj.from_orm(data)` was deprecated in SQLModel 0.0.14, you should
907 instead use `obj.model_validate(data)`.
908 """
909 )
910 def from_orm( 1daefbghci
911 cls: type[_TSQLModel],
912 obj: Any,
913 update: Optional[builtins.dict[str, Any]] = None,
914 ) -> _TSQLModel:
915 return cls.model_validate(obj, update=update) 2;p=p?p@p[p]p^p_p`p
917 @classmethod 1daefbghci
918 @deprecated( 1daefbghci
919 """
920 🚨 `obj.parse_obj(data)` was deprecated in SQLModel 0.0.14, you should
921 instead use `obj.model_validate(data)`.
922 """
923 )
924 def parse_obj( 1daefbghci
925 cls: type[_TSQLModel],
926 obj: Any,
927 update: Optional[builtins.dict[str, Any]] = None,
928 ) -> _TSQLModel:
929 return cls.model_validate(obj, update=update) 2{p|p}p~paqbqcqdqeq
931 def sqlmodel_update( 1daefbghci
932 self: _TSQLModel,
933 obj: Union[builtins.dict[str, Any], BaseModel],
934 *,
935 update: Union[builtins.dict[str, Any], None] = None,
936 ) -> _TSQLModel:
937 use_update = (update or {}).copy() 2(e)eeefegeheiejeB *e+ekelemeneoepeC ,e-eqereseteueveD .ewexeyezeAeBeE /e:eCeDeEeFeGeHeF ;e=eIeJeKeLeMeNeG ?e@eOePeQeReSeTeH [e]eUeVeWeXeYeZeI ^e_e0e1e2e3e4e5eJ
938 if isinstance(obj, dict): 2(e)eeefegeheiejeB *e+ekelemeneoepeC ,e-eqereseteueveD .ewexeyezeAeBeE /e:eCeDeEeFeGeHeF ;e=eIeJeKeLeMeNeG ?e@eOePeQeReSeTeH [e]eUeVeWeXeYeZeI ^e_e0e1e2e3e4e5eJ
939 for key, value in {**obj, **use_update}.items(): 2(e)eeefegeheieje*e+ekelemeneoepe,e-eqereseteueve.ewexeyezeAeBe/e:eCeDeEeFeGeHe;e=eIeJeKeLeMeNe?e@eOePeQeReSeTe[e]eUeVeWeXeYeZe^e_e0e1e2e3e4e5e
940 if key in get_model_fields(self): 2(e)eeefegeheieje*e+ekelemeneoepe,e-eqereseteueve.ewexeyezeAeBe/e:eCeDeEeFeGeHe;e=eIeJeKeLeMeNe?e@eOePeQeReSeTe[e]eUeVeWeXeYeZe^e_e0e1e2e3e4e5e
941 setattr(self, key, value) 2(e)eeefegeheieje*e+ekelemeneoepe,e-eqereseteueve.ewexeyezeAeBe/e:eCeDeEeFeGeHe;e=eIeJeKeLeMeNe?e@eOePeQeReSeTe[e]eUeVeWeXeYeZe^e_e0e1e2e3e4e5e
942 elif isinstance(obj, BaseModel): 1BCDEFGHIJ
943 for key in get_model_fields(obj): 1BCDEFGHIJ
944 if key in use_update: 1BCDEFGHIJ
945 value = use_update.pop(key)
946 else:
947 value = getattr(obj, key) 1BCDEFGHIJ
948 setattr(self, key, value) 1BCDEFGHIJ
949 for remaining_key, value in use_update.items(): 1BCDEFGHIJ
950 if remaining_key in get_model_fields(self): 1BCDEFGHIJ
951 setattr(self, remaining_key, value) 1BCDEFGHIJ
952 else:
953 raise ValueError(
954 "Can't use sqlmodel_update() with something that "
955 f"is not a dict or SQLModel or Pydantic model: {obj}"
956 )
957 return self 2(e)eeefegeheiejeB *e+ekelemeneoepeC ,e-eqereseteueveD .ewexeyezeAeBeE /e:eCeDeEeFeGeHeF ;e=eIeJeKeLeMeNeG ?e@eOePeQeReSeTeH [e]eUeVeWeXeYeZeI ^e_e0e1e2e3e4e5eJ