From 751c7dc1799ec4a3979668b0d1899f080ca916f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 5 Jun 2025 08:48:55 +0200 Subject: [PATCH 01/65] =?UTF-8?q?=F0=9F=91=A5=20Update=20FastAPI=20People?= =?UTF-8?q?=20-=20Contributors=20and=20Translators=20(#13749)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions --- docs/en/data/contributors.yml | 6 ++-- docs/en/data/translation_reviewers.yml | 44 ++++++++++++++++---------- docs/en/data/translators.yml | 30 ++++++++++++------ 3 files changed, 50 insertions(+), 30 deletions(-) diff --git a/docs/en/data/contributors.yml b/docs/en/data/contributors.yml index 7da07d8a1..f3f7c9133 100644 --- a/docs/en/data/contributors.yml +++ b/docs/en/data/contributors.yml @@ -1,11 +1,11 @@ tiangolo: login: tiangolo - count: 734 + count: 747 avatarUrl: https://avatars.githubusercontent.com/u/1326112?u=cb5d06e73a9e1998141b1641aa88e443c6717651&v=4 url: https://github.com/tiangolo dependabot: login: dependabot - count: 100 + count: 102 avatarUrl: https://avatars.githubusercontent.com/in/29110?v=4 url: https://github.com/apps/dependabot alejsdev: @@ -15,7 +15,7 @@ alejsdev: url: https://github.com/alejsdev pre-commit-ci: login: pre-commit-ci - count: 27 + count: 30 avatarUrl: https://avatars.githubusercontent.com/in/68672?v=4 url: https://github.com/apps/pre-commit-ci github-actions: diff --git a/docs/en/data/translation_reviewers.yml b/docs/en/data/translation_reviewers.yml index b544633fd..aad3e4fac 100644 --- a/docs/en/data/translation_reviewers.yml +++ b/docs/en/data/translation_reviewers.yml @@ -10,7 +10,7 @@ Xewus: url: https://github.com/Xewus sodaMelon: login: sodaMelon - count: 124 + count: 125 avatarUrl: https://avatars.githubusercontent.com/u/66295123?u=be939db90f1119efee9e6110cc05066ff1f40f00&v=4 url: https://github.com/sodaMelon ceb10n: @@ -646,7 +646,7 @@ riroan: MinLee0210: login: MinLee0210 count: 9 - avatarUrl: https://avatars.githubusercontent.com/u/57653278?u=175010b24bc3a15a5705424badf9b18823bfd67d&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/57653278?u=3c4b6e9d69bff148d09fe022ddf867e564acaa44&v=4 url: https://github.com/MinLee0210 yodai-yodai: login: yodai-yodai @@ -723,6 +723,11 @@ minaton-ru: count: 8 avatarUrl: https://avatars.githubusercontent.com/u/53541518?u=67336ca11a85493f75031508aade588dad3b9910&v=4 url: https://github.com/minaton-ru +sungchan1: + login: sungchan1 + count: 8 + avatarUrl: https://avatars.githubusercontent.com/u/28076127?u=a816d86ef3e60450a7225f128caf9a394c9320f9&v=4 + url: https://github.com/sungchan1 Serrones: login: Serrones count: 7 @@ -768,11 +773,11 @@ d2a-raudenaerde: count: 7 avatarUrl: https://avatars.githubusercontent.com/u/5213150?v=4 url: https://github.com/d2a-raudenaerde -sungchan1: - login: sungchan1 +Zerohertz: + login: Zerohertz count: 7 - avatarUrl: https://avatars.githubusercontent.com/u/28076127?u=a816d86ef3e60450a7225f128caf9a394c9320f9&v=4 - url: https://github.com/sungchan1 + avatarUrl: https://avatars.githubusercontent.com/u/42334717?u=5ebf4d33e73b1ad373154f6cdee44f7cab4d05ba&v=4 + url: https://github.com/Zerohertz deniscapeto: login: deniscapeto count: 6 @@ -921,7 +926,7 @@ Wuerike: jvmazagao: login: jvmazagao count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/22477816?u=f3b2d503b53e6ec8c808f0601b756a063a07f06e&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/22477816?u=2b57addf5830906bf6ae5f25cd4c8c2fa5c2d68e&v=4 url: https://github.com/jvmazagao cun3yt: login: cun3yt @@ -1003,11 +1008,6 @@ devluisrodrigues: count: 5 avatarUrl: https://avatars.githubusercontent.com/u/103431660?u=d9674a3249edc4601d2c712cdebf899918503c3a&v=4 url: https://github.com/devluisrodrigues -Zerohertz: - login: Zerohertz - count: 5 - avatarUrl: https://avatars.githubusercontent.com/u/42334717?u=c6acda352c866b1747921e0ff8782b58571d849e&v=4 - url: https://github.com/Zerohertz 11kkw: login: 11kkw count: 5 @@ -1386,7 +1386,7 @@ tienduong-21: soroushgh1: login: soroushgh1 count: 3 - avatarUrl: https://avatars.githubusercontent.com/u/178516095?u=e4d791c982cf7899c69f6baeebc4d7bbe86635d1&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/178516095?u=5e26f6a5f66cdb32d7b56e6ab362bf18ba7858b9&v=4 url: https://github.com/soroushgh1 zbellos: login: zbellos @@ -1508,11 +1508,11 @@ tyzh-dev: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/51972581?u=ba3882da7c009918a8e2d6b9ead31c89f09c922d&v=4 url: https://github.com/tyzh-dev -WaFeeAL: - login: WaFeeAL +yurkevich-dev: + login: yurkevich-dev count: 2 avatarUrl: https://avatars.githubusercontent.com/u/45145188?u=db2de8c186073d95693279dcf085fcebffab57d0&v=4 - url: https://github.com/WaFeeAL + url: https://github.com/yurkevich-dev emp7yhead: login: emp7yhead count: 2 @@ -1566,7 +1566,7 @@ raphaelauv: Fahad-Md-Kamal: login: Fahad-Md-Kamal count: 2 - avatarUrl: https://avatars.githubusercontent.com/u/34704464?u=84abea85e59c30b2e3bc700ae42424f3fe704332&v=4 + avatarUrl: https://avatars.githubusercontent.com/u/34704464?u=f96c6cbd25b06274e3ff96bc961ca91b3f876481&v=4 url: https://github.com/Fahad-Md-Kamal zxcq544: login: zxcq544 @@ -1733,6 +1733,11 @@ Heumhub: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/173761521?v=4 url: https://github.com/Heumhub +manumolina: + login: manumolina + count: 2 + avatarUrl: https://avatars.githubusercontent.com/u/2404208?u=fdc5502910f8dec814b2477f89587b9e45fac846&v=4 + url: https://github.com/manumolina logan2d5: login: logan2d5 count: 2 @@ -1768,6 +1773,11 @@ EgorOnishchuk: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/120256301?v=4 url: https://github.com/EgorOnishchuk +iamantonreznik: + login: iamantonreznik + count: 2 + avatarUrl: https://avatars.githubusercontent.com/u/112612414?u=bf6de9a1ab17326fe14de0709719fff3826526d0&v=4 + url: https://github.com/iamantonreznik Azazul123: login: Azazul123 count: 2 diff --git a/docs/en/data/translators.yml b/docs/en/data/translators.yml index d8593f53f..51d05003b 100644 --- a/docs/en/data/translators.yml +++ b/docs/en/data/translators.yml @@ -13,6 +13,11 @@ ceb10n: count: 27 avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4 url: https://github.com/ceb10n +valentinDruzhinin: + login: valentinDruzhinin + count: 24 + avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4 + url: https://github.com/valentinDruzhinin tokusumi: login: tokusumi count: 23 @@ -33,11 +38,6 @@ waynerv: count: 20 avatarUrl: https://avatars.githubusercontent.com/u/39515546?u=ec35139777597cdbbbddda29bf8b9d4396b429a9&v=4 url: https://github.com/waynerv -valentinDruzhinin: - login: valentinDruzhinin - count: 18 - avatarUrl: https://avatars.githubusercontent.com/u/12831905?u=aae1ebc675c91e8fa582df4fcc4fc4128106344d&v=4 - url: https://github.com/valentinDruzhinin AlertRED: login: AlertRED count: 16 @@ -328,6 +328,11 @@ nahyunkeem: count: 3 avatarUrl: https://avatars.githubusercontent.com/u/174440096?u=e12401d492eee58570f8914d0872b52e421a776e&v=4 url: https://github.com/nahyunkeem +timothy-jeong: + login: timothy-jeong + count: 3 + avatarUrl: https://avatars.githubusercontent.com/u/53824764?u=db3d0cea2f5fab64d810113c5039a369699a2774&v=4 + url: https://github.com/timothy-jeong gerry-sabar: login: gerry-sabar count: 3 @@ -468,6 +473,11 @@ imtiaz101325: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/54007087?u=194d972b501b9ea9d2ddeaed757c492936e0121a&v=4 url: https://github.com/imtiaz101325 +fabianfalon: + login: fabianfalon + count: 2 + avatarUrl: https://avatars.githubusercontent.com/u/3700760?u=95f69e31280b17ac22299cdcd345323b142fe0af&v=4 + url: https://github.com/fabianfalon waketzheng: login: waketzheng count: 2 @@ -498,11 +508,6 @@ saeye: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/62229734?u=312d619db2588b60d5d5bde65260a2f44fdc6c76&v=4 url: https://github.com/saeye -timothy-jeong: - login: timothy-jeong - count: 2 - avatarUrl: https://avatars.githubusercontent.com/u/53824764?u=db3d0cea2f5fab64d810113c5039a369699a2774&v=4 - url: https://github.com/timothy-jeong 11kkw: login: 11kkw count: 2 @@ -513,3 +518,8 @@ yes0ng: count: 2 avatarUrl: https://avatars.githubusercontent.com/u/25501794?u=3aed18b0d491e0220a167a1e9e58bea3638c6707&v=4 url: https://github.com/yes0ng +EgorOnishchuk: + login: EgorOnishchuk + count: 2 + avatarUrl: https://avatars.githubusercontent.com/u/120256301?v=4 + url: https://github.com/EgorOnishchuk From 54f255ecc8d199d53e58c6f01237511754352608 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 06:49:21 +0000 Subject: [PATCH 02/65] =?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 [skip ci] --- 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 fa2ba1601..53271fe1c 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -44,6 +44,7 @@ hide: ### Internal +* đŸ‘Ĩ Update FastAPI People - Contributors and Translators. PR [#13749](https://github.com/fastapi/fastapi/pull/13749) by [@tiangolo](https://github.com/tiangolo). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13736](https://github.com/fastapi/fastapi/pull/13736) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * 🔧 Update sponsors: Add InterviewPal. PR [#13728](https://github.com/fastapi/fastapi/pull/13728) by [@tiangolo](https://github.com/tiangolo). * 🔧 Remove Google Analytics. PR [#13727](https://github.com/fastapi/fastapi/pull/13727) by [@tiangolo](https://github.com/tiangolo). From c430ef1ac13f190a0d7669e394366ddd5eb75a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 5 Jun 2025 08:58:14 +0200 Subject: [PATCH 03/65] =?UTF-8?q?=F0=9F=91=A5=20Update=20FastAPI=20People?= =?UTF-8?q?=20-=20Sponsors=20(#13750)?= 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 | 106 ++++++++++++++----------------- 1 file changed, 47 insertions(+), 59 deletions(-) diff --git a/docs/en/data/github_sponsors.yml b/docs/en/data/github_sponsors.yml index e24f64edc..efc5cbfcc 100644 --- a/docs/en/data/github_sponsors.yml +++ b/docs/en/data/github_sponsors.yml @@ -2,6 +2,9 @@ sponsors: - - login: renderinc avatarUrl: https://avatars.githubusercontent.com/u/36424661?v=4 url: https://github.com/renderinc + - login: Nixtla + avatarUrl: https://avatars.githubusercontent.com/u/79945230?v=4 + url: https://github.com/Nixtla - login: andrew-propelauth avatarUrl: https://avatars.githubusercontent.com/u/89474256?u=c98993dec8553c09d424ede67bbe86e5c35f48c9&v=4 url: https://github.com/andrew-propelauth @@ -14,19 +17,22 @@ sponsors: - login: coderabbitai avatarUrl: https://avatars.githubusercontent.com/u/132028505?v=4 url: https://github.com/coderabbitai + - login: subtotal + avatarUrl: https://avatars.githubusercontent.com/u/176449348?v=4 + url: https://github.com/subtotal - login: porter-dev avatarUrl: https://avatars.githubusercontent.com/u/62078005?v=4 url: https://github.com/porter-dev - - login: Nixtla - avatarUrl: https://avatars.githubusercontent.com/u/79945230?v=4 - url: https://github.com/Nixtla - login: scalar avatarUrl: https://avatars.githubusercontent.com/u/301879?v=4 url: https://github.com/scalar - - login: ObliviousAI avatarUrl: https://avatars.githubusercontent.com/u/65656077?v=4 url: https://github.com/ObliviousAI -- - login: svix +- - login: dribia + avatarUrl: https://avatars.githubusercontent.com/u/41189616?v=4 + url: https://github.com/dribia + - login: svix avatarUrl: https://avatars.githubusercontent.com/u/80175132?v=4 url: https://github.com/svix - login: stainless-api @@ -35,6 +41,9 @@ sponsors: - login: speakeasy-api avatarUrl: https://avatars.githubusercontent.com/u/91446104?v=4 url: https://github.com/speakeasy-api + - login: snapit-cypher + avatarUrl: https://avatars.githubusercontent.com/u/115662654?v=4 + url: https://github.com/snapit-cypher - login: databento avatarUrl: https://avatars.githubusercontent.com/u/64141749?v=4 url: https://github.com/databento @@ -68,6 +77,9 @@ sponsors: - - login: takashi-yoneya avatarUrl: https://avatars.githubusercontent.com/u/33813153?u=2d0522bceba0b8b69adf1f2db866503bd96f944e&v=4 url: https://github.com/takashi-yoneya + - login: Doist + avatarUrl: https://avatars.githubusercontent.com/u/2565372?v=4 + url: https://github.com/Doist - - login: mainframeindustries avatarUrl: https://avatars.githubusercontent.com/u/55092103?v=4 url: https://github.com/mainframeindustries @@ -83,18 +95,9 @@ sponsors: - - login: upciti avatarUrl: https://avatars.githubusercontent.com/u/43346262?v=4 url: https://github.com/upciti - - login: f4rk4sh - avatarUrl: https://avatars.githubusercontent.com/u/90454259?v=4 - url: https://github.com/f4rk4sh - - login: freddiev4 - avatarUrl: https://avatars.githubusercontent.com/u/8339018?u=1aad5b4f5a04cb750852b843d5e1d8f4ce339c2e&v=4 - url: https://github.com/freddiev4 - - login: samuelcolvin avatarUrl: https://avatars.githubusercontent.com/u/4039449?u=42eb3b833047c8c4b4f647a031eaef148c16d93f&v=4 url: https://github.com/samuelcolvin - - login: vincentkoc - avatarUrl: https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&v=4 - url: https://github.com/vincentkoc - login: otosky avatarUrl: https://avatars.githubusercontent.com/u/42260747?u=69d089387c743d89427aa4ad8740cfb34045a9e0&v=4 url: https://github.com/otosky @@ -104,9 +107,6 @@ sponsors: - login: ashi-agrawal avatarUrl: https://avatars.githubusercontent.com/u/17105294?u=99c7a854035e5398d8e7b674f2d42baae6c957f8&v=4 url: https://github.com/ashi-agrawal - - login: sepsi77 - avatarUrl: https://avatars.githubusercontent.com/u/18682303?v=4 - url: https://github.com/sepsi77 - login: RaamEEIL avatarUrl: https://avatars.githubusercontent.com/u/20320552?v=4 url: https://github.com/RaamEEIL @@ -125,9 +125,6 @@ sponsors: - login: ProteinQure avatarUrl: https://avatars.githubusercontent.com/u/33707203?v=4 url: https://github.com/ProteinQure - - login: roboflow - avatarUrl: https://avatars.githubusercontent.com/u/53104118?v=4 - url: https://github.com/roboflow - login: kaoru0310 avatarUrl: https://avatars.githubusercontent.com/u/80977929?u=1b61d10142b490e56af932ddf08a390fae8ee94f&v=4 url: https://github.com/kaoru0310 @@ -146,6 +143,9 @@ sponsors: - login: logic-automation avatarUrl: https://avatars.githubusercontent.com/u/144732884?v=4 url: https://github.com/logic-automation + - login: roboflow + avatarUrl: https://avatars.githubusercontent.com/u/53104118?v=4 + url: https://github.com/roboflow - login: dudikbender avatarUrl: https://avatars.githubusercontent.com/u/53487583?u=3a57542938ebfd57579a0111db2b297e606d9681&v=4 url: https://github.com/dudikbender @@ -185,15 +185,18 @@ sponsors: - login: anomaly avatarUrl: https://avatars.githubusercontent.com/u/3654837?v=4 url: https://github.com/anomaly + - login: mj0331 + avatarUrl: https://avatars.githubusercontent.com/u/3890353?u=1c627ac1a024515b4871de5c3ebbfaa1a57f65d4&v=4 + url: https://github.com/mj0331 - login: gorhack avatarUrl: https://avatars.githubusercontent.com/u/4141690?u=ec119ebc4bdf00a7bc84657a71aa17834f4f27f3&v=4 url: https://github.com/gorhack - login: Ryandaydev avatarUrl: https://avatars.githubusercontent.com/u/4292423?u=679ff84cb7b988c5795a5fa583857f574a055763&v=4 url: https://github.com/Ryandaydev - - login: jaredtrog - avatarUrl: https://avatars.githubusercontent.com/u/4381365?v=4 - url: https://github.com/jaredtrog + - login: vincentkoc + avatarUrl: https://avatars.githubusercontent.com/u/25068?u=fbd5b2d51142daa4bdbc21e21953a3b8b8188a4a&v=4 + url: https://github.com/vincentkoc - login: jstanden avatarUrl: https://avatars.githubusercontent.com/u/63288?u=c3658d57d2862c607a0e19c2101c3c51876e36ad&v=4 url: https://github.com/jstanden @@ -215,9 +218,6 @@ sponsors: - login: wshayes avatarUrl: https://avatars.githubusercontent.com/u/365303?u=07ca03c5ee811eb0920e633cc3c3db73dbec1aa5&v=4 url: https://github.com/wshayes - - login: gaetanBloch - avatarUrl: https://avatars.githubusercontent.com/u/583199?u=50c49e83d6b4feb78a091901ea02ead1462f442b&v=4 - url: https://github.com/gaetanBloch - login: koxudaxi avatarUrl: https://avatars.githubusercontent.com/u/630670?u=507d8577b4b3670546b449c4c2ccbc5af40d72f7&v=4 url: https://github.com/koxudaxi @@ -227,9 +227,6 @@ sponsors: - login: mintuhouse avatarUrl: https://avatars.githubusercontent.com/u/769950?u=ecfbd79a97d33177e0d093ddb088283cf7fe8444&v=4 url: https://github.com/mintuhouse - - login: oliverxchen - avatarUrl: https://avatars.githubusercontent.com/u/4471774?u=534191f25e32eeaadda22dfab4b0a428733d5489&v=4 - url: https://github.com/oliverxchen - login: TrevorBenson avatarUrl: https://avatars.githubusercontent.com/u/9167887?u=dccbea3327a57750923333d8ebf1a0b3f1948949&v=4 url: https://github.com/TrevorBenson @@ -254,6 +251,12 @@ sponsors: - login: mjohnsey avatarUrl: https://avatars.githubusercontent.com/u/16784016?u=38fad2e6b411244560b3af99c5f5a4751bc81865&v=4 url: https://github.com/mjohnsey + - 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: ternaus avatarUrl: https://avatars.githubusercontent.com/u/5481618?u=513a26b02a39e7a28d587cd37c6cc877ea368e6e&v=4 url: https://github.com/ternaus @@ -263,9 +266,6 @@ sponsors: - login: FernandoCelmer avatarUrl: https://avatars.githubusercontent.com/u/6262214?u=58ba6d5888fa7f355934e52db19f950e20b38162&v=4 url: https://github.com/FernandoCelmer - - login: simw - avatarUrl: https://avatars.githubusercontent.com/u/6322526?v=4 - url: https://github.com/simw - login: Rehket avatarUrl: https://avatars.githubusercontent.com/u/7015688?u=3afb0ba200feebbc7f958950e92db34df2a3c172&v=4 url: https://github.com/Rehket @@ -299,6 +299,9 @@ sponsors: - login: hgalytoby avatarUrl: https://avatars.githubusercontent.com/u/50397689?u=62c7ff3519858423579676cd0efbd7e3f1ffe63a&v=4 url: https://github.com/hgalytoby + - login: browniebroke + avatarUrl: https://avatars.githubusercontent.com/u/861044?u=5abfca5588f3e906b31583d7ee62f6de4b68aa24&v=4 + url: https://github.com/browniebroke - login: joshuatz avatarUrl: https://avatars.githubusercontent.com/u/17817563?u=f1bf05b690d1fc164218f0b420cdd3acb7913e21&v=4 url: https://github.com/joshuatz @@ -317,12 +320,12 @@ sponsors: - login: rlnchow avatarUrl: https://avatars.githubusercontent.com/u/28018479?u=a93ca9cf1422b9ece155784a72d5f2fdbce7adff&v=4 url: https://github.com/rlnchow - - login: dvlpjrs - avatarUrl: https://avatars.githubusercontent.com/u/32254642?u=fbd6ad0324d4f1eb6231cf775be1c7bd4404e961&v=4 - url: https://github.com/dvlpjrs - login: engineerjoe440 avatarUrl: https://avatars.githubusercontent.com/u/33275230?u=eb223cad27017bb1e936ee9b429b450d092d0236&v=4 url: https://github.com/engineerjoe440 + - login: lukzmu + avatarUrl: https://avatars.githubusercontent.com/u/175964415?u=83ea9b0b7b7b0f15bcb5747d93f303447a19a00b&v=4 + url: https://github.com/lukzmu - login: conservative-dude avatarUrl: https://avatars.githubusercontent.com/u/55538308?u=f250c44942ea6e73a6bd90739b381c470c192c11&v=4 url: https://github.com/conservative-dude @@ -335,12 +338,6 @@ sponsors: - login: PelicanQ avatarUrl: https://avatars.githubusercontent.com/u/77930606?v=4 url: https://github.com/PelicanQ - - login: tochikuji - avatarUrl: https://avatars.githubusercontent.com/u/851759?v=4 - url: https://github.com/tochikuji - - login: browniebroke - avatarUrl: https://avatars.githubusercontent.com/u/861044?u=5abfca5588f3e906b31583d7ee62f6de4b68aa24&v=4 - url: https://github.com/browniebroke - login: miguelgr avatarUrl: https://avatars.githubusercontent.com/u/1484589?u=54556072b8136efa12ae3b6902032ea2a39ace4b&v=4 url: https://github.com/miguelgr @@ -368,6 +365,9 @@ sponsors: - login: ceb10n avatarUrl: https://avatars.githubusercontent.com/u/235213?u=edcce471814a1eba9f0cdaa4cd0de18921a940a6&v=4 url: https://github.com/ceb10n + - login: tochikuji + avatarUrl: https://avatars.githubusercontent.com/u/851759?v=4 + url: https://github.com/tochikuji - login: moonape1226 avatarUrl: https://avatars.githubusercontent.com/u/8532038?u=d9f8b855a429fff9397c3833c2ff83849ebf989d&v=4 url: https://github.com/moonape1226 @@ -428,10 +428,7 @@ sponsors: - login: hcristea avatarUrl: https://avatars.githubusercontent.com/u/7814406?u=19092923a4ea5b338567961c8270b9206a6d81bb&v=4 url: https://github.com/hcristea -- - login: larsyngvelundin - avatarUrl: https://avatars.githubusercontent.com/u/34173819?u=74958599695bf83ac9f1addd935a51548a10c6b0&v=4 - url: https://github.com/larsyngvelundin - - login: andrecorumba +- - login: andrecorumba avatarUrl: https://avatars.githubusercontent.com/u/37807517?u=9b9be3b41da9bda60957da9ef37b50dbf65baa61&v=4 url: https://github.com/andrecorumba - login: rwxd @@ -446,27 +443,18 @@ sponsors: - login: Olegt0rr avatarUrl: https://avatars.githubusercontent.com/u/25399456?u=3e87b5239a2f4600975ba13be73054f8567c6060&v=4 url: https://github.com/Olegt0rr - - login: Miles-Arts - avatarUrl: https://avatars.githubusercontent.com/u/82297475?u=c41881e4b386d9dbf737218542b120336b5731a1&v=4 - url: https://github.com/Miles-Arts - - login: sandeepsalwan1 - avatarUrl: https://avatars.githubusercontent.com/u/118837112?u=fc9b0330fa4791950661b7decd9bf56f07599b43&v=4 - url: https://github.com/sandeepsalwan1 - - login: fabioantonioastore - avatarUrl: https://avatars.githubusercontent.com/u/132024075?u=b3a267f2e2c7ce2379f82163f88111bd2a2a2f1e&v=4 - url: https://github.com/fabioantonioastore - - login: zhandos256 - avatarUrl: https://avatars.githubusercontent.com/u/60260671?u=aa9ed698bc3cd06fb553d2ef91d3895bbb00cce1&v=4 - url: https://github.com/zhandos256 + - login: larsyngvelundin + avatarUrl: https://avatars.githubusercontent.com/u/34173819?u=74958599695bf83ac9f1addd935a51548a10c6b0&v=4 + url: https://github.com/larsyngvelundin - login: one-st-one avatarUrl: https://avatars.githubusercontent.com/u/62360849?u=746dd21c34e7e06eefb11b03e8bb01aaae3c2a4f&v=4 url: https://github.com/one-st-one + - login: federicsp + avatarUrl: https://avatars.githubusercontent.com/u/62903636?u=05004f4a2c590f1d18c200e17978bf2e17acb632&v=4 + url: https://github.com/federicsp - login: Toothwitch avatarUrl: https://avatars.githubusercontent.com/u/1710406?u=5eebb23b46cd26e48643b9e5179536cad491c17a&v=4 url: https://github.com/Toothwitch - - login: ssbarnea - avatarUrl: https://avatars.githubusercontent.com/u/102495?u=c7bd9ddf127785286fc939dd18cb02db0a453bce&v=4 - url: https://github.com/ssbarnea - login: andreagrandi avatarUrl: https://avatars.githubusercontent.com/u/636391?u=13d90cb8ec313593a5b71fbd4e33b78d6da736f5&v=4 url: https://github.com/andreagrandi From c3de47858c5e73bf01b14a2588fd819f89ca6a51 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 06:58:39 +0000 Subject: [PATCH 04/65] =?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 [skip ci] --- 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 53271fe1c..ffeebcce1 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -44,6 +44,7 @@ hide: ### Internal +* đŸ‘Ĩ Update FastAPI People - Sponsors. PR [#13750](https://github.com/fastapi/fastapi/pull/13750) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Contributors and Translators. PR [#13749](https://github.com/fastapi/fastapi/pull/13749) by [@tiangolo](https://github.com/tiangolo). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13736](https://github.com/fastapi/fastapi/pull/13736) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * 🔧 Update sponsors: Add InterviewPal. PR [#13728](https://github.com/fastapi/fastapi/pull/13728) by [@tiangolo](https://github.com/tiangolo). From e71d87d8ef00c6ff5e77366a29b10af4e59144ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 5 Jun 2025 09:29:13 +0200 Subject: [PATCH 05/65] =?UTF-8?q?=F0=9F=91=A5=20Update=20FastAPI=20GitHub?= =?UTF-8?q?=20topic=20repositories=20(#13754)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: github-actions --- docs/en/data/topic_repos.yml | 384 +++++++++++++++++------------------ 1 file changed, 192 insertions(+), 192 deletions(-) diff --git a/docs/en/data/topic_repos.yml b/docs/en/data/topic_repos.yml index 169b62694..1f6ae55bd 100644 --- a/docs/en/data/topic_repos.yml +++ b/docs/en/data/topic_repos.yml @@ -1,266 +1,266 @@ - name: full-stack-fastapi-template html_url: https://github.com/fastapi/full-stack-fastapi-template - stars: 32337 + stars: 33079 owner_login: fastapi owner_html_url: https://github.com/fastapi - name: Hello-Python html_url: https://github.com/mouredev/Hello-Python - stars: 29833 + stars: 30350 owner_login: mouredev owner_html_url: https://github.com/mouredev - name: serve html_url: https://github.com/jina-ai/serve - stars: 21544 + stars: 21593 owner_login: jina-ai owner_html_url: https://github.com/jina-ai -- name: sqlmodel - html_url: https://github.com/fastapi/sqlmodel - stars: 15799 - owner_login: fastapi - owner_html_url: https://github.com/fastapi - name: HivisionIDPhotos html_url: https://github.com/Zeyi-Lin/HivisionIDPhotos - stars: 15676 + stars: 17229 owner_login: Zeyi-Lin owner_html_url: https://github.com/Zeyi-Lin +- name: sqlmodel + html_url: https://github.com/fastapi/sqlmodel + stars: 16068 + owner_login: fastapi + owner_html_url: https://github.com/fastapi - name: Douyin_TikTok_Download_API html_url: https://github.com/Evil0ctal/Douyin_TikTok_Download_API - stars: 12183 + stars: 12689 owner_login: Evil0ctal owner_html_url: https://github.com/Evil0ctal - name: fastapi-best-practices html_url: https://github.com/zhanymkanov/fastapi-best-practices - stars: 11594 + stars: 11965 owner_login: zhanymkanov owner_html_url: https://github.com/zhanymkanov - name: awesome-fastapi html_url: https://github.com/mjhea0/awesome-fastapi - stars: 9586 + stars: 9773 owner_login: mjhea0 owner_html_url: https://github.com/mjhea0 - name: FastUI html_url: https://github.com/pydantic/FastUI - stars: 8804 + stars: 8829 owner_login: pydantic owner_html_url: https://github.com/pydantic - name: nonebot2 html_url: https://github.com/nonebot/nonebot2 - stars: 6688 + stars: 6779 owner_login: nonebot owner_html_url: https://github.com/nonebot - name: FileCodeBox html_url: https://github.com/vastsa/FileCodeBox - stars: 6502 + stars: 6652 owner_login: vastsa owner_html_url: https://github.com/vastsa - name: serge html_url: https://github.com/serge-chat/serge - stars: 5720 + stars: 5722 owner_login: serge-chat owner_html_url: https://github.com/serge-chat - name: hatchet html_url: https://github.com/hatchet-dev/hatchet - stars: 5515 + stars: 5607 owner_login: hatchet-dev owner_html_url: https://github.com/hatchet-dev -- name: fastapi-users - html_url: https://github.com/fastapi-users/fastapi-users - stars: 5162 - owner_login: fastapi-users - owner_html_url: https://github.com/fastapi-users - name: polar html_url: https://github.com/polarsource/polar - stars: 5119 + stars: 5327 owner_login: polarsource owner_html_url: https://github.com/polarsource +- name: fastapi-users + html_url: https://github.com/fastapi-users/fastapi-users + stars: 5235 + owner_login: fastapi-users + owner_html_url: https://github.com/fastapi-users +- name: fastapi_mcp + html_url: https://github.com/tadata-org/fastapi_mcp + stars: 5193 + owner_login: tadata-org + owner_html_url: https://github.com/tadata-org +- name: SurfSense + html_url: https://github.com/MODSetter/SurfSense + stars: 4833 + owner_login: MODSetter + owner_html_url: https://github.com/MODSetter - name: chatgpt-web-share html_url: https://github.com/chatpire/chatgpt-web-share - stars: 4302 + stars: 4307 owner_login: chatpire owner_html_url: https://github.com/chatpire - name: strawberry html_url: https://github.com/strawberry-graphql/strawberry - stars: 4244 + stars: 4281 owner_login: strawberry-graphql owner_html_url: https://github.com/strawberry-graphql -- name: fastapi_mcp - html_url: https://github.com/tadata-org/fastapi_mcp - stars: 4178 - owner_login: tadata-org - owner_html_url: https://github.com/tadata-org - name: atrilabs-engine html_url: https://github.com/Atri-Labs/atrilabs-engine - stars: 4112 + stars: 4110 owner_login: Atri-Labs owner_html_url: https://github.com/Atri-Labs - name: dynaconf html_url: https://github.com/dynaconf/dynaconf - stars: 3985 + stars: 4008 owner_login: dynaconf owner_html_url: https://github.com/dynaconf - name: poem html_url: https://github.com/poem-web/poem - stars: 3918 + stars: 3977 owner_login: poem-web owner_html_url: https://github.com/poem-web - name: farfalle html_url: https://github.com/rashadphz/farfalle - stars: 3287 + stars: 3317 owner_login: rashadphz owner_html_url: https://github.com/rashadphz - name: fastapi-admin html_url: https://github.com/fastapi-admin/fastapi-admin - stars: 3192 + stars: 3253 owner_login: fastapi-admin owner_html_url: https://github.com/fastapi-admin - name: datamodel-code-generator html_url: https://github.com/koxudaxi/datamodel-code-generator - stars: 3141 + stars: 3228 owner_login: koxudaxi owner_html_url: https://github.com/koxudaxi -- name: opyrator - html_url: https://github.com/ml-tooling/opyrator - stars: 3116 - owner_login: ml-tooling - owner_html_url: https://github.com/ml-tooling - name: LitServe html_url: https://github.com/Lightning-AI/LitServe - stars: 3088 + stars: 3175 owner_login: Lightning-AI owner_html_url: https://github.com/Lightning-AI - name: logfire html_url: https://github.com/pydantic/logfire - stars: 3059 + stars: 3172 owner_login: pydantic owner_html_url: https://github.com/pydantic -- name: docarray - html_url: https://github.com/docarray/docarray - stars: 3052 - owner_login: docarray - owner_html_url: https://github.com/docarray +- name: opyrator + html_url: https://github.com/ml-tooling/opyrator + stars: 3122 + owner_login: ml-tooling + owner_html_url: https://github.com/ml-tooling - name: huma html_url: https://github.com/danielgtaylor/huma - stars: 3025 + stars: 3110 owner_login: danielgtaylor owner_html_url: https://github.com/danielgtaylor +- name: docarray + html_url: https://github.com/docarray/docarray + stars: 3068 + owner_login: docarray + owner_html_url: https://github.com/docarray - name: fastapi-realworld-example-app html_url: https://github.com/nsidnev/fastapi-realworld-example-app - stars: 2883 + stars: 2892 owner_login: nsidnev owner_html_url: https://github.com/nsidnev +- name: Kokoro-FastAPI + html_url: https://github.com/remsky/Kokoro-FastAPI + stars: 2883 + owner_login: remsky + owner_html_url: https://github.com/remsky - name: uvicorn-gunicorn-fastapi-docker html_url: https://github.com/tiangolo/uvicorn-gunicorn-fastapi-docker - stars: 2756 + stars: 2770 owner_login: tiangolo owner_html_url: https://github.com/tiangolo - name: tracecat html_url: https://github.com/TracecatHQ/tracecat - stars: 2587 + stars: 2740 owner_login: TracecatHQ owner_html_url: https://github.com/TracecatHQ - name: best-of-web-python html_url: https://github.com/ml-tooling/best-of-web-python - stars: 2502 + stars: 2517 owner_login: ml-tooling owner_html_url: https://github.com/ml-tooling -- name: Kokoro-FastAPI - html_url: https://github.com/remsky/Kokoro-FastAPI - stars: 2500 - owner_login: remsky - owner_html_url: https://github.com/remsky - name: RasaGPT html_url: https://github.com/paulpierre/RasaGPT - stars: 2419 + stars: 2423 owner_login: paulpierre owner_html_url: https://github.com/paulpierre - name: fastapi-react html_url: https://github.com/Buuntu/fastapi-react - stars: 2350 + stars: 2376 owner_login: Buuntu owner_html_url: https://github.com/Buuntu -- name: nextpy - html_url: https://github.com/dot-agent/nextpy - stars: 2277 - owner_login: dot-agent - owner_html_url: https://github.com/dot-agent - name: FastAPI-template html_url: https://github.com/s3rius/FastAPI-template - stars: 2273 + stars: 2301 owner_login: s3rius owner_html_url: https://github.com/s3rius -- name: 30-Days-of-Python - html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python - stars: 2183 - owner_login: codingforentrepreneurs - owner_html_url: https://github.com/codingforentrepreneurs +- name: nextpy + html_url: https://github.com/dot-agent/nextpy + stars: 2289 + owner_login: dot-agent + owner_html_url: https://github.com/dot-agent - name: sqladmin html_url: https://github.com/aminalaee/sqladmin - stars: 2141 + stars: 2196 owner_login: aminalaee owner_html_url: https://github.com/aminalaee +- name: 30-Days-of-Python + html_url: https://github.com/codingforentrepreneurs/30-Days-of-Python + stars: 2179 + owner_login: codingforentrepreneurs + owner_html_url: https://github.com/codingforentrepreneurs - name: langserve html_url: https://github.com/langchain-ai/langserve - stars: 2070 + stars: 2098 owner_login: langchain-ai owner_html_url: https://github.com/langchain-ai - name: fastapi-utils html_url: https://github.com/fastapiutils/fastapi-utils - stars: 2063 + stars: 2077 owner_login: fastapiutils owner_html_url: https://github.com/fastapiutils -- name: solara - html_url: https://github.com/widgetti/solara - stars: 2028 - owner_login: widgetti - owner_html_url: https://github.com/widgetti - name: supabase-py html_url: https://github.com/supabase/supabase-py - stars: 1996 + stars: 2047 owner_login: supabase owner_html_url: https://github.com/supabase +- name: solara + html_url: https://github.com/widgetti/solara + stars: 2044 + owner_login: widgetti + owner_html_url: https://github.com/widgetti - name: mangum html_url: https://github.com/Kludex/mangum - stars: 1870 + stars: 1905 owner_login: Kludex owner_html_url: https://github.com/Kludex - name: python-week-2022 html_url: https://github.com/rochacbruno/python-week-2022 - stars: 1827 + stars: 1823 owner_login: rochacbruno owner_html_url: https://github.com/rochacbruno -- name: SurfSense - html_url: https://github.com/MODSetter/SurfSense - stars: 1763 - owner_login: MODSetter - owner_html_url: https://github.com/MODSetter - name: manage-fastapi html_url: https://github.com/ycd/manage-fastapi - stars: 1743 + stars: 1754 owner_login: ycd owner_html_url: https://github.com/ycd - name: agentkit html_url: https://github.com/BCG-X-Official/agentkit - stars: 1741 + stars: 1746 owner_login: BCG-X-Official owner_html_url: https://github.com/BCG-X-Official - name: ormar html_url: https://github.com/collerek/ormar - stars: 1730 + stars: 1742 owner_login: collerek owner_html_url: https://github.com/collerek - name: langchain-serve html_url: https://github.com/jina-ai/langchain-serve - stars: 1631 + stars: 1630 owner_login: jina-ai owner_html_url: https://github.com/jina-ai - name: termpair html_url: https://github.com/cs01/termpair - stars: 1610 + stars: 1611 owner_login: cs01 owner_html_url: https://github.com/cs01 - name: piccolo html_url: https://github.com/piccolo-orm/piccolo - stars: 1588 + stars: 1609 owner_login: piccolo-orm owner_html_url: https://github.com/piccolo-orm - name: coronavirus-tracker-api @@ -270,137 +270,152 @@ owner_html_url: https://github.com/ExpDev07 - name: fastapi-cache html_url: https://github.com/long2ice/fastapi-cache - stars: 1552 + stars: 1575 owner_login: long2ice owner_html_url: https://github.com/long2ice - name: openapi-python-client html_url: https://github.com/openapi-generators/openapi-python-client - stars: 1536 + stars: 1568 owner_login: openapi-generators owner_html_url: https://github.com/openapi-generators - name: fastapi-crudrouter html_url: https://github.com/awtkns/fastapi-crudrouter - stars: 1491 + stars: 1508 owner_login: awtkns owner_html_url: https://github.com/awtkns - name: slowapi html_url: https://github.com/laurentS/slowapi - stars: 1450 + stars: 1501 owner_login: laurentS owner_html_url: https://github.com/laurentS - name: awesome-fastapi-projects html_url: https://github.com/Kludex/awesome-fastapi-projects - stars: 1443 + stars: 1453 owner_login: Kludex owner_html_url: https://github.com/Kludex - name: awesome-python-resources html_url: https://github.com/DjangoEx/awesome-python-resources - stars: 1387 + stars: 1390 owner_login: DjangoEx owner_html_url: https://github.com/DjangoEx -- name: budgetml - html_url: https://github.com/ebhy/budgetml - stars: 1341 - owner_login: ebhy - owner_html_url: https://github.com/ebhy - name: fastapi-pagination html_url: https://github.com/uriyyo/fastapi-pagination - stars: 1331 + stars: 1353 owner_login: uriyyo owner_html_url: https://github.com/uriyyo +- name: budgetml + html_url: https://github.com/ebhy/budgetml + stars: 1342 + owner_login: ebhy + owner_html_url: https://github.com/ebhy - name: fastapi-boilerplate html_url: https://github.com/teamhide/fastapi-boilerplate - stars: 1299 + stars: 1325 owner_login: teamhide owner_html_url: https://github.com/teamhide +- name: vue-fastapi-admin + html_url: https://github.com/mizhexiaoxiao/vue-fastapi-admin + stars: 1306 + owner_login: mizhexiaoxiao + owner_html_url: https://github.com/mizhexiaoxiao - name: fastapi-amis-admin html_url: https://github.com/amisadmin/fastapi-amis-admin - stars: 1235 + stars: 1256 owner_login: amisadmin owner_html_url: https://github.com/amisadmin - name: fastapi-tutorial html_url: https://github.com/liaogx/fastapi-tutorial - stars: 1222 + stars: 1245 owner_login: liaogx owner_html_url: https://github.com/liaogx -- name: vue-fastapi-admin - html_url: https://github.com/mizhexiaoxiao/vue-fastapi-admin - stars: 1190 - owner_login: mizhexiaoxiao - owner_html_url: https://github.com/mizhexiaoxiao - name: fastapi-code-generator html_url: https://github.com/koxudaxi/fastapi-code-generator - stars: 1180 + stars: 1201 owner_login: koxudaxi owner_html_url: https://github.com/koxudaxi +- name: bracket + html_url: https://github.com/evroon/bracket + stars: 1201 + owner_login: evroon + owner_html_url: https://github.com/evroon - name: bolt-python html_url: https://github.com/slackapi/bolt-python - stars: 1166 + stars: 1179 owner_login: slackapi owner_html_url: https://github.com/slackapi - name: fastapi_production_template html_url: https://github.com/zhanymkanov/fastapi_production_template - stars: 1134 + stars: 1147 owner_login: zhanymkanov owner_html_url: https://github.com/zhanymkanov -- name: langchain-extract - html_url: https://github.com/langchain-ai/langchain-extract - stars: 1127 - owner_login: langchain-ai - owner_html_url: https://github.com/langchain-ai -- name: odmantic - html_url: https://github.com/art049/odmantic - stars: 1115 - owner_login: art049 - owner_html_url: https://github.com/art049 - name: prometheus-fastapi-instrumentator html_url: https://github.com/trallnag/prometheus-fastapi-instrumentator - stars: 1112 + stars: 1145 owner_login: trallnag owner_html_url: https://github.com/trallnag - name: bedrock-chat html_url: https://github.com/aws-samples/bedrock-chat - stars: 1107 + stars: 1143 owner_login: aws-samples owner_html_url: https://github.com/aws-samples +- name: langchain-extract + html_url: https://github.com/langchain-ai/langchain-extract + stars: 1134 + owner_login: langchain-ai + owner_html_url: https://github.com/langchain-ai +- name: odmantic + html_url: https://github.com/art049/odmantic + stars: 1118 + owner_login: art049 + owner_html_url: https://github.com/art049 - name: fastapi-alembic-sqlmodel-async html_url: https://github.com/jonra1993/fastapi-alembic-sqlmodel-async - stars: 1094 + stars: 1110 owner_login: jonra1993 owner_html_url: https://github.com/jonra1993 +- name: fastcrud + html_url: https://github.com/benavlabs/fastcrud + stars: 1080 + owner_login: benavlabs + owner_html_url: https://github.com/benavlabs - name: restish html_url: https://github.com/rest-sh/restish - stars: 1041 + stars: 1056 owner_login: rest-sh owner_html_url: https://github.com/rest-sh -- name: fastcrud - html_url: https://github.com/igorbenav/fastcrud - stars: 1036 - owner_login: igorbenav - owner_html_url: https://github.com/igorbenav -- name: runhouse - html_url: https://github.com/run-house/runhouse - stars: 1022 - owner_login: run-house - owner_html_url: https://github.com/run-house - name: fastapi_best_architecture html_url: https://github.com/fastapi-practices/fastapi_best_architecture - stars: 997 + stars: 1050 owner_login: fastapi-practices owner_html_url: https://github.com/fastapi-practices +- name: runhouse + html_url: https://github.com/run-house/runhouse + stars: 1034 + owner_login: run-house + owner_html_url: https://github.com/run-house +- name: autollm + html_url: https://github.com/viddexa/autollm + stars: 992 + owner_login: viddexa + owner_html_url: https://github.com/viddexa - name: lanarky html_url: https://github.com/ajndkr/lanarky stars: 990 owner_login: ajndkr owner_html_url: https://github.com/ajndkr -- name: autollm - html_url: https://github.com/viddexa/autollm - stars: 990 - owner_login: viddexa - owner_html_url: https://github.com/viddexa +- name: FastAPI-boilerplate + html_url: https://github.com/benavlabs/FastAPI-boilerplate + stars: 985 + owner_login: benavlabs + owner_html_url: https://github.com/benavlabs +- name: authx + html_url: https://github.com/yezz123/authx + stars: 938 + owner_login: yezz123 + owner_html_url: https://github.com/yezz123 - name: secure html_url: https://github.com/TypeError/secure - stars: 932 + stars: 935 owner_login: TypeError owner_html_url: https://github.com/TypeError - name: langcorn @@ -408,88 +423,73 @@ stars: 925 owner_login: msoedov owner_html_url: https://github.com/msoedov -- name: FastAPI-boilerplate - html_url: https://github.com/igorbenav/FastAPI-boilerplate - stars: 925 - owner_login: igorbenav - owner_html_url: https://github.com/igorbenav -- name: authx - html_url: https://github.com/yezz123/authx - stars: 913 - owner_login: yezz123 - owner_html_url: https://github.com/yezz123 - name: energy-forecasting html_url: https://github.com/iusztinpaul/energy-forecasting - stars: 907 + stars: 913 owner_login: iusztinpaul owner_html_url: https://github.com/iusztinpaul - name: titiler html_url: https://github.com/developmentseed/titiler - stars: 873 + stars: 886 owner_login: developmentseed owner_html_url: https://github.com/developmentseed +- name: flock + html_url: https://github.com/Onelevenvy/flock + stars: 866 + owner_login: Onelevenvy + owner_html_url: https://github.com/Onelevenvy - name: httpdbg html_url: https://github.com/cle-b/httpdbg - stars: 850 + stars: 863 owner_login: cle-b owner_html_url: https://github.com/cle-b - name: marker-api html_url: https://github.com/adithya-s-k/marker-api - stars: 844 + stars: 859 owner_login: adithya-s-k owner_html_url: https://github.com/adithya-s-k - name: ludic html_url: https://github.com/getludic/ludic - stars: 842 + stars: 845 owner_login: getludic owner_html_url: https://github.com/getludic -- name: flock - html_url: https://github.com/Onelevenvy/flock - stars: 805 - owner_login: Onelevenvy - owner_html_url: https://github.com/Onelevenvy -- name: fastapi-observability - html_url: https://github.com/blueswen/fastapi-observability - stars: 797 - owner_login: blueswen - owner_html_url: https://github.com/blueswen - name: fastapi-do-zero html_url: https://github.com/dunossauro/fastapi-do-zero - stars: 786 + stars: 827 owner_login: dunossauro owner_html_url: https://github.com/dunossauro +- name: fastapi-observability + html_url: https://github.com/blueswen/fastapi-observability + stars: 823 + owner_login: blueswen + owner_html_url: https://github.com/blueswen +- name: fastapi-langgraph-agent-production-ready-template + html_url: https://github.com/wassim249/fastapi-langgraph-agent-production-ready-template + stars: 803 + owner_login: wassim249 + owner_html_url: https://github.com/wassim249 - name: fastapi-mail html_url: https://github.com/sabuhish/fastapi-mail - stars: 781 + stars: 798 owner_login: sabuhish owner_html_url: https://github.com/sabuhish - name: starlette-admin html_url: https://github.com/jowilf/starlette-admin - stars: 764 + stars: 785 owner_login: jowilf owner_html_url: https://github.com/jowilf - name: lccn_predictor html_url: https://github.com/baoliay2008/lccn_predictor - stars: 759 + stars: 767 owner_login: baoliay2008 owner_html_url: https://github.com/baoliay2008 +- name: aktools + html_url: https://github.com/akfamily/aktools + stars: 759 + owner_login: akfamily + owner_html_url: https://github.com/akfamily - name: KonomiTV html_url: https://github.com/tsukumijima/KonomiTV - stars: 741 + stars: 748 owner_login: tsukumijima owner_html_url: https://github.com/tsukumijima -- name: FastAPI-Backend-Template - html_url: https://github.com/Aeternalis-Ingenium/FastAPI-Backend-Template - stars: 734 - owner_login: Aeternalis-Ingenium - owner_html_url: https://github.com/Aeternalis-Ingenium -- name: learn-generative-ai - html_url: https://github.com/panaverse/learn-generative-ai - stars: 731 - owner_login: panaverse - owner_html_url: https://github.com/panaverse -- name: annotated-py-projects - html_url: https://github.com/hhstore/annotated-py-projects - stars: 730 - owner_login: hhstore - owner_html_url: https://github.com/hhstore From 7421a19b7f7039ebff2f7a04f7f23eabcd2390f2 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 07:29:36 +0000 Subject: [PATCH 06/65] =?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 [skip ci] --- 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 ffeebcce1..a795f245c 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -44,6 +44,7 @@ hide: ### Internal +* đŸ‘Ĩ Update FastAPI GitHub topic repositories. PR [#13754](https://github.com/fastapi/fastapi/pull/13754) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Sponsors. PR [#13750](https://github.com/fastapi/fastapi/pull/13750) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Contributors and Translators. PR [#13749](https://github.com/fastapi/fastapi/pull/13749) by [@tiangolo](https://github.com/tiangolo). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13736](https://github.com/fastapi/fastapi/pull/13736) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). From 37c6913ce566706b4d5e1cbe10e6401fec4c5e3f Mon Sep 17 00:00:00 2001 From: Nazmus Sakib Sibly <101848801+SakibSibly@users.noreply.github.com> Date: Thu, 5 Jun 2025 14:15:56 +0600 Subject: [PATCH 07/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Bengali=20translatio?= =?UTF-8?q?n=20for=20`docs/bn/docs/environment-variables.md`=20(#13629)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add Bengali translation for docs/bn/docs/environment-variables.md Co-authored-by: Sofie Van Landeghem --- docs/bn/docs/environment-variables.md | 298 ++++++++++++++++++++++++++ 1 file changed, 298 insertions(+) create mode 100644 docs/bn/docs/environment-variables.md diff --git a/docs/bn/docs/environment-variables.md b/docs/bn/docs/environment-variables.md new file mode 100644 index 000000000..9122ca5bf --- /dev/null +++ b/docs/bn/docs/environment-variables.md @@ -0,0 +1,298 @@ +# āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ + +/// tip + +āφāĻĒāύāĻŋ āϝāĻĻāĻŋ "āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ" āϕ⧀ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞ⧋ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āϏ⧇āϟāĻž āϜāĻžāύ⧇āύ, āϤāĻžāĻšāϞ⧇ āĻāχ āĻ…āĻ‚āĻļāϟāĻŋ āĻ¸ā§āĻ•āĻŋāĻĒ āĻ•āϰ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ + +/// + +āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ (āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ "**env var**" āύāĻžāĻŽā§‡āĻ“ āĻĒāϰāĻŋāϚāĻŋāϤ) āĻšāϞ⧋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϝāĻž āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄā§‡āϰ **āĻŦāĻžāχāϰ⧇**, **āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡** āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄ (āĻŦāĻž āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ) āĻĻā§āĻŦāĻžāϰāĻž āϝāĻžāϕ⧇ āϰāĻŋāĻĄ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ + +āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ **āϏ⧇āϟāĻŋāĻ‚āϏ** āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇, āĻĒāĻžāχāĻĨāύ⧇āϰ **āχāύāĻ¸ā§āϟāϞ⧇āĻļāύ** āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āĻ…āĻ‚āĻļ āĻšāĻŋāϏ⧇āĻŦ⧇, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻ•āĻžāĻœā§‡ āωāĻĒāϝ⧋āĻ—ā§€ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +## Env Vars āϤ⧈āϰ⧀ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ + +āφāĻĒāύāĻŋ **āĻļ⧇āϞ (āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ)**-āĻ, āĻĒāĻžāχāĻĨāύ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻžāĻĄāĻŧāĻžāχ, āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ **āϤ⧈āϰāĻŋ** āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇āύāσ + +//// tab | āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ, āωāχāĻ¨ā§āĻĄā§‹āϜ Bash + +
+ +```console +// āφāĻĒāύāĻŋ āϚāĻžāχāϞ⧇ MY_NAME āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ env var āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ +$ export MY_NAME="Wade Wilson" + +// āϤāĻžāϰāĻĒāϰ⧇ āĻāϟāĻŋāϕ⧇ āϚāĻžāχāϞ⧇ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ +$ echo "Hello $MY_NAME" + +Hello Wade Wilson +``` + +
+ +//// + +//// tab | āωāχāĻ¨ā§āĻĄā§‹āϜ āĻĒāĻžāĻ“ā§ŸāĻžāϰāĻļ⧇āϞ + +
+ +```console +// MY_NAME āύāĻžāĻŽā§‡ env var āϤ⧈āϰāĻŋ +$ $Env:MY_NAME = "Wade Wilson" + +// āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡ āĻāϟāĻŋāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ +$ echo "Hello $Env:MY_NAME" + +Hello Wade Wilson +``` + +
+ +//// + +## āĻĒāĻžāχāĻĨāύ⧇ env vars āϰāĻŋāĻĄ āĻ•āϰāĻž + +āφāĻĒāύāĻŋ āϚāĻžāχāϞ⧇ āĻĒāĻžāχāĻĨāύ⧇āϰ **āĻŦāĻžāχāϰ⧇**, āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ (āĻŦāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āωāĻĒāĻžāϝāĻŧ⧇) āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āĻāĻŦāĻ‚ āĻĒāϰ⧇ āϏ⧇āϗ⧁āϞ⧋ **āĻĒāĻžāχāĻĨāύ⧇ āϰāĻŋāĻĄ** (āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāϤ⧇) āĻĒāĻžāϰ⧇āύāĨ¤ + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻĒāύāĻžāϰ `main.py` āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇āσ + +```Python hl_lines="3" +import os + +name = os.getenv("MY_NAME", "World") +print(f"Hello {name} from Python") +``` + +/// tip + +`os.getenv()` āĻāϰ āĻĻā§āĻŦāĻŋāĻ¤ā§€ā§Ÿ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āĻšāϞ⧋ āĻāϰ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āϝāĻž āϰāĻŋāϟāĻžāĻ°ā§āύ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ + +āϝāĻĻāĻŋ āĻāϟāĻŋ āĻĻ⧇āĻ“ā§ŸāĻž āύāĻž āĻšā§Ÿ, āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ `None` āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāĻŦ⧇, āĻāĻ–āĻžāύ⧇ āφāĻŽāϰāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻšāĻŋāϏ⧇āĻŦ⧇ `"World"` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ + +/// + +āϤāĻžāϰāĻĒāϰ⧇ āĻĒāĻžāχāĻĨāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋāϕ⧇ āύāĻŋāĻŽā§āύ⧋āĻ•ā§āϤāĻ­āĻžāĻŦ⧇ āĻ•āϞ āĻ•āϰāĻž āϝāĻžāĻŦ⧇āσ + +//// tab | āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ, āωāχāĻ¨ā§āĻĄā§‹āϜ Bash + +
+ +```console +// āĻāĻ–āύ⧋ āφāĻŽāϰāĻž āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰāĻŋāύāĻŋ +$ python main.py + +// āϝ⧇āĻšā§‡āϤ⧁ env var āϏ⧇āϟ āĻ•āϰāĻž āĻšā§ŸāύāĻŋ, āϤāĻžāχ āφāĻŽāϰāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻĒāĻžāĻšā§āĻ›āĻŋ + +Hello World from Python + +// āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽā§‡ āϝāĻĻāĻŋ āĻāĻ•āϟāĻž āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āĻ­āĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύ⧇āχ +$ export MY_NAME="Wade Wilson" + +// āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻŦāĻžāϰ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāϟāĻŋāϕ⧇ āĻ•āϞ āĻ•āϰāĻŋ +$ python main.py + +// āĻāĻ–āύ āĻāϟāĻŋ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϰāĻŋāĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ + +Hello Wade Wilson from Python +``` + +
+ +//// + +//// tab | āωāχāĻ¨ā§āĻĄā§‹āϜ āĻĒāĻžāĻ“ā§ŸāĻžāϰāĻļ⧇āϞ + +
+ +```console +// āĻāĻ–āύ⧋ āφāĻŽāϰāĻž āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰāĻŋāύāĻŋ +$ python main.py + +// āϝ⧇āĻšā§‡āϤ⧁ env var āϏ⧇āϟ āĻ•āϰāĻž āĻšā§ŸāύāĻŋ, āϤāĻžāχ āφāĻŽāϰāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­ā§āϝāĻžāϞ⧁ āĻĒāĻžāĻšā§āĻ›āĻŋ + +Hello World from Python + +// āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻĒā§āϰāĻĨāĻŽā§‡ āϝāĻĻāĻŋ āĻāĻ•āϟāĻž āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āĻ­āĻžāϰāĻŋā§Ÿā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āύ⧇āχ +$ $Env:MY_NAME = "Wade Wilson" + +// āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ āφāĻŦāĻžāϰ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāϟāĻŋāϕ⧇ āĻ•āϞ āĻ•āϰāĻŋ +$ python main.py + +// āĻāĻ–āύ āĻāϟāĻŋ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϰāĻŋāĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ + +Hello Wade Wilson from Python +``` + +
+ +//// + +āϝ⧇āĻšā§‡āϤ⧁ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϏ āϕ⧋āĻĄā§‡āϰ āĻŦāĻžāχāϰ⧇ āϏ⧇āϟ āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ āϕ⧋āĻĄ āĻĻā§āĻŦāĻžāϰāĻž āϰāĻŋāĻĄ āĻ•āϰāĻž āϝāĻžāϝāĻŧ, āĻāĻŦāĻ‚ āĻŦāĻžāĻ•āĻŋ āĻĢāĻžāχāϞāϗ⧁āϞ⧋āϰ āϏāĻžāĻĨ⧇ āϰāĻžāĻ–āϤ⧇ (`git` āĻ āĻ•āĻŽāĻŋāϟ) āĻšā§Ÿ āύāĻž, āϤāĻžāχ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύāϏ āĻŦāĻž **āϏ⧇āϟāĻŋāĻ‚āϏ** āĻāϰ āϜāĻ¨ā§āϝ āĻāϗ⧁āϞ⧋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿā§‡ āĻĨāĻžāϕ⧇āĨ¤ + +āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ **āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āχāύāĻ­ā§‹āϕ⧇āĻļāύ⧇āϰ** āϜāĻ¨ā§āϝāĻ“ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϝāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϏ⧇āχ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽā§‡āϰ āϜāĻ¨ā§āϝāχ āĻāϭ⧇āχāϞ⧇āĻŦāϞ āĻĨāĻžāĻ•āĻŦ⧇ āĻāĻŦāĻ‚ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻžāϰ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āϏāĻŽāϝāĻŧ āĻĒāĻ°ā§āϝāĻ¨ā§āϤāχ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ + +āĻāϟāĻŋ āĻ•āϰāϤ⧇, āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ āϰāĻžāύ āĻ•āϰāĻžāϰ āĻ āĻŋāĻ• āφāϗ⧇āχ, āĻāĻ•āχ āϞāĻžāχāύ⧇ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ: + +
+ +```console +// āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ āĻāĻ•āχ āϞāĻžāχāύ⧇ MY_NAME āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ +$ MY_NAME="Wade Wilson" python main.py + +// āĻāĻ–āύ āĻāϟāĻŋ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āĻ­ā§āϝāϰāĻŋā§Ÿā§‡āĻŦāϞāϟāĻŋāϕ⧇ āϰāĻŋāĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŦ⧇ + +Hello Wade Wilson from Python + +// āĻĒāϰāĻŦāĻ°ā§āϤ⧀āϤ⧇ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϟāĻŋāϕ⧇ āφāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāĻšā§āϛ⧇ āύāĻž +$ python main.py + +Hello World from Python +``` + +
+ +/// tip + +āĻāϟāĻŋ āύāĻŋā§Ÿā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻĒ⧜āϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻ–āĻžāύ⧇ The Twelve-Factor App: ConfigāĨ¤ + +/// + +## āϟāĻžāχāĻĒāϏ āĻāĻŦāĻ‚ āĻ­ā§āϝāĻžāϞāĻŋāĻĄā§‡āĻļāύ + +āĻāχ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞāϗ⧁āϞ⧋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ **āĻŸā§‡āĻ•ā§āϏāϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϏ** āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇, āϝ⧇āĻšā§‡āϤ⧁ āĻāϗ⧁āϞ⧋ āĻĒāĻžāχāĻĨāύ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāϤ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻāĻŦāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āϰ āĻŦāĻžāĻ•āĻŋ āĻ…āĻ‚āĻļ⧇āϰ (āĻāĻŽāύāĻ•āĻŋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϝ⧇āĻŽāύ āϞāĻŋāύāĻžāĻ•ā§āϏ, āωāχāĻ¨ā§āĻĄā§‹āϜ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ) āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻšāϤ⧇ āĻšāϝāĻŧāĨ¤ + +āĻāϰ āĻ…āĻ°ā§āĻĨ āĻšāĻšā§āϛ⧇ āĻĒāĻžāχāĻĨāύ⧇ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻĨ⧇āϕ⧇ āϰāĻŋāĻĄ āĻ•āϰāĻž **āϝ⧇āϕ⧋āύ⧋ āĻ­ā§āϝāĻžāϞ⧁** āĻāĻ•āϟāĻŋ `str` āĻšāĻŦ⧇, āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝ āϕ⧋āύ⧋ āϟāĻžāχāĻĒ⧇ āĻ•āύāĻ­āĻžāĻ°ā§āϏāύ āĻŦāĻž āϝ⧇āϕ⧋āύ⧋ āϭ⧇āϞāĻŋāĻĄā§‡āĻļāύ āϕ⧋āĻĄā§‡ āφāϞāĻžāĻĻāĻžāĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ + +āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ **āĻāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϏ⧇āϟāĻŋāĻ‚āϏ** āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻ•āϰāĻž āύāĻŋā§Ÿā§‡ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻž āϝāĻžāĻŦ⧇ [Advanced User Guide - Settings and Environment Variables](./advanced/settings.md){.internal-link target=_blank}. + +## `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ + +**`PATH`** āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ **āĻŦāĻŋāĻļ⧇āώ** āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āĻ°ā§Ÿā§‡āϛ⧇, āϝ⧇āϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϰāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϏ (āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ, āωāχāĻ¨ā§āĻĄā§‹āϜ) āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§ŸāĨ¤ + +`PATH` āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āĻāϰ āĻ­ā§āϝāĻžāϞ⧁ āĻšāĻšā§āϛ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļāĻžāϞ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϝāĻž āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϕ⧇ āϕ⧋āϞāύ `:` āĻĻāĻŋā§Ÿā§‡ āφāϞāĻžāĻĻāĻž āĻ•āϰāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϞāĻŋāύāĻžāĻ•ā§āϏ⧇ āĻ“ āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ āĻ, āĻāĻŦāĻ‚ āϏ⧇āĻŽāĻŋāϕ⧋āϞāύ `;` āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āωāχāĻ¨ā§āĻĄā§‹āϜ āĻ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻĨāĻžāϕ⧇āĨ¤ + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, `PATH` āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻĻ⧇āĻ–āϤ⧇ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āσ + +//// tab | āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ + +```plaintext +/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin +``` + +āϤāĻžāϰāĻŽāĻžāύ⧇ āĻšāϞ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϗ⧁āϞ⧋āϕ⧇ āύāĻŋāĻšā§‡āϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϗ⧁āϞ⧋āϤ⧇ āϖ⧁āρāϜāĻŦ⧇āσ + +* `/usr/local/bin` +* `/usr/bin` +* `/bin` +* `/usr/sbin` +* `/sbin` + +//// + +//// tab | āωāχāĻ¨ā§āĻĄā§‹āϜ + +```plaintext +C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32 +``` + +āϤāĻžāϰāĻŽāĻžāύ⧇ āĻšāϞ⧋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϗ⧁āϞ⧋āϕ⧇ āύāĻŋāĻšā§‡āϰ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϗ⧁āϞ⧋āϤ⧇ āϖ⧁āρāϜāĻŦ⧇āσ + +* `C:\Program Files\Python312\Scripts` +* `C:\Program Files\Python312` +* `C:\Windows\System32` + +//// + +āϝāĻ–āύ āφāĻĒāύāĻŋ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ āϕ⧋āύ⧋ **āĻ•āĻŽāĻžāĻ¨ā§āĻĄ** āϞāĻŋāĻ–āĻŦ⧇āύ, āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ **āĻĒā§āϰāĻ¤ā§āϝ⧇āĻ•āϟāĻŋ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇** āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋ **āϖ⧁āρāϜāĻŦ⧇** āϝ⧇āϗ⧁āϞ⧋ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āĻ āϞāĻŋāĻ¸ā§āϟ āĻ•āϰāĻž āφāϛ⧇āĨ¤ + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āϝāĻ–āύ āφāĻĒāύāĻŋ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ `python` āϟāĻžāχāĻĒ āĻ•āϰāĻŦ⧇āύ, āĻ…āĻĒāĻžāϰ⧇āϟāĻŋāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻāχ āϞāĻŋāĻ¸ā§āϟ āĻāϰ **āĻĒā§āϰāĻĨāĻŽ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇** `python` āύāĻžāĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āϖ⧁āρāϜāĻŦ⧇āĨ¤ + +āϝāĻĻāĻŋ āĻāϟāĻŋ āϖ⧁āρāĻœā§‡ āĻĒāĻžā§Ÿ, āϤāĻžāĻšāϞ⧇ āĻāϟāĻŋ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ āĻ…āĻ¨ā§āϝāĻĨāĻžā§Ÿ āĻāϟāĻŋ **āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϗ⧁āϞ⧋āϤ⧇** āĻāϟāĻŋāϕ⧇ āϖ⧁āρāϜāϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ + +### āĻĒāĻžāχāĻĨāύ āχāύāĻ¸ā§āϟāϞ āĻāĻŦāĻ‚ `PATH` āφāĻĒāĻĄā§‡āϟ + +āϝāĻ–āύ āφāĻĒāύāĻŋ āĻĒāĻžāχāĻĨāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇āύ, āφāĻĒāύāĻŋ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āϚāĻžāύ āĻ•āĻŋāύāĻž āϏ⧇āϟāĻž āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ + +//// tab | āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ + +āϧāϰāĻž āϝāĻžāĻ• āφāĻĒāύāĻŋ āĻĒāĻžāχāĻĨāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϞ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ `/opt/custompython/bin` āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āχāύāĻ¸ā§āϟāϞ āĻšāĻšā§āϛ⧇āĨ¤ + +āϝāĻĻāĻŋ āφāĻĒāύāĻŋ "Yes" āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āχāύāĻ¸ā§āϟāϞāĻžāϰ `/opt/custompython/bin` āϕ⧇ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āĻ āĻāĻĄ āĻ•āϰ⧇ āĻĻāĻŋāĻŦ⧇āĨ¤ + +āĻāϟāĻž āĻĻ⧇āĻ–āϤ⧇ āĻāĻŽāύāϟāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇āσ + +```plaintext +/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin +``` + +āĻāχāĻ­āĻžāĻŦ⧇, āφāĻĒāύāĻŋ āϝāĻ–āύ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ `python` āϟāĻžāχāĻĒ āĻ•āϰ⧇āύ, āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāĻžāχāĻĨāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋāϕ⧇ `/opt/custompython/bin` (āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ) āϤ⧇ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āĻāϟāĻžāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ + +//// + +//// tab | āωāχāĻ¨ā§āĻĄā§‹āϜ + +āϧāϰāĻž āϝāĻžāĻ• āφāĻĒāύāĻŋ āĻĒāĻžāχāĻĨāύ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāϞ⧇āύ āĻāĻŦāĻ‚ āĻāϟāĻŋ `C:\opt\custompython\bin` āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋāϤ⧇ āχāύāĻ¸ā§āϟāϞ āĻšāĻšā§āϛ⧇āĨ¤ + +āϝāĻĻāĻŋ āφāĻĒāύāĻŋ "Yes" āϏāĻŋāϞ⧇āĻ•ā§āϟ āĻ•āϰ⧇ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāϤ⧇ āϚāĻžāύ, āϤāĻžāĻšāϞ⧇ āχāύāĻ¸ā§āϟāϞāĻžāϰ `C:\opt\custompython\bin` āϕ⧇ `PATH` āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞ āĻ āĻāĻĄ āĻ•āϰ⧇ āĻĻāĻŋāĻŦ⧇āĨ¤ + +```plaintext +C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin +``` + +āĻāχāĻ­āĻžāĻŦ⧇, āφāĻĒāύāĻŋ āϝāĻ–āύ āϟāĻžāĻ°ā§āĻŽāĻŋāύāĻžāϞ⧇ `python` āϟāĻžāχāĻĒ āĻ•āϰ⧇āύ, āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāĻžāχāĻĨāύ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϟāĻŋāϕ⧇ `C:\opt\custompython\bin` (āϏāĻ°ā§āĻŦāĻļ⧇āώ āĻĄāĻŋāϰ⧇āĻ•ā§āϟāϰāĻŋ) āϤ⧇ āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āĻāϟāĻžāϕ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ + +//// + +āϤāĻžāχ, āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āϟāĻžāχāĻĒ āĻ•āϰ⧇āύāσ + +
+ +```console +$ python +``` + +
+ +//// tab | āϞāĻŋāύāĻžāĻ•ā§āϏ, āĻŽā§āϝāĻžāĻ•āĻ“āĻāϏ + +āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ `python` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϕ⧇ `/opt/custompython/bin` āĻ **āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ⧇** āĻāĻŦāĻ‚ āĻāϟāĻžāϕ⧇ āϰāĻžāύ āĻ•āϰāĻŦ⧇āĨ¤ + +āĻāϟāĻž āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋāĻ­āĻžāĻŦ⧇ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻ•āϰ⧇ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāĻžāύ āĻšāĻŦ⧇āσ + +
+ +```console +$ /opt/custompython/bin/python +``` + +
+ +//// + +//// tab | āωāχāĻ¨ā§āĻĄā§‹āϜ + +āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ `python` āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāϕ⧇ `C:\opt\custompython\bin\python` āĻ **āϖ⧁āρāĻœā§‡ āĻĒāĻžāĻŦ⧇** āĻāĻŦāĻ‚ āĻāϟāĻžāϕ⧇ āϰāĻžāύ āĻ•āϰāĻŦ⧇āĨ¤ + +āĻāϟāĻž āĻŽā§‹āϟāĻžāĻŽā§āϟāĻŋāĻ­āĻžāĻŦ⧇ āύāĻŋāĻšā§‡āϰ āĻŽāϤ⧋ āĻ•āϰ⧇ āϞ⧇āĻ–āĻžāϰ āϏāĻŽāĻžāύ āĻšāĻŦ⧇āσ + +
+ +```console +$ C:\opt\custompython\bin\python +``` + +
+ +//// + +āĻāχ āϤāĻĨā§āϝāϗ⧁āϞ⧋ [āĻ­āĻžāĻ°ā§āϚ⧁⧟āĻžāϞ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟāϏ](virtual-environments.md){.internal-link target=_blank} āĻļ⧇āĻ–āĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻšāĻžā§ŸāĻ• āĻšāĻŦ⧇āĨ¤ + +## āωāĻĒāϏāĻ‚āĻšāĻžāϰ + +āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āφāĻĒāύāĻŋ **āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋā§Ÿā§‡āĻŦāϞāϏ** āĻ•āĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āĻĒāĻžāχāĻĨāύ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšā§Ÿ āϤāĻžāϰ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻŦ⧇āϏāĻŋāĻ• āϧāĻžāϰāύāĻž āĻĒ⧇āϞ⧇āύāĨ¤ + +āϚāĻžāχāϞ⧇ āĻāχ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āĻĒ⧜āϤ⧇ āĻĒāĻžāϰ⧇āύ Wikipedia for Environment Variable āĻāĨ¤ + +āĻ…āύ⧇āĻ• āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āĻĻ⧇āĻ–āĻž āĻŽāĻžāĻ¤ā§āϰāχ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āϟ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻĒā§āĻ°ā§Ÿā§‹āϜāύ āĻšāĻŦ⧇ āϤāĻž āĻ¸ā§āĻĒāĻˇā§āϟ āĻšā§Ÿ āύāĻžāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻĄā§‡āϭ⧇āϞāĻĒāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϏāĻŽāϝāĻŧ āφāĻĒāύāĻŋ āύāĻžāύāĻž āϰāĻ•āĻŽ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻāϗ⧁āϞ⧋āϰ āϏāĻŽā§āĻŽā§āĻ–ā§€āύ āĻšāĻŦ⧇āύ, āϤāĻžāχ āĻāϗ⧁āϞ⧋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻœā§‡āύ⧇ āϰāĻžāĻ–āĻž āĻ­āĻžāϞ⧋āĨ¤ + +āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āφāĻĒāύāĻžāϰ āĻāχ āχāύāĻĢāϰāĻŽā§‡āĻļāύāϟāĻŋ āĻĒāϰāĻŦāĻ°ā§āϤ⧀, [āĻ­āĻžāĻ°ā§āϚ⧁⧟āĻžāϞ āĻāύāĻ­āĻžā§ŸāϰāύāĻŽā§‡āĻ¨ā§āϟāϏ](virtual-environments.md) āĻ…āĻ‚āĻļ⧇ āĻĻāϰāĻ•āĻžāϰ āĻšāĻŦ⧇āĨ¤ From 37e596599e6dcfb05b4a0180079c98eb991d5597 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 08:16:18 +0000 Subject: [PATCH 08/65] =?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 [skip ci] --- 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 a795f245c..377698649 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Bengali translation for `docs/bn/docs/environment-variables.md`. PR [#13629](https://github.com/fastapi/fastapi/pull/13629) by [@SakibSibly](https://github.com/SakibSibly). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-params-str-validations.md` page. PR [#13546](https://github.com/fastapi/fastapi/pull/13546) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * 🌐 Add Russian translation for `docs/ru/docs/tutorial/cookie-param-models.md`. PR [#13616](https://github.com/fastapi/fastapi/pull/13616) by [@EgorOnishchuk](https://github.com/EgorOnishchuk). * 🌐 Add Korean translation for `docs/ko/docs/tutorial/extra-models.md`. PR [#13063](https://github.com/fastapi/fastapi/pull/13063) by [@timothy-jeong](https://github.com/timothy-jeong). From eae3025ed21d1e913986e5d752bc60dfff76a85b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Jun 2025 12:00:47 +0200 Subject: [PATCH 09/65] =?UTF-8?q?=E2=AC=86=20Bump=20typer=20from=200.15.3?= =?UTF-8?q?=20to=200.16.0=20(#13752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [typer](https://github.com/fastapi/typer) from 0.15.3 to 0.16.0. - [Release notes](https://github.com/fastapi/typer/releases) - [Changelog](https://github.com/fastapi/typer/blob/master/docs/release-notes.md) - [Commits](https://github.com/fastapi/typer/compare/0.15.3...0.16.0) --- updated-dependencies: - dependency-name: typer dependency-version: 0.16.0 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-docs.txt b/requirements-docs.txt index bd0082304..9de608eb2 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -3,7 +3,7 @@ mkdocs-material==9.6.1 mdx-include >=1.4.1,<2.0.0 mkdocs-redirects>=1.2.1,<1.3.0 -typer == 0.15.3 +typer == 0.16.0 pyyaml >=5.3.1,<7.0.0 # For Material for MkDocs, Chinese search jieba==0.42.1 From b7a885066033d6e6dc86f93eded8fb1d22a6bbba Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 10:01:12 +0000 Subject: [PATCH 10/65] =?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 [skip ci] --- 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 377698649..1810527f7 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -45,6 +45,7 @@ hide: ### Internal +* âŦ† Bump typer from 0.15.3 to 0.16.0. PR [#13752](https://github.com/fastapi/fastapi/pull/13752) by [@dependabot[bot]](https://github.com/apps/dependabot). * đŸ‘Ĩ Update FastAPI GitHub topic repositories. PR [#13754](https://github.com/fastapi/fastapi/pull/13754) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Sponsors. PR [#13750](https://github.com/fastapi/fastapi/pull/13750) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Contributors and Translators. PR [#13749](https://github.com/fastapi/fastapi/pull/13749) by [@tiangolo](https://github.com/tiangolo). From 38c282039a1c7fe39a41bc41400ff4c3bac9a148 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 5 Jun 2025 13:51:48 +0200 Subject: [PATCH 11/65] =?UTF-8?q?=F0=9F=94=A7=20Update=20sponsors:=20add?= =?UTF-8?q?=20Dribia=20(#13771)?= 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/data/sponsors_badge.yml | 1 + docs/en/docs/img/sponsors/dribia.png | Bin 0 -> 14770 bytes 4 files changed, 5 insertions(+) create mode 100644 docs/en/docs/img/sponsors/dribia.png diff --git a/README.md b/README.md index 78ae6b10e..da9446e2b 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ The key features are: + diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index 14a1f3cf3..897ca7b8d 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -48,6 +48,9 @@ silver: - url: https://www.interviewpal.com/?utm_source=fastapi&utm_medium=open-source&utm_campaign=dev-hiring title: InterviewPal - AI Interview Coach for Engineers and Devs img: https://fastapi.tiangolo.com/img/sponsors/interviewpal.png + - url: https://dribia.com/en/ + title: Dribia - Data Science within your reach + img: https://fastapi.tiangolo.com/img/sponsors/dribia.png bronze: - url: https://www.exoflare.com/open-source/?utm_source=FastAPI&utm_campaign=open_source title: Biosecurity risk assessments made easy. diff --git a/docs/en/data/sponsors_badge.yml b/docs/en/data/sponsors_badge.yml index fd34019b3..d145e7372 100644 --- a/docs/en/data/sponsors_badge.yml +++ b/docs/en/data/sponsors_badge.yml @@ -42,3 +42,4 @@ logins: - coderabbitai - permitio - LambdaTest-Inc + - dribia diff --git a/docs/en/docs/img/sponsors/dribia.png b/docs/en/docs/img/sponsors/dribia.png new file mode 100644 index 0000000000000000000000000000000000000000..a6760a47b8acba1ac4ba5f13fa479f6daf1b9b02 GIT binary patch literal 14770 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 Date: Thu, 5 Jun 2025 11:52:34 +0000 Subject: [PATCH 12/65] =?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 [skip ci] --- 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 1810527f7..b2f083e1c 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -45,6 +45,7 @@ hide: ### Internal +* 🔧 Update sponsors: add Dribia. PR [#13771](https://github.com/fastapi/fastapi/pull/13771) by [@tiangolo](https://github.com/tiangolo). * âŦ† Bump typer from 0.15.3 to 0.16.0. PR [#13752](https://github.com/fastapi/fastapi/pull/13752) by [@dependabot[bot]](https://github.com/apps/dependabot). * đŸ‘Ĩ Update FastAPI GitHub topic repositories. PR [#13754](https://github.com/fastapi/fastapi/pull/13754) by [@tiangolo](https://github.com/tiangolo). * đŸ‘Ĩ Update FastAPI People - Sponsors. PR [#13750](https://github.com/fastapi/fastapi/pull/13750) by [@tiangolo](https://github.com/tiangolo). From 736cce8329e79f7df2c0634762516c8f86bf0ad0 Mon Sep 17 00:00:00 2001 From: Valentyn Date: Thu, 5 Jun 2025 15:12:04 +0300 Subject: [PATCH 13/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Ukrainian=20translat?= =?UTF-8?q?ion=20for=20`docs/uk/docs/tutorial/query-param-models.md`=20(#1?= =?UTF-8?q?3748)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🌐 Add Ukrainian translation for docs/uk/docs/tutorial/query-param-models.md page * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks * Update docs/uk/docs/tutorial/query-param-models.md Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> --------- Co-authored-by: Valentyn Druzhynin Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> --- docs/uk/docs/tutorial/query-param-models.md | 68 +++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 docs/uk/docs/tutorial/query-param-models.md diff --git a/docs/uk/docs/tutorial/query-param-models.md b/docs/uk/docs/tutorial/query-param-models.md new file mode 100644 index 000000000..97eb82fa1 --- /dev/null +++ b/docs/uk/docs/tutorial/query-param-models.md @@ -0,0 +1,68 @@ +# МодĐĩĐģŅ– Query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛ + +Đ¯ĐēŅ‰Đž ҃ Đ’Đ°Ņ Ņ” ĐŗŅ€ŅƒĐŋа **query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛**, ŅĐēŅ– ĐŋĐžĐ˛â€™ŅĐˇĐ°ĐŊŅ– ĐŧŅ–Đļ ŅĐžĐąĐžŅŽ, Ви ĐŧĐžĐļĐĩŅ‚Đĩ ŅŅ‚Đ˛ĐžŅ€Đ¸Ņ‚Đ¸ **Pydantic-ĐŧОдĐĩĐģҌ** Đ´ĐģŅ Ņ—Ņ… ĐžĐŗĐžĐģĐžŅˆĐĩĐŊĐŊŅ. + +ĐĻĐĩ дОСвОĐģĐ¸Ņ‚ŅŒ ВаĐŧ **ĐŋĐžĐ˛Ņ‚ĐžŅ€ĐŊĐž виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ ĐŧОдĐĩĐģҌ** ҃ **Ņ€Ņ–ĐˇĐŊĐ¸Ņ… ĐŧŅ–ŅŅ†ŅŅ…**, а Ņ‚Đ°ĐēĐžĐļ ĐžĐŗĐžĐģĐžŅˆŅƒĐ˛Đ°Ņ‚Đ¸ ĐŋĐĩŅ€ĐĩĐ˛Ņ–Ņ€Đēи Ņ‚Đ° ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊŅ– Đ´ĐģŅ Đ˛ŅŅ–Ņ… ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛ ОдĐŊĐžŅ‡Đ°ŅĐŊĐž. 😎 + +/// note | ĐŸŅ€Đ¸ĐŧŅ–Ņ‚Đēа + +ĐĻŅ ĐŧĐžĐļĐģĐ¸Đ˛Ņ–ŅŅ‚ŅŒ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒŅ”Ņ‚ŅŒŅŅ, ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ С вĐĩҀҁҖҗ FastAPI `0.115.0`. 🤓 + +/// + +## Query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ¸ С Pydantic-ĐŧОдĐĩĐģĐģŅŽ + +ĐžĐŗĐžĐģĐžŅŅ–Ņ‚ŅŒ **query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ¸**, ŅĐēŅ– ВаĐŧ ĐŋĐžŅ‚Ņ€Ņ–ĐąĐŊŅ–, ҃ **Pydantic-ĐŧОдĐĩĐģŅ–**, а ĐŋĐžŅ‚Ņ–Đŧ ĐžĐŗĐžĐģĐžŅŅ–Ņ‚ŅŒ ҆ĐĩĐš ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ ŅĐē `Query`: + +{* ../../docs_src/query_param_models/tutorial001_an_py310.py hl[9:13,17] *} + +**FastAPI** ĐąŅƒĐ´Đĩ **Đ˛Đ¸Ņ‚ŅĐŗŅƒĐ˛Đ°Ņ‚Đ¸** даĐŊŅ– Đ´ĐģŅ **ĐēĐžĐļĐŊĐžĐŗĐž ĐŋĐžĐģŅ** С **query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛** ҃ СаĐŋĐ¸Ņ‚Ņ– Ņ‚Đ° ĐŋĐĩŅ€ĐĩĐ´Đ°Đ˛Đ°Ņ‚Đ¸ Ņ—Ņ… ҃ виСĐŊĐ°Ņ‡ĐĩĐŊ҃ ваĐŧи Pydantic-ĐŧОдĐĩĐģҌ. + +## ПĐĩŅ€ĐĩĐ˛Ņ–Ņ€Ņ‚Đĩ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–ŅŽ + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐŋĐžĐąĐ°Ņ‡Đ¸Ņ‚Đ¸ ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ¸ СаĐŋĐ¸Ņ‚Ņƒ в UI Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— Са `/docs`: + +
+ +
+ +## Đ—Đ°ĐąĐžŅ€ĐžĐŊа ĐˇĐ°ĐšĐ˛Đ¸Ņ… Query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛ + +ĐŖ Đ´ĐĩŅĐēĐ¸Ņ… ĐžŅĐžĐąĐģĐ¸Đ˛Đ¸Ņ… виĐŋадĐēĐ°Ņ… (ĐšĐŧĐžĐ˛Ņ–Ņ€ĐŊĐž, ĐŊĐĩ Đ´ŅƒĐļĐĩ ĐŋĐžŅˆĐ¸Ņ€ĐĩĐŊĐ¸Ņ…) Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐˇĐ°Ņ…ĐžŅ‚Ņ–Ņ‚Đ¸ **ОйĐŧĐĩĐļĐ¸Ņ‚Đ¸** query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ¸, ŅĐēŅ– дОСвОĐģĐĩĐŊĐž ĐžŅ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Ņ‚Đ¸. + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚Đ°Ņ‚Đ¸ ĐēĐžĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–ŅŽ ĐŧОдĐĩĐģŅ– Pydantic, Ņ‰ĐžĐą ĐˇĐ°ĐąĐžŅ€ĐžĐŊĐ¸Ņ‚Đ¸ (`forbid`) ĐąŅƒĐ´ŅŒ-ŅĐēŅ– ĐˇĐ°ĐšĐ˛Ņ– (`extra`) ĐŋĐžĐģŅ: + +{* ../../docs_src/query_param_models/tutorial002_an_py310.py hl[10] *} + +Đ¯ĐēŅ‰Đž ĐēĐģŅ–Ņ”ĐŊŅ‚ ҁĐŋŅ€ĐžĐąŅƒŅ” ĐŊĐ°Đ´Ņ–ŅĐģĐ°Ņ‚Đ¸ **ĐˇĐ°ĐšĐ˛Ņ–** даĐŊŅ– ҃ **query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ°Ņ…**, Đ˛Ņ–ĐŊ ĐžŅ‚Ņ€Đ¸ĐŧĐ°Ņ” **ĐŋĐžĐŧиĐģĐē҃**. + +НаĐŋŅ€Đ¸ĐēĐģад, ŅĐēŅ‰Đž ĐēĐģŅ–Ņ”ĐŊŅ‚ ҁĐŋŅ€ĐžĐąŅƒŅ” ĐŊĐ°Đ´Ņ–ŅĐģĐ°Ņ‚Đ¸ query ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `tool` ĐˇŅ– СĐŊĐ°Ņ‡ĐĩĐŊĐŊŅĐŧ `plumbus`, ŅĐē ҃ Ņ†ŅŒĐžĐŧ҃ СаĐŋĐ¸Ņ‚Ņ–: + +```http +https://example.com/items/?limit=10&tool=plumbus +``` + +Đ’Ņ–ĐŊ ĐžŅ‚Ņ€Đ¸ĐŧĐ°Ņ” Đ˛Ņ–Đ´ĐŋĐžĐ˛Ņ–Đ´ŅŒ С **ĐŋĐžĐŧиĐģĐēĐžŅŽ**, ŅĐēа ĐŋĐžĐ˛Ņ–Đ´ĐžĐŧĐ¸Ņ‚ŅŒ, Ņ‰Đž query ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `tool ` ĐŊĐĩ дОСвОĐģĐĩĐŊĐž: + +```json +{ + "detail": [ + { + "type": "extra_forbidden", + "loc": ["query", "tool"], + "msg": "Extra inputs are not permitted", + "input": "plumbus" + } + ] +} +``` + +## ĐŸŅ–Đ´ŅŅƒĐŧĐžĐē + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ **Pydantic-ĐŧОдĐĩĐģŅ–** Đ´ĐģŅ ĐžĐŗĐžĐģĐžŅˆĐĩĐŊĐŊŅ **query ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Ņ–Đ˛** ҃ **FastAPI**. 😎 + +/// tip | ĐŸŅ–Đ´ĐēаСĐēа + +ĐĄĐŋОКĐģĐĩŅ€: Ви Ņ‚Đ°ĐēĐžĐļ ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ Pydantic-ĐŧОдĐĩĐģŅ– Đ´ĐģŅ ĐžĐŗĐžĐģĐžŅˆĐĩĐŊĐŊŅ cookie Ņ‚Đ° ĐˇĐ°ĐŗĐžĐģОвĐēŅ–Đ˛, аĐģĐĩ ĐŋŅ€Đž ҆Đĩ Ви Đ´Ņ–ĐˇĐŊĐ°Ņ”Ņ‚ĐĩŅŅ ĐŋŅ–ĐˇĐŊŅ–ŅˆĐĩ в Ņ†ŅŒĐžĐŧ҃ ĐŋĐžŅŅ–ĐąĐŊиĐē҃. đŸ¤Ģ + +/// From 2e2180809411b0235b24bba6a40b8151ade593d0 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 12:12:28 +0000 Subject: [PATCH 14/65] =?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 [skip ci] --- 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 b2f083e1c..c4150413d 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-param-models.md`. PR [#13748](https://github.com/fastapi/fastapi/pull/13748) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * 🌐 Add Bengali translation for `docs/bn/docs/environment-variables.md`. PR [#13629](https://github.com/fastapi/fastapi/pull/13629) by [@SakibSibly](https://github.com/SakibSibly). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-params-str-validations.md` page. PR [#13546](https://github.com/fastapi/fastapi/pull/13546) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * 🌐 Add Russian translation for `docs/ru/docs/tutorial/cookie-param-models.md`. PR [#13616](https://github.com/fastapi/fastapi/pull/13616) by [@EgorOnishchuk](https://github.com/EgorOnishchuk). From 2116d8aa564c9a70100225781f76ff2a7687bcd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Thu, 5 Jun 2025 14:27:20 +0200 Subject: [PATCH 15/65] =?UTF-8?q?=F0=9F=8D=B1=20Update=20sponsors:=20Dribi?= =?UTF-8?q?a=20badge=20size=20(#13773)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/img/sponsors/dribia.png | Bin 14770 -> 19211 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/en/docs/img/sponsors/dribia.png b/docs/en/docs/img/sponsors/dribia.png index a6760a47b8acba1ac4ba5f13fa479f6daf1b9b02..f40e140863503d7d35622acc061c60acce9b0d5b 100644 GIT binary patch literal 19211 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 Date: Thu, 5 Jun 2025 12:27:46 +0000 Subject: [PATCH 16/65] =?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 [skip ci] --- 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 c4150413d..394b3fde6 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -46,6 +46,7 @@ hide: ### Internal +* 🍱 Update sponsors: Dribia badge size. PR [#13773](https://github.com/fastapi/fastapi/pull/13773) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update sponsors: add Dribia. PR [#13771](https://github.com/fastapi/fastapi/pull/13771) by [@tiangolo](https://github.com/tiangolo). * âŦ† Bump typer from 0.15.3 to 0.16.0. PR [#13752](https://github.com/fastapi/fastapi/pull/13752) by [@dependabot[bot]](https://github.com/apps/dependabot). * đŸ‘Ĩ Update FastAPI GitHub topic repositories. PR [#13754](https://github.com/fastapi/fastapi/pull/13754) by [@tiangolo](https://github.com/tiangolo). From 9c4a1d2105c84e8115378fce68a4751a38d58834 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 5 Jun 2025 18:10:20 +0200 Subject: [PATCH 17/65] =?UTF-8?q?=E2=AC=86=20Bump=20griffe-typingdoc=20fro?= =?UTF-8?q?m=200.2.7=20to=200.2.8=20(#13751)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [griffe-typingdoc](https://github.com/mkdocstrings/griffe-typingdoc) from 0.2.7 to 0.2.8. - [Release notes](https://github.com/mkdocstrings/griffe-typingdoc/releases) - [Changelog](https://github.com/mkdocstrings/griffe-typingdoc/blob/main/CHANGELOG.md) - [Commits](https://github.com/mkdocstrings/griffe-typingdoc/compare/0.2.7...0.2.8) --- updated-dependencies: - dependency-name: griffe-typingdoc dependency-version: 0.2.8 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- requirements-docs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements-docs.txt b/requirements-docs.txt index 9de608eb2..606314926 100644 --- a/requirements-docs.txt +++ b/requirements-docs.txt @@ -12,7 +12,7 @@ pillow==11.1.0 # For image processing by Material for MkDocs cairosvg==2.7.1 mkdocstrings[python]==0.26.1 -griffe-typingdoc==0.2.7 +griffe-typingdoc==0.2.8 # For griffe, it formats with black black==25.1.0 mkdocs-macros-plugin==1.3.7 From f7ab09884dd39e8c9bd090b97d66f51fd3a7f401 Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 5 Jun 2025 16:10:42 +0000 Subject: [PATCH 18/65] =?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 [skip ci] --- 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 394b3fde6..80beb2189 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -46,6 +46,7 @@ hide: ### Internal +* âŦ† Bump griffe-typingdoc from 0.2.7 to 0.2.8. PR [#13751](https://github.com/fastapi/fastapi/pull/13751) by [@dependabot[bot]](https://github.com/apps/dependabot). * 🍱 Update sponsors: Dribia badge size. PR [#13773](https://github.com/fastapi/fastapi/pull/13773) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update sponsors: add Dribia. PR [#13771](https://github.com/fastapi/fastapi/pull/13771) by [@tiangolo](https://github.com/tiangolo). * âŦ† Bump typer from 0.15.3 to 0.16.0. PR [#13752](https://github.com/fastapi/fastapi/pull/13752) by [@dependabot[bot]](https://github.com/apps/dependabot). From 7b3463de32cd751b68de885771fa9e07395fa537 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 6 Jun 2025 16:08:32 +0200 Subject: [PATCH 19/65] =?UTF-8?q?=E2=AC=86=20[pre-commit.ci]=20pre-commit?= =?UTF-8?q?=20autoupdate=20(#13757)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.11 → v0.11.12](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.11...v0.11.12) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 445676b8b..21413fc66 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.11 + rev: v0.11.12 hooks: - id: ruff args: From 9ab43cc5eda66c7622ea8f4ecf70f76b7499d772 Mon Sep 17 00:00:00 2001 From: github-actions Date: Fri, 6 Jun 2025 14:08:55 +0000 Subject: [PATCH 20/65] =?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 [skip ci] --- 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 80beb2189..2769abd8c 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -46,6 +46,7 @@ hide: ### Internal +* âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13757](https://github.com/fastapi/fastapi/pull/13757) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† Bump griffe-typingdoc from 0.2.7 to 0.2.8. PR [#13751](https://github.com/fastapi/fastapi/pull/13751) by [@dependabot[bot]](https://github.com/apps/dependabot). * 🍱 Update sponsors: Dribia badge size. PR [#13773](https://github.com/fastapi/fastapi/pull/13773) by [@tiangolo](https://github.com/tiangolo). * 🔧 Update sponsors: add Dribia. PR [#13771](https://github.com/fastapi/fastapi/pull/13771) by [@tiangolo](https://github.com/tiangolo). From 4b12a2818a7eb4ac45da8afedeb29d7030104f03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Charlie=20=E2=9C=A8?= <18888351756@163.com> Date: Mon, 9 Jun 2025 12:15:17 +0800 Subject: [PATCH 21/65] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Remove=20redundant?= =?UTF-8?q?=20words=20in=20docs/zh/docs/python-types.md=20(#13774)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/zh/docs/python-types.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/zh/docs/python-types.md b/docs/zh/docs/python-types.md index 5126cb847..ba767da87 100644 --- a/docs/zh/docs/python-types.md +++ b/docs/zh/docs/python-types.md @@ -228,7 +228,7 @@ John Doe ## Pydantic æ¨Ąåž‹ -Pydantic 是一ä¸ĒᔍæĨᔍæĨæ‰§čĄŒæ•°æŽæ ĄéĒŒįš„ Python åē“。 +Pydantic 是一ä¸ĒᔍæĨæ‰§čĄŒæ•°æŽæ ĄéĒŒįš„ Python åē“。 äŊ å¯äģĨå°†æ•°æŽįš„"į쓿ž„"åŖ°æ˜Žä¸ēå…ˇæœ‰åąžæ€§įš„įąģ。 From 37c8e7d76b4b47eb2c4cced6b4de59eb3d5f08eb Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 9 Jun 2025 04:15:43 +0000 Subject: [PATCH 22/65] =?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 [skip ci] --- 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 2769abd8c..b5d7f8d3a 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* âœī¸ Remove redundant words in docs/zh/docs/python-types.md. PR [#13774](https://github.com/fastapi/fastapi/pull/13774) by [@CharleeWa](https://github.com/CharleeWa). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-param-models.md`. PR [#13748](https://github.com/fastapi/fastapi/pull/13748) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * 🌐 Add Bengali translation for `docs/bn/docs/environment-variables.md`. PR [#13629](https://github.com/fastapi/fastapi/pull/13629) by [@SakibSibly](https://github.com/SakibSibly). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-params-str-validations.md` page. PR [#13546](https://github.com/fastapi/fastapi/pull/13546) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). From 14a55d864d7c30c7933b4fb5ea16e724a59b54f2 Mon Sep 17 00:00:00 2001 From: Valentyn Date: Mon, 9 Jun 2025 22:35:48 +0300 Subject: [PATCH 23/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Ukrainian=20translat?= =?UTF-8?q?ion=20for=20`docs/uk/docs/tutorial/schema-extra-example.md`=20(?= =?UTF-8?q?#13769)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🌐 Add Ukrainian translation for docs/uk/docs/tutorial/schema-extra-example.md page * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks --------- Co-authored-by: Valentyn Druzhynin Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/uk/docs/tutorial/schema-extra-example.md | 222 ++++++++++++++++++ 1 file changed, 222 insertions(+) create mode 100644 docs/uk/docs/tutorial/schema-extra-example.md diff --git a/docs/uk/docs/tutorial/schema-extra-example.md b/docs/uk/docs/tutorial/schema-extra-example.md new file mode 100644 index 000000000..853fd5e65 --- /dev/null +++ b/docs/uk/docs/tutorial/schema-extra-example.md @@ -0,0 +1,222 @@ +# ДĐĩĐēĐģĐ°Ņ€ŅƒĐ˛Đ°ĐŊĐŊŅ ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛ Đ˛Ņ…Ņ–Đ´ĐŊĐ¸Ņ… даĐŊĐ¸Ņ… + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‚Đ¸ ĐŋŅ€Đ¸ĐēĐģади даĐŊĐ¸Ņ…, ŅĐēŅ– Đ’Đ°Ņˆ ĐˇĐ°ŅŅ‚ĐžŅŅƒĐŊĐžĐē ĐŧĐžĐļĐĩ ĐžŅ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Ņ‚Đ¸. + +ĐžŅŅŒ ĐēŅ–ĐģҌĐēа ҁĐŋĐžŅĐžĐąŅ–Đ˛, ŅĐē ҆Đĩ ĐˇŅ€ĐžĐąĐ¸Ņ‚Đ¸. + +## Đ”ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– даĐŊŅ– JSON-ҁ҅ĐĩĐŧи в ĐŧОдĐĩĐģŅŅ… Pydantic + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‚Đ¸ `examples` Đ´ĐģŅ ĐŧОдĐĩĐģŅ– Pydantic, ŅĐēŅ– ĐąŅƒĐ´Đĩ дОдаĐŊĐž Đ´Đž ĐˇĐŗĐĩĐŊĐĩŅ€ĐžĐ˛Đ°ĐŊĐžŅ— JSON-ҁ҅ĐĩĐŧи. + +//// tab | Pydantic v2 + +{* ../../docs_src/schema_extra_example/tutorial001_py310.py hl[13:24] *} + +//// + +//// tab | Pydantic v1 + +{* ../../docs_src/schema_extra_example/tutorial001_pv1_py310.py hl[13:23] *} + +//// + +ĐĻŅ Đ´ĐžĐ´Đ°Ņ‚ĐēОва Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ ĐąŅƒĐ´Đĩ дОдаĐŊа ŅĐē Ņ” Đ´Đž **JSON-ҁ҅ĐĩĐŧи**, Ņ– вОĐŊа ĐąŅƒĐ´Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ŅŅ в Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— Đ´Đž API. + +//// tab | Pydantic v2 + +ĐŖ вĐĩҀҁҖҗ Pydantic 2 виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ Đ°Ņ‚Ņ€Đ¸ĐąŅƒŅ‚ `model_config`, ŅĐēиК ĐŋŅ€Đ¸ĐšĐŧĐ°Ņ” `dict`, ŅĐē ĐžĐŋĐ¸ŅĐ°ĐŊĐž в Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— Pydantic: КоĐŊŅ„Ņ–ĐŗŅƒŅ€Đ°Ņ†Ņ–Ņ. + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ Đ˛ŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚Đ¸ `"json_schema_extra"` ŅĐē `dict`, Ņ‰Đž ĐŧŅ–ŅŅ‚Đ¸Ņ‚ŅŒ ĐąŅƒĐ´ŅŒ-ŅĐēŅ– Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– даĐŊŅ–, ŅĐēŅ– Ви Ņ…ĐžŅ‡ĐĩŅ‚Đĩ Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐˇĐ¸Ņ‚Đ¸ ҃ ĐˇĐŗĐĩĐŊĐĩŅ€ĐžĐ˛Đ°ĐŊŅ–Đš JSON-ҁ҅ĐĩĐŧŅ–, вĐēĐģŅŽŅ‡Đ°ŅŽŅ‡Đ¸ `examples`. + +//// + +//// tab | Pydantic v1 + +ĐŖ вĐĩҀҁҖҗ Pydantic 1 виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ вĐŊŅƒŅ‚Ņ€Ņ–ŅˆĐŊŅ–Đš ĐēĐģĐ°Ņ `Config` Ņ– ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `schema_extra`, ŅĐē ĐžĐŋĐ¸ŅĐ°ĐŊĐž в Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— Pydantic: НаĐģĐ°ŅˆŅ‚ŅƒĐ˛Đ°ĐŊĐŊŅ ҁ҅ĐĩĐŧи. + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‚Đ¸ `schema_extra` ŅĐē `dict`, Ņ‰Đž ĐŧŅ–ŅŅ‚Đ¸Ņ‚ŅŒ ĐąŅƒĐ´ŅŒ-ŅĐēŅ– Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– даĐŊŅ–, ŅĐēŅ– Ви Ņ…ĐžŅ‡ĐĩŅ‚Đĩ ĐąĐ°Ņ‡Đ¸Ņ‚Đ¸ ҃ ĐˇĐŗĐĩĐŊĐĩŅ€ĐžĐ˛Đ°ĐŊŅ–Đš JSON-ҁ҅ĐĩĐŧŅ–, вĐēĐģŅŽŅ‡Đ°ŅŽŅ‡Đ¸ `examples`. + +//// + +/// tip | ĐŸŅ–Đ´ĐēаСĐēа + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚Đ°Ņ‚Đ¸ Ņ‚Ņƒ Đļ Ņ‚ĐĩŅ…ĐŊŅ–Đē҃, Ņ‰ĐžĐą Ņ€ĐžĐˇŅˆĐ¸Ņ€Đ¸Ņ‚Đ¸ JSON-ҁ҅ĐĩĐŧ҃ Ņ– Đ´ĐžĐ´Đ°Ņ‚Đ¸ вĐģĐ°ŅĐŊ҃ Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņƒ Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–ŅŽ. + +НаĐŋŅ€Đ¸ĐēĐģад, Ви ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚Đ°Ņ‚Đ¸ Ņ—Ņ— Đ´ĐģŅ дОдаваĐŊĐŊŅ ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐ¸Ņ… Đ´ĐģŅ Ņ–ĐŊŅ‚ĐĩҀ҄ĐĩĐšŅŅƒ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Đ° ĐŊа Ņ„Ņ€ĐžĐŊŅ‚ĐĩĐŊĐ´Ņ– Ņ‚ĐžŅ‰Đž. + +/// + +/// info | ІĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ + +OpenAPI 3.1.0 (ŅĐēиК виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ С FastAPI 0.99.0) дОдав ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧĐē҃ `examples`, Ņ‰Đž Ņ” Ņ‡Đ°ŅŅ‚Đ¸ĐŊĐžŅŽ ŅŅ‚Đ°ĐŊĐ´Đ°Ņ€Ņ‚Ņƒ **JSON-ҁ҅ĐĩĐŧи**. + +До Ņ†ŅŒĐžĐŗĐž ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Đ˛ŅŅ ĐģĐ¸ŅˆĐĩ ĐēĐģŅŽŅ‡ `example` С ОдĐŊиĐŧ ĐŋŅ€Đ¸ĐēĐģадОĐŧ. Đ’Ņ–ĐŊ Đ˛ŅĐĩ ҉Đĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒŅ”Ņ‚ŅŒŅŅ в OpenAPI 3.1.0, аĐģĐĩ Ņ” ĐˇĐ°ŅŅ‚Đ°Ņ€Ņ–ĐģиĐŧ Ņ– ĐŊĐĩ Đ˛Ņ…ĐžĐ´Đ¸Ņ‚ŅŒ Đ´Đž ŅŅ‚Đ°ĐŊĐ´Đ°Ņ€Ņ‚Ņƒ JSON Schema. ĐĸĐžĐŧ҃ Ņ€ĐĩĐēĐžĐŧĐĩĐŊĐ´ŅƒŅ”Ņ‚ŅŒŅŅ ĐŋĐĩŅ€ĐĩĐšŅ‚Đ¸ С `example` ĐŊа `examples`. 🤓 + +Đ‘Ņ–ĐģҌ҈Đĩ ĐŋŅ€Đž ҆Đĩ ĐŧĐžĐļĐŊа ĐŋŅ€ĐžŅ‡Đ¸Ņ‚Đ°Ņ‚Đ¸ в ĐēŅ–ĐŊ҆Җ ҆ҖҔҗ ŅŅ‚ĐžŅ€Ņ–ĐŊĐēи. + +/// + +## Đ”ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– Đ°Ņ€ĐŗŅƒĐŧĐĩĐŊŅ‚Đ¸ `Field` + +КоĐģи ви виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚Đĩ `Field()` ҃ ĐŧОдĐĩĐģŅŅ… Pydantic, Ви Ņ‚Đ°ĐēĐžĐļ ĐŧĐžĐļĐĩŅ‚Đĩ вĐēĐ°ĐˇĐ°Ņ‚Đ¸ Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņ– `examples`: + +{* ../../docs_src/schema_extra_example/tutorial002_py310.py hl[2,8:11] *} + +## `examples` ҃ JSON-ҁ҅ĐĩĐŧŅ– — OpenAPI + +ĐŸŅ€Đ¸ виĐēĐžŅ€Đ¸ŅŅ‚Đ°ĐŊĐŊŅ– ĐąŅƒĐ´ŅŒ-ĐēĐžĐŗĐž С ĐŊĐ°ŅŅ‚ŅƒĐŋĐŊĐžĐŗĐž: + +* `Path()` +* `Query()` +* `Header()` +* `Cookie()` +* `Body()` +* `Form()` +* `File()` + +Ви Ņ‚Đ°ĐēĐžĐļ ĐŧĐžĐļĐĩŅ‚Đĩ ĐˇĐ°Đ´Đ°Ņ‚Đ¸ ĐŊĐ°ĐąŅ–Ņ€ `examples` С Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛ĐžŅŽ Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ”ŅŽ, ŅĐēа ĐąŅƒĐ´Đĩ дОдаĐŊа Đ´Đž Ņ—Ņ…ĐŊŅ–Ņ… **JSON-ҁ҅ĐĩĐŧ** ҃ **OpenAPI**. + +### `Body` С `examples` + +ĐĸŅƒŅ‚ Đŧи ĐŋĐĩŅ€ĐĩĐ´Đ°Ņ”ĐŧĐž `examples`, ŅĐēŅ– ĐŧŅ–ŅŅ‚ŅŅ‚ŅŒ ОдиĐŊ ĐŋŅ€Đ¸ĐēĐģад ĐžŅ‡Ņ–ĐēŅƒĐ˛Đ°ĐŊĐ¸Ņ… даĐŊĐ¸Ņ… ҃ `Body()`: + +{* ../../docs_src/schema_extra_example/tutorial003_an_py310.py hl[22:29] *} + +### ĐŸŅ€Đ¸ĐēĐģад ҃ UI Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— + +За Đ´ĐžĐŋĐžĐŧĐžĐŗĐžŅŽ ĐąŅƒĐ´ŅŒ-ŅĐēĐžĐŗĐž С ĐŊавĐĩĐ´ĐĩĐŊĐ¸Ņ… Đ˛Đ¸Ņ‰Đĩ ĐŧĐĩŅ‚ĐžĐ´Ņ–Đ˛ ҆Đĩ Đ˛Đ¸ĐŗĐģŅĐ´Đ°Ņ‚Đ¸ĐŧĐĩ Ņ‚Đ°Đē ҃ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— Са `/docs`: + + + +### `Body` С ĐēŅ–ĐģҌĐēĐžĐŧа `examples` + +Đ—Đ˛Đ¸Ņ‡Đ°ĐšĐŊĐž, Ви Ņ‚Đ°ĐēĐžĐļ ĐŧĐžĐļĐĩŅ‚Đĩ ĐŋĐĩŅ€ĐĩĐ´Đ°Ņ‚Đ¸ ĐēŅ–ĐģҌĐēа `examples`: + +{* ../../docs_src/schema_extra_example/tutorial004_an_py310.py hl[23:38] *} + +КоĐģи Ви ҆Đĩ Ņ€ĐžĐąĐ¸Ņ‚Đĩ, ĐŋŅ€Đ¸ĐēĐģади ĐąŅƒĐ´ŅƒŅ‚ŅŒ Ņ‡Đ°ŅŅ‚Đ¸ĐŊĐžŅŽ вĐŊŅƒŅ‚Ņ€Ņ–ŅˆĐŊŅŒĐžŅ— **JSON-ҁ҅ĐĩĐŧи** Đ´ĐģŅ Ņ†Đ¸Ņ… даĐŊĐ¸Ņ…. + +Đ’Ņ‚Ņ–Đŧ, ĐŊа ĐŧĐžĐŧĐĩĐŊŅ‚ ĐŊаĐŋĐ¸ŅĐ°ĐŊĐŊŅ Ņ†ŅŒĐžĐŗĐž (26 ҁĐĩŅ€ĐŋĐŊŅ 2023), Swagger UI — Ņ–ĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚, ŅĐēиК Đ˛Ņ–Đ´ĐŋĐžĐ˛Ņ–Đ´Đ°Ņ” Са Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐļĐĩĐŊĐŊŅ UI Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— — ĐŊĐĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒŅ” ĐŋĐžĐēаС ĐēŅ–ĐģҌĐēĐžŅ… ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛ ҃ **JSON-ҁ҅ĐĩĐŧи**. АĐģĐĩ ĐŊиĐļ҇Đĩ ĐŧĐžĐļĐŊа ĐŋŅ€ĐžŅ‡Đ¸Ņ‚Đ°Ņ‚Đ¸ ĐŋŅ€Đž ĐžĐąŅ…Ņ–Đ´ĐŊиК ҈ĐģŅŅ…. + +### ĐĄĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊŅ– Đ´ĐģŅ OpenAPI `examples` + +ĐŠĐĩ Đ´Đž Ņ‚ĐžĐŗĐž, ŅĐē **JSON-ҁ҅ĐĩĐŧа** ĐŋĐžŅ‡Đ°Đģа ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Ņ‚Đ¸ `examples`, OpenAPI вĐļĐĩ ĐŧаĐģа ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧĐē҃ ĐŋĐžĐģŅ С Ņ‚Đ°ĐēĐžŅŽ Đļ ĐŊĐ°ĐˇĐ˛ĐžŅŽ — `examples`. + +ĐĻĐĩ **ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊĐĩ Đ´ĐģŅ OpenAPI** ĐŋĐžĐģĐĩ `examples` Ņ€ĐžĐˇĐŧŅ–Ņ‰ŅƒŅ”Ņ‚ŅŒŅŅ в Ņ–ĐŊŅˆŅ–Đš Ņ‡Đ°ŅŅ‚Đ¸ĐŊŅ– ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ— OpenAPI — ҃ **Đ´ĐĩŅ‚Đ°ĐģŅŅ… ĐēĐžĐļĐŊĐžŅ— *ĐžĐŋĐĩŅ€Đ°Ņ†Ņ–Ņ— ҈ĐģŅŅ…Ņƒ***, а ĐŊĐĩ Đ˛ŅĐĩŅ€ĐĩдиĐŊŅ– ŅĐ°ĐŧĐžŅ— JSON-ҁ҅ĐĩĐŧи. + +Swagger UI вĐļĐĩ давĐŊĐž ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒŅ” ҆Đĩ ĐŋĐžĐģĐĩ `examples`. ĐĸĐžĐŧ҃ Ви ĐŧĐžĐļĐĩŅ‚Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Ņ‚Đ¸ ĐšĐžĐŗĐž, Ņ‰ĐžĐą **Đ˛Ņ–Đ´ĐžĐąŅ€Đ°ĐļĐ°Ņ‚Đ¸** ĐēŅ–ĐģҌĐēа **ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛ ҃ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ—**. + +ĐĻĐĩ ĐŋĐžĐģĐĩ `examples` ҃ ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ— OpenAPI — ҆Đĩ `dict` (ҁĐģОвĐŊиĐē) С **ĐēŅ–ĐģҌĐēĐžĐŧа ĐŋŅ€Đ¸ĐēĐģадаĐŧи** (а ĐŊĐĩ ҁĐŋĐ¸ŅĐžĐē `list`), ĐēĐžĐļĐĩĐŊ Ņ–Đˇ ŅĐēĐ¸Ņ… ĐŧĐžĐļĐĩ ĐŧŅ–ŅŅ‚Đ¸Ņ‚Đ¸ Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Ņƒ Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–ŅŽ, Ņ‰Đž ĐąŅƒĐ´Đĩ дОдаĐŊа Đ´Đž **OpenAPI**. + +ВоĐŊĐž ĐŊĐĩ вĐēĐģŅŽŅ‡Đ°Ņ”Ņ‚ŅŒŅŅ Đ´Đž JSON Schema ĐēĐžĐļĐŊĐžĐŗĐž ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ°, а Ņ€ĐžĐˇĐŧŅ–Ņ‰ŅƒŅ”Ņ‚ŅŒŅŅ СОвĐŊŅ–, ĐąĐĩСĐŋĐžŅĐĩŅ€ĐĩĐ´ĐŊŅŒĐž в *ĐžĐŋĐĩŅ€Đ°Ņ†Ņ–Ņ— ҈ĐģŅŅ…Ņƒ*. + +### ВиĐēĐžŅ€Đ¸ŅŅ‚Đ°ĐŊĐŊŅ ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ° `openapi_examples` + +Ви ĐŧĐžĐļĐĩŅ‚Đĩ ĐžĐŗĐžĐģĐžŅĐ¸Ņ‚Đ¸ ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊŅ– Đ´ĐģŅ OpenAPI `examples` ҃ FastAPI Са Đ´ĐžĐŋĐžĐŧĐžĐŗĐžŅŽ ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ° `openapi_examples` Đ´ĐģŅ: + +* `Path()` +* `Query()` +* `Header()` +* `Cookie()` +* `Body()` +* `Form()` +* `File()` + +КĐģŅŽŅ‡Ņ– ҁĐģОвĐŊиĐēа (`dict`) Ņ–Đ´ĐĩĐŊŅ‚Đ¸Ņ„Ņ–ĐēŅƒŅŽŅ‚ŅŒ ĐēĐžĐļĐĩĐŊ ĐŋŅ€Đ¸ĐēĐģад, а ĐēĐžĐļĐŊĐĩ СĐŊĐ°Ņ‡ĐĩĐŊĐŊŅ `dict` — ĐēĐžĐļĐĩĐŊ ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊиК ҁĐģОвĐŊиĐē `dict` в `examples` ĐŧĐžĐļĐĩ ĐŧŅ–ŅŅ‚Đ¸Ņ‚Đ¸: + +* `summary`: ĐēĐžŅ€ĐžŅ‚ĐēиК ĐžĐŋĐ¸Ņ ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņƒ. +* `description`: Ņ€ĐžĐˇĐŗĐžŅ€ĐŊŅƒŅ‚Đ¸Đš ĐžĐŋĐ¸Ņ (ĐŧĐžĐļĐĩ ĐŧŅ–ŅŅ‚Đ¸Ņ‚Đ¸ Markdown). +* `value`: ŅĐ°Đŧ ĐŋŅ€Đ¸ĐēĐģад, ĐŊаĐŋŅ€Đ¸ĐēĐģад, ҁĐģОвĐŊиĐē (`dict`). +* `externalValue`: аĐģŅŒŅ‚ĐĩŅ€ĐŊĐ°Ņ‚Đ¸Đ˛Đ° `value`, URL-Đ°Đ´Ņ€ĐĩŅĐ°, Ņ‰Đž вĐēĐ°ĐˇŅƒŅ” ĐŊа ĐŋŅ€Đ¸ĐēĐģад. ĐŸŅ€ĐžŅ‚Đĩ Ņ†Ņ ĐžĐŋŅ†Ņ–Ņ ĐŧĐžĐļĐĩ ĐŊĐĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Ņ‚Đ¸ŅŅ ĐąŅ–ĐģŅŒŅˆŅ–ŅŅ‚ŅŽ Ņ–ĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚Ņ–Đ˛, ĐŊа Đ˛Ņ–Đ´ĐŧŅ–ĐŊ҃ Đ˛Ņ–Đ´ `value`. + +ВиĐēĐžŅ€Đ¸ŅŅ‚Đ°ĐŊĐŊŅ Đ˛Đ¸ĐŗĐģŅĐ´Đ°Ņ” Ņ‚Đ°Đē: + +{* ../../docs_src/schema_extra_example/tutorial005_an_py310.py hl[23:49] *} + +### ĐŸŅ€Đ¸ĐēĐģади OpenAPI ҃ UI Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— + +З ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€ĐžĐŧ `openapi_examples`, дОдаĐŊиĐŧ Đ´Đž `Body()`, Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ `/docs` Đ˛Đ¸ĐŗĐģŅĐ´Đ°Ņ‚Đ¸ĐŧĐĩ Ņ‚Đ°Đē: + + + +## ĐĸĐĩŅ…ĐŊҖ҇ĐŊŅ– Đ´ĐĩŅ‚Đ°ĐģŅ– + +/// tip | ĐŸŅ–Đ´ĐēаСĐēа + +Đ¯ĐēŅ‰Đž Ви вĐļĐĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚Đĩ **FastAPI** вĐĩҀҁҖҗ **0.99.0 айО Đ˛Đ¸Ņ‰Đĩ**, Ви ĐŧĐžĐļĐĩŅ‚Đĩ **ĐŋŅ€ĐžĐŋŅƒŅŅ‚Đ¸Ņ‚Đ¸** ҆ĐĩĐš Ņ€ĐžĐˇĐ´Ņ–Đģ. + +Đ’Ņ–ĐŊ ĐąŅ–ĐģҌ҈ аĐēŅ‚ŅƒĐ°ĐģҌĐŊиК Đ´ĐģŅ ŅŅ‚Đ°Ņ€Đ¸Ņ… вĐĩŅ€ŅŅ–Đš, Đ´Đž ĐŋĐžŅĐ˛Đ¸ OpenAPI 3.1.0. + +МоĐļĐŊа вваĐļĐ°Ņ‚Đ¸ ҆Đĩ ĐēĐžŅ€ĐžŅ‚ĐēиĐŧ **Ņ–ŅŅ‚ĐžŅ€Đ¸Ņ‡ĐŊиĐŧ ĐĩĐēҁĐēŅƒŅ€ŅĐžĐŧ** ҃ OpenAPI Ņ‚Đ° JSON Schema. 🤓 + +/// + +/// warning | ПоĐŋĐĩŅ€ĐĩĐ´ĐļĐĩĐŊĐŊŅ + +ĐĻĐĩ Đ´ŅƒĐļĐĩ Ņ‚ĐĩŅ…ĐŊҖ҇ĐŊа Ņ–ĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ ĐŋŅ€Đž ŅŅ‚Đ°ĐŊĐ´Đ°Ņ€Ņ‚Đ¸ **JSON Schema** Ņ– **OpenAPI**. + +Đ¯ĐēŅ‰Đž Đ˛Đ¸Ņ‰ĐĩĐˇĐŗĐ°Đ´Đ°ĐŊŅ– Ņ–Đ´ĐĩŅ— вĐļĐĩ ĐŋŅ€Đ°Ņ†ŅŽŅŽŅ‚ŅŒ ҃ Đ’Đ°Ņ — ĐŧĐžĐļĐĩŅ‚Đĩ ĐŊĐĩ ĐˇĐ°ĐŗĐģийĐģŅŽĐ˛Đ°Ņ‚Đ¸ŅŅ в ҆Җ Đ´ĐĩŅ‚Đ°ĐģŅ–. + +/// + +До OpenAPI 3.1.0 ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Đģа ŅŅ‚Đ°Ņ€Ņƒ Ņ‚Đ° ĐŧĐžĐ´Đ¸Ņ„Ņ–ĐēОваĐŊ҃ вĐĩŅ€ŅŅ–ŅŽ **JSON Schema**. + +ĐžŅĐēŅ–ĐģҌĐēи JSON Schema Ņ€Đ°ĐŊŅ–ŅˆĐĩ ĐŊĐĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Đģа `examples`, OpenAPI дОдаĐģа вĐģĐ°ŅĐŊĐĩ ĐŋĐžĐģĐĩ `examples`. + +OpenAPI Ņ‚Đ°ĐēĐžĐļ дОдаĐģа `example` Ņ– `examples` Đ´Đž Ņ–ĐŊŅˆĐ¸Ņ… Ņ‡Đ°ŅŅ‚Đ¸ĐŊ ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—: + +* `Parameter Object` (в ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—) виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ FastAPI Đ´ĐģŅ: + * `Path()` + * `Query()` + * `Header()` + * `Cookie()` +* `Request Body Object`, в ĐŋĐžĐģŅ– `content`, в `Media Type Object` (в ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—) виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ FastAPI Đ´ĐģŅ: + * `Body()` + * `File()` + * `Form()` + +/// info | ІĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ + +ĐĻĐĩĐš ŅŅ‚Đ°Ņ€Đ¸Đš ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `examples`, ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊиК Đ´ĐģŅ OpenAPI, Ņ‚ĐĩĐŋĐĩŅ€ ĐŊĐ°ĐˇĐ¸Đ˛Đ°Ņ”Ņ‚ŅŒŅŅ `openapi_examples`, ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ С FastAPI вĐĩҀҁҖҗ `0.103.0`. + +/// + +### ПоĐģĐĩ `examples` ҃ JSON Schema + +ĐŸŅ–ĐˇĐŊŅ–ŅˆĐĩ JSON Schema дОдаĐģа ĐŋĐžĐģĐĩ `examples` ҃ ĐŊĐžĐ˛Ņƒ вĐĩŅ€ŅŅ–ŅŽ ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–ĐēĐ°Ņ†Ņ–Ņ—. + +І вĐļĐĩ OpenAPI 3.1.0 ĐąĐ°ĐˇŅƒŅ”Ņ‚ŅŒŅŅ ĐŊа Ņ†Ņ–Đš ĐŊĐžĐ˛Ņ–Đš вĐĩҀҁҖҗ (JSON Schema 2020-12), ŅĐēа вĐēĐģŅŽŅ‡Đ°Ņ” ĐŋĐžĐģĐĩ `examples`. + +ĐĸĐĩĐŋĐĩŅ€ ҆Đĩ ĐŋĐžĐģĐĩ `examples` Ņ” ĐŋŅ€Ņ–ĐžŅ€Đ¸Ņ‚ĐĩŅ‚ĐŊиĐŧ Ņ– СаĐŧŅ–ĐŊŅŽŅ” ŅŅ‚Đ°Ņ€Đĩ (Ņ– ĐēĐ°ŅŅ‚ĐžĐŧĐŊĐĩ) ĐŋĐžĐģĐĩ `example`, ŅĐēĐĩ ŅŅ‚Đ°ĐģĐž ĐˇĐ°ŅŅ‚Đ°Ņ€Ņ–ĐģиĐŧ. + +НовĐĩ ĐŋĐžĐģĐĩ `examples` ҃ JSON Schema — ҆Đĩ **ĐŋŅ€ĐžŅŅ‚Đž ҁĐŋĐ¸ŅĐžĐē (`list`)** ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛, ĐąĐĩС Đ´ĐžĐ´Đ°Ņ‚ĐēĐžĐ˛Đ¸Ņ… ĐŧĐĩŅ‚Đ°Đ´Đ°ĐŊĐ¸Ņ… (ĐŊа Đ˛Ņ–Đ´ĐŧŅ–ĐŊ҃ Đ˛Ņ–Đ´ OpenAPI). + +/// info | ІĐŊŅ„ĐžŅ€ĐŧĐ°Ņ†Ņ–Ņ + +ĐĐ°Đ˛Ņ–Ņ‚ŅŒ ĐŋҖҁĐģŅ Ņ‚ĐžĐŗĐž, ŅĐē С'ŅĐ˛Đ¸Đ˛ŅŅ OpenAPI 3.1.0, ŅĐēиК ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Đ˛ examples ҃ JSON Schema, Ņ–ĐŊŅŅ‚Ņ€ŅƒĐŧĐĩĐŊŅ‚ Swagger UI ҉Đĩ Đ´ĐĩŅĐēиК Ņ‡Đ°Ņ ĐŊĐĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Đ˛ Ņ†ŅŽ вĐĩŅ€ŅŅ–ŅŽ (ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧĐēа Đˇâ€™ŅĐ˛Đ¸ĐģĐ°ŅŅŒ С вĐĩҀҁҖҗ 5.0.0 🎉). + +ЧĐĩŅ€ĐĩС ҆Đĩ вĐĩҀҁҖҗ FastAPI Đ´Đž 0.99.0 Đ˛ŅĐĩ ҉Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Đģи вĐĩҀҁҖҗ OpenAPI ĐŊиĐļ҇Җ Са 3.1.0. + +/// + +### `Examples` в Pydantic Ņ– FastAPI + +КоĐģи Ви Đ´ĐžĐ´Đ°Ņ”Ņ‚Đĩ `examples` ҃ ĐŧОдĐĩĐģҌ Pydantic ҇ĐĩŅ€ĐĩС `schema_extra` айО `Field(examples=["something"])`, ҆Җ ĐŋŅ€Đ¸ĐēĐģади Đ´ĐžĐ´Đ°ŅŽŅ‚ŅŒŅŅ Đ´Đž **JSON Schema** ҆ҖҔҗ ĐŧОдĐĩĐģŅ–. + +І Ņ†Ņ **JSON Schema** Pydantic-ĐŧОдĐĩĐģŅ– вĐēĐģŅŽŅ‡Đ°Ņ”Ņ‚ŅŒŅŅ Đ´Đž **OpenAPI** Đ’Đ°ŅˆĐžĐŗĐž API, а ĐŋĐžŅ‚Ņ–Đŧ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ в UI Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ— (docs UI). + +ĐŖ вĐĩŅ€ŅŅ–ŅŅ… FastAPI Đ´Đž 0.99.0 (ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ С 0.99.0 виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅ”Ņ‚ŅŒŅŅ ĐŊĐžĐ˛Ņ–ŅˆĐ¸Đš OpenAPI 3.1.0), ĐēĐžĐģи Ви виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒĐ˛Đ°Đģи `example` айО `examples` С Ņ–ĐŊŅˆĐ¸Đŧи ŅƒŅ‚Đ¸ĐģŅ–Ņ‚Đ°Đŧи (`Query()`, `Body()` Ņ‚ĐžŅ‰Đž), ҆Җ ĐŋŅ€Đ¸ĐēĐģади ĐŊĐĩ дОдаваĐģĐ¸ŅŅ Đ´Đž JSON Schema, ŅĐēиК ĐžĐŋĐ¸ŅŅƒŅ” ҆Җ даĐŊŅ– (ĐŊĐ°Đ˛Ņ–Ņ‚ŅŒ ĐŊĐĩ Đ´Đž вĐģĐ°ŅĐŊĐžŅ— вĐĩҀҁҖҗ JSON Schema ҃ OpenAPI). ĐĐ°Ņ‚ĐžĐŧŅ–ŅŅ‚ŅŒ вОĐŊи дОдаваĐģĐ¸ŅŅ ĐąĐĩСĐŋĐžŅĐĩŅ€ĐĩĐ´ĐŊŅŒĐž Đ´Đž ĐžĐŋĐ¸ŅŅƒ *ĐžĐąŅ€ĐžĐąĐŊиĐēа ҈ĐģŅŅ…Ņƒ* *(path operation)* в OpenAPI (Ņ‚ĐžĐąŅ‚Đž ĐŋОСа ĐŧĐĩĐļаĐŧи Ņ‡Đ°ŅŅ‚Đ¸ĐŊ, ŅĐēŅ– виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅŽŅ‚ŅŒ JSON Schema). + +АĐģĐĩ Ņ‚ĐĩĐŋĐĩŅ€, ĐēĐžĐģи FastAPI 0.99.0 Ņ– Đ˛Đ¸Ņ‰Đĩ виĐēĐžŅ€Đ¸ŅŅ‚ĐžĐ˛ŅƒŅŽŅ‚ŅŒ OpenAPI 3.1.0, а Ņ‚ĐžĐš — JSON Schema 2020-12, Ņ€Đ°ĐˇĐžĐŧ Ņ–Đˇ Swagger UI 5.0.0 Ņ– Đ˛Đ¸Ņ‰Đĩ — Đ˛ŅĐĩ ŅŅ‚Đ°ĐģĐž ĐąŅ–ĐģҌ҈ ŅƒĐˇĐŗĐžĐ´ĐļĐĩĐŊиĐŧ, Ņ– examples Ņ‚ĐĩĐŋĐĩŅ€ вĐēĐģŅŽŅ‡Đ°ŅŽŅ‚ŅŒŅŅ Đ´Đž JSON Schema. + +### Swagger UI Ņ‚Đ° ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊŅ– Đ´ĐģŅ OpenAPI `examples` + +РаĐŊŅ–ŅˆĐĩ (ŅŅ‚Đ°ĐŊĐžĐŧ ĐŊа 26 ҁĐĩŅ€ĐŋĐŊŅ 2023 Ņ€ĐžĐē҃) Swagger UI ĐŊĐĩ ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧŅƒĐ˛Đ°Đ˛ ĐēŅ–ĐģҌĐēа ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛ ҃ JSON Schema, Ņ‚ĐžĐŧ҃ ĐēĐžŅ€Đ¸ŅŅ‚ŅƒĐ˛Đ°Ņ‡Ņ– ĐŊĐĩ ĐŧаĐģи ĐŧĐžĐļĐģĐ¸Đ˛ĐžŅŅ‚Ņ– ĐŋĐžĐēĐ°ĐˇĐ°Ņ‚Đ¸ Đ´ĐĩĐēŅ–ĐģҌĐēа ĐŋŅ€Đ¸ĐēĐģĐ°Đ´Ņ–Đ˛ ҃ Đ´ĐžĐē҃ĐŧĐĩĐŊŅ‚Đ°Ņ†Ņ–Ņ—. + +ЊОй Đ˛Đ¸Ņ€Ņ–ŅˆĐ¸Ņ‚Đ¸ ҆Đĩ, FastAPI ĐŋĐžŅ‡Đ¸ĐŊĐ°ŅŽŅ‡Đ¸ С вĐĩҀҁҖҗ 0.103.0 **дОдав ĐŋŅ–Đ´Ņ‚Ņ€Đ¸ĐŧĐē҃** ŅŅ‚Đ°Ņ€ĐžĐŗĐž **OpenAPI-ҁĐŋĐĩŅ†Đ¸Ņ„Ņ–Ņ‡ĐŊĐžĐŗĐž** ĐŋĐžĐģŅ `examples` ҇ĐĩŅ€ĐĩС ĐŊОвиК ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `openapi_examples`. 🤓 + +### ĐŸŅ–Đ´ŅŅƒĐŧĐžĐē + +РаĐŊŅ–ŅˆĐĩ Ņ ĐēаСав, Ņ‰Đž ĐŊĐĩ ĐģŅŽĐąĐģŅŽ Ņ–ŅŅ‚ĐžŅ€Ņ–ŅŽ... а Ņ‚ĐĩĐŋĐĩŅ€ ĐžŅŅŒ Ņ — Ņ€ĐžĐˇĐŋĐžĐ˛Ņ–Đ´Đ°ŅŽ "Ņ‚ĐĩŅ…ĐŊҖ҇ĐŊŅ– Ņ–ŅŅ‚ĐžŅ€Đ¸Ņ‡ĐŊŅ–" ĐģĐĩĐē҆Җҗ. 😅 + +ĐšĐžŅ€ĐžŅ‚ĐēĐž: **ĐžĐŊĐžĐ˛Ņ–Ņ‚ŅŒŅŅ Đ´Đž FastAPI 0.99.0 айО Đ˛Đ¸Ņ‰Đĩ** — Ņ– Đ˛ŅĐĩ ŅŅ‚Đ°ĐŊĐĩ СĐŊĐ°Ņ‡ĐŊĐž **ĐŋŅ€ĐžŅŅ‚Ņ–ŅˆĐ¸Đŧ, ŅƒĐˇĐŗĐžĐ´ĐļĐĩĐŊиĐŧ Ņ‚Đ° Ņ–ĐŊŅ‚ŅƒŅ—Ņ‚Đ¸Đ˛ĐŊĐž ĐˇŅ€ĐžĐˇŅƒĐŧŅ–ĐģиĐŧ**, Ņ– ВаĐŧ ĐŊĐĩ дОвĐĩĐ´ĐĩŅ‚ŅŒŅŅ СĐŊĐ°Ņ‚Đ¸ Đ˛ŅŅ– ҆Җ Ņ–ŅŅ‚ĐžŅ€Đ¸Ņ‡ĐŊŅ– Đ´ĐĩŅ‚Đ°ĐģŅ–. 😎 From b8a3cccb75e11997b9b48b32db20f1f29b54f75a Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 9 Jun 2025 19:36:09 +0000 Subject: [PATCH 24/65] =?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 [skip ci] --- 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 b5d7f8d3a..a9747b9da 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/schema-extra-example.md`. PR [#13769](https://github.com/fastapi/fastapi/pull/13769) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * âœī¸ Remove redundant words in docs/zh/docs/python-types.md. PR [#13774](https://github.com/fastapi/fastapi/pull/13774) by [@CharleeWa](https://github.com/CharleeWa). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-param-models.md`. PR [#13748](https://github.com/fastapi/fastapi/pull/13748) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * 🌐 Add Bengali translation for `docs/bn/docs/environment-variables.md`. PR [#13629](https://github.com/fastapi/fastapi/pull/13629) by [@SakibSibly](https://github.com/SakibSibly). From cdd5d6ce709bfe16c9f6268d41a6a192b222f84b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 21:40:54 +0200 Subject: [PATCH 25/65] =?UTF-8?q?=E2=AC=86=20[pre-commit.ci]=20pre-commit?= =?UTF-8?q?=20autoupdate=20(#13781)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/astral-sh/ruff-pre-commit: v0.11.12 → v0.11.13](https://github.com/astral-sh/ruff-pre-commit/compare/v0.11.12...v0.11.13) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 21413fc66..7af88b5aa 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -14,7 +14,7 @@ repos: - id: end-of-file-fixer - id: trailing-whitespace - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.12 + rev: v0.11.13 hooks: - id: ruff args: From 98fa4bd4374f736b1e516c29cb5447182455ac61 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 9 Jun 2025 19:41:14 +0000 Subject: [PATCH 26/65] =?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 [skip ci] --- 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 a9747b9da..267384c6b 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -48,6 +48,7 @@ hide: ### Internal +* âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13781](https://github.com/fastapi/fastapi/pull/13781) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13757](https://github.com/fastapi/fastapi/pull/13757) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† Bump griffe-typingdoc from 0.2.7 to 0.2.8. PR [#13751](https://github.com/fastapi/fastapi/pull/13751) by [@dependabot[bot]](https://github.com/apps/dependabot). * 🍱 Update sponsors: Dribia badge size. PR [#13773](https://github.com/fastapi/fastapi/pull/13773) by [@tiangolo](https://github.com/tiangolo). From 44d5abffc164b787832e2e3a83990e0a027a7eea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Tue, 10 Jun 2025 18:52:33 +0200 Subject: [PATCH 27/65] =?UTF-8?q?=F0=9F=94=A7=20Update=20sponsors:=20remov?= =?UTF-8?q?e=20Porter=20(#13783)?= 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/overrides/main.html | 6 ------ 3 files changed, 10 deletions(-) diff --git a/README.md b/README.md index da9446e2b..44fa2d3ac 100644 --- a/README.md +++ b/README.md @@ -48,7 +48,6 @@ The key features are: - diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index 897ca7b8d..b06e51477 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -5,9 +5,6 @@ gold: - url: https://platform.sh/try-it-now/?utm_source=fastapi-signup&utm_medium=banner&utm_campaign=FastAPI-signup-June-2023 title: "Build, run and scale your apps on a modern, reliable, and secure PaaS." img: https://fastapi.tiangolo.com/img/sponsors/platform-sh.png - - url: https://www.porter.run - title: Deploy FastAPI on AWS with a few clicks - img: https://fastapi.tiangolo.com/img/sponsors/porter.png - url: https://github.com/scalar/scalar/?utm_source=fastapi&utm_medium=website&utm_campaign=main-badge title: "Scalar: Beautiful Open-Source API References from Swagger/OpenAPI files" img: https://fastapi.tiangolo.com/img/sponsors/scalar.svg diff --git a/docs/en/overrides/main.html b/docs/en/overrides/main.html index 89c8171d0..21a1d6906 100644 --- a/docs/en/overrides/main.html +++ b/docs/en/overrides/main.html @@ -38,12 +38,6 @@ -
From 5ba94612c1d5bab8ff7cdc627bebf76edfea36ba Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 10 Jun 2025 16:52:55 +0000 Subject: [PATCH 28/65] =?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 [skip ci] --- 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 267384c6b..54c1275c2 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -48,6 +48,7 @@ hide: ### Internal +* 🔧 Update sponsors: remove Porter. PR [#13783](https://github.com/fastapi/fastapi/pull/13783) by [@tiangolo](https://github.com/tiangolo). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13781](https://github.com/fastapi/fastapi/pull/13781) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13757](https://github.com/fastapi/fastapi/pull/13757) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† Bump griffe-typingdoc from 0.2.7 to 0.2.8. PR [#13751](https://github.com/fastapi/fastapi/pull/13751) by [@dependabot[bot]](https://github.com/apps/dependabot). From 095dcc8a633a5a14059bbf7ed5d63c0d7744e482 Mon Sep 17 00:00:00 2001 From: ChaeYeong Hwang <79563565+NinaHwang@users.noreply.github.com> Date: Thu, 12 Jun 2025 09:32:09 +0200 Subject: [PATCH 29/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Korean=20translation?= =?UTF-8?q?=20for=20`docs/ko/docs/advanced/sub-applications.md`=20(#4543)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * This PR translates advanced/sub-applications.md in Korean. Test complete related: #2017 * Update sub-applications.md * Update sub-applications.md * Update sub-applications.md * remove .DS_Store * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks * Update docs/ko/docs/advanced/sub-applications.md * Update docs/ko/docs/advanced/sub-applications.md * Update docs/ko/docs/advanced/sub-applications.md --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: SebastiÃĄn Ramírez Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> --- docs/ko/docs/advanced/sub-applications.md | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 docs/ko/docs/advanced/sub-applications.md diff --git a/docs/ko/docs/advanced/sub-applications.md b/docs/ko/docs/advanced/sub-applications.md new file mode 100644 index 000000000..c5835de15 --- /dev/null +++ b/docs/ko/docs/advanced/sub-applications.md @@ -0,0 +1,67 @@ +# í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ - ë§ˆėš´íŠ¸ + +만ė•Ŋ ę°ę°ė˜ 독ëĻŊė ė¸ OpenAPI뙀 ëŦ¸ė„œ UIëĨŧ 갖는 두 ę°œė˜ 독ëĻŊė ė¸ FastAPI ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė´ í•„ėš”í•˜ë‹¤ëŠ´, ëŠ”ė¸ ė–´í”ŒëĻŦėŧ€ė´ė…˜ė— 하나 (또는 ꡸ ė´ėƒė˜) í•˜ėœ„-ė‘ėšŠí”„ëĄœęˇ¸ëž¨(들)ė„ â€œë§ˆėš´íŠ¸"í•´ė„œ ė‚ŦėšŠí•  눘 ėžˆėŠĩ니다. + +## **FastAPI** ė‘ėšŠí”„ëĄœęˇ¸ëž¨ ë§ˆėš´íŠ¸ + +â€œë§ˆėš´íŠ¸"ė´ëž€ ė™„ė „ížˆ “독ëĻŊė ė¸" ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė„ íŠšė • ę˛ŊëĄœė— ėļ”ę°€í•˜ė—Ŧ 해당 í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė—ė„œ ė„ ė–¸ëœ *ę˛Ŋ로 ë™ėž‘*ė„ í†ĩ해 해당 ę˛Ŋ로 ė•„ëž˜ė— ėžˆëŠ” ëĒ¨ë“  ėž‘ė—…ë“¤ė„ 래ëĻŦ할 눘 ėžˆë„ëĄ 하는 ę˛ƒė„ ė˜ë¯¸í•Šë‹ˆë‹¤. + +### ėĩœėƒë‹¨ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ + +ë¨ŧė €, ëŠ”ė¸, ėĩœėƒë‹¨ė˜ **FastAPI** ė‘ėšŠí”„ëĄœęˇ¸ëž¨ęŗŧ ė´ę˛ƒė˜ *ę˛Ŋ로 ë™ėž‘*ė„ ėƒė„ąí•Šë‹ˆë‹¤: + +{* ../../docs_src/sub_applications/tutorial001.py hl[3, 6:8] *} + +### í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ + +ë‹¤ėŒėœŧ로, í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ęŗŧ ė´ę˛ƒė˜ *ę˛Ŋ로 ë™ėž‘*ė„ ėƒė„ąí•Šë‹ˆë‹¤: + +ė´ í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė€ 또 다ëĨ¸ í‘œė¤€ FastAPI ė‘ėšŠí”„ëĄœęˇ¸ëž¨ėž…ë‹ˆë‹¤. 다만 ė´ę˛ƒė€ â€œë§ˆėš´íŠ¸â€ë  ę˛ƒėž…ë‹ˆë‹¤: + +{* ../../docs_src/sub_applications/tutorial001.py hl[11, 14:16] *} + +### í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ ë§ˆėš´íŠ¸ + +ėĩœėƒë‹¨ ė‘ėšŠí”„ëĄœęˇ¸ëž¨, `app`뗐 í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨, `subapi`ëĨŧ ë§ˆėš´íŠ¸í•Šë‹ˆë‹¤. + +ė´ ė˜ˆė‹œė—ė„œ, í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė…˜ė€ `/subapi` ę˛ŊëĄœė— ë§ˆėš´íŠ¸ 될 ę˛ƒėž…ë‹ˆë‹¤: + +{* ../../docs_src/sub_applications/tutorial001.py hl[11, 19] *} + +### ėžë™ėœŧ로 ėƒė„ąëœ API ëŦ¸ė„œ í™•ė¸ + +ė´ė œ, `uvicorn`ėœŧ로 ëŠ”ė¸ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė„ ė‹¤í–‰í•˜ė‹­ė‹œė˜¤. ë‹šė‹ ė˜ 파ėŧė´ `main.py`ëŧ늴, ė´ë ‡ę˛Œ ė‹¤í–‰í•Šë‹ˆë‹¤: + +
+ +```console +$ uvicorn main:app --reload + +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +``` + +
+ +꡸ëĻŦęŗ 
http://127.0.0.1:8000/docsė—ė„œ ëŦ¸ė„œëĨŧ ė—Ŧė‹­ė‹œė˜¤. + +ëŠ”ė¸ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė˜ *ę˛Ŋ로 ë™ėž‘*ë§Œė„ íŦ함하는, ëŠ”ė¸ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė— 대한 ėžë™ API ëŦ¸ė„œëĨŧ í™•ė¸í•  눘 ėžˆėŠĩ니다: + + + +ë‹¤ėŒėœŧ로, http://127.0.0.1:8000/subapi/docsė—ė„œ í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė˜ ëŦ¸ė„œëĨŧ ė—Ŧė‹­ė‹œė˜¤. + +í•˜ėœ„ ę˛Ŋ로 ė ‘ë‘ė‚Ŧ `/subapi` ė•„ëž˜ė— ė„ ė–¸ëœ *ę˛Ŋ로 ë™ėž‘* ė„ íŦ함하는, í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė— 대한 ėžë™ API ëŦ¸ė„œëĨŧ í™•ė¸í•  눘 ėžˆėŠĩ니다: + + + +두 ė‚ŦėšŠėž ė¸í„°íŽ˜ė´ėŠ¤ 뤑 ė–´ëŠ 하나ëĨŧ ė‚ŦėšŠí•´ė•ŧ하는 ę˛Ŋ뚰, 브ëŧėš°ė €ëŠ” íŠšė • ė‘ėšŠí”„ëĄœęˇ¸ëž¨ 또는 í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ęŗŧ 각각 í†ĩė‹ í•  눘 ėžˆę¸° 때ëŦ¸ė— ė˜Ŧ바ëĨ´ę˛Œ ë™ėž‘í•  ę˛ƒėž…ë‹ˆë‹¤. + +### 揰눠렁 넏ëļ€ė‚Ŧ항: `root_path` + +ėœ„ė— 네ëĒ…ëœ 것ęŗŧ ę°™ė´ í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė„ ë§ˆėš´íŠ¸í•˜ëŠ” ę˛Ŋ뚰, FastAPI는 `root_path`ëŧęŗ  하는 ASGI ëĒ…ė„¸ė˜ 매ėģ¤ë‹ˆėĻ˜ė„ ė‚ŦėšŠí•˜ė—Ŧ í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė— 대한 ë§ˆėš´íŠ¸ ę˛Ŋ로 í†ĩė‹ ė„ 래ëĻŦ합니다. + +ė´ëĨŧ í†ĩ해, í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė€ ëŦ¸ė„œ UIëĨŧ ėœ„í•´ ę˛Ŋ로 ė ‘ë‘ė‚ŦëĨŧ ė‚ŦėšŠí•´ė•ŧ 한다는 ė‚Ŧė‹¤ė„ ė¸ė§€í•Šë‹ˆë‹¤. + +í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė—ë„ ė—­ė‹œ 다ëĨ¸ í•˜ėœ„ ė‘ėšŠí”„ëĄœęˇ¸ëž¨ė„ ë§ˆėš´íŠ¸í•˜ëŠ” ę˛ƒė´ 가ëŠĨ하며 FastAPI가 ëĒ¨ë“  `root_path` ë“¤ė„ ėžë™ė ėœŧ로 래ëĻŦ하기 때ëŦ¸ė— ëĒ¨ë“  ę˛ƒė€ ė˜Ŧ바ëĨ´ę˛Œ ë™ėž‘í•  ę˛ƒėž…ë‹ˆë‹¤. + +`root_path`뙀 ė´ę˛ƒė„ ė‚ŦėšŠí•˜ëŠ” ë°Šë˛•ė— ëŒ€í•´ė„œëŠ” [í”„ëĄė‹œė˜ 뒷단](./behind-a-proxy.md){.internal-link target=_blank} ė„šė…˜ė—ė„œ ë°°ėš¸ 눘 ėžˆėŠĩ니다. From 1f79531a5b96654e41df14bdcff322ec3c3d707c Mon Sep 17 00:00:00 2001 From: github-actions Date: Thu, 12 Jun 2025 07:32:29 +0000 Subject: [PATCH 30/65] =?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 [skip ci] --- 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 54c1275c2..46dbf7536 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Korean translation for `docs/ko/docs/advanced/sub-applications.md`. PR [#4543](https://github.com/fastapi/fastapi/pull/4543) by [@NinaHwang](https://github.com/NinaHwang). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/schema-extra-example.md`. PR [#13769](https://github.com/fastapi/fastapi/pull/13769) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * âœī¸ Remove redundant words in docs/zh/docs/python-types.md. PR [#13774](https://github.com/fastapi/fastapi/pull/13774) by [@CharleeWa](https://github.com/CharleeWa). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/query-param-models.md`. PR [#13748](https://github.com/fastapi/fastapi/pull/13748) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). From 49fe5bac2ea90488156783c094bb13f61c2ea716 Mon Sep 17 00:00:00 2001 From: Mohammad <116789737+Mohammad222PR@users.noreply.github.com> Date: Mon, 16 Jun 2025 14:13:07 +0330 Subject: [PATCH 31/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Persian=20translatio?= =?UTF-8?q?n=20for=20`docs/fa/docs/learn/index.md`=20(#13518)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 🌐 Add Persian translation for docs/fa/docs/learn/index.md * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/fa/docs/learn/index.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 docs/fa/docs/learn/index.md diff --git a/docs/fa/docs/learn/index.md b/docs/fa/docs/learn/index.md new file mode 100644 index 000000000..06aa7f00e --- /dev/null +++ b/docs/fa/docs/learn/index.md @@ -0,0 +1,5 @@ +# ÛŒØ§Ø¯Ú¯ÛŒØąÛŒ + +Ø§ÛŒŲ†ØŦا Ø¨ØŽØ´â€ŒŲ‡Ø§ÛŒ Ų…Ų‚Ø¯Ų…Ø§ØĒی ؈ ØĸŲ…ŲˆØ˛Ø´â€ŒŲ‡Ø§ÛŒÛŒ Ų‡ØŗØĒŲ† ÚŠŲ‡ Ø¨ØąØ§ÛŒ ÛŒØ§Ø¯Ú¯ÛŒØąÛŒ **FastAPI** Ø¨Ų‡ØĒ ÚŠŲ…ÚŠ Ų…ÛŒâ€ŒÚŠŲ†Ų†. + +Ų…ÛŒâ€ŒØĒŲˆŲ†ÛŒ Ø§ÛŒŲ†Ųˆ ÛŒŲ‡ **ÚŠØĒاب**، ÛŒŲ‡ **Ø¯ŲˆØąŲ‡ ØĸŲ…ŲˆØ˛Ø´ÛŒ**، یا ØąØ§Ų‡ **ØąØŗŲ…ÛŒ** ؈ ŲžÛŒØ´Ų†Ų‡Ø§Ø¯ÛŒ Ø¨ØąØ§ÛŒ ÛŒØ§Ø¯Ú¯ÛŒØąÛŒ FastAPI Ø¯Øą Ų†Ø¸Øą Ø¨Ú¯ÛŒØąÛŒ. 😎 From c7302ea99e32974edf7e97e5a1a649fece4368b3 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 16 Jun 2025 10:43:29 +0000 Subject: [PATCH 32/65] =?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 [skip ci] --- 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 46dbf7536..1fe954b58 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Persian translation for `docs/fa/docs/learn/index.md`. PR [#13518](https://github.com/fastapi/fastapi/pull/13518) by [@Mohammad222PR](https://github.com/Mohammad222PR). * 🌐 Add Korean translation for `docs/ko/docs/advanced/sub-applications.md`. PR [#4543](https://github.com/fastapi/fastapi/pull/4543) by [@NinaHwang](https://github.com/NinaHwang). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/schema-extra-example.md`. PR [#13769](https://github.com/fastapi/fastapi/pull/13769) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * âœī¸ Remove redundant words in docs/zh/docs/python-types.md. PR [#13774](https://github.com/fastapi/fastapi/pull/13774) by [@CharleeWa](https://github.com/CharleeWa). From 6cbdcd3961552856045756ffaeee0eea20175142 Mon Sep 17 00:00:00 2001 From: Naves <79222417+NavesSapnis@users.noreply.github.com> Date: Mon, 16 Jun 2025 14:11:10 +0300 Subject: [PATCH 33/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Russian=20Translatio?= =?UTF-8?q?n=20for=20`docs/ru/docs/advanced/response-change-status-code.md?= =?UTF-8?q?`=20(#13791)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 🌐 Add Russian Translation for docs/ru/docs/advanced/response-change-status-code.md --- .../advanced/response-change-status-code.md | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 docs/ru/docs/advanced/response-change-status-code.md diff --git a/docs/ru/docs/advanced/response-change-status-code.md b/docs/ru/docs/advanced/response-change-status-code.md new file mode 100644 index 000000000..37dade99f --- /dev/null +++ b/docs/ru/docs/advanced/response-change-status-code.md @@ -0,0 +1,31 @@ +# Response - ИСĐŧĐĩĐŊĐĩĐŊиĐĩ cŅ‚Đ°Ņ‚ŅƒŅ ĐēОда + +Đ’Ņ‹, вĐĩŅ€ĐžŅŅ‚ĐŊĐž, ҃ĐļĐĩ Ņ‡Đ¸Ņ‚Đ°Đģи Đž Ņ‚ĐžĐŧ, Ņ‡Ņ‚Đž ĐŧĐžĐļĐŊĐž ŅƒŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚ŅŒ [ĐĄĐžŅŅ‚ĐžŅĐŊиĐĩ ĐžŅ‚Đ˛ĐĩŅ‚Đ° ĐŋĐž ҃ĐŧĐžĐģŅ‡Đ°ĐŊĐ¸ŅŽ](../tutorial/response-status-code.md){.internal-link target=_blank}. + +Но в ĐŊĐĩĐēĐžŅ‚ĐžŅ€Ņ‹Ņ… ҁĐģŅƒŅ‡Đ°ŅŅ… ваĐŧ ĐŊ҃ĐļĐŊĐž вĐĩŅ€ĐŊŅƒŅ‚ŅŒ ĐēОд ŅĐžŅŅ‚ĐžŅĐŊĐ¸Ņ, ĐžŅ‚ĐģĐ¸Ņ‡ĐŊŅ‹Đš ĐžŅ‚ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊĐŊĐžĐŗĐž ĐŋĐž ҃ĐŧĐžĐģŅ‡Đ°ĐŊĐ¸ŅŽ. + +## ĐŸŅ€Đ¸ĐŧĐĩŅ€ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ + +НаĐŋŅ€Đ¸ĐŧĐĩŅ€, ĐŋŅ€ĐĩĐ´ŅŅ‚Đ°Đ˛ŅŒŅ‚Đĩ, Ņ‡Ņ‚Đž Đ˛Ņ‹ Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ Đ˛ĐžĐˇĐ˛Ņ€Đ°Ņ‰Đ°Ņ‚ŅŒ HTTP ĐēОд ŅĐžŅŅ‚ĐžŅĐŊĐ¸Ņ "OK" `200` ĐŋĐž ҃ĐŧĐžĐģŅ‡Đ°ĐŊĐ¸ŅŽ. + +Но ĐĩҁĐģи даĐŊĐŊŅ‹Đĩ ĐŊĐĩ ŅŅƒŅ‰ĐĩŅŅ‚Đ˛ĐžĐ˛Đ°Đģи, Đ˛Ņ‹ Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ ŅĐžĐˇĐ´Đ°Ņ‚ŅŒ Đ¸Ņ… и вĐĩŅ€ĐŊŅƒŅ‚ŅŒ HTTP ĐēОд ŅĐžŅŅ‚ĐžŅĐŊĐ¸Ņ "CREATED" `201`. + +ĐŸŅ€Đ¸ ŅŅ‚ĐžĐŧ Đ˛Ņ‹ Đ˛ŅŅ‘ Đĩ҉ґ Ņ…ĐžŅ‚Đ¸Ņ‚Đĩ иĐŧĐĩŅ‚ŅŒ вОСĐŧĐžĐļĐŊĐžŅŅ‚ŅŒ Ņ„Đ¸ĐģŅŒŅ‚Ņ€ĐžĐ˛Đ°Ņ‚ŅŒ и ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Ņ‹Đ˛Đ°Ņ‚ŅŒ Đ˛ĐžĐˇĐ˛Ņ€Đ°Ņ‰Đ°ĐĩĐŧŅ‹Đĩ даĐŊĐŊŅ‹Đĩ ҁ ĐŋĐžĐŧĐžŅ‰ŅŒŅŽ `response_model`. + +ДĐģŅ Ņ‚Đ°ĐēĐ¸Ņ… ҁĐģŅƒŅ‡Đ°Đĩв Đ˛Ņ‹ ĐŧĐžĐļĐĩŅ‚Đĩ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `Response`. + +## Đ˜ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊиĐĩ ĐŋĐ°Ņ€Đ°ĐŧĐĩŅ‚Ņ€Đ° `Response` + +Đ’Ņ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ĐžĐąŅŠŅĐ˛Đ¸Ņ‚ŅŒ ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ Ņ‚Đ¸Đŋа `Response` в Đ˛Đ°ŅˆĐĩĐš *Ņ„ŅƒĐŊĐēŅ†Đ¸Đ¸ ĐžĐąŅ€Đ°ĐąĐžŅ‚Đēи ĐŋŅƒŅ‚Đ¸* (Ņ‚Đ°Đē ĐļĐĩ ĐēаĐē Đ´ĐģŅ cookies и headers). + +И ĐˇĐ°Ņ‚ĐĩĐŧ Đ˛Ņ‹ ĐŧĐžĐļĐĩŅ‚Đĩ ŅƒŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚ŅŒ `status_code` в ŅŅ‚ĐžĐŧ *Đ˛Ņ€ĐĩĐŧĐĩĐŊĐŊĐžĐŧ* ĐžĐąŅŠĐĩĐēŅ‚Đĩ ĐžŅ‚Đ˛ĐĩŅ‚Đ°. + +{* ../../docs_src/response_change_status_code/tutorial001.py hl[1,9,12] *} + +ĐŸĐžŅĐģĐĩ ŅŅ‚ĐžĐŗĐž Đ˛Ņ‹ ĐŧĐžĐļĐĩŅ‚Đĩ вĐĩŅ€ĐŊŅƒŅ‚ŅŒ ĐģŅŽĐąĐžĐš ĐžĐąŅŠĐĩĐēŅ‚, ĐēĐžŅ‚ĐžŅ€Ņ‹Đš ваĐŧ ĐŊ҃ĐļĐĩĐŊ, ĐēаĐē ĐžĐąŅ‹Ņ‡ĐŊĐž (`dict`, ĐŧОдĐĩĐģҌ ĐąĐ°ĐˇŅ‹ даĐŊĐŊҋ҅ и Ņ‚.Đ´.). + +И ĐĩҁĐģи Đ˛Ņ‹ ĐžĐąŅŠŅĐ˛Đ¸Đģи `response_model`, ĐžĐŊ Đ˛ŅŅ‘ Ņ€Đ°Đ˛ĐŊĐž ĐąŅƒĐ´ĐĩŅ‚ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒŅŅ Đ´ĐģŅ Ņ„Đ¸ĐģŅŒŅ‚Ņ€Đ°Ņ†Đ¸Đ¸ и ĐŋŅ€ĐĩĐžĐąŅ€Đ°ĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ Đ˛ĐžĐˇĐ˛Ņ€Đ°Ņ‰Đ°ĐĩĐŧĐžĐŗĐž ĐžĐąŅŠĐĩĐēŅ‚Đ°. + +**FastAPI** ĐąŅƒĐ´ĐĩŅ‚ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ ŅŅ‚ĐžŅ‚ *Đ˛Ņ€ĐĩĐŧĐĩĐŊĐŊŅ‹Đš* ĐžŅ‚Đ˛ĐĩŅ‚ Đ´ĐģŅ иСвĐģĐĩ҇ĐĩĐŊĐ¸Ņ ĐēОда ŅĐžŅŅ‚ĐžŅĐŊĐ¸Ņ (а Ņ‚Đ°ĐēĐļĐĩ cookies и headers) и ĐŋĐžĐŧĐĩŅŅ‚Đ¸Ņ‚ Đ¸Ņ… в Ņ„Đ¸ĐŊаĐģҌĐŊŅ‹Đš ĐžŅ‚Đ˛ĐĩŅ‚, ĐēĐžŅ‚ĐžŅ€Ņ‹Đš ŅĐžĐ´ĐĩŅ€ĐļĐ¸Ņ‚ Đ˛ĐžĐˇĐ˛Ņ€Đ°Ņ‰Đ°ĐĩĐŧĐžĐĩ ваĐŧи СĐŊĐ°Ņ‡ĐĩĐŊиĐĩ, ĐžŅ‚Ņ„Đ¸ĐģŅŒŅ‚Ņ€ĐžĐ˛Đ°ĐŊĐŊĐžĐĩ ĐģŅŽĐąŅ‹Đŧ `response_model`. + +Đ’Ņ‹ Ņ‚Đ°ĐēĐļĐĩ ĐŧĐžĐļĐĩŅ‚Đĩ ĐžĐąŅŠŅĐ˛Đ¸Ņ‚ŅŒ ĐŋĐ°Ņ€Đ°ĐŧĐĩ҂Ҁ `Response` в ĐˇĐ°Đ˛Đ¸ŅĐ¸ĐŧĐžŅŅ‚ŅŅ… и ŅƒŅŅ‚Đ°ĐŊĐžĐ˛Đ¸Ņ‚ŅŒ ĐēОд ŅĐžŅŅ‚ĐžŅĐŊĐ¸Ņ в ĐŊĐ¸Ņ…. Но ĐŋĐžĐŧĐŊĐ¸Ņ‚Đĩ, Ņ‡Ņ‚Đž ĐŋĐžŅĐģĐĩĐ´ĐŊĐĩĐĩ ŅƒŅŅ‚Đ°ĐŊОвĐģĐĩĐŊĐŊĐžĐĩ СĐŊĐ°Ņ‡ĐĩĐŊиĐĩ ĐąŅƒĐ´ĐĩŅ‚ иĐŧĐĩŅ‚ŅŒ ĐŋŅ€Đ¸ĐžŅ€Đ¸Ņ‚ĐĩŅ‚. From 3ac38eb19580b22db77fcaebd40dfced40439b14 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 16 Jun 2025 11:11:36 +0000 Subject: [PATCH 34/65] =?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 [skip ci] --- 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 1fe954b58..1d0f9c0e9 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Translations +* 🌐 Add Russian Translation for `docs/ru/docs/advanced/response-change-status-code.md`. PR [#13791](https://github.com/fastapi/fastapi/pull/13791) by [@NavesSapnis](https://github.com/NavesSapnis). * 🌐 Add Persian translation for `docs/fa/docs/learn/index.md`. PR [#13518](https://github.com/fastapi/fastapi/pull/13518) by [@Mohammad222PR](https://github.com/Mohammad222PR). * 🌐 Add Korean translation for `docs/ko/docs/advanced/sub-applications.md`. PR [#4543](https://github.com/fastapi/fastapi/pull/4543) by [@NinaHwang](https://github.com/NinaHwang). * 🌐 Add Ukrainian translation for `docs/uk/docs/tutorial/schema-extra-example.md`. PR [#13769](https://github.com/fastapi/fastapi/pull/13769) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). From 590abc4b9634fa8363cfec85487bb8825520a7e3 Mon Sep 17 00:00:00 2001 From: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> Date: Tue, 17 Jun 2025 09:42:41 +0200 Subject: [PATCH 35/65] =?UTF-8?q?=F0=9F=93=9D=20Clarify=20the=20middleware?= =?UTF-8?q?=20execution=20order=20in=20docs=20(#13699)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/tutorial/middleware.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/en/docs/tutorial/middleware.md b/docs/en/docs/tutorial/middleware.md index 4f7980165..b7c03a319 100644 --- a/docs/en/docs/tutorial/middleware.md +++ b/docs/en/docs/tutorial/middleware.md @@ -65,6 +65,29 @@ Here we use Date: Tue, 17 Jun 2025 09:46:27 +0200 Subject: [PATCH 37/65] =?UTF-8?q?=F0=9F=90=9B=20Fix=20truncating=20the=20m?= =?UTF-8?q?odel's=20description=20with=20form=20feed=20(`\f`)=20character?= =?UTF-8?q?=20for=20Pydantic=20V2=20(#13698)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- fastapi/_compat.py | 5 +++ ...napi_model_description_trim_on_formfeed.py | 31 +++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 tests/test_openapi_model_description_trim_on_formfeed.py diff --git a/fastapi/_compat.py b/fastapi/_compat.py index c07e4a3b0..227ad837d 100644 --- a/fastapi/_compat.py +++ b/fastapi/_compat.py @@ -16,6 +16,7 @@ from typing import ( Tuple, Type, Union, + cast, ) from fastapi.exceptions import RequestErrorModel @@ -231,6 +232,10 @@ if PYDANTIC_V2: field_mapping, definitions = schema_generator.generate_definitions( inputs=inputs ) + for item_def in cast(Dict[str, Dict[str, Any]], definitions).values(): + if "description" in item_def: + item_description = cast(str, item_def["description"]).split("\f")[0] + item_def["description"] = item_description return field_mapping, definitions # type: ignore[return-value] def is_scalar_field(field: ModelField) -> bool: diff --git a/tests/test_openapi_model_description_trim_on_formfeed.py b/tests/test_openapi_model_description_trim_on_formfeed.py new file mode 100644 index 000000000..e18d4f6b2 --- /dev/null +++ b/tests/test_openapi_model_description_trim_on_formfeed.py @@ -0,0 +1,31 @@ +from fastapi import FastAPI +from fastapi.testclient import TestClient +from pydantic import BaseModel + +app = FastAPI() + + +class MyModel(BaseModel): + """ + A model with a form feed character in the title. + \f + Text after form feed character. + """ + + +@app.get("/foo") +def foo(v: MyModel): # pragma: no cover + pass + + +client = TestClient(app) + + +def test_openapi(): + response = client.get("/openapi.json") + assert response.status_code == 200, response.text + openapi_schema = response.json() + + assert openapi_schema["components"]["schemas"]["MyModel"]["description"] == ( + "A model with a form feed character in the title.\n" + ) From 6e11a2d1c4eaedd891708d808a5b4c5d127db5db Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 07:46:49 +0000 Subject: [PATCH 38/65] =?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 [skip ci] --- docs/en/docs/release-notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 57c7d27ee..fcca4f762 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -7,6 +7,10 @@ hide: ## Latest Changes +### Fixes + +* 🐛 Fix truncating the model's description with form feed (`\f`) character for Pydantic V2. PR [#13698](https://github.com/fastapi/fastapi/pull/13698) by [@YuriiMotov](https://github.com/YuriiMotov). + ### Upgrades * âŦ†ī¸ Update ReDoc to version 2.x. PR [#9700](https://github.com/fastapi/fastapi/pull/9700) by [@joakimnordling](https://github.com/joakimnordling). From 7c04182724f87e78c39d18d63803ee0108d159f6 Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Tue, 17 Jun 2025 10:50:19 +0300 Subject: [PATCH 39/65] =?UTF-8?q?=F0=9F=94=A8=20Resolve=20Pydantic=20depre?= =?UTF-8?q?cation=20warnings=20in=20internal=20script=20(#13696)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Emmanuel Ferdman --- scripts/label_approved.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/label_approved.py b/scripts/label_approved.py index 271444504..81de92efb 100644 --- a/scripts/label_approved.py +++ b/scripts/label_approved.py @@ -27,7 +27,7 @@ if settings.debug: logging.basicConfig(level=logging.DEBUG) else: logging.basicConfig(level=logging.INFO) -logging.debug(f"Using config: {settings.json()}") +logging.debug(f"Using config: {settings.model_dump_json()}") g = Github(settings.token.get_secret_value()) repo = g.get_repo(settings.github_repository) for pr in repo.get_pulls(state="open"): @@ -48,7 +48,7 @@ for pr in repo.get_pulls(state="open"): ] config = settings.config or default_config for approved_label, conf in config.items(): - logging.debug(f"Processing config: {conf.json()}") + logging.debug(f"Processing config: {conf.model_dump_json()}") if conf.await_label is None or (conf.await_label in pr_label_by_name): logging.debug(f"Processable PR: {pr.number}") if len(approved_reviews) >= conf.number: From 7dc9901f358f1097535fe5c5500a14edbfa34268 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 07:50:39 +0000 Subject: [PATCH 40/65] =?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 [skip ci] --- 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 fcca4f762..a561108a9 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -56,6 +56,7 @@ hide: ### Internal +* 🔨 Resolve Pydantic deprecation warnings in internal script. PR [#13696](https://github.com/fastapi/fastapi/pull/13696) by [@emmanuel-ferdman](https://github.com/emmanuel-ferdman). * 🔧 Update sponsors: remove Porter. PR [#13783](https://github.com/fastapi/fastapi/pull/13783) by [@tiangolo](https://github.com/tiangolo). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13781](https://github.com/fastapi/fastapi/pull/13781) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). * âŦ† [pre-commit.ci] pre-commit autoupdate. PR [#13757](https://github.com/fastapi/fastapi/pull/13757) by [@pre-commit-ci[bot]](https://github.com/apps/pre-commit-ci). From 97fdbdd0d8b3e24b3d850865033f6746ee13f82c Mon Sep 17 00:00:00 2001 From: Timon Date: Tue, 17 Jun 2025 10:05:34 +0200 Subject: [PATCH 41/65] =?UTF-8?q?=F0=9F=93=9D=20Update=20exclude-parameter?= =?UTF-8?q?s-from-openapi=20documentation=20links=20(#13600)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi/applications.py | 18 +++++++++--------- fastapi/routing.py | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/fastapi/applications.py b/fastapi/applications.py index 6d427cdc2..194f088cd 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -748,7 +748,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -1720,7 +1720,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2093,7 +2093,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2471,7 +2471,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2849,7 +2849,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3222,7 +3222,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3595,7 +3595,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3968,7 +3968,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -4346,7 +4346,7 @@ class FastAPI(Starlette): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, diff --git a/fastapi/routing.py b/fastapi/routing.py index 457481e32..bf61a65c1 100644 --- a/fastapi/routing.py +++ b/fastapi/routing.py @@ -814,7 +814,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -1626,7 +1626,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2003,7 +2003,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2385,7 +2385,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -2767,7 +2767,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3144,7 +3144,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3521,7 +3521,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -3903,7 +3903,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, @@ -4285,7 +4285,7 @@ class APIRouter(routing.Router): This affects the generated OpenAPI (e.g. visible at `/docs`). Read more about it in the - [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-from-openapi). + [FastAPI docs for Query Parameters and String Validations](https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#exclude-parameters-from-openapi). """ ), ] = True, From 10bf65f27288db90a2b6ab2f1e37368473b6d004 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 08:05:54 +0000 Subject: [PATCH 42/65] =?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 [skip ci] --- 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 a561108a9..988791fbe 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -17,6 +17,7 @@ hide: ### Docs +* 📝 Update exclude-parameters-from-openapi documentation links. PR [#13600](https://github.com/fastapi/fastapi/pull/13600) by [@timonrieger](https://github.com/timonrieger). * 📝 Clarify the middleware execution order in docs. PR [#13699](https://github.com/fastapi/fastapi/pull/13699) by [@YuriiMotov](https://github.com/YuriiMotov). * 🍱 Update Drawio diagrams SVGs, single file per diagram, sans-serif font. PR [#13706](https://github.com/fastapi/fastapi/pull/13706) by [@tiangolo](https://github.com/tiangolo). * 📝 Update docs for "Help FastAPI", simplify and reduce "sponsor" section. PR [#13670](https://github.com/fastapi/fastapi/pull/13670) by [@tiangolo](https://github.com/tiangolo). From 6d78b228d8ffa7fe977bb2ccc25f0743af361f51 Mon Sep 17 00:00:00 2001 From: Swastik Pradhan <66001704+swastikpradhan1999@users.noreply.github.com> Date: Tue, 17 Jun 2025 15:47:08 +0530 Subject: [PATCH 43/65] =?UTF-8?q?=F0=9F=93=9D=20Clarify=20guidance=20on=20?= =?UTF-8?q?using=20`async=20def`=20without=20`await`=20(#13642)?= 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/async.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/docs/async.md b/docs/en/docs/async.md index 63bd8ca68..8207ec480 100644 --- a/docs/en/docs/async.md +++ b/docs/en/docs/async.md @@ -40,7 +40,7 @@ def results(): --- -If your application (somehow) doesn't have to communicate with anything else and wait for it to respond, use `async def`. +If your application (somehow) doesn't have to communicate with anything else and wait for it to respond, use `async def`, even if you don't need to use `await` inside. --- From 1daf9fddfdf81515e6cab84327cd4b4e89e3fc15 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:17:31 +0000 Subject: [PATCH 44/65] =?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 [skip ci] --- 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 988791fbe..9dff69cbb 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -17,6 +17,7 @@ hide: ### Docs +* 📝 Clarify guidance on using `async def` without `await`. PR [#13642](https://github.com/fastapi/fastapi/pull/13642) by [@swastikpradhan1999](https://github.com/swastikpradhan1999). * 📝 Update exclude-parameters-from-openapi documentation links. PR [#13600](https://github.com/fastapi/fastapi/pull/13600) by [@timonrieger](https://github.com/timonrieger). * 📝 Clarify the middleware execution order in docs. PR [#13699](https://github.com/fastapi/fastapi/pull/13699) by [@YuriiMotov](https://github.com/YuriiMotov). * 🍱 Update Drawio diagrams SVGs, single file per diagram, sans-serif font. PR [#13706](https://github.com/fastapi/fastapi/pull/13706) by [@tiangolo](https://github.com/tiangolo). From b4524145e66b2ab873769bbbb8b1cbd13bf4ba78 Mon Sep 17 00:00:00 2001 From: Peter Date: Tue, 17 Jun 2025 12:18:00 +0200 Subject: [PATCH 45/65] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Fix=20typo=20in=20do?= =?UTF-8?q?cstring=20(#13532)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi/applications.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi/applications.py b/fastapi/applications.py index 194f088cd..7a1db2532 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -4425,7 +4425,7 @@ class FastAPI(Starlette): app = FastAPI() - @app.put("/items/{item_id}") + @app.trace("/items/{item_id}") def trace_item(item_id: str): return None ``` From 4e4715b1318931dc69292255b449bfc026f75486 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:18:31 +0000 Subject: [PATCH 46/65] =?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 [skip ci] --- 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 9dff69cbb..ac4003d84 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -17,6 +17,7 @@ hide: ### Docs +* âœī¸ Fix typo in docstring. PR [#13532](https://github.com/fastapi/fastapi/pull/13532) by [@comp64](https://github.com/comp64). * 📝 Clarify guidance on using `async def` without `await`. PR [#13642](https://github.com/fastapi/fastapi/pull/13642) by [@swastikpradhan1999](https://github.com/swastikpradhan1999). * 📝 Update exclude-parameters-from-openapi documentation links. PR [#13600](https://github.com/fastapi/fastapi/pull/13600) by [@timonrieger](https://github.com/timonrieger). * 📝 Clarify the middleware execution order in docs. PR [#13699](https://github.com/fastapi/fastapi/pull/13699) by [@YuriiMotov](https://github.com/YuriiMotov). From da4605b039d838a849b4edf0e57cf10230eaf956 Mon Sep 17 00:00:00 2001 From: Valentyn Date: Tue, 17 Jun 2025 06:24:10 -0400 Subject: [PATCH 47/65] =?UTF-8?q?=E2=9C=85=20Simplify=20tests=20for=20`val?= =?UTF-8?q?idate=5Fresponse=5Frecursive`=20(#13507)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Valentyn Druzhynin --- .../{app_pv1.py => app.py} | 12 +++-- .../app_pv2.py | 51 ------------------- ...py => test_validate_response_recursive.py} | 5 +- .../test_validate_response_recursive_pv2.py | 33 ------------ 4 files changed, 9 insertions(+), 92 deletions(-) rename tests/test_validate_response_recursive/{app_pv1.py => app.py} (79%) delete mode 100644 tests/test_validate_response_recursive/app_pv2.py rename tests/test_validate_response_recursive/{test_validate_response_recursive_pv1.py => test_validate_response_recursive.py} (90%) delete mode 100644 tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py diff --git a/tests/test_validate_response_recursive/app_pv1.py b/tests/test_validate_response_recursive/app.py similarity index 79% rename from tests/test_validate_response_recursive/app_pv1.py rename to tests/test_validate_response_recursive/app.py index 4cfc4b3ee..d23d27980 100644 --- a/tests/test_validate_response_recursive/app_pv1.py +++ b/tests/test_validate_response_recursive/app.py @@ -1,6 +1,7 @@ from typing import List from fastapi import FastAPI +from fastapi._compat import PYDANTIC_V2 from pydantic import BaseModel app = FastAPI() @@ -11,9 +12,6 @@ class RecursiveItem(BaseModel): name: str -RecursiveItem.update_forward_refs() - - class RecursiveSubitemInSubmodel(BaseModel): sub_items2: List["RecursiveItemViaSubmodel"] = [] name: str @@ -24,7 +22,13 @@ class RecursiveItemViaSubmodel(BaseModel): name: str -RecursiveSubitemInSubmodel.update_forward_refs() +if PYDANTIC_V2: + RecursiveItem.model_rebuild() + RecursiveSubitemInSubmodel.model_rebuild() + RecursiveItemViaSubmodel.model_rebuild() +else: + RecursiveItem.update_forward_refs() + RecursiveSubitemInSubmodel.update_forward_refs() @app.get("/items/recursive", response_model=RecursiveItem) diff --git a/tests/test_validate_response_recursive/app_pv2.py b/tests/test_validate_response_recursive/app_pv2.py deleted file mode 100644 index 8c93a8349..000000000 --- a/tests/test_validate_response_recursive/app_pv2.py +++ /dev/null @@ -1,51 +0,0 @@ -from typing import List - -from fastapi import FastAPI -from pydantic import BaseModel - -app = FastAPI() - - -class RecursiveItem(BaseModel): - sub_items: List["RecursiveItem"] = [] - name: str - - -RecursiveItem.model_rebuild() - - -class RecursiveSubitemInSubmodel(BaseModel): - sub_items2: List["RecursiveItemViaSubmodel"] = [] - name: str - - -class RecursiveItemViaSubmodel(BaseModel): - sub_items1: List[RecursiveSubitemInSubmodel] = [] - name: str - - -RecursiveSubitemInSubmodel.model_rebuild() -RecursiveItemViaSubmodel.model_rebuild() - - -@app.get("/items/recursive", response_model=RecursiveItem) -def get_recursive(): - return {"name": "item", "sub_items": [{"name": "subitem", "sub_items": []}]} - - -@app.get("/items/recursive-submodel", response_model=RecursiveItemViaSubmodel) -def get_recursive_submodel(): - return { - "name": "item", - "sub_items1": [ - { - "name": "subitem", - "sub_items2": [ - { - "name": "subsubitem", - "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}], - } - ], - } - ], - } diff --git a/tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py b/tests/test_validate_response_recursive/test_validate_response_recursive.py similarity index 90% rename from tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py rename to tests/test_validate_response_recursive/test_validate_response_recursive.py index de578ae03..21a299ab8 100644 --- a/tests/test_validate_response_recursive/test_validate_response_recursive_pv1.py +++ b/tests/test_validate_response_recursive/test_validate_response_recursive.py @@ -1,12 +1,9 @@ from fastapi.testclient import TestClient -from ..utils import needs_pydanticv1 +from .app import app -@needs_pydanticv1 def test_recursive(): - from .app_pv1 import app - client = TestClient(app) response = client.get("/items/recursive") assert response.status_code == 200, response.text diff --git a/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py b/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py deleted file mode 100644 index 7d45e7fe4..000000000 --- a/tests/test_validate_response_recursive/test_validate_response_recursive_pv2.py +++ /dev/null @@ -1,33 +0,0 @@ -from fastapi.testclient import TestClient - -from ..utils import needs_pydanticv2 - - -@needs_pydanticv2 -def test_recursive(): - from .app_pv2 import app - - client = TestClient(app) - response = client.get("/items/recursive") - assert response.status_code == 200, response.text - assert response.json() == { - "sub_items": [{"name": "subitem", "sub_items": []}], - "name": "item", - } - - response = client.get("/items/recursive-submodel") - assert response.status_code == 200, response.text - assert response.json() == { - "name": "item", - "sub_items1": [ - { - "name": "subitem", - "sub_items2": [ - { - "name": "subsubitem", - "sub_items1": [{"name": "subsubsubitem", "sub_items2": []}], - } - ], - } - ], - } From 45fefe88cfecdae7798a56c7294640205ad21831 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:25:13 +0000 Subject: [PATCH 48/65] =?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 [skip ci] --- docs/en/docs/release-notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index ac4003d84..9aa0f796d 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -11,6 +11,10 @@ hide: * 🐛 Fix truncating the model's description with form feed (`\f`) character for Pydantic V2. PR [#13698](https://github.com/fastapi/fastapi/pull/13698) by [@YuriiMotov](https://github.com/YuriiMotov). +### Refactors + +* ✅ Simplify tests for `validate_response_recursive`. PR [#13507](https://github.com/fastapi/fastapi/pull/13507) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). + ### Upgrades * âŦ†ī¸ Update ReDoc to version 2.x. PR [#9700](https://github.com/fastapi/fastapi/pull/9700) by [@joakimnordling](https://github.com/joakimnordling). From 85a2eed88836dde7d6c8e275c2abc36f4572e78d Mon Sep 17 00:00:00 2001 From: Valentyn Date: Tue, 17 Jun 2025 06:25:20 -0400 Subject: [PATCH 49/65] =?UTF-8?q?=E2=9C=85=20Simplify=20tests=20for=20`set?= =?UTF-8?q?tings`=20(#13505)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Valentyn Druzhynin --- .../test_settings/test_tutorial001.py | 20 +++++++++++++++---- .../test_settings/test_tutorial001_pv1.py | 19 ------------------ 2 files changed, 16 insertions(+), 23 deletions(-) delete mode 100644 tests/test_tutorial/test_settings/test_tutorial001_pv1.py diff --git a/tests/test_tutorial/test_settings/test_tutorial001.py b/tests/test_tutorial/test_settings/test_tutorial001.py index eb30dbcee..92a5782d4 100644 --- a/tests/test_tutorial/test_settings/test_tutorial001.py +++ b/tests/test_tutorial/test_settings/test_tutorial001.py @@ -1,14 +1,26 @@ +import importlib + +import pytest from fastapi.testclient import TestClient from pytest import MonkeyPatch -from ...utils import needs_pydanticv2 +from ...utils import needs_pydanticv1, needs_pydanticv2 -@needs_pydanticv2 -def test_settings(monkeypatch: MonkeyPatch): +@pytest.fixture( + name="app", + params=[ + pytest.param("tutorial001", marks=needs_pydanticv2), + pytest.param("tutorial001_pv1", marks=needs_pydanticv1), + ], +) +def get_app(request: pytest.FixtureRequest, monkeypatch: MonkeyPatch): monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com") - from docs_src.settings.tutorial001 import app + mod = importlib.import_module(f"docs_src.settings.{request.param}") + return mod.app + +def test_settings(app): client = TestClient(app) response = client.get("/info") assert response.status_code == 200, response.text diff --git a/tests/test_tutorial/test_settings/test_tutorial001_pv1.py b/tests/test_tutorial/test_settings/test_tutorial001_pv1.py deleted file mode 100644 index e4659de66..000000000 --- a/tests/test_tutorial/test_settings/test_tutorial001_pv1.py +++ /dev/null @@ -1,19 +0,0 @@ -from fastapi.testclient import TestClient -from pytest import MonkeyPatch - -from ...utils import needs_pydanticv1 - - -@needs_pydanticv1 -def test_settings(monkeypatch: MonkeyPatch): - monkeypatch.setenv("ADMIN_EMAIL", "admin@example.com") - from docs_src.settings.tutorial001_pv1 import app - - client = TestClient(app) - response = client.get("/info") - assert response.status_code == 200, response.text - assert response.json() == { - "app_name": "Awesome API", - "admin_email": "admin@example.com", - "items_per_user": 50, - } From 01c3ad2eb26fd029e5bebb3bd7eded3e56ae4a29 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:25:45 +0000 Subject: [PATCH 50/65] =?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 [skip ci] --- 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 9aa0f796d..2f7bda4b2 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -13,6 +13,7 @@ hide: ### Refactors +* ✅ Simplify tests for `settings`. PR [#13505](https://github.com/fastapi/fastapi/pull/13505) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * ✅ Simplify tests for `validate_response_recursive`. PR [#13507](https://github.com/fastapi/fastapi/pull/13507) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). ### Upgrades From 3f908a47d9cd7f58ec12137626d74a82be93d350 Mon Sep 17 00:00:00 2001 From: Diego Fioravanti Date: Tue, 17 Jun 2025 12:36:59 +0200 Subject: [PATCH 51/65] =?UTF-8?q?=F0=9F=93=9D=20Clarify=20in=20CORS=20docs?= =?UTF-8?q?=20that=20wildcards=20and=20credentials=20are=20mutually=20excl?= =?UTF-8?q?usive=20(#9829)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sofie Van Landeghem Co-authored-by: Alejandra <90076947+alejsdev@users.noreply.github.com> Co-authored-by: Michael Jones Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: User Co-authored-by: SebastiÃĄn Ramírez --- docs/en/docs/tutorial/cors.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/en/docs/tutorial/cors.md b/docs/en/docs/tutorial/cors.md index cf31cfcf5..5ca4437b3 100644 --- a/docs/en/docs/tutorial/cors.md +++ b/docs/en/docs/tutorial/cors.md @@ -57,7 +57,10 @@ The following arguments are supported: * `allow_origin_regex` - A regex string to match against origins that should be permitted to make cross-origin requests. e.g. `'https://.*\.example\.org'`. * `allow_methods` - A list of HTTP methods that should be allowed for cross-origin requests. Defaults to `['GET']`. You can use `['*']` to allow all standard methods. * `allow_headers` - A list of HTTP request headers that should be supported for cross-origin requests. Defaults to `[]`. You can use `['*']` to allow all headers. The `Accept`, `Accept-Language`, `Content-Language` and `Content-Type` headers are always allowed for simple CORS requests. -* `allow_credentials` - Indicate that cookies should be supported for cross-origin requests. Defaults to `False`. Also, `allow_origins` cannot be set to `['*']` for credentials to be allowed, origins must be specified. +* `allow_credentials` - Indicate that cookies should be supported for cross-origin requests. Defaults to `False`. + + None of `allow_origins`, `allow_methods` and `allow_headers` can be set to `['*']` if `allow_credentials` is set to `True`. All of them must be explicitly specified. + * `expose_headers` - Indicate any response headers that should be made accessible to the browser. Defaults to `[]`. * `max_age` - Sets a maximum time in seconds for browsers to cache CORS responses. Defaults to `600`. From 6b5b26fa61ee1f710467e6f8c8452a7e93104eae Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:37:30 +0000 Subject: [PATCH 52/65] =?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 [skip ci] --- 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 2f7bda4b2..3f20b8618 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -22,6 +22,7 @@ hide: ### Docs +* 📝 Clarify in CORS docs that wildcards and credentials are mutually exclusive. PR [#9829](https://github.com/fastapi/fastapi/pull/9829) by [@dfioravanti](https://github.com/dfioravanti). * âœī¸ Fix typo in docstring. PR [#13532](https://github.com/fastapi/fastapi/pull/13532) by [@comp64](https://github.com/comp64). * 📝 Clarify guidance on using `async def` without `await`. PR [#13642](https://github.com/fastapi/fastapi/pull/13642) by [@swastikpradhan1999](https://github.com/swastikpradhan1999). * 📝 Update exclude-parameters-from-openapi documentation links. PR [#13600](https://github.com/fastapi/fastapi/pull/13600) by [@timonrieger](https://github.com/timonrieger). From 30b9dfb11cbef5257cd0006d73884a3c1920b7d4 Mon Sep 17 00:00:00 2001 From: oogee Date: Tue, 17 Jun 2025 05:41:59 -0500 Subject: [PATCH 53/65] =?UTF-8?q?=F0=9F=9A=B8=20Set=20format=20to=20passwo?= =?UTF-8?q?rd=20for=20fields=20`password`=20and=20`client=5Fsecret`=20in?= =?UTF-8?q?=20`OAuth2PasswordRequestForm`,=20make=20docs=20show=20password?= =?UTF-8?q?=20fields=20for=20passwords=20(#11032)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- fastapi/security/oauth2.py | 4 ++-- .../test_tutorial/test_security/test_tutorial003.py | 13 +++++++++++-- .../test_tutorial/test_security/test_tutorial005.py | 13 +++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/fastapi/security/oauth2.py b/fastapi/security/oauth2.py index 5ffad5986..42ace07a3 100644 --- a/fastapi/security/oauth2.py +++ b/fastapi/security/oauth2.py @@ -85,7 +85,7 @@ class OAuth2PasswordRequestForm: ], password: Annotated[ str, - Form(), + Form(json_schema_extra={"format": "password"}), Doc( """ `password` string. The OAuth2 spec requires the exact field name @@ -130,7 +130,7 @@ class OAuth2PasswordRequestForm: ] = None, client_secret: Annotated[ Union[str, None], - Form(), + Form(json_schema_extra={"format": "password"}), Doc( """ If there's a `client_password` (and a `client_id`), they can be sent diff --git a/tests/test_tutorial/test_security/test_tutorial003.py b/tests/test_tutorial/test_security/test_tutorial003.py index 37fc2618f..2bbb2e851 100644 --- a/tests/test_tutorial/test_security/test_tutorial003.py +++ b/tests/test_tutorial/test_security/test_tutorial003.py @@ -163,7 +163,11 @@ def test_openapi_schema(client: TestClient): } ), "username": {"title": "Username", "type": "string"}, - "password": {"title": "Password", "type": "string"}, + "password": { + "title": "Password", + "type": "string", + "format": "password", + }, "scope": {"title": "Scope", "type": "string", "default": ""}, "client_id": IsDict( { @@ -179,11 +183,16 @@ def test_openapi_schema(client: TestClient): { "title": "Client Secret", "anyOf": [{"type": "string"}, {"type": "null"}], + "format": "password", } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"title": "Client Secret", "type": "string"} + { + "title": "Client Secret", + "type": "string", + "format": "password", + } ), }, }, diff --git a/tests/test_tutorial/test_security/test_tutorial005.py b/tests/test_tutorial/test_security/test_tutorial005.py index 88c3d7815..ad644d61b 100644 --- a/tests/test_tutorial/test_security/test_tutorial005.py +++ b/tests/test_tutorial/test_security/test_tutorial005.py @@ -377,7 +377,11 @@ def test_openapi_schema(mod: ModuleType): } ), "username": {"title": "Username", "type": "string"}, - "password": {"title": "Password", "type": "string"}, + "password": { + "title": "Password", + "type": "string", + "format": "password", + }, "scope": {"title": "Scope", "type": "string", "default": ""}, "client_id": IsDict( { @@ -393,11 +397,16 @@ def test_openapi_schema(mod: ModuleType): { "title": "Client Secret", "anyOf": [{"type": "string"}, {"type": "null"}], + "format": "password", } ) | IsDict( # TODO: remove when deprecating Pydantic v1 - {"title": "Client Secret", "type": "string"} + { + "title": "Client Secret", + "type": "string", + "format": "password", + } ), }, }, From 64834d4a601bb9c9b648a737a88582a3edded297 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:42:46 +0000 Subject: [PATCH 54/65] =?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 [skip ci] --- 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 3f20b8618..cf73b0d47 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -13,6 +13,7 @@ hide: ### Refactors +* 🚸 Set format to password for fields `password` and `client_secret` in `OAuth2PasswordRequestForm`, make docs show password fields for passwords. PR [#11032](https://github.com/fastapi/fastapi/pull/11032) by [@Thodoris1999](https://github.com/Thodoris1999). * ✅ Simplify tests for `settings`. PR [#13505](https://github.com/fastapi/fastapi/pull/13505) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * ✅ Simplify tests for `validate_response_recursive`. PR [#13507](https://github.com/fastapi/fastapi/pull/13507) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). From aebff5006fee3f45c634861ccd15885058ba0965 Mon Sep 17 00:00:00 2001 From: Salar Nosrati-Ershad Date: Tue, 17 Jun 2025 14:16:49 +0330 Subject: [PATCH 55/65] =?UTF-8?q?=E2=9C=A8=20Add=20`refreshUrl`=20paramete?= =?UTF-8?q?r=20in=20`OAuth2PasswordBearer`=20(#11460)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Salar Nosrati-Ershad Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Alejandra <90076947+alejsdev@users.noreply.github.com> Co-authored-by: Motov Yurii <109919500+YuriiMotov@users.noreply.github.com> --- fastapi/security/oauth2.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/fastapi/security/oauth2.py b/fastapi/security/oauth2.py index 42ace07a3..88e394db1 100644 --- a/fastapi/security/oauth2.py +++ b/fastapi/security/oauth2.py @@ -457,11 +457,26 @@ class OAuth2PasswordBearer(OAuth2): """ ), ] = True, + refreshUrl: Annotated[ + Optional[str], + Doc( + """ + The URL to refresh the token and obtain a new one. + """ + ), + ] = None, ): if not scopes: scopes = {} flows = OAuthFlowsModel( - password=cast(Any, {"tokenUrl": tokenUrl, "scopes": scopes}) + password=cast( + Any, + { + "tokenUrl": tokenUrl, + "refreshUrl": refreshUrl, + "scopes": scopes, + }, + ) ) super().__init__( flows=flows, From 9957956ef8be8f5e4947f3bc201bd95491fb4680 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:47:13 +0000 Subject: [PATCH 56/65] =?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 [skip ci] --- 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 cf73b0d47..341baf77f 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -13,6 +13,7 @@ hide: ### Refactors +* ✨ Add `refreshUrl` parameter in `OAuth2PasswordBearer`. PR [#11460](https://github.com/fastapi/fastapi/pull/11460) by [@snosratiershad](https://github.com/snosratiershad). * 🚸 Set format to password for fields `password` and `client_secret` in `OAuth2PasswordRequestForm`, make docs show password fields for passwords. PR [#11032](https://github.com/fastapi/fastapi/pull/11032) by [@Thodoris1999](https://github.com/Thodoris1999). * ✅ Simplify tests for `settings`. PR [#13505](https://github.com/fastapi/fastapi/pull/13505) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). * ✅ Simplify tests for `validate_response_recursive`. PR [#13507](https://github.com/fastapi/fastapi/pull/13507) by [@valentinDruzhinin](https://github.com/valentinDruzhinin). From dfe9dde982fe63261aecc13f564670b82011846c Mon Sep 17 00:00:00 2001 From: Gabriel Date: Tue, 17 Jun 2025 06:48:10 -0400 Subject: [PATCH 57/65] =?UTF-8?q?=F0=9F=93=9D=20Add=20annotations=20to=20H?= =?UTF-8?q?TTP=20middleware=20example=20(#11530)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sofie Van Landeghem Co-authored-by: SebastiÃĄn Ramírez --- fastapi/applications.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/fastapi/applications.py b/fastapi/applications.py index 7a1db2532..05c7bd2be 100644 --- a/fastapi/applications.py +++ b/fastapi/applications.py @@ -4515,14 +4515,17 @@ class FastAPI(Starlette): ```python import time + from typing import Awaitable, Callable - from fastapi import FastAPI, Request + from fastapi import FastAPI, Request, Response app = FastAPI() @app.middleware("http") - async def add_process_time_header(request: Request, call_next): + async def add_process_time_header( + request: Request, call_next: Callable[[Request], Awaitable[Response]] + ) -> Response: start_time = time.time() response = await call_next(request) process_time = time.time() - start_time From cdf6b315055a6a10c5fa86a248a7398d310082c4 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 10:48:39 +0000 Subject: [PATCH 58/65] =?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 [skip ci] --- 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 341baf77f..77cf98cbc 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -24,6 +24,7 @@ hide: ### Docs +* 📝 Add annotations to HTTP middleware example. PR [#11530](https://github.com/fastapi/fastapi/pull/11530) by [@Kilo59](https://github.com/Kilo59). * 📝 Clarify in CORS docs that wildcards and credentials are mutually exclusive. PR [#9829](https://github.com/fastapi/fastapi/pull/9829) by [@dfioravanti](https://github.com/dfioravanti). * âœī¸ Fix typo in docstring. PR [#13532](https://github.com/fastapi/fastapi/pull/13532) by [@comp64](https://github.com/comp64). * 📝 Clarify guidance on using `async def` without `await`. PR [#13642](https://github.com/fastapi/fastapi/pull/13642) by [@swastikpradhan1999](https://github.com/swastikpradhan1999). From 4734df1db89607c9579d2bb9795b02214e1e1d47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Tue, 17 Jun 2025 13:41:24 +0200 Subject: [PATCH 59/65] =?UTF-8?q?=F0=9F=94=96=20Release=20version=200.115.?= =?UTF-8?q?13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 2 ++ fastapi/__init__.py | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 77cf98cbc..f21f3e101 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -7,6 +7,8 @@ hide: ## Latest Changes +## 0.115.13 + ### Fixes * 🐛 Fix truncating the model's description with form feed (`\f`) character for Pydantic V2. PR [#13698](https://github.com/fastapi/fastapi/pull/13698) by [@YuriiMotov](https://github.com/YuriiMotov). diff --git a/fastapi/__init__.py b/fastapi/__init__.py index 80eb783da..1768d0204 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.115.12" +__version__ = "0.115.13" from starlette import status as status From 7d9195a248a7bf29a1bc700a49399804b7b7ea00 Mon Sep 17 00:00:00 2001 From: Nolan Di Mare Sullivan Date: Tue, 17 Jun 2025 04:53:56 -0700 Subject: [PATCH 60/65] =?UTF-8?q?=F0=9F=93=9D=20Update=20Speakeasy=20URL?= =?UTF-8?q?=20to=20Speakeasy=20Sandbox=20(#13697)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- docs/de/docs/advanced/generate-clients.md | 2 +- docs/en/data/sponsors.yml | 2 +- docs/en/docs/advanced/generate-clients.md | 2 +- docs/es/docs/advanced/generate-clients.md | 2 +- docs/pt/docs/advanced/generate-clients.md | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 44fa2d3ac..ab5143084 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ The key features are: - + diff --git a/docs/de/docs/advanced/generate-clients.md b/docs/de/docs/advanced/generate-clients.md index 38a69031c..f491d29af 100644 --- a/docs/de/docs/advanced/generate-clients.md +++ b/docs/de/docs/advanced/generate-clients.md @@ -20,7 +20,7 @@ Einige von diesen ✨ [**sponsern FastAPI**](../help-fastapi.md#den-autor-sponse Und es zeigt deren wahres Engagement fÃŧr FastAPI und seine **Community** (Sie), da diese Ihnen nicht nur einen **guten Service** bieten mÃļchten, sondern auch sicherstellen mÃļchten, dass Sie Ãŧber ein **gutes und gesundes Framework** verfÃŧgen, FastAPI. 🙇 -Beispielsweise kÃļnnten Sie Speakeasy ausprobieren. +Beispielsweise kÃļnnten Sie Speakeasy ausprobieren. Es gibt auch mehrere andere Unternehmen, welche ähnliche Dienste anbieten und die Sie online suchen und finden kÃļnnen. 🤓 diff --git a/docs/en/data/sponsors.yml b/docs/en/data/sponsors.yml index b06e51477..f712b6179 100644 --- a/docs/en/data/sponsors.yml +++ b/docs/en/data/sponsors.yml @@ -30,7 +30,7 @@ silver: - url: https://databento.com/ title: Pay as you go for market data img: https://fastapi.tiangolo.com/img/sponsors/databento.svg - - url: https://speakeasy.com?utm_source=fastapi+repo&utm_medium=github+sponsorship + - url: https://speakeasy.com/editor?utm_source=fastapi+repo&utm_medium=github+sponsorship title: SDKs for your API | Speakeasy img: https://fastapi.tiangolo.com/img/sponsors/speakeasy.png - url: https://www.svix.com/ diff --git a/docs/en/docs/advanced/generate-clients.md b/docs/en/docs/advanced/generate-clients.md index b2aef5037..55e6a08b1 100644 --- a/docs/en/docs/advanced/generate-clients.md +++ b/docs/en/docs/advanced/generate-clients.md @@ -22,7 +22,7 @@ And it shows their true commitment to FastAPI and its **community** (you), as th For example, you might want to try: -* Speakeasy +* Speakeasy * Stainless * liblab diff --git a/docs/es/docs/advanced/generate-clients.md b/docs/es/docs/advanced/generate-clients.md index bf2e5cb4f..b664bceac 100644 --- a/docs/es/docs/advanced/generate-clients.md +++ b/docs/es/docs/advanced/generate-clients.md @@ -22,7 +22,7 @@ Y muestra su verdadero compromiso con FastAPI y su **comunidad** (tÃē), ya que n Por ejemplo, podrías querer probar: -* Speakeasy +* Speakeasy * Stainless * liblab diff --git a/docs/pt/docs/advanced/generate-clients.md b/docs/pt/docs/advanced/generate-clients.md index 04d7c0071..dc6b29511 100644 --- a/docs/pt/docs/advanced/generate-clients.md +++ b/docs/pt/docs/advanced/generate-clients.md @@ -22,7 +22,7 @@ E isso mostra o verdadeiro compromisso deles com o FastAPI e sua **comunidade** Por exemplo, vocÃĒ pode querer experimentar: -* Speakeasy +* Speakeasy * Stainless * liblab From ac160885e15627073ba950c4a5203e3d168dee05 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 17 Jun 2025 11:54:19 +0000 Subject: [PATCH 61/65] =?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 [skip ci] --- docs/en/docs/release-notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index f21f3e101..683266f96 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -7,6 +7,10 @@ hide: ## Latest Changes +### Docs + +* 📝 Update Speakeasy URL to Speakeasy Sandbox. PR [#13697](https://github.com/fastapi/fastapi/pull/13697) by [@ndimares](https://github.com/ndimares). + ## 0.115.13 ### Fixes From b2923282caaf47d7af13991d3cae74b5c042b4b3 Mon Sep 17 00:00:00 2001 From: Naves <79222417+NavesSapnis@users.noreply.github.com> Date: Wed, 18 Jun 2025 11:40:59 +0300 Subject: [PATCH 62/65] =?UTF-8?q?=F0=9F=8C=90=20Add=20Russian=20translatio?= =?UTF-8?q?n=20for=20`docs/ru/docs/advanced/index.md`=20(#13797)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add Russian Translation for `docs/ru/docs/advanced/index.md` * 🎨 [pre-commit.ci] Auto format from pre-commit.com hooks --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/ru/docs/advanced/index.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 docs/ru/docs/advanced/index.md diff --git a/docs/ru/docs/advanced/index.md b/docs/ru/docs/advanced/index.md new file mode 100644 index 000000000..b5cb733e7 --- /dev/null +++ b/docs/ru/docs/advanced/index.md @@ -0,0 +1,21 @@ +# Đ Đ°ŅŅˆĐ¸Ņ€ĐĩĐŊĐŊĐžĐĩ Ņ€ŅƒĐēĐžĐ˛ĐžĐ´ŅŅ‚Đ˛Đž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ + +## ДоĐŋĐžĐģĐŊĐ¸Ņ‚ĐĩĐģҌĐŊŅ‹Đĩ вОСĐŧĐžĐļĐŊĐžŅŅ‚Đ¸ + +ĐžŅĐŊОвĐŊĐžĐĩ [ĐŖŅ‡ĐĩĐąĐŊиĐē - Đ ŅƒĐēĐžĐ˛ĐžĐ´ŅŅ‚Đ˛Đž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ](../tutorial/index.md){.internal-link target=_blank} Đ´ĐžĐģĐļĐŊĐž ĐąŅ‹Ņ‚ŅŒ Đ´ĐžŅŅ‚Đ°Ņ‚ĐžŅ‡ĐŊĐž, Ņ‡Ņ‚ĐžĐąŅ‹ ĐŋОСĐŊаĐēĐžĐŧĐ¸Ņ‚ŅŒ Đ˛Đ°Ņ ŅĐž Đ˛ŅĐĩĐŧи ĐžŅĐŊОвĐŊŅ‹Đŧи Ņ„ŅƒĐŊĐēŅ†Đ¸ŅĐŧи **FastAPI**. + +В ҁĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Ņ… Ņ€Đ°ĐˇĐ´ĐĩĐģĐ°Ņ… Đ˛Ņ‹ ŅƒĐ˛Đ¸Đ´Đ¸Ņ‚Đĩ Đ´Ņ€ŅƒĐŗĐ¸Đĩ Đ˛Đ°Ņ€Đ¸Đ°ĐŊ҂ҋ, ĐēĐžĐŊŅ„Đ¸ĐŗŅƒŅ€Đ°Ņ†Đ¸Đ¸ и Đ´ĐžĐŋĐžĐģĐŊĐ¸Ņ‚ĐĩĐģҌĐŊŅ‹Đĩ вОСĐŧĐžĐļĐŊĐžŅŅ‚Đ¸. + +/// tip + +ĐĄĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ Ņ€Đ°ĐˇĐ´ĐĩĐģŅ‹ **ĐŊĐĩ ĐžĐąŅĐˇĐ°Ņ‚ĐĩĐģҌĐŊĐž ŅĐ˛ĐģŅŅŽŅ‚ŅŅ "ĐŋŅ€ĐžĐ´Đ˛Đ¸ĐŊŅƒŅ‚Ņ‹Đŧи"**. + +И вĐŋĐžĐģĐŊĐĩ вОСĐŧĐžĐļĐŊĐž, Ņ‡Ņ‚Đž Đ´ĐģŅ Đ˛Đ°ŅˆĐĩĐŗĐž ҁĐģŅƒŅ‡Đ°Ņ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°ĐŊĐ¸Ņ Ņ€Đĩ҈ĐĩĐŊиĐĩ ĐŊĐ°Ņ…ĐžĐ´Đ¸Ņ‚ŅŅ в ОдĐŊĐžĐŧ иС ĐŊĐ¸Ņ…. + +/// + +## ĐĄĐŊĐ°Ņ‡Đ°Đģа ĐŋŅ€ĐžŅ‡Đ¸Ņ‚Đ°ĐšŅ‚Đĩ ĐŖŅ‡ĐĩĐąĐŊиĐē - Đ ŅƒĐēĐžĐ˛ĐžĐ´ŅŅ‚Đ˛Đž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ + +Đ’Ņ‹ Đ˛ŅĐĩ Đĩ҉Đĩ ĐŧĐžĐļĐĩŅ‚Đĩ Đ¸ŅĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ŅŒ йОĐģŅŒŅˆĐ¸ĐŊŅŅ‚Đ˛Đž Ņ„ŅƒĐŊĐēŅ†Đ¸Đš **FastAPI** ŅĐž СĐŊаĐŊĐ¸ŅĐŧи иС [ĐŖŅ‡ĐĩĐąĐŊиĐē - Đ ŅƒĐēĐžĐ˛ĐžĐ´ŅŅ‚Đ˛Đž ĐŋĐžĐģŅŒĐˇĐžĐ˛Đ°Ņ‚ĐĩĐģŅ](../tutorial/index.md){.internal-link target=_blank}. + +И ҁĐģĐĩĐ´ŅƒŅŽŅ‰Đ¸Đĩ Ņ€Đ°ĐˇĐ´ĐĩĐģŅ‹ ĐŋŅ€ĐĩĐ´ĐŋĐžĐģĐ°ĐŗĐ°ŅŽŅ‚, Ņ‡Ņ‚Đž Đ˛Ņ‹ ҃ĐļĐĩ ĐŋŅ€ĐžŅ‡Đ¸Ņ‚Đ°Đģи ĐĩĐŗĐž, и ĐŋŅ€ĐĩĐ´ĐŋĐžĐģĐ°ĐŗĐ°ŅŽŅ‚, Ņ‡Ņ‚Đž Đ˛Ņ‹ СĐŊаĐĩŅ‚Đĩ ŅŅ‚Đ¸ ĐžŅĐŊОвĐŊŅ‹Đĩ идĐĩи. From 8d9ef5d343998e9db3cae165e3ff15a23b967e51 Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 18 Jun 2025 08:41:19 +0000 Subject: [PATCH 63/65] =?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 [skip ci] --- docs/en/docs/release-notes.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 683266f96..be5d4e2e1 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -11,6 +11,10 @@ hide: * 📝 Update Speakeasy URL to Speakeasy Sandbox. PR [#13697](https://github.com/fastapi/fastapi/pull/13697) by [@ndimares](https://github.com/ndimares). +### Translations + +* 🌐 Add Russian translation for `docs/ru/docs/advanced/index.md`. PR [#13797](https://github.com/fastapi/fastapi/pull/13797) by [@NavesSapnis](https://github.com/NavesSapnis). + ## 0.115.13 ### Fixes From 9026f3b1bdfba4ac33ba5d88a9fa4bed83f84108 Mon Sep 17 00:00:00 2001 From: Naves <79222417+NavesSapnis@users.noreply.github.com> Date: Wed, 18 Jun 2025 21:22:18 +0300 Subject: [PATCH 64/65] Misprint (#13800) --- docs/en/docs/advanced/response-directly.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/docs/advanced/response-directly.md b/docs/en/docs/advanced/response-directly.md index 691b1e7cd..759b762b5 100644 --- a/docs/en/docs/advanced/response-directly.md +++ b/docs/en/docs/advanced/response-directly.md @@ -58,7 +58,7 @@ You could put your XML content in a string, put that in a `Response`, and return ## Notes -When you return a `Response` directly its data is not validated, converted (serialized), nor documented automatically. +When you return a `Response` directly its data is not validated, converted (serialized), or documented automatically. But you can still document it as described in [Additional Responses in OpenAPI](additional-responses.md){.internal-link target=_blank}. From 28038f19cfae040c826ad7a89f511fc854d9d44f Mon Sep 17 00:00:00 2001 From: github-actions Date: Wed, 18 Jun 2025 18:22:42 +0000 Subject: [PATCH 65/65] =?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 [skip ci] --- 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 be5d4e2e1..68eeaae7b 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -9,6 +9,7 @@ hide: ### Docs +* Misprint. PR [#13800](https://github.com/fastapi/fastapi/pull/13800) by [@NavesSapnis](https://github.com/NavesSapnis). * 📝 Update Speakeasy URL to Speakeasy Sandbox. PR [#13697](https://github.com/fastapi/fastapi/pull/13697) by [@ndimares](https://github.com/ndimares). ### Translations