Coverage for sqlmodel / main.py: 96%

376 statements  

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

1from __future__ import annotations 1daebfgch

2 

3import builtins 1daebfgch

4import ipaddress 1daebfgch

5import uuid 1daebfgch

6from collections.abc import Callable, Mapping, Sequence, Set 1daebfgch

7from dataclasses import dataclass 1daebfgch

8from datetime import date, datetime, time, timedelta 1daebfgch

9from decimal import Decimal 1daebfgch

10from enum import Enum 1daebfgch

11from pathlib import Path 1daebfgch

12from typing import ( 1daebfgch

13 TYPE_CHECKING, 

14 Any, 

15 ClassVar, 

16 Literal, 

17 TypeAlias, 

18 TypeVar, 

19 Union, 

20 cast, 

21 get_origin, 

22 overload, 

23) 

24 

25from pydantic import BaseModel, EmailStr 1daebfgch

26from pydantic.fields import FieldInfo as PydanticFieldInfo 1daebfgch

27from sqlalchemy import ( 1daebfgch

28 Boolean, 

29 Column, 

30 Date, 

31 DateTime, 

32 Float, 

33 ForeignKey, 

34 Integer, 

35 Interval, 

36 Numeric, 

37 inspect, 

38) 

39from sqlalchemy import Enum as sa_Enum 1daebfgch

40from sqlalchemy.orm import ( 1daebfgch

41 Mapped, 

42 RelationshipProperty, 

43 registry, 

44 relationship, 

45) 

46from sqlalchemy.orm.attributes import set_attribute 1daebfgch

47from sqlalchemy.orm.decl_api import DeclarativeMeta 1daebfgch

48from sqlalchemy.orm.instrumentation import is_instrumented 1daebfgch

49from sqlalchemy.sql.schema import MetaData 1daebfgch

50from sqlalchemy.sql.sqltypes import LargeBinary, Time, Uuid 1daebfgch

51from typing_extensions import deprecated 1daebfgch

52 

53from ._compat import ( 1daebfgch

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 1daebfgch

74 

75if TYPE_CHECKING: 1daebfgch

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") 1daebfgch

82NoArgAnyCallable = Callable[[], Any] 1daebfgch

83IncEx: TypeAlias = ( 1daebfgch

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"] 1daebfgch

90 

91 

92def __dataclass_transform__( 1daebfgch

93 *, 

94 eq_default: bool = True, 

95 order_default: bool = False, 

96 kw_only_default: bool = False, 

97 field_descriptors: tuple[type | Callable[..., Any], ...] = (()), 

98) -> Callable[[_T], _T]: 

99 return lambda a: a 1daebfgch

100 

101 

102class FieldInfo(PydanticFieldInfo): # ty: ignore[subclass-of-final-class] 1daebfgch

103 # mypy - ignore that PydanticFieldInfo is @final 

104 def __init__(self, default: Any = Undefined, **kwargs: Any) -> None: 1daebfgch

105 primary_key = kwargs.pop("primary_key", False) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

106 nullable = kwargs.pop("nullable", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

107 foreign_key = kwargs.pop("foreign_key", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

108 ondelete = kwargs.pop("ondelete", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

109 unique = kwargs.pop("unique", False) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

110 index = kwargs.pop("index", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

111 sa_type = kwargs.pop("sa_type", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

112 sa_column = kwargs.pop("sa_column", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

113 sa_column_args = kwargs.pop("sa_column_args", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

114 sa_column_kwargs = kwargs.pop("sa_column_kwargs", Undefined) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

115 if sa_column is not Undefined: 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

116 if sa_column_args is not Undefined: 2VbHf7fZfak1liknfRf|c}cWbIf8f0fbk2ljkofSf~cadXbJf9f1fck3lkkpfTfbdcdYbKf!f2fdk4llkqfUfddedZbLf#f3fek5lmkrfVffdgd0bMf$f4ffk6lnksfWfhdid1bNf%f5fgk7loktfXfjdkd2bOf'f6fhk8lpkufYfldmd

117 raise RuntimeError( 21l2l3l4l5l6l7l8l

118 "Passing sa_column_args is not supported when " 

119 "also passing a sa_column" 

120 ) 

121 if sa_column_kwargs is not Undefined: 2VbHf7fZfakiknfRf|c}cWbIf8f0fbkjkofSf~cadXbJf9f1fckkkpfTfbdcdYbKf!f2fdklkqfUfddedZbLf#f3fekmkrfVffdgd0bMf$f4ffknksfWfhdid1bNf%f5fgkoktfXfjdkd2bOf'f6fhkpkufYfldmd

122 raise RuntimeError( 2ikjkkklkmknkokpk

123 "Passing sa_column_kwargs is not supported when " 

124 "also passing a sa_column" 

125 ) 

126 if primary_key is not Undefined: 2VbHf7fZfaknfRf|c}cWbIf8f0fbkofSf~cadXbJf9f1fckpfTfbdcdYbKf!f2fdkqfUfddedZbLf#f3fekrfVffdgd0bMf$f4ffksfWfhdid1bNf%f5fgktfXfjdkd2bOf'f6fhkufYfldmd

127 raise RuntimeError( 2akbkckdkekfkgkhk

128 "Passing primary_key is not supported when also passing a sa_column" 

129 ) 

130 if nullable is not Undefined: 2VbHf7fZfnfRf|c}cWbIf8f0fofSf~cadXbJf9f1fpfTfbdcdYbKf!f2fqfUfddedZbLf#f3frfVffdgd0bMf$f4fsfWfhdid1bNf%f5ftfXfjdkd2bOf'f6fufYfldmd

131 raise RuntimeError( 27f8f9f!f#f$f%f'f

132 "Passing nullable is not supported when also passing a sa_column" 

133 ) 

134 if foreign_key is not Undefined: 2VbHfZfnfRf|c}cWbIf0fofSf~cadXbJf1fpfTfbdcdYbKf2fqfUfddedZbLf3frfVffdgd0bMf4fsfWfhdid1bNf5ftfXfjdkd2bOf6fufYfldmd

135 raise RuntimeError( 2VbWbXbYbZb0b1b2b

136 "Passing foreign_key is not supported when also passing a sa_column" 

137 ) 

138 if ondelete is not Undefined: 2HfZfnfRf|c}cIf0fofSf~cadJf1fpfTfbdcdKf2fqfUfddedLf3frfVffdgdMf4fsfWfhdidNf5ftfXfjdkdOf6fufYfldmd

139 raise RuntimeError( 2Zf0f1f2f3f4f5f6f

140 "Passing ondelete is not supported when also passing a sa_column" 

141 ) 

142 if unique is not Undefined: 2HfnfRf|c}cIfofSf~cadJfpfTfbdcdKfqfUfddedLfrfVffdgdMfsfWfhdidNftfXfjdkdOfufYfldmd

143 raise RuntimeError( 2RfSfTfUfVfWfXfYf

144 "Passing unique is not supported when also passing a sa_column" 

145 ) 

146 if index is not Undefined: 2Hfnf|c}cIfof~cadJfpfbdcdKfqfddedLfrffdgdMfsfhdidNftfjdkdOfufldmd

147 raise RuntimeError( 2HfIfJfKfLfMfNfOf

148 "Passing index is not supported when also passing a sa_column" 

149 ) 

150 if sa_type is not Undefined: 2nf|c}cof~cadpfbdcdqfddedrffdgdsfhdidtfjdkdufldmd

151 raise RuntimeError( 2nfofpfqfrfsftfuf

152 "Passing sa_type is not supported when also passing a sa_column" 

153 ) 

154 if ondelete is not Undefined: 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

155 if foreign_key is Undefined: 2d 3bSei a 4bTej e 5bUek b 6bVel f 7bWem g 8bXen c 9bYeo h !bZep

156 raise RuntimeError("ondelete can only be used with foreign_key") 2SeTeUeVeWeXeYeZe

157 super().__init__(default=default, **kwargs) 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

158 self.primary_key = primary_key 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

159 self.nullable = nullable 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

160 self.foreign_key = foreign_key 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

161 self.ondelete = ondelete 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

162 self.unique = unique 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

163 self.index = index 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

164 self.sa_type = sa_type 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

165 self.sa_column = sa_column 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

166 self.sa_column_args = sa_column_args 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

167 self.sa_column_kwargs = sa_column_kwargs 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

168 

169 

170class RelationshipInfo(Representation): 1daebfgch

171 def __init__( 1daebfgch

172 self, 

173 *, 

174 back_populates: str | None = None, 

175 cascade_delete: bool | None = False, 

176 passive_deletes: bool | Literal["all"] | None = False, 

177 link_model: Any | None = None, 

178 sa_relationship: RelationshipProperty | None = None, 

179 sa_relationship_args: Sequence[Any] | None = None, 

180 sa_relationship_kwargs: Mapping[str, Any] | None = None, 

181 ) -> None: 

182 if sa_relationship is not None: 2d KeCeq i a LeDer j e MeEes k b NeFet l f OeGeu m g PeHev n c QeIew o h ReJex p

183 if sa_relationship_args is not None: 2KeCeq LeDer MeEes NeFet OeGeu PeHev QeIew ReJex

184 raise RuntimeError( 2KeLeMeNeOePeQeRe

185 "Passing sa_relationship_args is not supported when " 

186 "also passing a sa_relationship" 

187 ) 

188 if sa_relationship_kwargs is not None: 2Ceq Der Ees Fet Geu Hev Iew Jex

189 raise RuntimeError( 2CeDeEeFeGeHeIeJe

190 "Passing sa_relationship_kwargs is not supported when " 

191 "also passing a sa_relationship" 

192 ) 

193 self.back_populates = back_populates 1dqiarjeskbtlfumgvncwohxp

194 self.cascade_delete = cascade_delete 1dqiarjeskbtlfumgvncwohxp

195 self.passive_deletes = passive_deletes 1dqiarjeskbtlfumgvncwohxp

196 self.link_model = link_model 1dqiarjeskbtlfumgvncwohxp

197 self.sa_relationship = sa_relationship 1dqiarjeskbtlfumgvncwohxp

198 self.sa_relationship_args = sa_relationship_args 1dqiarjeskbtlfumgvncwohxp

199 self.sa_relationship_kwargs = sa_relationship_kwargs 1dqiarjeskbtlfumgvncwohxp

200 

201 

202@dataclass 1daebfgch

203class FieldInfoMetadata: 1daebfgch

204 primary_key: bool | UndefinedType = Undefined 1daebfgch

