Coverage for sqlmodel / _compat.py: 93%

195 statements  

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

1import sys 1deafbghc

2import types 1deafbghc

3from collections.abc import Generator 1deafbghc

4from contextlib import contextmanager 1deafbghc

5from contextvars import ContextVar 1deafbghc

6from dataclasses import dataclass 1deafbghc

7from typing import ( 1deafbghc

8 TYPE_CHECKING, 

9 Annotated, 

10 Any, 

11 ForwardRef, 

12 TypeAlias, 

13 TypeVar, 

14 Union, 

15 get_args, 

16 get_origin, 

17) 

18 

19from annotated_types import MaxLen 1deafbghc

20from pydantic import VERSION as P_VERSION 1deafbghc

21from pydantic import BaseModel 1deafbghc

22from pydantic import ConfigDict as ConfigDict 1deafbghc

23from pydantic._internal._fields import PydanticMetadata 1deafbghc

24from pydantic._internal._model_construction import ModelMetaclass as ModelMetaclass 1deafbghc

25from pydantic._internal._repr import Representation as Representation 1deafbghc

26from pydantic.fields import FieldInfo 1deafbghc

27from pydantic_core import PydanticUndefined as Undefined 1deafbghc

28from pydantic_core import PydanticUndefinedType as PydanticUndefinedType 1deafbghc

29 

30BaseConfig = ConfigDict 1deafbghc

31UndefinedType = PydanticUndefinedType 1deafbghc

32PYDANTIC_MINOR_VERSION = tuple(int(i) for i in P_VERSION.split(".")[:2]) 1deafbghc

33 

34 

35if TYPE_CHECKING: 1deafbghc

36 from .main import RelationshipInfo, SQLModel 

37 

38UnionType = getattr(types, "UnionType", Union) 1deafbghc

39NoneType = type(None) 1deafbghc

40T = TypeVar("T") 1deafbghc

41InstanceOrType: TypeAlias = T | type[T] 1deafbghc

42_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 1deafbghc

43 

44 

45class FakeMetadata: 1deafbghc

46 max_length: int | None = None 1deafbghc

47 max_digits: int | None = None 1deafbghc

48 decimal_places: int | None = None 1deafbghc

49 

50 

51@dataclass 1deafbghc

52class ObjectWithUpdateWrapper: 1deafbghc

53 obj: Any 1deafbghc

54 update: dict[str, Any] 1deafbghc

55 

56 def __getattribute__(self, __name: str) -> Any: 1deafbghc

57 update = super().__getattribute__("update") 2$b%b'b(b)b*b+b,b

58 obj = super().__getattribute__("obj") 2$b%b'b(b)b*b+b,b

59 if __name in update: 2$b%b'b(b)b*b+b,b

60 return update[__name] 2$b%b'b(b)b*b+b,b

61 return getattr(obj, __name) 2$b%b'b(b)b*b+b,b

62 

63 

64def _is_union_type(t: Any) -> bool: 1deafbghc

65 return t is UnionType or t is Union 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

66 

67 

68finish_init: ContextVar[bool] = ContextVar("finish_init", default=True) 1deafbghc

69 

70 

71@contextmanager 1deafbghc

72def partial_init() -> Generator[None, None, None]: 1deafbghc

73 token = finish_init.set(False) 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

74 yield 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

75 finish_init.reset(token) 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

76 

77 

78class SQLModelConfig(BaseConfig, total=False): 1deafbghc

79 table: bool | None 1deafbghc

80 registry: Any | None 1deafbghc

81 

82 

83def get_model_fields(model: InstanceOrType[BaseModel]) -> dict[str, "FieldInfo"]: 1deafbghc

84 # TODO: refactor the usage of this function to always pass the class 

85 # not the instance, and then remove this extra check 

86 # this is for compatibility with Pydantic v3 

87 if isinstance(model, type): 2d 4bib1l2lUi.inj]n^nI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFd?i5i@i6i[i$bsbe 5bkb4l5lVi/ipj_n`nP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHd]i7i^i8i_i%btba 6b~ DlElBdOdWi@m[mW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZb`i9i{i!i|i'bfbf 7bmb7l8lYi:irj{n|nZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJd}i#i~i$iaj(bubb 8bbbGlHlCdPdZi]m^m6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bbj%icj'idj)bgbg 9bob!l#l1i;itj}n~n9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdej(ifj)igj*bvbh !bqb%l'l2i=ivjaobo) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdhj*iij+ijj+bwbc #bdbJlKlDdQd3i_m`m: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bkj,ilj-imj,bhb

88 use_model = model 2d ib1l2lUi.inj]n^nI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipj_n`nP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWi@m[mW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irj{n|nZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi]m^m6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj}n~n9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivjaobo) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i_m`m: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

89 else: 

