Coverage for sqlmodel/_compat.py: 93%

305 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2025-10-27 00:03 +0000

1import sys 2PcQcd a Rce Scb c f

2import types 2PcQcd a Rce Scb c f

3from contextlib import contextmanager 2PcQcd a Rce Scb c f

4from contextvars import ContextVar 2PcQcd a Rce Scb c f

5from dataclasses import dataclass 2PcQcd a Rce Scb c f

6from typing import ( 2PcQcd a Rce Scb c f

7 TYPE_CHECKING, 

8 AbstractSet, 

9 Any, 

10 Callable, 

11 Dict, 

12 ForwardRef, 

13 Generator, 

14 Mapping, 

15 Optional, 

16 Set, 

17 Type, 

18 TypeVar, 

19 Union, 

20) 

21 

22from pydantic import VERSION as P_VERSION 2PcQcd a Rce Scb c f

23from pydantic import BaseModel 2PcQcd a Rce Scb c f

24from pydantic.fields import FieldInfo 2PcQcd a Rce Scb c f

25from typing_extensions import Annotated, get_args, get_origin 2PcQcd a Rce Scb c f

26 

27# Reassign variable to make it reexported for mypy 

28PYDANTIC_VERSION = P_VERSION 2PcQcd a Rce Scb c f

29PYDANTIC_MINOR_VERSION = tuple(int(i) for i in P_VERSION.split(".")[:2]) 2PcQcd a Rce Scb c f

30IS_PYDANTIC_V2 = PYDANTIC_MINOR_VERSION[0] == 2 2PcQcd a Rce Scb c f

31 

32 

33if TYPE_CHECKING: 2PcQcd a Rce Scb c f

34 from .main import RelationshipInfo, SQLModel 

35 

36UnionType = getattr(types, "UnionType", Union) 2PcQcd a Rce Scb c f

37NoneType = type(None) 2PcQcd a Rce Scb c f

38T = TypeVar("T") 2PcQcd a Rce Scb c f

39InstanceOrType = Union[T, Type[T]] 2PcQcd a Rce Scb c f

40_TSQLModel = TypeVar("_TSQLModel", bound="SQLModel") 2PcQcd a Rce Scb c f

41 

42 

43class FakeMetadata: 2PcQcd a Rce Scb c f

44 max_length: Optional[int] = None 2PcQcd a Rce Scb c f

45 max_digits: Optional[int] = None 2PcQcd a Rce Scb c f

46 decimal_places: Optional[int] = None 2PcQcd a Rce Scb c f

47 

48 

49@dataclass 2PcQcd a Rce Scb c f

50class ObjectWithUpdateWrapper: 2PcQcd a Rce Scb c f

51 obj: Any 2PcQcd a Rce Scb c f

52 update: Dict[str, Any] 2PcQcd a Rce Scb c f

53 

54 def __getattribute__(self, __name: str) -> Any: 2PcQcd a Rce Scb c f

55 update = super().__getattribute__("update") 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

56 obj = super().__getattribute__("obj") 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

57 if __name in update: 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

58 return update[__name] 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

59 return getattr(obj, __name) 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

60 

61 

62def _is_union_type(t: Any) -> bool: 2PcQcd a Rce Scb c f

63 return t is UnionType or t is Union 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

64 

65 

66finish_init: ContextVar[bool] = ContextVar("finish_init", default=True) 2PcQcd a Rce Scb c f

67 

68 

69@contextmanager 2PcQcd a Rce Scb c f

70def partial_init() -> Generator[None, None, None]: 2PcQcd a Rce Scb c f

71 token = finish_init.set(False) 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

72 yield 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

73 finish_init.reset(token) 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

74 

75 

76if IS_PYDANTIC_V2: 2PcQcd a Rce Scb c f

77 from annotated_types import MaxLen 1daebcf

78 from pydantic import ConfigDict as BaseConfig 1daebcf

79 from pydantic._internal._fields import PydanticMetadata 1daebcf

80 from pydantic._internal._model_construction import ModelMetaclass 1daebcf

81 from pydantic._internal._repr import Representation as Representation 1daebcf

82 from pydantic_core import PydanticUndefined as Undefined 1daebcf

83 from pydantic_core import PydanticUndefinedType as UndefinedType 1daebcf

84 

85 # Dummy for types, to make it importable 

86 class ModelField: 1daebcf

87 pass 1daebcf

88 

89 class SQLModelConfig(BaseConfig, total=False): 1daebcf

90 table: Optional[bool] 1daebcf

91 registry: Optional[Any] 1daebcf

92 

93 def get_config_value( 1daebcf

94 *, model: InstanceOrType["SQLModel"], parameter: str, default: Any = None 

95 ) -> Any: 

96 return model.model_config.get(parameter, default) 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya PdLhMh^l*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb QdRdfigihiii`l,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc SdTdyjzjAjBj|l.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

97 

98 def set_config_value( 1daebcf

99 *, 

100 model: InstanceOrType["SQLModel"], 

101 parameter: str, 

102 value: Any, 

103 ) -> None: 

104 model.model_config[parameter] = value # type: ignore[literal-required] 2d GdHd3d4d5d6dul'x(xXnko.opAAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]q-ARk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@otABhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^q.ASkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_q/ATkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpAAChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

105 

106 def get_model_fields(model: InstanceOrType[BaseModel]) -> Dict[str, "FieldInfo"]: 1daebcf

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

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

109 # this is for compatibility with Pydantic v3 

110 if isinstance(model, type): 2d ;n=n?nGdHd3d4d5d6dul'x(xXnko.opAAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea @n[nPdLhMh^l*y+y/o?q]q-ARk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie ]n^n_nIdJd:e;e=e?eCl)x*x6nlo@otABhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb `n{n|nQdRdfigihiii`l,y-y[o@q^q.ASkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc }n~naoSdTdyjzjAjBj|l.y/yap[q_q/ATkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf bocodoKdLdhgigjgkgWl+x,x(nmojpAAChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

111 use_model = model 2d GdHd3d4d5d6dul'x(xXnko.opAAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]q-ARk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@otABhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^q.ASkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_q/ATkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpAAChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

112 else: 

113 use_model = model.__class__ 2;n=n?nUkVkWkTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd@n[nwlxladmdylzlbdndAlBlDhEh]n^n_n3k4k5kXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd`n{n|nElFlGledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}n~naoNlOlPlidydzdQlRlSljdAdBdTlUlVlIhJhKhbocodo$k%k'k1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

114 return use_model.model_fields 2d ;n=n?nGdHd3d4d5d6dul'x(xXnko.opAAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea @n[nPdLhMh^l*y+y/o?q]q-ARk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie ]n^n_nIdJd:e;e=e?eCl)x*x6nlo@otABhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb `n{n|nQdRdfigihiii`l,y-y[o@q^q.ASkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc }n~naoSdTdyjzjAjBj|l.y/yap[q_q/ATkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf bocodoKdLdhgigjgkgWl+x,x(nmojpAAChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

115 

116 def get_fields_set( 1daebcf

117 object: InstanceOrType["SQLModel"], 

118 ) -> Union[Set[str], Callable[[BaseModel], Set[str]]]: 

119 return object.model_fields_set 2nz}zoz~zaApz

120 

121 def init_pydantic_private_attrs(new_object: InstanceOrType["SQLModel"]) -> None: 1daebcf

122 object.__setattr__(new_object, "__pydantic_fields_set__", set()) 2}A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqznzAh'zMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ycBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz}zRkRA/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=yfBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yszozBh(zNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yjB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz~zSkSAfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?ynB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuzaATkTAggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yrBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvzpzCh)zOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

123 object.__setattr__(new_object, "__pydantic_extra__", None) 2}A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqznzAh'zMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ycBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz}zRkRA/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=yfBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yszozBh(zNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yjB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz~zSkSAfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?ynB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuzaATkTAggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yrBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvzpzCh)zOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

124 object.__setattr__(new_object, "__pydantic_private__", None) 2}A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqznzAh'zMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ycBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz}zRkRA/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=yfBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yszozBh(zNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yjB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz~zSkSAfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?ynB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuzaATkTAggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yrBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvzpzCh)zOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

125 

126 def get_annotations(class_dict: Dict[str, Any]) -> Dict[str, Any]: 1daebcf

127 raw_annotations: Dict[str, Any] = class_dict.get("__annotations__", {}) 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya PdLhMh^l*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb QdRdfigihiii`l,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc SdTdyjzjAjBj|l.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

128 if sys.version_info >= (3, 14) and "__annotations__" not in class_dict: 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya PdLhMh^l*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb QdRdfigihiii`l,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc SdTdyjzjAjBj|l.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

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