205 nullable: bool | UndefinedType = Undefined 1daebfgch

206 foreign_key: Any = Undefined 1daebfgch

207 ondelete: OnDeleteType | UndefinedType = Undefined 1daebfgch

208 unique: bool | UndefinedType = Undefined 1daebfgch

209 index: bool | UndefinedType = Undefined 1daebfgch

210 sa_type: type[Any] | UndefinedType = Undefined 1daebfgch

211 sa_column: Column[Any] | UndefinedType = Undefined 1daebfgch

212 sa_column_args: Sequence[Any] | UndefinedType = Undefined 1daebfgch

213 sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined 1daebfgch

214 

215 

216def _get_sqlmodel_field_metadata(field_info: Any) -> FieldInfoMetadata | None: 1daebfgch

217 metadata_items = getattr(field_info, "metadata", None) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

218 if metadata_items: 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

219 for meta in metadata_items: 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

220 if isinstance(meta, FieldInfoMetadata): 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

221 return meta 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

222 return None 2d #b$bocVbP G Q FbGb3bR S T Ucgci V W VcWc?cxbwc@b[by a %b'bpcWbY H Z HbIb4b0 1 2 Ychcj 4 5 Zc0c@cybxc]b^bz e (b)bqcXb7 I 8 JbKb5b9 ! # 2cick % ' 3c4c[czbyc_b`bA b *b+brcYb) J * LbMb6b+ , - 6cjcl / : 7c8c]cAbzc{b|bB f ,b-bscZb= K ? NbOb7b@ [ ] !ckcm _ ` #c$c^cBbAc}b~bC g .b/btc0b| L } PbQb8b~ abbb'clcn dbeb(c)c_cCbBcacbcD c :b;buc1bgbM hbRbSb9bibjbkb+cmco mbnb,c-c`cDbCcccdcE h =b?bvc2bpbN qbTbUb!brbsbtb/cncp vbwb:c;c{cEbDcecfcF

223 

224 

225def _get_sqlmodel_field_value( 1daebfgch

226 field_info: Any, attribute: str, default: Any = Undefined 

227) -> Any: 

228 metadata = _get_sqlmodel_field_metadata(field_info) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

229 if metadata is not None and hasattr(metadata, attribute): 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

230 return getattr(metadata, attribute) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

231 return getattr(field_info, attribute, default) 2d #b$bocVbP G Q FbGb3bR S T Ucgci V W VcWc?cxbwc@b[by a %b'bpcWbY H Z HbIb4b0 1 2 Ychcj 4 5 Zc0c@cybxc]b^bz e (b)bqcXb7 I 8 JbKb5b9 ! # 2cick % ' 3c4c[czbyc_b`bA b *b+brcYb) J * LbMb6b+ , - 6cjcl / : 7c8c]cAbzc{b|bB f ,b-bscZb= K ? NbOb7b@ [ ] !ckcm _ ` #c$c^cBbAc}b~bC g .b/btc0b| L } PbQb8b~ abbb'clcn dbeb(c)c_cCbBcacbcD c :b;buc1bgbM hbRbSb9bibjbkb+cmco mbnb,c-c`cDbCcccdcE h =b?bvc2bpbN qbTbUb!brbsbtb/cncp vbwb:c;c{cEbDcecfcF

232 

233 

234# include sa_type, sa_column_args, sa_column_kwargs 

235@overload 1daebfgch

236def Field( 1daebfgch

237 default: Any = Undefined, 1daebfgch

238 *, 

239 default_factory: NoArgAnyCallable | None = None, 1daebfgch

240 alias: str | None = None, 1daebfgch

241 validation_alias: str | None = None, 1daebfgch

242 serialization_alias: str | None = None, 1daebfgch

243 title: str | None = None, 1daebfgch

244 description: str | None = None, 1daebfgch

245 exclude: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

246 include: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

247 const: bool | None = None, 1daebfgch

248 gt: float | None = None, 1daebfgch

249 ge: float | None = None, 1daebfgch

250 lt: float | None = None, 1daebfgch

251 le: float | None = None, 1daebfgch

252 multiple_of: float | None = None, 1daebfgch

253 max_digits: int | None = None, 1daebfgch

254 decimal_places: int | None = None, 1daebfgch

255 min_items: int | None = None, 1daebfgch

256 max_items: int | None = None, 1daebfgch

257 unique_items: bool | None = None, 1daebfgch

258 min_length: int | None = None, 1daebfgch

259 max_length: int | None = None, 1daebfgch

260 allow_mutation: bool = True, 1daebfgch

261 regex: str | None = None, 1daebfgch

262 discriminator: str | None = None, 1daebfgch

263 repr: bool = True, 1daebfgch

264 primary_key: bool | UndefinedType = Undefined, 1daebfgch

265 foreign_key: Any = Undefined, 1daebfgch

266 unique: bool | UndefinedType = Undefined, 1daebfgch

267 nullable: bool | UndefinedType = Undefined, 1daebfgch

268 index: bool | UndefinedType = Undefined, 1daebfgch

269 sa_type: type[Any] | UndefinedType = Undefined, 1daebfgch

270 sa_column_args: Sequence[Any] | UndefinedType = Undefined, 1daebfgch

271 sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined, 1daebfgch

272 schema_extra: dict[str, Any] | None = None, 1daebfgch

273) -> Any: ... 1abc

274 

275 

276# When foreign_key is str, include ondelete 

277# include sa_type, sa_column_args, sa_column_kwargs 

278@overload 1daebfgch

279def Field( 1daebfgch

280 default: Any = Undefined, 1daebfgch

281 *, 

282 default_factory: NoArgAnyCallable | None = None, 1daebfgch

283 alias: str | None = None, 1daebfgch

284 validation_alias: str | None = None, 1daebfgch

285 serialization_alias: str | None = None, 1daebfgch

286 title: str | None = None, 1daebfgch

287 description: str | None = None, 1daebfgch

288 exclude: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

289 include: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

290 const: bool | None = None, 1daebfgch

291 gt: float | None = None, 1daebfgch

292 ge: float | None = None, 1daebfgch

293 lt: float | None = None, 1daebfgch

294 le: float | None = None, 1daebfgch

295 multiple_of: float | None = None, 1daebfgch

296 max_digits: int | None = None, 1daebfgch

297 decimal_places: int | None = None, 1daebfgch

298 min_items: int | None = None, 1daebfgch

299 max_items: int | None = None, 1daebfgch

300 unique_items: bool | None = None, 1daebfgch

301 min_length: int | None = None, 1daebfgch

302 max_length: int | None = None, 1daebfgch

303 allow_mutation: bool = True, 1daebfgch

304 regex: str | None = None, 1daebfgch

305 discriminator: str | None = None, 1daebfgch

306 repr: bool = True, 1daebfgch

307 primary_key: bool | UndefinedType = Undefined, 1daebfgch

308 foreign_key: str, 1abc

309 ondelete: OnDeleteType | UndefinedType = Undefined, 1daebfgch

310 unique: bool | UndefinedType = Undefined, 1daebfgch

311 nullable: bool | UndefinedType = Undefined, 1daebfgch

312 index: bool | UndefinedType = Undefined, 1daebfgch

313 sa_type: type[Any] | UndefinedType = Undefined, 1daebfgch

314 sa_column_args: Sequence[Any] | UndefinedType = Undefined, 1daebfgch

315 sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined, 1daebfgch

316 schema_extra: dict[str, Any] | None = None, 1daebfgch

317) -> Any: ... 1abc

318 

319 

320# Include sa_column, don't include 

321# primary_key 

322# foreign_key 

323# ondelete 

324# unique 

325# nullable 

326# index 

327# sa_type 

328# sa_column_args 

329# sa_column_kwargs 

330@overload 1daebfgch

331def Field( 1daebfgch

332 default: Any = Undefined, 1daebfgch

333 *, 

334 default_factory: NoArgAnyCallable | None = None, 1daebfgch

335 alias: str | None = None, 1daebfgch

336 validation_alias: str | None = None, 1daebfgch

337 serialization_alias: str | None = None, 1daebfgch

338 title: str | None = None, 1daebfgch

339 description: str | None = None, 1daebfgch

340 exclude: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

341 include: Set[int | str] | Mapping[int | str, Any] | Any = None, 1daebfgch

342 const: bool | None = None, 1daebfgch

343 gt: float | None = None, 1daebfgch

344 ge: float | None = None, 1daebfgch

345 lt: float | None = None, 1daebfgch

346 le: float | None = None, 1daebfgch

347 multiple_of: float | None = None, 1daebfgch

348 max_digits: int | None = None, 1daebfgch

349 decimal_places: int | None = None, 1daebfgch

350 min_items: int | None = None, 1daebfgch

351 max_items: int | None = None, 1daebfgch

352 unique_items: bool | None = None, 1daebfgch

353 min_length: int | None = None, 1daebfgch

354 max_length: int | None = None, 1daebfgch

355 allow_mutation: bool = True, 1daebfgch

356 regex: str | None = None, 1daebfgch

357 discriminator: str | None = None, 1daebfgch

358 repr: bool = True, 1daebfgch

359 sa_column: Column[Any] | UndefinedType = Undefined, 1daebfgch

360 schema_extra: dict[str, Any] | None = None, 1daebfgch

361) -> Any: ... 1abc

362 

363 

364def Field( 1daebfgch

365 default: Any = Undefined, 

366 *, 

367 default_factory: NoArgAnyCallable | None = None, 

368 alias: str | None = None, 

369 validation_alias: str | None = None, 

370 serialization_alias: str | None = None, 

371 title: str | None = None, 

372 description: str | None = None, 

373 exclude: Set[int | str] | Mapping[int | str, Any] | Any = None, 

374 include: Set[int | str] | Mapping[int | str, Any] | Any = None, 

375 const: bool | None = None, 

376 gt: float | None = None, 

377 ge: float | None = None, 

378 lt: float | None = None, 

379 le: float | None = None, 

380 multiple_of: float | None = None, 

381 max_digits: int | None = None, 

382 decimal_places: int | None = None, 

383 min_items: int | None = None, 

384 max_items: int | None = None, 

385 unique_items: bool | None = None, 

386 min_length: int | None = None, 

387 max_length: int | None = None, 

388 allow_mutation: bool = True, 

389 regex: str | None = None, 

390 discriminator: str | None = None, 

391 repr: bool = True, 

392 primary_key: bool | UndefinedType = Undefined, 

393 foreign_key: Any = Undefined, 

394 ondelete: OnDeleteType | UndefinedType = Undefined, 

395 unique: bool | UndefinedType = Undefined, 

396 nullable: bool | UndefinedType = Undefined, 

397 index: bool | UndefinedType = Undefined, 

398 sa_type: type[Any] | UndefinedType = Undefined, 

399 sa_column: Column | UndefinedType = Undefined, 

400 sa_column_args: Sequence[Any] | UndefinedType = Undefined, 

401 sa_column_kwargs: Mapping[str, Any] | UndefinedType = Undefined, 

402 schema_extra: dict[str, Any] | None = None, 

403) -> Any: 