90 use_model = model.__class__ 24b?i5i@i6i[i$bsb5b]i7i^i8i_i%btb6b`i9i{i!i|i'bfb7b}i#i~i$iaj(bub8bbj%icj'idj)bgb9bej(ifj)igj*bvb!bhj*iij+ijj+bwb#bkj,ilj-imj,bhb

91 return use_model.model_fields 2d 4bib1l2lUi.inj]n^nI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFd?i5i@i6i[i$bsbe 5bkb4l5lVi/ipj_n`nP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHd]i7i^i8i_i%btba 6b~ DlElBdOdWi@m[mW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZb`i9i{i!i|i'bfbf 7bmb7l8lYi:irj{n|nZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJd}i#i~i$iaj(bubb 8bbbGlHlCdPdZi]m^m6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bbj%icj'idj)bgbg 9bob!l#l1i;itj}n~n9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdej(ifj)igj*bvbh !bqb%l'l2i=ivjaobo) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdhj*iij+ijj+bwbc #bdbJlKlDdQd3i_m`m: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bkj,ilj-imj,bhb

92 

93 

94def init_pydantic_private_attrs(new_object: InstanceOrType["SQLModel"]) -> None: 1deafbghc

95 object.__setattr__(new_object, "__pydantic_fields_set__", set()) 2bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmmUmI J ? {mDbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[lln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm1mP Q @ |mFbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{lvn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomwmW X F Pmxbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlFndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm8mZ 0 [ }mHbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmPnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmDm6 7 G QmzbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm(m9 ! ] ~mJbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgm9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm/m) * ^ anLbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblm,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmKm: ; H RmBbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

96 object.__setattr__(new_object, "__pydantic_extra__", None) 2bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmmUmI J ? {mDbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[lln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm1mP Q @ |mFbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{lvn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomwmW X F Pmxbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlFndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm8mZ 0 [ }mHbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmPnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmDm6 7 G QmzbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm(m9 ! ] ~mJbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgm9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm/m) * ^ anLbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblm,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmKm: ; H RmBbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

97 object.__setattr__(new_object, "__pydantic_private__", None) 2bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmmUmI J ? {mDbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[lln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm1mP Q @ |mFbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{lvn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomwmW X F Pmxbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlFndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm8mZ 0 [ }mHbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmPnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmDm6 7 G QmzbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm(m9 ! ] ~mJbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgm9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm/m) * ^ anLbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblm,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmKm: ; H RmBbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

98 

99 

100def get_annotations(class_dict: dict[str, Any]) -> dict[str, Any]: 1deafbghc

101 raw_annotations: dict[str, Any] = class_dict.get("__annotations__", {}) 2d ;l=lSm?lTm@lib1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdsb[le ]l^lZm_l0m`lkb4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdtb{la MlNlumOlvmPl~ DlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlf |l}l6m~l7mammb7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdubbmb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlg cmdm%mem'mfmob!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLdvbgmh hmim-mjm.mkmqb%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdwblmc WlXlImYlJmZldbJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

102 if sys.version_info >= (3, 14) and "__annotations__" not in class_dict: 2d ;l=lSm?lTm@lib1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdsb[le ]l^lZm_l0m`lkb4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdtb{la MlNlumOlvmPl~ DlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlf |l}l6m~l7mammb7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdubbmb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlg cmdm%mem'mfmob!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLdvbgmh hmim-mjm.mkmqb%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdwblmc WlXlImYlJmZldbJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

103 # See https://github.com/pydantic/pydantic/pull/11991 

104 from annotationlib import ( 2a MlNlumOlvmPl~ DlElBdOdWi@m[mwmF PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDmG QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlc WlXlImYlJmZldbJlKlDdQd3i_m`mKmH RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

105 Format, 

106 call_annotate_function, 

107 get_annotate_from_class_namespace, 

108 ) 

109 

110 if annotate := get_annotate_from_class_namespace(class_dict): 2a MlNlumOlvmPl~ DlElBdOdWi@m[mwmF PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDmG QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlc WlXlImYlJmZldbJlKlDdQd3i_m`mKmH RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

111 raw_annotations = call_annotate_function(annotate, format=Format.FORWARDREF) 2a MlNlumOlvmPl~ DlElBdOdWi@m[mwmF PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDmG QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlc WlXlImYlJmZldbJlKlDdQd3i_m`mKmH RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

112 return raw_annotations 2d ;l=lSm?lTm@lib1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdsb[le ]l^lZm_l0m`lkb4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdtb{la MlNlumOlvmPl~ DlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZbfbQlf |l}l6m~l7mammb7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdubbmb RlSlBmTlCmUlbbGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgbVlg cmdm%mem'mfmob!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLdvbgmh hmim-mjm.mkmqb%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdwblmc WlXlImYlJmZldbJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3bhb0l

113 

114 

115def is_table_model_class(cls: type[Any]) -> bool: 1deafbghc

116 config = getattr(cls, "model_config", {}) 2d bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmm1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdXd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[le ln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdqeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{la vn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomDlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZb-eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlf FndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdNfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmb Pnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlg ZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLd!g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgmh 9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdDh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblmc ,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3b{hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

117 if config: 2d bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmm1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdXd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[le ln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdqeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{la vn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomDlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZb-eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlf FndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdNfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmb Pnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlg ZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLd!g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgmh 9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdDh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblmc ,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3b{hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

118 return config.get("table", False) or False 2d bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWd;l=lSm?lcndneoenfngnhninTm@ljnibkn)lmm1l2lUi.inj]n^nUmI J ? {mDbEb3ll K L M oljb-bplQbVmWmXmYmN O ~kalblql_ ojDoEdFdXd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesb[le ln6jfogokeleme5b7j8j9j!j#j$jneoepe]l^lZm_lmnnnhoonpnqnrnsn0m`ltnkbun*lnm4l5lVi/ipj_n`n1mP Q @ |mFbGb6lm R S T rllb.bslRb2m3m4m5mU V cldleltl` qjEoGdHdqeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb{la vn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eMlNlumOlwnxnkoynznAnBnCnvmPlDn~ En+lomDlElBdOdWi@m[mwmW X F PmxbybFli n o p GjabVbHjNbxmymzmAmq r xjyjzjIjY XiAoYbZb-eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbQlf FndklomoHfIfJf7bekfkgkhkikjkKfLfMf|l}l6m~lGnHnnoInJnKnLnMn7mamNnmbOn,lpm7l8lYi:irj{n|n8mZ 0 [ }mHbIb9ls 1 2 3 ulnb/bvlSb9m!m#m$m4 5 flglhlwl{ sjFoIdJdNfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubbmb Pnukoopoagbgcg8bvkwkxkykzkAkdgegfgRlSlBmTlQnRnqoSnTnUnVnWnCmUlXnbbYn-lqmGlHlCdPdZi]m^mDm6 7 G QmzbAbIlj t u v JjcbWbKjObEmFmGmHmw x AjBjCjLj8 0iBo0b1bgg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbVlg ZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9gcmdm%mem0n1nto2n3n4n5n6n'mfm7nob8n.lrm!l#l1i;itj}n~n(m9 ! ] ~mJbKb$ly # $ % xlpb:bylTb)m*m+m,m' ( iljlklzl| ujGoKdLd!g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbgmh 9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhChhmim-mjm!n#nwo$n%n'n(n)n.mkm*nqb+n/lsm%l'l2i=ivjaobo/m) * ^ anLbMb(lz + , - Alrb;bBlUb:m;m=m?m. / llmlnlCl} wjHoMdNdDh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwblmc ,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hWlXlImYl-n.nzo/n:n;n=n?nJmZl@ndb[n:ltmJlKlDdQd3i_m`mKm: ; H RmBbCbLlk A B C MjebXbNjPbLmMmNmOmD E DjEjFjOj= 4iCo2b3b{hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb0l

119 return False 1deafbghc

120 

121 

122def get_relationship_to( 1deafbghc

123 name: str, 

124 rel_info: "RelationshipInfo", 

125 annotation: Any, 

126) -> Any: 

127 origin = get_origin(annotation) 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

128 use_annotation = annotation 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

129 # Direct relationships (e.g. 'Team' or Team) have None as an origin 

130 if origin is None: 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

131 if isinstance(use_annotation, ForwardRef): 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

132 use_annotation = use_annotation.__forward_arg__ 1deafbghc

133 else: 

134 return use_annotation 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

135 # If Union (e.g. Optional), get the real field 

136 elif _is_union_type(origin): 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

137 use_annotation = get_args(annotation) 1deafbghc

138 if len(use_annotation) > 2: 1deafbghc

139 raise ValueError("Cannot have a (non-optional) union as a SQLAlchemy field") 

140 arg1, arg2 = use_annotation 1deafbghc

141 if arg1 is NoneType and arg2 is not NoneType: 1deafbghc

142 use_annotation = arg2 

143 elif arg2 is NoneType and arg1 is not NoneType: 1deafbghc

144 use_annotation = arg1 1deafbghc

145 else: 

146 raise ValueError( 

147 "Cannot have a Union of None and None as a SQLAlchemy field" 

148 ) 

149 

150 # If a list, then also get the real field 

151 elif origin is list: 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

152 use_annotation = get_args(annotation)[0] 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

153 

154 return get_relationship_to(name=name, rel_info=rel_info, annotation=use_annotation) 2d Qbe Rba Nbf Sbb Obg Tbh Ubc Pb

155 

156 

157def is_field_noneable(field: "FieldInfo") -> bool: 1deafbghc

158 if getattr(field, "nullable", Undefined) is not Undefined: 2d 1l2lUi.injI J ? DbEb3ll K L M jb-bQbN O _ ojEdFdsbe 4l5lVi/ipjP Q @ FbGb6lm R S T lb.bRbU V ` qjGdHdtba DlElBdOdWiW X F xbybFli n o p abVbNbq r Y XiYbZbfbf 7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 nb/bSb4 5 { sjIdJdubb GlHlCdPdZi6 7 G zbAbIlj t u v cbWbObw x 8 0i0b1bgbg !l#l1i;itj9 ! ] JbKb$ly # $ % pb:bTb' ( | ujKdLdvbh %l'l2i=ivj) * ^ LbMb(lz + , - rb;bUb. / } wjMdNdwbc JlKlDdQd3i: ; H BbCbLlk A B C ebXbPbD E = 4i2b3bhb

159 return field.nullable # type: ignore 2jb-blb.babVbnb/bcbWbpb:brb;bebXb

160 origin = get_origin(field.annotation) 2d 1l2lUi.injI J ? DbEb3ll K L M -bQbN O _ ojEdFdsbe 4l5lVi/ipjP Q @ FbGb6lm R S T .bRbU V ` qjGdHdtba DlElBdOdWiW X F xbybFli n o p VbNbq r Y XiYbZbfbf 7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 /bSb4 5 { sjIdJdubb GlHlCdPdZi6 7 G zbAbIlj t u v WbObw x 8 0i0b1bgbg !l#l1i;itj9 ! ] JbKb$ly # $ % :bTb' ( | ujKdLdvbh %l'l2i=ivj) * ^ LbMb(lz + , - ;bUb. / } wjMdNdwbc JlKlDdQd3i: ; H BbCbLlk A B C XbPbD E = 4i2b3bhb

161 if origin is not None and _is_union_type(origin): 2d 1l2lUi.injI J ? DbEb3ll K L M -bQbN O _ ojEdFdsbe 4l5lVi/ipjP Q @ FbGb6lm R S T .bRbU V ` qjGdHdtba DlElBdOdWiW X F xbybFli n o p VbNbq r Y XiYbZbfbf 7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 /bSb4 5 { sjIdJdubb GlHlCdPdZi6 7 G zbAbIlj t u v WbObw x 8 0i0b1bgbg !l#l1i;itj9 ! ] JbKb$ly # $ % :bTb' ( | ujKdLdvbh %l'l2i=ivj) * ^ LbMb(lz + , - ;bUb. / } wjMdNdwbc JlKlDdQd3i: ; H BbCbLlk A B C XbPbD E = 4i2b3bhb

162 args = get_args(field.annotation) 2d Ui.iI J ? l K L M -bQbN O EdFde Vi/iP Q @ m R S T .bRbU V GdHda BdOdW X F i n o p VbNbq r YbZbf Yi:iZ 0 [ s 1 2 3 /bSb4 5 IdJdb CdPd6 7 G j t u v WbObw x 0b1bg 1i;i9 ! ] y # $ % :bTb' ( KdLdh 2i=i) * ^ z + , - ;bUb. / MdNdc DdQd: ; H k A B C XbPbD E 2b3b

163 if any(arg is NoneType for arg in args): 2d Ui.iI J ? l K L M -bQbN O EdFde Vi/iP Q @ m R S T .bRbU V GdHda BdOdW X F i n o p VbNbq r YbZbf Yi:iZ 0 [ s 1 2 3 /bSb4 5 IdJdb CdPd6 7 G j t u v WbObw x 0b1bg 1i;i9 ! ] y # $ % :bTb' ( KdLdh 2i=i) * ^ z + , - ;bUb. / MdNdc DdQd: ; H k A B C XbPbD E 2b3b

164 return True 2d Ui.iI J ? l K L M -bQbN O EdFde Vi/iP Q @ m R S T .bRbU V GdHda BdOdW X F i n o p VbNbq r YbZbf Yi:iZ 0 [ s 1 2 3 /bSb4 5 IdJdb CdPd6 7 G j t u v WbObw x 0b1bg 1i;i9 ! ] y # $ % :bTb' ( KdLdh 2i=i) * ^ z + , - ;bUb. / MdNdc DdQd: ; H k A B C XbPbD E 2b3b

165 if not field.is_required(): 2d 1l2lUinjI J ? DbEb3ll K L M -bQbN O _ ojEdFdsbe 4l5lVipjP Q @ FbGb6lm R S T .bRbU V ` qjGdHdtba DlElBdWiW X F xbybFli n o p VbNbq r Y XiYbZbfbf 7l8lYirjZ 0 [ HbIb9ls 1 2 3 /bSb4 5 { sjIdJdubb GlHlCdZi6 7 G zbAbIlj t u v WbObw x 8 0i0b1bgbg !l#l1itj9 ! ] JbKb$ly # $ % :bTb' ( | ujKdLdvbh %l'l2ivj) * ^ LbMb(lz + , - ;bUb. / } wjMdNdwbc JlKlDd3i: ; H BbCbLlk A B C XbPbD E = 4i2b3bhb

166 if field.default is Undefined: 2d -bEdFde .bGdHda VbYbZbf /bIdJdb Wb0b1bg :bKdLdh ;bMdNdc Xb2b3b

167 return False 

168 if field.annotation is None or field.annotation is NoneType: 2d -bEdFde .bGdHda VbYbZbf /bIdJdb Wb0b1bg :bKdLdh ;bMdNdc Xb2b3b

169 return True 

170 return False 2d -bEdFde .bGdHda VbYbZbf /bIdJdb Wb0b1bg :bKdLdh ;bMdNdc Xb2b3b

171 return False 2d 1l2lUinjI J ? DbEb3ll K L M -bQbN O _ ojsbe 4l5lVipjP Q @ FbGb6lm R S T .bRbU V ` qjtba DlElBdWiW X F xbybFli n o p VbNbq r Y Xifbf 7l8lYirjZ 0 [ HbIb9ls 1 2 3 /bSb4 5 { sjubb GlHlCdZi6 7 G zbAbIlj t u v WbObw x 8 0igbg !l#l1itj9 ! ] JbKb$ly # $ % :bTb' ( | ujvbh %l'l2ivj) * ^ LbMb(lz + , - ;bUb. / } wjwbc JlKlDd3i: ; H BbCbLlk A B C XbPbD E = 4ihb

172 

173 

174def get_sa_type_from_type_annotation(annotation: Any) -> Any: 1deafbghc

175 # Resolve Optional fields 

176 if annotation is None: 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

177 raise ValueError("Missing field type") 

178 origin = get_origin(annotation) 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

179 if origin is None: 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

180 return annotation 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

181 elif origin is Annotated: 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

182 return get_sa_type_from_type_annotation(get_args(annotation)[0]) 2ibkb~ mbbbobqbdb

183 if _is_union_type(origin): 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

184 bases = get_args(annotation) 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

185 if len(bases) > 2: 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

186 raise ValueError("Cannot have a (non-optional) union as a SQLAlchemy field") 

187 # Non optional unions are not allowed 

188 if bases[0] is not NoneType and bases[1] is not NoneType: 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

189 raise ValueError("Cannot have a (non-optional) union as a SQLAlchemy field") 2blelzjhlCjklnlFj

190 # Optional unions are allowed 

191 use_type = bases[0] if bases[0] is not NoneType else bases[1] 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

192 return get_sa_type_from_type_annotation(use_type) 2d ibUi.injI J ? l K L M oljb-bplQbN O ~kalblql_ ojEdFde kbVi/ipjP Q @ m R S T rllb.bslRbU V cldleltl` qjGdHda ~ BdOdWiW X F i n o p GjabVbHjNbq r xjyjzjIjY XiYbZbf mbYi:irjZ 0 [ s 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdb bbCdPdZi6 7 G j t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bg ob1i;itj9 ! ] y # $ % xlpb:bylTb' ( iljlklzl| ujKdLdh qb2i=ivj) * ^ z + , - Alrb;bBlUb. / llmlnlCl} wjMdNdc dbDdQd3i: ; H k A B C MjebXbNjPbD E DjEjFjOj= 4i2b3b

193 return origin 2~kalcldlxjyjflglAjBjiljlllmlDjEj

194 

195 

196def get_sa_type_from_field(field: Any) -> Any: 1deafbghc

197 type_: Any = field.annotation 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

198 return get_sa_type_from_type_annotation(type_) 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

199 

200 

201def get_field_metadata(field: Any) -> Any: 1deafbghc

202 for meta in field.metadata: 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

203 if isinstance(meta, (PydanticMetadata, MaxLen)): 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

204 return meta 1deafbghc

205 return FakeMetadata() 2d ib1l2lUi.injI J ? DbEb3ll K L M oljb-bplQbN O ~kalblql_ ojEdFdsbe kb4l5lVi/ipjP Q @ FbGb6lm R S T rllb.bslRbU V cldleltl` qjGdHdtba ~ DlElBdOdWiW X F xbybFli n o p GjabVbHjNbq r xjyjzjIjY XiYbZbfbf mb7l8lYi:irjZ 0 [ HbIb9ls 1 2 3 ulnb/bvlSb4 5 flglhlwl{ sjIdJdubb bbGlHlCdPdZi6 7 G zbAbIlj t u v JjcbWbKjObw x AjBjCjLj8 0i0b1bgbg ob!l#l1i;itj9 ! ] JbKb$ly # $ % xlpb:bylTb' ( iljlklzl| ujKdLdvbh qb%l'l2i=ivj) * ^ LbMb(lz + , - Alrb;bBlUb. / llmlnlCl} wjMdNdwbc dbJlKlDdQd3i: ; H BbCbLlk A B C MjebXbNjPbD E DjEjFjOj= 4i2b3bhb

206 

207 

208def sqlmodel_table_construct( 1deafbghc

209 *, 

210 self_instance: _TSQLModel, 

211 values: dict[str, Any], 

212 _fields_set: set[str] | None = None, 

213) -> _TSQLModel: 

214 # Copy from Pydantic's BaseModel.construct() 

215 # Ref: https://github.com/pydantic/pydantic/blob/v2.5.2/pydantic/main.py#L198 

216 # Modified to not include everything, only the model fields, and to 

217 # set relationships 

218 # SQLModel override to get class SQLAlchemy __dict__ attributes and 

219 # set them back in after creating the object 

220 # new_obj = cls.__new__(cls) 

221 cls = type(self_instance) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

222 old_dict = self_instance.__dict__.copy() 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

223 # End SQLModel override 

224 

225 fields_values: dict[str, Any] = {} 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

226 defaults: dict[ 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

227 str, Any 

228 ] = {} # keeping this separate from `fields_values` helps us compute `_fields_set` 

229 for name, field in cls.model_fields.items(): 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

230 if field.alias and field.alias in values: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

231 fields_values[name] = values.pop(field.alias) 

232 elif name in values: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

233 fields_values[name] = values.pop(name) 2RdSdTd4bUdVdWdI J DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepeP Q FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,eW X xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfZ 0 HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfg6 7 zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9g9 ! JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhCh) * LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`h: ; BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

234 elif not field.is_required(): 2RdSdTd4bUdVdWdibI J ? l K L M N O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ m R S T U V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F i n o p q r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ s 1 2 3 4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G j t u v w x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] y # $ % ' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ z + , - . / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H k A B C D E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

235 defaults[name] = field.get_default(call_default_factory=True) 2RdSdTd4bUdVdWdibI J ? l K L M N O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ m R S T U V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F i n o p q r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ s 1 2 3 4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G j t u v w x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] y # $ % ' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ z + , - . / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H k A B C D E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

236 if _fields_set is None: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

237 _fields_set = set(fields_values.keys()) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

238 fields_values.update(defaults) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

239 

240 _extra: dict[str, Any] | None = None 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

241 if cls.model_config.get("extra") == "allow": 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

242 _extra = {} 

243 for k, v in values.items(): 

244 _extra[k] = v 

245 # SQLModel override, do not include everything, only the model fields 

246 # else: 

247 # fields_values.update(values) 

248 # End SQLModel override 

249 # SQLModel override 

250 # Do not set __dict__, instead use setattr to trigger SQLAlchemy 

251 # object.__setattr__(new_obj, "__dict__", fields_values) 

252 # instrumentation 

253 for key, value in {**old_dict, **fields_values}.items(): 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

254 setattr(self_instance, key, value) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

255 # End SQLModel override 

256 object.__setattr__(self_instance, "__pydantic_fields_set__", _fields_set) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

257 if not cls.__pydantic_root_model__: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

258 object.__setattr__(self_instance, "__pydantic_extra__", _extra) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

259 

260 if cls.__pydantic_post_init__: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

261 self_instance.model_post_init(None) 

262 elif not cls.__pydantic_root_model__: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

263 # Note: if there are any private attributes, cls.__pydantic_post_init__ would exist 

264 # Since it doesn't, that means that `__pydantic_private__` should be set to None 

265 object.__setattr__(self_instance, "__pydantic_private__", None) 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

266 # SQLModel override, set relationships 

267 # Get and set any relationship objects 

268 for key in self_instance.__sqlmodel_relationships__: 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

269 value = values.get(key, Undefined) 2l =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcm ecfcgchcicjckclcmcncocpcqcrcsctci ucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcs KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZcj 0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(cy )c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_cz `c{c|c}c~cadbdcdddedfdgdhdidjdkdk ldmdndodpdqdrdsdtdudvdwdxdydzdAd

270 if value is not Undefined: 2l =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcm ecfcgchcicjckclcmcncocpcqcrcsctci ucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcs KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZcj 0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(cy )c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_cz `c{c|c}c~cadbdcdddedfdgdhdidjdkdk ldmdndodpdqdrdsdtdudvdwdxdydzdAd

271 setattr(self_instance, key, value) 2l =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcm ecfcgchcicjckclcmcncocpcqcrcsctci ucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcs KcLcMcNcOcPcQcRcScTcUcVcWcXcYcZcj 0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(cy )c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_cz `c{c|c}c~cadbdcdddedfdgdhdidjdkdk ldmdndodpdqdrdsdtdudvdwdxdydzdAd

272 # End SQLModel override 

273 return self_instance 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

274 

275 

276def sqlmodel_validate( 1deafbghc

277 cls: type[_TSQLModel], 

278 obj: Any, 

279 *, 

280 strict: bool | None = None, 

281 from_attributes: bool | None = None, 

282 context: dict[str, Any] | None = None, 

283 update: dict[str, Any] | None = None, 

284) -> _TSQLModel: 

285 if not is_table_model_class(cls): 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

286 new_obj: _TSQLModel = cls.__new__(cls) 2;l=l?l@l)lmm[l]l^l_l`l*lnm{lMlNlOlPl+lomQl|l}l~lam,lpmbmRlSlTlUl-lqmVlcmdmemfm.lrmgmhmimjmkm/lsmlmWlXlYlZl:ltm0l

287 else: 

288 # If table, create the new instance normally to make SQLAlchemy create 

289 # the _sa_instance_state attribute 

290 # The wrapper of this function should use with _partial_init() 

291 with partial_init(): 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

292 new_obj = cls() 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

293 # SQLModel Override to get class SQLAlchemy __dict__ attributes and 

294 # set them back in after creating the object 

295 old_dict = new_obj.__dict__.copy() 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

296 use_obj = obj 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

297 if isinstance(obj, dict) and update: 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

298 use_obj = {**obj, **update} 

299 elif update: 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

300 use_obj = ObjectWithUpdateWrapper(obj=obj, update=update) 2$b%b'b(b)b*b+b,b

301 cls.__pydantic_validator__.validate_python( 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

302 use_obj, 

303 strict=strict, 

304 from_attributes=from_attributes, 

305 context=context, 

306 self_instance=new_obj, 

307 ) 

308 # Capture fields set to restore it later 

309 fields_set = new_obj.__pydantic_fields_set__.copy() 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

310 if not is_table_model_class(cls): 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

311 # If not table, normal Pydantic code, set __dict__ 

312 new_obj.__dict__ = {**old_dict, **new_obj.__dict__} 2;l=l?l@l)lmm[l]l^l_l`l*lnm{lMlNlOlPl+lomQl|l}l~lam,lpmbmRlSlTlUl-lqmVlcmdmemfm.lrmgmhmimjmkm/lsmlmWlXlYlZl:ltm0l

313 else: 

314 # Do not set __dict__, instead use setattr to trigger SQLAlchemy 

315 # instrumentation 

316 for key, value in {**old_dict, **new_obj.__dict__}.items(): 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

317 setattr(new_obj, key, value) 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

318 # Restore fields set 

319 object.__setattr__(new_obj, "__pydantic_fields_set__", fields_set) 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

320 # Get and set any relationship objects 

321 if is_table_model_class(cls): 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

322 for key in new_obj.__sqlmodel_relationships__: 2PjQjRjSjTjUjVjWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b6j7j8j9j!j#j$j%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b:j;j=j?j@j[j]j^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bdkekfkgkhkikjkkklkmknkokpk}iqkrksktk#i~i$iaj(bukvkwkxkykzkAkBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bLkMkNkOkPkQkRkSkTkUkVkWkXkejYkZk0k1k(ifj)igj*b2k3k4k5k6k7k8k9k!k#k$k%k'khj(k)k*k+k*iij+ijj+b,k-k.k/k:k;k=k?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b

323 value = getattr(use_obj, key, Undefined) 25i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i

324 if value is not Undefined: 25i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i

325 setattr(new_obj, key, value) 

326 return new_obj 2PjQjRjSjTjUjVj;l=l?l@l)lmmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$b[l6j7j8j9j!j#j$j]l^l_l`l*lnm%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%b{l:j;j=j?j@j[j]jMlNlOlPl+lom^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bQldkekfkgkhkikjk|l}l~lam,lpmkklkmknkokpk}iqkrksktk#i~i$iaj(bbmukvkwkxkykzkAkRlSlTlUl-lqmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bVlLkMkNkOkPkQkRkcmdmemfm.lrmSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bgm2k3k4k5k6k7k8khmimjmkm/lsm9k!k#k$k%k'khj(k)k*k+k*iij+ijj+blm,k-k.k/k:k;k=kWlXlYlZl:ltm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,b0l

327 

328 

329def sqlmodel_init(*, self: "SQLModel", data: dict[str, Any]) -> None: 1deafbghc

330 old_dict = self.__dict__.copy() 2bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWdSmcndneoenfngnhninTmjnibkn)lUmI J ? {mDbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbln6jfogokeleme5b7j8j9j!j#j$jneoepeZmmnnnhoonpnqnrnsn0mtnkbun*l1mP Q @ |mFbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etbvn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eumwnxnkoynznAnBnCnvmDn~ En+lwmW X F Pmxbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbFndklomoHfIfJf7bekfkgkhkikjkKfLfMf6mGnHnnoInJnKnLnMn7mNnmbOn,l8mZ 0 [ }mHbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubPnukoopoagbgcg8bvkwkxkykzkAkdgegfgBmQnRnqoSnTnUnVnWnCmXnbbYn-lDm6 7 G QmzbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9g%m0n1nto2n3n4n5n6n'm7nob8n.l(m9 ! ] ~mJbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvb9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhCh-m!n#nwo$n%n'n(n)n.m*nqb+n/l/m) * ^ anLbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hIm-n.nzo/n:n;n=n?nJm@ndb[n:lKm: ; H RmBbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

331 if not is_table_model_class(self.__class__): 2bnPjcodoRdSdTd4bQjRjSjTjUjVjUdVdWdSmcndneoenfngnhninTmjnibkn)lUmI J ? {mDbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbln6jfogokeleme5b7j8j9j!j#j$jneoepeZmmnnnhoonpnqnrnsn0mtnkbun*l1mP Q @ |mFbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etbvn:jiojo'e(e)e6b;j=j?j@j[j]j*e+e,eumwnxnkoynznAnBnCnvmDn~ En+lwmW X F Pmxbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbFndklomoHfIfJf7bekfkgkhkikjkKfLfMf6mGnHnnoInJnKnLnMn7mNnmbOn,l8mZ 0 [ }mHbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubPnukoopoagbgcg8bvkwkxkykzkAkdgegfgBmQnRnqoSnTnUnVnWnCmXnbbYn-lDm6 7 G QmzbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbZnLkroso4g5g6g9bMkNkOkPkQkRk7g8g9g%m0n1nto2n3n4n5n6n'm7nob8n.l(m9 ! ] ~mJbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvb9n2kuovoxhyhzh!b3k4k5k6k7k8kAhBhCh-m!n#nwo$n%n'n(n)n.m*nqb+n/l/m) * ^ anLbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb,n,kxoyo@h[h]h#b-k.k/k:k;k=k^h_h`hIm-n.nzo/n:n;n=n?nJm@ndb[n:lKm: ; H RmBbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

332 self.__pydantic_validator__.validate_python( 2bnPjcodo4bQjRjSjTjUjVjSmcndneoenfngnhninTmjnkn)lUm{mVmWmXmYmWjXjYjZj0j1j?i2j3j4j5j5i@i6i[i$bsbln6jfogo5b7j8j9j!j#j$jZmmnnnhoonpnqnrnsn0mtnun*l1m|m2m3m4m5m%j'j(j)j*j+j]i,j-j.j/j7i^i8i_i%btbvn:jiojo6b;j=j?j@j[j]jumwnxnkoynznAnBnCnvmDnEn+lwmPmxmymzmAm^j_j`j{j|j}j`i~jakbkck9i{i!i|i'bfbFndklomo7bekfkgkhkikjk6mGnHnnoInJnKnLnMn7mNnOn,l8m}m9m!m#m$mkklkmknkokpk}iqkrksktk#i~i$iaj(bubPnukoopo8bvkwkxkykzkAkBmQnRnqoSnTnUnVnWnCmXnYn-lDmQmEmFmGmHmBkCkDkEkFkGkbjHkIkJkKk%icj'idj)bgbZnLkroso9bMkNkOkPkQkRk%m0n1nto2n3n4n5n6n'm7n8n.l(m~m)m*m+m,mSkTkUkVkWkXkejYkZk0k1k(ifj)igj*bvb9n2kuovo!b3k4k5k6k7k8k-m!n#nwo$n%n'n(n)n.m*n+n/l/man:m;m=m?m9k!k#k$k%k'khj(k)k*k+k*iij+ijj+bwb,n,kxoyo#b-k.k/k:k;k=kIm-n.nzo/n:n;n=n?nJm@n[n:lKmRmLmMmNmOm?k@k[k]k^k_kkj`k{k|k}k,ilj-imj,bhb

333 data, 

334 self_instance=self, 

335 ) 

336 else: 

337 sqlmodel_table_construct( 2RdSdTd4bUdVdWdibI J ? DbEbl K L M jbN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbkeleme5bneoepekbP Q @ FbGbm R S T lbU V ` qeecfcreseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etb'e(e)e6b*e+e,e~ W X F xbybi n o p abq r Y -eucvc.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbHfIfJf7bKfLfMfmbZ 0 [ HbIbs 1 2 3 nb4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubagbgcg8bdgegfgbb6 7 G zbAbj t u v cbw x 8 gg0c1chgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggb4g5g6g9b7g8g9gob9 ! ] JbKby # $ % pb' ( | !g)c*c#g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvbxhyhzh!bAhBhChqb) * ^ LbMbz + , - rb. / } Dh`c{cEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb@h[h]h#b^h_h`hdb: ; H BbCbk A B C ebD E = {hldmd|h}h~haibicidieifigihiiijikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

338 self_instance=self, 

339 values=data, 

340 ) 

341 object.__setattr__( 2bnPjRdSdTd4bQjRjSjTjUjVjUdVdWdSmcndnenfngnhninTmjnibkn)lUmI J ? DbEbl K L M jbVmWmXmYmN O _ Xd=b?bYdZd0d1d2d3d4d5d6d7dWjXjYjZj0j1j?i2j3j4j5j5i8d@i9d6i[i$b!d#d$d%d'd(d)d*d+d@b[b]b,d-d.d/d:d;d=d?d@d^b_b`b{b|b}b~bacbcccdc[d]d^d_d`d{d|d}d~daebecedeeefegeheiejesbln6jkeleme5b7j8j9j!j#j$jneoepeZmmnnnonpnqnrnsn0mtnkbun*l1mP Q @ FbGbm R S T lb2m3m4m5mU V ` qeecfcreseteuevewexeyezeAe%j'j(j)j*j+j]i,j-j.j/j7iBe^iCe8i_i%bDeEeFeGeHeIeJeKeLegchcicMeNeOePeQeReSeTeUejckclcmcncocpcqcrcsctcVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%etbvn:j'e(e)e6b;j=j?j@j[j]j*e+e,eumwnxnynznAnBnCnvmDn~ En+lwmW X F xbybi n o p abxmymzmAmq r Y -eucvc.e/e:e;e=e?e@e[e]e^e^j_j`j{j|j}j`i~jakbkck9i_e{i`e!i|i'b{e|e}e~eafbfcfdfefwcxcycffgfhfifjfkflfmfnfzcAcBcCcDcEcFcGcHcIcJcofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGffbFndkHfIfJf7bekfkgkhkikjkKfLfMf6mGnHnInJnKnLnMn7mNnmbOn,l8mZ 0 [ HbIbs 1 2 3 nb9m!m#m$m4 5 { NfKcLcOfPfQfRfSfTfUfVfWfXfkklkmknkokpk}iqkrksktk#iYf~iZf$iaj(b0f1f2f3f4f5f6f7f8fMcNcOc9f!f#f$f%f'f(f)f*fPcQcRcScTcUcVcWcXcYcZc+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fubPnukagbgcg8bvkwkxkykzkAkdgegfgBmQnRnSnTnUnVnWnCmXnbbYn-lDm6 7 G zbAbj t u v cbEmFmGmHmw x 8 gg0c1chgigjgkglgmgngogpgqgBkCkDkEkFkGkbjHkIkJkKk%irgcjsg'idj)btgugvgwgxgygzgAgBg2c3c4cCgDgEgFgGgHgIgJgKg5c6c7c8c9c!c#c$c%c'c(cLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3ggbZnLk4g5g6g9bMkNkOkPkQkRk7g8g9g%m0n1n2n3n4n5n6n'm7nob8n.l(m9 ! ] JbKby # $ % pb)m*m+m,m' ( | !g)c*c#g$g%g'g(g)g*g+g,g-gSkTkUkVkWkXkejYkZk0k1k(i.gfj/g)igj*b:g;g=g?g@g[g]g^g_g+c,c-c`g{g|g}g~gahbhchdh.c/c:c;c=c?c@c[c]c^c_cehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhvb9n2kxhyhzh!b3k4k5k6k7k8kAhBhCh-m!n#n$n%n'n(n)n.m*nqb+n/l/m) * ^ LbMbz + , - rb:m;m=m?m. / } Dh`c{cEhFhGhHhIhJhKhLhMhNh9k!k#k$k%k'khj(k)k*k+k*iOhijPh+ijj+bQhRhShThUhVhWhXhYh|c}c~cZh0h1h2h3h4h5h6h7hadbdcdddedfdgdhdidjdkd8h9h!h#h$h%h'h(h)h*h+h,h-h.h/h:h;h=h?hwb,n,k@h[h]h#b-k.k/k:k;k=k^h_h`hIm-n.n/n:n;n=n?nJm@ndb[n:lKm: ; H BbCbk A B C ebLmMmNmOmD E = {hldmd|h}h~haibicidieifigi?k@k[k]k^k_kkj`k{k|k}k,ihiljii-imj,bjikiliminioipiqirindodpdsitiuiviwixiyiziAiqdrdsdtdudvdwdxdydzdAdBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTihb

342 self, 

343 "__dict__", 

344 {**old_dict, **self.__dict__}, 

345 )