130 from annotationlib import ( 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

131 Format, 

132 call_annotate_function, 

133 get_annotate_from_class_namespace, 

134 ) 

135 

136 if annotate := get_annotate_from_class_namespace(class_dict): 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

137 raw_annotations = call_annotate_function( 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

138 annotate, format=Format.FORWARDREF 

139 ) 

140 return raw_annotations 2d GdHd3d4d5d6dul'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya PdLhMh^l*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye IdJd:e;e=e?eCl)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb QdRdfigihiii`l,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc SdTdyjzjAjBj|l.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf KdLdhgigjgkgWl+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

141 

142 def is_table_model_class(cls: Type[Any]) -> bool: 1daebcf

143 config = getattr(cls, "model_config", {}) 2d }A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqz'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qyqeog h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya cBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tFqfozbAb:oShThUhVhWhXhYhZh;o=o0h1h?oBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye fBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^ysz)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qarPqgou v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb jB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tZqhoMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~o]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc nB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuz.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t9qio0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpiptvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf rBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvz+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdr,qjoI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:nUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

144 if config: 2d }A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqz'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qyqeog h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya cBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tFqfozbAb:oShThUhVhWhXhYhZh;o=o0h1h?oBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye fBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^ysz)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qarPqgou v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb jB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tZqhoMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~o]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc nB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuz.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t9qio0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpiptvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf rBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvz+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdr,qjoI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:nUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

145 return config.get("table", False) or False 2d }A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[yqz'x(xXnko.opAnzAh'zMd7d8d9dSrvlLnTr;mwzxzyz!d#d`q{q|qyqeog h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.e$ya cBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]yrz*y+y/o?q]q-A}zRkRA/eNhOhPh8x_lUn9xgnqArAsAQhRh't(t)tFqfozbAb:oShThUhVhWhXhYhZh;o=o0h1h?oBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidiei=ye fBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^ysz)x*x6nlo@otAozBh(zNd@e[e]eUrDlMnVr=mzzAzBz^e_e}q~qarPqgou v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgeg%yb jB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_ytz,y-y[o@q^q.A~zSkSAfgjikili!x{lVn#xhnuAvAwAmini*t+t,tZqhoMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~o]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj?yc nB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yuz.y/yap[q_q/AaATkTAggCjDjEj$x}lWn%xinxAyAzAFjGj-t.t/t9qio0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpiptvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk@yf rBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{yvz+x,x(nmojpAApzCh)zOdlgmgngWrXlNnXr?mCzDzEzogpgbrcrdr,qjoI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:nUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh'y

146 return False 1daebcf

147 

148 def get_relationship_to( 1daebcf

149 name: str, 

150 rel_info: "RelationshipInfo", 

151 annotation: Any, 

152 ) -> Any: 

153 origin = get_origin(annotation) 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

154 use_annotation = annotation 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

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

156 if origin is None: 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

157 if isinstance(use_annotation, ForwardRef): 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

158 use_annotation = use_annotation.__forward_arg__ 2d ;mg h i TcUcVcWcj k tml m n o p q r s t a gnzbAbadbdcdddBbCbYmDbEbFbGbHbIbJbKbLbe =mu v w XcYcZc0cx y umz A B C D E F G H b hnMbNbObedfdgdhdPbQbZmRbSbTbUbVbWbXbYbZbc in0b1b2bidjdkdld3b4b0m5b6b7b8b9b!b#b$b%bf ?mI J K 1c2c3c4cL M vmN O P Q R S T U V

159 else: 

160 return use_annotation 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

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

162 elif _is_union_type(origin): 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

163 use_annotation = get_args(annotation) 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

164 if len(use_annotation) > 2: 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

165 raise ValueError( 

166 "Cannot have a (non-optional) union as a SQLAlchemy field" 

167 ) 

168 arg1, arg2 = use_annotation 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

169 if arg1 is NoneType and arg2 is not NoneType: 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

170 use_annotation = arg2 

171 elif arg2 is NoneType and arg1 is not NoneType: 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

172 use_annotation = arg1 2d g h i Tc5c6cUc7c8cj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a zbAbadmdbdndBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be u v w Xc(c)cYc*c+cx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb MbNbObedqdrdfdsdtdPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc 0b1b2bidydzdjdAdBd3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf I J K 1c]c^c2c_c`cL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

173 else: 

174 raise ValueError( 

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

176 ) 

177 

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

179 elif origin is list: 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

180 use_annotation = get_args(annotation)[0] 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

181 

182 return get_relationship_to( 2d ;mg h i Tc5c6cUc7c8cVc9c!cWc#c$c'b(b)bj W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * a gnzbAbadmdbdndcdodddpd%c'cBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@be =mu v w Xc(c)cYc*c+cZc,c-c0c.c/c[b]b^bx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbb hnMbNbObedqdrdfdsdtdgdudvdhdwdxd:c;c=cPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcc in0b1b2bidydzdjdAdBdkdCdDdldEdFd?c@c[c3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcf ?mI J K 1c]c^c2c_c`c3c{c|c4c}c~cMcNcOcL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

183 name=name, rel_info=rel_info, annotation=use_annotation 

184 ) 

185 

186 def is_field_noneable(field: "FieldInfo") -> bool: 1daebcf

187 if getattr(field, "nullable", Undefined) is not Undefined: 2d GdHd3d4d5d6d'x(xXnko.oAhMd7d8d9dvlLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh*y+y/o?q]qRk/eNhOhPh_lUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e)x*x6nlo@oBhNd@e[e]eDlMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii,y-y[o@q^qSkfgjikili{lVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj.y/yap[q_qTkggCjDjEj}lWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg+x,x(nmojpChOdlgmgngXlNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

188 return field.nullable # type: ignore 2vlLn_lUnDlMn{lVn}lWnXlNn

189 origin = get_origin(field.annotation) 2d GdHd3d4d5d6d'x(xXnko.oAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh*y+y/o?q]qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e)x*x6nlo@oBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii,y-y[o@q^qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj.y/yap[q_qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg+x,x(nmojpChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

190 if origin is not None and _is_union_type(origin): 2d GdHd3d4d5d6d'x(xXnko.oAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh*y+y/o?q]qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e)x*x6nlo@oBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii,y-y[o@q^qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj.y/yap[q_qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg+x,x(nmojpChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

