From 9aa698aa67b2507e289db30652e52f6ba163911c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Wed, 9 Mar 2022 21:29:40 -0500 Subject: [PATCH 01/42] =?UTF-8?q?=F0=9F=94=A7=20Add=20Classiq=20sponsor=20?= =?UTF-8?q?(#4671)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + docs/en/data/sponsors.yml | 3 +++ docs/en/docs/img/sponsors/classiq-banner.png | Bin 0 -> 5321 bytes docs/en/docs/img/sponsors/classiq.png | Bin 0 -> 6286 bytes docs/en/overrides/main.html | 6 ++++++ 5 files changed, 10 insertions(+) create mode 100644 docs/en/docs/img/sponsors/classiq-banner.png create mode 100644 docs/en/docs/img/sponsors/classiq.png diff --git a/README.md b/README.md index bec58aad1..5ed443ad1 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,7 @@ The key features are: + diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index 4d63a7288..cc9201fbe 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -11,6 +11,9 @@ gold: - url: https://striveworks.us/careers?utm_source=fastapi&utm_medium=sponsor_banner&utm_campaign=feb_march#openings title: https://striveworks.us/careers img: https://fastapi.tiangolo.com/img/sponsors/striveworks.png + - url: https://www.classiq.io/careers + title: Join the team building a new SaaS platform that will change the computing world + img: https://fastapi.tiangolo.com/img/sponsors/classiq.png silver: - url: https://www.deta.sh/?ref=fastapi title: The launchpad for all your (team's) ideas diff --git a/docs/en/docs/img/sponsors/classiq-banner.png b/docs/en/docs/img/sponsors/classiq-banner.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0d6ac741907732efcd69b7a0e2a5b29e48aeec GIT binary patch literal 5321 zcmZ`-hd*2I7mlq~QG2vvYt;xP2x`_=ZEZDT#VREwW^3;vMrx~7w5Skj)vQ^oW~icS z^R-H>^1J?k-$`_r3R=^FGgWPV8fYN3>KNR3H$DR$EK`2?#`F4V(*8k^{$j zA+$H}M-JD0qz<~e{uH!+NCif2cxjpYfI!r@u75qy1*= z2nfVvqOGp-3^lv++|7&AIOEbGk`3;6vsT-o&{vq)_zN=^OPrZq$aa!hg`+DqXM9#g z1b;nN+l<)6HlDaABXk~|z~%cvwH=$9(9h)i>p^4*RO*2OC$1LvS|&qHCFPAn#ewb1 zd-YtmH|lTYbWdF-@9O()Z9JL*5k7jGKUr9FIr1A(B;@d=3dh}$xV9iqVOw6?YwI3t z2P_5?dTk8iB!KZ*lV6)=3k_fiD0a4M+lO4=_uKJgLxoA>BuHrwmS6jchmw+%*gt)U z;{N^nWgkD<%U(~>Wk}7{+p*#uy8NXj1~ZXqp#1)^7J+@_aNKpvQoLqSS#@=^=wKSO|FscQt!rmbeFCYKkx|NV)}-r@#q9T!WBtoA!;=%`^ub)>Y~5$F--YIa_ULp9|9T$-^38DBU0C%iP=CraCfKjhza- zlqJ|MIpk(ckMMzNm$&L{+NlcO)j`Uq$fopk?Tr6&GX5Q?2e9( z>)YEA;~Np8g9rrT&5+Z$OJ(sV7T;#>khXl+Ry6kByFkROlCdn~6ZQw6q{l^>jAG)Yy2# zOiNMqOL3wWe^^EaOH3hU^)z)-FUg1T*nt6^GY*ien;WpodZ0F%N1KsU<&ALM-uXY5 zwIQ$gTf6@$iw~l9_Nv(EcD_n16PcI{^+sV>i(;fc(3?BHLif?_#4UM6eHHDr(#h!Z zr?-;%ZPkjeurxamu#SHvR)5DL3lc5hc=*^{@y`9~{1F`lr}bTp$yr9V>_}mo;iY{X zOUv=!HFnlUiVW5+`2FvJp>8uFchWJ(hX*TM0~jAO96ruNJg=kia!__hcjNGso-TUn zD1ZpW&CLy@&WGK^$4q1|8aU$$d6=j=mb?mTYoD45a?y3I9d5+L@-W7>Zykj#L$%Nm zz`K%$t4K>r0}j+NP|ClF!{HDf9{TLzz008syN{fmg-BJjBwZZB3Wd`Oc~dBZl$RJXV1`}soFN{p3BV{9mU zDcaptBGVR<>CK|+YP|7at>OWTyZ`cSZo9;aX~_z!>2%9hd|aaV{bBsH-jC1h{bfON z(Y(Vs(_9Vpn3CkGw`MkCL#S44KnT@FDc`QBEU)K}`4EK504y4AFB0E3b$nh^?EXvt zd~;^UmzzinP1-!4R|6Y^^lz2Vy2tu{s;DqnzC}vJ)%zZJZopHY=XO5h-9?V>-M!00 zNqly8hTK^pF*asM)Lim{E_yc>R8$PZY;)%HfRPP&kua5mdFi3xDn*o~+47JEG*+EB zR^7LPFY9NS{M+fgOREnW=AV3Obc*bHRwP>v&*Xv_zmkH48K{;}aByCL$wQb-)PMif z{1XG=aAGpDr#7A@iuU^8ige?{{SPGjIT5AL&9Y=P_q9(Lbs|)sRX0;7Rb9ws$s9RP zm<`?$DXljA8x-zmtq{+!BA***NYFs;a_R&sC*-FDqN}!}Ff3a=_}15y6mt#*A#8b0Z!yM_l2d%` zx||Y!DF_KW{AVfwL(!IUS@^=?ylY>i@UR;qiFc=sx`n>g!&h?UVjJGIfq$diY4Rh) z$M&y6=KQxkIolmyagmXcZS+?Azb;&JOVDF{F3i>&n^!F7g&5^tXdWA^^LgLxm5pZe+WWML8U_SBhVY&%9j1A$!fViUtq zqxnPE{3j+S$0`YW?-dgUHPXfqOu%?tEQD!3M4AKxBD6mJwL zI@Fm_?~i!?ig#p&3E&4eQB(7w$BQ0AJ|$ky#M?VHeC!~Zi00F6G3re-xmAadOB@Q~;N<+^ zU;t1W;>C;7<3CnRD-bak|gqg8Cd2;A(g)3$(G=8v+L z<(djXOB_J#9`iE6r}GCyURIuIA2Lpp9_*pAc)Z%jpT=7t; z<9`G-Sv|ToXzb=I0W-_|I*~i`$`Q&JFL=aLVDo&H}}o(jM0Q zqARaWNqu){w(VS4T)|I}GAud8Jthh|M~Y6WSD2SCw&G_Do!gmm*=$^u&-E|;C_7)z z7DCEVox#-Gn`*&*YFIZ;;z3eoF%?gn6dVCQ?Ew$B!2j8CfS=dm^=?d^U^bTW%jsHF zizXw(y4Z}Xi!6(dj7`MbTYhiDe;)4I6b3F7*ah0eu-1#IoZH;)4u%_PHXnLz-_4Ry zM;?IxeI?v^9sl8V@Xd7HDBOb&(s5rnSLxy70^WiisRUMv>J65X%>N)*7gSu~PbT6_ zgY46(eiN~2D`z*c1mx>K-3m;cx|jV6B`vpef2yWNziSbk`|W;H6l|$VW#J*i-QmDz zGfqSH_auums{-l3CYXA|R8z>S!tni{r{=9Z&I&++hSI*iVkqY8l4r!3QP&)`Vn2!5 ztSPmH>9<|5DOfA2otHR;;aJ@JHpf!>L})8p;!o$02YURBW>0)60CtN5xD6?@W%TNz zGz%5d2Y_s?6UOOe-%c~6W#pnuBq2%YjuJOspOMG^4G?(~PnOT{l@SDeS28RE9>Q}3 z2oW~pUZd_z;JaV&&-p2p$-DcBe%g5M>jeZdzre@=?E;|2`pzlK;9XP&Gmt82MqB*U zj{uBq$Q}lPavo6cPt=wOGoY=Bjot2_bnTM=K(nRj3jE+fK;44nfHrwK(+_`)IR8lEk$9OWTJy(;j%Fa0SnqC|0qo>$#wXEC`Z10)0auy{dwUba_0DVCXggSK?F}B|R$!9@4WWj(8l4e;AMC$g2MZ$Q;z} z!X<0Ab)%)4s;7E7X;xQ?gNUy7Oo+S|s1t#O;8$&z@4>)z6|Z z)6~7^7S2!q1wq#fVJaFK6EkSc;M{ZQDcaG4VO_SmO4ru^7j*&@HB*CN&T)$Qo#_^KV$j%Y~pBlZ5`O8>6G_?o4aZ!x_+NUY#V{<6&o$HoCH z35$jNB@njgqO{Pg#>THGp3XW*0&-RwuE+E(4Qui-{j9-t&~*+RY*A^FkdQD+C=}*p zj2%4yc&O>I!;kt&SF({q5hD7`RYy^^9-g?uDq8zy*htZrFKjhtqRU*6{_m8KW8|)e z(M02r%i$xoxlzsSl2qNMEgGr1{nEMN(!iO(rZ&|{i`MFO{5qni3sTtlYL~McRt0j) zyFcmDq{*1vB>sDGc;*w8Q;DYTRk2|QK-{mKm{j4zLM#O_`D%ykZ2wX%FIQmo^$UhK zN8-N7mD@F@&K8Z;F8$SJj`sbAl;i!8DXsNct+cGpiZI{+S^6F6hM1-A@FdItP`}xy z%$;Y}K>6Y9+24QDCF~4d!NH2O1&h$Pt30EExnMbzHmSLX$Ng;~oeOMYmjpvU%Qj3U9k{mgl&`3s?uI#-#a=n zQJifGp!ASaSBWlWbZRQ7Nw?9n zc;_JxsCk|)Z*3p%oNxE<>?py*d9Wv2oNfm_*6K;`TvP&z#kp=%Pt(Cs6=OM+_6s$lUu95b4r^ET`iy&b1HN zFoR^-Lz+e3wRpl=u%hEM4zQ6m$B+EQyN9RO#T8PXfhrQIpokUlYqYwS_8tokkoTpf zJx#B+5O3iPbBTc1n3$SUH8%cxeEj3|Mi}5b zgVbYb8JQ=Ujq@*{xx*qt{uswha!j&6Cy6Q$EiffE*}EltfH5eClZlXdGGmsGvPFXwS-YC>vz z8bJM76|LOe-5nwJJ>x=v@dig;Ai|V}!f&81VQL!=$&`?k3 zY%ubZ;_U*sA!q$GYBu`=wGop`UAl>nfaP^bYlzg|z4b&;E&+L5BFphxnu&bDwntq_B2YZ8km)tw}5>TF{ zuFoI8+27w!3vaM`rS*hU^^Inwa!1McFF&iwPpubs2r4-eiXBxl!% zu`Bn>rM#fqaCk`R`K#hjQIZ z{vjrGehKv^%bl{EO8v3wVWrkg8Vtd~!B2UWvB|~Mse9!+sp)x?S{~ z%|<|bPXF*u2C=m08HH~2$Unsblou`>C%wWqHmmi69lIi6xw&!sN3u;4pf<|N$_gyr zPw9rvxFix}=BqXS90pgHm#au~MDlA-1fj)UZq?pkH`LIG6kF04W-9b`hJTIGEJ}7X zca8#XM^`SqFezxNLan3zo+(o5ddZwpn&s`CQCy1uy?COQbX892#;Y#20L z;kDLNb;W9fU%%@Cx^EJ07BIb=2hb8D6n~TIbkvF_79{@vO}OjEUEj?sics_D V0r@Q>O`z!r($+9guTr%Q`yVU$Jsto6 literal 0 HcmV?d00001 diff --git a/docs/en/docs/img/sponsors/classiq.png b/docs/en/docs/img/sponsors/classiq.png new file mode 100644 index 0000000000000000000000000000000000000000..189c6bbe8a4ad558391ae4b54412c8c9ed09f65b GIT binary patch literal 6286 zcmcIp_cI(|x7Jtho!DTNh_Xr&y?3Gut9MpgEqYs`*C2ZDMDLv-dh~=KI;#W`WwFZ5 zcjx{AcjnIh;k0+o%z0+cob%2+Cq_#{i3pz_9}NwSNJUv*=b!!aPi$~;{^^e5-qC*s z&rKQPiH1f%@gG4)%g&|!_lWMPqa=$~H_dqXFTk>wc`Jj4)|fxZ1DZlC@lOV-mFEMX>RD$Saw#mw)9h~qEor!K&{T)W{14sTugD6%G;Ra(lt`` zutpOlHXTR#+80zGZq=v}1v1hc+S2JCzJ@+8R4mj6%OZkZk+)Y5zcvESkn6A_)EvV2 z>R@B_)PGuHQUWmtc3iBaF45xr8=dZ|SfsT}Ju!f|K(O>^2VAa{Cc~v zC^)rzLI3T~NAowBk(X{uBtTKSHrV4@4dgZp^004jw{gnXOzFg~A^J_d=TA$qQ~%?h zhJkCZ+v=~O*y*MIps^amzcE!*BY8`!>K%U=PWg6lXfsZ7`oU^6r{BaCC2g1@lYT=H z#qHfAhVC_i4;0Ohd2(5ku&!M~!PB*oYXTl`;(h%$fXkp79?#s8jQj}q(02~NOPxu6 z&A3Saz(rnAC1@6kdnyly7YMk7X8B(Y41z$G5p2a71#5ZP(RE$WhR(nH%nD1ccZm1; zWPap^flPr=^|@Cg7Zp!kU-jb9MD_Xl)*<{(b%yo~6z8y^f} z=W*>u<=D-$J>VmF(g$JrP3!6J7i|<)_>x87z!<%~qq}-rDcSTq*`W2a1iUra zw|{fKQ?3(;0LTd>P!Wb4n-1wntafYqcn&4a2teG*zB`wjNet-4?u<5nL(fh#7S<7{ zPr5kS_L|W}=v}(L^Xec9yuaaBa`@F{YpkZ#pDam8-lmhX!jkgFQJMsJKT%_JUJ>SX z0xjq)JoHjamWa*YF`f9bKOURTMf(B|3}gH#1fe32x$^V8?y_ts$K`SSwGwW3Tt0M) zjMna*Y9B$qSaXv6^Qkq;_`3=94#+Ocf=zF6Tl#kOb5qb=(y_qVNonpzR zb^sL7fkMsFc^;Qlm+IGUe|l?6h5S8ao5_=?t}rfTYE0?KKXAjTlNb2X1GYi=m9Xv# ziycnn6qk)}BcucffE%{iB#)g3clQ8Ea4O%4efh&5ZY6p3mEXXJ^{P^Cp*>t7`8cTQ zgHx@odNw_*S{RXRyIn@-tn>x!WDsR|f6sK$@{Fc`BRujNjFb}m0j+2bY5Dnk*#q=l zmeEmw(r>kWU|bDS zbgv03qinbf$sG2IC+}!_!(ViI9CGMq3GB^o5eD|9dWU?MJbxj2B*uwVlL>YkGXcA% z3BldXeVy&`WX4dFCtTgGC(IXT%}SXSh*R)t&2Cx39xZ?MRU3}3(`>y*A{FS8{1|Pb z&y7-Q#;wli5vsC*48AGL3R<;WaCVUpqNVHhxVkzro!SkM5qcjEvHr$k2rMKnDNY?jBYYvz%6#35|CCszM`jNqNuaaA`e=McI07eSYwsF^x z7qhM$chfc8H{x!6U?CdAS7c{xQg-n}*F5HWJf_JOl{-3pX+$0DaRKy)#tv@2Rkc&4 z$WDD0MrT24$;Rde>4=j;m(0-I61G{A#Sruzsq3}%EW~pj(Oh_jv7J@@3{f

#8&X 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 Rf9C@<6$K6XI$4Xb{{s5EMvMRe literal 0 HcmV?d00001 diff --git a/docs/en/overrides/main.html b/docs/en/overrides/main.html index 5255bfd9b..1c09405e5 100644 --- a/docs/en/overrides/main.html +++ b/docs/en/overrides/main.html @@ -58,6 +58,12 @@ +

{% endblock %} From fab2a765de051380e94db4dd5748c6ec96759853 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 10 Mar 2022 02:30:13 +0000 Subject: [PATCH 02/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index d8df7a622..136c708c1 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🔧 Add Classiq sponsor. PR [#4671](https://github.com/tiangolo/fastapi/pull/4671) by [@tiangolo](https://github.com/tiangolo). * 📝 Add Jina's QA Bot to the docs to help people that want to ask quick questions. PR [#4655](https://github.com/tiangolo/fastapi/pull/4655) by [@tiangolo](https://github.com/tiangolo) based on original PR [#4626](https://github.com/tiangolo/fastapi/pull/4626) by [@hanxiao](https://github.com/hanxiao). ## 0.75.0 From cf8b40e660ad60f7febec7ea4fc7e1a79493ecb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Tue, 15 Mar 2022 10:47:36 -0500 Subject: [PATCH 03/42] =?UTF-8?q?=F0=9F=94=A7=20Update=20Classiq=20sponsor?= =?UTF-8?q?=20links=20(#4688)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/en/data/sponsors.yml | 2 +- docs/en/overrides/main.html | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5ed443ad1..0fb25cc7e 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ The key features are: - + diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index cc9201fbe..65a114584 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -11,7 +11,7 @@ gold: - url: https://striveworks.us/careers?utm_source=fastapi&utm_medium=sponsor_banner&utm_campaign=feb_march#openings title: https://striveworks.us/careers img: https://fastapi.tiangolo.com/img/sponsors/striveworks.png - - url: https://www.classiq.io/careers + - url: https://classiq.link/n4s title: Join the team building a new SaaS platform that will change the computing world img: https://fastapi.tiangolo.com/img/sponsors/classiq.png silver: diff --git a/docs/en/overrides/main.html b/docs/en/overrides/main.html index 1c09405e5..83c26e72a 100644 --- a/docs/en/overrides/main.html +++ b/docs/en/overrides/main.html @@ -59,7 +59,7 @@
- + From 6125dc72cdf245573b3eb2cba66ed8d1e52ba2cd Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 15 Mar 2022 15:48:22 +0000 Subject: [PATCH 04/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 136c708c1..b7ccd67f6 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🔧 Update Classiq sponsor links. PR [#4688](https://github.com/tiangolo/fastapi/pull/4688) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add Classiq sponsor. PR [#4671](https://github.com/tiangolo/fastapi/pull/4671) by [@tiangolo](https://github.com/tiangolo). * 📝 Add Jina's QA Bot to the docs to help people that want to ask quick questions. PR [#4655](https://github.com/tiangolo/fastapi/pull/4655) by [@tiangolo](https://github.com/tiangolo) based on original PR [#4626](https://github.com/tiangolo/fastapi/pull/4626) by [@hanxiao](https://github.com/hanxiao). From d3eb78709030650f24f5e31730f47591d6cef4cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 17 Mar 2022 13:36:21 -0500 Subject: [PATCH 05/42] =?UTF-8?q?=F0=9F=90=9B=20Fix=20FastAPI=20People=20g?= =?UTF-8?q?eneration=20to=20include=20missing=20file=20in=20commit=20(#469?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/people/app/main.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/.github/actions/people/app/main.py b/.github/actions/people/app/main.py index dc0bbc4c0..0b6ff4063 100644 --- a/.github/actions/people/app/main.py +++ b/.github/actions/people/app/main.py @@ -501,9 +501,16 @@ if __name__ == "__main__": github_sponsors_path = Path("./docs/en/data/github_sponsors.yml") people_old_content = people_path.read_text(encoding="utf-8") github_sponsors_old_content = github_sponsors_path.read_text(encoding="utf-8") - new_people_content = yaml.dump(people, sort_keys=False, width=200, allow_unicode=True) - new_github_sponsors_content = yaml.dump(github_sponsors, sort_keys=False, width=200, allow_unicode=True) - if people_old_content == new_people_content and github_sponsors_old_content == new_github_sponsors_content: + new_people_content = yaml.dump( + people, sort_keys=False, width=200, allow_unicode=True + ) + new_github_sponsors_content = yaml.dump( + github_sponsors, sort_keys=False, width=200, allow_unicode=True + ) + if ( + people_old_content == new_people_content + and github_sponsors_old_content == new_github_sponsors_content + ): logging.info("The FastAPI People data hasn't changed, finishing.") sys.exit(0) people_path.write_text(new_people_content, encoding="utf-8") @@ -517,7 +524,9 @@ if __name__ == "__main__": logging.info(f"Creating a new branch {branch_name}") subprocess.run(["git", "checkout", "-b", branch_name], check=True) logging.info("Adding updated file") - subprocess.run(["git", "add", str(people_path)], check=True) + subprocess.run( + ["git", "add", str(people_path), str(github_sponsors_path)], check=True + ) logging.info("Committing updated file") message = "👥 Update FastAPI People" result = subprocess.run(["git", "commit", "-m", message], check=True) From fd6ce6739231b4c00fb44c956ff761d6a32ad13c Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Mar 2022 18:36:57 +0000 Subject: [PATCH 06/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index b7ccd67f6..bbe6ce221 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🐛 Fix FastAPI People generation to include missing file in commit. PR [#4695](https://github.com/tiangolo/fastapi/pull/4695) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update Classiq sponsor links. PR [#4688](https://github.com/tiangolo/fastapi/pull/4688) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add Classiq sponsor. PR [#4671](https://github.com/tiangolo/fastapi/pull/4671) by [@tiangolo](https://github.com/tiangolo). * 📝 Add Jina's QA Bot to the docs to help people that want to ask quick questions. PR [#4655](https://github.com/tiangolo/fastapi/pull/4655) by [@tiangolo](https://github.com/tiangolo) based on original PR [#4626](https://github.com/tiangolo/fastapi/pull/4626) by [@hanxiao](https://github.com/hanxiao). From 7982aa514313eb7ee7cfecc71efba5a43cd43bc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Mar 2022 15:19:43 -0500 Subject: [PATCH 07/42] =?UTF-8?q?=F0=9F=91=A5=20Update=20FastAPI=20People?= =?UTF-8?q?=20(#4699)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions --- docs/en/data/github_sponsors.yml | 427 +++++++++++++++++++++---------- docs/en/data/people.yml | 182 +++++++------ 2 files changed, 377 insertions(+), 232 deletions(-) diff --git a/docs/en/data/github_sponsors.yml b/docs/en/data/github_sponsors.yml index 162a8dbe2..1d8dc9984 100644 --- a/docs/en/data/github_sponsors.yml +++ b/docs/en/data/github_sponsors.yml @@ -1,67 +1,115 @@ sponsors: -- - login: jina-ai +- - login: cryptapi + avatarUrl: https://avatars.githubusercontent.com/u/44925437?u=61369138589bc7fee6c417f3fbd50fbd38286cc4&v=4 + url: https://github.com/cryptapi + - login: jina-ai avatarUrl: https://avatars.githubusercontent.com/u/60539444?v=4 url: https://github.com/jina-ai +- - login: InesIvanova + avatarUrl: https://avatars.githubusercontent.com/u/22920417?u=409882ec1df6dbd77455788bb383a8de223dbf6f&v=4 + url: https://github.com/InesIvanova +- - login: chaserowbotham + avatarUrl: https://avatars.githubusercontent.com/u/97751084?v=4 + url: https://github.com/chaserowbotham - - login: mikeckennedy - avatarUrl: https://avatars.githubusercontent.com/u/2035561?v=4 + avatarUrl: https://avatars.githubusercontent.com/u/2035561?u=1bb18268bcd4d9249e1f783a063c27df9a84c05b&v=4 url: https://github.com/mikeckennedy - - login: RodneyU215 - avatarUrl: https://avatars.githubusercontent.com/u/3329665?u=ec6a9adf8e7e8e306eed7d49687c398608d1604f&v=4 - url: https://github.com/RodneyU215 - login: Trivie avatarUrl: https://avatars.githubusercontent.com/u/8161763?v=4 url: https://github.com/Trivie - login: deta avatarUrl: https://avatars.githubusercontent.com/u/47275976?v=4 url: https://github.com/deta + - login: deepset-ai + avatarUrl: https://avatars.githubusercontent.com/u/51827949?v=4 + url: https://github.com/deepset-ai - login: investsuite avatarUrl: https://avatars.githubusercontent.com/u/73833632?v=4 url: https://github.com/investsuite - - login: vimsoHQ - avatarUrl: https://avatars.githubusercontent.com/u/77627231?v=4 - url: https://github.com/vimsoHQ -- - login: newrelic - avatarUrl: https://avatars.githubusercontent.com/u/31739?v=4 - url: https://github.com/newrelic - - login: qaas +- - login: qaas avatarUrl: https://avatars.githubusercontent.com/u/8503759?u=10a6b4391ad6ab4cf9487ce54e3fcb61322d1efc&v=4 url: https://github.com/qaas -- - login: johnadjei + - login: xoflare + avatarUrl: https://avatars.githubusercontent.com/u/74335107?v=4 + url: https://github.com/xoflare + - login: Striveworks + avatarUrl: https://avatars.githubusercontent.com/u/45523576?v=4 + url: https://github.com/Striveworks + - login: BoostryJP + avatarUrl: https://avatars.githubusercontent.com/u/57932412?v=4 + url: https://github.com/BoostryJP +- - login: bolau + avatarUrl: https://avatars.githubusercontent.com/u/488733?u=902c9f9b85db0e21aca11bf30d904ee8e87fffef&v=4 + url: https://github.com/bolau + - login: johnadjei avatarUrl: https://avatars.githubusercontent.com/u/767860?v=4 url: https://github.com/johnadjei + - login: HiredScore + avatarUrl: https://avatars.githubusercontent.com/u/3908850?v=4 + url: https://github.com/HiredScore - login: wdwinslow avatarUrl: https://avatars.githubusercontent.com/u/11562137?u=dc01daafb354135603a263729e3d26d939c0c452&v=4 url: https://github.com/wdwinslow -- - login: kamalgill - avatarUrl: https://avatars.githubusercontent.com/u/133923?u=0df9181d97436ce330e9acf90ab8a54b7022efe7&v=4 - url: https://github.com/kamalgill +- - login: orvad + avatarUrl: https://avatars.githubusercontent.com/u/7700522?v=4 + url: https://github.com/orvad +- - login: moellenbeck + avatarUrl: https://avatars.githubusercontent.com/u/169372?v=4 + url: https://github.com/moellenbeck + - login: RodneyU215 + avatarUrl: https://avatars.githubusercontent.com/u/3329665?u=ec6a9adf8e7e8e306eed7d49687c398608d1604f&v=4 + url: https://github.com/RodneyU215 - login: grillazz avatarUrl: https://avatars.githubusercontent.com/u/3415861?u=16d7d0ffa5dfb99f8834f8f76d90e138ba09b94a&v=4 url: https://github.com/grillazz - login: tizz98 avatarUrl: https://avatars.githubusercontent.com/u/5739698?u=f095a3659e3a8e7c69ccd822696990b521ea25f9&v=4 url: https://github.com/tizz98 + - login: mntolia + avatarUrl: https://avatars.githubusercontent.com/u/10390224?v=4 + url: https://github.com/mntolia - login: jmaralc avatarUrl: https://avatars.githubusercontent.com/u/21101214?u=b15a9f07b7cbf6c9dcdbcb6550bbd2c52f55aa50&v=4 url: https://github.com/jmaralc - - login: AlexandruSimion - avatarUrl: https://avatars.githubusercontent.com/u/71321732?v=4 - url: https://github.com/AlexandruSimion + - login: Filimoa + avatarUrl: https://avatars.githubusercontent.com/u/21352040?u=75e02d102d2ee3e3d793e555fa5c63045913ccb0&v=4 + url: https://github.com/Filimoa + - login: marutoraman + avatarUrl: https://avatars.githubusercontent.com/u/33813153?v=4 + url: https://github.com/marutoraman + - login: mainframeindustries + avatarUrl: https://avatars.githubusercontent.com/u/55092103?v=4 + url: https://github.com/mainframeindustries + - login: A-Edge + avatarUrl: https://avatars.githubusercontent.com/u/59514131?v=4 + url: https://github.com/A-Edge - - login: samuelcolvin avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=807390ba9cfe23906c3bf8a0d56aaca3cf2bfa0d&v=4 url: https://github.com/samuelcolvin - login: jokull avatarUrl: https://avatars.githubusercontent.com/u/701?u=0532b62166893d5160ef795c4c8b7512d971af05&v=4 url: https://github.com/jokull + - login: jefftriplett + avatarUrl: https://avatars.githubusercontent.com/u/50527?u=af1ddfd50f6afd6d99f333ba2ac8d0a5b245ea74&v=4 + url: https://github.com/jefftriplett + - login: kamalgill + avatarUrl: https://avatars.githubusercontent.com/u/133923?u=0df9181d97436ce330e9acf90ab8a54b7022efe7&v=4 + url: https://github.com/kamalgill + - login: jsutton + avatarUrl: https://avatars.githubusercontent.com/u/280777?v=4 + url: https://github.com/jsutton + - login: deserat + avatarUrl: https://avatars.githubusercontent.com/u/299332?v=4 + url: https://github.com/deserat + - login: ericof + avatarUrl: https://avatars.githubusercontent.com/u/306014?u=cf7c8733620397e6584a451505581c01c5d842d7&v=4 + url: https://github.com/ericof - login: wshayes avatarUrl: https://avatars.githubusercontent.com/u/365303?u=07ca03c5ee811eb0920e633cc3c3db73dbec1aa5&v=4 url: https://github.com/wshayes - login: koxudaxi avatarUrl: https://avatars.githubusercontent.com/u/630670?u=507d8577b4b3670546b449c4c2ccbc5af40d72f7&v=4 url: https://github.com/koxudaxi - - login: falkben - avatarUrl: https://avatars.githubusercontent.com/u/653031?u=0c8d8f33d87f1aa1a6488d3f02105e9abc838105&v=4 - url: https://github.com/falkben - login: jqueguiner avatarUrl: https://avatars.githubusercontent.com/u/690878?u=e4835b2a985a0f2d52018e4926cb5a58c26a62e8&v=4 url: https://github.com/jqueguiner @@ -71,18 +119,15 @@ sponsors: - login: ltieman avatarUrl: https://avatars.githubusercontent.com/u/1084689?u=e69b17de17cb3ca141a17daa7ccbe173ceb1eb17&v=4 url: https://github.com/ltieman - - login: mrmattwright - avatarUrl: https://avatars.githubusercontent.com/u/1277725?v=4 - url: https://github.com/mrmattwright - login: westonsteimel avatarUrl: https://avatars.githubusercontent.com/u/1593939?u=0f2c0e3647f916fe295d62fa70da7a4c177115e3&v=4 url: https://github.com/westonsteimel - login: timdrijvers avatarUrl: https://avatars.githubusercontent.com/u/1694939?v=4 url: https://github.com/timdrijvers - - login: mrgnw - avatarUrl: https://avatars.githubusercontent.com/u/2504532?u=7ec43837a6d0afa80f96f0788744ea6341b89f97&v=4 - url: https://github.com/mrgnw + - login: corleyma + avatarUrl: https://avatars.githubusercontent.com/u/2080732?u=aed2ff652294a87d666b1c3f6dbe98104db76d26&v=4 + url: https://github.com/corleyma - login: madisonmay avatarUrl: https://avatars.githubusercontent.com/u/2645393?u=f22b93c6ea345a4d26a90a3834dfc7f0789fcb63&v=4 url: https://github.com/madisonmay @@ -93,32 +138,50 @@ sponsors: avatarUrl: https://avatars.githubusercontent.com/u/3148093?v=4 url: https://github.com/andre1sk - login: Shark009 - avatarUrl: https://avatars.githubusercontent.com/u/3163309?v=4 + avatarUrl: https://avatars.githubusercontent.com/u/3163309?u=0c6f4091b0eda05c44c390466199826e6dc6e431&v=4 url: https://github.com/Shark009 + - login: dblackrun + avatarUrl: https://avatars.githubusercontent.com/u/3528486?v=4 + url: https://github.com/dblackrun + - login: zsinx6 + avatarUrl: https://avatars.githubusercontent.com/u/3532625?u=ba75a5dc744d1116ccfeaaf30d41cb2fe81fe8dd&v=4 + url: https://github.com/zsinx6 + - login: anomaly + avatarUrl: https://avatars.githubusercontent.com/u/3654837?v=4 + url: https://github.com/anomaly - login: peterHoburg avatarUrl: https://avatars.githubusercontent.com/u/3860655?u=f55f47eb2d6a9b495e806ac5a044e3ae01ccc1fa&v=4 url: https://github.com/peterHoburg - login: jaredtrog avatarUrl: https://avatars.githubusercontent.com/u/4381365?v=4 url: https://github.com/jaredtrog + - login: oliverxchen + avatarUrl: https://avatars.githubusercontent.com/u/4471774?u=534191f25e32eeaadda22dfab4b0a428733d5489&v=4 + url: https://github.com/oliverxchen - login: CINOAdam - avatarUrl: https://avatars.githubusercontent.com/u/4728508?u=34c3d58cb900fed475d0172b436c66a94ad739ed&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/4728508?u=76ef23f06ae7c604e009873bc27cf0ea9ba738c9&v=4 url: https://github.com/CINOAdam - - login: dudil - avatarUrl: https://avatars.githubusercontent.com/u/4785835?u=58b7ea39123e0507f3b2996448a27256b16fd697&v=4 - url: https://github.com/dudil + - login: ScrimForever + avatarUrl: https://avatars.githubusercontent.com/u/5040124?u=091ec38bfe16d6e762099e91309b59f248616a65&v=4 + url: https://github.com/ScrimForever - login: ennui93 avatarUrl: https://avatars.githubusercontent.com/u/5300907?u=5b5452725ddb391b2caaebf34e05aba873591c3a&v=4 url: https://github.com/ennui93 - login: MacroPower avatarUrl: https://avatars.githubusercontent.com/u/5648814?u=e13991efd1e03c44c911f919872e750530ded633&v=4 url: https://github.com/MacroPower - - login: ginomempin - avatarUrl: https://avatars.githubusercontent.com/u/6091865?v=4 - url: https://github.com/ginomempin + - login: Yaleesa + avatarUrl: https://avatars.githubusercontent.com/u/6135475?v=4 + url: https://github.com/Yaleesa - login: iwpnd avatarUrl: https://avatars.githubusercontent.com/u/6152183?u=b2286006daafff5f991557344fee20b5da59639a&v=4 url: https://github.com/iwpnd + - login: simw + avatarUrl: https://avatars.githubusercontent.com/u/6322526?v=4 + url: https://github.com/simw + - login: pkucmus + avatarUrl: https://avatars.githubusercontent.com/u/6347418?u=98f5918b32e214a168a2f5d59b0b8ebdf57dca0d&v=4 + url: https://github.com/pkucmus - login: s3ich4n avatarUrl: https://avatars.githubusercontent.com/u/6926298?u=ba3025d698e1c986655e776ae383a3d60d9d578e&v=4 url: https://github.com/s3ich4n @@ -126,116 +189,158 @@ sponsors: avatarUrl: https://avatars.githubusercontent.com/u/7015688?u=3afb0ba200feebbc7f958950e92db34df2a3c172&v=4 url: https://github.com/Rehket - login: christippett - avatarUrl: https://avatars.githubusercontent.com/u/7218120?u=434b9d29287d7de25772d94ddc74a9bd6d969284&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/7218120?u=f21f93b9c14edefef75645bf4d64c819b7d4afd7&v=4 url: https://github.com/christippett + - login: hiancdtrsnm + avatarUrl: https://avatars.githubusercontent.com/u/7343177?v=4 + url: https://github.com/hiancdtrsnm - login: Kludex - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=cf8455cb899806b774a3a71073f88583adec99f6&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 url: https://github.com/Kludex - login: Shackelford-Arden avatarUrl: https://avatars.githubusercontent.com/u/7362263?v=4 url: https://github.com/Shackelford-Arden - - login: cristeaadrian - avatarUrl: https://avatars.githubusercontent.com/u/9112724?v=4 - url: https://github.com/cristeaadrian - - login: otivvormes - avatarUrl: https://avatars.githubusercontent.com/u/11317418?u=6de1edefb6afd0108c0ad2816bd6efc4464a9c44&v=4 - url: https://github.com/otivvormes - - login: iambobmae - avatarUrl: https://avatars.githubusercontent.com/u/12390270?u=c9a35c2ee5092a9b4135ebb1f91b7f521c467031&v=4 - url: https://github.com/iambobmae - - login: ronaldnwilliams - avatarUrl: https://avatars.githubusercontent.com/u/13632749?u=ac41a086d0728bf66a9d2bee9e5e377041ff44a4&v=4 - url: https://github.com/ronaldnwilliams + - login: Vikka + avatarUrl: https://avatars.githubusercontent.com/u/9381120?u=4bfc7032a824d1ed1994aa8256dfa597c8f187ad&v=4 + url: https://github.com/Vikka + - login: Ge0f3 + avatarUrl: https://avatars.githubusercontent.com/u/11887760?u=ccd80f1ac36dcb8517ef5c4e702e8cc5a80cad2f&v=4 + url: https://github.com/Ge0f3 + - login: gokulyc + avatarUrl: https://avatars.githubusercontent.com/u/13468848?u=269f269d3e70407b5fb80138c52daba7af783997&v=4 + url: https://github.com/gokulyc + - login: dannywade + avatarUrl: https://avatars.githubusercontent.com/u/13680237?u=418ee985bd41577b20fde81417fb2d901e875e8a&v=4 + url: https://github.com/dannywade - login: pablonnaoji avatarUrl: https://avatars.githubusercontent.com/u/15187159?u=afc15bd5a4ba9c5c7206bbb1bcaeef606a0932e0&v=4 url: https://github.com/pablonnaoji - - login: natenka - avatarUrl: https://avatars.githubusercontent.com/u/15850513?u=00d1083c980d0b4ce32835dc07eee7f43f34fd2f&v=4 - url: https://github.com/natenka - - login: la-mar - avatarUrl: https://avatars.githubusercontent.com/u/16618300?u=7755c0521d2bb0d704f35a51464b15c1e2e6c4da&v=4 - url: https://github.com/la-mar - login: robintully avatarUrl: https://avatars.githubusercontent.com/u/17059673?u=862b9bb01513f5acd30df97433cb97a24dbfb772&v=4 url: https://github.com/robintully - - login: ShaulAb - avatarUrl: https://avatars.githubusercontent.com/u/18129076?u=2c8d48e47f2dbee15c3f89c3d17d4c356504386c&v=4 - url: https://github.com/ShaulAb + - login: tobiasfeil + avatarUrl: https://avatars.githubusercontent.com/u/17533713?u=bc6b0bec46f342d13c41695db90685d1c58d534e&v=4 + url: https://github.com/tobiasfeil - login: wedwardbeck avatarUrl: https://avatars.githubusercontent.com/u/19333237?u=1de4ae2bf8d59eb4c013f21d863cbe0f2010575f&v=4 url: https://github.com/wedwardbeck - login: linusg avatarUrl: https://avatars.githubusercontent.com/u/19366641?u=125e390abef8fff3b3b0d370c369cba5d7fd4c67&v=4 url: https://github.com/linusg + - login: stradivari96 + avatarUrl: https://avatars.githubusercontent.com/u/19752586?u=255f5f06a768f518b20cebd6963e840ac49294fd&v=4 + url: https://github.com/stradivari96 - login: RedCarpetUp avatarUrl: https://avatars.githubusercontent.com/u/20360440?v=4 url: https://github.com/RedCarpetUp - - login: Filimoa - avatarUrl: https://avatars.githubusercontent.com/u/21352040?u=75e02d102d2ee3e3d793e555fa5c63045913ccb0&v=4 - url: https://github.com/Filimoa - - login: raminsj13 - avatarUrl: https://avatars.githubusercontent.com/u/24259406?u=d51f2a526312ebba150a06936ed187ca0727d329&v=4 - url: https://github.com/raminsj13 + - login: shuheng-liu + avatarUrl: https://avatars.githubusercontent.com/u/22414322?u=813c45f30786c6b511b21a661def025d8f7b609e&v=4 + url: https://github.com/shuheng-liu - login: comoelcometa avatarUrl: https://avatars.githubusercontent.com/u/25950317?u=c6751efa038561b9bc5fa56d1033d5174e10cd65&v=4 url: https://github.com/comoelcometa + - login: LarryGF + avatarUrl: https://avatars.githubusercontent.com/u/26148349?u=431bb34d36d41c172466252242175281ae132152&v=4 + url: https://github.com/LarryGF - login: veprimk avatarUrl: https://avatars.githubusercontent.com/u/29689749?u=f8cb5a15a286e522e5b189bc572d5a1a90217fb2&v=4 url: https://github.com/veprimk - login: orihomie avatarUrl: https://avatars.githubusercontent.com/u/29889683?u=6bc2135a52fcb3a49e69e7d50190796618185fda&v=4 url: https://github.com/orihomie - - login: SaltyCoco - avatarUrl: https://avatars.githubusercontent.com/u/31451104?u=6ee4e17c07d21b7054f54a12fa9cc377a1b24ff9&v=4 - url: https://github.com/SaltyCoco + - login: meysam81 + avatarUrl: https://avatars.githubusercontent.com/u/30233243?u=64dc9fc62d039892c6fb44d804251cad5537132b&v=4 + url: https://github.com/meysam81 - login: mauroalejandrojm avatarUrl: https://avatars.githubusercontent.com/u/31569442?u=cdada990a1527926a36e95f62c30a8b48bbc49a1&v=4 url: https://github.com/mauroalejandrojm - - login: bulkw4r3 - avatarUrl: https://avatars.githubusercontent.com/u/35562532?u=0b812a14a02de14bf73d05fb2b2760a67bacffc2&v=4 - url: https://github.com/bulkw4r3 + - login: Leay15 + avatarUrl: https://avatars.githubusercontent.com/u/32212558?u=c4aa9c1737e515959382a5515381757b1fd86c53&v=4 + url: https://github.com/Leay15 + - login: AlrasheedA + avatarUrl: https://avatars.githubusercontent.com/u/33544979?u=7fe66bf62b47682612b222e3e8f4795ef3be769b&v=4 + url: https://github.com/AlrasheedA + - login: ProteinQure + avatarUrl: https://avatars.githubusercontent.com/u/33707203?v=4 + url: https://github.com/ProteinQure + - login: guligon90 + avatarUrl: https://avatars.githubusercontent.com/u/35070513?u=b48c05f669d1ea1d329f90dc70e45f10b569ef55&v=4 + url: https://github.com/guligon90 - login: ybressler avatarUrl: https://avatars.githubusercontent.com/u/40807730?u=6621dc9ab53b697912ab2a32211bb29ae90a9112&v=4 url: https://github.com/ybressler - login: dbanty - avatarUrl: https://avatars.githubusercontent.com/u/43723790?u=0cf33e4f40efc2ea206a1189fd63a11344eb88ed&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/43723790?u=9bcce836bbce55835291c5b2ac93a4e311f4b3c3&v=4 url: https://github.com/dbanty + - login: rafsaf + avatarUrl: https://avatars.githubusercontent.com/u/51059348?u=be9f06b8ced2d2b677297decc781fa8ce4f7ddbd&v=4 + url: https://github.com/rafsaf - login: dudikbender avatarUrl: https://avatars.githubusercontent.com/u/53487583?u=494f85229115076121b3639a3806bbac1c6ae7f6&v=4 url: https://github.com/dudikbender + - login: jorge4larcon + avatarUrl: https://avatars.githubusercontent.com/u/54189123?v=4 + url: https://github.com/jorge4larcon + - login: daisuke8000 + avatarUrl: https://avatars.githubusercontent.com/u/55035595?u=5025e379cd3655ae1a96039efc85223a873d2e38&v=4 + url: https://github.com/daisuke8000 - login: primer-io avatarUrl: https://avatars.githubusercontent.com/u/62146168?v=4 url: https://github.com/primer-io - - login: tkrestiankova - avatarUrl: https://avatars.githubusercontent.com/u/67013045?v=4 - url: https://github.com/tkrestiankova + - login: around + avatarUrl: https://avatars.githubusercontent.com/u/62425723?v=4 + url: https://github.com/around + - login: predictionmachine + avatarUrl: https://avatars.githubusercontent.com/u/63719559?v=4 + url: https://github.com/predictionmachine - login: daverin avatarUrl: https://avatars.githubusercontent.com/u/70378377?u=6d1814195c0de7162820eaad95a25b423a3869c0&v=4 url: https://github.com/daverin - login: anthonycepeda avatarUrl: https://avatars.githubusercontent.com/u/72019805?u=892f700c79f9732211bd5221bf16eec32356a732&v=4 url: https://github.com/anthonycepeda - - login: an-tho-ny - avatarUrl: https://avatars.githubusercontent.com/u/74874159?v=4 - url: https://github.com/an-tho-ny + - login: abdurrahim84 + avatarUrl: https://avatars.githubusercontent.com/u/79488613?v=4 + url: https://github.com/abdurrahim84 + - login: NinaHwang + avatarUrl: https://avatars.githubusercontent.com/u/79563565?u=1741703bd6c8f491503354b363a86e879b4c1cab&v=4 + url: https://github.com/NinaHwang + - login: dotlas + avatarUrl: https://avatars.githubusercontent.com/u/88832003?v=4 + url: https://github.com/dotlas + - login: pyt3h + avatarUrl: https://avatars.githubusercontent.com/u/99658549?v=4 + url: https://github.com/pyt3h +- - login: '837477' + avatarUrl: https://avatars.githubusercontent.com/u/37999795?u=543b0bd0e8f283db0fc50754e5d13f6afba8cbea&v=4 + url: https://github.com/837477 + - login: naheedroomy + avatarUrl: https://avatars.githubusercontent.com/u/46345736?v=4 + url: https://github.com/naheedroomy - - login: linux-china avatarUrl: https://avatars.githubusercontent.com/u/46711?v=4 url: https://github.com/linux-china + - login: ddanier + avatarUrl: https://avatars.githubusercontent.com/u/113563?v=4 + url: https://github.com/ddanier - login: jhb avatarUrl: https://avatars.githubusercontent.com/u/142217?v=4 url: https://github.com/jhb + - login: justinrmiller + avatarUrl: https://avatars.githubusercontent.com/u/143998?u=b507a940394d4fc2bc1c27cea2ca9c22538874bd&v=4 + url: https://github.com/justinrmiller + - login: bryanculbertson + avatarUrl: https://avatars.githubusercontent.com/u/144028?u=defda4f90e93429221cc667500944abde60ebe4a&v=4 + url: https://github.com/bryanculbertson - login: yourkin - avatarUrl: https://avatars.githubusercontent.com/u/178984?v=4 + avatarUrl: https://avatars.githubusercontent.com/u/178984?u=163b8c6d9b2d240164ade467cbc9efb16d2432e4&v=4 url: https://github.com/yourkin - - login: jmagnusson - avatarUrl: https://avatars.githubusercontent.com/u/190835?v=4 - url: https://github.com/jmagnusson - - login: sakti - avatarUrl: https://avatars.githubusercontent.com/u/196178?u=0110be74c4270244546f1b610334042cd16bb8ad&v=4 - url: https://github.com/sakti - login: slafs avatarUrl: https://avatars.githubusercontent.com/u/210173?v=4 url: https://github.com/slafs + - login: assem-ch + avatarUrl: https://avatars.githubusercontent.com/u/315228?u=e0c5ab30726d3243a40974bb9bae327866e42d9b&v=4 + url: https://github.com/assem-ch - login: adamghill avatarUrl: https://avatars.githubusercontent.com/u/317045?u=f1349d5ffe84a19f324e204777859fbf69ddf633&v=4 url: https://github.com/adamghill @@ -245,21 +350,33 @@ sponsors: - login: dmig avatarUrl: https://avatars.githubusercontent.com/u/388564?v=4 url: https://github.com/dmig - - login: hongqn - avatarUrl: https://avatars.githubusercontent.com/u/405587?u=470b4c04832e45141fd5264d3354845cc9fc6466&v=4 - url: https://github.com/hongqn - login: rinckd avatarUrl: https://avatars.githubusercontent.com/u/546002?u=1fcc7e664dc86524a0af6837a0c222829c3fd4e5&v=4 url: https://github.com/rinckd + - login: securancy + avatarUrl: https://avatars.githubusercontent.com/u/606673?v=4 + url: https://github.com/securancy + - login: falkben + avatarUrl: https://avatars.githubusercontent.com/u/653031?u=0c8d8f33d87f1aa1a6488d3f02105e9abc838105&v=4 + url: https://github.com/falkben - login: hardbyte avatarUrl: https://avatars.githubusercontent.com/u/855189?u=aa29e92f34708814d6b67fcd47ca4cf2ce1c04ed&v=4 url: https://github.com/hardbyte + - login: clstaudt + avatarUrl: https://avatars.githubusercontent.com/u/875194?u=46a92f9f837d0ba150ae0f1d91091dd2f4ebb6cc&v=4 + url: https://github.com/clstaudt + - login: scari + avatarUrl: https://avatars.githubusercontent.com/u/964251?v=4 + url: https://github.com/scari - login: Pytlicek avatarUrl: https://avatars.githubusercontent.com/u/1430522?u=169dba3bfbc04ed214a914640ff435969f19ddb3&v=4 url: https://github.com/Pytlicek - - login: okken - avatarUrl: https://avatars.githubusercontent.com/u/1568356?u=0a991a21bdc62e2bea9ad311652f2c45f453dc84&v=4 - url: https://github.com/okken + - login: Celeborn2BeAlive + avatarUrl: https://avatars.githubusercontent.com/u/1659465?u=944517e4db0f6df65070074e81cabdad9c8a434b&v=4 + url: https://github.com/Celeborn2BeAlive + - login: WillHogan + avatarUrl: https://avatars.githubusercontent.com/u/1661551?u=7036c064cf29781470573865264ec8e60b6b809f&v=4 + url: https://github.com/WillHogan - login: cbonoz avatarUrl: https://avatars.githubusercontent.com/u/2351087?u=fd3e8030b2cc9fbfbb54a65e9890c548a016f58b&v=4 url: https://github.com/cbonoz @@ -269,111 +386,147 @@ sponsors: - login: rglsk avatarUrl: https://avatars.githubusercontent.com/u/2768101?u=e349c88673f2155fe021331377c656a9d74bcc25&v=4 url: https://github.com/rglsk - - login: Atem18 - avatarUrl: https://avatars.githubusercontent.com/u/2875254?v=4 - url: https://github.com/Atem18 - login: paul121 avatarUrl: https://avatars.githubusercontent.com/u/3116995?u=6e2d8691cc345e63ee02e4eb4d7cef82b1fcbedc&v=4 url: https://github.com/paul121 - login: igorcorrea avatarUrl: https://avatars.githubusercontent.com/u/3438238?u=c57605077c31a8f7b2341fc4912507f91b4a5621&v=4 url: https://github.com/igorcorrea - - login: anthcor + - login: anthonycorletti avatarUrl: https://avatars.githubusercontent.com/u/3477132?v=4 - url: https://github.com/anthcor - - login: zsinx6 - avatarUrl: https://avatars.githubusercontent.com/u/3532625?u=ba75a5dc744d1116ccfeaaf30d41cb2fe81fe8dd&v=4 - url: https://github.com/zsinx6 + url: https://github.com/anthonycorletti - login: pawamoy avatarUrl: https://avatars.githubusercontent.com/u/3999221?u=b030e4c89df2f3a36bc4710b925bdeb6745c9856&v=4 url: https://github.com/pawamoy - - login: spyker77 - avatarUrl: https://avatars.githubusercontent.com/u/4953435?u=03c724c6f8fbab5cd6575b810c0c91c652fa4f79&v=4 - url: https://github.com/spyker77 - - login: JonasKs - avatarUrl: https://avatars.githubusercontent.com/u/5310116?u=98a049f3e1491bffb91e1feb7e93def6881a9389&v=4 - url: https://github.com/JonasKs + - login: Alisa-lisa + avatarUrl: https://avatars.githubusercontent.com/u/4137964?u=e7e393504f554f4ff15863a1e01a5746863ef9ce&v=4 + url: https://github.com/Alisa-lisa + - login: unredundant + avatarUrl: https://avatars.githubusercontent.com/u/5607577?u=57dd0023365bec03f4fc566df6b81bc0a264a47d&v=4 + url: https://github.com/unredundant + - login: Baghdady92 + avatarUrl: https://avatars.githubusercontent.com/u/5708590?v=4 + url: https://github.com/Baghdady92 - login: holec avatarUrl: https://avatars.githubusercontent.com/u/6438041?u=f5af71ec85b3a9d7b8139cb5af0512b02fa9ab1e&v=4 url: https://github.com/holec - - login: BartlomiejRasztabiga - avatarUrl: https://avatars.githubusercontent.com/u/8852711?u=ed213d60f7a423df31ceb1004aa3ec60e612cb98&v=4 - url: https://github.com/BartlomiejRasztabiga - login: davanstrien avatarUrl: https://avatars.githubusercontent.com/u/8995957?u=fb2aad2b52bb4e7b56db6d7c8ecc9ae1eac1b984&v=4 url: https://github.com/davanstrien - login: and-semakin avatarUrl: https://avatars.githubusercontent.com/u/9129071?u=ea77ddf7de4bc375d546bf2825ed420eaddb7666&v=4 url: https://github.com/and-semakin + - login: yenchenLiu + avatarUrl: https://avatars.githubusercontent.com/u/9199638?u=8cdf5ae507448430d90f6f3518d1665a23afe99b&v=4 + url: https://github.com/yenchenLiu - login: VivianSolide - avatarUrl: https://avatars.githubusercontent.com/u/9358572?u=ffb2e2ec522a15dcd3f0af1f9fd1df4afe418afa&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/9358572?u=4a38ef72dd39e8b262bd5ab819992128b55c52b4&v=4 url: https://github.com/VivianSolide + - login: xncbf + avatarUrl: https://avatars.githubusercontent.com/u/9462045?u=ded074228b35b46a76b980d2dda522e45277f96d&v=4 + url: https://github.com/xncbf + - login: DMantis + avatarUrl: https://avatars.githubusercontent.com/u/9536869?v=4 + url: https://github.com/DMantis - login: hard-coders - avatarUrl: https://avatars.githubusercontent.com/u/9651103?u=f2d3d2038c55d86d7f9348f4e6c5e30191e4ee8b&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/9651103?u=95db33927bbff1ed1c07efddeb97ac2ff33068ed&v=4 url: https://github.com/hard-coders - - login: satwikkansal - avatarUrl: https://avatars.githubusercontent.com/u/10217535?u=b12d6ef74ea297de9e46da6933b1a5b7ba9e6a61&v=4 - url: https://github.com/satwikkansal - login: pheanex avatarUrl: https://avatars.githubusercontent.com/u/10408624?u=5b6bab6ee174aa6e991333e06eb29f628741013d&v=4 url: https://github.com/pheanex - - login: wotori - avatarUrl: https://avatars.githubusercontent.com/u/10486621?u=0044c295b91694b8c9bccc0a805681f794250f7b&v=4 - url: https://github.com/wotori - login: JimFawkes avatarUrl: https://avatars.githubusercontent.com/u/12075115?u=dc58ecfd064d72887c34bf500ddfd52592509acd&v=4 url: https://github.com/JimFawkes - login: logan-connolly avatarUrl: https://avatars.githubusercontent.com/u/16244943?u=8ae66dfbba936463cc8aa0dd7a6d2b4c0cc757eb&v=4 url: https://github.com/logan-connolly - - login: iPr0ger - avatarUrl: https://avatars.githubusercontent.com/u/19322290?v=4 - url: https://github.com/iPr0ger + - login: cdsre + avatarUrl: https://avatars.githubusercontent.com/u/16945936?v=4 + url: https://github.com/cdsre + - login: jangia + avatarUrl: https://avatars.githubusercontent.com/u/17927101?u=9261b9bb0c3e3bb1ecba43e8915dc58d8c9a077e&v=4 + url: https://github.com/jangia - login: ghandic avatarUrl: https://avatars.githubusercontent.com/u/23500353?u=e2e1d736f924d9be81e8bfc565b6d8836ba99773&v=4 url: https://github.com/ghandic - - login: MoronVV - avatarUrl: https://avatars.githubusercontent.com/u/24293616?v=4 - url: https://github.com/MoronVV - login: fstau avatarUrl: https://avatars.githubusercontent.com/u/24669867?u=60e7c8c09f8dafabee8fc3edcd6f9e19abbff918&v=4 url: https://github.com/fstau - login: mertguvencli avatarUrl: https://avatars.githubusercontent.com/u/29762151?u=16a906d90df96c8cff9ea131a575c4bc171b1523&v=4 url: https://github.com/mertguvencli - - login: rgreen32 - avatarUrl: https://avatars.githubusercontent.com/u/35779241?u=c9d64ad1ab364b6a1ec8e3d859da9ca802d681d8&v=4 - url: https://github.com/rgreen32 + - login: dwreeves + avatarUrl: https://avatars.githubusercontent.com/u/31971762?u=69732aba05aa5cf0780866349ebe109cf632b047&v=4 + url: https://github.com/dwreeves + - login: kitaramu0401 + avatarUrl: https://avatars.githubusercontent.com/u/33246506?u=929e6efa2c518033b8097ba524eb5347a069bb3b&v=4 + url: https://github.com/kitaramu0401 + - login: engineerjoe440 + avatarUrl: https://avatars.githubusercontent.com/u/33275230?u=eb223cad27017bb1e936ee9b429b450d092d0236&v=4 + url: https://github.com/engineerjoe440 + - login: declon + avatarUrl: https://avatars.githubusercontent.com/u/36180226?v=4 + url: https://github.com/declon + - login: d-e-h-i-o + avatarUrl: https://avatars.githubusercontent.com/u/36816716?v=4 + url: https://github.com/d-e-h-i-o - login: askurihin avatarUrl: https://avatars.githubusercontent.com/u/37978981?v=4 url: https://github.com/askurihin - login: JitPackJoyride - avatarUrl: https://avatars.githubusercontent.com/u/40203625?u=9638bfeacfa5940358188f8205ce662bba022b53&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/40203625?u=cfad4285914e018af72a3f3c16d8ac11321201e3&v=4 url: https://github.com/JitPackJoyride - login: es3n1n - avatarUrl: https://avatars.githubusercontent.com/u/40367813?u=e881a3880f1e342d19a1ea7c8e1b6d76c52dc294&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/40367813?u=cfaaedfb5da6c2c00330f8ebb041cd39c6a6273d&v=4 url: https://github.com/es3n1n - login: ilias-ant avatarUrl: https://avatars.githubusercontent.com/u/42189572?u=a2d6121bac4d125d92ec207460fa3f1842d37e66&v=4 url: https://github.com/ilias-ant - login: arrrrrmin - avatarUrl: https://avatars.githubusercontent.com/u/43553423?u=05600727f1cfe75f440bb3fddd49bfea84b1e894&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/43553423?u=fee5739394fea074cb0b66929d070114a5067aae&v=4 url: https://github.com/arrrrrmin + - login: 4heck + avatarUrl: https://avatars.githubusercontent.com/u/45015299?u=7dfb2aca55bff66849396588828a90e090212f81&v=4 + url: https://github.com/4heck + - login: igorezersky + avatarUrl: https://avatars.githubusercontent.com/u/46680020?u=a20a595c881dbe5658c906fecc7eff125efb4fd4&v=4 + url: https://github.com/igorezersky - login: akanz1 avatarUrl: https://avatars.githubusercontent.com/u/51492342?u=2280f57134118714645e16b535c1a37adf6b369b&v=4 url: https://github.com/akanz1 -- - login: leogregianin - avatarUrl: https://avatars.githubusercontent.com/u/1684053?u=94ddd387601bd1805034dbe83e6eba0491c15323&v=4 - url: https://github.com/leogregianin + - login: rooflexx + avatarUrl: https://avatars.githubusercontent.com/u/58993673?u=f8ba450460f1aea18430ed1e4a3889049a3b4dfa&v=4 + url: https://github.com/rooflexx + - login: denisyao1 + avatarUrl: https://avatars.githubusercontent.com/u/60019356?v=4 + url: https://github.com/denisyao1 + - login: apar-tiwari + avatarUrl: https://avatars.githubusercontent.com/u/61064197?v=4 + url: https://github.com/apar-tiwari + - login: 0417taehyun + avatarUrl: https://avatars.githubusercontent.com/u/63915557?u=47debaa860fd52c9b98c97ef357ddcec3b3fb399&v=4 + url: https://github.com/0417taehyun + - login: alessio-proietti + avatarUrl: https://avatars.githubusercontent.com/u/67370599?u=8ac73db1e18e946a7681f173abdb640516f88515&v=4 + url: https://github.com/alessio-proietti +- - login: spyker77 + avatarUrl: https://avatars.githubusercontent.com/u/4953435?u=03c724c6f8fbab5cd6575b810c0c91c652fa4f79&v=4 + url: https://github.com/spyker77 + - login: backbord + avatarUrl: https://avatars.githubusercontent.com/u/6814946?v=4 + url: https://github.com/backbord - login: sadikkuzu avatarUrl: https://avatars.githubusercontent.com/u/23168063?u=765ed469c44c004560079210ccdad5b29938eaa9&v=4 url: https://github.com/sadikkuzu + - login: MoronVV + avatarUrl: https://avatars.githubusercontent.com/u/24293616?v=4 + url: https://github.com/MoronVV - login: gabrielmbmb avatarUrl: https://avatars.githubusercontent.com/u/29572918?u=92084ed7242160dee4d20aece923a10c59758ee5&v=4 url: https://github.com/gabrielmbmb - - login: starhype - avatarUrl: https://avatars.githubusercontent.com/u/36908028?u=6df41f7b62f0f673f1ecbc87e9cbadaa4fcb0767&v=4 - url: https://github.com/starhype - - login: pixel365 - avatarUrl: https://avatars.githubusercontent.com/u/53819609?u=9e0309c5420ec4624aececd3ca2d7105f7f68133&v=4 - url: https://github.com/pixel365 + - login: danburonline + avatarUrl: https://avatars.githubusercontent.com/u/34251194?u=2cad4388c1544e539ecb732d656e42fb07b4ff2d&v=4 + url: https://github.com/danburonline + - login: foryourselfand + avatarUrl: https://avatars.githubusercontent.com/u/43334967?u=8abd999f94bc0852d035b765155d5138a88288ce&v=4 + url: https://github.com/foryourselfand diff --git a/docs/en/data/people.yml b/docs/en/data/people.yml index ebbe446ee..591800a35 100644 --- a/docs/en/data/people.yml +++ b/docs/en/data/people.yml @@ -1,13 +1,13 @@ maintainers: - login: tiangolo - answers: 1237 - prs: 280 + answers: 1240 + prs: 289 avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=5cad72c846b7aba2e960546af490edc7375dafc4&v=4 url: https://github.com/tiangolo experts: - login: Kludex - count: 319 - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=3682d9b9b93bef272f379ab623dc031c8d71432e&v=4 + count: 330 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 url: https://github.com/Kludex - login: dmontagu count: 262 @@ -29,14 +29,14 @@ experts: count: 130 avatarUrl: https://avatars.githubusercontent.com/u/331403?v=4 url: https://github.com/phy25 +- login: raphaelauv + count: 71 + avatarUrl: https://avatars.githubusercontent.com/u/10202690?u=e6f86f5c0c3026a15d6b51792fa3e532b12f1371&v=4 + url: https://github.com/raphaelauv - login: ArcLightSlavik count: 71 avatarUrl: https://avatars.githubusercontent.com/u/31127044?u=81a84af39c89b898b0fbc5a04e8834f60f23e55a&v=4 url: https://github.com/ArcLightSlavik -- login: raphaelauv - count: 68 - avatarUrl: https://avatars.githubusercontent.com/u/10202690?u=e6f86f5c0c3026a15d6b51792fa3e532b12f1371&v=4 - url: https://github.com/raphaelauv - login: falkben count: 58 avatarUrl: https://avatars.githubusercontent.com/u/653031?u=0c8d8f33d87f1aa1a6488d3f02105e9abc838105&v=4 @@ -50,7 +50,7 @@ experts: avatarUrl: https://avatars.githubusercontent.com/u/16958893?u=f8be7088d5076d963984a21f95f44e559192d912&v=4 url: https://github.com/insomnes - login: Dustyposa - count: 42 + count: 43 avatarUrl: https://avatars.githubusercontent.com/u/27180793?u=5cf2877f50b3eb2bc55086089a78a36f07042889&v=4 url: https://github.com/Dustyposa - login: includeamin @@ -65,22 +65,26 @@ experts: count: 33 avatarUrl: https://avatars.githubusercontent.com/u/28061158?u=72309cc1f2e04e40fa38b29969cb4e9d3f722e7b&v=4 url: https://github.com/prostomarkeloff -- login: krishnardt +- login: frankie567 count: 31 - avatarUrl: https://avatars.githubusercontent.com/u/31960541?u=47f4829c77f4962ab437ffb7995951e41eeebe9b&v=4 - url: https://github.com/krishnardt + avatarUrl: https://avatars.githubusercontent.com/u/1144727?u=85c025e3fcc7bd79a5665c63ee87cdf8aae13374&v=4 + url: https://github.com/frankie567 - login: adriangb - count: 30 + count: 31 avatarUrl: https://avatars.githubusercontent.com/u/1755071?u=81f0262df34e1460ca546fbd0c211169c2478532&v=4 url: https://github.com/adriangb +- login: krishnardt + count: 31 + avatarUrl: https://avatars.githubusercontent.com/u/31960541?u=47f4829c77f4962ab437ffb7995951e41eeebe9b&v=4 + url: https://github.com/krishnardt - login: wshayes count: 29 avatarUrl: https://avatars.githubusercontent.com/u/365303?u=07ca03c5ee811eb0920e633cc3c3db73dbec1aa5&v=4 url: https://github.com/wshayes -- login: frankie567 - count: 29 - avatarUrl: https://avatars.githubusercontent.com/u/1144727?u=85c025e3fcc7bd79a5665c63ee87cdf8aae13374&v=4 - url: https://github.com/frankie567 +- login: panla + count: 26 + avatarUrl: https://avatars.githubusercontent.com/u/41326348?u=ba2fda6b30110411ecbf406d187907e2b420ac19&v=4 + url: https://github.com/panla - login: chbndrhnns count: 25 avatarUrl: https://avatars.githubusercontent.com/u/7534547?v=4 @@ -93,10 +97,6 @@ experts: count: 25 avatarUrl: https://avatars.githubusercontent.com/u/43723790?u=9bcce836bbce55835291c5b2ac93a4e311f4b3c3&v=4 url: https://github.com/dbanty -- login: panla - count: 25 - avatarUrl: https://avatars.githubusercontent.com/u/41326348?u=ba2fda6b30110411ecbf406d187907e2b420ac19&v=4 - url: https://github.com/panla - login: SirTelemak count: 24 avatarUrl: https://avatars.githubusercontent.com/u/9435877?u=719327b7d2c4c62212456d771bfa7c6b8dbb9eac&v=4 @@ -113,6 +113,10 @@ experts: count: 21 avatarUrl: https://avatars.githubusercontent.com/u/565544?v=4 url: https://github.com/chris-allnutt +- login: jgould22 + count: 20 + avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 + url: https://github.com/jgould22 - login: retnikt count: 19 avatarUrl: https://avatars.githubusercontent.com/u/24581770?v=4 @@ -141,14 +145,14 @@ experts: count: 16 avatarUrl: https://avatars.githubusercontent.com/u/41964673?u=9f2174f9d61c15c6e3a4c9e3aeee66f711ce311f&v=4 url: https://github.com/dstlny -- login: jgould22 - count: 14 - avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 - url: https://github.com/jgould22 - login: harunyasar - count: 14 + count: 16 avatarUrl: https://avatars.githubusercontent.com/u/1765494?u=5b1ab7c582db4b4016fa31affe977d10af108ad4&v=4 url: https://github.com/harunyasar +- login: rafsaf + count: 15 + avatarUrl: https://avatars.githubusercontent.com/u/51059348?u=be9f06b8ced2d2b677297decc781fa8ce4f7ddbd&v=4 + url: https://github.com/rafsaf - login: haizaar count: 13 avatarUrl: https://avatars.githubusercontent.com/u/58201?u=4f1f9843d69433ca0d380d95146cfe119e5fdac4&v=4 @@ -189,43 +193,31 @@ experts: count: 10 avatarUrl: https://avatars.githubusercontent.com/u/2858306?u=1bb1182a5944e93624b7fb26585f22c8f7a9d76e&v=4 url: https://github.com/oligond -last_month_active: -- login: harunyasar +- login: n8sty count: 10 - avatarUrl: https://avatars.githubusercontent.com/u/1765494?u=5b1ab7c582db4b4016fa31affe977d10af108ad4&v=4 - url: https://github.com/harunyasar + avatarUrl: https://avatars.githubusercontent.com/u/2964996?v=4 + url: https://github.com/n8sty +last_month_active: +- login: yinziyan1206 + count: 7 + avatarUrl: https://avatars.githubusercontent.com/u/37829370?v=4 + url: https://github.com/yinziyan1206 +- login: Kludex + count: 6 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 + url: https://github.com/Kludex - login: jgould22 - count: 10 + count: 3 avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 url: https://github.com/jgould22 - login: rafsaf - count: 9 + count: 3 avatarUrl: https://avatars.githubusercontent.com/u/51059348?u=be9f06b8ced2d2b677297decc781fa8ce4f7ddbd&v=4 url: https://github.com/rafsaf -- login: STeveShary - count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/5167622?u=de8f597c81d6336fcebc37b32dfd61a3f877160c&v=4 - url: https://github.com/STeveShary -- login: ahnaf-zamil - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/57180217?u=849128b146771ace47beca5b5ff68eb82905dd6d&v=4 - url: https://github.com/ahnaf-zamil -- login: lucastosetto - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/89307132?u=56326696423df7126c9e7c702ee58f294db69a2a&v=4 - url: https://github.com/lucastosetto -- login: blokje +- login: gmanny count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/851418?v=4 - url: https://github.com/blokje -- login: MatthijsKok - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/7658129?u=1243e32d57e13abc45e3f5235ed5b9197e0d2b41&v=4 - url: https://github.com/MatthijsKok -- login: Kludex - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=3682d9b9b93bef272f379ab623dc031c8d71432e&v=4 - url: https://github.com/Kludex + avatarUrl: https://avatars.githubusercontent.com/u/1166296?v=4 + url: https://github.com/gmanny top_contributors: - login: waynerv count: 25 @@ -265,7 +257,7 @@ top_contributors: url: https://github.com/RunningIkkyu - login: Kludex count: 7 - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=3682d9b9b93bef272f379ab623dc031c8d71432e&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 url: https://github.com/Kludex - login: hard-coders count: 7 @@ -306,7 +298,7 @@ top_contributors: top_reviewers: - login: Kludex count: 93 - avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=3682d9b9b93bef272f379ab623dc031c8d71432e&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 url: https://github.com/Kludex - login: waynerv count: 47 @@ -324,6 +316,10 @@ top_reviewers: count: 45 avatarUrl: https://avatars.githubusercontent.com/u/62724709?u=826f228edf0bab0d19ad1d5c4ba4df1047ccffef&v=4 url: https://github.com/ycd +- login: cikay + count: 40 + avatarUrl: https://avatars.githubusercontent.com/u/24587499?u=e772190a051ab0eaa9c8542fcff1892471638f2b&v=4 + url: https://github.com/cikay - login: AdrianDeAnda count: 33 avatarUrl: https://avatars.githubusercontent.com/u/1024932?u=bb7f8a0d6c9de4e9d0320a9f271210206e202250&v=4 @@ -332,10 +328,6 @@ top_reviewers: count: 31 avatarUrl: https://avatars.githubusercontent.com/u/31127044?u=81a84af39c89b898b0fbc5a04e8834f60f23e55a&v=4 url: https://github.com/ArcLightSlavik -- login: cikay - count: 24 - avatarUrl: https://avatars.githubusercontent.com/u/24587499?u=e772190a051ab0eaa9c8542fcff1892471638f2b&v=4 - url: https://github.com/cikay - login: dmontagu count: 23 avatarUrl: https://avatars.githubusercontent.com/u/35119617?u=58ed2a45798a4339700e2f62b2e12e6e54bf0396&v=4 @@ -356,6 +348,18 @@ top_reviewers: count: 19 avatarUrl: https://avatars.githubusercontent.com/u/63915557?u=47debaa860fd52c9b98c97ef357ddcec3b3fb399&v=4 url: https://github.com/0417taehyun +- login: BilalAlpaslan + count: 18 + avatarUrl: https://avatars.githubusercontent.com/u/47563997?u=63ed66e304fe8d765762c70587d61d9196e5c82d&v=4 + url: https://github.com/BilalAlpaslan +- login: zy7y + count: 17 + avatarUrl: https://avatars.githubusercontent.com/u/67154681?u=5d634834cc514028ea3f9115f7030b99a1f4d5a4&v=4 + url: https://github.com/zy7y +- login: yezz123 + count: 16 + avatarUrl: https://avatars.githubusercontent.com/u/52716203?u=636b4f79645176df4527dd45c12d5dbb5a4193cf&v=4 + url: https://github.com/yezz123 - login: yanever count: 16 avatarUrl: https://avatars.githubusercontent.com/u/21978760?v=4 @@ -392,10 +396,6 @@ top_reviewers: count: 12 avatarUrl: https://avatars.githubusercontent.com/u/31848542?u=706e1ee3f248245f2d68b976d149d06fd5a2010d&v=4 url: https://github.com/RunningIkkyu -- login: yezz123 - count: 12 - avatarUrl: https://avatars.githubusercontent.com/u/52716203?u=636b4f79645176df4527dd45c12d5dbb5a4193cf&v=4 - url: https://github.com/yezz123 - login: sh0nk count: 12 avatarUrl: https://avatars.githubusercontent.com/u/6478810?u=af15d724875cec682ed8088a86d36b2798f981c0&v=4 @@ -412,6 +412,10 @@ top_reviewers: count: 10 avatarUrl: https://avatars.githubusercontent.com/u/7887703?v=4 url: https://github.com/maoyibo +- login: solomein-sv + count: 10 + avatarUrl: https://avatars.githubusercontent.com/u/46193920?u=46acfb4aeefb1d7b9fdc5a8cbd9eb8744683c47a&v=4 + url: https://github.com/solomein-sv - login: graingert count: 9 avatarUrl: https://avatars.githubusercontent.com/u/413772?v=4 @@ -424,26 +428,26 @@ top_reviewers: count: 9 avatarUrl: https://avatars.githubusercontent.com/u/49435654?v=4 url: https://github.com/kty4119 -- login: zy7y - count: 9 - avatarUrl: https://avatars.githubusercontent.com/u/67154681?u=5d634834cc514028ea3f9115f7030b99a1f4d5a4&v=4 - url: https://github.com/zy7y - login: bezaca count: 9 avatarUrl: https://avatars.githubusercontent.com/u/69092910?u=4ac58eab99bd37d663f3d23551df96d4fbdbf760&v=4 url: https://github.com/bezaca -- login: solomein-sv - count: 9 - avatarUrl: https://avatars.githubusercontent.com/u/46193920?u=46acfb4aeefb1d7b9fdc5a8cbd9eb8744683c47a&v=4 - url: https://github.com/solomein-sv - login: blt232018 count: 8 avatarUrl: https://avatars.githubusercontent.com/u/43393471?u=172b0e0391db1aa6c1706498d6dfcb003c8a4857&v=4 url: https://github.com/blt232018 +- login: rogerbrinkmann + count: 8 + avatarUrl: https://avatars.githubusercontent.com/u/5690226?v=4 + url: https://github.com/rogerbrinkmann - login: ComicShrimp count: 8 avatarUrl: https://avatars.githubusercontent.com/u/43503750?u=b3e4d9a14d9a65d429ce62c566aef73178b7111d&v=4 url: https://github.com/ComicShrimp +- login: dimaqq + count: 8 + avatarUrl: https://avatars.githubusercontent.com/u/662249?v=4 + url: https://github.com/dimaqq - login: Serrones count: 7 avatarUrl: https://avatars.githubusercontent.com/u/22691749?u=4795b880e13ca33a73e52fc0ef7dc9c60c8fce47&v=4 @@ -456,10 +460,6 @@ top_reviewers: count: 7 avatarUrl: https://avatars.githubusercontent.com/u/10202690?u=e6f86f5c0c3026a15d6b51792fa3e532b12f1371&v=4 url: https://github.com/raphaelauv -- login: BilalAlpaslan - count: 7 - avatarUrl: https://avatars.githubusercontent.com/u/47563997?u=63ed66e304fe8d765762c70587d61d9196e5c82d&v=4 - url: https://github.com/BilalAlpaslan - login: NastasiaSaby count: 7 avatarUrl: https://avatars.githubusercontent.com/u/8245071?u=b3afd005f9e4bf080c219ef61a592b3a8004b764&v=4 @@ -472,31 +472,23 @@ top_reviewers: count: 7 avatarUrl: https://avatars.githubusercontent.com/u/34248814?v=4 url: https://github.com/krocdort -- login: dimaqq +- login: NinaHwang count: 7 - avatarUrl: https://avatars.githubusercontent.com/u/662249?v=4 - url: https://github.com/dimaqq + avatarUrl: https://avatars.githubusercontent.com/u/79563565?u=1741703bd6c8f491503354b363a86e879b4c1cab&v=4 + url: https://github.com/NinaHwang - login: jovicon count: 6 avatarUrl: https://avatars.githubusercontent.com/u/21287303?u=b049eac3e51a4c0473c2efe66b4d28a7d8f2b572&v=4 url: https://github.com/jovicon -- login: NinaHwang +- login: LorhanSohaky count: 6 - avatarUrl: https://avatars.githubusercontent.com/u/79563565?u=1741703bd6c8f491503354b363a86e879b4c1cab&v=4 - url: https://github.com/NinaHwang + avatarUrl: https://avatars.githubusercontent.com/u/16273730?u=095b66f243a2cd6a0aadba9a095009f8aaf18393&v=4 + url: https://github.com/LorhanSohaky +- login: peidrao + count: 6 + avatarUrl: https://avatars.githubusercontent.com/u/32584628?u=88c2cb42a99e0f50cdeae3606992568184783ee5&v=4 + url: https://github.com/peidrao - login: diogoduartec count: 5 avatarUrl: https://avatars.githubusercontent.com/u/31852339?u=b50fc11c531e9b77922e19edfc9e7233d4d7b92e&v=4 url: https://github.com/diogoduartec -- login: n25a - count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/49960770?u=eb3c95338741c78fff7d9d5d7ace9617e53eee4a&v=4 - url: https://github.com/n25a -- login: izaguerreiro - count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/2241504?v=4 - url: https://github.com/izaguerreiro -- login: israteneda - count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/20668624?u=d7b2961d330aca65fbce5bdb26a0800a3d23ed2d&v=4 - url: https://github.com/israteneda From d5d6eebd407f689d3bb52121fd05f750fbcb0633 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Mar 2022 20:20:21 +0000 Subject: [PATCH 08/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index bbe6ce221..2a8955a4a 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 👥 Update FastAPI People. PR [#4699](https://github.com/tiangolo/fastapi/pull/4699) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🐛 Fix FastAPI People generation to include missing file in commit. PR [#4695](https://github.com/tiangolo/fastapi/pull/4695) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update Classiq sponsor links. PR [#4688](https://github.com/tiangolo/fastapi/pull/4688) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add Classiq sponsor. PR [#4671](https://github.com/tiangolo/fastapi/pull/4671) by [@tiangolo](https://github.com/tiangolo). From aec2d26baca77857777dd25c6ad5121e1685ac31 Mon Sep 17 00:00:00 2001 From: Sarmast Bilawal Khuhro Date: Thu, 17 Mar 2022 21:24:34 +0100 Subject: [PATCH 09/42] =?UTF-8?q?=E2=9C=8F=20Reword=20sentence=20about=20h?= =?UTF-8?q?andling=20errors=20(#1993)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- docs/en/docs/tutorial/handling-errors.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/en/docs/tutorial/handling-errors.md b/docs/en/docs/tutorial/handling-errors.md index 89f96176d..82e166266 100644 --- a/docs/en/docs/tutorial/handling-errors.md +++ b/docs/en/docs/tutorial/handling-errors.md @@ -252,9 +252,7 @@ from starlette.exceptions import HTTPException as StarletteHTTPException ### Re-use **FastAPI**'s exception handlers -You could also just want to use the exception somehow, but then use the same default exception handlers from **FastAPI**. - -You can import and re-use the default exception handlers from `fastapi.exception_handlers`: +If you want to use the exception along with the same default exception handlers from **FastAPI**, You can import and re-use the default exception handlers from `fastapi.exception_handlers`: ```Python hl_lines="2-5 15 21" {!../../../docs_src/handling_errors/tutorial006.py!} From bab5c201dae5ffcdd9e7452d2cab4cc51acc556e Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 17 Mar 2022 20:25:09 +0000 Subject: [PATCH 10/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 2a8955a4a..c71685fe4 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ✏ Reword sentence about handling errors. PR [#1993](https://github.com/tiangolo/fastapi/pull/1993) by [@khuhroproeza](https://github.com/khuhroproeza). * 👥 Update FastAPI People. PR [#4699](https://github.com/tiangolo/fastapi/pull/4699) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🐛 Fix FastAPI People generation to include missing file in commit. PR [#4695](https://github.com/tiangolo/fastapi/pull/4695) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update Classiq sponsor links. PR [#4688](https://github.com/tiangolo/fastapi/pull/4688) by [@tiangolo](https://github.com/tiangolo). From 2b6f1585ec8a2084195363d76a0dfeda2d77657e Mon Sep 17 00:00:00 2001 From: Amin Alaee Date: Fri, 18 Mar 2022 17:24:19 +0100 Subject: [PATCH 11/42] =?UTF-8?q?=F0=9F=8C=90=20Start=20Persian/Farsi=20tr?= =?UTF-8?q?anslations=20(#4243)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- docs/az/mkdocs.yml | 3 + docs/de/mkdocs.yml | 3 + docs/en/mkdocs.yml | 3 + docs/es/mkdocs.yml | 3 + docs/fa/docs/index.md | 468 +++++++++++++++++++++++++++++++++++ docs/fa/mkdocs.yml | 132 ++++++++++ docs/fa/overrides/.gitignore | 0 docs/fr/mkdocs.yml | 3 + docs/id/mkdocs.yml | 3 + docs/it/mkdocs.yml | 3 + docs/ja/mkdocs.yml | 3 + docs/ko/mkdocs.yml | 3 + docs/pl/mkdocs.yml | 3 + docs/pt/mkdocs.yml | 3 + docs/ru/mkdocs.yml | 3 + docs/sq/mkdocs.yml | 3 + docs/tr/mkdocs.yml | 3 + docs/uk/mkdocs.yml | 3 + docs/zh/mkdocs.yml | 3 + 19 files changed, 648 insertions(+) create mode 100644 docs/fa/docs/index.md create mode 100644 docs/fa/mkdocs.yml create mode 100644 docs/fa/overrides/.gitignore diff --git a/docs/az/mkdocs.yml b/docs/az/mkdocs.yml index 66220f63e..06aad80c4 100644 --- a/docs/az/mkdocs.yml +++ b/docs/az/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/de/mkdocs.yml b/docs/de/mkdocs.yml index 360fa8c4a..80b360028 100644 --- a/docs/de/mkdocs.yml +++ b/docs/de/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -98,6 +99,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml index e2a779872..12ced5f92 100644 --- a/docs/en/mkdocs.yml +++ b/docs/en/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -204,6 +205,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/es/mkdocs.yml b/docs/es/mkdocs.yml index a4bc41154..c3b26dcc2 100644 --- a/docs/es/mkdocs.yml +++ b/docs/es/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -107,6 +108,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/fa/docs/index.md b/docs/fa/docs/index.md new file mode 100644 index 000000000..0070de179 --- /dev/null +++ b/docs/fa/docs/index.md @@ -0,0 +1,468 @@ + +{!../../../docs/missing-translation.md!} + + +

+ FastAPI +

+

+ FastAPI framework, high performance, easy to learn, fast to code, ready for production +

+

+ + Test + + + Coverage + + + Package version + + + Supported Python versions + +

+ +--- + +**Documentation**: https://fastapi.tiangolo.com + +**Source Code**: https://github.com/tiangolo/fastapi + +--- + +FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. + +The key features are: + +* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). + +* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * +* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * +* **Intuitive**: Great editor support. Completion everywhere. Less time debugging. +* **Easy**: Designed to be easy to use and learn. Less time reading docs. +* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. +* **Robust**: Get production-ready code. With automatic interactive documentation. +* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. + +* estimation based on tests on an internal development team, building production applications. + +## Sponsors + + + +{% if sponsors %} +{% for sponsor in sponsors.gold -%} + +{% endfor -%} +{%- for sponsor in sponsors.silver -%} + +{% endfor %} +{% endif %} + + + +Other sponsors + +## Opinions + +"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._" + +
Kabir Khan - Microsoft (ref)
+ +--- + +"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_" + +
Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref)
+ +--- + +"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_" + +
Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref)
+ +--- + +"_I’m over the moon excited about **FastAPI**. It’s so fun!_" + +
Brian Okken - Python Bytes podcast host (ref)
+ +--- + +"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._" + +
Timothy Crosley - Hug creator (ref)
+ +--- + +"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_" + +"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_" + +
Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref)
+ +--- + +## **Typer**, the FastAPI of CLIs + + + +If you are building a CLI app to be used in the terminal instead of a web API, check out **Typer**. + +**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. ⌨️ 🚀 + +## Requirements + +Python 3.6+ + +FastAPI stands on the shoulders of giants: + +* Starlette for the web parts. +* Pydantic for the data parts. + +## Installation + +
+ +```console +$ pip install fastapi + +---> 100% +``` + +
+ +You will also need an ASGI server, for production such as Uvicorn or Hypercorn. + +
+ +```console +$ pip install "uvicorn[standard]" + +---> 100% +``` + +
+ +## Example + +### Create it + +* Create a file `main.py` with: + +```Python +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +
+Or use async def... + +If your code uses `async` / `await`, use `async def`: + +```Python hl_lines="9 14" +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +async def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +async def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +**Note**: + +If you don't know, check the _"In a hurry?"_ section about `async` and `await` in the docs. + +
+ +### Run it + +Run the server with: + +
+ +```console +$ uvicorn main:app --reload + +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [28720] +INFO: Started server process [28722] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +
+ +
+About the command uvicorn main:app --reload... + +The command `uvicorn main:app` refers to: + +* `main`: the file `main.py` (the Python "module"). +* `app`: the object created inside of `main.py` with the line `app = FastAPI()`. +* `--reload`: make the server restart after code changes. Only do this for development. + +
+ +### Check it + +Open your browser at http://127.0.0.1:8000/items/5?q=somequery. + +You will see the JSON response as: + +```JSON +{"item_id": 5, "q": "somequery"} +``` + +You already created an API that: + +* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. +* Both _paths_ take `GET` operations (also known as HTTP _methods_). +* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. +* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. + +### Interactive API docs + +Now go to http://127.0.0.1:8000/docs. + +You will see the automatic interactive API documentation (provided by Swagger UI): + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) + +### Alternative API docs + +And now, go to http://127.0.0.1:8000/redoc. + +You will see the alternative automatic documentation (provided by ReDoc): + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) + +## Example upgrade + +Now modify the file `main.py` to receive a body from a `PUT` request. + +Declare the body using standard Python types, thanks to Pydantic. + +```Python hl_lines="4 9-12 25-27" +from typing import Optional + +from fastapi import FastAPI +from pydantic import BaseModel + +app = FastAPI() + + +class Item(BaseModel): + name: str + price: float + is_offer: Optional[bool] = None + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} + + +@app.put("/items/{item_id}") +def update_item(item_id: int, item: Item): + return {"item_name": item.name, "item_id": item_id} +``` + +The server should reload automatically (because you added `--reload` to the `uvicorn` command above). + +### Interactive API docs upgrade + +Now go to http://127.0.0.1:8000/docs. + +* The interactive API documentation will be automatically updated, including the new body: + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) + +* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) + +### Alternative API docs upgrade + +And now, go to http://127.0.0.1:8000/redoc. + +* The alternative documentation will also reflect the new query parameter and body: + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Recap + +In summary, you declare **once** the types of parameters, body, etc. as function parameters. + +You do that with standard modern Python types. + +You don't have to learn a new syntax, the methods or classes of a specific library, etc. + +Just standard **Python 3.6+**. + +For example, for an `int`: + +```Python +item_id: int +``` + +or for a more complex `Item` model: + +```Python +item: Item +``` + +...and with that single declaration you get: + +* Editor support, including: + * Completion. + * Type checks. +* Validation of data: + * Automatic and clear errors when the data is invalid. + * Validation even for deeply nested JSON objects. +* Conversion of input data: coming from the network to Python data and types. Reading from: + * JSON. + * Path parameters. + * Query parameters. + * Cookies. + * Headers. + * Forms. + * Files. +* Conversion of output data: converting from Python data and types to network data (as JSON): + * Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc). + * `datetime` objects. + * `UUID` objects. + * Database models. + * ...and many more. +* Automatic interactive API documentation, including 2 alternative user interfaces: + * Swagger UI. + * ReDoc. + +--- + +Coming back to the previous code example, **FastAPI** will: + +* Validate that there is an `item_id` in the path for `GET` and `PUT` requests. +* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests. + * If it is not, the client will see a useful, clear error. +* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests. + * As the `q` parameter is declared with `= None`, it is optional. + * Without the `None` it would be required (as is the body in the case with `PUT`). +* For `PUT` requests to `/items/{item_id}`, Read the body as JSON: + * Check that it has a required attribute `name` that should be a `str`. + * Check that it has a required attribute `price` that has to be a `float`. + * Check that it has an optional attribute `is_offer`, that should be a `bool`, if present. + * All this would also work for deeply nested JSON objects. +* Convert from and to JSON automatically. +* Document everything with OpenAPI, that can be used by: + * Interactive documentation systems. + * Automatic client code generation systems, for many languages. +* Provide 2 interactive documentation web interfaces directly. + +--- + +We just scratched the surface, but you already get the idea of how it all works. + +Try changing the line with: + +```Python + return {"item_name": item.name, "item_id": item_id} +``` + +...from: + +```Python + ... "item_name": item.name ... +``` + +...to: + +```Python + ... "item_price": item.price ... +``` + +...and see how your editor will auto-complete the attributes and know their types: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +For a more complete example including more features, see the Tutorial - User Guide. + +**Spoiler alert**: the tutorial - user guide includes: + +* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**. +* How to set **validation constraints** as `maximum_length` or `regex`. +* A very powerful and easy to use **Dependency Injection** system. +* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth. +* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic). +* **GraphQL** integration with Strawberry and other libraries. +* Many extra features (thanks to Starlette) as: + * **WebSockets** + * extremely easy tests based on `requests` and `pytest` + * **CORS** + * **Cookie Sessions** + * ...and more. + +## Performance + +Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) + +To understand more about it, see the section Benchmarks. + +## Optional Dependencies + +Used by Pydantic: + +* ujson - for faster JSON "parsing". +* email_validator - for email validation. + +Used by Starlette: + +* requests - Required if you want to use the `TestClient`. +* jinja2 - Required if you want to use the default template configuration. +* python-multipart - Required if you want to support form "parsing", with `request.form()`. +* itsdangerous - Required for `SessionMiddleware` support. +* pyyaml - Required for Starlette's `SchemaGenerator` support (you probably don't need it with FastAPI). +* ujson - Required if you want to use `UJSONResponse`. + +Used by FastAPI / Starlette: + +* uvicorn - for the server that loads and serves your application. +* orjson - Required if you want to use `ORJSONResponse`. + +You can install all of these with `pip install "fastapi[all]"`. + +## License + +This project is licensed under the terms of the MIT license. diff --git a/docs/fa/mkdocs.yml b/docs/fa/mkdocs.yml new file mode 100644 index 000000000..83cf81e22 --- /dev/null +++ b/docs/fa/mkdocs.yml @@ -0,0 +1,132 @@ +site_name: FastAPI +site_description: FastAPI framework, high performance, easy to learn, fast to code, ready for production +site_url: https://fastapi.tiangolo.com/fa/ +theme: + name: material + custom_dir: overrides + palette: + - scheme: default + primary: teal + accent: amber + toggle: + icon: material/lightbulb + name: Switch to light mode + - scheme: slate + primary: teal + accent: amber + toggle: + icon: material/lightbulb-outline + name: Switch to dark mode + features: + - search.suggest + - search.highlight + - content.tabs.link + icon: + repo: fontawesome/brands/github-alt + logo: https://fastapi.tiangolo.com/img/icon-white.svg + favicon: https://fastapi.tiangolo.com/img/favicon.png + language: fa +repo_name: tiangolo/fastapi +repo_url: https://github.com/tiangolo/fastapi +edit_uri: '' +google_analytics: +- UA-133183413-1 +- auto +plugins: +- search +- markdownextradata: + data: data +nav: +- FastAPI: index.md +- Languages: + - en: / + - az: /az/ + - de: /de/ + - es: /es/ + - fa: /fa/ + - fr: /fr/ + - id: /id/ + - it: /it/ + - ja: /ja/ + - ko: /ko/ + - pl: /pl/ + - pt: /pt/ + - ru: /ru/ + - sq: /sq/ + - tr: /tr/ + - uk: /uk/ + - zh: /zh/ +markdown_extensions: +- toc: + permalink: true +- markdown.extensions.codehilite: + guess_lang: false +- mdx_include: + base_path: docs +- admonition +- codehilite +- extra +- pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format '' +- pymdownx.tabbed +extra: + social: + - icon: fontawesome/brands/github-alt + link: https://github.com/tiangolo/fastapi + - icon: fontawesome/brands/discord + link: https://discord.gg/VQjSZaeJmf + - icon: fontawesome/brands/twitter + link: https://twitter.com/fastapi + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/in/tiangolo + - icon: fontawesome/brands/dev + link: https://dev.to/tiangolo + - icon: fontawesome/brands/medium + link: https://medium.com/@tiangolo + - icon: fontawesome/solid/globe + link: https://tiangolo.com + alternate: + - link: / + name: en - English + - link: /az/ + name: az + - link: /de/ + name: de + - link: /es/ + name: es - español + - link: /fa/ + name: fa + - link: /fr/ + name: fr - français + - link: /id/ + name: id + - link: /it/ + name: it - italiano + - link: /ja/ + name: ja - 日本語 + - link: /ko/ + name: ko - 한국어 + - link: /pl/ + name: pl + - link: /pt/ + name: pt - português + - link: /ru/ + name: ru - русский язык + - link: /sq/ + name: sq - shqip + - link: /tr/ + name: tr - Türkçe + - link: /uk/ + name: uk - українська мова + - link: /zh/ + name: zh - 汉语 +extra_css: +- https://fastapi.tiangolo.com/css/termynal.css +- https://fastapi.tiangolo.com/css/custom.css +- https://fastapi.tiangolo.com/css/rtl.css +extra_javascript: +- https://fastapi.tiangolo.com/js/termynal.js +- https://fastapi.tiangolo.com/js/custom.js diff --git a/docs/fa/overrides/.gitignore b/docs/fa/overrides/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docs/fr/mkdocs.yml b/docs/fr/mkdocs.yml index ff16e1d78..b14764c66 100644 --- a/docs/fr/mkdocs.yml +++ b/docs/fr/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -112,6 +113,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/id/mkdocs.yml b/docs/id/mkdocs.yml index d70d2b3c3..e40218422 100644 --- a/docs/id/mkdocs.yml +++ b/docs/id/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/it/mkdocs.yml b/docs/it/mkdocs.yml index e6d01fbde..da1ac00b7 100644 --- a/docs/it/mkdocs.yml +++ b/docs/it/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/ja/mkdocs.yml b/docs/ja/mkdocs.yml index 39fd8a211..832078186 100644 --- a/docs/ja/mkdocs.yml +++ b/docs/ja/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -137,6 +138,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/ko/mkdocs.yml b/docs/ko/mkdocs.yml index 1d4d30913..8b7cb9c06 100644 --- a/docs/ko/mkdocs.yml +++ b/docs/ko/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -107,6 +108,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/pl/mkdocs.yml b/docs/pl/mkdocs.yml index 3c1351a12..da68165c7 100644 --- a/docs/pl/mkdocs.yml +++ b/docs/pl/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/pt/mkdocs.yml b/docs/pt/mkdocs.yml index f202f306d..522b3c86a 100644 --- a/docs/pt/mkdocs.yml +++ b/docs/pt/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -117,6 +118,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/ru/mkdocs.yml b/docs/ru/mkdocs.yml index 6e17c287e..643f0aa70 100644 --- a/docs/ru/mkdocs.yml +++ b/docs/ru/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/sq/mkdocs.yml b/docs/sq/mkdocs.yml index d9c3dad4c..e4a1724c3 100644 --- a/docs/sq/mkdocs.yml +++ b/docs/sq/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/tr/mkdocs.yml b/docs/tr/mkdocs.yml index f6ed7f5b9..041c11b97 100644 --- a/docs/tr/mkdocs.yml +++ b/docs/tr/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -100,6 +101,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/uk/mkdocs.yml b/docs/uk/mkdocs.yml index d0de8cc0e..2d704b989 100644 --- a/docs/uk/mkdocs.yml +++ b/docs/uk/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -97,6 +98,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml index 1d050fddd..f424b117b 100644 --- a/docs/zh/mkdocs.yml +++ b/docs/zh/mkdocs.yml @@ -40,6 +40,7 @@ nav: - az: /az/ - de: /de/ - es: /es/ + - fa: /fa/ - fr: /fr/ - id: /id/ - it: /it/ @@ -148,6 +149,8 @@ extra: name: de - link: /es/ name: es - español + - link: /fa/ + name: fa - link: /fr/ name: fr - français - link: /id/ From bd94d313c910e505b00a2338505272992de1769a Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 18 Mar 2022 16:24:54 +0000 Subject: [PATCH 12/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index c71685fe4..d71a1d094 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🌐 Start Persian/Farsi translations. PR [#4243](https://github.com/tiangolo/fastapi/pull/4243) by [@aminalaee](https://github.com/aminalaee). * ✏ Reword sentence about handling errors. PR [#1993](https://github.com/tiangolo/fastapi/pull/1993) by [@khuhroproeza](https://github.com/khuhroproeza). * 👥 Update FastAPI People. PR [#4699](https://github.com/tiangolo/fastapi/pull/4699) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🐛 Fix FastAPI People generation to include missing file in commit. PR [#4695](https://github.com/tiangolo/fastapi/pull/4695) by [@tiangolo](https://github.com/tiangolo). From d820267cde66b3f4e42f509a03e8ffb464d443bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Fri, 18 Mar 2022 11:37:14 -0500 Subject: [PATCH 13/42] =?UTF-8?q?=F0=9F=94=A7=20Add=20configuration=20to?= =?UTF-8?q?=20notify=20Dutch=20translations=20(#4702)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/actions/notify-translations/app/translations.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/notify-translations/app/translations.yml b/.github/actions/notify-translations/app/translations.yml index decd63498..f0bccd470 100644 --- a/.github/actions/notify-translations/app/translations.yml +++ b/.github/actions/notify-translations/app/translations.yml @@ -13,3 +13,4 @@ pl: 3169 de: 3716 id: 3717 az: 3994 +nl: 4701 From fc96370ce30b7646fbb0637e7bae57f5caff6900 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 18 Mar 2022 16:37:49 +0000 Subject: [PATCH 14/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index d71a1d094..da1cd5c32 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Persian/Farsi translations. PR [#4243](https://github.com/tiangolo/fastapi/pull/4243) by [@aminalaee](https://github.com/aminalaee). * ✏ Reword sentence about handling errors. PR [#1993](https://github.com/tiangolo/fastapi/pull/1993) by [@khuhroproeza](https://github.com/khuhroproeza). * 👥 Update FastAPI People. PR [#4699](https://github.com/tiangolo/fastapi/pull/4699) by [@github-actions[bot]](https://github.com/apps/github-actions). From 5c842586c239e565d44a5f0e0a0e48fb88303925 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Fri, 18 Mar 2022 11:47:54 -0500 Subject: [PATCH 15/42] =?UTF-8?q?=F0=9F=8C=90=20Start=20Dutch=20translatio?= =?UTF-8?q?ns=20(#4703)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/az/mkdocs.yml | 3 + docs/de/mkdocs.yml | 3 + docs/en/mkdocs.yml | 3 + docs/es/mkdocs.yml | 3 + docs/fa/mkdocs.yml | 13 +- docs/fr/mkdocs.yml | 3 + docs/id/mkdocs.yml | 3 + docs/it/mkdocs.yml | 3 + docs/ja/mkdocs.yml | 3 + docs/ko/mkdocs.yml | 3 + docs/nl/docs/index.md | 468 +++++++++++++++++++++++++++++++++++ docs/nl/mkdocs.yml | 135 ++++++++++ docs/nl/overrides/.gitignore | 0 docs/pl/mkdocs.yml | 3 + docs/pt/mkdocs.yml | 3 + docs/ru/mkdocs.yml | 3 + docs/sq/mkdocs.yml | 3 + docs/tr/mkdocs.yml | 3 + docs/uk/mkdocs.yml | 3 + docs/zh/mkdocs.yml | 3 + 20 files changed, 659 insertions(+), 5 deletions(-) create mode 100644 docs/nl/docs/index.md create mode 100644 docs/nl/mkdocs.yml create mode 100644 docs/nl/overrides/.gitignore diff --git a/docs/az/mkdocs.yml b/docs/az/mkdocs.yml index 06aad80c4..58bbb0758 100644 --- a/docs/az/mkdocs.yml +++ b/docs/az/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/de/mkdocs.yml b/docs/de/mkdocs.yml index 80b360028..1242af504 100644 --- a/docs/de/mkdocs.yml +++ b/docs/de/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -111,6 +112,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml index 12ced5f92..e7aa40def 100644 --- a/docs/en/mkdocs.yml +++ b/docs/en/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -217,6 +218,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/es/mkdocs.yml b/docs/es/mkdocs.yml index c3b26dcc2..eb7538cf4 100644 --- a/docs/es/mkdocs.yml +++ b/docs/es/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -120,6 +121,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/fa/mkdocs.yml b/docs/fa/mkdocs.yml index 83cf81e22..6fb3891b7 100644 --- a/docs/fa/mkdocs.yml +++ b/docs/fa/mkdocs.yml @@ -29,9 +29,6 @@ theme: repo_name: tiangolo/fastapi repo_url: https://github.com/tiangolo/fastapi edit_uri: '' -google_analytics: -- UA-133183413-1 -- auto plugins: - search - markdownextradata: @@ -49,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -71,8 +69,12 @@ markdown_extensions: - name: mermaid class: mermaid format: !!python/name:pymdownx.superfences.fence_code_format '' -- pymdownx.tabbed +- pymdownx.tabbed: + alternate_style: true extra: + analytics: + provider: google + property: UA-133183413-1 social: - icon: fontawesome/brands/github-alt link: https://github.com/tiangolo/fastapi @@ -109,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ @@ -126,7 +130,6 @@ extra: extra_css: - https://fastapi.tiangolo.com/css/termynal.css - https://fastapi.tiangolo.com/css/custom.css -- https://fastapi.tiangolo.com/css/rtl.css extra_javascript: - https://fastapi.tiangolo.com/js/termynal.js - https://fastapi.tiangolo.com/js/custom.js diff --git a/docs/fr/mkdocs.yml b/docs/fr/mkdocs.yml index b14764c66..d2681f8d5 100644 --- a/docs/fr/mkdocs.yml +++ b/docs/fr/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -125,6 +126,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/id/mkdocs.yml b/docs/id/mkdocs.yml index e40218422..0c60fecd9 100644 --- a/docs/id/mkdocs.yml +++ b/docs/id/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/it/mkdocs.yml b/docs/it/mkdocs.yml index da1ac00b7..3bf3d7396 100644 --- a/docs/it/mkdocs.yml +++ b/docs/it/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/ja/mkdocs.yml b/docs/ja/mkdocs.yml index 832078186..f972eb0ff 100644 --- a/docs/ja/mkdocs.yml +++ b/docs/ja/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -150,6 +151,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/ko/mkdocs.yml b/docs/ko/mkdocs.yml index 8b7cb9c06..1e7d60dbd 100644 --- a/docs/ko/mkdocs.yml +++ b/docs/ko/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -120,6 +121,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/nl/docs/index.md b/docs/nl/docs/index.md new file mode 100644 index 000000000..0070de179 --- /dev/null +++ b/docs/nl/docs/index.md @@ -0,0 +1,468 @@ + +{!../../../docs/missing-translation.md!} + + +

+ FastAPI +

+

+ FastAPI framework, high performance, easy to learn, fast to code, ready for production +

+

+ + Test + + + Coverage + + + Package version + + + Supported Python versions + +

+ +--- + +**Documentation**: https://fastapi.tiangolo.com + +**Source Code**: https://github.com/tiangolo/fastapi + +--- + +FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. + +The key features are: + +* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). + +* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * +* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * +* **Intuitive**: Great editor support. Completion everywhere. Less time debugging. +* **Easy**: Designed to be easy to use and learn. Less time reading docs. +* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. +* **Robust**: Get production-ready code. With automatic interactive documentation. +* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. + +* estimation based on tests on an internal development team, building production applications. + +## Sponsors + + + +{% if sponsors %} +{% for sponsor in sponsors.gold -%} + +{% endfor -%} +{%- for sponsor in sponsors.silver -%} + +{% endfor %} +{% endif %} + + + +Other sponsors + +## Opinions + +"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._" + +
Kabir Khan - Microsoft (ref)
+ +--- + +"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_" + +
Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref)
+ +--- + +"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_" + +
Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref)
+ +--- + +"_I’m over the moon excited about **FastAPI**. It’s so fun!_" + +
Brian Okken - Python Bytes podcast host (ref)
+ +--- + +"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._" + +
Timothy Crosley - Hug creator (ref)
+ +--- + +"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_" + +"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_" + +
Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref)
+ +--- + +## **Typer**, the FastAPI of CLIs + + + +If you are building a CLI app to be used in the terminal instead of a web API, check out **Typer**. + +**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. ⌨️ 🚀 + +## Requirements + +Python 3.6+ + +FastAPI stands on the shoulders of giants: + +* Starlette for the web parts. +* Pydantic for the data parts. + +## Installation + +
+ +```console +$ pip install fastapi + +---> 100% +``` + +
+ +You will also need an ASGI server, for production such as Uvicorn or Hypercorn. + +
+ +```console +$ pip install "uvicorn[standard]" + +---> 100% +``` + +
+ +## Example + +### Create it + +* Create a file `main.py` with: + +```Python +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +
+Or use async def... + +If your code uses `async` / `await`, use `async def`: + +```Python hl_lines="9 14" +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +async def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +async def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +**Note**: + +If you don't know, check the _"In a hurry?"_ section about `async` and `await` in the docs. + +
+ +### Run it + +Run the server with: + +
+ +```console +$ uvicorn main:app --reload + +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [28720] +INFO: Started server process [28722] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +
+ +
+About the command uvicorn main:app --reload... + +The command `uvicorn main:app` refers to: + +* `main`: the file `main.py` (the Python "module"). +* `app`: the object created inside of `main.py` with the line `app = FastAPI()`. +* `--reload`: make the server restart after code changes. Only do this for development. + +
+ +### Check it + +Open your browser at http://127.0.0.1:8000/items/5?q=somequery. + +You will see the JSON response as: + +```JSON +{"item_id": 5, "q": "somequery"} +``` + +You already created an API that: + +* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. +* Both _paths_ take `GET` operations (also known as HTTP _methods_). +* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. +* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. + +### Interactive API docs + +Now go to http://127.0.0.1:8000/docs. + +You will see the automatic interactive API documentation (provided by Swagger UI): + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) + +### Alternative API docs + +And now, go to http://127.0.0.1:8000/redoc. + +You will see the alternative automatic documentation (provided by ReDoc): + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) + +## Example upgrade + +Now modify the file `main.py` to receive a body from a `PUT` request. + +Declare the body using standard Python types, thanks to Pydantic. + +```Python hl_lines="4 9-12 25-27" +from typing import Optional + +from fastapi import FastAPI +from pydantic import BaseModel + +app = FastAPI() + + +class Item(BaseModel): + name: str + price: float + is_offer: Optional[bool] = None + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} + + +@app.put("/items/{item_id}") +def update_item(item_id: int, item: Item): + return {"item_name": item.name, "item_id": item_id} +``` + +The server should reload automatically (because you added `--reload` to the `uvicorn` command above). + +### Interactive API docs upgrade + +Now go to http://127.0.0.1:8000/docs. + +* The interactive API documentation will be automatically updated, including the new body: + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) + +* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) + +### Alternative API docs upgrade + +And now, go to http://127.0.0.1:8000/redoc. + +* The alternative documentation will also reflect the new query parameter and body: + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Recap + +In summary, you declare **once** the types of parameters, body, etc. as function parameters. + +You do that with standard modern Python types. + +You don't have to learn a new syntax, the methods or classes of a specific library, etc. + +Just standard **Python 3.6+**. + +For example, for an `int`: + +```Python +item_id: int +``` + +or for a more complex `Item` model: + +```Python +item: Item +``` + +...and with that single declaration you get: + +* Editor support, including: + * Completion. + * Type checks. +* Validation of data: + * Automatic and clear errors when the data is invalid. + * Validation even for deeply nested JSON objects. +* Conversion of input data: coming from the network to Python data and types. Reading from: + * JSON. + * Path parameters. + * Query parameters. + * Cookies. + * Headers. + * Forms. + * Files. +* Conversion of output data: converting from Python data and types to network data (as JSON): + * Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc). + * `datetime` objects. + * `UUID` objects. + * Database models. + * ...and many more. +* Automatic interactive API documentation, including 2 alternative user interfaces: + * Swagger UI. + * ReDoc. + +--- + +Coming back to the previous code example, **FastAPI** will: + +* Validate that there is an `item_id` in the path for `GET` and `PUT` requests. +* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests. + * If it is not, the client will see a useful, clear error. +* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests. + * As the `q` parameter is declared with `= None`, it is optional. + * Without the `None` it would be required (as is the body in the case with `PUT`). +* For `PUT` requests to `/items/{item_id}`, Read the body as JSON: + * Check that it has a required attribute `name` that should be a `str`. + * Check that it has a required attribute `price` that has to be a `float`. + * Check that it has an optional attribute `is_offer`, that should be a `bool`, if present. + * All this would also work for deeply nested JSON objects. +* Convert from and to JSON automatically. +* Document everything with OpenAPI, that can be used by: + * Interactive documentation systems. + * Automatic client code generation systems, for many languages. +* Provide 2 interactive documentation web interfaces directly. + +--- + +We just scratched the surface, but you already get the idea of how it all works. + +Try changing the line with: + +```Python + return {"item_name": item.name, "item_id": item_id} +``` + +...from: + +```Python + ... "item_name": item.name ... +``` + +...to: + +```Python + ... "item_price": item.price ... +``` + +...and see how your editor will auto-complete the attributes and know their types: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +For a more complete example including more features, see the Tutorial - User Guide. + +**Spoiler alert**: the tutorial - user guide includes: + +* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**. +* How to set **validation constraints** as `maximum_length` or `regex`. +* A very powerful and easy to use **Dependency Injection** system. +* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth. +* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic). +* **GraphQL** integration with Strawberry and other libraries. +* Many extra features (thanks to Starlette) as: + * **WebSockets** + * extremely easy tests based on `requests` and `pytest` + * **CORS** + * **Cookie Sessions** + * ...and more. + +## Performance + +Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) + +To understand more about it, see the section Benchmarks. + +## Optional Dependencies + +Used by Pydantic: + +* ujson - for faster JSON "parsing". +* email_validator - for email validation. + +Used by Starlette: + +* requests - Required if you want to use the `TestClient`. +* jinja2 - Required if you want to use the default template configuration. +* python-multipart - Required if you want to support form "parsing", with `request.form()`. +* itsdangerous - Required for `SessionMiddleware` support. +* pyyaml - Required for Starlette's `SchemaGenerator` support (you probably don't need it with FastAPI). +* ujson - Required if you want to use `UJSONResponse`. + +Used by FastAPI / Starlette: + +* uvicorn - for the server that loads and serves your application. +* orjson - Required if you want to use `ORJSONResponse`. + +You can install all of these with `pip install "fastapi[all]"`. + +## License + +This project is licensed under the terms of the MIT license. diff --git a/docs/nl/mkdocs.yml b/docs/nl/mkdocs.yml new file mode 100644 index 000000000..c853216f5 --- /dev/null +++ b/docs/nl/mkdocs.yml @@ -0,0 +1,135 @@ +site_name: FastAPI +site_description: FastAPI framework, high performance, easy to learn, fast to code, ready for production +site_url: https://fastapi.tiangolo.com/nl/ +theme: + name: material + custom_dir: overrides + palette: + - scheme: default + primary: teal + accent: amber + toggle: + icon: material/lightbulb + name: Switch to light mode + - scheme: slate + primary: teal + accent: amber + toggle: + icon: material/lightbulb-outline + name: Switch to dark mode + features: + - search.suggest + - search.highlight + - content.tabs.link + icon: + repo: fontawesome/brands/github-alt + logo: https://fastapi.tiangolo.com/img/icon-white.svg + favicon: https://fastapi.tiangolo.com/img/favicon.png + language: nl +repo_name: tiangolo/fastapi +repo_url: https://github.com/tiangolo/fastapi +edit_uri: '' +plugins: +- search +- markdownextradata: + data: data +nav: +- FastAPI: index.md +- Languages: + - en: / + - az: /az/ + - de: /de/ + - es: /es/ + - fa: /fa/ + - fr: /fr/ + - id: /id/ + - it: /it/ + - ja: /ja/ + - ko: /ko/ + - nl: /nl/ + - pl: /pl/ + - pt: /pt/ + - ru: /ru/ + - sq: /sq/ + - tr: /tr/ + - uk: /uk/ + - zh: /zh/ +markdown_extensions: +- toc: + permalink: true +- markdown.extensions.codehilite: + guess_lang: false +- mdx_include: + base_path: docs +- admonition +- codehilite +- extra +- pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format '' +- pymdownx.tabbed: + alternate_style: true +extra: + analytics: + provider: google + property: UA-133183413-1 + social: + - icon: fontawesome/brands/github-alt + link: https://github.com/tiangolo/fastapi + - icon: fontawesome/brands/discord + link: https://discord.gg/VQjSZaeJmf + - icon: fontawesome/brands/twitter + link: https://twitter.com/fastapi + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/in/tiangolo + - icon: fontawesome/brands/dev + link: https://dev.to/tiangolo + - icon: fontawesome/brands/medium + link: https://medium.com/@tiangolo + - icon: fontawesome/solid/globe + link: https://tiangolo.com + alternate: + - link: / + name: en - English + - link: /az/ + name: az + - link: /de/ + name: de + - link: /es/ + name: es - español + - link: /fa/ + name: fa + - link: /fr/ + name: fr - français + - link: /id/ + name: id + - link: /it/ + name: it - italiano + - link: /ja/ + name: ja - 日本語 + - link: /ko/ + name: ko - 한국어 + - link: /nl/ + name: nl + - link: /pl/ + name: pl + - link: /pt/ + name: pt - português + - link: /ru/ + name: ru - русский язык + - link: /sq/ + name: sq - shqip + - link: /tr/ + name: tr - Türkçe + - link: /uk/ + name: uk - українська мова + - link: /zh/ + name: zh - 汉语 +extra_css: +- https://fastapi.tiangolo.com/css/termynal.css +- https://fastapi.tiangolo.com/css/custom.css +extra_javascript: +- https://fastapi.tiangolo.com/js/termynal.js +- https://fastapi.tiangolo.com/js/custom.js diff --git a/docs/nl/overrides/.gitignore b/docs/nl/overrides/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docs/pl/mkdocs.yml b/docs/pl/mkdocs.yml index da68165c7..67b41fe53 100644 --- a/docs/pl/mkdocs.yml +++ b/docs/pl/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/pt/mkdocs.yml b/docs/pt/mkdocs.yml index 522b3c86a..4861602e4 100644 --- a/docs/pt/mkdocs.yml +++ b/docs/pt/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -130,6 +131,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/ru/mkdocs.yml b/docs/ru/mkdocs.yml index 643f0aa70..213f941d7 100644 --- a/docs/ru/mkdocs.yml +++ b/docs/ru/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/sq/mkdocs.yml b/docs/sq/mkdocs.yml index e4a1724c3..a61f49bc9 100644 --- a/docs/sq/mkdocs.yml +++ b/docs/sq/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/tr/mkdocs.yml b/docs/tr/mkdocs.yml index 041c11b97..dd52d7fcc 100644 --- a/docs/tr/mkdocs.yml +++ b/docs/tr/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -113,6 +114,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/uk/mkdocs.yml b/docs/uk/mkdocs.yml index 2d704b989..971a182db 100644 --- a/docs/uk/mkdocs.yml +++ b/docs/uk/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -110,6 +111,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml index f424b117b..408166489 100644 --- a/docs/zh/mkdocs.yml +++ b/docs/zh/mkdocs.yml @@ -46,6 +46,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - nl: /nl/ - pl: /pl/ - pt: /pt/ - ru: /ru/ @@ -161,6 +162,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /nl/ + name: nl - link: /pl/ name: pl - link: /pt/ From eddbae948f04e13fe412dc45a569d10e34b698a4 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 18 Mar 2022 16:48:49 +0000 Subject: [PATCH 16/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index da1cd5c32..b0445a4ef 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🌐 Start Dutch translations. PR [#4703](https://github.com/tiangolo/fastapi/pull/4703) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Persian/Farsi translations. PR [#4243](https://github.com/tiangolo/fastapi/pull/4243) by [@aminalaee](https://github.com/aminalaee). * ✏ Reword sentence about handling errors. PR [#1993](https://github.com/tiangolo/fastapi/pull/1993) by [@khuhroproeza](https://github.com/khuhroproeza). From e1d0e3874b86bc2d12c0fb720fd35719b985abae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Fri, 1 Apr 2022 18:01:51 -0500 Subject: [PATCH 17/42] =?UTF-8?q?=E2=9E=96=20Temporarily=20remove=20typer-?= =?UTF-8?q?cli=20from=20dependencies=20and=20upgrade=20Black=20(#4754)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 6 ++++-- tests/test_tutorial/test_request_files/test_tutorial001.py | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 77c01322f..46a655a48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -50,7 +50,7 @@ test = [ "pytest-cov >=2.12.0,<4.0.0", "mypy ==0.910", "flake8 >=3.8.3,<4.0.0", - "black ==21.9b0", + "black == 22.3.0", "isort >=5.0.6,<6.0.0", "requests >=2.24.0,<3.0.0", "httpx >=0.14.0,<0.19.0", @@ -74,7 +74,9 @@ doc = [ "mkdocs-material >=8.1.4,<9.0.0", "mdx-include >=1.4.1,<2.0.0", "mkdocs-markdownextradata-plugin >=0.1.7,<0.3.0", - "typer-cli >=0.0.12,<0.0.13", + # TODO: upgrade and enable typer-cli once it supports Click 8.x.x + # "typer-cli >=0.0.12,<0.0.13", + "typer >=0.4.1,<0.5.0", "pyyaml >=5.3.1,<6.0.0" ] dev = [ diff --git a/tests/test_tutorial/test_request_files/test_tutorial001.py b/tests/test_tutorial/test_request_files/test_tutorial001.py index c1537f445..841116e30 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial001.py +++ b/tests/test_tutorial/test_request_files/test_tutorial001.py @@ -162,7 +162,7 @@ def test_post_file(tmp_path): def test_post_large_file(tmp_path): - default_pydantic_max_size = 2 ** 16 + default_pydantic_max_size = 2**16 path = tmp_path / "test.txt" path.write_bytes(b"x" * (default_pydantic_max_size + 1)) From 233214795a93178518292c87f5dd90baa7fcb76b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 1 Apr 2022 18:02:17 -0500 Subject: [PATCH 18/42] =?UTF-8?q?=F0=9F=91=A5=20Update=20FastAPI=20People?= =?UTF-8?q?=20(#4752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions --- docs/en/data/github_sponsors.yml | 42 ++++-------------- docs/en/data/people.yml | 74 ++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 66 deletions(-) diff --git a/docs/en/data/github_sponsors.yml b/docs/en/data/github_sponsors.yml index 1d8dc9984..42339d262 100644 --- a/docs/en/data/github_sponsors.yml +++ b/docs/en/data/github_sponsors.yml @@ -38,21 +38,18 @@ sponsors: - login: BoostryJP avatarUrl: https://avatars.githubusercontent.com/u/57932412?v=4 url: https://github.com/BoostryJP -- - login: bolau - avatarUrl: https://avatars.githubusercontent.com/u/488733?u=902c9f9b85db0e21aca11bf30d904ee8e87fffef&v=4 - url: https://github.com/bolau - - login: johnadjei +- - login: johnadjei avatarUrl: https://avatars.githubusercontent.com/u/767860?v=4 url: https://github.com/johnadjei - login: HiredScore avatarUrl: https://avatars.githubusercontent.com/u/3908850?v=4 url: https://github.com/HiredScore + - login: spackle0 + avatarUrl: https://avatars.githubusercontent.com/u/6148423?u=750e21b7366c0de69c305a8bcda1365d921ae477&v=4 + url: https://github.com/spackle0 - login: wdwinslow avatarUrl: https://avatars.githubusercontent.com/u/11562137?u=dc01daafb354135603a263729e3d26d939c0c452&v=4 url: https://github.com/wdwinslow -- - login: orvad - avatarUrl: https://avatars.githubusercontent.com/u/7700522?v=4 - url: https://github.com/orvad - - login: moellenbeck avatarUrl: https://avatars.githubusercontent.com/u/169372?v=4 url: https://github.com/moellenbeck @@ -65,9 +62,6 @@ sponsors: - login: tizz98 avatarUrl: https://avatars.githubusercontent.com/u/5739698?u=f095a3659e3a8e7c69ccd822696990b521ea25f9&v=4 url: https://github.com/tizz98 - - login: mntolia - avatarUrl: https://avatars.githubusercontent.com/u/10390224?v=4 - url: https://github.com/mntolia - login: jmaralc avatarUrl: https://avatars.githubusercontent.com/u/21101214?u=b15a9f07b7cbf6c9dcdbcb6550bbd2c52f55aa50&v=4 url: https://github.com/jmaralc @@ -83,6 +77,9 @@ sponsors: - login: A-Edge avatarUrl: https://avatars.githubusercontent.com/u/59514131?v=4 url: https://github.com/A-Edge +- - login: hcristea + avatarUrl: https://avatars.githubusercontent.com/u/7814406?u=61d7a4fcf846983a4606788eac25e1c6c1209ba8&v=4 + url: https://github.com/hcristea - - login: samuelcolvin avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=807390ba9cfe23906c3bf8a0d56aaca3cf2bfa0d&v=4 url: https://github.com/samuelcolvin @@ -278,9 +275,6 @@ sponsors: - login: dudikbender avatarUrl: https://avatars.githubusercontent.com/u/53487583?u=494f85229115076121b3639a3806bbac1c6ae7f6&v=4 url: https://github.com/dudikbender - - login: jorge4larcon - avatarUrl: https://avatars.githubusercontent.com/u/54189123?v=4 - url: https://github.com/jorge4larcon - login: daisuke8000 avatarUrl: https://avatars.githubusercontent.com/u/55035595?u=5025e379cd3655ae1a96039efc85223a873d2e38&v=4 url: https://github.com/daisuke8000 @@ -314,9 +308,6 @@ sponsors: - - login: '837477' avatarUrl: https://avatars.githubusercontent.com/u/37999795?u=543b0bd0e8f283db0fc50754e5d13f6afba8cbea&v=4 url: https://github.com/837477 - - login: naheedroomy - avatarUrl: https://avatars.githubusercontent.com/u/46345736?v=4 - url: https://github.com/naheedroomy - - login: linux-china avatarUrl: https://avatars.githubusercontent.com/u/46711?v=4 url: https://github.com/linux-china @@ -333,7 +324,7 @@ sponsors: avatarUrl: https://avatars.githubusercontent.com/u/144028?u=defda4f90e93429221cc667500944abde60ebe4a&v=4 url: https://github.com/bryanculbertson - login: yourkin - avatarUrl: https://avatars.githubusercontent.com/u/178984?u=163b8c6d9b2d240164ade467cbc9efb16d2432e4&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/178984?u=fa7c3503b47bf16405b96d21554bc59f07a65523&v=4 url: https://github.com/yourkin - login: slafs avatarUrl: https://avatars.githubusercontent.com/u/210173?v=4 @@ -404,9 +395,6 @@ sponsors: - login: unredundant avatarUrl: https://avatars.githubusercontent.com/u/5607577?u=57dd0023365bec03f4fc566df6b81bc0a264a47d&v=4 url: https://github.com/unredundant - - login: Baghdady92 - avatarUrl: https://avatars.githubusercontent.com/u/5708590?v=4 - url: https://github.com/Baghdady92 - login: holec avatarUrl: https://avatars.githubusercontent.com/u/6438041?u=f5af71ec85b3a9d7b8139cb5af0512b02fa9ab1e&v=4 url: https://github.com/holec @@ -423,7 +411,7 @@ sponsors: avatarUrl: https://avatars.githubusercontent.com/u/9358572?u=4a38ef72dd39e8b262bd5ab819992128b55c52b4&v=4 url: https://github.com/VivianSolide - login: xncbf - avatarUrl: https://avatars.githubusercontent.com/u/9462045?u=ded074228b35b46a76b980d2dda522e45277f96d&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/9462045?u=866a1311e4bd3ec5ae84185c4fcc99f397c883d7&v=4 url: https://github.com/xncbf - login: DMantis avatarUrl: https://avatars.githubusercontent.com/u/9536869?v=4 @@ -473,21 +461,12 @@ sponsors: - login: askurihin avatarUrl: https://avatars.githubusercontent.com/u/37978981?v=4 url: https://github.com/askurihin - - login: JitPackJoyride - avatarUrl: https://avatars.githubusercontent.com/u/40203625?u=cfad4285914e018af72a3f3c16d8ac11321201e3&v=4 - url: https://github.com/JitPackJoyride - - login: es3n1n - avatarUrl: https://avatars.githubusercontent.com/u/40367813?u=cfaaedfb5da6c2c00330f8ebb041cd39c6a6273d&v=4 - url: https://github.com/es3n1n - login: ilias-ant avatarUrl: https://avatars.githubusercontent.com/u/42189572?u=a2d6121bac4d125d92ec207460fa3f1842d37e66&v=4 url: https://github.com/ilias-ant - login: arrrrrmin avatarUrl: https://avatars.githubusercontent.com/u/43553423?u=fee5739394fea074cb0b66929d070114a5067aae&v=4 url: https://github.com/arrrrrmin - - login: 4heck - avatarUrl: https://avatars.githubusercontent.com/u/45015299?u=7dfb2aca55bff66849396588828a90e090212f81&v=4 - url: https://github.com/4heck - login: igorezersky avatarUrl: https://avatars.githubusercontent.com/u/46680020?u=a20a595c881dbe5658c906fecc7eff125efb4fd4&v=4 url: https://github.com/igorezersky @@ -527,6 +506,3 @@ sponsors: - login: danburonline avatarUrl: https://avatars.githubusercontent.com/u/34251194?u=2cad4388c1544e539ecb732d656e42fb07b4ff2d&v=4 url: https://github.com/danburonline - - login: foryourselfand - avatarUrl: https://avatars.githubusercontent.com/u/43334967?u=8abd999f94bc0852d035b765155d5138a88288ce&v=4 - url: https://github.com/foryourselfand diff --git a/docs/en/data/people.yml b/docs/en/data/people.yml index 591800a35..2f05b3e6b 100644 --- a/docs/en/data/people.yml +++ b/docs/en/data/people.yml @@ -1,7 +1,7 @@ maintainers: - login: tiangolo answers: 1240 - prs: 289 + prs: 291 avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=5cad72c846b7aba2e960546af490edc7375dafc4&v=4 url: https://github.com/tiangolo experts: @@ -54,7 +54,7 @@ experts: avatarUrl: https://avatars.githubusercontent.com/u/27180793?u=5cf2877f50b3eb2bc55086089a78a36f07042889&v=4 url: https://github.com/Dustyposa - login: includeamin - count: 38 + count: 39 avatarUrl: https://avatars.githubusercontent.com/u/11836741?u=8bd5ef7e62fe6a82055e33c4c0e0a7879ff8cfb6&v=4 url: https://github.com/includeamin - login: STeveShary @@ -81,14 +81,14 @@ experts: count: 29 avatarUrl: https://avatars.githubusercontent.com/u/365303?u=07ca03c5ee811eb0920e633cc3c3db73dbec1aa5&v=4 url: https://github.com/wshayes +- login: chbndrhnns + count: 26 + avatarUrl: https://avatars.githubusercontent.com/u/7534547?v=4 + url: https://github.com/chbndrhnns - login: panla count: 26 avatarUrl: https://avatars.githubusercontent.com/u/41326348?u=ba2fda6b30110411ecbf406d187907e2b420ac19&v=4 url: https://github.com/panla -- login: chbndrhnns - count: 25 - avatarUrl: https://avatars.githubusercontent.com/u/7534547?v=4 - url: https://github.com/chbndrhnns - login: ghandic count: 25 avatarUrl: https://avatars.githubusercontent.com/u/23500353?u=e2e1d736f924d9be81e8bfc565b6d8836ba99773&v=4 @@ -101,6 +101,10 @@ experts: count: 24 avatarUrl: https://avatars.githubusercontent.com/u/9435877?u=719327b7d2c4c62212456d771bfa7c6b8dbb9eac&v=4 url: https://github.com/SirTelemak +- login: jgould22 + count: 23 + avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 + url: https://github.com/jgould22 - login: acnebs count: 22 avatarUrl: https://avatars.githubusercontent.com/u/9054108?u=c27e50269f1ef8ea950cc6f0268c8ec5cebbe9c9&v=4 @@ -113,14 +117,14 @@ experts: count: 21 avatarUrl: https://avatars.githubusercontent.com/u/565544?v=4 url: https://github.com/chris-allnutt -- login: jgould22 - count: 20 - avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 - url: https://github.com/jgould22 - login: retnikt count: 19 avatarUrl: https://avatars.githubusercontent.com/u/24581770?v=4 url: https://github.com/retnikt +- login: acidjunk + count: 18 + avatarUrl: https://avatars.githubusercontent.com/u/685002?u=b5094ab4527fc84b006c0ac9ff54367bdebb2267&v=4 + url: https://github.com/acidjunk - login: Hultner count: 18 avatarUrl: https://avatars.githubusercontent.com/u/2669034?u=115e53df959309898ad8dc9443fbb35fee71df07&v=4 @@ -133,10 +137,10 @@ experts: count: 17 avatarUrl: https://avatars.githubusercontent.com/u/28262306?u=66ee21316275ef356081c2efc4ed7a4572e690dc&v=4 url: https://github.com/nkhitrov -- login: acidjunk - count: 16 - avatarUrl: https://avatars.githubusercontent.com/u/685002?u=b5094ab4527fc84b006c0ac9ff54367bdebb2267&v=4 - url: https://github.com/acidjunk +- login: harunyasar + count: 17 + avatarUrl: https://avatars.githubusercontent.com/u/1765494?u=5b1ab7c582db4b4016fa31affe977d10af108ad4&v=4 + url: https://github.com/harunyasar - login: waynerv count: 16 avatarUrl: https://avatars.githubusercontent.com/u/39515546?u=ec35139777597cdbbbddda29bf8b9d4396b429a9&v=4 @@ -145,10 +149,6 @@ experts: count: 16 avatarUrl: https://avatars.githubusercontent.com/u/41964673?u=9f2174f9d61c15c6e3a4c9e3aeee66f711ce311f&v=4 url: https://github.com/dstlny -- login: harunyasar - count: 16 - avatarUrl: https://avatars.githubusercontent.com/u/1765494?u=5b1ab7c582db4b4016fa31affe977d10af108ad4&v=4 - url: https://github.com/harunyasar - login: rafsaf count: 15 avatarUrl: https://avatars.githubusercontent.com/u/51059348?u=be9f06b8ced2d2b677297decc781fa8ce4f7ddbd&v=4 @@ -199,25 +199,33 @@ experts: url: https://github.com/n8sty last_month_active: - login: yinziyan1206 - count: 7 + count: 5 avatarUrl: https://avatars.githubusercontent.com/u/37829370?v=4 url: https://github.com/yinziyan1206 - login: Kludex - count: 6 + count: 5 avatarUrl: https://avatars.githubusercontent.com/u/7353520?u=62adc405ef418f4b6c8caa93d3eb8ab107bc4927&v=4 url: https://github.com/Kludex +- login: jd-0001 + count: 4 + avatarUrl: https://avatars.githubusercontent.com/u/47495003?u=322eedc0931b62827cf5f239654f77bfaff76b46&v=4 + url: https://github.com/jd-0001 +- login: harunyasar + count: 3 + avatarUrl: https://avatars.githubusercontent.com/u/1765494?u=5b1ab7c582db4b4016fa31affe977d10af108ad4&v=4 + url: https://github.com/harunyasar +- login: wmcgee3 + count: 3 + avatarUrl: https://avatars.githubusercontent.com/u/61711986?u=c51ebfaf8a995019fda8288690f4a009ecf070f0&v=4 + url: https://github.com/wmcgee3 +- login: tasercake + count: 3 + avatarUrl: https://avatars.githubusercontent.com/u/13855549?v=4 + url: https://github.com/tasercake - login: jgould22 count: 3 avatarUrl: https://avatars.githubusercontent.com/u/4335847?u=ed77f67e0bb069084639b24d812dbb2a2b1dc554&v=4 url: https://github.com/jgould22 -- login: rafsaf - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/51059348?u=be9f06b8ced2d2b677297decc781fa8ce4f7ddbd&v=4 - url: https://github.com/rafsaf -- login: gmanny - count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/1166296?v=4 - url: https://github.com/gmanny top_contributors: - login: waynerv count: 25 @@ -317,7 +325,7 @@ top_reviewers: avatarUrl: https://avatars.githubusercontent.com/u/62724709?u=826f228edf0bab0d19ad1d5c4ba4df1047ccffef&v=4 url: https://github.com/ycd - login: cikay - count: 40 + count: 41 avatarUrl: https://avatars.githubusercontent.com/u/24587499?u=e772190a051ab0eaa9c8542fcff1892471638f2b&v=4 url: https://github.com/cikay - login: AdrianDeAnda @@ -328,6 +336,10 @@ top_reviewers: count: 31 avatarUrl: https://avatars.githubusercontent.com/u/31127044?u=81a84af39c89b898b0fbc5a04e8834f60f23e55a&v=4 url: https://github.com/ArcLightSlavik +- login: BilalAlpaslan + count: 28 + avatarUrl: https://avatars.githubusercontent.com/u/47563997?u=63ed66e304fe8d765762c70587d61d9196e5c82d&v=4 + url: https://github.com/BilalAlpaslan - login: dmontagu count: 23 avatarUrl: https://avatars.githubusercontent.com/u/35119617?u=58ed2a45798a4339700e2f62b2e12e6e54bf0396&v=4 @@ -348,10 +360,6 @@ top_reviewers: count: 19 avatarUrl: https://avatars.githubusercontent.com/u/63915557?u=47debaa860fd52c9b98c97ef357ddcec3b3fb399&v=4 url: https://github.com/0417taehyun -- login: BilalAlpaslan - count: 18 - avatarUrl: https://avatars.githubusercontent.com/u/47563997?u=63ed66e304fe8d765762c70587d61d9196e5c82d&v=4 - url: https://github.com/BilalAlpaslan - login: zy7y count: 17 avatarUrl: https://avatars.githubusercontent.com/u/67154681?u=5d634834cc514028ea3f9115f7030b99a1f4d5a4&v=4 From 2c31667407fde305ea52046882879b6547a51b43 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 1 Apr 2022 23:02:28 +0000 Subject: [PATCH 19/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index b0445a4ef..4383a4bd5 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ➖ Temporarily remove typer-cli from dependencies and upgrade Black. PR [#4754](https://github.com/tiangolo/fastapi/pull/4754) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Dutch translations. PR [#4703](https://github.com/tiangolo/fastapi/pull/4703) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Persian/Farsi translations. PR [#4243](https://github.com/tiangolo/fastapi/pull/4243) by [@aminalaee](https://github.com/aminalaee). From 3fefc83d421a775bca4c0caf1b33ed17fb190978 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 1 Apr 2022 23:02:53 +0000 Subject: [PATCH 20/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 4383a4bd5..12bf7f006 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 👥 Update FastAPI People. PR [#4752](https://github.com/tiangolo/fastapi/pull/4752) by [@github-actions[bot]](https://github.com/apps/github-actions). * ➖ Temporarily remove typer-cli from dependencies and upgrade Black. PR [#4754](https://github.com/tiangolo/fastapi/pull/4754) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Dutch translations. PR [#4703](https://github.com/tiangolo/fastapi/pull/4703) by [@tiangolo](https://github.com/tiangolo). * 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). From 9e018c322cd05f0fc5e52804efe577e847c8731d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Fri, 1 Apr 2022 18:05:06 -0500 Subject: [PATCH 21/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 12bf7f006..d75a220cb 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,12 +2,17 @@ ## Latest Changes -* 👥 Update FastAPI People. PR [#4752](https://github.com/tiangolo/fastapi/pull/4752) by [@github-actions[bot]](https://github.com/apps/github-actions). -* ➖ Temporarily remove typer-cli from dependencies and upgrade Black. PR [#4754](https://github.com/tiangolo/fastapi/pull/4754) by [@tiangolo](https://github.com/tiangolo). +### Translations + * 🌐 Start Dutch translations. PR [#4703](https://github.com/tiangolo/fastapi/pull/4703) by [@tiangolo](https://github.com/tiangolo). -* 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). * 🌐 Start Persian/Farsi translations. PR [#4243](https://github.com/tiangolo/fastapi/pull/4243) by [@aminalaee](https://github.com/aminalaee). * ✏ Reword sentence about handling errors. PR [#1993](https://github.com/tiangolo/fastapi/pull/1993) by [@khuhroproeza](https://github.com/khuhroproeza). + +### Internal + +* 👥 Update FastAPI People. PR [#4752](https://github.com/tiangolo/fastapi/pull/4752) by [@github-actions[bot]](https://github.com/apps/github-actions). +* ➖ Temporarily remove typer-cli from dependencies and upgrade Black to unblock Pydantic CI. PR [#4754](https://github.com/tiangolo/fastapi/pull/4754) by [@tiangolo](https://github.com/tiangolo). +* 🔧 Add configuration to notify Dutch translations. PR [#4702](https://github.com/tiangolo/fastapi/pull/4702) by [@tiangolo](https://github.com/tiangolo). * 👥 Update FastAPI People. PR [#4699](https://github.com/tiangolo/fastapi/pull/4699) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🐛 Fix FastAPI People generation to include missing file in commit. PR [#4695](https://github.com/tiangolo/fastapi/pull/4695) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update Classiq sponsor links. PR [#4688](https://github.com/tiangolo/fastapi/pull/4688) by [@tiangolo](https://github.com/tiangolo). From 26f725d259c5dbe3654f221e608b14412c6b40da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Fri, 1 Apr 2022 18:05:52 -0500 Subject: [PATCH 22/42] =?UTF-8?q?=F0=9F=94=96=20Release=20version=200.75.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 3 +++ fastapi/__init__.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index d75a220cb..4b0ba6c04 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,9 @@ ## Latest Changes + +## 0.75.1 + ### Translations * 🌐 Start Dutch translations. PR [#4703](https://github.com/tiangolo/fastapi/pull/4703) by [@tiangolo](https://github.com/tiangolo). diff --git a/fastapi/__init__.py b/fastapi/__init__.py index 4bce5f017..0ce2ef720 100644 --- a/fastapi/__init__.py +++ b/fastapi/__init__.py @@ -1,6 +1,6 @@ """FastAPI framework, high performance, easy to learn, fast to code, ready for production""" -__version__ = "0.75.0" +__version__ = "0.75.1" from starlette import status as status From cc57bfcf6053aa419e80e12296ed8a053c65128b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sat, 16 Apr 2022 10:18:08 +0200 Subject: [PATCH 23/42] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Upgrade=20Codecov=20?= =?UTF-8?q?GitHub=20Action=20(#4801)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 21ea7c1a8..aee3a994d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -38,4 +38,4 @@ jobs: - name: Test run: bash scripts/test.sh - name: Upload coverage - uses: codecov/codecov-action@v1 + uses: codecov/codecov-action@v2 From c4f361c0c47cdb3b0de036ddffe21fce9d031180 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sat, 16 Apr 2022 08:18:43 +0000 Subject: [PATCH 24/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 4b0ba6c04..fc23da85d 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). ## 0.75.1 From acf8a91c258003f3ff487bed0974c479f7136333 Mon Sep 17 00:00:00 2001 From: Alan Wright <31636206+RAlanWright@users.noreply.github.com> Date: Sun, 17 Apr 2022 09:47:14 -0500 Subject: [PATCH 25/42] =?UTF-8?q?=E2=AC=86=20Upgrade=20Swagger=20UI=20-=20?= =?UTF-8?q?swagger-ui-dist@4=20(#4347)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- fastapi/openapi/docs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fastapi/openapi/docs.py b/fastapi/openapi/docs.py index 1be90d188..d6af17a85 100644 --- a/fastapi/openapi/docs.py +++ b/fastapi/openapi/docs.py @@ -17,8 +17,8 @@ def get_swagger_ui_html( *, openapi_url: str, title: str, - swagger_js_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui-bundle.js", - swagger_css_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@3/swagger-ui.css", + swagger_js_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@4/swagger-ui-bundle.js", + swagger_css_url: str = "https://cdn.jsdelivr.net/npm/swagger-ui-dist@4/swagger-ui.css", swagger_favicon_url: str = "https://fastapi.tiangolo.com/img/favicon.png", oauth2_redirect_url: Optional[str] = None, init_oauth: Optional[Dict[str, Any]] = None, From e1135eddb5d6dbd8a16d699b90e353b04c2700d3 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 14:47:55 +0000 Subject: [PATCH 26/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index fc23da85d..a449e10a1 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆ Upgrade Swagger UI - swagger-ui-dist@4. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). ## 0.75.1 From 75af47202907da4ca5969c48b08c94dcfe0036ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 16:55:37 +0200 Subject: [PATCH 27/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index a449e10a1..9d9c2a802 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,7 +2,7 @@ ## Latest Changes -* ⬆ Upgrade Swagger UI - swagger-ui-dist@4. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). +* ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). ## 0.75.1 From 02fae6a38ea492dcd789e835c17c26a93b0697a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 17:51:42 +0200 Subject: [PATCH 28/42] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Upgrade=20dependenci?= =?UTF-8?q?es=20upper=20range=20for=20extras=20"all"=20(#4803)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 2 +- pyproject.toml | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aee3a994d..f0a82344e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -25,7 +25,7 @@ jobs: id: cache with: path: ${{ env.pythonLocation }} - key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test + key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test-v02 - name: Install Flit if: steps.cache.outputs.cache-hit != 'true' run: pip install flit diff --git a/pyproject.toml b/pyproject.toml index 46a655a48..9e928beff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,15 +59,15 @@ test = [ "peewee >=3.13.3,<4.0.0", "databases[sqlite] >=0.3.2,<0.6.0", "orjson >=3.2.1,<4.0.0", - "ujson >=4.0.1,<5.0.0", + "ujson >=4.0.1,<6.0.0", "python-multipart >=0.0.5,<0.0.6", "flask >=1.1.2,<3.0.0", "anyio[trio] >=3.2.1,<4.0.0", # types - "types-ujson ==0.1.1", - "types-orjson ==3.6.0", - "types-dataclasses ==0.1.7; python_version<'3.7'", + "types-ujson ==4.2.1", + "types-orjson ==3.6.2", + "types-dataclasses ==0.6.5; python_version<'3.7'", ] doc = [ "mkdocs >=1.1.2,<2.0.0", @@ -77,25 +77,25 @@ doc = [ # TODO: upgrade and enable typer-cli once it supports Click 8.x.x # "typer-cli >=0.0.12,<0.0.13", "typer >=0.4.1,<0.5.0", - "pyyaml >=5.3.1,<6.0.0" + "pyyaml >=5.3.1,<7.0.0", ] dev = [ "python-jose[cryptography] >=3.3.0,<4.0.0", "passlib[bcrypt] >=1.7.2,<2.0.0", "autoflake >=1.4.0,<2.0.0", "flake8 >=3.8.3,<4.0.0", - "uvicorn[standard] >=0.12.0,<0.16.0", + "uvicorn[standard] >=0.12.0,<0.18.0", ] all = [ "requests >=2.24.0,<3.0.0", "jinja2 >=2.11.2,<4.0.0", "python-multipart >=0.0.5,<0.0.6", "itsdangerous >=1.1.0,<3.0.0", - "pyyaml >=5.3.1,<6.0.0", - "ujson >=4.0.1,<5.0.0", + "pyyaml >=5.3.1,<7.0.0", + "ujson >=4.0.1,<6.0.0", "orjson >=3.2.1,<4.0.0", "email_validator >=1.1.1,<2.0.0", - "uvicorn[standard] >=0.12.0,<0.16.0", + "uvicorn[standard] >=0.12.0,<0.18.0", ] [tool.isort] From 0def8382b8386bebc7d04f9e57b638d777228c87 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 15:52:12 +0000 Subject: [PATCH 29/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 9d9c2a802..c78b7719a 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆️ Upgrade dependencies upper range for extras "all". PR [#4803](https://github.com/tiangolo/fastapi/pull/4803) by [@tiangolo](https://github.com/tiangolo). * ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). From 3cbfae16cf4f247a8d1940556a43168a04a23fac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 18:17:59 +0200 Subject: [PATCH 30/42] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Update=20ujson=20ran?= =?UTF-8?q?ges=20for=20CVE-2021-45958=20(#4804)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 9e928beff..7856085fb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -59,7 +59,7 @@ test = [ "peewee >=3.13.3,<4.0.0", "databases[sqlite] >=0.3.2,<0.6.0", "orjson >=3.2.1,<4.0.0", - "ujson >=4.0.1,<6.0.0", + "ujson >=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0", "python-multipart >=0.0.5,<0.0.6", "flask >=1.1.2,<3.0.0", "anyio[trio] >=3.2.1,<4.0.0", @@ -92,7 +92,7 @@ all = [ "python-multipart >=0.0.5,<0.0.6", "itsdangerous >=1.1.0,<3.0.0", "pyyaml >=5.3.1,<7.0.0", - "ujson >=4.0.1,<6.0.0", + "ujson >=4.0.1,!=4.0.2,!=4.1.0,!=4.2.0,!=4.3.0,!=5.0.0,!=5.1.0,<6.0.0", "orjson >=3.2.1,<4.0.0", "email_validator >=1.1.1,<2.0.0", "uvicorn[standard] >=0.12.0,<0.18.0", From cb4da936437d7e9fbc544f7f8c3237e01a6e2312 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 16:18:35 +0000 Subject: [PATCH 31/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index c78b7719a..e4830181f 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆️ Update ujson ranges for CVE-2021-45958. PR [#4804](https://github.com/tiangolo/fastapi/pull/4804) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade dependencies upper range for extras "all". PR [#4803](https://github.com/tiangolo/fastapi/pull/4803) by [@tiangolo](https://github.com/tiangolo). * ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). From d81c9081324758e4dd830b15e7abbb1817322b76 Mon Sep 17 00:00:00 2001 From: Marcelo Trylesinski Date: Sun, 17 Apr 2022 19:21:53 +0200 Subject: [PATCH 32/42] =?UTF-8?q?=F0=9F=90=9B=20Fix=20support=20for=20pref?= =?UTF-8?q?ix=20on=20APIRouter=20WebSockets=20(#2640)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- fastapi/routing.py | 2 +- tests/test_ws_router.py | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fastapi/routing.py b/fastapi/routing.py index 0f416ac42..7a15f3965 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -649,7 +649,7 @@ class APIRouter(routing.Router): self, path: str, endpoint: Callable[..., Any], name: Optional[str] = None ) -> None: route = APIWebSocketRoute( - path, + self.prefix + path, endpoint=endpoint, name=name, dependency_overrides_provider=self.dependency_overrides_provider, diff --git a/tests/test_ws_router.py b/tests/test_ws_router.py index bd7c3c53d..fbca104a2 100644 --- a/tests/test_ws_router.py +++ b/tests/test_ws_router.py @@ -3,6 +3,7 @@ from fastapi.testclient import TestClient router = APIRouter() prefix_router = APIRouter() +native_prefix_route = APIRouter(prefix="/native") app = FastAPI() @@ -47,8 +48,16 @@ async def router_ws_decorator_depends( await websocket.close() +@native_prefix_route.websocket("/") +async def router_native_prefix_ws(websocket: WebSocket): + await websocket.accept() + await websocket.send_text("Hello, router with native prefix!") + await websocket.close() + + app.include_router(router) app.include_router(prefix_router, prefix="/prefix") +app.include_router(native_prefix_route) def test_app(): @@ -72,6 +81,13 @@ def test_prefix_router(): assert data == "Hello, router with prefix!" +def test_native_prefix_router(): + client = TestClient(app) + with client.websocket_connect("/native/") as websocket: + data = websocket.receive_text() + assert data == "Hello, router with native prefix!" + + def test_router2(): client = TestClient(app) with client.websocket_connect("/router2") as websocket: From 1d8d81a6d5ba28f809ed9143a92f71fa31af3969 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 17:22:26 +0000 Subject: [PATCH 33/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index e4830181f..772d6a0d8 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🐛 Fix support for prefix on APIRouter WebSockets. PR [#2640](https://github.com/tiangolo/fastapi/pull/2640) by [@Kludex](https://github.com/Kludex). * ⬆️ Update ujson ranges for CVE-2021-45958. PR [#4804](https://github.com/tiangolo/fastapi/pull/4804) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade dependencies upper range for extras "all". PR [#4803](https://github.com/tiangolo/fastapi/pull/4803) by [@tiangolo](https://github.com/tiangolo). * ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). From c449ae5c74d7908b837a7ecf601f30cbfa246f72 Mon Sep 17 00:00:00 2001 From: dconathan Date: Sun, 17 Apr 2022 12:41:46 -0500 Subject: [PATCH 34/42] =?UTF-8?q?=F0=9F=90=9B=20Fix=20JSON=20Schema=20for?= =?UTF-8?q?=20`ValidationError`=20at=20field=20`loc`=20(#3810)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Devin Conathan --- fastapi/openapi/utils.py | 6 +++++- tests/test_additional_properties.py | 2 +- tests/test_additional_responses_custom_model_in_callback.py | 2 +- tests/test_additional_responses_default_validationerror.py | 2 +- tests/test_application.py | 2 +- tests/test_dependency_duplicates.py | 2 +- tests/test_extra_routes.py | 2 +- tests/test_filter_pydantic_sub_model.py | 2 +- tests/test_get_request_body.py | 2 +- tests/test_include_router_defaults_overrides.py | 2 +- tests/test_modules_same_name_body/test_main.py | 2 +- tests/test_multi_body_errors.py | 2 +- tests/test_multi_query_errors.py | 2 +- tests/test_param_in_path_and_dependency.py | 2 +- tests/test_put_no_body.py | 2 +- tests/test_repeated_dependency_schema.py | 2 +- tests/test_schema_extra_examples.py | 2 +- tests/test_security_oauth2.py | 2 +- tests/test_security_oauth2_optional.py | 2 +- tests/test_security_oauth2_optional_description.py | 2 +- tests/test_starlette_exception.py | 2 +- tests/test_sub_callbacks.py | 2 +- .../test_additional_responses/test_tutorial001.py | 2 +- .../test_additional_responses/test_tutorial002.py | 2 +- .../test_additional_responses/test_tutorial003.py | 2 +- .../test_additional_responses/test_tutorial004.py | 2 +- .../test_async_sql_databases/test_tutorial001.py | 2 +- tests/test_tutorial/test_bigger_applications/test_main.py | 2 +- tests/test_tutorial/test_body/test_tutorial001.py | 2 +- tests/test_tutorial/test_body_fields/test_tutorial001.py | 2 +- .../test_body_multiple_params/test_tutorial001.py | 2 +- .../test_body_multiple_params/test_tutorial003.py | 2 +- .../test_body_nested_models/test_tutorial009.py | 2 +- tests/test_tutorial/test_body_updates/test_tutorial001.py | 2 +- tests/test_tutorial/test_cookie_params/test_tutorial001.py | 2 +- tests/test_tutorial/test_dataclasses/test_tutorial001.py | 2 +- tests/test_tutorial/test_dataclasses/test_tutorial003.py | 2 +- tests/test_tutorial/test_dependencies/test_tutorial001.py | 2 +- tests/test_tutorial/test_dependencies/test_tutorial004.py | 2 +- tests/test_tutorial/test_dependencies/test_tutorial006.py | 2 +- tests/test_tutorial/test_dependencies/test_tutorial012.py | 2 +- tests/test_tutorial/test_events/test_tutorial001.py | 2 +- .../test_tutorial/test_extra_data_types/test_tutorial001.py | 2 +- tests/test_tutorial/test_extra_models/test_tutorial003.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial001.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial002.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial003.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial004.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial005.py | 2 +- .../test_tutorial/test_handling_errors/test_tutorial006.py | 2 +- tests/test_tutorial/test_header_params/test_tutorial001.py | 2 +- .../test_openapi_callbacks/test_tutorial001.py | 2 +- .../test_tutorial004.py | 2 +- .../test_path_operation_configurations/test_tutorial005.py | 2 +- tests/test_tutorial/test_path_params/test_tutorial004.py | 2 +- tests/test_tutorial/test_path_params/test_tutorial005.py | 4 ++-- tests/test_tutorial/test_query_params/test_tutorial005.py | 2 +- tests/test_tutorial/test_query_params/test_tutorial006.py | 2 +- .../test_query_params_str_validations/test_tutorial001.py | 2 +- .../test_query_params_str_validations/test_tutorial011.py | 2 +- .../test_query_params_str_validations/test_tutorial012.py | 2 +- .../test_query_params_str_validations/test_tutorial013.py | 2 +- tests/test_tutorial/test_request_files/test_tutorial001.py | 2 +- tests/test_tutorial/test_request_files/test_tutorial002.py | 2 +- tests/test_tutorial/test_request_forms/test_tutorial001.py | 2 +- .../test_request_forms_and_files/test_tutorial001.py | 2 +- tests/test_tutorial/test_response_model/test_tutorial003.py | 2 +- tests/test_tutorial/test_response_model/test_tutorial004.py | 2 +- tests/test_tutorial/test_response_model/test_tutorial005.py | 2 +- tests/test_tutorial/test_response_model/test_tutorial006.py | 2 +- .../test_schema_extra_example/test_tutorial004.py | 2 +- tests/test_tutorial/test_security/test_tutorial003.py | 2 +- tests/test_tutorial/test_security/test_tutorial005.py | 2 +- .../test_tutorial/test_sql_databases/test_sql_databases.py | 2 +- .../test_sql_databases/test_sql_databases_middleware.py | 2 +- .../test_sql_databases_peewee/test_sql_databases_peewee.py | 2 +- tests/test_union_body.py | 2 +- tests/test_union_inherited_body.py | 2 +- 78 files changed, 83 insertions(+), 79 deletions(-) diff --git a/fastapi/openapi/utils.py b/fastapi/openapi/utils.py index 58a748d04..4eb727bd4 100644 --- a/fastapi/openapi/utils.py +++ b/fastapi/openapi/utils.py @@ -38,7 +38,11 @@ validation_error_definition = { "title": "ValidationError", "type": "object", "properties": { - "loc": {"title": "Location", "type": "array", "items": {"type": "string"}}, + "loc": { + "title": "Location", + "type": "array", + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, + }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, }, diff --git a/tests/test_additional_properties.py b/tests/test_additional_properties.py index 9e15e6ed0..016c1f734 100644 --- a/tests/test_additional_properties.py +++ b/tests/test_additional_properties.py @@ -76,7 +76,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_additional_responses_custom_model_in_callback.py b/tests/test_additional_responses_custom_model_in_callback.py index 36dd0d6db..a1072cc56 100644 --- a/tests/test_additional_responses_custom_model_in_callback.py +++ b/tests/test_additional_responses_custom_model_in_callback.py @@ -119,7 +119,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_additional_responses_default_validationerror.py b/tests/test_additional_responses_default_validationerror.py index 6ea372ce8..cabb536d7 100644 --- a/tests/test_additional_responses_default_validationerror.py +++ b/tests/test_additional_responses_default_validationerror.py @@ -54,7 +54,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_application.py b/tests/test_application.py index 5ba737307..d9194c15c 100644 --- a/tests/test_application.py +++ b/tests/test_application.py @@ -1101,7 +1101,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_dependency_duplicates.py b/tests/test_dependency_duplicates.py index 5e15812b6..33899134e 100644 --- a/tests/test_dependency_duplicates.py +++ b/tests/test_dependency_duplicates.py @@ -177,7 +177,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_extra_routes.py b/tests/test_extra_routes.py index 6aba3e8dd..8f95b7bc9 100644 --- a/tests/test_extra_routes.py +++ b/tests/test_extra_routes.py @@ -292,7 +292,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_filter_pydantic_sub_model.py b/tests/test_filter_pydantic_sub_model.py index 90a372976..8814356a1 100644 --- a/tests/test_filter_pydantic_sub_model.py +++ b/tests/test_filter_pydantic_sub_model.py @@ -116,7 +116,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_get_request_body.py b/tests/test_get_request_body.py index b12f499eb..88b9d839f 100644 --- a/tests/test_get_request_body.py +++ b/tests/test_get_request_body.py @@ -85,7 +85,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_include_router_defaults_overrides.py b/tests/test_include_router_defaults_overrides.py index 5dd7e7098..ccb6c7229 100644 --- a/tests/test_include_router_defaults_overrides.py +++ b/tests/test_include_router_defaults_overrides.py @@ -6612,7 +6612,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_modules_same_name_body/test_main.py b/tests/test_modules_same_name_body/test_main.py index b0d3330c7..8b1aea031 100644 --- a/tests/test_modules_same_name_body/test_main.py +++ b/tests/test_modules_same_name_body/test_main.py @@ -101,7 +101,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_multi_body_errors.py b/tests/test_multi_body_errors.py index c1be82806..31308ea85 100644 --- a/tests/test_multi_body_errors.py +++ b/tests/test_multi_body_errors.py @@ -79,7 +79,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_multi_query_errors.py b/tests/test_multi_query_errors.py index 69ea87a9b..0a15833fa 100644 --- a/tests/test_multi_query_errors.py +++ b/tests/test_multi_query_errors.py @@ -63,7 +63,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_param_in_path_and_dependency.py b/tests/test_param_in_path_and_dependency.py index 0a94c2151..4d85afbce 100644 --- a/tests/test_param_in_path_and_dependency.py +++ b/tests/test_param_in_path_and_dependency.py @@ -71,7 +71,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_put_no_body.py b/tests/test_put_no_body.py index 1c2cfac89..3da294ccf 100644 --- a/tests/test_put_no_body.py +++ b/tests/test_put_no_body.py @@ -57,7 +57,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_repeated_dependency_schema.py b/tests/test_repeated_dependency_schema.py index fd616e12a..00441694e 100644 --- a/tests/test_repeated_dependency_schema.py +++ b/tests/test_repeated_dependency_schema.py @@ -36,7 +36,7 @@ schema = { "ValidationError": { "properties": { "loc": { - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, "title": "Location", "type": "array", }, diff --git a/tests/test_schema_extra_examples.py b/tests/test_schema_extra_examples.py index 3e0d846cd..444e350a8 100644 --- a/tests/test_schema_extra_examples.py +++ b/tests/test_schema_extra_examples.py @@ -830,7 +830,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_security_oauth2.py b/tests/test_security_oauth2.py index b7ada7caf..b9ac488ee 100644 --- a/tests/test_security_oauth2.py +++ b/tests/test_security_oauth2.py @@ -117,7 +117,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_security_oauth2_optional.py b/tests/test_security_oauth2_optional.py index ecc766511..a5fd49b8c 100644 --- a/tests/test_security_oauth2_optional.py +++ b/tests/test_security_oauth2_optional.py @@ -121,7 +121,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_security_oauth2_optional_description.py b/tests/test_security_oauth2_optional_description.py index 011db65ec..171f96b76 100644 --- a/tests/test_security_oauth2_optional_description.py +++ b/tests/test_security_oauth2_optional_description.py @@ -122,7 +122,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_starlette_exception.py b/tests/test_starlette_exception.py index 5759a93f4..859169d3c 100644 --- a/tests/test_starlette_exception.py +++ b/tests/test_starlette_exception.py @@ -102,7 +102,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_sub_callbacks.py b/tests/test_sub_callbacks.py index 16644b556..7574d6fbc 100644 --- a/tests/test_sub_callbacks.py +++ b/tests/test_sub_callbacks.py @@ -256,7 +256,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_additional_responses/test_tutorial001.py b/tests/test_tutorial/test_additional_responses/test_tutorial001.py index 8342dd787..1a8acb523 100644 --- a/tests/test_tutorial/test_additional_responses/test_tutorial001.py +++ b/tests/test_tutorial/test_additional_responses/test_tutorial001.py @@ -76,7 +76,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_additional_responses/test_tutorial002.py b/tests/test_tutorial/test_additional_responses/test_tutorial002.py index 57f877978..2adcf15d0 100644 --- a/tests/test_tutorial/test_additional_responses/test_tutorial002.py +++ b/tests/test_tutorial/test_additional_responses/test_tutorial002.py @@ -72,7 +72,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_additional_responses/test_tutorial003.py b/tests/test_tutorial/test_additional_responses/test_tutorial003.py index 37190b36a..8b2167de0 100644 --- a/tests/test_tutorial/test_additional_responses/test_tutorial003.py +++ b/tests/test_tutorial/test_additional_responses/test_tutorial003.py @@ -77,7 +77,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_additional_responses/test_tutorial004.py b/tests/test_tutorial/test_additional_responses/test_tutorial004.py index c44a18f68..990d5235a 100644 --- a/tests/test_tutorial/test_additional_responses/test_tutorial004.py +++ b/tests/test_tutorial/test_additional_responses/test_tutorial004.py @@ -75,7 +75,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_async_sql_databases/test_tutorial001.py b/tests/test_tutorial/test_async_sql_databases/test_tutorial001.py index 90feb0172..1ad625db6 100644 --- a/tests/test_tutorial/test_async_sql_databases/test_tutorial001.py +++ b/tests/test_tutorial/test_async_sql_databases/test_tutorial001.py @@ -88,7 +88,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_bigger_applications/test_main.py b/tests/test_tutorial/test_bigger_applications/test_main.py index 7eb675179..cd6d7b5c8 100644 --- a/tests/test_tutorial/test_bigger_applications/test_main.py +++ b/tests/test_tutorial/test_bigger_applications/test_main.py @@ -323,7 +323,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body/test_tutorial001.py b/tests/test_tutorial/test_body/test_tutorial001.py index 7bf62c907..8dbaf15db 100644 --- a/tests/test_tutorial/test_body/test_tutorial001.py +++ b/tests/test_tutorial/test_body/test_tutorial001.py @@ -63,7 +63,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_fields/test_tutorial001.py b/tests/test_tutorial/test_body_fields/test_tutorial001.py index 9de4907c2..fe5a270f3 100644 --- a/tests/test_tutorial/test_body_fields/test_tutorial001.py +++ b/tests/test_tutorial/test_body_fields/test_tutorial001.py @@ -87,7 +87,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py b/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py index b11ecddab..8dc710d75 100644 --- a/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py +++ b/tests/test_tutorial/test_body_multiple_params/test_tutorial001.py @@ -79,7 +79,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py b/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py index d98e3e419..64aa9c43b 100644 --- a/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py +++ b/tests/test_tutorial/test_body_multiple_params/test_tutorial003.py @@ -90,7 +90,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_nested_models/test_tutorial009.py b/tests/test_tutorial/test_body_nested_models/test_tutorial009.py index 8eb0ad130..c56d41b5b 100644 --- a/tests/test_tutorial/test_body_nested_models/test_tutorial009.py +++ b/tests/test_tutorial/test_body_nested_models/test_tutorial009.py @@ -53,7 +53,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_updates/test_tutorial001.py b/tests/test_tutorial/test_body_updates/test_tutorial001.py index 5e92ef7ea..efd0e4676 100644 --- a/tests/test_tutorial/test_body_updates/test_tutorial001.py +++ b/tests/test_tutorial/test_body_updates/test_tutorial001.py @@ -109,7 +109,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_cookie_params/test_tutorial001.py b/tests/test_tutorial/test_cookie_params/test_tutorial001.py index 3451dc19e..edccffec1 100644 --- a/tests/test_tutorial/test_cookie_params/test_tutorial001.py +++ b/tests/test_tutorial/test_cookie_params/test_tutorial001.py @@ -50,7 +50,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dataclasses/test_tutorial001.py b/tests/test_tutorial/test_dataclasses/test_tutorial001.py index 3e3fc9acf..bf1564194 100644 --- a/tests/test_tutorial/test_dataclasses/test_tutorial001.py +++ b/tests/test_tutorial/test_dataclasses/test_tutorial001.py @@ -71,7 +71,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dataclasses/test_tutorial003.py b/tests/test_tutorial/test_dataclasses/test_tutorial003.py index dd0f1f2c0..2d86f7b9a 100644 --- a/tests/test_tutorial/test_dataclasses/test_tutorial003.py +++ b/tests/test_tutorial/test_dataclasses/test_tutorial003.py @@ -118,7 +118,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial001.py b/tests/test_tutorial/test_dependencies/test_tutorial001.py index 8b53157cd..c3bca5d5b 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial001.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial001.py @@ -104,7 +104,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial004.py b/tests/test_tutorial/test_dependencies/test_tutorial004.py index eb21f6524..f2b1878d5 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial004.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial004.py @@ -62,7 +62,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial006.py b/tests/test_tutorial/test_dependencies/test_tutorial006.py index c08992ec8..2916577a2 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial006.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial006.py @@ -55,7 +55,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial012.py b/tests/test_tutorial/test_dependencies/test_tutorial012.py index ada83c626..e4e07395d 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial012.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial012.py @@ -102,7 +102,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_events/test_tutorial001.py b/tests/test_tutorial/test_events/test_tutorial001.py index e3587a0e8..d52dd1a04 100644 --- a/tests/test_tutorial/test_events/test_tutorial001.py +++ b/tests/test_tutorial/test_events/test_tutorial001.py @@ -47,7 +47,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_extra_data_types/test_tutorial001.py b/tests/test_tutorial/test_extra_data_types/test_tutorial001.py index 68b7d61dc..8522d7b9d 100644 --- a/tests/test_tutorial/test_extra_data_types/test_tutorial001.py +++ b/tests/test_tutorial/test_extra_data_types/test_tutorial001.py @@ -89,7 +89,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_extra_models/test_tutorial003.py b/tests/test_tutorial/test_extra_models/test_tutorial003.py index a2a325c77..f1433470c 100644 --- a/tests/test_tutorial/test_extra_models/test_tutorial003.py +++ b/tests/test_tutorial/test_extra_models/test_tutorial003.py @@ -78,7 +78,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial001.py b/tests/test_tutorial/test_handling_errors/test_tutorial001.py index 6b62293d8..ffd79ccff 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial001.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial001.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial002.py b/tests/test_tutorial/test_handling_errors/test_tutorial002.py index d2ce0bf9d..e678499c6 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial002.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial002.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial003.py b/tests/test_tutorial/test_handling_errors/test_tutorial003.py index ca9d94e3c..a01726dc2 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial003.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial003.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial004.py b/tests/test_tutorial/test_handling_errors/test_tutorial004.py index d95debf37..0b5f74798 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial004.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial004.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial005.py b/tests/test_tutorial/test_handling_errors/test_tutorial005.py index cedcaae70..253f3d006 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial005.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial005.py @@ -69,7 +69,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_handling_errors/test_tutorial006.py b/tests/test_tutorial/test_handling_errors/test_tutorial006.py index 8b6c1e7ed..21233d7bb 100644 --- a/tests/test_tutorial/test_handling_errors/test_tutorial006.py +++ b/tests/test_tutorial/test_handling_errors/test_tutorial006.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_header_params/test_tutorial001.py b/tests/test_tutorial/test_header_params/test_tutorial001.py index 0f05b9e8c..273cf3249 100644 --- a/tests/test_tutorial/test_header_params/test_tutorial001.py +++ b/tests/test_tutorial/test_header_params/test_tutorial001.py @@ -51,7 +51,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py b/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py index b30427d08..e773e7f8f 100644 --- a/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py +++ b/tests/test_tutorial/test_openapi_callbacks/test_tutorial001.py @@ -143,7 +143,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py b/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py index f2ec2c7e5..456e509d5 100644 --- a/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py +++ b/tests/test_tutorial/test_path_operation_advanced_configurations/test_tutorial004.py @@ -72,7 +72,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py index d21640946..e587519a0 100644 --- a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py +++ b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005.py @@ -72,7 +72,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_params/test_tutorial004.py b/tests/test_tutorial/test_path_params/test_tutorial004.py index 131bf773b..7f0227ecf 100644 --- a/tests/test_tutorial/test_path_params/test_tutorial004.py +++ b/tests/test_tutorial/test_path_params/test_tutorial004.py @@ -49,7 +49,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_params/test_tutorial005.py b/tests/test_tutorial/test_path_params/test_tutorial005.py index ed9d2032b..eae3637be 100644 --- a/tests/test_tutorial/test_path_params/test_tutorial005.py +++ b/tests/test_tutorial/test_path_params/test_tutorial005.py @@ -54,7 +54,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -138,7 +138,7 @@ openapi_schema2 = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params/test_tutorial005.py b/tests/test_tutorial/test_query_params/test_tutorial005.py index aabc0af4f..07178f8a6 100644 --- a/tests/test_tutorial/test_query_params/test_tutorial005.py +++ b/tests/test_tutorial/test_query_params/test_tutorial005.py @@ -56,7 +56,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params/test_tutorial006.py b/tests/test_tutorial/test_query_params/test_tutorial006.py index 042a0e1f8..73c5302e7 100644 --- a/tests/test_tutorial/test_query_params/test_tutorial006.py +++ b/tests/test_tutorial/test_query_params/test_tutorial006.py @@ -68,7 +68,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py index 709bf6956..f8d7f85c8 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial001.py @@ -59,7 +59,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py index 6ae10296f..ad3645f31 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011.py @@ -53,7 +53,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py index 724c975f8..d69139dda 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial012.py @@ -54,7 +54,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py index ad5597913..1b2e36354 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial013.py @@ -54,7 +54,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial001.py b/tests/test_tutorial/test_request_files/test_tutorial001.py index 841116e30..166014c71 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial001.py +++ b/tests/test_tutorial/test_request_files/test_tutorial001.py @@ -99,7 +99,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial002.py b/tests/test_tutorial/test_request_files/test_tutorial002.py index 4e33ef464..73d1179a1 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial002.py +++ b/tests/test_tutorial/test_request_files/test_tutorial002.py @@ -119,7 +119,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_forms/test_tutorial001.py b/tests/test_tutorial/test_request_forms/test_tutorial001.py index 3d271b531..215260ffa 100644 --- a/tests/test_tutorial/test_request_forms/test_tutorial001.py +++ b/tests/test_tutorial/test_request_forms/test_tutorial001.py @@ -61,7 +61,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py b/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py index 10cce5e61..09e232b8e 100644 --- a/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py +++ b/tests/test_tutorial/test_request_forms_and_files/test_tutorial001.py @@ -61,7 +61,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial003.py b/tests/test_tutorial/test_response_model/test_tutorial003.py index 44f2fb7ca..e1bde5d13 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial003.py +++ b/tests/test_tutorial/test_response_model/test_tutorial003.py @@ -74,7 +74,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial004.py b/tests/test_tutorial/test_response_model/test_tutorial004.py index 19303982b..8c98c6de3 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial004.py +++ b/tests/test_tutorial/test_response_model/test_tutorial004.py @@ -71,7 +71,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial005.py b/tests/test_tutorial/test_response_model/test_tutorial005.py index 9ca5463e6..476b172d3 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial005.py +++ b/tests/test_tutorial/test_response_model/test_tutorial005.py @@ -98,7 +98,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial006.py b/tests/test_tutorial/test_response_model/test_tutorial006.py index 25eb6e333..38eb31e54 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial006.py +++ b/tests/test_tutorial/test_response_model/test_tutorial006.py @@ -98,7 +98,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py b/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py index 89f5b66fd..badf66b3d 100644 --- a/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py +++ b/tests/test_tutorial/test_schema_extra_example/test_tutorial004.py @@ -103,7 +103,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_security/test_tutorial003.py b/tests/test_tutorial/test_security/test_tutorial003.py index 3fc7f5f40..595107834 100644 --- a/tests/test_tutorial/test_security/test_tutorial003.py +++ b/tests/test_tutorial/test_security/test_tutorial003.py @@ -81,7 +81,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_security/test_tutorial005.py b/tests/test_tutorial/test_security/test_tutorial005.py index a37f2d60a..e8697339f 100644 --- a/tests/test_tutorial/test_security/test_tutorial005.py +++ b/tests/test_tutorial/test_security/test_tutorial005.py @@ -141,7 +141,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases.py b/tests/test_tutorial/test_sql_databases/test_sql_databases.py index c88fd0bcd..09304ff87 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases.py @@ -261,7 +261,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware.py b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware.py index b02e1c89e..fbaa8938a 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware.py @@ -260,7 +260,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases_peewee/test_sql_databases_peewee.py b/tests/test_tutorial/test_sql_databases_peewee/test_sql_databases_peewee.py index 2ebc31b95..d28ea5e76 100644 --- a/tests/test_tutorial/test_sql_databases_peewee/test_sql_databases_peewee.py +++ b/tests/test_tutorial/test_sql_databases_peewee/test_sql_databases_peewee.py @@ -318,7 +318,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_union_body.py b/tests/test_union_body.py index d1dfd5efb..3e424de07 100644 --- a/tests/test_union_body.py +++ b/tests/test_union_body.py @@ -84,7 +84,7 @@ item_openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_union_inherited_body.py b/tests/test_union_inherited_body.py index e3d0acc99..60b327ebc 100644 --- a/tests/test_union_inherited_body.py +++ b/tests/test_union_inherited_body.py @@ -96,7 +96,7 @@ inherited_item_openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, From d9e7a541fde953ec08da2b626a9555a80910be11 Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 17:42:18 +0000 Subject: [PATCH 35/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 772d6a0d8..33794daea 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🐛 Fix JSON Schema for `ValidationError` at field `loc`. PR [#3810](https://github.com/tiangolo/fastapi/pull/3810) by [@dconathan](https://github.com/dconathan). * 🐛 Fix support for prefix on APIRouter WebSockets. PR [#2640](https://github.com/tiangolo/fastapi/pull/2640) by [@Kludex](https://github.com/Kludex). * ⬆️ Update ujson ranges for CVE-2021-45958. PR [#4804](https://github.com/tiangolo/fastapi/pull/4804) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade dependencies upper range for extras "all". PR [#4803](https://github.com/tiangolo/fastapi/pull/4803) by [@tiangolo](https://github.com/tiangolo). From 197c1d6dd77bedbc90282db9c8d1b93a7a998856 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 21:02:49 +0200 Subject: [PATCH 36/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 33794daea..7adad85cf 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,11 +2,21 @@ ## Latest Changes +This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible. + +### Fixes + * 🐛 Fix JSON Schema for `ValidationError` at field `loc`. PR [#3810](https://github.com/tiangolo/fastapi/pull/3810) by [@dconathan](https://github.com/dconathan). * 🐛 Fix support for prefix on APIRouter WebSockets. PR [#2640](https://github.com/tiangolo/fastapi/pull/2640) by [@Kludex](https://github.com/Kludex). + +### Upgrades + * ⬆️ Update ujson ranges for CVE-2021-45958. PR [#4804](https://github.com/tiangolo/fastapi/pull/4804) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade dependencies upper range for extras "all". PR [#4803](https://github.com/tiangolo/fastapi/pull/4803) by [@tiangolo](https://github.com/tiangolo). * ⬆ Upgrade Swagger UI - swagger-ui-dist@4. This handles a security issue in Swagger UI itself where it could be possible to inject HTML into Swagger UI. Please upgrade as soon as you can, in particular if you expose your Swagger UI (`/docs`) publicly to non-expert users. PR [#4347](https://github.com/tiangolo/fastapi/pull/4347) by [@RAlanWright](https://github.com/RAlanWright). + +### Internal + * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). ## 0.75.1 From ddd9da3db47e28406bdb5f7ad23cb7b33336e762 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 22:55:36 +0200 Subject: [PATCH 37/42] =?UTF-8?q?=E2=9C=85=20Fix=20new/recent=20tests=20wi?= =?UTF-8?q?th=20new=20fixed=20`ValidationError`=20JSON=20Schema=20(#4806)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/test_generate_unique_id_function.py | 28 ++++++++++++++----- tests/test_param_include_in_schema.py | 2 +- tests/test_tuples.py | 2 +- .../test_body/test_tutorial001_py310.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial003_py310.py | 2 +- .../test_tutorial009_py39.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial001_py39.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial004_py310.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial003_py310.py | 2 +- .../test_generate_clients/test_tutorial003.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial005_py310.py | 2 +- .../test_tutorial005_py39.py | 2 +- .../test_tutorial006_py310.py | 2 +- .../test_tutorial001_py310.py | 2 +- .../test_tutorial011_py310.py | 2 +- .../test_tutorial011_py39.py | 2 +- .../test_tutorial012_py39.py | 2 +- .../test_tutorial014.py | 2 +- .../test_tutorial014_py310.py | 2 +- .../test_request_files/test_tutorial001_02.py | 2 +- .../test_tutorial001_02_py310.py | 2 +- .../test_request_files/test_tutorial001_03.py | 2 +- .../test_tutorial002_py39.py | 2 +- .../test_request_files/test_tutorial003.py | 2 +- .../test_tutorial003_py39.py | 2 +- .../test_tutorial003_py310.py | 2 +- .../test_tutorial004_py310.py | 2 +- .../test_tutorial004_py39.py | 2 +- .../test_tutorial005_py310.py | 2 +- .../test_tutorial006_py310.py | 2 +- .../test_tutorial004_py310.py | 2 +- .../test_security/test_tutorial003_py310.py | 2 +- .../test_security/test_tutorial005_py310.py | 2 +- .../test_security/test_tutorial005_py39.py | 2 +- .../test_sql_databases_middleware_py310.py | 2 +- .../test_sql_databases_middleware_py39.py | 2 +- .../test_sql_databases_py310.py | 2 +- .../test_sql_databases_py39.py | 2 +- 45 files changed, 65 insertions(+), 51 deletions(-) diff --git a/tests/test_generate_unique_id_function.py b/tests/test_generate_unique_id_function.py index ffc0e3844..0b519f859 100644 --- a/tests/test_generate_unique_id_function.py +++ b/tests/test_generate_unique_id_function.py @@ -217,7 +217,9 @@ def test_top_level_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -416,7 +418,9 @@ def test_router_overrides_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -615,7 +619,9 @@ def test_router_include_overrides_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -887,7 +893,9 @@ def test_subrouter_top_level_include_overrides_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -1089,7 +1097,9 @@ def test_router_path_operation_overrides_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -1295,7 +1305,9 @@ def test_app_path_operation_overrides_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, @@ -1579,7 +1591,9 @@ def test_callback_override_generate_unique_id(): "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": { + "anyOf": [{"type": "string"}, {"type": "integer"}] + }, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_param_include_in_schema.py b/tests/test_param_include_in_schema.py index 4eaac72d8..26aa63897 100644 --- a/tests/test_param_include_in_schema.py +++ b/tests/test_param_include_in_schema.py @@ -149,7 +149,7 @@ openapi_shema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tuples.py b/tests/test_tuples.py index 4cd5ee3af..2085dc367 100644 --- a/tests/test_tuples.py +++ b/tests/test_tuples.py @@ -200,7 +200,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body/test_tutorial001_py310.py b/tests/test_tutorial/test_body/test_tutorial001_py310.py index e292b5346..dd9d9911e 100644 --- a/tests/test_tutorial/test_body/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_body/test_tutorial001_py310.py @@ -61,7 +61,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_fields/test_tutorial001_py310.py b/tests/test_tutorial/test_body_fields/test_tutorial001_py310.py index d7a525ea7..993e2a91d 100644 --- a/tests/test_tutorial/test_body_fields/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_body_fields/test_tutorial001_py310.py @@ -84,7 +84,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_multiple_params/test_tutorial001_py310.py b/tests/test_tutorial/test_body_multiple_params/test_tutorial001_py310.py index 85ba41ce6..5114ccea2 100644 --- a/tests/test_tutorial/test_body_multiple_params/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_body_multiple_params/test_tutorial001_py310.py @@ -77,7 +77,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_multiple_params/test_tutorial003_py310.py b/tests/test_tutorial/test_body_multiple_params/test_tutorial003_py310.py index f896f7bf5..fc019d8bb 100644 --- a/tests/test_tutorial/test_body_multiple_params/test_tutorial003_py310.py +++ b/tests/test_tutorial/test_body_multiple_params/test_tutorial003_py310.py @@ -88,7 +88,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_nested_models/test_tutorial009_py39.py b/tests/test_tutorial/test_body_nested_models/test_tutorial009_py39.py index 17ca29ce5..5b8d82861 100644 --- a/tests/test_tutorial/test_body_nested_models/test_tutorial009_py39.py +++ b/tests/test_tutorial/test_body_nested_models/test_tutorial009_py39.py @@ -52,7 +52,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_updates/test_tutorial001_py310.py b/tests/test_tutorial/test_body_updates/test_tutorial001_py310.py index ca1d8c585..49279b320 100644 --- a/tests/test_tutorial/test_body_updates/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_body_updates/test_tutorial001_py310.py @@ -108,7 +108,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_body_updates/test_tutorial001_py39.py b/tests/test_tutorial/test_body_updates/test_tutorial001_py39.py index f2b184c4f..872530bcf 100644 --- a/tests/test_tutorial/test_body_updates/test_tutorial001_py39.py +++ b/tests/test_tutorial/test_body_updates/test_tutorial001_py39.py @@ -108,7 +108,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_cookie_params/test_tutorial001_py310.py b/tests/test_tutorial/test_cookie_params/test_tutorial001_py310.py index 587a328da..5caa5c440 100644 --- a/tests/test_tutorial/test_cookie_params/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_cookie_params/test_tutorial001_py310.py @@ -48,7 +48,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial001_py310.py b/tests/test_tutorial/test_dependencies/test_tutorial001_py310.py index a7991170e..32a61c821 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial001_py310.py @@ -102,7 +102,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_dependencies/test_tutorial004_py310.py b/tests/test_tutorial/test_dependencies/test_tutorial004_py310.py index f66a36a99..e3ae0c741 100644 --- a/tests/test_tutorial/test_dependencies/test_tutorial004_py310.py +++ b/tests/test_tutorial/test_dependencies/test_tutorial004_py310.py @@ -60,7 +60,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_extra_data_types/test_tutorial001_py310.py b/tests/test_tutorial/test_extra_data_types/test_tutorial001_py310.py index 3d4c1d07d..4efdecc53 100644 --- a/tests/test_tutorial/test_extra_data_types/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_extra_data_types/test_tutorial001_py310.py @@ -87,7 +87,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_extra_models/test_tutorial003_py310.py b/tests/test_tutorial/test_extra_models/test_tutorial003_py310.py index 185bc3a37..56fd83ad3 100644 --- a/tests/test_tutorial/test_extra_models/test_tutorial003_py310.py +++ b/tests/test_tutorial/test_extra_models/test_tutorial003_py310.py @@ -77,7 +77,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_generate_clients/test_tutorial003.py b/tests/test_tutorial/test_generate_clients/test_tutorial003.py index d79123163..128fcea30 100644 --- a/tests/test_tutorial/test_generate_clients/test_tutorial003.py +++ b/tests/test_tutorial/test_generate_clients/test_tutorial003.py @@ -147,7 +147,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_header_params/test_tutorial001_py310.py b/tests/test_tutorial/test_header_params/test_tutorial001_py310.py index f5ee17428..77a60eb9d 100644 --- a/tests/test_tutorial/test_header_params/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_header_params/test_tutorial001_py310.py @@ -48,7 +48,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py310.py b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py310.py index 1f617da70..43a7a610d 100644 --- a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py310.py +++ b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py310.py @@ -71,7 +71,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py39.py b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py39.py index ffdf05081..62aa73ac5 100644 --- a/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py39.py +++ b/tests/test_tutorial/test_path_operation_configurations/test_tutorial005_py39.py @@ -71,7 +71,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params/test_tutorial006_py310.py b/tests/test_tutorial/test_query_params/test_tutorial006_py310.py index 1986d27d0..141525f15 100644 --- a/tests/test_tutorial/test_query_params/test_tutorial006_py310.py +++ b/tests/test_tutorial/test_query_params/test_tutorial006_py310.py @@ -66,7 +66,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial001_py310.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial001_py310.py index 66b24017e..298b5d616 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial001_py310.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial001_py310.py @@ -57,7 +57,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py310.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py310.py index 8894ee1b5..9330037ed 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py310.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py310.py @@ -52,7 +52,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py39.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py39.py index b10e70af7..11f23be27 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py39.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial011_py39.py @@ -52,7 +52,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_py39.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_py39.py index a9cbce02a..b25bb2847 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_py39.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial012_py39.py @@ -53,7 +53,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py index 98ae5a684..57b8b9d94 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial014.py @@ -53,7 +53,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_py310.py b/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_py310.py index 33f3d5f77..fe54fc080 100644 --- a/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_py310.py +++ b/tests/test_tutorial/test_query_params_str_validations/test_tutorial014_py310.py @@ -51,7 +51,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial001_02.py b/tests/test_tutorial/test_request_files/test_tutorial001_02.py index e852a1b31..a254bf3e8 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial001_02.py +++ b/tests/test_tutorial/test_request_files/test_tutorial001_02.py @@ -106,7 +106,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial001_02_py310.py b/tests/test_tutorial/test_request_files/test_tutorial001_02_py310.py index 62e9f98d0..15b6a8d53 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial001_02_py310.py +++ b/tests/test_tutorial/test_request_files/test_tutorial001_02_py310.py @@ -107,7 +107,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial001_03.py b/tests/test_tutorial/test_request_files/test_tutorial001_03.py index ec7509ea2..c34165f18 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial001_03.py +++ b/tests/test_tutorial/test_request_files/test_tutorial001_03.py @@ -120,7 +120,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial002_py39.py b/tests/test_tutorial/test_request_files/test_tutorial002_py39.py index bbdf25cd9..de4127057 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial002_py39.py +++ b/tests/test_tutorial/test_request_files/test_tutorial002_py39.py @@ -119,7 +119,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial003.py b/tests/test_tutorial/test_request_files/test_tutorial003.py index 943b235ab..83aea66cd 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial003.py +++ b/tests/test_tutorial/test_request_files/test_tutorial003.py @@ -132,7 +132,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_request_files/test_tutorial003_py39.py b/tests/test_tutorial/test_request_files/test_tutorial003_py39.py index d5fbd7889..56aeb54cd 100644 --- a/tests/test_tutorial/test_request_files/test_tutorial003_py39.py +++ b/tests/test_tutorial/test_request_files/test_tutorial003_py39.py @@ -132,7 +132,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial003_py310.py b/tests/test_tutorial/test_response_model/test_tutorial003_py310.py index ffba11662..9827dab8a 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial003_py310.py +++ b/tests/test_tutorial/test_response_model/test_tutorial003_py310.py @@ -73,7 +73,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial004_py310.py b/tests/test_tutorial/test_response_model/test_tutorial004_py310.py index f1508a05d..7fc86fafa 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial004_py310.py +++ b/tests/test_tutorial/test_response_model/test_tutorial004_py310.py @@ -69,7 +69,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial004_py39.py b/tests/test_tutorial/test_response_model/test_tutorial004_py39.py index e5d9c8b5f..405fe79f5 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial004_py39.py +++ b/tests/test_tutorial/test_response_model/test_tutorial004_py39.py @@ -69,7 +69,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial005_py310.py b/tests/test_tutorial/test_response_model/test_tutorial005_py310.py index 6d7366f12..389a302e0 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial005_py310.py +++ b/tests/test_tutorial/test_response_model/test_tutorial005_py310.py @@ -97,7 +97,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_response_model/test_tutorial006_py310.py b/tests/test_tutorial/test_response_model/test_tutorial006_py310.py index a3d8d204e..f870f3926 100644 --- a/tests/test_tutorial/test_response_model/test_tutorial006_py310.py +++ b/tests/test_tutorial/test_response_model/test_tutorial006_py310.py @@ -97,7 +97,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_schema_extra_example/test_tutorial004_py310.py b/tests/test_tutorial/test_schema_extra_example/test_tutorial004_py310.py index 4f9a2ff57..d326a5a09 100644 --- a/tests/test_tutorial/test_schema_extra_example/test_tutorial004_py310.py +++ b/tests/test_tutorial/test_schema_extra_example/test_tutorial004_py310.py @@ -102,7 +102,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_security/test_tutorial003_py310.py b/tests/test_tutorial/test_security/test_tutorial003_py310.py index e621bcd45..26f5c097f 100644 --- a/tests/test_tutorial/test_security/test_tutorial003_py310.py +++ b/tests/test_tutorial/test_security/test_tutorial003_py310.py @@ -80,7 +80,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_security/test_tutorial005_py310.py b/tests/test_tutorial/test_security/test_tutorial005_py310.py index 0c9372e2a..3144a2365 100644 --- a/tests/test_tutorial/test_security/test_tutorial005_py310.py +++ b/tests/test_tutorial/test_security/test_tutorial005_py310.py @@ -134,7 +134,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_security/test_tutorial005_py39.py b/tests/test_tutorial/test_security/test_tutorial005_py39.py index 099ab2526..290136e17 100644 --- a/tests/test_tutorial/test_security/test_tutorial005_py39.py +++ b/tests/test_tutorial/test_security/test_tutorial005_py39.py @@ -134,7 +134,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py310.py b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py310.py index 1d0442eb5..d131b4b6a 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py310.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py310.py @@ -263,7 +263,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py39.py b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py39.py index 8764d07a6..470fb52fd 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py39.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases_middleware_py39.py @@ -263,7 +263,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases_py310.py b/tests/test_tutorial/test_sql_databases/test_sql_databases_py310.py index f7e73dea4..dc6a1db15 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases_py310.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases_py310.py @@ -263,7 +263,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, diff --git a/tests/test_tutorial/test_sql_databases/test_sql_databases_py39.py b/tests/test_tutorial/test_sql_databases/test_sql_databases_py39.py index c194c85aa..ebf55ed01 100644 --- a/tests/test_tutorial/test_sql_databases/test_sql_databases_py39.py +++ b/tests/test_tutorial/test_sql_databases/test_sql_databases_py39.py @@ -263,7 +263,7 @@ openapi_schema = { "loc": { "title": "Location", "type": "array", - "items": {"type": "string"}, + "items": {"anyOf": [{"type": "string"}, {"type": "integer"}]}, }, "msg": {"title": "Message", "type": "string"}, "type": {"title": "Error Type", "type": "string"}, From 41d75b6d1c1ed27a733300b11f67a81309aa89fd Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 20:56:09 +0000 Subject: [PATCH 38/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 7adad85cf..016bf3469 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ✅ Fix new/recent tests with new fixed `ValidationError` JSON Schema. PR [#4806](https://github.com/tiangolo/fastapi/pull/4806) by [@tiangolo](https://github.com/tiangolo). This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible. ### Fixes From 77fc14eb69725f6fb3cdf3e8745a54a4e93d5e7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 23:00:49 +0200 Subject: [PATCH 39/42] =?UTF-8?q?=F0=9F=94=A7=20Update=20sponsors,=20add:?= =?UTF-8?q?=20ExoFlare,=20Ines=20Course;=20remove:=20Dropbase,=20Vim.so,?= =?UTF-8?q?=20Calmcode;=20update:=20Striveworks,=20TalkPython=20and=20Test?= =?UTF-8?q?Driven.io=20(#4805)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +--- docs/en/data/sponsors.yml | 21 ++++++++---------- docs/en/data/sponsors_badge.yml | 5 ++--- docs/en/docs/img/sponsors/exoflare.png | Bin 0 -> 5357 bytes .../sponsors/fastapi-course-bundle-banner.png | Bin 0 -> 16235 bytes docs/en/docs/img/sponsors/ines-course.jpg | Bin 0 -> 11727 bytes docs/en/overrides/main.html | 20 +---------------- 7 files changed, 13 insertions(+), 37 deletions(-) create mode 100644 docs/en/docs/img/sponsors/exoflare.png create mode 100644 docs/en/docs/img/sponsors/fastapi-course-bundle-banner.png create mode 100644 docs/en/docs/img/sponsors/ines-course.jpg diff --git a/README.md b/README.md index 0fb25cc7e..a03a98719 100644 --- a/README.md +++ b/README.md @@ -49,15 +49,13 @@ The key features are: - - - + diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index 65a114584..35eff9d87 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -5,12 +5,6 @@ gold: - url: https://cryptapi.io/ title: "CryptAPI: Your easy to use, secure and privacy oriented payment gateway." img: https://fastapi.tiangolo.com/img/sponsors/cryptapi.svg - - url: https://www.dropbase.io/careers - title: Dropbase - seamlessly collect, clean, and centralize data. - img: https://fastapi.tiangolo.com/img/sponsors/dropbase.svg - - url: https://striveworks.us/careers?utm_source=fastapi&utm_medium=sponsor_banner&utm_campaign=feb_march#openings - title: https://striveworks.us/careers - img: https://fastapi.tiangolo.com/img/sponsors/striveworks.png - url: https://classiq.link/n4s title: Join the team building a new SaaS platform that will change the computing world img: https://fastapi.tiangolo.com/img/sponsors/classiq.png @@ -21,9 +15,6 @@ silver: - url: https://www.investsuite.com/jobs title: Wealthtech jobs with FastAPI img: https://fastapi.tiangolo.com/img/sponsors/investsuite.svg - - url: https://www.vim.so/?utm_source=FastAPI - title: We help you master vim with interactive exercises - img: https://fastapi.tiangolo.com/img/sponsors/vimso.png - url: https://talkpython.fm/fastapi-sponsor title: FastAPI video courses on demand from people you trust img: https://fastapi.tiangolo.com/img/sponsors/talkpython.png @@ -33,7 +24,13 @@ silver: - url: https://github.com/deepset-ai/haystack/ title: Build powerful search from composable, open source building blocks img: https://fastapi.tiangolo.com/img/sponsors/haystack-fastapi.svg + - url: https://www.udemy.com/course/fastapi-rest/ + title: Learn FastAPI by building a complete project. Extend your knowledge on advanced web development-AWS, Payments, Emails. + img: https://fastapi.tiangolo.com/img/sponsors/ines-course.jpg bronze: - - url: https://calmcode.io - title: Code. Simply. Clearly. Calmly. - img: https://fastapi.tiangolo.com/img/sponsors/calmcode.jpg + - url: https://www.exoflare.com/open-source/?utm_source=FastAPI&utm_campaign=open_source + title: Biosecurity risk assessments made easy. + img: https://fastapi.tiangolo.com/img/sponsors/exoflare.png + - url: https://striveworks.us/careers?utm_source=fastapi&utm_medium=sponsor_banner&utm_campaign=feb_march#openings + title: https://striveworks.us/careers + img: https://fastapi.tiangolo.com/img/sponsors/striveworks.png diff --git a/docs/en/data/sponsors_badge.yml b/docs/en/data/sponsors_badge.yml index dbf69c1b3..67dd16a8b 100644 --- a/docs/en/data/sponsors_badge.yml +++ b/docs/en/data/sponsors_badge.yml @@ -2,10 +2,9 @@ logins: - jina-ai - deta - investsuite - - vimsoHQ - mikeckennedy - - koaning - deepset-ai - cryptapi - - DropbaseHQ - Striveworks + - xoflare + - InesIvanova diff --git a/docs/en/docs/img/sponsors/exoflare.png b/docs/en/docs/img/sponsors/exoflare.png new file mode 100644 index 0000000000000000000000000000000000000000..3eed3af18a00c01f5940940a85386542b449dfd2 GIT binary patch literal 5357 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 z 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 V=0{$9ew6?K002ovPDHLkV1mi>sMi1h literal 0 HcmV?d00001 diff --git a/docs/en/docs/img/sponsors/ines-course.jpg b/docs/en/docs/img/sponsors/ines-course.jpg new file mode 100644 index 0000000000000000000000000000000000000000..05158b3872caa803c000c3dee1aa3f858ad5534f GIT binary patch literal 11727 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 literal 0 HcmV?d00001 diff --git a/docs/en/overrides/main.html b/docs/en/overrides/main.html index 83c26e72a..562bf3079 100644 --- a/docs/en/overrides/main.html +++ b/docs/en/overrides/main.html @@ -22,16 +22,10 @@
-
@@ -46,18 +40,6 @@
- -
From 1d106bd959b8c43f57aed06c1fd180ec8043281d Mon Sep 17 00:00:00 2001 From: github-actions Date: Sun, 17 Apr 2022 21:01:21 +0000 Subject: [PATCH 40/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 016bf3469..ba0a8008e 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🔧 Update sponsors, add: ExoFlare, Ines Course; remove: Dropbase, Vim.so, Calmcode; update: Striveworks, TalkPython and TestDriven.io. PR [#4805](https://github.com/tiangolo/fastapi/pull/4805) by [@tiangolo](https://github.com/tiangolo). * ✅ Fix new/recent tests with new fixed `ValidationError` JSON Schema. PR [#4806](https://github.com/tiangolo/fastapi/pull/4806) by [@tiangolo](https://github.com/tiangolo). This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible. From acd2287b576b42e07401adc40b958beea6bafb8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 23:07:27 +0200 Subject: [PATCH 41/42] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index ba0a8008e..951a57daf 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,12 +2,11 @@ ## Latest Changes -* 🔧 Update sponsors, add: ExoFlare, Ines Course; remove: Dropbase, Vim.so, Calmcode; update: Striveworks, TalkPython and TestDriven.io. PR [#4805](https://github.com/tiangolo/fastapi/pull/4805) by [@tiangolo](https://github.com/tiangolo). -* ✅ Fix new/recent tests with new fixed `ValidationError` JSON Schema. PR [#4806](https://github.com/tiangolo/fastapi/pull/4806) by [@tiangolo](https://github.com/tiangolo). This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible. ### Fixes +* ✅ Fix new/recent tests with new fixed `ValidationError` JSON Schema. PR [#4806](https://github.com/tiangolo/fastapi/pull/4806) by [@tiangolo](https://github.com/tiangolo). * 🐛 Fix JSON Schema for `ValidationError` at field `loc`. PR [#3810](https://github.com/tiangolo/fastapi/pull/3810) by [@dconathan](https://github.com/dconathan). * 🐛 Fix support for prefix on APIRouter WebSockets. PR [#2640](https://github.com/tiangolo/fastapi/pull/2640) by [@Kludex](https://github.com/Kludex). @@ -19,6 +18,7 @@ This release includes upgrades to third-party packages that handle security issu ### Internal +* 🔧 Update sponsors, add: ExoFlare, Ines Course; remove: Dropbase, Vim.so, Calmcode; update: Striveworks, TalkPython and TestDriven.io. PR [#4805](https://github.com/tiangolo/fastapi/pull/4805) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade Codecov GitHub Action. PR [#4801](https://github.com/tiangolo/fastapi/pull/4801) by [@tiangolo](https://github.com/tiangolo). ## 0.75.1 From 2b54432a9c78730b0dd69fca8f15d932d5a31d6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Sun, 17 Apr 2022 23:08:37 +0200 Subject: [PATCH 42/42] =?UTF-8?q?=F0=9F=94=96=20Release=20version=200.75.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 3 +++ fastapi/__init__.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 951a57daf..df3a36805 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,9 @@ ## Latest Changes + +## 0.75.2 + This release includes upgrades to third-party packages that handle security issues. Although there's a chance these issues don't affect you in particular, please upgrade as soon as possible. ### Fixes diff --git a/fastapi/__init__.py b/fastapi/__init__.py index 0ce2ef720..22d8e51ec 100644 --- a/fastapi/__init__.py +++ b/fastapi/__init__.py @@ -1,6 +1,6 @@ """FastAPI framework, high performance, easy to learn, fast to code, ready for production""" -__version__ = "0.75.1" +__version__ = "0.75.2" from starlette import status as status