404 current_schema_extra = schema_extra or {} 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

405 # Extract possible alias settings from schema_extra so we can control precedence 

406 schema_validation_alias = current_schema_extra.pop("validation_alias", None) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

407 schema_serialization_alias = current_schema_extra.pop("serialization_alias", None) 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

408 field_info_kwargs = { 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

409 "alias": alias, 

410 "title": title, 

411 "description": description, 

412 "exclude": exclude, 

413 "include": include, 

414 "const": const, 

415 "gt": gt, 

416 "ge": ge, 

417 "lt": lt, 

418 "le": le, 

419 "multiple_of": multiple_of, 

420 "max_digits": max_digits, 

421 "decimal_places": decimal_places, 

422 "min_items": min_items, 

423 "max_items": max_items, 

424 "unique_items": unique_items, 

425 "min_length": min_length, 

426 "max_length": max_length, 

427 "allow_mutation": allow_mutation, 

428 "regex": regex, 

429 "discriminator": discriminator, 

430 "repr": repr, 

431 "primary_key": primary_key, 

432 "foreign_key": foreign_key, 

433 "ondelete": ondelete, 

434 "unique": unique, 

435 "nullable": nullable, 

436 "index": index, 

437 "sa_type": sa_type, 

438 "sa_column": sa_column, 

439 "sa_column_args": sa_column_args, 

440 "sa_column_kwargs": sa_column_kwargs, 

441 **current_schema_extra, 

442 } 

443 

444 # explicit params > schema_extra > alias propagation 

445 field_info_kwargs["validation_alias"] = ( 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

446 validation_alias or schema_validation_alias or alias 

447 ) 

448 field_info_kwargs["serialization_alias"] = ( 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

449 serialization_alias or schema_serialization_alias or alias 

450 ) 

451 

452 field_info = FieldInfo( 2d zdAdPdTdQdUdO #b$bocEcVbHf7fZfak1liknfRf|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWbIf8f0fbk2ljkofSf~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbJf9f1fck3lkkpfTfbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbKf!f2fdk4llkqfUfddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbLf#f3fek5lmkrfVffdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bMf$f4ffk6lnksfWfhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bNf%f5fgk7loktfXfjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bOf'f6fhk8lpkufYfldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

453 default, 

454 default_factory=default_factory, 

455 **field_info_kwargs, 

456 ) 

457 field_metadata = FieldInfoMetadata( 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

458 primary_key=primary_key, 

459 nullable=nullable, 

460 foreign_key=foreign_key, 

461 ondelete=ondelete, 

462 unique=unique, 

463 index=index, 

464 sa_type=sa_type, 

465 sa_column=sa_column, 

466 sa_column_args=sa_column_args, 

467 sa_column_kwargs=sa_column_kwargs, 

468 ) 

469 if hasattr(field_info, "metadata"): 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

470 field_info.metadata.append(field_metadata) 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

471 return field_info 2d zdAdPdTdQdUdO #b$bocEcVb|c}cKeCe*dP G Q +dFbGb3bq R S T UcU gcFcSei ,d-d9dV W VcWc?cXcxbwc@b[by a ndodDdVdEdWdX %b'bpcGcWb~cadLeDe.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcTej :d;d!d4 5 Zc0c@c1cybxc]b^bz e pdqdFdXdGdYd6 (b)bqcIcXbbdcdMeEe=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJcUek @d[d#d% ' 3c4c[c5czbyc_b`bA b BdCdRdZdSd0d( *b+brcKcYbddedNeFe]d) J * ^dLbMb6bt + , - 6c. jcLcVel _d`d$d/ : 7c8c]c9cAbzc{b|bB f rdsdHd1dId2d; ,b-bscMcZbfdgdOeGe{d= K ? |dNbOb7bu @ [ ] !c^ kcNcWem }d~d%d_ ` #c$c^c%cBbAc}b~bC g tdudJd3dKd4d{ .b/btcOc0bhdidPeHeae| L } bePbQb8bv ~ abbb'ccblcPcXen cede'ddbeb(c)c_c*cCbBcacbcD c vdwdLd5dMd6dfb:b;bucQc1bjdkdQeIeeegbM hbfeRbSb9bw ibjbkb+clbmcRcYeo gehe(dmbnb,c-c`c.cDbCcccdcE h xdydNd7dOd8dob=b?bvcSc2bldmdReJeiepbN qbjeTbUb!bx rbsbtb/cubncTcZep kele)dvbwb:c;c{c=cEbDcecfcF

472 

473 

474@overload 1daebfgch

475def Relationship( 1daebfgch

476 *, 

477 back_populates: str | None = None, 1daebfgch

478 cascade_delete: bool | None = False, 1daebfgch

479 passive_deletes: bool | Literal["all"] | None = False, 1daebfgch

480 link_model: Any | None = None, 1daebfgch

481 sa_relationship_args: Sequence[Any] | None = None, 1daebfgch

482 sa_relationship_kwargs: Mapping[str, Any] | None = None, 1daebfgch

483) -> Any: ... 1abc

484 

485 

486@overload 1daebfgch

487def Relationship( 1daebfgch

488 *, 

489 back_populates: str | None = None, 1daebfgch

490 cascade_delete: bool | None = False, 1daebfgch

491 passive_deletes: bool | Literal["all"] | None = False, 1daebfgch

492 link_model: Any | None = None, 1daebfgch

493 sa_relationship: RelationshipProperty[Any] | None = None, 1daebfgch

494) -> Any: ... 1abc

495 

496 

497def Relationship( 1daebfgch

498 *, 

499 back_populates: str | None = None, 

500 cascade_delete: bool | None = False, 

501 passive_deletes: bool | Literal["all"] | None = False, 

502 link_model: Any | None = None, 

503 sa_relationship: RelationshipProperty[Any] | None = None, 

504 sa_relationship_args: Sequence[Any] | None = None, 

505 sa_relationship_kwargs: Mapping[str, Any] | None = None, 

506) -> Any: 

507 relationship_info = RelationshipInfo( 2d KeCeq i a LeDer j e MeEes k b NeFet l f OeGeu m g PeHev n c QeIew o h ReJex p

508 back_populates=back_populates, 

509 cascade_delete=cascade_delete, 

510 passive_deletes=passive_deletes, 

511 link_model=link_model, 

512 sa_relationship=sa_relationship, 

513 sa_relationship_args=sa_relationship_args, 

514 sa_relationship_kwargs=sa_relationship_kwargs, 

515 ) 

516 return relationship_info 1dqiarjeskbtlfumgvncwohxp

517 

518 

519@__dataclass_transform__(kw_only_default=True, field_descriptors=(Field, FieldInfo)) 1daebfgch

520class SQLModelMetaclass(ModelMetaclass, DeclarativeMeta): 1daebfgch

521 __tablename__: str 1daebfgch

522 __sqlmodel_relationships__: dict[str, RelationshipInfo] 1daebfgch

523 model_config: SQLModelConfig 1daebfgch

524 model_fields: ClassVar[dict[str, FieldInfo]] 1daebfgch

525 

526 # Replicate SQLAlchemy 

527 def __setattr__(cls, name: str, value: Any) -> None: # ty: ignore[invalid-method-override] 1daebfgch

528 if is_table_model_class(cls): 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

529 DeclarativeMeta.__setattr__(cls, name, value) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

530 else: 

531 super().__setattr__(name, value) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

532 

533 def __delattr__(cls, name: str) -> None: # ty: ignore[invalid-method-override] 1daebfgch

534 if is_table_model_class(cls): 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dV W VcWc?cXcxbwc@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!d4 5 Zc0c@c1cybxc]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#d% ' 3c4c[c5czbyc_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$d/ : 7c8c]c9cAbzc{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%d_ ` #c$c^c%cBbAc}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'ddbeb(c)c_c*cCbBcacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dmbnb,c-c`c.cDbCcccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)dvbwb:c;c{c=cEbDcecfcF Be

535 DeclarativeMeta.__delattr__(cls, name) 2d @b[ba ]b^be _b`bb {b|bf }b~bg acbcc ccdch ecfc

536 else: 

537 super().__delattr__(name) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dV W VcWc?cXcxbwc@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!d4 5 Zc0c@c1cybxc]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#d% ' 3c4c[c5czbyc_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$d/ : 7c8c]c9cAbzc{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%d_ ` #c$c^c%cBbAc}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'ddbeb(c)c_c*cCbBcacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dmbnb,c-c`c.cDbCcccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)dvbwb:c;c{c=cEbDcecfcF Be

538 

539 # From Pydantic 

540 def __new__( 1daebfgch

541 cls, 

542 name: str, 

543 bases: tuple[type[Any], ...], 

544 class_dict: dict[str, Any], 

545 **kwargs: Any, 

546 ) -> Any: 

547 relationships: dict[str, RelationshipInfo] = {} 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

548 dict_for_pydantic = {} 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

549 original_annotations = get_annotations(class_dict) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

550 pydantic_annotations = {} 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

551 relationship_annotations = {} 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

552 for k, v in class_dict.items(): 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

553 if isinstance(v, RelationshipInfo): 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

554 relationships[k] = v 1dqiarjeskbtlfumgvncwohxp

555 else: 

556 dict_for_pydantic[k] = v 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

557 for k, v in original_annotations.items(): 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

558 if k in relationships: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

559 relationship_annotations[k] = v 1dqiarjeskbtlfumgvncwohxp

560 else: 

561 pydantic_annotations[k] = v 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

562 dict_used = { 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

563 **dict_for_pydantic, 

564 "__weakref__": None, 

565 "__sqlmodel_relationships__": relationships, 

566 "__annotations__": pydantic_annotations, 

567 } 

568 # Set default __tablename__ before class creation so it's part of the 

569 # class dict, unless the user supplied one. 

570 if "__tablename__" not in class_dict: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

571 dict_used["__tablename__"] = name.lower() 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1c1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5c2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9c3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%c4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*c5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.c6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=c7eecfcF Be

