From 1eb40b1f33aaebd02f03fd1986e242b65c79d573 Mon Sep 17 00:00:00 2001 From: Esteban Maya Date: Mon, 8 Apr 2024 18:07:48 -0500 Subject: [PATCH] =?utf8?q?=F0=9F=93=9D=20Update=20ModelRead=20to=20ModelPu?= =?utf8?q?blic=20documentation=20and=20examples=20(#885)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- .../fastapi/multiple-models/image03.png | Bin 84929 -> 88924 bytes docs/tutorial/fastapi/multiple-models.md | 14 +++---- docs/tutorial/fastapi/read-one.md | 2 +- docs/tutorial/fastapi/relationships.md | 20 ++++----- docs/tutorial/fastapi/teams.md | 2 +- .../fastapi/app_testing/tutorial001/main.py | 10 ++--- .../app_testing/tutorial001_py310/main.py | 10 ++--- .../app_testing/tutorial001_py39/main.py | 10 ++--- .../tutorial/fastapi/delete/tutorial001.py | 10 ++--- .../fastapi/delete/tutorial001_py310.py | 10 ++--- .../fastapi/delete/tutorial001_py39.py | 10 ++--- .../fastapi/limit_and_offset/tutorial001.py | 8 ++-- .../limit_and_offset/tutorial001_py310.py | 8 ++-- .../limit_and_offset/tutorial001_py39.py | 8 ++-- .../fastapi/multiple_models/tutorial001.py | 6 +-- .../multiple_models/tutorial001_py310.py | 6 +-- .../multiple_models/tutorial001_py39.py | 6 +-- .../fastapi/multiple_models/tutorial002.py | 6 +-- .../multiple_models/tutorial002_py310.py | 6 +-- .../multiple_models/tutorial002_py39.py | 6 +-- .../tutorial/fastapi/read_one/tutorial001.py | 8 ++-- .../fastapi/read_one/tutorial001_py310.py | 8 ++-- .../fastapi/read_one/tutorial001_py39.py | 8 ++-- .../fastapi/relationships/tutorial001.py | 28 ++++++------- .../relationships/tutorial001_py310.py | 28 ++++++------- .../fastapi/relationships/tutorial001_py39.py | 28 ++++++------- .../session_with_dependency/tutorial001.py | 10 ++--- .../tutorial001_py310.py | 10 ++--- .../tutorial001_py39.py | 10 ++--- .../tutorial/fastapi/teams/tutorial001.py | 20 ++++----- .../fastapi/teams/tutorial001_py310.py | 20 ++++----- .../fastapi/teams/tutorial001_py39.py | 20 ++++----- .../tutorial/fastapi/update/tutorial001.py | 10 ++--- .../fastapi/update/tutorial001_py310.py | 10 ++--- .../fastapi/update/tutorial001_py39.py | 10 ++--- .../tutorial/fastapi/update/tutorial002.py | 10 ++--- .../fastapi/update/tutorial002_py310.py | 10 ++--- .../fastapi/update/tutorial002_py39.py | 10 ++--- .../test_delete/test_tutorial001.py | 12 +++--- .../test_delete/test_tutorial001_py310.py | 12 +++--- .../test_delete/test_tutorial001_py39.py | 12 +++--- .../test_limit_and_offset/test_tutorial001.py | 10 ++--- .../test_tutorial001_py310.py | 10 ++--- .../test_tutorial001_py39.py | 10 ++--- .../test_multiple_models/test_tutorial001.py | 8 ++-- .../test_tutorial001_py310.py | 8 ++-- .../test_tutorial001_py39.py | 8 ++-- .../test_multiple_models/test_tutorial002.py | 8 ++-- .../test_tutorial002_py310.py | 8 ++-- .../test_tutorial002_py39.py | 8 ++-- .../test_read_one/test_tutorial001.py | 10 ++--- .../test_read_one/test_tutorial001_py310.py | 10 ++--- .../test_read_one/test_tutorial001_py39.py | 10 ++--- .../test_relationships/test_tutorial001.py | 38 +++++++++--------- .../test_tutorial001_py310.py | 38 +++++++++--------- .../test_tutorial001_py39.py | 38 +++++++++--------- .../test_tutorial001.py | 12 +++--- .../test_tutorial001_py310.py | 12 +++--- .../test_tutorial001_py39.py | 12 +++--- .../test_teams/test_tutorial001.py | 24 +++++------ .../test_teams/test_tutorial001_py310.py | 24 +++++------ .../test_teams/test_tutorial001_py39.py | 24 +++++------ .../test_update/test_tutorial001.py | 12 +++--- .../test_update/test_tutorial001_py310.py | 12 +++--- .../test_update/test_tutorial001_py39.py | 12 +++--- .../test_update/test_tutorial002.py | 12 +++--- .../test_update/test_tutorial002_py310.py | 12 +++--- .../test_update/test_tutorial002_py39.py | 12 +++--- 68 files changed, 427 insertions(+), 427 deletions(-) diff --git a/docs/img/tutorial/fastapi/multiple-models/image03.png b/docs/img/tutorial/fastapi/multiple-models/image03.png index f3830b804543327756110bfa8bcfc3d021920442..796ca5a3703c23e6b6f9721219bf5e434bf6b916 100644 GIT binary patch literal 88924 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 MmwyKp)BpOv0OX4n8~^|S literal 84929 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‹$#h0SZ4+6GjUcpx-qIs3v?pJ1 zif*8fbV7IwNpK_Oj}>_e&8G7c2$R)>#5YE5(#Nr=MrB)Oto&9qFCF|L5AWzStqE+V zigY3X_pOZu%fCI}QaM;QMz(reHl52EdAL89x&>K?sS9WE%-tw^7v$Nn@YrQBfnNQ#&ZL?2zwjI?|{`#YBTh&^Tz@^;KQrxEU zXsORNWy)MfvlR4)T%UN>qI*5e+CM`S0@LcMquDbBO ztxg|ZW$*7uJEUmr7z?Q+!wVv{sud;ePk7Z4k_Q@NW`IA4A zMCAA`uFLxD4(vD53Zk72HB@`CSfa=S(YS}cSdC|Fm)Q+cTE+8|x{Wgio zdS8#V{CsArd1}dz5ZPz$?HsbA8v-`X!tXn{Hf1|YNIL2}V->g<6DvcWV~QmFh5$BO zixKkr!IXqtF!624X8W}3mZ5Ozm}_*m*4E}7JstH3yHH#}O04m5(^hr0?`;ZUNL;!u zV8|_=!M}IO#8q{dUJ#AOyr+}KzcH^7e3%3biw(M22Ek2jCK#2uXF!grf7>m-5$9-B z#9iYyxpE7*OtE_sGC8%-M5ZV=F$4W1q>L^Q^v;NEjAP-!bYbyr$8TM5ja71?HgUuo zfI~PJPD8ygBZ*zuOF0&7JM7VJOgoBLM7a62;ACeu%%A9sJ^Fit{ZELAR;(L8V(0XN zoMRw^=9L5?`+ZBh#~}F-O+|6}A6D6SIAgh@C0IUA5Z3*5&Z@_V?QwPCVYeX5=C0Pc zV^8NnfPz~RO3g+U5NT?2d|JX;Z@MS3RHQgG$mrN<1P_X9^JbQ7bSkF!$4E8t{ifhF zY~s-GhINI7uwenq))G|}r2`^=<5^L8QWgJeVtRAkJg9Viz+myk^k2})3(G>&nLIgH z{9n{5NIfS5u1PhhC!WQ<;>ow@A^x%2;urdT*tYg$Q!{i_qHSRZ`aewwl%EMUKhfJV ze9V`?ho)$p-nW<7#@}WCe=10>D$-E3?=@a`t}w6{*}Q0G!>0;KH=&!CI;=y`Qyb)iVg9fG5!|six|t$dLAnfm(-fwPfR2bf)0)EXDiiDlu#9v-2 zx4&UCmCG_2++rjQ4>R?5pdZwKy2y`s7&uGXD3=GQd8};?|yJ-LmoUAnyC``=6>?$DAROiFN=rZL>oRk2b zfpkIU%F5mxk=~@Q&F^ z#Ts+%5v5o^Q1dzG|A|IPvg*C7@$pWDgXWeB`}S@b74m)$YYj#Z9bfMOGJL}Yu7uoT z?XYql4R@@b_Y!OOl+hSufXlzD03e2CS*aH(+~GhaKEp>?5BbP3UuB#CRjjy{7&oQ}rS0a|J zeNQ!^Pb2_uyo4}%paW`@ojQlAbEQcBqUPs^0ujB5)^H*%f9tq{Di$ha@(S8cYSbL{ zBRG>V_5S!2%WrZ69s2RqC1Seb*C3KC>o_w$8(dVsZgNE3m0aRF%yhKaMyNRX^(UxZpb-4xW%r;WPc2=B{-P90dH|O#nt! zHg3LDM~t7;junzLWa~fuwBD!jnn&BJ9Qr96RVH~~0aG$-oIjQ3h_}#26g`m$l8j1` zIPtxCje}O^acgqs>Q9{7Jq8-Jzb5{a)!SLh#R87Ic4Ii1xlfcD%5@)7e}p;Rl|!-B z71g{la(jZmA<)wl^1q5RWLnS}%JV^4(kqy|`RKGT6_sOI1yH*-;Ntvse`&2yLe+kT zR0u}(tYffxR`QHu>q7=vMW|yh zv>oRR@rOhm`Q$12Ak~nbGQJ;PCxCmPqmdO>oP%vJD?&de=42}4}DGN zlZLovaFmsV-lIw2ouB*=d@dIu71gqcgzt4XqMT?Gs-dt9@+ltcg{FNfN0!Ub!3v6{ z7tU{(nb>%{WE2YnO_0ADb)W#RpUo%6vB|XALi-X8kpGRu{rE3`E+x*aHvGl-K9hv@ zx(MYoxd2xJcobCXH;C2U71kOY#V&K^V>Q{2E)}di$R}iZ=1LmxPkPMo#fv$pReZzB zp#O${HSpe6D8#K!gp9QT2wOR-4-A%`{kAcSWg*Hc+*wo@hD@xiw(1p!nFjX$qBhu( zxs(k5!3Cv)JUFOW9?UXhbkp_j!ySN#PH&$xB_gd=ZvlMos99P*L|udT8rr0Su07oM zF|p>Ak^miG#o~%aye_iIE9EB@Os1KiKMZ}yT*HoIzI^Sv9j_yZ(P0CUcKz@xaI@LW zt3=LVi^+Io5^vUS%?>)*@o9KnM$eB=?e4}Cs^AoD#M=9+$PX=gqhh^HMDffVV32=V za9HD2T=6q@gGSFwc%C&jU3g0s#e1iCkXZV=5Zou^dE0=BP!=zjLxZWXM|IOvN(zQ> zmBZ#S)(^P;f48%CbV5vVwPicKA5<}nEo${t!4Z|{sjI}61em{L+cYaH^E$g0{QW!~ zd&ywL(R2JOSdZSEN@=kJ!k|yG+L9{rl}}ll#eT_4zAYtNWUQwsHD1dr53LPmHCkKe zIN=$t`W>g90NJOfFIUC|vpDvQ=xaAImx@Og$iGIebksF6n6#xXs?q_zb$qJC;a6K} znUqxnv7!_jj${FmfWGG^@c+pLn7{D>+4V%4d#Vd_deH%j;10NMY6!a*{j9CDTEeXD zg)j*&u`3l6KA?H0^?x)LW%;{(hLQM0cxAc1?jTED1DP=XPV=GYae*Ze`A}DKvVELH z{#1@S75ChgKE;Gyon{WCY2$6rP#pnSpu?CU))rmcQzK=W4^aM|#ZEmXV#*CnOrs-_iJki(+yaIMP+1EY%w`y7EP{5`y>Y`5X6cCA` z0j!t=%ky~o)y$SB*DoWbsl;w5;g8E#TR%o|?0jwuD`~ya1l&h4XtqY=<<*u9oOFOW zP8T?_Gz%cFk0m5OXo@C{lDk}fp}MP~a5sE=M4JAlHa-YqZ9aAB z!&`S@un?>*n{|SR_lfZXv&KMOIBD>Zdz=lN&W3tP+5_gqy0`h|2i(+KG4Tt1Hoz13 z)vG^jip&9_P_{Re6lWyj9X`8$6lV)$;k7#B(dzfpw3PZjQKJts9cO5;oEXiAb3=VsmH&B>fwS2}UYTcT@PdA67bQTbqTNA44v# zZwH$MH&L4MwCSl(ibSQr+1Ln*Zvz!1l0==;kW$Jyn8jLFQj_ge z?wnpMnH0cc<(4Rkm3p>kMzQ?_lxOKa}gp)X3uoe`pB7->Rhx zaXFMtu1^V{ea*1oq(PKt3o{{xCa}>IeYn;a;|7SNBEIe9+H+{MoJ%zqoM& zHRjE5$JFl+w)3+1txo$(*=ixWjcoruh0@Nm`RL7kA2w1On6TPmfe*AWDy8`cb~9+K zNa|zz#sw6}XQ}AFF>t?(Q`P+sMCa<;euAL+*>c&gf=ovW zg#M6d=;=`!FNk>~ zm7kxV1tkC+jSfw({0zVmk_LkYHx*akU{b~Ht|eicRO5BBoSb}4EBM!$MZ1Qxi;Fy? z{@CPU6Sx&o9aUmtVv9%R|F8;zuT#I&IQFF9{Db7H&r(>VLP#QpsZi1UeVlB`e8Oi- zckGwX^>57gnn}t2WeSk}KZK8xF@!MuMH*aF=`Z$Nj9yrVF2URQM~H%-36YI2az)6u z$&v{p-G-CmG;{j5VJ}5}n63q~W#R#7aNsl(wiFikWSVDg!((!845fCe`a%R)x^!J# z&QDI-HuUMnOWW#O;AS^gMZRHDI;p%6z&8$5QMm$94mpyU_z3?p(am%l3^3+gL0Bk^Ncy}4nKI78iPt&g|1 zH?{wq`u&p3Z7&FQvI^&9@leU#Dly1MJH12`Pa^*{L+!%(gG|g9c7R;yhy{UgH`zP6jbR^I*X?8|qiqjj@j ztWM@+m6p44J|I6WNrchHcpSHTfDKo1&>^X^ECAzmGV2oUG20z_-8_<+u>(h zH>ZdRiXOBO5lpNDb>iHL?fKbP)CcMs*k@@!1>r~RJVv#0oXrHi@baLQ3;}rVY=Ou5 z_PgupI7Pj?2vf))i34diwUVmWP*pd%nXztXnyrtF36wk+VBEEesT3P)OMZLeR?MB$ zo%Y!04Vv&)Di5%wg+qJAJBxV+G#YqS0U4HeXx2|-g^}Po$XP?iO1?JGMp;W1@}VuN zMPN6)goeEL1teezZnq>*Gg)&OqG=u;x zE-m$BG`gd%3pt|m*t{B?9x~{e*yK66;=rL4PAH%{@e*L)m=W^4o=Ii1yNDom_6`c=~}S~_17_;>^ z(am*NZeI^s53K!!!8^&*=}HiZiw?Q2wyBN_7U26ljL;Tlp-r5hV~s{|-2}tOU9^~w zjCP}0fiHK!$wKgxmB4RR<_9iS^~q(AnlsT~|Chx0ycQ`WYH6M6QNfJL<)oGS_ z{7&=E{9yX*%TN~h0h(5VpLX}NURCvt;>h-R*0PT=={ZA+@W)=My4LzYX9RfzR{(b< z-{9xVwd!Fvg!oNGQ!9i5mvSRWtN`JF)7H_XdSRTcXE1Ie@Ua5_ZG6wd{W$&*uCGAn zZzpOAA>xk(QOqmG)wd{iqnpU=a&`kgiJj!0l@QesH(d{$NdS!)kC4ofB6F$$UOU(N zO7`fH9&w>|K(MvOZ(t;Ia2YwqOHu?A1s*q$x@9I(AJTi@0Lo~#KHt)YScC*Dw*Gdh zYkkBCW7lN0nIAk-QC_GA&KnMImUEu92+qY(RHkZcVQ}yL4AU=SaIjpHJ zyyUBC`_<{sbo<~*BTq;GIeVv1HzT)|3t=#>a%#=iH(VW)9vSEUd0anj@df zbgbzVgB_OboUTRKpfsOX(X#Mf13?KD@pdi)HlTN<5#hFQ6-=MOQ>^@~1^sJ0Q{?o( z{XL*twl-sWT2h6XEe@E}@z`SdfGe}nb7_Gqtv%D{t85xfh(cH&mGO;FyP``zkKHJ# zKtRspRz+?0>1d?4*O)E$dQw;O;CF_|o{XMVZ5(E8iGM-GcpAYFi_bq*bv3Nr11@nj z?dVT;iXSUM*GK^*f?=IBVw)aOC*zLJ<%>UOG}8L$Jl(3VQ53CA2BtjIaXplwv!^Ds zZy>{X7q+%Nd<_^ax^D+ydI*35J}5f25pDM~o?k%7j~xZ9*C_?+MvQ|n+VCeG$o4>1 z16p!j#^D+lE|qNkOm(*gu%Y z{>4;FXkV~jsAT15(T{d8sVIi(Sl9tCw-oYl{^idpya1yAw(#G};`<*3+7anD!5Maq zTECF~r65+rRM1l+Fgu$6R|@6!KtJvHy{~4oaI+SZ7LUav_DfZKs9EJa&y(farIT92{QSOO?3}Vh;7|2VOeh7#Ml}il8Js>wB#>tPkzPk& zJ&)5)Xh(UUwZqZkC?T&?;ORPbrGN$X+}s>pyw@c3Ur+}M8{Ay$2tsDiZo>4-|Aaq& zekxJ;Mol4z{EV6}Grq$#i<#2m-jzWE_!a*3{^~P=J{oKMPhCC$Uxr+4tRmoz&qtdd z(*D@Hw>RW~bncYkiQUO$uNS*FCO~oX@ezb{+MmKSgf1?lqu7o3L>?Si!Rh@gF!fID zgOfEKAZ$^3+mPioK``wWl`hB~lXxBUndf_G=#E%jXxXrVWSpMVZ$&zknFi7mMTP&+ zj5n{$ld0r7Hddf#PFqg8xV5Z$YTN|!ow7AxdAvJvzToGpSF;lFqB(ci5zQlIEO#k; zQ|F&*f^Y2`zK$5CUXtZ2%12MY$gT?oQRlC%De(&mL=}I;$*;lL;MXR?@%`TG+S@ir zqFUhJ&;bO4aoxO{;G~s%m8IVQbtOfuB4j6p?b)8>KAS+-v`<5&TDCp#!F5OCZds#} zO-0!84o{8`4E(IuK zgkX3=xs0wI`+A0l=qx;LTOB8sx-w%yj+SkENxV_WTr2ph;b!Z;`Z$YYCY*oa1u)nJu5ujVdPMZ_%GknsG_+V9-qwI^LM4oY$-0DZON6%AM zKnRxRyuQJePj}atFdj-tZNDv;0tw*Wj;tOFkX=`cMo%2h;ay{ zke=YkX1GZJ{p=;p1$Y%yOy-St>2owRkR}AdWSYu}q7WEntFx0HB5cXt2RgG-_qByZ z!ympCtU}IdT%E-L1~hPihZEo$ zc8G{WHDh!G>Y4bxt+7yn)$D~jk@O_&b;nb2gE@bJ5sYFfC3!(HAGr_&qj!qfF;lNU zU*#W&?N%W-&N*x{7LxXDlm%lQ3te2>tEPt$9B;rh=q zN6pt!Ln-_j%B<>OrMO6W*v5Kf@QwesB^}cY^6=k-J?JUTD+ChP>$Tb@WGm@|JMc4R z3e4EBK6>+b0mUBZ`Q0+4R-{b6zOxR96O{~F=ANt>2)M$u%wYcfWWxq&qJZ`7a)DFj z&&y3C>jN4g<^{NA1p#fyvaGBPzwQmcOTqlw9l(8FI4P`U&R*=Hh}5%qnsfUVX@3(QiAHe(Ygf-_p7K z*{VDcm_ka-qFEg=e7!4fO{@PDJx_`#7-pfP!zS zj~I@i2yz}QhE37Xw>KOC`1e)UkES=hz9Y~T`Ui$q7Juryuv{Ha%-L8E^JNKrBx;KR zW;8k`R-3O#vC&58Ch+p}pGY;S)B~v1I5yw}rAvm-mGH5+yjjy?NA*j`lb*(lw`IU!cWm9Xw3qSi+fB1Fr4_#Az6pkIC_{vAiwNOZU3>Ie$6!<1)*KoU%5f55Z zP_&*`o#BB4pPo`Ux=)mJ7soNy>QQK!o`xjh+AXbsVPG}_K}1}Ez- z15coa(qHvqg*?@LFoR=%J`x@xx5hQPS}Py56}(^#0QP<7e-V9aRQC7h6 zV1Kz2NbikA%-kBb>qVqBB_r}fuHjck@5K=Xe`G>O0|JNgXh(7k4{Hqi7I6 z5c$n?MtZQG$Mr}4R({xs4nI<@4E**SN;hEhGEwa4Q!c&kp9qKDf$`RC)LgV#&TiW~ z{*_z~sTC%@#dNi6+*1>FK#FE!b$h7M&PmxMt6Y`$@|&$AM}P?n458`ic5l(jwRvzI zP1NBSmu%+Q`sj8mi#i_un@A z0Vd%k2P{q9jnR?{QWBZIu? z*gG=N7Wd=`B)`x92*aRO;n&wEiNm1w8EhDV|K4Egmoi?JhaW?ie88Uf-6Z{G+v=p@vM;Piq5BUi8Hvq#sRSv_RfW z{ju)^ZsZL;oT-#qWH5+DzvERflq%F#-HmWWThjLNL zUPylDbdF##yL)<|O7Zby%p{1dcr$vLVA{SDCAVBZ~1O&tfbm+XOL%hinLs2 zDzojh);pMWgN4cpdN-N)Ld}myfUqbT5;2aIT#g&vGmZIMwf;gPBa?&mQc(&U7c``A zL!3c31;rtMce4%*zrnGZQQP*h|kdW^*pnW#2dH%pAcc8 z$6Y5J<@gme*YGr&y=>9~Q+U0z^27|0C*N1Q_EK;jthASfgT`0!#g=0sE#H@15O3~< zdoEr>TcEQTzi;j%dtISoK0Kx$13PIgT8MUY@D#kH+gr``TO_3CQ=zUsrzPg_&6Kss z;JjTCvi8v(NN3oE??&K)0SjRnS=f6JDKi~+^t&%f&c5)cc9DbpMhwiqG}_$`~FTpSXts;%rG=e2>gQWUSXoLJ-8TcgTdT|UVIj#V*n z)|yHvjvneq_vQH~M*6D@(i)p(Q&Z;oD4)bKAH8bA?PH~DjOJtR$dT4UjGJkEb`zA| zC=$~)KPbS(-qgOq4H1hTK)~~AW6m^7S%em_QaI5iu1%~0(}}?Dq9!AX(kChJi~uY& zukodMs#g3a53RXn&IYiwLx(g*1qQ6Xw6BZ3muDTacxYK8$tf(aiV2|e$m=eW&AkHLtk(8M&Pxuns%me731>)}* zH70&EL3Lpzt-;bM6lg3La58@_j`x2wUF^-m^=qNWh+XKgx;*cGHJgr_QQ#YmCiH*~ zHb5M?Z!sOs#3jLk0}~jU4{RtOv9_5P_x|>rkIFOVt%U4FjLka%;yhtDebc(B(Py1n z2pn`E*1Ax~SgMP`wTu&6aFsTXRCR}UF|)HYiH8vehC`BDpmA_8>UGc8!fHR<6lT8A zL9`!iMC4!9xUVHR#YuX6ZELekiOVI$pfg0rr(0G6xdckD*|#35_2}3AYRmJtp42qXI5(@q z23mKYUFXDTPbv78*oARvz~w;pX3TvMB(YGSvWsZ3{re-|Y>h2i96Of+w({!sfj^rKZ`uO_Hd@wnA!Yl>*Yht3lK-%Lvh3d|hI2lm6z6`N4ym!u5J~D$m%ZJ2Pwe)p ziDPK}5@cFgw)&G_00O^Pchq+4T$S8>_xvy~oXPn-xwc`W(A9dJ_nYw6E0s^);r2CD z4SG-u18EJ5^b$dk9cTquzfWPhhSHrVyqEm@ z^zz>C4Cs}J2_<%N=SxyEx;e?rToe}0(oCFN)6WY8d-$rKda_`W#uKC5y*;2lWQiPS z7KqAP^VUYLWn8PWKp;tonOJKX?j(?H(@B94rc&Lt)oay?Fjx;)!KoEeso0B__hwoo zH|fsErmW0OoMBIpv23A|))FC2Ui%_}CZOGc6kA}Qgf0Iz)vu8M>!&1SD%t=N}`j` zo1(oOI9})a$12PE8X~1}jv9{~#f9oo?v2@==%H6G*4O*B zYF-BHLbW z`Nb8+pt1Wn_nY=!Hzx~X|GK1eFwBw}BJ9X+PeOqN#%$|X+G^E@?Ijd3KbKug8u9ha|`m#<%&Um}*=;>ycI zLaDrujVFCGkDJWfM+c6P% z!R9Ed}zVzvhVl zB&m!8)?j|IXBOm?QwVkv@&^?B0;WfX#_(8^*>3NS6L3_ARy27DLva>HJE=_kyBy53X zdpDE%o`6CsmfH>t@Vq|S+$*+)1!q+k5T$WJzMEbVTccG!+3`h{f7{OA?inw(e~)*v zDSx(bpM-fgZyy8ZS{lsy%4R(uHu+0AEcLx5aolx_)9w#hfkSZv1A}LTLCU~zAfcPo z;&}~SVbJ|udUT@6`8LjQ#LD}oCfuZ7YHIh5*&}-Ma$4tp*or9x2wgbg-$kooxv+&w)B{j4t>iFj3CQ3mHg|71D1Ug-A-x1P_48hXKgx8}-1x0fW;ubuk( zPXXm-fZ*+h2LQ-+`<~Nwc`sX1Na>;V`2rv(*q90RK)DPn^G8Q+AIs?ysU#-c^Mh(E zHQ?JByTyad35J{i{bTKGM8dYx9R8 z3$v_OhnkwhzLqf&cu@wJD6EOB8Aj=<(F!cPd=w%y6D8ja~6b8S5&ZA z1c!*dhPm-XMn)zt5q}#K6Z3E{gC@)6`?ri+-^!UwvBD2{{r7SQrru8n5`LW)lcfCo zi!IWB-Wcil=fQ#`5$@)$bK9Rgc_eAB{)vB-#QS^w|NZpW)c?OvMt_X>zdP-_)vpDh z5yAek5q!m8i}t3S&^4+Q>#im?Z=cTjdXaxWC-I6D$~>=TB9zx$nU-Ha!nnVA%p)*6I?n&wkA|~c`TefzaR7dX_kG1{=7Gek39)4{|%{Y1`J8~Ef#szp8W)S zXJd&7)RTt+f4NENHhV62?I*M&!ugj0GoK|AJQrs&|I3Mn$19!>x*pgODx-$Kx4b8LS`e;L_T|o#nVE-)9r7c#Q_Qm} z-oNQCI`p*L7Qmh0u$xRBV_WCQP1>rka!1l;%k__7&}_xRcV1uHz~mfCZ^N3Xx^?23 zwDBPJ4!&AnWA63o##mQE5EwiOH=E^8Yqs@?_}q=LF}79jZZaghto_6@`6++GkFVi2 zEppZ;Lk~*RrQ1;_4R%14TsYv$+kI!(`@;+zVkM;|bQGu|c2pE&(tN7aD+7wga2WZA zyU8k*AaX|6tt%vEVPOXT>ZBcc-5pZ;DISij&|3rTsA*diA5N5^$rkWrF(1H7@T}aq zTrS_T@Mu$5a&4Yp>B5g4wu7h(S=6?&1X;q%SI1UN){mbvec#VW$6X$c<{TPsJH#eE@bw)s` z?6BWBT>mk36R=Y%EZ=BOm1`|yayvQ5ce#T^kzZD9n_;=d@j^K zz93rR$n4Kt7D=4gOu9Q@YDyg03QmRu@pCLSk-I?T<1oilSawD|ZD|QQ7GgRiC(w=Q z&>oB2JdF*oRX3wBq}d_P32Q-AyaMbA5V#hhk+WtRSY6d3ydH`mG&>Mhn|Oc;0cjb} z<$YJr>s4R-dir^kIgT-QtS=cs|0tNIqDcuaLDxg(ht?lG@Do@}mg0gyB(llF44|9y zET8z2DwJHg!PReA5VnS^NZAGmFy;veA6~BOLA;9@EHISq(+Q&RjAe}psz!`*hBV~w zJX87ZtQ;j7gDta;7xPwLR3P$Jo{-w|3SL_bY1bE&E!B4Hi`*AM4zP{Z?!r<%=30(F zXjA&q#BWttacbRga3xE)NHmC}h9JM^IGf%>Z}~6S4qaFZkY@YUS=N3BA>YBiD z)t_5zS7A>*&fgDx?oZ!>!0Gtd0{3r%M!w1bvwVEnF_{rS%&4Jn74Si(0i&Xn0 zetW+1h1uyJ%_CKh&-3}!H&Q$qv!hakN{N*E(|8TPM1i(=Cxk7Lr0 zh0AoxiQ@>D$|DUe>Wl4x%r_6eyf>WG?tJ z?#X--5_N2-ID8LxFME;zZWYh=Lqjx8_XC`zn&nT2Lg*+$4&AXso&{DApT#Sl^i1z9 z5OZh*j>vMrh0g4UA~d>Kq@c-)06|+jx>6Bk)EcddbR2gZ zq%d3XwZ{c-7SMkvQcbFNp(NL(bMUQ_4jXUlj%^kwgqXYRgDG>XcAFmpsq=i8*SAvIzT&(v1zm#9 z>nWs2ZS{1QIJZi3aFoE6Ur&c3xcD^U{0%Mwj4cg83clNyrz<*rjl{30QGejh8V%9- zo&(V0^*3h_90MS{I8)R{8hpUrm}PkKbgd-`Y={5+<7q-#f0UGy4Z-V1n-1FDm8-|g z$!I1x?1zQU45IO@l|&^LpS>iQAg=J#%tr5O5~TK*uM$?^-x=0Q_Kdd}()%-h8>hKw ze+>6xpVBetlim|}kg^iEv@dvlQIMs%|4B~s>J<~?zOC47LD<|ru-HV2g7_x6IYr7t zUN@XMy^|hR-Fux%4d)-IfV`C18*<;K*q${QTrE(lIgUtqctT=g_#v{N9v0V->ipz$ zCT838Atrv1n0aja@=YHP&yoesX%zcw^#97;`E2)Am!N|?H_($xklWJ^{w@M@rQby0 z#h{zXXqxMErf2C2cxQaeSr5z5g4S@wgz5xKLzrpC0L5J|%F^c`{>9nKy?8OpV6X9; za7!4E+p*PZBPg_Lm8!jYZnw`+g>{0@GWxi3!x4oj+I1OX$*FVI?)cUHFY(OfrMtAq zvQYAy8yt$3qiJK%#&Qi=?f|_2>7huQgd+wrQ=ly7_eifbB!T6p{1yv5gx3QkfaYcF!vz9okD- zM^)SUOo_cru5e}&W0+Y1CTA=`5xYl+4-?e)t_W@yzY!Xtb)0R<+$G$QL_bUrCBs`i zlDf-7@AYVNT5X&QBIzkn`NV2ouK^EH^)IW+-G`H|a2qV1o%@#fBC9@#vI#^Ah@g56 zVIG+~v^NptieK&e@?3MVZ+?5wYKrL3e8PSG_zcZ(!}D%f48b2R)E;&|LnBo=9`k?* zELYq}ypH=qBP*$>h)YSq&RQk)43}D!Y2<30I}=;E`SsISm3{qPa$$Vi>N<>T^pC-10Rps4cigLev$wuJF~1u)WM7&7 z*cxO~zl9q_&PdIc())LQlu!QJ+aLS$wLBXE=>I*SoJT|4^0RENIW+O&AWwC!VO?3; zhuq5i&+uP$9Aw#oi>hyb|fOdY*5WhJVI4_LcwLlw@jMZ%<2} zW36=R4FjOXNT7Vj+k;l>?@XjM>*e6|08`350ZI{ zBIT@3=XMECXk_o2qs+%(GYA6C zu4(|dyr)C-K9*1|A0&?u8K{?m6Ud(m7O!6=*h-ViLAh}`IV895bw4S7&QgziBlOW> zOSzDt@5<^K6pZ!0&&@%O3qB|k{raFLG?SeUXk{_~emub@!F%6OHeb<=3{RAHM%1K1 zD|`C;8=>Fd9;nt2e`y(5(4Hpnf1dNtm1sMw(=**ewqck}#kiI6&v5ajdLbM;>#^@^qu8Zr{llKKVzm{z z;tzg&?e~65Xy_BB`>od#W_hB`z-8X~^%SRm2DsnbWi*onbf8Rq{SL?}I~mkIy(y5} zn3#%3mE4MXZ4PZNsLckBwYGv4+Dr(ZZq!W#ODO#L{m;5Cd@y{%5Ov$-%@P};e@udM zp=SLNmnz{?t*Olk;5yhukX&q0?R<4g{RNcl<@UQ)28#NNeI@?hr4=+$=1Ayk z;O|dG04Yu@SEl6UWWp-We8^xacJ2xXf!GrrxzR;e`_1cXS{`Ra>n9TiTw1FU?Oo*A ziQN>*I=ZD#)AQj)7z=&Po*us2gm_*_0W~$ zGqI}t33Ia_Q!xdX#G&UZ8db?)FpUfU;kw}Yx>Yh&z$ZVOOG$ZyN`ohT9w0_$bd_s5 zMtr3i(+lG@;5;x!CYaB=oH}OcV#UYLYZAr5k?FTix}T~ddvgW51+g$u{rFiNiqmep z=qNW~{Z}HTkVZQtb~2JofNoE^J+3`cIwn3p;)fsR5)4Obq4=yjmyQh6 zJiO6Dz3Q{PD`^TQC)9Z>6Crnc0-=;vS!^|l^tumo5BRav0DBzkb{w(R1|^UidM$Ai zMeUgKeIdIeRr;@N*P9n=eBi)VfnfVbvdeX7z;t^qE&k-UN={b{P00c=)X!SXGG?5= zGE>Ita_~QFoYnjlDXSz&GCR{tA&e1e0y)uG@<%)ga^Ez-&OwRd#{58AVWC9c zKynXeZJyyb)09GrPe?+<+*5@j-<&q=S(0NCg~nbgdpM*DH8sfc=Qpvr1!9S0g5}&J zGVq(Dc{oy!r0K?PZS{`D?PgTmY`55ijO4nCrHr)5&`V9XNxA)Kz?@dA_*6VUOXq58 zpy;;5Ur*W1J!72eUZ_ym6U+~Jlj=S>gZ~m-`D9dI4!@>!LCHX2s!l53ND{nbt0<}% zSztQrv%yY>_k@XSCOyj8H1#yj_c(WBg0x7}#$%`Pcc&3jebJH)`j9-Q;)#BIe)n+JQ@_j`{P-^=P@_cJHnXx` z34j~?Wn|r#pBIgal|^N}U)c!dJj;==`hq%aXkb29iJ1N}9a8;3_6BRe2@Bp2Bq(XX z_53E`fpQG^rZ{{T|Hkwcq8q|wNgOvT_?aP&b3ahnAnY&}p`oe4S^XU-SLJFb14ipIo87gY9 z4P~<_%J^x5;2w`d35kib$tkJUChl+pFCqGr8>-BDAm=FV!sr9?jj$z4IzdYmyoA$3 z%2Z*yzB@}_h2FiL38GZD1o9to^)*w%%hO0KS%F2soy(oIkA=V0>nM#Rq*yhWo0G+M z@3TQ5LY8KITb@{gl2()g@G4xedt$~8Iz$>q!MqcIpBo&uq#(8OapmRlp&Jx$K?<11 zPPQB^8_LTw;p4`#x-f8Ht+6JAuXH+))tjALe_rzu8yUUIX1>q5A@vfpP9T2p@f;`Z zH$!~f(zPXZk=UeD$eIw~E+L^QSNdHa{X56-Ea=&P@C!>zOE)-nlj&IfxMX&J1s?M> z8UIQZ5@ASjWG}soGFNRMt+RgC^#P%WZUg$Q^vdqJ({Enj3ID+h{Fey~dAN#*-s{YXem|r}Onn&Gw02l}PA|7T06wEec#y@*nlK>F?y75K(){GqD@4+3*yi)-U|7 zqZEYxgO2Ji6_Oy(s7Tu`zop#fB3x+DVXSn!H+rCiib#6NKJAoPN58-cvo^e?HNEs*@PaE&L;*-6=D`=x4L z;Xlv}klG*dhiRxm*tR-btq@JxnXvN5iHmE1d8c1u+s?Zi#YpyLWnYb%NeL5)e$t`X z42UGRCv|W$BQWGuP4mEAOr#!u1e*_&ZI8!Ub(Z_a*Q%2;niYpvmCzS6!$5Gc%k%_P zq@x4VxG@-s(#azy|A4DL1Z0;f z>%#ZB@$l0eui-~V{wl;GkyLZ{y$^|FL;lfZx~K|l&39)fi2&YuYVDW#^c@Tl-Mi_~ z7LMYEr%)ld<(G2WLH|Q_jBk?C23)RKCM?g4xO33ce5CPZw@yUN9)gQ23&KYAJJY%k z?P1Nlyx@Z_UplNzXwdhS*fyMPZfr?2DL8qAbEBHj*BNFiU`EGWCE6ej96qyq&jm!vl+%_y-|f-|mJOOlr0nGqk8c9- zrbk>ZABk+>c3;-%K34koBEK?TQkLqgQpKczh~WZm*YD|c8nEWZBDgP;U(F~&R~LR< zJ@!*f@EJ4GW~7XDan@Jh64ivK6|y7?7Dhem)@w=qD7v3%E?H2EZNkAfbB7Yb2R7Xb z$Hd-L8?KArWTwkLlkQTF7|!QjszJe2#d1~)8q-nneWZJK9u^#6gg6?d@mo_L_cc$ zFjqWco*_DRmC^IIz_X&pV-&A|2&f1UL9j+>k}{@3(x{`fGwp1Gp_HuP4i+Fi^t!Ak#pt#J#T;5k{-w9Ldpkp#b~*Ynz7yVT@74=+e6 z|Eo0pw_ecmU^Y2eQ_q{lk$V}WN8rjB;#f`2Ot!lZp85+RP1b)a2f5JEghp{Rl2^$jB4OzHh)3|Nf%s@^!f3XB=j-g8Y~dR1|`|w@F&y zT2DKgvH*JlMN>AC?F5;@MFl2-fI=eZTSd6(ka97vQooo3?DiP4 zfn(p)f5ig4iFCI#>HXfM7wRp>QQ~$k8!8P@A9&MPexmRjeAj55G%*2Nviv-hME%w;q`1U$f(ryk+GgUV&CFEyQyo%lqy0lSMwF&Kup;76H;}5xT!u2RZ4e|>jpMU1=hYh z^amMg-plI2G#!s<8^s-)lTh5Qj>D<_m1go@NPrRWrOw_$WGe!&wLJsSEoXLw92$C_Y{*r?dl%rvXAN7?+>}VeeQ8wzO z$1wKOmT-QYUyfw!hOkC&Ky|w_mZpw-Dh46pOEfrq;-!_N_CgI`puG9ElQ-~DZ;`X@ z`_}w!4D;F9E8O(AS#SB{EV9dMYa~6#%M)<;;>R@rneLAnnS*Fzly62udK z+#BOc_^zS6r9&NpB7K)wTIfTv}!klG%2)bWq#s#_J)J`1Zy6w_bm?0A#QT zrf!?9wl8I^76SM7%t%N`VBp~&Cua3eS6V?z)GBi(FKeupKYFoh7UH{Mh_8uLs_GBt^mqd(dDeO$s+8VVe3eFA$L$xX zyvh7)EaG&vSsqA_@G?P1Gd|S|{vzi(bt7s6Pn@@3t#;P%PL7!RKgGSDfa9YM8Cb5i zg}okFE5(^Uy=aA)0=Ku5BYgj!R${|eF>}u9|8XsRq5o|ILqnY}Sk9;mv{&ujlQFy%Se9j+k4)DeHOCTOQ-i)i`-nYvrUncz{xrW* z8n%2#J!bjp`9U%CGPi3f;txST*~&r7N_^=0BI$G3I7Rn@%t1)dq@>`Y`Ca)M{VQt@ zencdQvxprhiJ&yNz(^JtWzY*|HpQ=Wk@w8lcOaWw^%l5L8MxN zko`l1Tf_-0H{bj-6a}V=0Y6xK9>E!4|C4;^FPZt5*GTuL7?<`SF9T~I@^^zwg(-2Q zSa(V2V8A?!DmGgcNQ4ddAqX}qF;4z5BRG!&av)5h(3q?wnJ3P*Z#!CvEt%RqRrSi6 zXL*u@dX%7l;5->ZUE1=%{_1Ehe7bVpXqVpTn@+DO9``f2=yb^^hzdr!kW1Vd{naue zVS8?(gk9rT7w8NO3t_#s>4K(G++$s<^V^cedF z3laY>C($kckGN0l8X7@+@H~P@5fw-6ecjB{eet0}s$l)HQxNyQlzy>

&3f7c%+3 zP+xl)fcVVI4AOpA_%;^Jhn}jSB!1alZ8<{1T1W`4VKUy#Pe<+L7x!h7WOu^JoE+$c z#8!A(LD{~@-tia;;JmYru}JUA>WK|1x|ZRpNOki4>o@&U3&7eVq!XRFqfD-cT0l(i zI#jqKt25hOx5kn;ot^`1#ft8R?Vy{K7jr@KKv)`WjAzRZAVtrWGJ->0k&vog9iN1F%-@3|a><<_+CjW^$v+Or z$+2RWWeD2w=s-+5)B6p`5f^i!V}m8oe|icLo)2rTW%Mn;`jEH~n{f<&0{S=BK~?M% z+@+m*6H}xCNpLu`*WU$RHYtoTHXrVQ9QD^z3%7gv=Z*K=90%PJRs8i2ex2##4$Dke zuzavFVNC9gVxxWcH2-WmxW~@BLvS%A`vgP}h)5NYmmlE&^q1zJlu=QlZe&}=@?@;d z1Fb^uKk)wMf>v^&oFS5*|8G=j+Xln-C`y|TC})!YJ)hMn6oTft7;mX`h=6otAf{ae zN%%_}4V*FS$xNGUUXag|u+L5TKh!Blb+u^0EuZ}9@XPVE4Gh`83+I43JE!HL=%c6o z)3-)-=uasSPI=3tgg*|DFQxNhzsbDH+fFpY zXsZA5{MUZKN0SRxp$F)Vbl03ZdxKw)f4yOr+;ueTZ^U0{^nds7d;PzSc$p)P`u};v z%>TUj_hDTB2gQF9$n;+*SpFWc{11xKI`;+OMMg;wOJfZvk4Kvu?8mv3i>6j;C#ov)A1JGJlJ#Ij59{y>O zw)ecFo%Q#8$LD`d&3{(>Yt8Z>&#dEYtU8wbRqZg{ zcAtCNwWmw(?}RKbm5E8sIbPb+1?r13I9v_T^fVjJv#zXwt9wrMN^|5--=^|@KtC+I zgYR-etlZ-+2hdYQO+iN?l5! zwLXzJt@|;AbrD$N`+l^B_WSDNni&`~NG8k6N?=kI*ush(=k2N;RQ4?e>s=@05!hU< zSKw*p2ydtE#A5_+!)?M0gi6a`=Bc~C9Ef+&MTgeeM|49RD*@d+nZl|(?*1+qu8U%o{v#_y{-^m+VDCCT{~n9hrbg7vhiDPpSTK2 zXd`cCPhWA%%VEZE65d8S`DKQp)p_?wXgE`6Sn=+y`Xcw`n6!f&AlvYYVgmYE+(wyz zmP3SyJDpY&?H0XQ?HvZ&HA%&5Ib;1lbPB zLPl&S!@*^5=M;!gw*%CQt$>^t#p3E_O5yAU(5Du`Qn4#;9@38lsJGVrysw0{=Kb>4q|y6*usnXmI`jQ)oQIm@ac_ABh{-8 zpG)vwuE34WTcAB%c6kf^jb5N}s}k1*riM2Kb)Z3&zHe->K7DhYr?}0O%1k^+xTjck zlkSrZDt$`F)9=i9&ps?h&PR+N$;xU!osV5lt4VQU%+JXgvFrE;qq4!(lfTZ+$2i5=;wOaj^Zoa zTdvYwV;0Zz{t}J&{v}mGlM^34f>ayY()JBf5kHvD+o0i&b$~%c8gI&sCw6z9JtmVy zC!9(taI$57v&;?*OcPwI_=MPR$`ik|x{XYc*71^B=Vs$_Hc0Z5hF(Qh%G2YahPggi>7BFro zwau89d!DleGS#IcDLNq2yHCJ&9}um1Zf_?Ow~>a&Owze~bPjrF-#-|to*>>8VX6!n zhx3ei1-7Q(_8Q*|lgjY-2EJdBTx?(MdSKZbcj@jgc5<$!3pHTWbPNoMdY|bCdo8s+aR3sq*qdeoUW6ygIqAgGhI>315 zP#i(#Ol@xnp5+VZhk7c(`i5S7QfzG}zRf~LlPAMRm}#kvCyNukHG0!8Cv5voyY{Ex zyv|qqvL^i3=$%zC2ORS2Rh{nps~jMBsXyM&aDOtCSj?6|-x6{SEYu!?+&OeF5I&0_ z6Yxo@tK)R)Md@U=45S`IWhCX^u5guM$B0#Q>#-1;9j?6V8tLZ$K1BO<x z$iVMw?!VEq2Yr80&sX?$q)z1VIziT#->bIo1fh9J{O_uZ|4n{ z%vHy>=x7-{_&+oKbMdT8&tvhP=Oned(2mtFfu(Bk$J0$p;(+a41nv4)z_z0&TcT9? z$gb}-@4PbD#E*mM$pW-it0UpdCaWiD&1bm!CH}}UnzpbYuHaY&Yq7*t?OtQknU`Wr zpTcsS!InPv+)gFVCKpK`L5~^6q~_XA%EIyOhb>xJtiGcg5P`((L8w)|>pS zz;UvCa%RsI_!DW2_KfD{g4Tr4lv-_=;%4zA3>vDF zHgYwEHU!@A=_4nij91_FQqUjR20Tcc_dgtSz(ZKu{AxxXoAK<$pVrd|9$=?X4*>>p zq&Ghh9j1{qT2g|awp=OzG0S{AZ$6??l~GFmxml5ASLd163Mg5UMA?%t0viUf#nJRp zOiS^=zzS@80zlHa+>jTTl$u&l`NYO*PFw;t_hRsh>_FYrBSk^VPMH%QJp_~Q$AH

)1+bpqM)4 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 uses the `response_model` to validate and **filter** the response data? -In this case, we used `response_model=TeamRead` and `response_model=HeroRead`, so FastAPI will use them to filter the response data, even if we return a **table model** that includes **relationship attributes**: +In this case, we used `response_model=TeamPublic` and `response_model=HeroPublic`, so FastAPI will use them to filter the response data, even if we return a **table model** that includes **relationship attributes**: //// tab | Python 3.10+ @@ -300,7 +300,7 @@ Let's add a couple more **data models** that declare that data so we can use the ## Models with Relationships -Let's add the models `HeroReadWithTeam` and `TeamReadWithHeroes`. +Let's add the models `HeroPublicWithTeam` and `TeamPublicWithHeroes`. We'll add them **after** the other models so that we can easily reference the previous models. @@ -372,11 +372,11 @@ These two models are very **simple in code**, but there's a lot happening here. ### Inheritance and Type Annotations -The `HeroReadWithTeam` **inherits** from `HeroRead`, which means that it will have the **normal fields for reading**, including the required `id` that was declared in `HeroRead`. +The `HeroPublicWithTeam` **inherits** from `HeroPublic`, which means that it will have the **normal fields for reading**, including the required `id` that was declared in `HeroPublic`. -And then it adds the **new field** `team`, which could be `None`, and is declared with the type `TeamRead` with the base fields for reading a team. +And then it adds the **new field** `team`, which could be `None`, and is declared with the type `TeamPublic` with the base fields for reading a team. -Then we do the same for the `TeamReadWithHeroes`, it **inherits** from `TeamRead`, and declares the **new field** `heroes`, which is a list of `HeroRead`. +Then we do the same for the `TeamPublicWithHeroes`, it **inherits** from `TeamPublic`, and declares the **new field** `heroes`, which is a list of `HeroPublic`. ### Data Models Without Relationship Attributes @@ -386,11 +386,11 @@ Instead, here these are only **data models** that will tell FastAPI **which attr ### Reference to Other Models -Also, notice that the field `team` is not declared with this new `TeamReadWithHeroes`, because that would again create that infinite recursion of data. Instead, we declare it with the normal `TeamRead` model. +Also, notice that the field `team` is not declared with this new `TeamPublicWithHeroes`, because that would again create that infinite recursion of data. Instead, we declare it with the normal `TeamPublic` model. -And the same for `TeamReadWithHeroes`, the model used for the new field `heroes` uses `HeroRead` to get only each hero's data. +And the same for `TeamPublicWithHeroes`, the model used for the new field `heroes` uses `HeroPublic` to get only each hero's data. -This also means that, even though we have these two new models, **we still need the previous ones**, `HeroRead` and `TeamRead`, because we need to reference them here (and we are also using them in the rest of the *path operations*). +This also means that, even though we have these two new models, **we still need the previous ones**, `HeroPublic` and `TeamPublic`, because we need to reference them here (and we are also using them in the rest of the *path operations*). ## Update the Path Operations diff --git a/docs/tutorial/fastapi/teams.md b/docs/tutorial/fastapi/teams.md index cbdb4a94..9e366f2c 100644 --- a/docs/tutorial/fastapi/teams.md +++ b/docs/tutorial/fastapi/teams.md @@ -14,7 +14,7 @@ It's the same process we did for heroes, with a base model, a **table model**, a We have a `TeamBase` **data model**, and from it, we inherit with a `Team` **table model**. -Then we also inherit from the `TeamBase` for the `TeamCreate` and `TeamRead` **data models**. +Then we also inherit from the `TeamBase` for the `TeamCreate` and `TeamPublic` **data models**. And we also create a `TeamUpdate` **data model**. diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py index 7014a739..f46d8b07 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001/main.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py index cf1bbb71..702eba72 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001_py310/main.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -50,7 +50,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -59,7 +59,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -70,7 +70,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -78,7 +78,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py b/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py index 9f428ab3..efdfd8ee 100644 --- a/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py +++ b/docs_src/tutorial/fastapi/app_testing/tutorial001_py39/main.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/delete/tutorial001.py b/docs_src/tutorial/fastapi/delete/tutorial001.py index 53281736..1871ab17 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/delete/tutorial001_py310.py b/docs_src/tutorial/fastapi/delete/tutorial001_py310.py index 45e2e1d5..0dd0c889 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -45,7 +45,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -55,14 +55,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -71,7 +71,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/delete/tutorial001_py39.py b/docs_src/tutorial/fastapi/delete/tutorial001_py39.py index 12f6bc3f..9ab3056c 100644 --- a/docs_src/tutorial/fastapi/delete/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/delete/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py index 2352f390..ccf3d770 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py index ad8ff95e..3402d404 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,14 +49,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py index b1f7cdcb..3d223f32 100644 --- a/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/limit_and_offset/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001.py index 7f59ac6a..42ac8051 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001.py @@ -17,7 +17,7 @@ class HeroCreate(SQLModel): age: Optional[int] = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -43,7 +43,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -53,7 +53,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py index ff12eff5..b8dc44d9 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py310.py @@ -15,7 +15,7 @@ class HeroCreate(SQLModel): age: int | None = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py index 977a1ac8..c6be23d4 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial001_py39.py @@ -17,7 +17,7 @@ class HeroCreate(SQLModel): age: Optional[int] = None -class HeroRead(SQLModel): +class HeroPublic(SQLModel): id: int name: str secret_name: str @@ -43,7 +43,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -53,7 +53,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002.py index fffbe724..79c71f1a 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py index 7373edff..79e7447b 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,7 +49,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py index 1b4a5125..77093bcc 100644 --- a/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py +++ b/docs_src/tutorial/fastapi/multiple_models/tutorial002_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,7 +51,7 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001.py b/docs_src/tutorial/fastapi/read_one/tutorial001.py index f18426e7..a3994517 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py b/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py index e8c7d49b..1a462813 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -39,7 +39,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -49,14 +49,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py b/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py index 4dc5702f..9ac0a650 100644 --- a/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/read_one/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -41,7 +41,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -51,14 +51,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(): with Session(engine) as session: heroes = session.exec(select(Hero)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001.py b/docs_src/tutorial/fastapi/relationships/tutorial001.py index 51339e2a..ac8a557c 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -43,7 +43,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -58,12 +58,12 @@ class HeroUpdate(SQLModel): team_id: Optional[int] = None -class HeroReadWithTeam(HeroRead): - team: Optional[TeamRead] = None +class HeroPublicWithTeam(HeroPublic): + team: Optional[TeamPublic] = None -class TeamReadWithHeroes(TeamRead): - heroes: List[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: List[HeroPublic] = [] sqlite_file_name = "database.db" @@ -90,7 +90,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -99,7 +99,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -110,7 +110,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -118,7 +118,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -144,7 +144,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -153,7 +153,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=List[TeamRead]) +@app.get("/teams/", response_model=List[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -164,7 +164,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -172,7 +172,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py b/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py index 35257bd5..5110b158 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001_py310.py @@ -17,7 +17,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -41,7 +41,7 @@ class Hero(HeroBase, table=True): team: Team | None = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -56,12 +56,12 @@ class HeroUpdate(SQLModel): team_id: int | None = None -class HeroReadWithTeam(HeroRead): - team: TeamRead | None = None +class HeroPublicWithTeam(HeroPublic): + team: TeamPublic | None = None -class TeamReadWithHeroes(TeamRead): - heroes: list[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: list[HeroPublic] = [] sqlite_file_name = "database.db" @@ -88,7 +88,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -97,7 +97,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -108,7 +108,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -116,7 +116,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -142,7 +142,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -151,7 +151,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -162,7 +162,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -170,7 +170,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py b/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py index 6ceae130..a4e953c4 100644 --- a/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/relationships/tutorial001_py39.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -43,7 +43,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -58,12 +58,12 @@ class HeroUpdate(SQLModel): team_id: Optional[int] = None -class HeroReadWithTeam(HeroRead): - team: Optional[TeamRead] = None +class HeroPublicWithTeam(HeroPublic): + team: Optional[TeamPublic] = None -class TeamReadWithHeroes(TeamRead): - heroes: list[HeroRead] = [] +class TeamPublicWithHeroes(TeamPublic): + heroes: list[HeroPublic] = [] sqlite_file_name = "database.db" @@ -90,7 +90,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -99,7 +99,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -110,7 +110,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroReadWithTeam) +@app.get("/heroes/{hero_id}", response_model=HeroPublicWithTeam) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -118,7 +118,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -144,7 +144,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -153,7 +153,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -164,7 +164,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamReadWithHeroes) +@app.get("/teams/{team_id}", response_model=TeamPublicWithHeroes) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -172,7 +172,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py index 7014a739..f46d8b07 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py index cf1bbb71..702eba72 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -50,7 +50,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -59,7 +59,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -70,7 +70,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -78,7 +78,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py index 9f428ab3..efdfd8ee 100644 --- a/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/session_with_dependency/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -61,7 +61,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -72,7 +72,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -80,7 +80,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): diff --git a/docs_src/tutorial/fastapi/teams/tutorial001.py b/docs_src/tutorial/fastapi/teams/tutorial001.py index 785c5259..4289221f 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -42,7 +42,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -81,7 +81,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -90,7 +90,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -101,7 +101,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -109,7 +109,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -135,7 +135,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -144,7 +144,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=List[TeamRead]) +@app.get("/teams/", response_model=List[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -155,7 +155,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -163,7 +163,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/teams/tutorial001_py310.py b/docs_src/tutorial/fastapi/teams/tutorial001_py310.py index dea4bd8a..630ae4f9 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001_py310.py @@ -17,7 +17,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -40,7 +40,7 @@ class Hero(HeroBase, table=True): team: Team | None = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -79,7 +79,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -88,7 +88,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -99,7 +99,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -107,7 +107,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -133,7 +133,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -142,7 +142,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -153,7 +153,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -161,7 +161,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/teams/tutorial001_py39.py b/docs_src/tutorial/fastapi/teams/tutorial001_py39.py index cc6429ad..661e4353 100644 --- a/docs_src/tutorial/fastapi/teams/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/teams/tutorial001_py39.py @@ -19,7 +19,7 @@ class TeamCreate(TeamBase): pass -class TeamRead(TeamBase): +class TeamPublic(TeamBase): id: int @@ -42,7 +42,7 @@ class Hero(HeroBase, table=True): team: Optional[Team] = Relationship(back_populates="heroes") -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -81,7 +81,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): db_hero = Hero.model_validate(hero) session.add(db_hero) @@ -90,7 +90,7 @@ def create_hero(*, session: Session = Depends(get_session), hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes( *, session: Session = Depends(get_session), @@ -101,7 +101,7 @@ def read_heroes( return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(*, session: Session = Depends(get_session), hero_id: int): hero = session.get(Hero, hero_id) if not hero: @@ -109,7 +109,7 @@ def read_hero(*, session: Session = Depends(get_session), hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero( *, session: Session = Depends(get_session), hero_id: int, hero: HeroUpdate ): @@ -135,7 +135,7 @@ def delete_hero(*, session: Session = Depends(get_session), hero_id: int): return {"ok": True} -@app.post("/teams/", response_model=TeamRead) +@app.post("/teams/", response_model=TeamPublic) def create_team(*, session: Session = Depends(get_session), team: TeamCreate): db_team = Team.model_validate(team) session.add(db_team) @@ -144,7 +144,7 @@ def create_team(*, session: Session = Depends(get_session), team: TeamCreate): return db_team -@app.get("/teams/", response_model=list[TeamRead]) +@app.get("/teams/", response_model=list[TeamPublic]) def read_teams( *, session: Session = Depends(get_session), @@ -155,7 +155,7 @@ def read_teams( return teams -@app.get("/teams/{team_id}", response_model=TeamRead) +@app.get("/teams/{team_id}", response_model=TeamPublic) def read_team(*, team_id: int, session: Session = Depends(get_session)): team = session.get(Team, team_id) if not team: @@ -163,7 +163,7 @@ def read_team(*, team_id: int, session: Session = Depends(get_session)): return team -@app.patch("/teams/{team_id}", response_model=TeamRead) +@app.patch("/teams/{team_id}", response_model=TeamPublic) def update_team( *, session: Session = Depends(get_session), diff --git a/docs_src/tutorial/fastapi/update/tutorial001.py b/docs_src/tutorial/fastapi/update/tutorial001.py index feab25cc..6a02f6c0 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001.py +++ b/docs_src/tutorial/fastapi/update/tutorial001.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial001_py310.py b/docs_src/tutorial/fastapi/update/tutorial001_py310.py index 02bec2e0..a98ee68f 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001_py310.py +++ b/docs_src/tutorial/fastapi/update/tutorial001_py310.py @@ -16,7 +16,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -45,7 +45,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -55,14 +55,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -71,7 +71,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial001_py39.py b/docs_src/tutorial/fastapi/update/tutorial001_py39.py index 241d205c..b6d62bf8 100644 --- a/docs_src/tutorial/fastapi/update/tutorial001_py39.py +++ b/docs_src/tutorial/fastapi/update/tutorial001_py39.py @@ -18,7 +18,7 @@ class HeroCreate(HeroBase): pass -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -47,7 +47,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): with Session(engine) as session: db_hero = Hero.model_validate(hero) @@ -57,14 +57,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -73,7 +73,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002.py b/docs_src/tutorial/fastapi/update/tutorial002.py index 1333654b..c8838aef 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002.py +++ b/docs_src/tutorial/fastapi/update/tutorial002.py @@ -19,7 +19,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -54,7 +54,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -66,14 +66,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=List[HeroRead]) +@app.get("/heroes/", response_model=List[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -82,7 +82,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002_py310.py b/docs_src/tutorial/fastapi/update/tutorial002_py310.py index 6be274ef..d250fecf 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002_py310.py +++ b/docs_src/tutorial/fastapi/update/tutorial002_py310.py @@ -17,7 +17,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -52,7 +52,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -64,14 +64,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -80,7 +80,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/docs_src/tutorial/fastapi/update/tutorial002_py39.py b/docs_src/tutorial/fastapi/update/tutorial002_py39.py index 19d30ea6..14ad1b48 100644 --- a/docs_src/tutorial/fastapi/update/tutorial002_py39.py +++ b/docs_src/tutorial/fastapi/update/tutorial002_py39.py @@ -19,7 +19,7 @@ class HeroCreate(HeroBase): password: str -class HeroRead(HeroBase): +class HeroPublic(HeroBase): id: int @@ -54,7 +54,7 @@ def on_startup(): create_db_and_tables() -@app.post("/heroes/", response_model=HeroRead) +@app.post("/heroes/", response_model=HeroPublic) def create_hero(hero: HeroCreate): hashed_password = hash_password(hero.password) with Session(engine) as session: @@ -66,14 +66,14 @@ def create_hero(hero: HeroCreate): return db_hero -@app.get("/heroes/", response_model=list[HeroRead]) +@app.get("/heroes/", response_model=list[HeroPublic]) def read_heroes(offset: int = 0, limit: int = Query(default=100, le=100)): with Session(engine) as session: heroes = session.exec(select(Hero).offset(offset).limit(limit)).all() return heroes -@app.get("/heroes/{hero_id}", response_model=HeroRead) +@app.get("/heroes/{hero_id}", response_model=HeroPublic) def read_hero(hero_id: int): with Session(engine) as session: hero = session.get(Hero, hero_id) @@ -82,7 +82,7 @@ def read_hero(hero_id: int): return hero -@app.patch("/heroes/{hero_id}", response_model=HeroRead) +@app.patch("/heroes/{hero_id}", response_model=HeroPublic) def update_hero(hero_id: int, hero: HeroUpdate): with Session(engine) as session: db_hero = session.get(Hero, hero_id) diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py index 706cc8ae..f293199b 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001.py @@ -99,7 +99,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -136,7 +136,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -244,7 +244,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -297,8 +297,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py index 46c8c42d..2757c878 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py310.py @@ -102,7 +102,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -139,7 +139,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,7 +175,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -247,7 +247,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -300,8 +300,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py index e2874c10..3299086b 100644 --- a/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_delete/test_tutorial001_py39.py @@ -102,7 +102,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -139,7 +139,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,7 +175,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -247,7 +247,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -300,8 +300,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py index d177c80c..4047539f 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -230,8 +230,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py index 03086996..480b92a1 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py310.py @@ -107,7 +107,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -144,7 +144,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -180,7 +180,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -233,8 +233,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py index f7e42e4e..0a9d5c9e 100644 --- a/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_limit_and_offset/test_tutorial001_py39.py @@ -107,7 +107,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -144,7 +144,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -180,7 +180,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -233,8 +233,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py index 2ebfc0c0..276a021c 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001.py @@ -74,7 +74,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -101,7 +101,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -154,8 +154,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py index c17e4829..b6f082a0 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py310.py @@ -76,7 +76,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -103,7 +103,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -156,8 +156,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py index 258b3a4e..82365ced 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial001_py39.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["id", "name", "secret_name"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py index 47f2e641..8327c6d5 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002.py @@ -74,7 +74,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -101,7 +101,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -154,8 +154,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py index c09b15bd..30edc4de 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py310.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py index 8ad0f271..2b86d3fa 100644 --- a/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py +++ b/tests/test_tutorial/test_fastapi/test_multiple_models/test_tutorial002_py39.py @@ -77,7 +77,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -157,8 +157,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py index 62fbb25a..9b1d5275 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001.py @@ -59,7 +59,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -86,7 +86,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -122,7 +122,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -175,8 +175,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py index 913d0988..f18b0d65 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py310.py @@ -62,7 +62,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -89,7 +89,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -125,7 +125,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -178,8 +178,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py index 9bedf5c6..4423d1a7 100644 --- a/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_read_one/test_tutorial001_py39.py @@ -62,7 +62,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -89,7 +89,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -125,7 +125,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -178,8 +178,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py index b301697d..4b4f47b7 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001.py @@ -147,7 +147,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -184,7 +184,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -220,7 +220,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -292,7 +292,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -346,7 +346,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -383,7 +383,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -419,7 +419,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -491,7 +491,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -554,8 +554,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -584,8 +584,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -615,14 +615,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -681,8 +681,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -691,8 +691,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -702,7 +702,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py index 4d310a87..dcb78f59 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py310.py @@ -150,7 +150,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -187,7 +187,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -295,7 +295,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -349,7 +349,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -386,7 +386,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -422,7 +422,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -494,7 +494,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -557,8 +557,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -587,8 +587,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -618,14 +618,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -684,8 +684,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -694,8 +694,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -705,7 +705,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py index 0603739c..5ef7338d 100644 --- a/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_relationships/test_tutorial001_py39.py @@ -150,7 +150,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -187,7 +187,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroReadWithTeam" + "$ref": "#/components/schemas/HeroPublicWithTeam" } } }, @@ -295,7 +295,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -349,7 +349,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -386,7 +386,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -422,7 +422,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamReadWithHeroes" + "$ref": "#/components/schemas/TeamPublicWithHeroes" } } }, @@ -494,7 +494,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -557,8 +557,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -587,8 +587,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "HeroReadWithTeam": { - "title": "HeroReadWithTeam", + "HeroPublicWithTeam": { + "title": "HeroPublicWithTeam", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -618,14 +618,14 @@ def test_tutorial(clear_sqlmodel): "team": IsDict( { "anyOf": [ - {"$ref": "#/components/schemas/TeamRead"}, + {"$ref": "#/components/schemas/TeamPublic"}, {"type": "null"}, ] } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"$ref": "#/components/schemas/TeamRead"} + {"$ref": "#/components/schemas/TeamPublic"} ), }, }, @@ -684,8 +684,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -694,8 +694,8 @@ def test_tutorial(clear_sqlmodel): "id": {"title": "Id", "type": "integer"}, }, }, - "TeamReadWithHeroes": { - "title": "TeamReadWithHeroes", + "TeamPublicWithHeroes": { + "title": "TeamPublicWithHeroes", "required": ["name", "headquarters", "id"], "type": "object", "properties": { @@ -705,7 +705,7 @@ def test_tutorial(clear_sqlmodel): "heroes": { "title": "Heroes", "type": "array", - "items": {"$ref": "#/components/schemas/HeroRead"}, + "items": {"$ref": "#/components/schemas/HeroPublic"}, "default": [], }, }, diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py index 441cc42b..388cfa9b 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001.py @@ -99,7 +99,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -136,7 +136,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -244,7 +244,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -297,8 +297,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py index 7c427a1c..65bab477 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py310.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -249,7 +249,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -302,8 +302,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py index ea63f52c..cdab85df 100644 --- a/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_session_with_dependency/test_tutorial001_py39.py @@ -104,7 +104,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -141,7 +141,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -177,7 +177,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -249,7 +249,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -302,8 +302,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py index a532625d..25daadf7 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001.py @@ -134,7 +134,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -171,7 +171,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -207,7 +207,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,7 +279,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -333,7 +333,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -370,7 +370,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -406,7 +406,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -478,7 +478,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -541,8 +541,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -626,8 +626,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py index 33029f6b..63f8a1d7 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py310.py @@ -137,7 +137,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -174,7 +174,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -210,7 +210,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -282,7 +282,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -336,7 +336,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -373,7 +373,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -409,7 +409,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -481,7 +481,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -544,8 +544,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -629,8 +629,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py index 66705e17..30b68e0e 100644 --- a/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_teams/test_tutorial001_py39.py @@ -137,7 +137,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -174,7 +174,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -210,7 +210,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -282,7 +282,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -336,7 +336,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Teams Teams Get", "type": "array", "items": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" }, } } @@ -373,7 +373,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -409,7 +409,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -481,7 +481,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/TeamRead" + "$ref": "#/components/schemas/TeamPublic" } } }, @@ -544,8 +544,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { @@ -629,8 +629,8 @@ def test_tutorial(clear_sqlmodel): "headquarters": {"title": "Headquarters", "type": "string"}, }, }, - "TeamRead": { - "title": "TeamRead", + "TeamPublic": { + "title": "TeamPublic", "required": ["name", "headquarters", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py index 973ab2db..0856b246 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001.py @@ -106,7 +106,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -143,7 +143,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -179,7 +179,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -223,7 +223,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -276,8 +276,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py index 090af8c6..d79b2ece 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py310.py @@ -109,7 +109,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -146,7 +146,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -182,7 +182,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -226,7 +226,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,8 +279,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py index 22dfb8f2..1be81dec 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial001_py39.py @@ -109,7 +109,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -146,7 +146,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -182,7 +182,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -226,7 +226,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -279,8 +279,8 @@ def test_tutorial(clear_sqlmodel): ), }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py index 21ca74e5..32e343ed 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002.py @@ -169,7 +169,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -206,7 +206,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -242,7 +242,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -286,7 +286,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -340,8 +340,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py index 6feb1ec5..b05f5b21 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py310.py @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -209,7 +209,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -245,7 +245,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -289,7 +289,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -343,8 +343,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { diff --git a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py index 13d70dd3..807e3342 100644 --- a/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py +++ b/tests/test_tutorial/test_fastapi/test_update/test_tutorial002_py39.py @@ -172,7 +172,7 @@ def test_tutorial(clear_sqlmodel): "title": "Response Read Heroes Heroes Get", "type": "array", "items": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" }, } } @@ -209,7 +209,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -245,7 +245,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -289,7 +289,7 @@ def test_tutorial(clear_sqlmodel): "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/HeroRead" + "$ref": "#/components/schemas/HeroPublic" } } }, @@ -343,8 +343,8 @@ def test_tutorial(clear_sqlmodel): "password": {"type": "string", "title": "Password"}, }, }, - "HeroRead": { - "title": "HeroRead", + "HeroPublic": { + "title": "HeroPublic", "required": ["name", "secret_name", "id"], "type": "object", "properties": { -- 2.47.2