Coverage for sqlmodel / main.py: 95%

349 statements  

« prev     ^ index     » next       coverage.py v7.13.0, created at 2026-01-06 21:09 +0000

1from __future__ import annotations 1daefbghci

2 

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) 

23 

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

52 

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

74 

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 

80 

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

90 

91 

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

100 

101 

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

168 

169 

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

200 

201 

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

242 

243 

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

286 

287 

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

330 

331 

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 } 

411 

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 ) 

419 

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

426 

427 

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

438 

439 

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

449 

450 

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

471 

472 

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

478 

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

485 

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

491 

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 } 

540 

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

549 

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

566 

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

576 

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

635 

636 

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 

642 

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

645 

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

689 

690 

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

746 

747 

748class_registry = weakref.WeakValueDictionary() # type: ignore 1daefbghci

749 

750default_registry = registry() 1daefbghci

751 

752_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 1daefbghci

753 

754 

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

764 

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

774 

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 

778 

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

794 

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

807 

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 ] 

815 

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

819 

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 ) 

838 

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 ) 

877 

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 ) 

902 

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

916 

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

930 

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