191 args = get_args(field.annotation) 2d GdHd3d4d5d6dXnkoAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh/o?qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e6nloBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii[o@qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBjap[qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg(nmoChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

192 if any(arg is NoneType for arg in args): 2d GdHd3d4d5d6dXnkoAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh/o?qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e6nloBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii[o@qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBjap[qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg(nmoChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

193 return True 2d GdHd3d4d5d6dXnkoAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh/o?qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e6nloBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii[o@qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBjap[qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg(nmoChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

194 if not field.is_required(): 2d GdHd3d4d5d6d'x(xXn.oAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh*y+y/o]qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e)x*x6n@oBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii,y-y[o^qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj.y/yap_qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg+x,x(njpChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

195 if field.default is Undefined: 2GdHdLn'b(b)bPdUn%c'cIdJdMn[b]b^bQdRdVn:c;c=cSdTdWn?c@c[cKdLdNnMcNcOc

196 return False 

197 if field.annotation is None or field.annotation is NoneType: 2GdHdLn'b(b)bPdUn%c'cIdJdMn[b]b^bQdRdVn:c;c=cSdTdWn?c@c[cKdLdNnMcNcOc

198 return True 

199 return False 2GdHdLn'b(b)bPdUn%c'cIdJdMn[b]b^bQdRdVn:c;c=cSdTdWn?c@c[cKdLdNnMcNcOc

200 return False 2d GdHd3d4d5d6d'x(xXn.oAhMd7d8d9dLn;m!d#dg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh*y+y/o]qRk/eNhOhPhUngnQhRhzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?e)x*x6n@oBhNd@e[e]eMn=m^e_eu v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii,y-y[o^qSkfgjikiliVnhnminiMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj.y/yap_qTkggCjDjEjWninFjGj0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkg+x,x(njpChOdlgmgngNn?mogpgI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

201 

202 def get_sa_type_from_type_annotation(annotation: Any) -> Any: 1daebcf

203 # Resolve Optional fields 

204 if annotation is None: 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

205 raise ValueError("Missing field type") 

206 origin = get_origin(annotation) 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

207 if origin is None: 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

208 return annotation 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

209 elif origin is Annotated: 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

210 return get_sa_type_from_type_annotation(get_args(annotation)[0]) 2ul^lCl`l|lWl

211 if _is_union_type(origin): 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

212 bases = get_args(annotation) 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

213 if len(bases) > 2: 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

214 raise ValueError( 

215 "Cannot have a (non-optional) union as a SQLAlchemy field" 

216 ) 

217 # Non optional unions are not allowed 

218 if bases[0] is not NoneType and bases[1] is not NoneType: 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

219 raise ValueError( 2|q)tar,t/tdr

220 "Cannot have a (non-optional) union as a SQLAlchemy field" 

221 ) 

222 # Optional unions are allowed 

223 use_type = bases[0] if bases[0] is not NoneType else bases[1] 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

224 return get_sa_type_from_type_annotation(use_type) 2d GdHd3d4d5d6dulXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|lap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

225 return origin 2`q{q't(t}q~q*t+t-t.tbrcr

226 

227 def get_sa_type_from_field(field: Any) -> Any: 1daebcf

228 type_: Any = field.annotation 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

229 return get_sa_type_from_type_annotation(type_) 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

230 

231 def get_field_metadata(field: Any) -> Any: 1daebcf

232 for meta in field.metadata: 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

233 if isinstance(meta, (PydanticMetadata, MaxLen)): 2GdHdPdIdJdQdRdSdTdKdLd

234 return meta 2GdHdPdIdJdQdRdSdTdKdLd

235 return FakeMetadata() 2d GdHd3d4d5d6dul'x(xXnko.oAhMd7d8d9dSrvlLnTr;m!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]qRk/eNhOhPh8x_lUn9xgnQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@oBhNd@e[e]eUrDlMnVr=m^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^qSkfgjikili!x{lVn#xhnmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_qTkggCjDjEj$x}lWn%xinFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpChOdlgmgngWrXlNnXr?mogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

236 

237 def post_init_field_info(field_info: FieldInfo) -> None: 1daebcf

238 return None 2d GdHd3d4d5d6dul'x(xXnko.opAaCbCnzAh'zMd7d8d9dSrvlLnTrcC;mwzxzyz!d#d`q{q|qg h i YnZn$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d0n1n2n3n[d]d^d_d4n5nUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z tmwmxml 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ea PdLhMh^l*y+y/o?q]q-AdCeC}zRkRA/eNhOhPh8x_lUn9xfCgnqArAsAQhRh't(t)tzbAb:oShThUhVhWhXhYhZh;o=o0h1h?owlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bYm,mDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieie IdJd:e;e=e?eCl)x*x6nlo@otAgChCozBh(zNd@e[e]eUrDlMnVriC=mzzAzBz^e_e}q~qaru v w 7n8n`e{e|e}e~eafbfcfdfefffgfhfifjfkf9n!n#n$nlfmfnfof%n'n3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . umymzmz / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegb QdRdfigihiii`l,y-y[o@q^q.AjCkC~zSkSAfgjikili!x{lVn#xlChnuAvAwAmini*t+t,tMbNbOb]o^ooipiqirisitiuiviwixiyiziAiBiCiDi_o`o{o|oEiFiGiHi}o~oElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bZm-m.mRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjc SdTdyjzjAjBj|l.y/yap[q_q/AmCnCaATkTAggCjDjEj$x}lWn%xoCinxAyAzAFjGj-t.t/t0b1b2bbpcpHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjdpepfpgpXjYjZj0jhpipNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc0m/m:m5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkf KdLdhgigjgkgWl+x,x(nmojpAApCqCpzCh)zOdlgmgngWrXlNnXrrC?mCzDzEzogpgbrcrdrI J K )n*nqgrgsgtgugvgwgxgygzgAgBgCgDgEgFg+n,n-n.nGgHgIgJg/n:n$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbvmAmBmN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

239 

240 # Dummy to make it importable 

241 def _calculate_keys( 1daebcf

242 self: "SQLModel", 1abc

243 include: Optional[Mapping[Union[int, str], Any]], 1abc

244 exclude: Optional[Mapping[Union[int, str], Any]], 1abc

245 exclude_unset: bool, 1abc

246 update: Optional[Dict[str, Any]] = None, 1abc

247 ) -> Optional[AbstractSet[str]]: # pragma: no cover 1abc

248 return None 

249 

250 def sqlmodel_table_construct( 1daebcf

251 *, 

252 self_instance: _TSQLModel, 

253 values: Dict[str, Any], 

254 _fields_set: Union[Set[str], None] = None, 

255 ) -> _TSQLModel: 

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

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

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

259 # set relationships 

260 # SQLModel override to get class SQLAlchemy __dict__ attributes and 

261 # set them back in after creating the object 

262 # new_obj = cls.__new__(cls) 

263 cls = type(self_instance) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

264 old_dict = self_instance.__dict__.copy() 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

265 # End SQLModel override 

266 

267 fields_values: Dict[str, Any] = {} 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

268 defaults: Dict[ 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

269 str, Any 

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

271 for name, field in cls.model_fields.items(): 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

272 if field.alias and field.alias in values: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

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

274 elif name in values: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

275 fields_values[name] = values.pop(name) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiiifgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBjggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

276 elif not field.is_required(): 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9d!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPhQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]e^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikiliminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEjFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

277 defaults[name] = field.get_default(call_default_factory=True) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9d!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPhQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]e^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikiliminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEjFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

278 if _fields_set is None: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

279 _fields_set = set(fields_values.keys()) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

280 fields_values.update(defaults) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

281 

282 _extra: Union[Dict[str, Any], None] = None 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

283 if cls.model_config.get("extra") == "allow": 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

284 _extra = {} 

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

286 _extra[k] = v 

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

288 # else: 

289 # fields_values.update(values) 

290 # End SQLModel override 

291 # SQLModel override 

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

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

294 # instrumentation 

295 for key, value in {**old_dict, **fields_values}.items(): 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

296 setattr(self_instance, key, value) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

297 # End SQLModel override 

298 object.__setattr__(self_instance, "__pydantic_fields_set__", _fields_set) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

299 if not cls.__pydantic_root_model__: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

300 object.__setattr__(self_instance, "__pydantic_extra__", _extra) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

301 

302 if cls.__pydantic_post_init__: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

303 self_instance.model_post_init(None) 

304 elif not cls.__pydantic_root_model__: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

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

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

307 object.__setattr__(self_instance, "__pydantic_private__", None) 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

308 # SQLModel override, set relationships 

309 # Get and set any relationship objects 

310 for key in self_instance.__sqlmodel_relationships__: 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

311 value = values.get(key, Undefined) 2Mdeog h i Vc9c!cWc#c$c'b(b)bj W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * /efozbAbcdodddpd%c'cBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@bNdgou v w Zc,c-c0c.c/c[b]b^bx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbfghoMbNbObgdudvdhdwdxd:c;c=cPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcggio0b1b2bkdCdDdldEdFd?c@c[c3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcOdjoI J K 3c{c|c4c}c~cMcNcOcL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

312 if value is not Undefined: 2Mdeog h i Vc9c!cWc#c$c'b(b)bj W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * /efozbAbcdodddpd%c'cBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@bNdgou v w Zc,c-c0c.c/c[b]b^bx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbfghoMbNbObgdudvdhdwdxd:c;c=cPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcggio0b1b2bkdCdDdldEdFd?c@c[c3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcOdjoI J K 3c{c|c4c}c~cMcNcOcL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

313 setattr(self_instance, key, value) 2Mdeog h i Vc9c!cWc#c$c'b(b)bj W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * /efozbAbcdodddpd%c'cBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@bNdgou v w Zc,c-c0c.c/c[b]b^bx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcbfghoMbNbObgdudvdhdwdxd:c;c=cPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpcggio0b1b2bkdCdDdldEdFd?c@c[c3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcOdjoI J K 3c{c|c4c}c~cMcNcOcL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb

314 # End SQLModel override 

315 return self_instance 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

316 

317 def sqlmodel_validate( 1daebcf

318 cls: Type[_TSQLModel], 

319 obj: Any, 

320 *, 

321 strict: Union[bool, None] = None, 

322 from_attributes: Union[bool, None] = None, 

323 context: Union[Dict[str, Any], None] = None, 

324 update: Union[Dict[str, Any], None] = None, 

325 ) -> _TSQLModel: 

326 if not is_table_model_class(cls): 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

327 new_obj: _TSQLModel = cls.__new__(cls) 2[yqz$y]yrz=y^ysz%y_ytz?y`yuz@y{yvz'y

328 else: 

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

330 # the _sa_instance_state attribute 

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

332 with partial_init(): 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

333 new_obj = cls() 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

334 # SQLModel Override to get class SQLAlchemy __dict__ attributes and 

335 # set them back in after creating the object 

336 old_dict = new_obj.__dict__.copy() 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

337 use_obj = obj 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

338 if isinstance(obj, dict) and update: 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

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

340 elif update: 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

341 use_obj = ObjectWithUpdateWrapper(obj=obj, update=update) 2UdVdWdDhEhXdYdZdFhGhHhIhJhKh0d1d2d

342 cls.__pydantic_validator__.validate_python( 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

343 use_obj, 

344 strict=strict, 

345 from_attributes=from_attributes, 

346 context=context, 

347 self_instance=new_obj, 

348 ) 

349 # Capture fields set to restore it later 

350 fields_set = new_obj.__pydantic_fields_set__.copy() 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

351 if not is_table_model_class(cls): 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

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

353 new_obj.__dict__ = {**old_dict, **new_obj.__dict__} 2[yqz$y]yrz=y^ysz%y_ytz?y`yuz@y{yvz'y

354 else: 

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

356 # instrumentation 

357 for key, value in {**old_dict, **new_obj.__dict__}.items(): 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

358 setattr(new_obj, key, value) 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

359 # Restore fields set 

360 object.__setattr__(new_obj, "__pydantic_fields_set__", fields_set) 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

361 # Get and set any relationship objects 

362 if is_table_model_class(cls): 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

363 for key in new_obj.__sqlmodel_relationships__: 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufuguhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdnuoupuqurusutuuuvuwuxuyuzuAuBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTvUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

364 value = getattr(use_obj, key, Undefined) 2Tc5c6cUc7c8cadmdbdndXc(c)cYc*c+cedqdrdfdsdtdidydzdjdAdBd1c]c^c2c_c`c

365 if value is not Undefined: 2Tc5c6cUc7c8cadmdbdndXc(c)cYc*c+cedqdrdfdsdtdidydzdjdAdBd1c]c^c2c_c`c

366 setattr(new_obj, key, value) 

367 return new_obj 2:t;t=t?t@t[t]t^t_t`t{t|t}t~taubucudueufugu[yqzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWd$ynuoupuqurusutuuuvuwuxuyuzuAu]yrzBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEh=yHuIuJuKuLuMuNuOuPuQuRuSuTuUuVuWuXuYuZu0u1u^ysz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZd%y8u9u!u#u$u%u'u(u)u*u+u,u-u.u/u:u;u=u?u@u[u_ytz]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHh?y}u~uavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsv`yuztvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKh@yzvAvBvCvDvEvFvGvHvIvJvKvLvMvNvOvPvQvRvSvTv{yvzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d'y

368 

369 def sqlmodel_init(*, self: "SQLModel", data: Dict[str, Any]) -> None: 1daebcf

370 old_dict = self.__dict__.copy() 2}A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[ynzAh'zMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ecBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]y}zRkRA/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yozBh(zNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegjB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_y~zSkSAfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjnB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yaATkTAggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkrBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{ypzCh)zOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

371 if not is_table_model_class(self.__class__): 2}A:tDBEBpqqqrq;n;t=t?t@t[t]t~A^tFBGBsqtquq=n_t`t{t|t}t~taBauHBIBvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[ynzAh'zMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ecBnuJBKBzqAqBq@noupuqurusutudBuuLBMBCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]y}zRkRA/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifBHuNBOBGqHqIq]nIuJuKuLuMuNugBOuPBQBJqKqLq^nPuQuRuSuTuUuhBVuRBSBMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yozBh(zNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegjB8uTBUBQqRqSq`n9u!u#u$u%u'ukB(uVBWBTqUqVq{n)u*u+u,u-u.ulB/uXBYBWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_y~zSkSAfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjnB}uZB0B0q1q2q}n~uavbvcvdvevoBfv1B2B3q4q5q~ngvhvivjvkvlvpBmv3B4B6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yaATkTAggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkrBzv5B6B!q#q$qboAvBvCvDvEvFvsBGv7B8B%q'q(qcoHvIvJvKvLvMvtBNv9B!B)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{ypzCh)zOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

372 self.__pydantic_validator__.validate_python( 2}A:tDBEB;n;t=t?t@t[t]t~A^tFBGB=n_t`t{t|t}t~taBauHBIB?nbucudueufugubB[ynz'zwzxzyzhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6cXkYkZkUc7c8c0k1k2kUdVdWdcBnuJBKB@noupuqurusutudBuuLBMB[nvuwuxuyuzuAueB]y}zRAqArAsABuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmdylzlbdndAlBlDhEhfBHuNBOB]nIuJuKuLuMuNugBOuPBQB^nPuQuRuSuTuUuhBVuRBSB_nWuXuYuZu0u1uiB^yoz(zzzAzBz2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)c6k7k8kYc*c+c9k!k#kXdYdZdjB8uTBUB`n9u!u#u$u%u'ukB(uVBWB{n)u*u+u,u-u.ulB/uXBYB|n:u;u=u?u@u[umB_y~zSAuAvAwA]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdHlIlJlfdsdtdKlLlMlFhGhHhnB}uZB0B}n~uavbvcvdvevoBfv1B2B~ngvhvivjvkvlvpBmv3B4BaonvovpvqvrvsvqB`yaATAxAyAzAtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzdQlRlSljdAdBdTlUlVlIhJhKhrBzv5B6BboAvBvCvDvEvFvsBGv7B8BcoHvIvJvKvLvMvtBNv9B!BdoOvPvQvRvSvTvuB{ypz)zCzDzEzUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^c(k)k*k2c_c`c+k,k-k0d1d2d

373 data, 

374 self_instance=self, 

375 ) 

376 else: 

377 sqlmodel_table_construct( 2pqqqrq;nsqtquq=nvqwqxq?nGdHd3d4d5d6dulAhMd7d8d9dvl!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ezqAqBq@nCqDqEq[nPdLhMh^lRk/eNhOhPh_lQhRhFqfozbAbShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieiGqHqIq]nJqKqLq^nMqNqOq_nIdJd:e;e=e?eClBhNd@e[e]eDl^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegQqRqSq`nTqUqVq{nWqXqYq|nQdRdfigihiii`lSkfgjikili{lminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHiIiJiKiLiMiNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxj0q1q2q}n3q4q5q~n6q7q8qaoSdTdyjzjAjBj|lTkggCjDjEj}lFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0j1j2j3j4j5j6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQk!q#q$qbo%q'q(qco)q*q+qdoKdLdhgigjgkgWlChOdlgmgngXlogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

378 self_instance=self, 

379 values=data, 

380 ) 

381 object.__setattr__( 2}A:tpqqqrq;n;t=t?t@t[t]t~A^tsqtquq=n_t`t{t|t}t~taBauvqwqxq?nbucudueufuguGdHd3d4d5d6dulbB[ynzAhMd7d8d9dvlwzxzyz!d#dyqeog h i $d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_dhuiujukulumuUkVkWk.k/k:k;k=k?k@k[k]k^k_k`kTc5c6c`d{d|dXkYkZk}d~dUc7c8c0k1k2kUdVdWdaebecedeeefegeheiejekelemeneoepeqereVc9c!cWc#c$c'b(b)bseteuevewexeyezeAeBeCeDeEeFeGeHeIeJej W X k Y Z l 0 1 m 2 3 n 4 5 o 6 7 p 8 9 q ! # r $ % s ' ( t ) * KeLeMeNeOePeQeReSeTeUeVeWeXeYeZe0e1e2e3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.ecBnuzqAqBq@noupuqurusutudBuuCqDqEq[nvuwuxuyuzuAuPdLhMh^leB]y}zRk/eNhOhPh_lqArAsAQhRhFqfozbAbShThUhVhWhXhYhZh0h1hBuCuDuEuFuGuwlxlYlZl0l1l2l3l4l5ladmd2h3hylzl4hbdndAlBlDhEh5h6h7h8h9h!h#h$h%hcdodddpd%c'c'h(h)h*h+h,h-h.h/hBb*bCb+bDb,bEb-bFb.bGb/bHb:bIb;bJb=bKb?bLb@b:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifBHuGqHqIq]nIuJuKuLuMuNugBOuJqKqLq^nPuQuRuSuTuUuhBVuMqNqOq_nWuXuYuZu0u1uIdJd:e;e=e?eCliB^yozBhNd@e[e]eDlzzAzBz^e_ePqgou v w `e{e|e}e~eafbfcfdfefffgfhfifjfkflfmfnfof2u3u4u5u6u7u3k4k5k{k|k}k~kalblcldlelflglhlXc(c)cpfqfrf6k7k8ksftfYc*c+c9k!k#kXdYdZdufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfZc,c-c0c.c/c[b]b^bMfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3fx + , y - . z / : A ; = B ? @ C [ ] D ^ _ E ` { F | } G ~ abH bbcb4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegjB8uQqRqSq`n9u!u#u$u%u'ukB(uTqUqVq{n)u*u+u,u-u.ulB/uWqXqYq|n:u;u=u?u@u[uQdRdfigihiii`lmB_y~zSkfgjikili{luAvAwAminiZqhoMbNbOboipiqirisitiuiviwixiyiziAiBiCiDiEiFiGiHi]u^u_u`u{u|uElFlGl6l7l8l9l!l#l$l%l'l(l)l*ledqdrdIiJiKiHlIlJlLiMifdsdtdKlLlMlFhGhHhNiOiPiQiRiSiTiUiViWiXiYiZi0i1i2i3i4igdudvdhdwdxd:c;c=c5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/iPb_b`bQb{b|bRb}b~bSbacbcTbccdcUbecfcVbgchcWbicjcXbkclcYbmcncZbocpc:i;i=i?i@i[i]i^i_i`i{i|i}i~iajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjnB}u0q1q2q}n~uavbvcvdvevoBfv3q4q5q~ngvhvivjvkvlvpBmv6q7q8qaonvovpvqvrvsvSdTdyjzjAjBj|lqB`yaATkggCjDjEj}lxAyAzAFjGj9qio0b1b2bHjIjJjKjLjMjNjOjPjQjRjSjTjUjVjWjXjYjZj0jtvuvvvwvxvyvNlOlPl+l,l-l.l/l:l;l=l?l@l[l]lidydzd1j2j3jQlRlSl4j5jjdAdBdTlUlVlIhJhKh6j7j8j9j!j#j$j%j'j(j)j*j+j,j-j.j/j:jkdCdDdldEdFd?c@c[c;j=j?j@j[j]j^j_j`j{j|j}j~jakbkckdkek3bqcrc4bsctc5bucvc6bwcxc7byczc8bAcBc9bCcDc!bEcFc#bGcHc$bIcJc%bKcLcfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzkAkBkCkDkEkFkGkHkIkJkKkLkMkNkOkPkQkrBzv!q#q$qboAvBvCvDvEvFvsBGv%q'q(qcoHvIvJvKvLvMvtBNv)q*q+qdoOvPvQvRvSvTvKdLdhgigjgkgWluB{ypzChOdlgmgngXlCzDzEzogpg,qjoI J K qgrgsgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJgUvVvWvXvYvZv$k%k'kiljlklllmlnlolplqlrlsltl1c]c^cKgLgMg(k)k*kNgOg2c_c`c+k,k-k0d1d2dPgQgRgSgTgUgVgWgXgYgZg0g1g2g3g4g5g6g3c{c|c4c}c~cMcNcOc7g8g9g!g#g$g%g'g(g)g*g+g,g-g.g/g:g;gL dbebM fbgbN hbibO jbkbP lbmbQ nbobR pbqbS rbsbT tbubU vbwbV xbyb=g?g@g[g]g^g_g`g{g|g}g~gahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhzh

382 self, 

383 "__dict__", 

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

385 ) 

386 

387else: 

388 from pydantic import BaseConfig as BaseConfig # type: ignore[assignment] 2PcQcRcSc

389 from pydantic.errors import ConfigError 2PcQcRcSc

390 from pydantic.fields import ( # type: ignore[attr-defined, no-redef] 2PcQcRcSc

391 SHAPE_SINGLETON, 

392 ModelField, 

393 ) 

394 from pydantic.fields import ( # type: ignore[attr-defined, no-redef] 2PcQcRcSc

395 Undefined as Undefined, # noqa 

396 ) 

397 from pydantic.fields import ( # type: ignore[attr-defined, no-redef] 2PcQcRcSc

398 UndefinedType as UndefinedType, 

399 ) 

400 from pydantic.main import ( # type: ignore[no-redef] 2PcQcRcSc

401 ModelMetaclass as ModelMetaclass, 

402 ) 

403 from pydantic.main import validate_model 2PcQcRcSc

404 from pydantic.typing import resolve_annotations 2PcQcRcSc

405 from pydantic.utils import ROOT_KEY, ValueItems 2PcQcRcSc

406 from pydantic.utils import ( # type: ignore[no-redef] 2PcQcRcSc

407 Representation as Representation, 

408 ) 

409 

410 class SQLModelConfig(BaseConfig): # type: ignore[no-redef] 2PcQcRcSc

411 table: Optional[bool] = None # type: ignore[misc] 2PcQcRcSc

412 registry: Optional[Any] = None # type: ignore[misc] 2PcQcRcSc

413 

414 def get_config_value( 2PcQcRcSc

415 *, model: InstanceOrType["SQLModel"], parameter: str, default: Any = None 

416 ) -> Any: 

417 return getattr(model.__config__, parameter, default) # type: ignore[union-attr] 2Pcpsqsrssstsus*z+zFz,z-z%BBA-xvBvs.x/x:xCAsyGzDA|yEAFAUA;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAQc0v1v2v3v4v5v.z/zPz:z;z'BWAty#B6vuyvywyGA(yQzHAbzXAYA6AxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7ARc4w5w6w7w8w9w=z?zZz@z[z(BZAJy$B!wKyLyMyIA)y0zJAfz0A1A8ANyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9AScttutvt]z^z9z_z`z)BKA~xwBwtaybycyLAZy!zMAjzNAOA2AdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

418 

419 def set_config_value( 2PcQcRcSc

420 *, 

421 model: InstanceOrType["SQLModel"], 

422 parameter: str, 

423 value: Any, 

424 ) -> None: 

425 setattr(model.__config__, parameter, value) # type: ignore 2Pcpsqsrssstsus*z+zFz,z-z%B-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;z'Bty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[z(BJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z)B~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

426 

427 def get_model_fields(model: InstanceOrType[BaseModel]) -> Dict[str, "FieldInfo"]: 2PcQcRcSc

428 return model.__fields__ # type: ignore 2Pclqmqnqpsqsrssstsus*z+zFz,z-z%B-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc-q.q/q0v1v2v3v4v5v.z/zPz:z;z'Bty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc:q;q=q4w5w6w7w8w9w=z?zZz@z[z(BJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScoqttutvt]z^z9z_z`z)B~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

429 

430 def get_fields_set( 2PcQcRcSc

431 object: InstanceOrType["SQLModel"], 

432 ) -> Union[Set[str], Callable[[BaseModel], Set[str]]]: 

433 return object.__fields_set__ 2BAWAZAKA

434 

435 def init_pydantic_private_attrs(new_object: InstanceOrType["SQLModel"]) -> None: 2PcQcRcSc

436 object.__setattr__(new_object, "__fields_set__", set()) 2_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:y'ABA-xvBvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr=B?B:A0y1y-qZr0r1r2r3r4ryB5r@B[B;A2y3y.q6r7r8r9r!r#rzB$r]B^B=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?Alz(AWAty#B6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r_B`B@A6y7y:q?r@r[r]r^r_rBB`r{B|B[A8y9y;q{r|r}r~rasbsCBcs}B~B]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^Amz)AZAJy$B!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;y,AKA~xwBwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

437 

438 def get_annotations(class_dict: Dict[str, Any]) -> Dict[str, Any]: 2PcQcRcSc

439 return resolve_annotations( # type: ignore[no-any-return] 2Pcpsqsrssstsus*z+zFz,z-z%BBA-xvBvs.x/x:xCAsyGzDA|yEAFAUA;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAQc0v1v2v3v4v5v.z/zPz:z;z'BWAty#B6vuyvywyGA(yQzHAbzXAYA6AxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7ARc4w5w6w7w8w9w=z?zZz@z[z(BZAJy$B!wKyLyMyIA)y0zJAfz0A1A8ANyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9AScttutvt]z^z9z_z`z)BKA~xwBwtaybycyLAZy!zMAjzNAOA2AdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

440 class_dict.get("__annotations__", {}), 

441 class_dict.get("__module__", None), 

442 ) 

443 

444 def is_table_model_class(cls: Type[Any]) -> bool: 2PcQcRcSc

445 config = getattr(cls, "__config__", None) 2Pc_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:y*z+zFz,z-z%BBA-xvBvs.x/x:xCAsyGzDA|yEAFAUA;x=xbAcAdAPA{znooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAQcxBYr=B?B:A0y1y-qZr0r1r2r3r4ryB5r@B[B;A2y3y.q6r7r8r9r!r#rzB$r]B^B=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?Alz.z/zPz:z;z'BWAty#B6vuyvywyGA(yQzHAbzXAYA6AxyyyeAfAgA4AnAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7ARcAB=r_B`B@A6y7y:q?r@r[r]r^r_rBB`r{B|B[A8y9y;q{r|r}r~rasbsCBcs}B~B]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^Amz=z?zZz@z[z(BZAJy$B!wKyLyMyIA)y0zJAfz0A1A8ANyOyhAiAjA5AoA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8zjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9ASc|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;y]z^z9z_z`z)BKA~xwBwtaybycyLAZy!zMAjzNAOA2AdyeykAlAmAQA|z6o#zxtytztAtBtCtDtEt$z%zFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

446 if config: 2Pc_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:y*z+zFz,z-z%BBA-xvBvs.x/x:xCAsyGzDA|yEAFAUA;x=xbAcAdAPA{znooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAQcxBYr=B?B:A0y1y-qZr0r1r2r3r4ryB5r@B[B;A2y3y.q6r7r8r9r!r#rzB$r]B^B=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?Alz.z/zPz:z;z'BWAty#B6vuyvywyGA(yQzHAbzXAYA6AxyyyeAfAgA4AnAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7ARcAB=r_B`B@A6y7y:q?r@r[r]r^r_rBB`r{B|B[A8y9y;q{r|r}r~rasbsCBcs}B~B]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^Amz=z?zZz@z[z(BZAJy$B!wKyLyMyIA)y0zJAfz0A1A8ANyOyhAiAjA5AoA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8zjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9ASc|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;y]z^z9z_z`z)BKA~xwBwtaybycyLAZy!zMAjzNAOA2AdyeykAlAmAQA|z6o#zxtytztAtBtCtDtEt$z%zFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

447 return getattr(config, "table", False) 2Pc_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:y*z+zFz,z-z%BBA-xvBvs.x/x:xCAsyGzDA|yEAFAUA;x=xbAcAdAPA{znooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAQcxBYr=B?B:A0y1y-qZr0r1r2r3r4ryB5r@B[B;A2y3y.q6r7r8r9r!r#rzB$r]B^B=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?Alz.z/zPz:z;z'BWAty#B6vuyvywyGA(yQzHAbzXAYA6AxyyyeAfAgA4AnAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7ARcAB=r_B`B@A6y7y:q?r@r[r]r^r_rBB`r{B|B[A8y9y;q{r|r}r~rasbsCBcs}B~B]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^Amz=z?zZz@z[z(BZAJy$B!wKyLyMyIA)y0zJAfz0A1A8ANyOyhAiAjA5AoA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8zjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9ASc|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;y]z^z9z_z`z)BKA~xwBwtaybycyLAZy!zMAjzNAOA2AdyeykAlAmAQA|z6o#zxtytztAtBtCtDtEt$z%zFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

448 return False 

449 

450 def get_relationship_to( 2PcQcRcSc

451 name: str, 

452 rel_info: "RelationshipInfo", 

453 annotation: Any, 

454 ) -> Any: 

455 temp_field = ModelField.infer( # type: ignore[attr-defined] 2Pc|ynooopo~lambmcmdmemqorosotouovowoxoyozoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5oQcbzkplpmphmimjmkmlmmmnpopppqprpsptpupvpwpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pRcfz3p4p5pnmompmqmrmsm6p7p8p9p!p#p$p%p'p(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqScjz6ofmgm7o8o9o!o#okz$o%o'o(o)o*o+o,o-o

456 name=name, 

457 value=rel_info, 

458 annotation=annotation, 

459 class_validators=None, 

460 config=SQLModelConfig, 

461 ) 

462 relationship_to = temp_field.type_ 2Pc|ynooopo~lambmcmdmemqorosotouovowoxoyozoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5oQcbzkplpmphmimjmkmlmmmnpopppqprpsptpupvpwpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pRcfz3p4p5pnmompmqmrmsm6p7p8p9p!p#p$p%p'p(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqScjz6ofmgm7o8o9o!o#okz$o%o'o(o)o*o+o,o-o

463 if isinstance(temp_field.type_, ForwardRef): 2Pc|ynooopo~lambmcmdmemqorosotouovowoxoyozoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5oQcbzkplpmphmimjmkmlmmmnpopppqprpsptpupvpwpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pRcfz3p4p5pnmompmqmrmsm6p7p8p9p!p#p$p%p'p(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqScjz6ofmgm7o8o9o!o#okz$o%o'o(o)o*o+o,o-o

464 relationship_to = temp_field.type_.__forward_arg__ 2Pc|ynooopo~lambmcmdmemqorosotouovowoxoyozoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5oQcbzkplpmphmimjmkmlmmmnpopppqprpsptpupvpwpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pRcfz3p4p5pnmompmqmrmsm6p7p8p9p!p#p$p%p'p(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqScjz6ofmgm7o8o9o!o#okz$o%o'o(o)o*o+o,o-o

465 return relationship_to 2Pc|ynooopo~lambmcmdmemqorosotouovowoxoyozoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5oQcbzkplpmphmimjmkmlmmmnpopppqprpsptpupvpwpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pRcfz3p4p5pnmompmqmrmsm6p7p8p9p!p#p$p%p'p(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqScjz6ofmgm7o8o9o!o#okz$o%o'o(o)o*o+o,o-o

466 

467 def is_field_noneable(field: "FieldInfo") -> bool: 2PcQcRcSc

468 if not field.required: # type: ignore[attr-defined] 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xsyGz|y;x=xnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywy(yQzbzxyyykplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMy)y0zfzNyOy3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyZy!zjzdyey6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

469 # Taken from [Pydantic](https://github.com/samuelcolvin/pydantic/blob/v1.8.2/pydantic/fields.py#L946-L947) 

470 return field.allow_none and ( # type: ignore[attr-defined] 2PcpsqsrssstsusFz,z-xvs.x/x:xsyGz|y;x=xnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5vPz:zty6vuyvywy(yQzbzxyyykplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9wZz@zJy!wKyLyMy)y0zfzNyOy3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt9z_z~xwtaybycyZy!zjzdyey6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

471 field.shape != SHAPE_SINGLETON or not field.sub_fields # type: ignore[attr-defined] 

472 ) 

473 return field.allow_none # type: ignore[no-any-return, attr-defined] 2Pcpsqsrssstsus*z+zFz-z-xvs.x/x:xGz|y;x=xnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz;zty6vuyvywyQzbzxyyykplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz[zJy!wKyLyMy0zfzNyOy3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z`z~xwtaybycy!zjzdyey6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

474 

475 def get_sa_type_from_field(field: Any) -> Any: 2PcQcRcSc

476 if isinstance(field.type_, type) and field.shape == SHAPE_SINGLETON: 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

477 return field.type_ 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

478 raise ValueError(f"The field {field.name} has no matching SQLAlchemy type") 2bAcAdAeAfAgAhAiAjAkAlAmA

479 

480 def get_field_metadata(field: Any) -> Any: 2PcQcRcSc

481 metadata = FakeMetadata() 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

482 metadata.max_length = field.field_info.max_length 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

483 metadata.max_digits = getattr(field.type_, "max_digits", None) 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

484 metadata.decimal_places = getattr(field.type_, "decimal_places", None) 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

485 return metadata 2Pcpsqsrssstsus*z+zFz,z-z-xvs.x/x:xCAsyGzDA|y;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;zty6vuyvywyGA(yQzHAbzxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[zJy!wKyLyMyIA)y0zJAfzNyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z~xwtaybycyLAZy!zMAjzdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

486 

487 def post_init_field_info(field_info: FieldInfo) -> None: 2PcQcRcSc

488 field_info._validate() # type: ignore[attr-defined] 2Pcpsqsrssstsus*z+zFz,z-z%BsCtCBA-xvBvs.x/x:xCAsyGzDAuC|yEAFAUA;x=xbAcAdAnooopoHzIzwsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsJzKzLzMzMsNsOsPsNzOzGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEo}y~yazFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstQc0v1v2v3v4v5v.z/zPz:z;z'BvCwCWAty#B6vuyvywyGA(yQzHAxCbzXAYA6AxyyyeAfAgAkplpmpRzSz7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/vTzUzVzWz:v;v=v?vXzYz1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpczdzezCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3wRc4w5w6w7w8w9w=z?zZz@z[z(ByCzCZAJy$B!wKyLyMyIA)y0zJAACfz0A1A8ANyOyhAiAjA3p4p5p1z2z#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w3z4z5z6z@w[w]w^w7z8z!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-pgzhziz.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xScttutvt]z^z9z_z`z)BBCCCKA~xwBwtaybycyLAZy!zMADCjzNAOA2AdyeykAlAmA6o#zxtytztAtBtCtDtEt$z%zFtGtVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#okz$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

489 

490 def _calculate_keys( 2PcQcRcSc

491 self: "SQLModel", 

492 include: Optional[Mapping[Union[int, str], Any]], 

493 exclude: Optional[Mapping[Union[int, str], Any]], 

494 exclude_unset: bool, 

495 update: Optional[Dict[str, Any]] = None, 

496 ) -> Optional[AbstractSet[str]]: 

497 if include is None and exclude is None and not exclude_unset: 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryrpsqsrssstsus%APA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVsWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s6s7s8s9s!s#s$s%s's(s)s*szoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?A4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`v{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwgwhwiwjwkwlwmwnwowpwqwrwwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsis4w5w6w7w8w9w^A5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~waxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxkxlxmxnxoxpxqxrxsxtxuxvx(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xFrqyryoqGrHrIrJrKrLrttutvt+AQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtKtLtMtNt7o8o9oOtPtQtRtStTtUt!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

498 # Original in Pydantic: 

499 # return None 

500 # Updated to not return SQLAlchemy attributes 

501 # Do not include relationships as that would easily lead to infinite 

502 # recursion, or traversing the whole database 

503 return ( 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryrpsqsrssstsus%APA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVsWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s6s7s8s9s!s#s$s%s's(s)s*szoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?A4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`v{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwgwhwiwjwkwlwmwnwowpwqwrwwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsis4w5w6w7w8w9w^A5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~waxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxkxlxmxnxoxpxqxrxsxtxuxvx(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xFrqyryoqGrHrIrJrKrLrttutvt+AQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtKtLtMtNt7o8o9oOtPtQtRtStTtUt!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

504 self.__fields__.keys() # noqa 

505 ) # | self.__sqlmodel_relationships__.keys() 

506 

507 keys: AbstractSet[str] 

508 if exclude_unset: 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

509 keys = self.__fields_set__.copy() # noqa 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

510 else: 

511 # Original in Pydantic: 

512 # keys = self.__dict__.keys() 

513 # Updated to not return SQLAlchemy attributes 

514 # Do not include relationships as that would easily lead to infinite 

515 # recursion, or traversing the whole database 

516 keys = ( 

517 self.__fields__.keys() # noqa 

518 ) # | self.__sqlmodel_relationships__.keys() 

519 if include is not None: 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

520 keys &= include.keys() 

521 

522 if update: 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

523 keys -= update.keys() 

524 

525 if exclude: 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

526 keys -= {str(k) for k, v in exclude.items() if ValueItems.is_true(v)} 

527 

528 return keys 2lqmqnqGmHmIm~lambmJmKmLmcmdmemMmNmOmCmDmEm-q.q/q1m2m3mhmimjm4m5m6mkmlmmm7m8m9mPmQmRm:q;q=q!m#m$mnmompm%m'm(mqmrmsm)m*m+mSmTmUmoqVmfmWmgmXmFm

529 

530 def sqlmodel_validate( 2PcQcRcSc

531 cls: Type[_TSQLModel], 

532 obj: Any, 

533 *, 

534 strict: Union[bool, None] = None, 

535 from_attributes: Union[bool, None] = None, 

536 context: Union[Dict[str, Any], None] = None, 

537 update: Union[Dict[str, Any], None] = None, 

538 ) -> _TSQLModel: 

539 # This was SQLModel's original from_orm() for Pydantic v1 

540 # Duplicated from Pydantic 

541 if not cls.__config__.orm_mode: # type: ignore[attr-defined] # noqa 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

542 raise ConfigError( 

543 "You must have the config attribute orm_mode=True to use from_orm" 

544 ) 

545 if not isinstance(obj, Mapping): 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

546 obj = ( 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:yzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismzjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;yMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

547 {ROOT_KEY: obj} 

548 if cls.__custom_root_type__ # type: ignore[attr-defined] # noqa 

549 else cls._decompose_class(obj) # type: ignore[attr-defined] # noqa 

550 ) 

551 # SQLModel, support update dict 

552 if update is not None: 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

553 obj = {**obj, **update} 2CmDmEmPmQmRmSmTmUmFm

554 # End SQLModel support dict 

555 if not getattr(cls.__config__, "table", False): # noqa 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

556 # If not table, normal Pydantic code 

557 m: _TSQLModel = cls.__new__(cls) 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjm4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompm%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmWmgmXmFm

558 else: 

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

560 # the _sa_instance_state attribute 

561 m = cls() 2erfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrGrHrIrJrKrLrMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

562 values, fields_set, validation_error = validate_model(cls, obj) 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

563 if validation_error: 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

564 raise validation_error 

565 # Updated to trigger SQLAlchemy internal handling 

566 if not getattr(cls.__config__, "table", False): # noqa 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

567 object.__setattr__(m, "__dict__", values) 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjm4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompm%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmWmgmXmFm

568 else: 

569 for key, value in values.items(): 2erfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrGrHrIrJrKrLrMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

570 setattr(m, key, value) 2erfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYrZr0r1r2r3r4r5r6r7r8r9r!r#r$r%r'r(r)r*r+r,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r?r@r[r]r^r_r`r{r|r}r~rasbscsdsesfsgshsisjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrGrHrIrJrKrLrMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

571 # Continue with standard Pydantic logic 

572 object.__setattr__(m, "__fields_set__", fields_set) 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

573 m._init_private_attributes() # type: ignore[attr-defined] # noqa 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

574 return m 2erkylylqfrgrhrirjrkrlrmynymqmrnrorprqrrrsroypynqtrurvrwrxryr:y'AzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmcmdmemMmNmOmCmDmEmYr0y1y-qZr0r1r2r3r4r5r2y3y.q6r7r8r9r!r#r$r4y5y/q%r'r(r)r*r+rlz(A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6mkmlmmm7m8m9mPmQmRm=r6y7y:q?r@r[r]r^r_r`r8y9y;q{r|r}r~rasbscs!y#y=qdsesfsgshsismz)Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(mqmrmsm)m*m+mSmTmUmFrqyryoqGrHrIrJrKrLr;y,AMrNrOrPrQrRrVmcndnenfnfmKnWmgmXmFm

575 

576 def sqlmodel_init(*, self: "SQLModel", data: Dict[str, Any]) -> None: 2PcQcRcSc

577 values, fields_set, validation_error = validate_model(self.__class__, data) 2_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvBvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr=B?B:A0y1y-qZr0r1r2r3r4ryB5r@B[B;A2y3y.q6r7r8r9r!r#rzB$r]B^B=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?AlzWAty#B6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r_B`B@A6y7y:q?r@r[r]r^r_rBB`r{B|B[A8y9y;q{r|r}r~rasbsCBcs}B~B]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^AmzZAJy$B!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwBwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

578 # Only raise errors if not a SQLModel model 

579 if ( 2_Aer*B+B!Akylylqfrgrhrirjrkr`Alr,B-B#Amynymqmrnrorprqrrr{Asr.B/B$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvBvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVA|AFr:B;B*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwBwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

580 not is_table_model_class(self.__class__) # noqa 

581 and validation_error 

582 ): 

583 raise validation_error 2*B+B,B-B.B/BvBEAFAVA=B?B@B[B]B^B#BXAYA7A_B`B{B|B}B~B$B0A1A9A:B;BwBNAOA3A

584 if not is_table_model_class(self.__class__): 2_Aer!Akylylqfrgrhrirjrkr`Alr#Amynymqmrnrorprqrrr{Asr$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr:A0y1y-qZr0r1r2r3r4ryB5r;A2y3y.q6r7r8r9r!r#rzB$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?AlzWAty6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r@A6y7y:q?r@r[r]r^r_rBB`r[A8y9y;q{r|r}r~rasbsCBcs]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^AmzZAJy!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

585 object.__setattr__(self, "__dict__", values) 2_Aerlqfrgrhrirjrkr`Alrmqmrnrorprqrrr{Asrnqtrurvrwrxryr%A:yBAEAFAUAzrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmJmKmLmcmdmemMmNmOmCmDmEmVAxBYr-qZr0r1r2r3r4ryB5r.q6r7r8r9r!r#rzB$r/q%r'r(r)r*r+r?AlzWAXAYA6A,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjm4m5m6mkmlmmm7m8m9mPmQmRm7AAB=r:q?r@r[r]r^r_rBB`r;q{r|r}r~rasbsCBcs=qdsesfsgshsis^AmzZA0A1A8Ajskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompm%m'm(mqmrmsm)m*m+mSmTmUm9A|AFroqGrHrIrJrKrLr+A;yKANAOA2AMrNrOrPrQrRrVmcndnenfnfmWmgmXmFm3A

586 else: 

587 # Do not set values as in Pydantic, pass them through setattr, so 

588 # SQLAlchemy can handle them 

589 for key, value in values.items(): 2er!Akylylqfrgrhrirjrkrlr#Amynymqmrnrorprqrrrsr$Aoypynqtrurvrwrxryrpsqsrssstsus-xvs.x/x:xsy;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstYr:A0y1y-qZr0r1r2r3r4r5r;A2y3y.q6r7r8r9r!r#r$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5vty6vuyvywy(yxyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w=r@A6y7y:q?r@r[r]r^r_r`r[A8y9y;q{r|r}r~rasbscs]A!y#y=qdsesfsgshsis4w5w6w7w8w9wJy!wKyLyMy)yNyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xFr*AqyryoqGrHrIrJrKrLrttutvt~xwtaybycyZydyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

590 setattr(self, key, value) 2er!Akylylqfrgrhrirjrkrlr#Amynymqmrnrorprqrrrsr$Aoypynqtrurvrwrxryrpsqsrssstsus-xvs.x/x:xsy;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstYr:A0y1y-qZr0r1r2r3r4r5r;A2y3y.q6r7r8r9r!r#r$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5vty6vuyvywy(yxyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w=r@A6y7y:q?r@r[r]r^r_r`r[A8y9y;q{r|r}r~rasbscs]A!y#y=qdsesfsgshsis4w5w6w7w8w9wJy!wKyLyMy)yNyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xFr*AqyryoqGrHrIrJrKrLrttutvt~xwtaybycyZydyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

591 object.__setattr__(self, "__fields_set__", fields_set) 2_Aer!Akylylqfrgrhrirjrkr`Alr#Amynymqmrnrorprqrrr{Asr$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr:A0y1y-qZr0r1r2r3r4ryB5r;A2y3y.q6r7r8r9r!r#rzB$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?AlzWAty6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r@A6y7y:q?r@r[r]r^r_rBB`r[A8y9y;q{r|r}r~rasbsCBcs]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^AmzZAJy!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

592 non_pydantic_keys = data.keys() - values.keys() 2_Aer!Akylylqfrgrhrirjrkr`Alr#Amynymqmrnrorprqrrr{Asr$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr:A0y1y-qZr0r1r2r3r4ryB5r;A2y3y.q6r7r8r9r!r#rzB$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?AlzWAty6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r@A6y7y:q?r@r[r]r^r_rBB`r[A8y9y;q{r|r}r~rasbsCBcs]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^AmzZAJy!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

593 

594 if is_table_model_class(self.__class__): 2_Aer!Akylylqfrgrhrirjrkr`Alr#Amynymqmrnrorprqrrr{Asr$Aoypynqtrurvrwrxryrpsqsrssstsus%A:yBA-xvs.x/x:xsyEAFAUA;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstVAxBYr:A0y1y-qZr0r1r2r3r4ryB5r;A2y3y.q6r7r8r9r!r#rzB$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5v?AlzWAty6vuyvywy(yXAYA6Axyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w7AAB=r@A6y7y:q?r@r[r]r^r_rBB`r[A8y9y;q{r|r}r~rasbsCBcs]A!y#y=qdsesfsgshsis4w5w6w7w8w9w^AmzZAJy!wKyLyMy)y0A1A8ANyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7x9A|AFr*AqyryoqGrHrIrJrKrLrttutvt+A;yKA~xwtaybycyZyNAOA2AdyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t3A

595 for key in non_pydantic_keys: 2er!Akylylqfrgrhrirjrkrlr#Amynymqmrnrorprqrrrsr$Aoypynqtrurvrwrxryrpsqsrssstsus-xvs.x/x:xsy;x=xPA{znooopowsxsyszsAsBsCsDsEsFsGsHsIsJsKsLsMsNsOsPszrArBrCrDrErGmHmIm@m[m]m^m_m`m{m|m}m~manbn~lambmHnInJnJmKmLmQsRscmdmemMmNmOmCmDmEmSsTsUsVs?x@x[x]x^x_xWsXsYsZs0s1s2s3sqorosotouovowoxoyo4s5s`x{x6s7s8s9s!s#s$s%s's(s)s*s|x}xzoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o+s,s-s.s/s:s;s=s?s@s[s]s^s_s`s{s|s}s~satbtctdtetftgthtitjtktltmtntotptqtrtstYr:A0y1y-qZr0r1r2r3r4r5r;A2y3y.q6r7r8r9r!r#r$r=A4y5y/q%r'r(r)r*r+r0v1v2v3v4v5vty6vuyvywy(yxyyy4AnAkplpmp7v8v9v!v#v$v%v'v(v)v*v+v,v-v.v/v:v;v=v?v,r-r.r/r:r;r1m2m3mjnknlnmnnnonpnqnrnsntnunhmimjmOnPnQn4m5m6m@v[vkmlmmm7m8m9mPmQmRm]v^v_v`vzyAyByCyDyEy{v|v}v~vawbwcwdwnpopppqprpsptpupvpewfwFyGygwhwiwjwkwlwmwnwowpwqwrwHyIywpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2pswtwuwvwwwxwywzwAwBwCwDwEwFwGwHwIwJwKwLwMwNwOwPwQwRwSwTwUwVwWwXwYwZw0w1w2w3w=r@A6y7y:q?r@r[r]r^r_r`r[A8y9y;q{r|r}r~rasbscs]A!y#y=qdsesfsgshsis4w5w6w7w8w9wJy!wKyLyMy)yNyOy5AoA3p4p5p#w$w%w'w(w)w*w+w,w-w.w/w:w;w=w?w@w[w]w^wjskslsmsnsos!m#m$mvnwnxnynznAnBnCnDnEnFnGnnmompmRnSnTn%m'm(m_w`wqmrmsm)m*m+mSmTmUm{w|w}w~wPyQyRySyTyUyaxbxcxdxexfxgxhx6p7p8p9p!p#p$p%p'pixjxVyWykxlxmxnxoxpxqxrxsxtxuxvxXyYy(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwxxxyxzxAxBxCxDxExFxGxHxIxJxKxLxMxNxOxPxQxRxSxTxUxVxWxXxYxZx0x1x2x3x4x5x6x7xFr*AqyryoqGrHrIrJrKrLrttutvt~xwtaybycyZydyeyQA|z6oxtytztAtBtCtDtEtFtGtMrNrOrPrQrRrVmcndnenfnfmKnWmHtgmXmFmItJtfygyhyKtLtMtNt7o8o9oOtiyPtQtRtStTtUtjy!o#o$o%o'o(o)o*o+o,o-oVtWtXtYtZt0t1t2t3t4t5t6t7t8t9t!t#t$t%t

596 if key in self.__sqlmodel_relationships__: 2vs{znooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6vnAkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p!woA3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwt|z6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o

597 setattr(self, key, data[key]) 2vs{znooopoqorosotouovowoxoyozoAoBoCoDoEoFoGoHoIoJoKoLoMoNoOoPoQoRoSoToUoVoWoXoYoZo0o1o2o3o4o5o6vnAkplpmpnpopppqprpsptpupvpwpxpypzpApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUpVpWpXpYpZp0p1p2p!woA3p4p5p6p7p8p9p!p#p$p%p'p(p)p*p+p,p-p.p/p:p;p=p?p@p[p]p^p_p`p{p|p}p~paqbqcqdqeqfqgqhqiqjqkqwt|z6o7o8o9o!o#o$o%o'o(o)o*o+o,o-o