diff --git a/.github/labeler.yml b/.github/labeler.yml
new file mode 100644
index 0000000000..758f37e37a
--- /dev/null
+++ b/.github/labeler.yml
@@ -0,0 +1,23 @@
+docs:
+ - changed-files:
+ - any-glob-to-any-file:
+ - docs/en/docs/**/*
+ - docs_src/**/*
+
+lang-all:
+ - all:
+ - changed-files:
+ - any-glob-to-any-file:
+ - docs/*/docs/**/*
+ - all-globs-to-all-files:
+ - '!docs/en/docs/**/*'
+
+internal:
+ - changed-files:
+ - any-glob-to-any-file:
+ - .github/**/*
+ - scripts/**/*
+ - .gitignore
+ - .pre-commit-config.yaml
+ - pdm_build.py
+ - requirements*.txt
diff --git a/.github/workflows/add-to-project.yml b/.github/workflows/add-to-project.yml
new file mode 100644
index 0000000000..dccea83f35
--- /dev/null
+++ b/.github/workflows/add-to-project.yml
@@ -0,0 +1,18 @@
+name: Add to Project
+
+on:
+ pull_request_target:
+ issues:
+ types:
+ - opened
+ - reopened
+
+jobs:
+ add-to-project:
+ name: Add to project
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/add-to-project@v1.0.2
+ with:
+ project-url: https://github.com/orgs/fastapi/projects/2
+ github-token: ${{ secrets.PROJECTS_TOKEN }}
diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml
index f28262b2ae..d2953f2841 100644
--- a/.github/workflows/deploy-docs.yml
+++ b/.github/workflows/deploy-docs.yml
@@ -64,10 +64,10 @@ jobs:
gitHubToken: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ ( github.event.workflow_run.head_repository.full_name == github.repository && github.event.workflow_run.head_branch == 'master' && 'main' ) || ( github.event.workflow_run.head_sha ) }}
- name: Comment Deploy
- if: steps.deploy.outputs.url != ''
run: python ./scripts/deploy_docs_status.py
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEPLOY_URL: ${{ steps.deploy.outputs.url }}
COMMIT_SHA: ${{ github.event.workflow_run.head_sha }}
RUN_ID: ${{ github.run_id }}
+ IS_DONE: "true"
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
new file mode 100644
index 0000000000..9cbdfda213
--- /dev/null
+++ b/.github/workflows/labeler.yml
@@ -0,0 +1,12 @@
+name: Pull Request Labeler
+on:
+ pull_request_target:
+
+jobs:
+ labeler:
+ permissions:
+ contents: read
+ pull-requests: write
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/labeler@v5
diff --git a/.github/workflows/test-redistribute.yml b/.github/workflows/test-redistribute.yml
index 0cc5f866e8..693f0c6032 100644
--- a/.github/workflows/test-redistribute.yml
+++ b/.github/workflows/test-redistribute.yml
@@ -55,3 +55,15 @@ jobs:
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
+
+ # https://github.com/marketplace/actions/alls-green#why
+ test-redistribute-alls-green: # This job does nothing and is only used for the branch protection
+ if: always()
+ needs:
+ - test-redistribute
+ runs-on: ubuntu-latest
+ steps:
+ - name: Decide whether the needed jobs succeeded or failed
+ uses: re-actors/alls-green@release/v1
+ with:
+ jobs: ${{ toJSON(needs) }}
diff --git a/docs/de/docs/deployment/docker.md b/docs/de/docs/deployment/docker.md
index 2186d16c5b..c11dc41275 100644
--- a/docs/de/docs/deployment/docker.md
+++ b/docs/de/docs/deployment/docker.md
@@ -205,8 +205,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
Die Option `--no-cache-dir` weist `pip` an, die heruntergeladenen Pakete nicht lokal zu speichern, da dies nur benötigt wird, sollte `pip` erneut ausgeführt werden, um dieselben Pakete zu installieren, aber das ist beim Arbeiten mit Containern nicht der Fall.
- !!! note "Hinweis"
- Das `--no-cache-dir` bezieht sich nur auf `pip`, es hat nichts mit Docker oder Containern zu tun.
+ /// note | Hinweis
+
+ Das `--no-cache-dir` bezieht sich nur auf `pip`, es hat nichts mit Docker oder Containern zu tun.
+
+ ///
Die Option `--upgrade` weist `pip` an, die Packages zu aktualisieren, wenn sie bereits installiert sind.
diff --git a/docs/em/docs/deployment/docker.md b/docs/em/docs/deployment/docker.md
index 6540761ac2..2152f1a0ee 100644
--- a/docs/em/docs/deployment/docker.md
+++ b/docs/em/docs/deployment/docker.md
@@ -205,8 +205,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
`--no-cache-dir` 🎛 💬 `pip` 🚫 🖊 ⏬ 📦 🌐, 👈 🕴 🚥 `pip` 🔜 🏃 🔄 ❎ 🎏 📦, ✋️ 👈 🚫 💼 🕐❔ 👷 ⏮️ 📦.
- !!! note
- `--no-cache-dir` 🕴 🔗 `pip`, ⚫️ ✔️ 🕳 ⏮️ ☁ ⚖️ 📦.
+ /// note
+
+ `--no-cache-dir` 🕴 🔗 `pip`, ⚫️ ✔️ 🕳 ⏮️ ☁ ⚖️ 📦.
+
+ ///
`--upgrade` 🎛 💬 `pip` ♻ 📦 🚥 👫 ⏪ ❎.
diff --git a/docs/en/docs/contributing.md b/docs/en/docs/contributing.md
index e86c34e48a..9d6b773f7c 100644
--- a/docs/en/docs/contributing.md
+++ b/docs/en/docs/contributing.md
@@ -458,9 +458,9 @@ Serving at: http://127.0.0.1:8008
* Do not change anything enclosed in "``" (inline code).
-* In lines starting with `===` or `!!!`, translate only the ` "... Text ..."` part. Leave the rest unchanged.
+* In lines starting with `///` translate only the ` "... Text ..."` part. Leave the rest unchanged.
-* You can translate info boxes like `!!! warning` with for example `!!! warning "Achtung"`. But do not change the word immediately after the `!!!`, it determines the color of the info box.
+* You can translate info boxes like `/// warning` with for example `/// warning | Achtung`. But do not change the word immediately after the `///`, it determines the color of the info box.
* Do not change the paths in links to images, code files, Markdown documents.
diff --git a/docs/en/docs/css/termynal.css b/docs/en/docs/css/termynal.css
index af2fbe6700..8534f91021 100644
--- a/docs/en/docs/css/termynal.css
+++ b/docs/en/docs/css/termynal.css
@@ -26,6 +26,7 @@
position: relative;
-webkit-box-sizing: border-box;
box-sizing: border-box;
+ /* Custom line-height */
line-height: 1.2;
}
diff --git a/docs/en/docs/deployment/docker.md b/docs/en/docs/deployment/docker.md
index 6140b1c429..253e25fe5d 100644
--- a/docs/en/docs/deployment/docker.md
+++ b/docs/en/docs/deployment/docker.md
@@ -202,8 +202,11 @@ CMD ["fastapi", "run", "app/main.py", "--port", "80"]
The `--no-cache-dir` option tells `pip` to not save the downloaded packages locally, as that is only if `pip` was going to be run again to install the same packages, but that's not the case when working with containers.
- !!! note
- The `--no-cache-dir` is only related to `pip`, it has nothing to do with Docker or containers.
+ /// note
+
+ The `--no-cache-dir` is only related to `pip`, it has nothing to do with Docker or containers.
+
+ ///
The `--upgrade` option tells `pip` to upgrade the packages if they are already installed.
diff --git a/docs/en/docs/management-tasks.md b/docs/en/docs/management-tasks.md
index 2c91cab720..815bad5393 100644
--- a/docs/en/docs/management-tasks.md
+++ b/docs/en/docs/management-tasks.md
@@ -280,8 +280,4 @@ Dependabot will create PRs to update dependencies for several things, and those
When a question in GitHub Discussions has been answered, mark the answer by clicking "Mark as answer".
-Many of the current Discussion Questions were migrated from old issues. Many have the label `answered`, that means they were answered when they were issues, but now in GitHub Discussions, it's not known what is the actual response from the messages.
-
-You can filter discussions by [`Questions` that are `Unanswered` and have the label `answered`](https://github.com/fastapi/fastapi/discussions/categories/questions?discussions_q=category%3AQuestions+is%3Aopen+label%3Aanswered+is%3Aunanswered).
-
-All of those discussions already have an answer in the conversation, you can find it and mark it with the "Mark as answer" button.
+You can filter discussions by `Questions` that are `Unanswered`.
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 5776f43084..2f27277975 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -7,6 +7,10 @@ hide:
## Latest Changes
+### Docs
+
+* 📝 Update docs about discussions questions. PR [#11985](https://github.com/fastapi/fastapi/pull/11985) by [@tiangolo](https://github.com/tiangolo).
+
### Translations
* 🌐 Add Portuguese translation for `docs/pt/docs/advanced/using-request-directly.md`. PR [#11956](https://github.com/fastapi/fastapi/pull/11956) by [@ceb10n](https://github.com/ceb10n).
@@ -19,6 +23,17 @@ hide:
### Internal
+* 👷 Update GitHub Action add-to-project. PR [#12002](https://github.com/fastapi/fastapi/pull/12002) by [@tiangolo](https://github.com/tiangolo).
+* 🔧 Update labeler GitHub Action. PR [#12001](https://github.com/fastapi/fastapi/pull/12001) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Add GitHub Action labeler. PR [#12000](https://github.com/fastapi/fastapi/pull/12000) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Add GitHub Action add-to-project. PR [#11999](https://github.com/fastapi/fastapi/pull/11999) by [@tiangolo](https://github.com/tiangolo).
+* 📝 Update admonitions in docs missing. PR [#11998](https://github.com/fastapi/fastapi/pull/11998) by [@tiangolo](https://github.com/tiangolo).
+* 🔨 Update docs.py script to enable dirty reload conditionally. PR [#11986](https://github.com/fastapi/fastapi/pull/11986) by [@tiangolo](https://github.com/tiangolo).
+* 🔧 Update MkDocs instant previews. PR [#11982](https://github.com/fastapi/fastapi/pull/11982) by [@tiangolo](https://github.com/tiangolo).
+* 🐛 Fix deploy docs previews script to handle mkdocs.yml files. PR [#11984](https://github.com/fastapi/fastapi/pull/11984) by [@tiangolo](https://github.com/tiangolo).
+* 💡 Add comment about custom Termynal line-height. PR [#11976](https://github.com/fastapi/fastapi/pull/11976) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Add alls-green for test-redistribute. PR [#11974](https://github.com/fastapi/fastapi/pull/11974) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Update docs-previews to handle no docs changes. PR [#11975](https://github.com/fastapi/fastapi/pull/11975) by [@tiangolo](https://github.com/tiangolo).
* 🔨 Refactor script `deploy_docs_status.py` to account for deploy URLs with or without trailing slash. PR [#11965](https://github.com/fastapi/fastapi/pull/11965) by [@tiangolo](https://github.com/tiangolo).
* 🔒️ Update permissions for deploy-docs action. PR [#11964](https://github.com/fastapi/fastapi/pull/11964) by [@tiangolo](https://github.com/tiangolo).
* 👷🏻 Add deploy docs status and preview links to PRs. PR [#11961](https://github.com/fastapi/fastapi/pull/11961) by [@tiangolo](https://github.com/tiangolo).
diff --git a/docs/en/mkdocs.insiders.yml b/docs/en/mkdocs.insiders.yml
index 18c6d3f536..4cec588fa6 100644
--- a/docs/en/mkdocs.insiders.yml
+++ b/docs/en/mkdocs.insiders.yml
@@ -9,4 +9,4 @@ markdown_extensions:
material.extensions.preview:
targets:
include:
- - ./*
+ - "*"
diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml
index 782d4ef874..d37d7f42f5 100644
--- a/docs/en/mkdocs.yml
+++ b/docs/en/mkdocs.yml
@@ -35,7 +35,7 @@ theme:
- navigation.indexes
- navigation.instant
- navigation.instant.prefetch
- - navigation.instant.preview
+ # - navigation.instant.preview
- navigation.instant.progress
- navigation.path
- navigation.tabs
diff --git a/docs/ja/docs/deployment/docker.md b/docs/ja/docs/deployment/docker.md
index c294ef88d1..53fc851f1e 100644
--- a/docs/ja/docs/deployment/docker.md
+++ b/docs/ja/docs/deployment/docker.md
@@ -213,8 +213,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
4. 要件ファイルにあるパッケージの依存関係をインストールします
`--no-cache-dir` オプションはダウンロードしたパッケージをローカルに保存しないように `pip` に指示します。これは、同じパッケージをインストールするために `pip` を再度実行する場合にのみ有効ですが、コンテナで作業する場合はそうではないです。
- !!! note
- `--no-cache-dir`は`pip`に関連しているだけで、Dockerやコンテナとは何の関係もないです。
+ /// note
+
+ `--no-cache-dir`は`pip`に関連しているだけで、Dockerやコンテナとは何の関係もないです。
+
+ ///
`--upgrade` オプションは、パッケージが既にインストールされている場合、`pip` にアップグレードするように指示します。
diff --git a/docs/ko/docs/deployment/docker.md b/docs/ko/docs/deployment/docker.md
index edf10b3183..502a36fc05 100644
--- a/docs/ko/docs/deployment/docker.md
+++ b/docs/ko/docs/deployment/docker.md
@@ -205,8 +205,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
`--no-cache-dir` 옵션은 `pip`에게 다운로드한 패키지들을 로컬 환경에 저장하지 않도록 전달합니다. 이는 마치 같은 패키지를 설치하기 위해 오직 `pip`만 다시 실행하면 될 것 같지만, 컨테이너로 작업하는 경우 그렇지는 않습니다.
- !!! note "노트"
- `--no-cache-dir` 는 오직 `pip`와 관련되어 있으며, 도커나 컨테이너와는 무관합니다.
+ /// note | 노트
+
+ `--no-cache-dir` 는 오직 `pip`와 관련되어 있으며, 도커나 컨테이너와는 무관합니다.
+
+ ///
`--upgrade` 옵션은 `pip`에게 설치된 패키지들을 업데이트하도록 합니다.
diff --git a/docs/ko/docs/help-fastapi.md b/docs/ko/docs/help-fastapi.md
index 7c3b15d339..932952b4a9 100644
--- a/docs/ko/docs/help-fastapi.md
+++ b/docs/ko/docs/help-fastapi.md
@@ -118,7 +118,11 @@
👥 [디스코드 채팅 서버](https://discord.gg/VQjSZaeJmf) 👥 에 가입하고 FastAPI 커뮤니티에서 다른 사람들과 어울리세요.
- !!! tip 질문이 있는 경우, [GitHub 이슈 ](https://github.com/fastapi/fastapi/issues/new/choose) 에서 질문하십시오, [FastAPI 전문가](https://github.com/fastapi/fastapi/blob/master/docs/en/docs/fastapi-people.md#experts) 의 도움을 받을 가능성이 높습니다{.internal-link target=_blank} .
+ /// tip
+
+ 질문이 있는 경우, [GitHub 이슈 ](https://github.com/fastapi/fastapi/issues/new/choose) 에서 질문하십시오, [FastAPI 전문가](https://github.com/fastapi/fastapi/blob/master/docs/en/docs/fastapi-people.md#experts) 의 도움을 받을 가능성이 높습니다{.internal-link target=_blank} .
+
+ ///
```
다른 일반적인 대화에서만 채팅을 사용하십시오.
diff --git a/docs/pt/docs/deployment/docker.md b/docs/pt/docs/deployment/docker.md
index fa1a6b9c2a..df93bac2c4 100644
--- a/docs/pt/docs/deployment/docker.md
+++ b/docs/pt/docs/deployment/docker.md
@@ -205,8 +205,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
A opção `--no-cache-dir` diz ao `pip` para não salvar os pacotes baixados localmente, pois isso só aconteceria se `pip` fosse executado novamente para instalar os mesmos pacotes, mas esse não é o caso quando trabalhamos com contêineres.
- !!! note
- `--no-cache-dir` é apenas relacionado ao `pip`, não tem nada a ver com Docker ou contêineres.
+ /// note
+
+ `--no-cache-dir` é apenas relacionado ao `pip`, não tem nada a ver com Docker ou contêineres.
+
+ ///
A opção `--upgrade` diz ao `pip` para atualizar os pacotes se eles já estiverem instalados.
diff --git a/docs/ru/docs/deployment/docker.md b/docs/ru/docs/deployment/docker.md
index e627d01fe4..9eef5c4d2a 100644
--- a/docs/ru/docs/deployment/docker.md
+++ b/docs/ru/docs/deployment/docker.md
@@ -207,8 +207,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
Опция `--no-cache-dir` указывает `pip` не сохранять загружаемые библиотеки на локальной машине для использования их в случае повторной загрузки. В контейнере, в случае пересборки этого шага, они всё равно будут удалены.
- !!! note "Заметка"
- Опция `--no-cache-dir` нужна только для `pip`, она никак не влияет на Docker или контейнеры.
+ /// note | Заметка
+
+ Опция `--no-cache-dir` нужна только для `pip`, она никак не влияет на Docker или контейнеры.
+
+ ///
Опция `--upgrade` указывает `pip` обновить библиотеки, емли они уже установлены.
diff --git a/docs/zh/docs/deployment/docker.md b/docs/zh/docs/deployment/docker.md
index e5f66dba15..f120ebfb89 100644
--- a/docs/zh/docs/deployment/docker.md
+++ b/docs/zh/docs/deployment/docker.md
@@ -213,8 +213,11 @@ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
`--no-cache-dir` 选项告诉 `pip` 不要在本地保存下载的包,因为只有当 `pip` 再次运行以安装相同的包时才会这样,但在与容器一起工作时情况并非如此。
- !!! note "笔记"
- `--no-cache-dir` 仅与 `pip` 相关,与 Docker 或容器无关。
+ /// note | 笔记
+
+ `--no-cache-dir` 仅与 `pip` 相关,与 Docker 或容器无关。
+
+ ///
`--upgrade` 选项告诉 `pip` 升级软件包(如果已经安装)。
diff --git a/docs/zh/docs/deployment/https.md b/docs/zh/docs/deployment/https.md
index e5d66482a7..9c963d587f 100644
--- a/docs/zh/docs/deployment/https.md
+++ b/docs/zh/docs/deployment/https.md
@@ -4,8 +4,11 @@
但实际情况比这复杂得多。
-!!!提示
- 如果你很赶时间或不在乎,请继续阅读下一部分,下一部分会提供一个step-by-step的教程,告诉你怎么使用不同技术来把一切都配置好。
+/// note | 提示
+
+如果你很赶时间或不在乎,请继续阅读下一部分,下一部分会提供一个step-by-step的教程,告诉你怎么使用不同技术来把一切都配置好。
+
+///
要从用户的视角**了解 HTTPS 的基础知识**,请查看 https://howhttps.works/。
diff --git a/scripts/deploy_docs_status.py b/scripts/deploy_docs_status.py
index e00fa2be0e..19dffbcb9a 100644
--- a/scripts/deploy_docs_status.py
+++ b/scripts/deploy_docs_status.py
@@ -12,6 +12,7 @@ class Settings(BaseSettings):
deploy_url: str | None = None
commit_sha: str
run_id: int
+ is_done: bool = False
def main():
@@ -30,10 +31,19 @@ def main():
commits = list(use_pr.get_commits())
current_commit = [c for c in commits if c.sha == settings.commit_sha][0]
run_url = f"https://github.com/{settings.github_repository}/actions/runs/{settings.run_id}"
+ if settings.is_done and not settings.deploy_url:
+ current_commit.create_status(
+ state="success",
+ description="No Docs Changes",
+ context="deploy-docs",
+ target_url=run_url,
+ )
+ logging.info("No docs changes found")
+ return
if not settings.deploy_url:
current_commit.create_status(
state="pending",
- description="Deploy Docs",
+ description="Deploying Docs",
context="deploy-docs",
target_url=run_url,
)
@@ -41,7 +51,7 @@ def main():
return
current_commit.create_status(
state="success",
- description="Deploy Docs",
+ description="Docs Deployed",
context="deploy-docs",
target_url=run_url,
)
@@ -53,7 +63,8 @@ def main():
lang_links: dict[str, list[str]] = {}
for f in docs_files:
match = re.match(r"docs/([^/]+)/docs/(.*)", f.filename)
- assert match
+ if not match:
+ continue
lang = match.group(1)
path = match.group(2)
if path.endswith("index.md"):
diff --git a/scripts/docs.py b/scripts/docs.py
index fd2dd78f14..5ef5488899 100644
--- a/scripts/docs.py
+++ b/scripts/docs.py
@@ -251,6 +251,7 @@ def live(
lang: str = typer.Argument(
None, callback=lang_callback, autocompletion=complete_existing_lang
),
+ dirty: bool = False,
) -> None:
"""
Serve with livereload a docs site for a specific language.
@@ -265,11 +266,12 @@ def live(
if lang is None:
lang = "en"
lang_path: Path = docs_path / lang
+ # Enable line numbers during local development to make it easier to highlight
+ args = ["mkdocs", "serve", "--dev-addr", "127.0.0.1:8008"]
+ if dirty:
+ args.append("--dirty")
subprocess.run(
- ["mkdocs", "serve", "--dev-addr", "127.0.0.1:8008", "--dirty"],
- env={**os.environ, "LINENUMS": "true"},
- cwd=lang_path,
- check=True,
+ args, env={**os.environ, "LINENUMS": "true"}, cwd=lang_path, check=True
)