572 # Duplicate logic from Pydantic to filter config kwargs because if they are 

573 # passed directly including the registry Pydantic will pass them over to the 

574 # superclass causing an error 

575 allowed_config_kwargs: set[str] = { 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

576 key 

577 for key in dir(BaseConfig) 

578 if not ( 

579 key.startswith("__") and key.endswith("__") 

580 ) # skip dunder methods and attributes 

581 } 

582 config_kwargs = { 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

583 key: kwargs[key] for key in kwargs.keys() & allowed_config_kwargs 

584 } 

585 new_cls = cast( 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

586 "SQLModel", super().__new__(cls, name, bases, dict_used, **config_kwargs) 

587 ) 

588 new_cls.__annotations__ = { 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

589 **relationship_annotations, 

590 **pydantic_annotations, 

591 **new_cls.__annotations__, 

592 } 

593 

594 def get_config(name: str) -> Any: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

595 config_class_value = new_cls.model_config.get(name, Undefined) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

596 if config_class_value is not Undefined: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

597 return config_class_value 2@b[b]b^b_b`b{b|b}b~bacbcccdcecfc

598 kwarg_value = kwargs.get(name, Undefined) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

599 if kwarg_value is not Undefined: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

600 return kwarg_value 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

601 return Undefined 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

602 

603 config_table = get_config("table") 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

604 if config_table is True: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T UcU gcFci ,d-d9dseV W VcWc?cXcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 Yc3 hcHcj :d;d!dme4 5 Zc0c@c1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # 2c$ icJck @d[d#dne% ' 3c4c[c5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - 6c. jcLcl _d`d$dte/ : 7c8c]c9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] !c^ kcNcm }d~d%doe_ ` #c$c^c%cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbb'ccblcPcn cede'dpedbeb(c)c_c*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkb+clbmcRco gehe(dqembnb,c-c`c.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtb/cubncTcp kele)drevbwb:c;c{c=cEbDc7eecfcF Be

605 # If it was passed by kwargs, ensure it's also set in config 

606 new_cls.model_config["table"] = config_table 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

607 for k, v in get_model_fields(new_cls).items(): 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

608 col = get_column_from_field(v) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

609 setattr(new_cls, k, col) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

610 # Set a config flag to tell FastAPI that this should be read with a field 

611 # in orm_mode instead of preemptively converting it to a dict. 

612 # This could be done by reading new_cls.model_config['table'] in FastAPI, but 

613 # that's very specific about SQLModel, so let's have another config that 

614 # other future tools based on Pydantic can use. 

615 new_cls.model_config["read_from_attributes"] = True # ty: ignore[invalid-key] 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T U gcFci V W Xcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 3 hcHcj 4 5 1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # $ icJck % ' 5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - . jcLcl / : 9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] ^ kcNcm _ ` %cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbbcblcPcn dbeb*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkblbmcRco mbnb.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtbubncTcp vbwb=cEbDcecfcF

616 # For compatibility with older versions 

617 # TODO: remove this in the future 

618 new_cls.model_config["read_with_orm_mode"] = True # ty: ignore[invalid-key] 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T U gcFci V W Xcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 3 hcHcj 4 5 1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # $ icJck % ' 5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - . jcLcl / : 9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] ^ kcNcm _ ` %cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbbcblcPcn dbeb*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkblbmcRco mbnb.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtbubncTcp vbwb=cEbDcecfcF

619 

620 config_registry = get_config("registry") 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

621 if config_registry is not Undefined: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

622 config_registry = cast(registry, config_registry) 1daebfgch

623 # If it was passed by kwargs, ensure it's also set in config 

624 new_cls.model_config["registry"] = config_table 1daebfgch

625 setattr(new_cls, "_sa_registry", config_registry) # noqa: B010 1daebfgch

626 setattr(new_cls, "metadata", config_registry.metadata) # noqa: B010 1daebfgch

627 setattr(new_cls, "__abstract__", True) # noqa: B010 1daebfgch

628 return new_cls 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

629 

630 # Override SQLAlchemy, allow both SQLAlchemy and plain Pydantic models 

631 def __init__( 1daebfgch

632 cls, classname: str, bases: tuple[type, ...], dict_: dict[str, Any], **kw: Any 

633 ) -> None: 

634 # Only one of the base classes (or the current one) should be a table model 

635 # this allows FastAPI cloning a SQLModel for the response_model without 

636 # trying to create a new SQLAlchemy, for a new table, with the same name, that 

637 # triggers an error 

638 base_is_table = any(is_table_model_class(base) for base in bases) 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

639 if is_table_model_class(cls) and not base_is_table: 2d zdAdPdTdQdUdO #b$bocEcVb|c}c*dP G Q +dFbGb3bq R S T U gcFci ,d-d9dseV W Xcxbwc0e@b[by uea ndodDdVdEdWdX %b'bpcGcWb~cad.dY H Z /dHbIb4br 0 1 2 3 hcHcj :d;d!dme4 5 1cybxc1e]b^bz vee pdqdFdXdGdYd6 (b)bqcIcXbbdcd=d7 I 8 ?dJbKb5bs 9 ! # $ icJck @d[d#dne% ' 5czbyc2e_b`bA web BdCdRdZdSd0d( *b+brcKcYbdded]d) J * ^dLbMb6bt + , - . jcLcl _d`d$dte/ : 9cAbzc3e{b|bB xef rdsdHd1dId2d; ,b-bscMcZbfdgd{d= K ? |dNbOb7bu @ [ ] ^ kcNcm }d~d%doe_ ` %cBbAc4e}b~bC yeg tdudJd3dKd4d{ .b/btcOc0bhdidae| L } bePbQb8bv ~ abbbcblcPcn cede'dpedbeb*cCbBc5eacbcD zec vdwdLd5dMd6dfb:b;bucQc1bjdkdeegbM hbfeRbSb9bw ibjbkblbmcRco gehe(dqembnb.cDbCc6eccdcE Aeh xdydNd7dOd8dob=b?bvcSc2bldmdiepbN qbjeTbUb!bx rbsbtbubncTcp kele)drevbwb=cEbDc7eecfcF Be

640 for rel_name, rel_info in cls.__sqlmodel_relationships__.items(): 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T U gcFci V W Xcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 3 hcHcj 4 5 1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # $ icJck % ' 5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - . jcLcl / : 9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] ^ kcNcm _ ` %cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbbcblcPcn dbeb*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkblbmcRco mbnb.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtbubncTcp vbwb=cEbDcecfcF

641 if rel_info.sa_relationship: 1dqiarjeskbtlfumgvncwohxp

642 # There's a SQLAlchemy relationship declared, that takes precedence 

643 # over anything else, use that and continue with the next attribute 

644 setattr(cls, rel_name, rel_info.sa_relationship) # Fix #315 1qrstuvwx

645 continue 1qrstuvwx

646 raw_ann = cls.__annotations__[rel_name] 1diajekblfmgncohp

647 origin: Any = get_origin(raw_ann) 1diajekblfmgncohp

648 if origin is Mapped: 1diajekblfmgncohp

649 ann = raw_ann.__args__[0] 

650 else: 

651 ann = raw_ann 1diajekblfmgncohp

652 # Plain forward references, for models not yet defined, are not 

653 # handled well by SQLAlchemy without Mapped, so, wrap the 

654 # annotations in Mapped here 

655 cls.__annotations__[rel_name] = Mapped[ann] 1diajekblfmgncohp

656 relationship_to = get_relationship_to( 1diajekblfmgncohp

657 name=rel_name, rel_info=rel_info, annotation=ann 

658 ) 

659 rel_kwargs: dict[str, Any] = {} 1diajekblfmgncohp

660 if rel_info.back_populates: 1diajekblfmgncohp

661 rel_kwargs["back_populates"] = rel_info.back_populates 1diajekblfmgncohp

662 if rel_info.cascade_delete: 1diajekblfmgncohp

663 rel_kwargs["cascade"] = "all, delete-orphan" 1daebfgch

664 if rel_info.passive_deletes: 1diajekblfmgncohp

665 rel_kwargs["passive_deletes"] = rel_info.passive_deletes 1diajekblfmgncohp

666 if rel_info.link_model: 1diajekblfmgncohp

667 ins = inspect(rel_info.link_model) 1daebfgch

668 local_table = getattr(ins, "local_table") # noqa: B009 1daebfgch

669 if local_table is None: 1daebfgch

670 raise RuntimeError( 

671 "Couldn't find the secondary table for " 

672 f"model {rel_info.link_model}" 

673 ) 

674 rel_kwargs["secondary"] = local_table 1daebfgch

675 rel_args: list[Any] = [] 1diajekblfmgncohp

676 if rel_info.sa_relationship_args: 1diajekblfmgncohp

677 rel_args.extend(rel_info.sa_relationship_args) 

678 if rel_info.sa_relationship_kwargs: 1diajekblfmgncohp

679 rel_kwargs.update(rel_info.sa_relationship_kwargs) 

680 rel_value = relationship(relationship_to, *rel_args, **rel_kwargs) 1diajekblfmgncohp

681 setattr(cls, rel_name, rel_value) # Fix #315 1diajekblfmgncohp

682 # SQLAlchemy no longer uses dict_ 

683 # Ref: https://github.com/sqlalchemy/sqlalchemy/commit/428ea01f00a9cc7f85e435018565eb6da7af1b77 

684 # Tag: 1.4.36 

685 DeclarativeMeta.__init__(cls, classname, bases, dict_, **kw) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T U gcFci V W Xcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 3 hcHcj 4 5 1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # $ icJck % ' 5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - . jcLcl / : 9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] ^ kcNcm _ ` %cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbbcblcPcn dbeb*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkblbmcRco mbnb.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtbubncTcp vbwb=cEbDcecfcF

686 else: 

687 ModelMetaclass.__init__(cls, classname, bases, dict_, **kw) 2d zdAdPdTdQdUd#b$b*d+d,d-d9dse0e@b[by uea ndodDdVdEdWd%b'b.d/d:d;d!dme1e]b^bz vee pdqdFdXdGdYd(b)b=d?d@d[d#dne2e_b`bA web BdCdRdZdSd0d*b+b]d^d_d`d$dte3e{b|bB xef rdsdHd1dId2d,b-b{d|d}d~d%doe4e}b~bC yeg tdudJd3dKd4d.b/baebecede'dpe5eacbcD zec vdwdLd5dMd6d:b;beefegehe(dqe6eccdcE Aeh xdydNd7dOd8d=b?biejekele)dre7eecfcF Be

688 

689 

690def get_sqlalchemy_type(field: Any) -> Any: 1daebfgch

691 field_info = field 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

692 sa_type = _get_sqlmodel_field_value(field_info, "sa_type", Undefined) # noqa: B009 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

693 if sa_type is not Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

694 return sa_type 

695 

696 type_ = get_sa_type_from_field(field) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

697 metadata = get_field_metadata(field) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

698 

699 # Check enums first as an enum can also be a str, needed by Pydantic/FastAPI 

700 if issubclass(type_, Enum): 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

701 return sa_Enum(type_) 2d #b$ba %b'be (b)bb *b+bf ,b-bg .b/bc :b;bh =b?b

702 if issubclass( 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

703 type_, 

704 ( 

705 str, 

706 ipaddress.IPv4Address, 

707 ipaddress.IPv4Network, 

708 ipaddress.IPv6Address, 

709 ipaddress.IPv6Network, 

710 Path, 

711 EmailStr, 

712 ), 

713 ): 

714 max_length = getattr(metadata, "max_length", None) 2d ocVbP G Q FbGb3bq R S T U gci V W xbwc@b[by a pcWbY H Z HbIb4br 0 1 2 3 hcj 4 5 ybxc]b^bz e qcXb7 I 8 JbKb5bs 9 ! # $ ick % ' zbyc_b`bA b rcYb) J * LbMb6bt + , - . jcl / : Abzc{b|bB f scZb= K ? NbOb7bu @ [ ] ^ kcm _ ` BbAc}b~bC g tc0b| L } PbQb8bv ~ abbbcblcn dbebCbBcacbcD c uc1bgbM hbRbSb9bw ibjbkblbmco mbnbDbCcccdcE h vc2bpbN qbTbUb!bx rbsbtbubncp vbwbEbDcecfcF

715 if max_length: 2d ocVbP G Q FbGb3bq R S T U gci V W xbwc@b[by a pcWbY H Z HbIb4br 0 1 2 3 hcj 4 5 ybxc]b^bz e qcXb7 I 8 JbKb5bs 9 ! # $ ick % ' zbyc_b`bA b rcYb) J * LbMb6bt + , - . jcl / : Abzc{b|bB f scZb= K ? NbOb7bu @ [ ] ^ kcm _ ` BbAc}b~bC g tc0b| L } PbQb8bv ~ abbbcblcn dbebCbBcacbcD c uc1bgbM hbRbSb9bw ibjbkblbmco mbnbDbCcccdcE h vc2bpbN qbTbUb!bx rbsbtbubncp vbwbEbDcecfcF

716 return AutoString(length=max_length) 

717 return AutoString 2d ocVbP G Q FbGb3bq R S T U gci V W xbwc@b[by a pcWbY H Z HbIb4br 0 1 2 3 hcj 4 5 ybxc]b^bz e qcXb7 I 8 JbKb5bs 9 ! # $ ick % ' zbyc_b`bA b rcYb) J * LbMb6bt + , - . jcl / : Abzc{b|bB f scZb= K ? NbOb7bu @ [ ] ^ kcm _ ` BbAc}b~bC g tc0b| L } PbQb8bv ~ abbbcblcn dbebCbBcacbcD c uc1bgbM hbRbSb9bw ibjbkblbmco mbnbDbCcccdcE h vc2bpbN qbTbUb!bx rbsbtbubncp vbwbEbDcecfcF

718 if issubclass(type_, float): 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

719 return Float 

720 if issubclass(type_, bool): 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

721 return Boolean 1daebfgch

722 if issubclass(type_, int): 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

723 return Integer 2d ocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a pcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e qcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b rcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f scMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g tcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c ucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h vcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

724 if issubclass(type_, datetime): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

725 return DateTime 

726 if issubclass(type_, date): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

727 return Date 

728 if issubclass(type_, timedelta): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

729 return Interval 

730 if issubclass(type_, time): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

731 return Time 

732 if issubclass(type_, bytes): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

733 return LargeBinary 

734 if issubclass(type_, Decimal): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

735 return Numeric( 1daebfgch

736 precision=getattr(metadata, "max_digits", None), 

737 scale=getattr(metadata, "decimal_places", None), 

738 ) 

739 if issubclass(type_, uuid.UUID): 2d O #b$bUcVcWca X %b'bYcZc0ce 6 (b)b2c3c4cb ( *b+b6c7c8cf ; ,b-b!c#c$cg { .b/b'c(c)cc fb:b;b+c,c-ch ob=b?b/c:c;c

740 return Uuid 2d O #b$ba X %b'be 6 (b)bb ( *b+bf ; ,b-bg { .b/bc fb:b;bh ob=b?b

741 raise ValueError(f"{type_} has no matching SQLAlchemy type") 2UcVcWcYcZc0c2c3c4c6c7c8c!c#c$c'c(c)c+c,c-c/c:c;c

742 

743 

744def get_column_from_field(field: Any) -> Column: 1daebfgch

745 field_info = field 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

746 sa_column = _get_sqlmodel_field_value(field_info, "sa_column", Undefined) 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

747 if isinstance(sa_column, Column): 2d O #b$bocEcVb|c}cP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWb~cadY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXbbdcd7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYbdded) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZbfdgd= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0bhdid| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bjdkdgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bldmdpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

748 return sa_column 2|c}c~cadbdcdddedfdgdhdidjdkdldmd

