diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index 68a180e38..95cb8578b 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -42,7 +42,7 @@ jobs:
with:
publish-dir: './site'
production-branch: master
- github-token: ${{ secrets.GITHUB_TOKEN }}
+ github-token: ${{ secrets.FASTAPI_BUILD_DOCS_NETLIFY }}
enable-commit-comment: false
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
diff --git a/.github/workflows/issue-manager.yml b/.github/workflows/issue-manager.yml
index e2fb4f7a4..617105b6e 100644
--- a/.github/workflows/issue-manager.yml
+++ b/.github/workflows/issue-manager.yml
@@ -20,7 +20,7 @@ jobs:
steps:
- uses: tiangolo/issue-manager@0.4.0
with:
- token: ${{ secrets.GITHUB_TOKEN }}
+ token: ${{ secrets.FASTAPI_ISSUE_MANAGER }}
config: >
{
"answered": {
diff --git a/.github/workflows/label-approved.yml b/.github/workflows/label-approved.yml
index b2646dd16..4a73b02aa 100644
--- a/.github/workflows/label-approved.yml
+++ b/.github/workflows/label-approved.yml
@@ -10,4 +10,4 @@ jobs:
steps:
- uses: docker://tiangolo/label-approved:0.0.2
with:
- token: ${{ secrets.GITHUB_TOKEN }}
+ token: ${{ secrets.FASTAPI_LABEL_APPROVED }}
diff --git a/.github/workflows/latest-changes.yml b/.github/workflows/latest-changes.yml
index 4aa8475b6..f11a63848 100644
--- a/.github/workflows/latest-changes.yml
+++ b/.github/workflows/latest-changes.yml
@@ -30,11 +30,9 @@ jobs:
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }}
with:
limit-access-to-actor: true
- token: ${{ secrets.ACTIONS_TOKEN }}
- standard_token: ${{ secrets.GITHUB_TOKEN }}
- uses: docker://tiangolo/latest-changes:0.0.3
with:
- token: ${{ secrets.GITHUB_TOKEN }}
+ token: ${{ secrets.FASTAPI_LATEST_CHANGES }}
latest_changes_file: docs/en/docs/release-notes.md
latest_changes_header: '## Latest Changes\n\n'
debug_logs: true
diff --git a/.github/workflows/notify-translations.yml b/.github/workflows/notify-translations.yml
index fdd24414c..0926486e9 100644
--- a/.github/workflows/notify-translations.yml
+++ b/.github/workflows/notify-translations.yml
@@ -19,4 +19,4 @@ jobs:
limit-access-to-actor: true
- uses: ./.github/actions/notify-translations
with:
- token: ${{ secrets.GITHUB_TOKEN }}
+ token: ${{ secrets.FASTAPI_NOTIFY_TRANSLATIONS }}
diff --git a/.github/workflows/people.yml b/.github/workflows/people.yml
index cca1329e7..b167c268f 100644
--- a/.github/workflows/people.yml
+++ b/.github/workflows/people.yml
@@ -24,9 +24,7 @@ jobs:
if: ${{ github.event_name == 'workflow_dispatch' && github.event.inputs.debug_enabled }}
with:
limit-access-to-actor: true
- token: ${{ secrets.ACTIONS_TOKEN }}
- standard_token: ${{ secrets.GITHUB_TOKEN }}
- uses: ./.github/actions/people
with:
token: ${{ secrets.ACTIONS_TOKEN }}
- standard_token: ${{ secrets.GITHUB_TOKEN }}
+ standard_token: ${{ secrets.FASTAPI_PEOPLE }}
diff --git a/.github/workflows/preview-docs.yml b/.github/workflows/preview-docs.yml
index 8730185bd..298f75b02 100644
--- a/.github/workflows/preview-docs.yml
+++ b/.github/workflows/preview-docs.yml
@@ -34,7 +34,7 @@ jobs:
with:
publish-dir: './site'
production-deploy: false
- github-token: ${{ secrets.GITHUB_TOKEN }}
+ github-token: ${{ secrets.FASTAPI_PREVIEW_DOCS_NETLIFY }}
enable-commit-comment: false
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
@@ -42,5 +42,5 @@ jobs:
- name: Comment Deploy
uses: ./.github/actions/comment-docs-preview-in-pr
with:
- token: ${{ secrets.GITHUB_TOKEN }}
+ token: ${{ secrets.FASTAPI_PREVIEW_DOCS_COMMENT_DEPLOY }}
deploy_url: "${{ steps.netlify.outputs.deploy-url }}"
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 1ad11f8d2..bdadcc6d3 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -39,9 +39,3 @@ jobs:
env:
GITHUB_CONTEXT: ${{ toJson(github) }}
run: echo "$GITHUB_CONTEXT"
- # - name: Notify
- # env:
- # GITTER_TOKEN: ${{ secrets.GITTER_TOKEN }}
- # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- # TAG: ${{ github.event.release.name }}
- # run: bash scripts/notify.sh
diff --git a/.github/workflows/smokeshow.yml b/.github/workflows/smokeshow.yml
index 65a174329..c6d894d9f 100644
--- a/.github/workflows/smokeshow.yml
+++ b/.github/workflows/smokeshow.yml
@@ -31,6 +31,6 @@ jobs:
SMOKESHOW_GITHUB_STATUS_DESCRIPTION: Coverage {coverage-percentage}
SMOKESHOW_GITHUB_COVERAGE_THRESHOLD: 100
SMOKESHOW_GITHUB_CONTEXT: coverage
- SMOKESHOW_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+ SMOKESHOW_GITHUB_TOKEN: ${{ secrets.FASTAPI_SMOKESHOW_UPLOAD }}
SMOKESHOW_GITHUB_PR_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
SMOKESHOW_AUTH_KEY: ${{ secrets.SMOKESHOW_AUTH_KEY }}
diff --git a/docs/en/docs/features.md b/docs/en/docs/features.md
index 387ff86c9..98f37b534 100644
--- a/docs/en/docs/features.md
+++ b/docs/en/docs/features.md
@@ -189,8 +189,6 @@ With **FastAPI** you get all of **Pydantic**'s features (as FastAPI is based on
* If you know Python types you know how to use Pydantic.
* Plays nicely with your **IDE/linter/brain**:
* Because pydantic data structures are just instances of classes you define; auto-completion, linting, mypy and your intuition should all work properly with your validated data.
-* **Fast**:
- * in benchmarks Pydantic is faster than all other tested libraries.
* Validate **complex structures**:
* Use of hierarchical Pydantic models, Python `typing`’s `List` and `Dict`, etc.
* And validators allow complex data schemas to be clearly and easily defined, checked and documented as JSON Schema.
diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md
index 4ab82fd58..ffa68e2c3 100644
--- a/docs/en/docs/release-notes.md
+++ b/docs/en/docs/release-notes.md
@@ -2,6 +2,11 @@
## Latest Changes
+* 🐛 Fix `HTTPException` header type annotations. PR [#9648](https://github.com/tiangolo/fastapi/pull/9648) by [@tiangolo](https://github.com/tiangolo).
+* 🔥 Remove link to Pydantic's benchmark, as it was removed there. PR [#5811](https://github.com/tiangolo/fastapi/pull/5811) by [@Kludex](https://github.com/Kludex).
+* ♻ Remove `media_type` from `ORJSONResponse` as it's inherited from the parent class. PR [#5805](https://github.com/tiangolo/fastapi/pull/5805) by [@Kludex](https://github.com/Kludex).
+* 👷 Add custom token to Smokeshow and Preview Docs for download-artifact, to prevent API rate limits. PR [#9646](https://github.com/tiangolo/fastapi/pull/9646) by [@tiangolo](https://github.com/tiangolo).
+* 👷 Add custom tokens for GitHub Actions to avoid rate limits. PR [#9647](https://github.com/tiangolo/fastapi/pull/9647) by [@tiangolo](https://github.com/tiangolo).
* ♻ Instantiate `HTTPException` only when needed, optimization refactor. PR [#5356](https://github.com/tiangolo/fastapi/pull/5356) by [@pawamoy](https://github.com/pawamoy).
* 📌 Update minimum version of Pydantic to >=1.7.4. PR [#9567](https://github.com/tiangolo/fastapi/pull/9567) by [@Kludex](https://github.com/Kludex).
* 🐛 Fix OpenAPI model fields int validations, `gte` to `ge`. PR [#9635](https://github.com/tiangolo/fastapi/pull/9635) by [@tiangolo](https://github.com/tiangolo).
diff --git a/fastapi/exceptions.py b/fastapi/exceptions.py
index ca097b1ce..cac5330a2 100644
--- a/fastapi/exceptions.py
+++ b/fastapi/exceptions.py
@@ -11,7 +11,7 @@ class HTTPException(StarletteHTTPException):
self,
status_code: int,
detail: Any = None,
- headers: Optional[Dict[str, Any]] = None,
+ headers: Optional[Dict[str, str]] = None,
) -> None:
super().__init__(status_code=status_code, detail=detail, headers=headers)
diff --git a/fastapi/responses.py b/fastapi/responses.py
index 88dba96e8..c0a13b755 100644
--- a/fastapi/responses.py
+++ b/fastapi/responses.py
@@ -27,8 +27,6 @@ class UJSONResponse(JSONResponse):
class ORJSONResponse(JSONResponse):
- media_type = "application/json"
-
def render(self, content: Any) -> bytes:
assert orjson is not None, "orjson must be installed to use ORJSONResponse"
return orjson.dumps(