749 sa_type = get_sqlalchemy_type(field) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

750 primary_key = _get_sqlmodel_field_value(field_info, "primary_key", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

751 if primary_key is Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

752 primary_key = False 2d #b$bocEcVbP G Q FbGb3bq R S T U gci V W xbwc@b[by a %b'bpcGcWbY H Z HbIb4br 0 1 2 3 hcj 4 5 ybxc]b^bz e (b)bqcIcXb7 I 8 JbKb5bs 9 ! # $ ick % ' zbyc_b`bA b *b+brcKcYb) J * LbMb6bt + , - . jcl / : Abzc{b|bB f ,b-bscMcZb= K ? NbOb7bu @ [ ] ^ kcm _ ` BbAc}b~bC g .b/btcOc0b| L } PbQb8bv ~ abbbcblcn dbebCbBcacbcD c :b;bucQc1bgbM hbRbSb9bw ibjbkblbmco mbnbDbCcccdcE h =b?bvcSc2bpbN qbTbUb!bx rbsbtbubncp vbwbEbDcecfcF

753 index = _get_sqlmodel_field_value(field_info, "index", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

754 if index is Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

755 index = False 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

756 nullable = not primary_key and is_field_noneable(field) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

757 # Override derived nullability if the nullable property is set explicitly 

758 # on the field 

759 field_nullable = _get_sqlmodel_field_value(field_info, "nullable", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

760 if field_nullable is not Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

761 assert not isinstance(field_nullable, UndefinedType) 2U gcFc3 hcHc$ icJc. jcLc^ kcNccblcPclbmcRcubncTc

762 nullable = field_nullable 2U gcFc3 hcHc$ icJc. jcLc^ kcNccblcPclbmcRcubncTc

763 args = [] 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

764 foreign_key = _get_sqlmodel_field_value(field_info, "foreign_key", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

765 if foreign_key is Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

766 foreign_key = None 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

767 unique = _get_sqlmodel_field_value(field_info, "unique", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

768 if unique is Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

769 unique = False 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

770 if foreign_key: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

771 ondelete_value = _get_sqlmodel_field_value(field_info, "ondelete", Undefined) 2d G 3bq i a H 4br j e I 5bs k b J 6bt l f K 7bu m g L 8bv n c M 9bw o h N !bx p

772 if ondelete_value is Undefined: 2d G 3bq i a H 4br j e I 5bs k b J 6bt l f K 7bu m g L 8bv n c M 9bw o h N !bx p

773 ondelete_value = None 1dGqaHreIsbJtfKugLvcMwhNx

774 if ondelete_value == "SET NULL" and not nullable: 2d G 3bq i a H 4br j e I 5bs k b J 6bt l f K 7bu m g L 8bv n c M 9bw o h N !bx p

775 raise RuntimeError('ondelete="SET NULL" requires nullable=True') 1ijklmnop

776 assert isinstance(foreign_key, str) 2d G 3bq a H 4br e I 5bs b J 6bt f K 7bu g L 8bv c M 9bw h N !bx

777 assert isinstance(ondelete_value, (str, type(None))) # for typing 2d G 3bq a H 4br e I 5bs b J 6bt f K 7bu g L 8bv c M 9bw h N !bx

778 args.append(ForeignKey(foreign_key, ondelete=ondelete_value)) 2d G 3bq a H 4br e I 5bs b J 6bt f K 7bu g L 8bv c M 9bw h N !bx

779 kwargs: dict[str, Any] = { 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

780 "primary_key": primary_key, 

781 "nullable": nullable, 

782 "index": index, 

783 "unique": unique, 

784 } 

785 sa_default = Undefined 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

786 if field_info.default_factory: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

787 sa_default = field_info.default_factory 2d O a X e 6 b ( f ; g { c fbh ob

788 elif field_info.default is not Undefined: 2d #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c :b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h =b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

789 sa_default = field_info.default 2d ocEcVbP G Q q R S T UcU gcFci V W VcWc?cXcxbwc@b[by a pcGcWbY H Z r 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e qcIcXb7 I 8 s 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b rcKcYb) J * t + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f scMcZb= K ? u @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g tcOc0b| L } v ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c ucQc1bgbM hbw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h vcSc2bpbN qbx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

790 if sa_default is not Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

791 kwargs["default"] = sa_default 2d O ocEcVbP G Q q R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X pcGcWbY H Z r 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 qcIcXb7 I 8 s 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( rcKcYb) J * t + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; scMcZb= K ? u @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { tcOc0b| L } v ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fbucQc1bgbM hbw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h obvcSc2bpbN qbx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

792 sa_column_args = _get_sqlmodel_field_value(field_info, "sa_column_args", Undefined) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

793 if sa_column_args is not Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

794 args.extend(list(cast(Sequence[Any], sa_column_args))) 2ocpcqcrcsctcucvc

795 sa_column_kwargs = _get_sqlmodel_field_value( 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

796 field_info, "sa_column_kwargs", Undefined 

797 ) 

798 if sa_column_kwargs is not Undefined: 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

799 kwargs.update(cast(dict[Any, Any], sa_column_kwargs)) 2EcGcIcKcMcOcQcSc

800 return Column(sa_type, *args, **kwargs) 2d O #b$bocEcVbP G Q FbGb3bq R S T UcU gcFci V W VcWc?cXcxbwc@b[by a X %b'bpcGcWbY H Z HbIb4br 0 1 2 Yc3 hcHcj 4 5 Zc0c@c1cybxc]b^bz e 6 (b)bqcIcXb7 I 8 JbKb5bs 9 ! # 2c$ icJck % ' 3c4c[c5czbyc_b`bA b ( *b+brcKcYb) J * LbMb6bt + , - 6c. jcLcl / : 7c8c]c9cAbzc{b|bB f ; ,b-bscMcZb= K ? NbOb7bu @ [ ] !c^ kcNcm _ ` #c$c^c%cBbAc}b~bC g { .b/btcOc0b| L } PbQb8bv ~ abbb'ccblcPcn dbeb(c)c_c*cCbBcacbcD c fb:b;bucQc1bgbM hbRbSb9bw ibjbkb+clbmcRco mbnb,c-c`c.cDbCcccdcE h ob=b?bvcSc2bpbN qbTbUb!bx rbsbtb/cubncTcp vbwb:c;c{c=cEbDcecfcF

801 

802 

803default_registry = registry() 1daebfgch

804 

805_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 1daebfgch

806 

807 

808class SQLModel(BaseModel, metaclass=SQLModelMetaclass, registry=default_registry): 1daebfgch

809 # SQLAlchemy needs to set weakref(s), Pydantic will set the other slots values 

810 __slots__ = ("__weakref__",) 1daebfgch

811 __sqlmodel_relationships__: ClassVar[builtins.dict[str, RelationshipInfo]] 1daebfgch

812 __name__: ClassVar[str] 1daebfgch

813 metadata: ClassVar[MetaData] 1daebfgch

814 __allow_unmapped__ = True # https://docs.sqlalchemy.org/en/20/changelog/migration_20.html#migration-20-step-six 1daebfgch

815 model_config = SQLModelConfig(from_attributes=True) 1daebfgch

816 

817 # Typing spec says `__new__` returning `Any` overrides normal constructor 

818 # behavior, but a missing annotation does not: 

819 def __new__(cls, *args: Any, **kwargs: Any): # type: ignore[no-untyped-def] 1daebfgch

820 new_object = super().__new__(cls) 2YoemZo0oZn0n1nPffmgmhmimjmkmqkrkskzdAdPdTd1o2o3o4o5o}l~l6oQdUdamO {lIoQo*dP G Q +dFbGbq R S T U ,d-d9dseV W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky ue7ovm8o9o8n9n!nhfwmxmymzmAmBm(f)f*fndodDdVd!o#o$o%o'o(l)l(oEdWd*lX 9lJoRo.dY H Z /dHbIbr 0 1 2 3 :d;d!dme4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz ve)oMm*o+o*n+n,nifNmOmPmQmRmSmPgQgRgpdqdFdXd,o-o.o/o:o+l,l;oGdYd-l6 !lKoSo=d7 I 8 ?dJbKbs 9 ! # $ @d[d#dne% ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we=o3m?o@o?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdRdZd[o]o^o_o`obmcm{oSd0ddm( |lLoTo]d) J * ^dLbMbt + , - . _d`d$dte/ : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe|o-m}o~o}n~naojf.m/m:m;m=m?mphqhrhrdsdHd1dapbpcpdpep.l/lfpId2d:l; #lMoUo{d= K ? |dNbObu @ [ ] ^ }d~d%doe_ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yegpanhpiphoiojokfbncndnenfngn?h@h[htdudJd3djpkplpmpnp;l=lopKd4d?l{ $lNoVoae| L } bePbQbv ~ abbbcbcede'dpedbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zepprnqprpqorosolfsntnunvnwnxn0i1i2ivdwdLd5dsptpupvpwp@l[lxpMd6d]lfb%lOoWoeegbM hbfeRbSbw ibjbkblbgehe(dqembnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeypInzpApzoAoBomfJnKnLnMnNnOnAjBjCjxdydNd7dBpCpDpEpFp^l_lGpOd8d`lob'lPoXoiepbN qbjeTbUbx rbsbtbubkele)drevbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

821 # SQLAlchemy doesn't call __init__ on the base class when querying from DB 

822 # Ref: https://docs.sqlalchemy.org/en/14/orm/constructors.html 

823 # Set __fields_set__ here, that would have been set when calling __init__ 

824 # in the Pydantic model so that when SQLAlchemy sets attributes that are 

825 # added (e.g. when querying from DB) to the __fields_set__, this already exists 

826 init_pydantic_private_attrs(new_object) 2YoemZo0oZn0n1nPffmgmhmimjmkmqkrkskzdAdPdTd1o2o3o4o5o}l~l6oQdUdamO {lIoQo*dP G Q +dFbGbq R S T U ,d-d9dseV W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky ue7ovm8o9o8n9n!nhfwmxmymzmAmBm(f)f*fndodDdVd!o#o$o%o'o(l)l(oEdWd*lX 9lJoRo.dY H Z /dHbIbr 0 1 2 3 :d;d!dme4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz ve)oMm*o+o*n+n,nifNmOmPmQmRmSmPgQgRgpdqdFdXd,o-o.o/o:o+l,l;oGdYd-l6 !lKoSo=d7 I 8 ?dJbKbs 9 ! # $ @d[d#dne% ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we=o3m?o@o?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdRdZd[o]o^o_o`obmcm{oSd0ddm( |lLoTo]d) J * ^dLbMbt + , - . _d`d$dte/ : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe|o-m}o~o}n~naojf.m/m:m;m=m?mphqhrhrdsdHd1dapbpcpdpep.l/lfpId2d:l; #lMoUo{d= K ? |dNbObu @ [ ] ^ }d~d%doe_ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yegpanhpiphoiojokfbncndnenfngn?h@h[htdudJd3djpkplpmpnp;l=lopKd4d?l{ $lNoVoae| L } bePbQbv ~ abbbcbcede'dpedbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zepprnqprpqorosolfsntnunvnwnxn0i1i2ivdwdLd5dsptpupvpwp@l[lxpMd6d]lfb%lOoWoeegbM hbfeRbSbw ibjbkblbgehe(dqembnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeypInzpApzoAoBomfJnKnLnMnNnOnAjBjCjxdydNd7dBpCpDpEpFp^l_lGpOd8d`lob'lPoXoiepbN qbjeTbUbx rbsbtbubkele)drevbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

827 return new_object 2YoemZo0oZn0n1nPffmgmhmimjmkmqkrkskzdAdPdTd1o2o3o4o5o}l~l6oQdUdamO {lIoQo*dP G Q +dFbGbq R S T U ,d-d9dseV W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky ue7ovm8o9o8n9n!nhfwmxmymzmAmBm(f)f*fndodDdVd!o#o$o%o'o(l)l(oEdWd*lX 9lJoRo.dY H Z /dHbIbr 0 1 2 3 :d;d!dme4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz ve)oMm*o+o*n+n,nifNmOmPmQmRmSmPgQgRgpdqdFdXd,o-o.o/o:o+l,l;oGdYd-l6 !lKoSo=d7 I 8 ?dJbKbs 9 ! # $ @d[d#dne% ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we=o3m?o@o?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdRdZd[o]o^o_o`obmcm{oSd0ddm( |lLoTo]d) J * ^dLbMbt + , - . _d`d$dte/ : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe|o-m}o~o}n~naojf.m/m:m;m=m?mphqhrhrdsdHd1dapbpcpdpep.l/lfpId2d:l; #lMoUo{d= K ? |dNbObu @ [ ] ^ }d~d%doe_ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yegpanhpiphoiojokfbncndnenfngn?h@h[htdudJd3djpkplpmpnp;l=lopKd4d?l{ $lNoVoae| L } bePbQbv ~ abbbcbcede'dpedbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zepprnqprpqorosolfsntnunvnwnxn0i1i2ivdwdLd5dsptpupvpwp@l[lxpMd6d]lfb%lOoWoeegbM hbfeRbSbw ibjbkblbgehe(dqembnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeypInzpApzoAoBomfJnKnLnMnNnOnAjBjCjxdydNd7dBpCpDpEpFp^l_lGpOd8d`lob'lPoXoiepbN qbjeTbUbx rbsbtbubkele)drevbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

828 

829 def __init__(__pydantic_self__, **data: Any) -> None: 1daebfgch

830 # Uses something other than `self` the first arg to allow "self" as a 

831 # settable attribute 

832 

833 # SQLAlchemy does very dark black magic and modifies the __init__ method in 

834 # sqlalchemy.orm.instrumentation._generate_init() 

835 # so, to make SQLAlchemy work, it's needed to explicitly call __init__ to 

836 # trigger all the SQLAlchemy logic, it doesn't work using cls.__new__, setting 

837 # attributes obj.__dict__, etc. The __init__ method has to be called. But 

838 # there are cases where calling all the default logic is not ideal, e.g. 

839 # when calling Model.model_validate(), as the validation is done outside 

840 # of instance creation. 

841 # At the same time, __init__ is what users would normally call, by creating 

842 # a new instance, which should have validation and all the default logic. 

843 # So, to be able to set up the internal SQLAlchemy logic alone without 

844 # executing the rest, and support things like Model.model_validate(), we 

845 # use a contextvar to know if we should execute everything. 

846 if finish_init.get(): 2YoemZo0oZn0n1nPffmgmhmimjmkmqkrkskPd1o2o3o4o5o}l~l6oQdamO {lIo*dP G Q +dFbGbq R S T U ,d-d9dseV W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky 7ovm8o9o8n9n!nhfwmxmymzmAmBm(f)f*fDd!o#o$o%o'o(l)l(oEd*lX 9lJo.dY H Z /dHbIbr 0 1 2 3 :d;d!dme4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz )oMm*o+o*n+n,nifNmOmPmQmRmSmPgQgRgFd,o-o.o/o:o+l,l;oGd-l6 !lKo=d7 I 8 ?dJbKbs 9 ! # $ @d[d#dne% ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA =o3m?o@o?n@n[nQf4m5m6m7m8m9m@k[k]kRd[o]o^o_o`obmcm{oSddm( |lLo]d) J * ^dLbMbt + , - . _d`d$dte/ : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB |o-m}o~o}n~naojf.m/m:m;m=m?mphqhrhHdapbpcpdpep.l/lfpId:l; #lMo{d= K ? |dNbObu @ [ ] ^ }d~d%doe_ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC gpanhpiphoiojokfbncndnenfngn?h@h[hJdjpkplpmpnp;l=lopKd?l{ $lNoae| L } bePbQbv ~ abbbcbcede'dpedbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD pprnqprpqorosolfsntnunvnwnxn0i1i2iLdsptpupvpwp@l[lxpMd]lfb%lOoeegbM hbfeRbSbw ibjbkblbgehe(dqembnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE ypInzpApzoAoBomfJnKnLnMnNnOnAjBjCjNdBpCpDpEpFp^l_lGpOd`lob'lPoiepbN qbjeTbUbx rbsbtbubkele)drevbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF

847 sqlmodel_init(self=__pydantic_self__, data=data) 2YoemZo0oZn0n1nPffmgmhmimjmkmqkrkskPd1o2o3o4o5o}l~l6oQdamO {lIo*dP G Q +dFbGbq R S T U ,d-d9dseV W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky 7ovm8o9o8n9n!nhfwmxmymzmAmBm(f)f*fDd!o#o$o%o'o(l)l(oEd*lX 9lJo.dY H Z /dHbIbr 0 1 2 3 :d;d!dme4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz )oMm*o+o*n+n,nifNmOmPmQmRmSmPgQgRgFd,o-o.o/o:o+l,l;oGd-l6 !lKo=d7 I 8 ?dJbKbs 9 ! # $ @d[d#dne% ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA =o3m?o@o?n@n[nQf4m5m6m7m8m9m@k[k]kRd[o]o^o_o`obmcm{oSddm( |lLo]d) J * ^dLbMbt + , - . _d`d$dte/ : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB |o-m}o~o}n~naojf.m/m:m;m=m?mphqhrhHdapbpcpdpep.l/lfpId:l; #lMo{d= K ? |dNbObu @ [ ] ^ }d~d%doe_ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC gpanhpiphoiojokfbncndnenfngn?h@h[hJdjpkplpmpnp;l=lopKd?l{ $lNoae| L } bePbQbv ~ abbbcbcede'dpedbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD pprnqprpqorosolfsntnunvnwnxn0i1i2iLdsptpupvpwp@l[lxpMd]lfb%lOoeegbM hbfeRbSbw ibjbkblbgehe(dqembnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE ypInzpApzoAoBomfJnKnLnMnNnOnAjBjCjNdBpCpDpEpFp^l_lGpOd`lob'lPoiepbN qbjeTbUbx rbsbtbubkele)drevbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF

848 

849 def __setattr__(self, name: str, value: Any) -> None: 1daebfgch

850 if name in {"_sa_instance_state"}: 2emZn0n1nPffmgmhmimjmkmqkrkskzdAdTdUdO IoQoP G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky uevm8n9n!nhfwmxmymzmAmBm(f)f*fndodVdWdX JoRoY H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz veMm*n+n,nifNmOmPmQmRmSmPgQgRgpdqdXdYd6 KoSo7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we3m?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdZd0d( LoTo) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe-m}n~naojf.m/m:m;m=m?mphqhrhrdsd1d2d; MoUo= K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yeanhoiojokfbncndnenfngn?h@h[htdud3d4d{ NoVo| L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zernqorosolfsntnunvnwnxn0i1i2ivdwd5d6dfbOoWogbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeInzoAoBomfJnKnLnMnNnOnAjBjCjxdyd7d8dobPoXopbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

851 self.__dict__[name] = value 2emZn0n1nPffmgmhmimjmkmqkrkskO P G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky vm8n9n!nhfwmxmymzmAmBm(f)f*fX Y H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz Mm*n+n,nifNmOmPmQmRmSmPgQgRg6 7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA 3m?n@n[nQf4m5m6m7m8m9m@k[k]k( ) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB -m}n~naojf.m/m:m;m=m?mphqhrh; = K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC anhoiojokfbncndnenfngn?h@h[h{ | L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD rnqorosolfsntnunvnwnxn0i1i2ifbgbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE InzoAoBomfJnKnLnMnNnOnAjBjCjobpbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF

852 return 2emZn0n1nPffmgmhmimjmkmqkrkskO P G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky vm8n9n!nhfwmxmymzmAmBm(f)f*fX Y H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz Mm*n+n,nifNmOmPmQmRmSmPgQgRg6 7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA 3m?n@n[nQf4m5m6m7m8m9m@k[k]k( ) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB -m}n~naojf.m/m:m;m=m?mphqhrh; = K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC anhoiojokfbncndnenfngn?h@h[h{ | L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD rnqorosolfsntnunvnwnxn0i1i2ifbgbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE InzoAoBomfJnKnLnMnNnOnAjBjCjobpbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF

853 else: 

854 # Set in SQLAlchemy, before Pydantic to trigger events and updates 

855 if is_table_model_class(self.__class__) and is_instrumented(self, name): 2emZn0n1nPffmgmhmimjmkmqkrkskzdAdTdUdO IoQoP G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky uevm8n9n!nhfwmxmymzmAmBm(f)f*fndodVdWdX JoRoY H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz veMm*n+n,nifNmOmPmQmRmSmPgQgRgpdqdXdYd6 KoSo7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we3m?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdZd0d( LoTo) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe-m}n~naojf.m/m:m;m=m?mphqhrhrdsd1d2d; MoUo= K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yeanhoiojokfbncndnenfngn?h@h[htdud3d4d{ NoVo| L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zernqorosolfsntnunvnwnxn0i1i2ivdwd5d6dfbOoWogbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeInzoAoBomfJnKnLnMnNnOnAjBjCjxdyd7d8dobPoXopbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

856 set_attribute(self, name, value) 2emZn0n1nPffmgmhmimjmkmqkrkskO P G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky vm8n9n!nhfwmxmymzmAmBm(f)f*fX Y H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz Mm*n+n,nifNmOmPmQmRmSmPgQgRg6 7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA 3m?n@n[nQf4m5m6m7m8m9m@k[k]k( ) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB -m}n~naojf.m/m:m;m=m?mphqhrh; = K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC anhoiojokfbncndnenfngn?h@h[h{ | L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD rnqorosolfsntnunvnwnxn0i1i2ifbgbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE InzoAoBomfJnKnLnMnNnOnAjBjCjobpbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF

857 # Set in Pydantic model to trigger possible validation changes, only for 

858 # non relationship values 

859 if name not in self.__sqlmodel_relationships__: 2emZn0n1nPffmgmhmimjmkmqkrkskzdAdTdUdO IoQoP G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky uevm8n9n!nhfwmxmymzmAmBm(f)f*fndodVdWdX JoRoY H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz veMm*n+n,nifNmOmPmQmRmSmPgQgRgpdqdXdYd6 KoSo7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we3m?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdZd0d( LoTo) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe-m}n~naojf.m/m:m;m=m?mphqhrhrdsd1d2d; MoUo= K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yeanhoiojokfbncndnenfngn?h@h[htdud3d4d{ NoVo| L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zernqorosolfsntnunvnwnxn0i1i2ivdwd5d6dfbOoWogbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeInzoAoBomfJnKnLnMnNnOnAjBjCjxdyd7d8dobPoXopbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

860 super().__setattr__(name, value) 2emZn0n1nPffmgmhmimjmkmqkrkskzdAdTdUdO IoQoP G Q FbGbq R S T U V W xbtkukvkwkxkykzkAkBkCkDkEkFklmmmnmompmqmvfrmsmtmumwf2nxfGkyfzfAfHkIk3n4n5nJkKkLkMkNkOkPkQk6nRkSkTkUkVkWk7nXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?ky uevm8n9n!nhfwmxmymzmAmBm(f)f*fndodVdWdX JoRoY H Z HbIbr 0 1 2 3 4 5 yb+f,f-f.f/f:f;f=f?f@f[f]f^fCmDmEmFmGmHm8eImJmKmLm9e#n!e_f#e$e%e`f{f$n%n'n|f}f~fagbgcgdgeg(nfggghgigjgkg)nlgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgz veMm*n+n,nifNmOmPmQmRmSmPgQgRgpdqdXdYd6 KoSo7 I 8 JbKbs 9 ! # $ % ' zbSgTgUgVgWgXgYgZg0g1g2g3g4gTmUmVmWmXmYm'eZm0m1m2m(e-n)e5g*e+e,e6g7g.n/n:n8g9g!g#g$g%g'g(g;n)g*g+g,g-g.g=n/g:g;g=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohA we3m?n@n[nQf4m5m6m7m8m9m@k[k]kBdCdZd0d( LoTo) J * LbMbt + , - . / : Ab^k_k`k{k|k}k~kalblcldlelfl!m#m$m%m'm(mBf)m*m+m,mCf]nDfglEfFfGfhlil^n_n`njlklllmlnlolplql{nrlsltlulvlwl|nxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0lB xe-m}n~naojf.m/m:m;m=m?mphqhrhrdsd1d2d; MoUo= K ? NbObu @ [ ] ^ _ ` BbshthuhvhwhxhyhzhAhBhChDhEh@m[m]m^m_m`m-e{m|m}m~m.ebo/eFh:e;e=eGhHhcodoeoIhJhKhLhMhNhOhPhfoQhRhShThUhVhgoWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hC yeanhoiojokfbncndnenfngn?h@h[htdud3d4d{ NoVo| L } PbQbv ~ abbbcbdbebCb]h^h_h`h{h|h}h~haibicidieihninjnknlnmn?ennonpnqn@eko[efi]e^e_egihilomonoiijikiliminioipiooqirisitiuivipowixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZiD zernqorosolfsntnunvnwnxn0i1i2ivdwd5d6dfbOoWogbM hbRbSbw ibjbkblbmbnbDb3i4i5i6i7i8i9i!i#i$i%i'i(iynznAnBnCnDn`eEnFnGnHn{eto|e)i}e~eaf*i+iuovowo,i-i.i/i:i;i=i?ixo@i[i]i^i_i`iyo{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjE AeInzoAoBomfJnKnLnMnNnOnAjBjCjxdyd7d8dobPoXopbN qbTbUbx rbsbtbubvbwbEbDjEjFjGjHjIjJjKjLjMjNjOjPjPnQnRnSnTnUnbfVnWnXnYncfCodfQjefffgfRjSjDoEoFoTjUjVjWjXjYjZj0jGo1j2j3j4j5j6jHo7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~jF Be

861 

862 def __repr_args__(self) -> Sequence[tuple[str | None, Any]]: 1daebfgch

863 # Don't show SQLAlchemy private attributes 

864 return [ 29d!d#d$d%d'd(d)d

865 (k, v) 

866 for k, v in super().__repr_args__() 

867 if not (isinstance(k, str) and k.startswith("_sa_")) 

868 ] 

869 

870 @classmethod 1daebfgch

871 def model_validate( # ty: ignore[invalid-method-override] 1daebfgch

872 cls: type[_TSQLModel], 

873 obj: Any, 

874 *, 

875 strict: bool | None = None, 

876 from_attributes: bool | None = None, 

877 context: builtins.dict[str, Any] | None = None, 

878 update: builtins.dict[str, Any] | None = None, 

879 ) -> _TSQLModel: 

880 return sqlmodel_validate( 2emfmgmhmimjmkmzdAdTdUdIoQolmmmnmompmqmvfrmsmtmumwfxfyfzfAfuevmwmxmymzmAmBmndodVdWdJoRoCmDmEmFmGmHm8eImJmKmLm9e!e#e$e%eveMmNmOmPmQmRmSmpdqdXdYdKoSoTmUmVmWmXmYm'eZm0m1m2m(e)e*e+e,ewe3m4m5m6m7m8m9mBdCdZd0dLoTo!m#m$m%m'm(mBf)m*m+m,mCfDfEfFfGfxe-m.m/m:m;m=m?mrdsd1d2dMoUo@m[m]m^m_m`m-e{m|m}m~m.e/e:e;e=eyeanbncndnenfngntdud3d4dNoVohninjnknlnmn?ennonpnqn@e[e]e^e_ezernsntnunvnwnxnvdwd5d6dOoWoynznAnBnCnDn`eEnFnGnHn{e|e}e~eafAeInJnKnLnMnNnOnxdyd7d8dPoXoPnQnRnSnTnUnbfVnWnXnYncfdfefffgfBe

881 cls=cls, 

882 obj=obj, 

883 strict=strict, 

884 from_attributes=from_attributes, 

885 context=context, 

886 update=update, 

887 ) 

888 

889 def model_dump( 1daebfgch

890 self, 

891 *, 

892 mode: Literal["json", "python"] | str = "python", 

893 include: IncEx | None = None, 

894 exclude: IncEx | None = None, 

895 context: Any | None = None, # v2.7 

896 by_alias: bool | None = None, 

897 exclude_unset: bool = False, 

898 exclude_defaults: bool = False, 

899 exclude_none: bool = False, 

900 exclude_computed_fields: bool = False, # v2.12 

901 round_trip: bool = False, 

902 warnings: bool | Literal["none", "warn", "error"] = True, 

903 fallback: Callable[[Any], Any] | None = None, # v2.11 

904 serialize_as_any: bool = False, # v2.7 

905 polymorphic_serialization: bool | None = None, # v2.13 

906 ) -> builtins.dict[str, Any]: 

907 if PYDANTIC_MINOR_VERSION < (2, 11): 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

908 by_alias = by_alias or False 

909 extra_kwargs: dict[str, Any] = {} 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

910 extra_kwargs["context"] = context 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

911 extra_kwargs["serialize_as_any"] = serialize_as_any 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

912 if PYDANTIC_MINOR_VERSION >= (2, 11): 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

913 extra_kwargs["fallback"] = fallback 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

914 if PYDANTIC_MINOR_VERSION >= (2, 12): 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

915 extra_kwargs["exclude_computed_fields"] = exclude_computed_fields 2hf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohjfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

916 if PYDANTIC_MINOR_VERSION >= (2, 13): 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

917 extra_kwargs["polymorphic_serialization"] = polymorphic_serialization 2hf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohjfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

918 return super().model_dump( 2PfqkrkskzdAdPd}l~lQdam{lsetkukvkwkxkykzkAkBkCkDkEkFkvfwfxfGkyfzfAfHkIkJkKkLkMkNkOkPkQkRkSkTkUkVkWkXkYkZk0k1k2k3k4k5k6k7k8k9k!k#k$k%k'k(k)k*k+k,k-k.k/k:k;k=k?khf(f)f*fndodDd(l)lEd*l9lme+f,f-f.f/f:f;f=f?f@f[f]f^f8e9e!e_f#e$e%e`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgifPgQgRgpdqdFd+l,lGd-l!lneSgTgUgVgWgXgYgZg0g1g2g3g4g'e(e)e5g*e+e,e6g7g8g9g!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~gahbhchdhehfhghhhihjhkhlhmhnhohQf@k[k]kBdCdRdbmcmSddm|lte^k_k`k{k|k}k~kalblcldlelflBfCfDfglEfFfGfhliljlklllmlnlolplqlrlsltlulvlwlxlylzlAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl0ljfphqhrhrdsdHd.l/lId:l#loeshthuhvhwhxhyhzhAhBhChDhEh-e.e/eFh:e;e=eGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=hkf?h@h[htdudJd;l=lKd?l$lpe]h^h_h`h{h|h}h~haibicidiei?e@e[efi]e^e_egihiiijikiliminioipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZilf0i1i2ivdwdLd@l[lMd]l%lqe3i4i5i6i7i8i9i!i#i$i%i'i(i`e{e|e)i}e~eaf*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzjmfAjBjCjxdydNd^l_lOd`l'lreDjEjFjGjHjIjJjKjLjMjNjOjPjbfcfdfQjefffgfRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:j;j=j?j@j[j]j^j_j`j{j|j}j~j

919 mode=mode, 

920 include=include, 

921 exclude=exclude, 

922 by_alias=by_alias, 

923 exclude_unset=exclude_unset, 

924 exclude_defaults=exclude_defaults, 

925 exclude_none=exclude_none, 

926 round_trip=round_trip, 

927 warnings=warnings, 

928 **extra_kwargs, 

929 ) 

930 

931 @deprecated( 1daebfgch

932 """ 

933 🚨 `obj.dict()` was deprecated in SQLModel 0.0.14, you should 

934 instead use `obj.model_dump()`. 

935 """ 

936 ) 

937 def dict( 1daebfgch

938 self, 

939 *, 

940 include: IncEx | None = None, 

941 exclude: IncEx | None = None, 

942 by_alias: bool = False, 

943 exclude_unset: bool = False, 

944 exclude_defaults: bool = False, 

945 exclude_none: bool = False, 

946 ) -> builtins.dict[str, Any]: 

947 return self.model_dump( 2{l9l!l|l#l$l%l'l

948 include=include, 

949 exclude=exclude, 

950 by_alias=by_alias, 

951 exclude_unset=exclude_unset, 

952 exclude_defaults=exclude_defaults, 

953 exclude_none=exclude_none, 

954 ) 

955 

956 @classmethod 1daebfgch

957 @deprecated( 1daebfgch

958 """ 

959 🚨 `obj.from_orm(data)` was deprecated in SQLModel 0.0.14, you should 

960 instead use `obj.model_validate(data)`. 

961 """ 

962 ) 

963 def from_orm( 1daebfgch

964 cls: type[_TSQLModel], 

965 obj: Any, 

966 update: builtins.dict[str, Any] | None = None, 

967 ) -> _TSQLModel: 

968 return cls.model_validate(obj, update=update) 2IoJoKoLoMoNoOoPo

969 

970 @classmethod 1daebfgch

971 @deprecated( 1daebfgch

972 """ 

973 🚨 `obj.parse_obj(data)` was deprecated in SQLModel 0.0.14, you should 

974 instead use `obj.model_validate(data)`. 

975 """ 

976 ) 

977 def parse_obj( 1daebfgch

978 cls: type[_TSQLModel], 

979 obj: Any, 

980 update: builtins.dict[str, Any] | None = None, 

981 ) -> _TSQLModel: 

982 return cls.model_validate(obj, update=update) 2QoRoSoToUoVoWoXo

983 

984 def sqlmodel_update( 1daebfgch

985 self: _TSQLModel, 

986 obj: builtins.dict[str, Any] | BaseModel, 

987 *, 

988 update: builtins.dict[str, Any] | None = None, 

989 ) -> _TSQLModel: 

990 use_update = (update or {}).copy() 2PfvfwfxfyfzfAfy hf8e9e!e#e$e%ez if'e(e)e*e+e,eA QfBfCfDfEfFfGfB jf-e.e/e:e;e=eC kf?e@e[e]e^e_eD lf`e{e|e}e~eafE mfbfcfdfefffgfF

991 if isinstance(obj, dict): 2PfvfwfxfyfzfAfy hf8e9e!e#e$e%ez if'e(e)e*e+e,eA QfBfCfDfEfFfGfB jf-e.e/e:e;e=eC kf?e@e[e]e^e_eD lf`e{e|e}e~eafE mfbfcfdfefffgfF

992 for key, value in {**obj, **use_update}.items(): 2PfvfwfxfyfzfAfhf8e9e!e#e$e%eif'e(e)e*e+e,eQfBfCfDfEfFfGfjf-e.e/e:e;e=ekf?e@e[e]e^e_elf`e{e|e}e~eafmfbfcfdfefffgf

993 if key in get_model_fields(self): 2PfvfwfxfyfzfAfhf8e9e!e#e$e%eif'e(e)e*e+e,eQfBfCfDfEfFfGfjf-e.e/e:e;e=ekf?e@e[e]e^e_elf`e{e|e}e~eafmfbfcfdfefffgf

994 setattr(self, key, value) 2PfvfwfxfyfzfAfhf8e9e!e#e$e%eif'e(e)e*e+e,eQfBfCfDfEfFfGfjf-e.e/e:e;e=ekf?e@e[e]e^e_elf`e{e|e}e~eafmfbfcfdfefffgf

995 elif isinstance(obj, BaseModel): 1yzABCDEF

996 for key in get_model_fields(obj): 1yzABCDEF

997 if key in use_update: 1yzABCDEF

998 value = use_update.pop(key) 

999 else: 

1000 value = getattr(obj, key) 1yzABCDEF

1001 setattr(self, key, value) 1yzABCDEF

1002 for remaining_key, value in use_update.items(): 1yzABCDEF

1003 if remaining_key in get_model_fields(self): 1yzABCDEF

1004 setattr(self, remaining_key, value) 1yzABCDEF

1005 else: 

1006 raise ValueError( 

1007 "Can't use sqlmodel_update() with something that " 

1008 f"is not a dict or SQLModel or Pydantic model: {obj}" 

1009 ) 

1010 return self 2PfvfwfxfyfzfAfy hf8e9e!e#e$e%ez if'e(e)e*e+e,eA QfBfCfDfEfFfGfB jf-e.e/e:e;e=eC kf?e@e[e]e^e_eD lf`e{e|e}e~eafE mfbfcfdfefffgfF