From 273b2cd6462ef8c3baa38997bb13f5fe4f15c892 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 10 May 2021 09:15:39 +0200 Subject: [PATCH 01/14] =?UTF-8?q?=F0=9F=90=9B=20Fix=20docs=20script=20to?= =?UTF-8?q?=20generate=20a=20new=20translation=20language=20with=20overrid?= =?UTF-8?q?es=20boilerplate=20(#3202)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/docs.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/docs.py b/scripts/docs.py index ec3ad76e6..40569e193 100644 --- a/scripts/docs.py +++ b/scripts/docs.py @@ -106,6 +106,9 @@ def new_lang(lang: str = typer.Argument(..., callback=lang_callback)): en_index_content = en_index_path.read_text(encoding="utf-8") new_index_content = f"{missing_translation_snippet}\n\n{en_index_content}" new_index_path.write_text(new_index_content, encoding="utf-8") + new_overrides_gitignore_path = new_path / "overrides" / ".gitignore" + new_overrides_gitignore_path.parent.mkdir(parents=True, exist_ok=True) + new_overrides_gitignore_path.write_text("") typer.secho(f"Successfully initialized: {new_path}", color=typer.colors.GREEN) update_languages(lang=None) From 08fabb7b2e598e3aa9102b1ff6ce10d5c90fdace Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 10 May 2021 07:16:15 +0000 Subject: [PATCH 02/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 5b2d9ba04..91b47ab00 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🐛 Fix docs script to generate a new translation language with `overrides` boilerplate. PR [#3202](https://github.com/tiangolo/fastapi/pull/3202) by [@tiangolo](https://github.com/tiangolo). * ✨ Add new Deta banner badge with new sponsorship tier 🙇. PR [#3194](https://github.com/tiangolo/fastapi/pull/3194) by [@tiangolo](https://github.com/tiangolo). * 👥 Update FastAPI People. PR [#3189](https://github.com/tiangolo/fastapi/pull/3189) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🔊 Update FastAPI People to allow better debugging. PR [#3188](https://github.com/tiangolo/fastapi/pull/3188) by [@tiangolo](https://github.com/tiangolo). From 85b32f51ff975c37afd2eb4d31860b76124531b2 Mon Sep 17 00:00:00 2001 From: neternefer <7143565+neternefer@users.noreply.github.com> Date: Mon, 10 May 2021 09:27:07 +0200 Subject: [PATCH 03/14] =?UTF-8?q?=F0=9F=8C=90=20Initialize=20new=20languag?= =?UTF-8?q?e=20Polish=20for=20translations=20(#3170)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Sebastián Ramírez --- docs/en/mkdocs.yml | 3 + docs/es/mkdocs.yml | 3 + docs/fr/mkdocs.yml | 3 + docs/it/mkdocs.yml | 3 + docs/ja/mkdocs.yml | 3 + docs/ko/mkdocs.yml | 3 + docs/pl/docs/index.md | 464 +++++++++++++++++++++++++++++++++++ docs/pl/mkdocs.yml | 119 +++++++++ docs/pl/overrides/.gitignore | 0 docs/pt/mkdocs.yml | 3 + docs/ru/mkdocs.yml | 3 + docs/sq/mkdocs.yml | 3 + docs/tr/mkdocs.yml | 3 + docs/uk/mkdocs.yml | 3 + docs/zh/mkdocs.yml | 3 + 15 files changed, 619 insertions(+) create mode 100644 docs/pl/docs/index.md create mode 100644 docs/pl/mkdocs.yml create mode 100644 docs/pl/overrides/.gitignore diff --git a/docs/en/mkdocs.yml b/docs/en/mkdocs.yml index 4ce180a8d..1c9faf5fa 100644 --- a/docs/en/mkdocs.yml +++ b/docs/en/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -198,6 +199,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/es/mkdocs.yml b/docs/es/mkdocs.yml index cd619ade6..1554cc3ea 100644 --- a/docs/es/mkdocs.yml +++ b/docs/es/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -102,6 +103,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/fr/mkdocs.yml b/docs/fr/mkdocs.yml index d9aac95f8..f1c66c759 100644 --- a/docs/fr/mkdocs.yml +++ b/docs/fr/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -99,6 +100,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/it/mkdocs.yml b/docs/it/mkdocs.yml index 9cadabcbb..f03730466 100644 --- a/docs/it/mkdocs.yml +++ b/docs/it/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -95,6 +96,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/ja/mkdocs.yml b/docs/ja/mkdocs.yml index 7ce4d6445..c2d905b13 100644 --- a/docs/ja/mkdocs.yml +++ b/docs/ja/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -134,6 +135,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/ko/mkdocs.yml b/docs/ko/mkdocs.yml index f5ae4b439..7f1991ed3 100644 --- a/docs/ko/mkdocs.yml +++ b/docs/ko/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -101,6 +102,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/pl/docs/index.md b/docs/pl/docs/index.md new file mode 100644 index 000000000..edc19fa48 --- /dev/null +++ b/docs/pl/docs/index.md @@ -0,0 +1,464 @@ + +{!../../../docs/missing-translation.md!} + + +

+ FastAPI +

+

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

+

+ + Test + + + Coverage + + + Package version + +

+ +--- + +**Documentation**: https://fastapi.tiangolo.com + +**Source Code**: https://github.com/tiangolo/fastapi + +--- + +FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints. + +The key features are: + +* **Fast**: Very high performance, on par with **NodeJS** and **Go** (thanks to Starlette and Pydantic). [One of the fastest Python frameworks available](#performance). + +* **Fast to code**: Increase the speed to develop features by about 200% to 300%. * +* **Fewer bugs**: Reduce about 40% of human (developer) induced errors. * +* **Intuitive**: Great editor support. Completion everywhere. Less time debugging. +* **Easy**: Designed to be easy to use and learn. Less time reading docs. +* **Short**: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. +* **Robust**: Get production-ready code. With automatic interactive documentation. +* **Standards-based**: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. + +* estimation based on tests on an internal development team, building production applications. + +## Gold Sponsors + + + +{% if sponsors %} +{% for sponsor in sponsors.gold -%} + +{% endfor %} +{% endif %} + + + +Other sponsors + +## Opinions + +"_[...] I'm using **FastAPI** a ton these days. [...] I'm actually planning to use it for all of my team's **ML services at Microsoft**. Some of them are getting integrated into the core **Windows** product and some **Office** products._" + +
Kabir Khan - Microsoft (ref)
+ +--- + +"_We adopted the **FastAPI** library to spawn a **REST** server that can be queried to obtain **predictions**. [for Ludwig]_" + +
Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref)
+ +--- + +"_**Netflix** is pleased to announce the open-source release of our **crisis management** orchestration framework: **Dispatch**! [built with **FastAPI**]_" + +
Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref)
+ +--- + +"_I’m over the moon excited about **FastAPI**. It’s so fun!_" + +
Brian Okken - Python Bytes podcast host (ref)
+ +--- + +"_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted **Hug** to be - it's really inspiring to see someone build that._" + +
Timothy Crosley - Hug creator (ref)
+ +--- + +"_If you're looking to learn one **modern framework** for building REST APIs, check out **FastAPI** [...] It's fast, easy to use and easy to learn [...]_" + +"_We've switched over to **FastAPI** for our **APIs** [...] I think you'll like it [...]_" + +
Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref)
+ +--- + +## **Typer**, the FastAPI of CLIs + + + +If you are building a CLI app to be used in the terminal instead of a web API, check out **Typer**. + +**Typer** is FastAPI's little sibling. And it's intended to be the **FastAPI of CLIs**. ⌨️ 🚀 + +## Requirements + +Python 3.6+ + +FastAPI stands on the shoulders of giants: + +* Starlette for the web parts. +* Pydantic for the data parts. + +## Installation + +
+ +```console +$ pip install fastapi + +---> 100% +``` + +
+ +You will also need an ASGI server, for production such as Uvicorn or Hypercorn. + +
+ +```console +$ pip install uvicorn[standard] + +---> 100% +``` + +
+ +## Example + +### Create it + +* Create a file `main.py` with: + +```Python +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +
+Or use async def... + +If your code uses `async` / `await`, use `async def`: + +```Python hl_lines="9 14" +from typing import Optional + +from fastapi import FastAPI + +app = FastAPI() + + +@app.get("/") +async def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +async def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} +``` + +**Note**: + +If you don't know, check the _"In a hurry?"_ section about `async` and `await` in the docs. + +
+ +### Run it + +Run the server with: + +
+ +```console +$ uvicorn main:app --reload + +INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) +INFO: Started reloader process [28720] +INFO: Started server process [28722] +INFO: Waiting for application startup. +INFO: Application startup complete. +``` + +
+ +
+About the command uvicorn main:app --reload... + +The command `uvicorn main:app` refers to: + +* `main`: the file `main.py` (the Python "module"). +* `app`: the object created inside of `main.py` with the line `app = FastAPI()`. +* `--reload`: make the server restart after code changes. Only do this for development. + +
+ +### Check it + +Open your browser at http://127.0.0.1:8000/items/5?q=somequery. + +You will see the JSON response as: + +```JSON +{"item_id": 5, "q": "somequery"} +``` + +You already created an API that: + +* Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. +* Both _paths_ take `GET` operations (also known as HTTP _methods_). +* The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. +* The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. + +### Interactive API docs + +Now go to http://127.0.0.1:8000/docs. + +You will see the automatic interactive API documentation (provided by Swagger UI): + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png) + +### Alternative API docs + +And now, go to http://127.0.0.1:8000/redoc. + +You will see the alternative automatic documentation (provided by ReDoc): + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png) + +## Example upgrade + +Now modify the file `main.py` to receive a body from a `PUT` request. + +Declare the body using standard Python types, thanks to Pydantic. + +```Python hl_lines="4 9-12 25-27" +from typing import Optional + +from fastapi import FastAPI +from pydantic import BaseModel + +app = FastAPI() + + +class Item(BaseModel): + name: str + price: float + is_offer: Optional[bool] = None + + +@app.get("/") +def read_root(): + return {"Hello": "World"} + + +@app.get("/items/{item_id}") +def read_item(item_id: int, q: Optional[str] = None): + return {"item_id": item_id, "q": q} + + +@app.put("/items/{item_id}") +def update_item(item_id: int, item: Item): + return {"item_name": item.name, "item_id": item_id} +``` + +The server should reload automatically (because you added `--reload` to the `uvicorn` command above). + +### Interactive API docs upgrade + +Now go to http://127.0.0.1:8000/docs. + +* The interactive API documentation will be automatically updated, including the new body: + +![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png) + +* Click on the button "Try it out", it allows you to fill the parameters and directly interact with the API: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png) + +* Then click on the "Execute" button, the user interface will communicate with your API, send the parameters, get the results and show them on the screen: + +![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png) + +### Alternative API docs upgrade + +And now, go to http://127.0.0.1:8000/redoc. + +* The alternative documentation will also reflect the new query parameter and body: + +![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png) + +### Recap + +In summary, you declare **once** the types of parameters, body, etc. as function parameters. + +You do that with standard modern Python types. + +You don't have to learn a new syntax, the methods or classes of a specific library, etc. + +Just standard **Python 3.6+**. + +For example, for an `int`: + +```Python +item_id: int +``` + +or for a more complex `Item` model: + +```Python +item: Item +``` + +...and with that single declaration you get: + +* Editor support, including: + * Completion. + * Type checks. +* Validation of data: + * Automatic and clear errors when the data is invalid. + * Validation even for deeply nested JSON objects. +* Conversion of input data: coming from the network to Python data and types. Reading from: + * JSON. + * Path parameters. + * Query parameters. + * Cookies. + * Headers. + * Forms. + * Files. +* Conversion of output data: converting from Python data and types to network data (as JSON): + * Convert Python types (`str`, `int`, `float`, `bool`, `list`, etc). + * `datetime` objects. + * `UUID` objects. + * Database models. + * ...and many more. +* Automatic interactive API documentation, including 2 alternative user interfaces: + * Swagger UI. + * ReDoc. + +--- + +Coming back to the previous code example, **FastAPI** will: + +* Validate that there is an `item_id` in the path for `GET` and `PUT` requests. +* Validate that the `item_id` is of type `int` for `GET` and `PUT` requests. + * If it is not, the client will see a useful, clear error. +* Check if there is an optional query parameter named `q` (as in `http://127.0.0.1:8000/items/foo?q=somequery`) for `GET` requests. + * As the `q` parameter is declared with `= None`, it is optional. + * Without the `None` it would be required (as is the body in the case with `PUT`). +* For `PUT` requests to `/items/{item_id}`, Read the body as JSON: + * Check that it has a required attribute `name` that should be a `str`. + * Check that it has a required attribute `price` that has to be a `float`. + * Check that it has an optional attribute `is_offer`, that should be a `bool`, if present. + * All this would also work for deeply nested JSON objects. +* Convert from and to JSON automatically. +* Document everything with OpenAPI, that can be used by: + * Interactive documentation systems. + * Automatic client code generation systems, for many languages. +* Provide 2 interactive documentation web interfaces directly. + +--- + +We just scratched the surface, but you already get the idea of how it all works. + +Try changing the line with: + +```Python + return {"item_name": item.name, "item_id": item_id} +``` + +...from: + +```Python + ... "item_name": item.name ... +``` + +...to: + +```Python + ... "item_price": item.price ... +``` + +...and see how your editor will auto-complete the attributes and know their types: + +![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png) + +For a more complete example including more features, see the Tutorial - User Guide. + +**Spoiler alert**: the tutorial - user guide includes: + +* Declaration of **parameters** from other different places as: **headers**, **cookies**, **form fields** and **files**. +* How to set **validation constraints** as `maximum_length` or `regex`. +* A very powerful and easy to use **Dependency Injection** system. +* Security and authentication, including support for **OAuth2** with **JWT tokens** and **HTTP Basic** auth. +* More advanced (but equally easy) techniques for declaring **deeply nested JSON models** (thanks to Pydantic). +* Many extra features (thanks to Starlette) as: + * **WebSockets** + * **GraphQL** + * extremely easy tests based on `requests` and `pytest` + * **CORS** + * **Cookie Sessions** + * ...and more. + +## Performance + +Independent TechEmpower benchmarks show **FastAPI** applications running under Uvicorn as one of the fastest Python frameworks available, only below Starlette and Uvicorn themselves (used internally by FastAPI). (*) + +To understand more about it, see the section Benchmarks. + +## Optional Dependencies + +Used by Pydantic: + +* ujson - for faster JSON "parsing". +* email_validator - for email validation. + +Used by Starlette: + +* requests - Required if you want to use the `TestClient`. +* aiofiles - Required if you want to use `FileResponse` or `StaticFiles`. +* jinja2 - Required if you want to use the default template configuration. +* python-multipart - Required if you want to support form "parsing", with `request.form()`. +* itsdangerous - Required for `SessionMiddleware` support. +* pyyaml - Required for Starlette's `SchemaGenerator` support (you probably don't need it with FastAPI). +* graphene - Required for `GraphQLApp` support. +* ujson - Required if you want to use `UJSONResponse`. + +Used by FastAPI / Starlette: + +* uvicorn - for the server that loads and serves your application. +* orjson - Required if you want to use `ORJSONResponse`. + +You can install all of these with `pip install fastapi[all]`. + +## License + +This project is licensed under the terms of the MIT license. diff --git a/docs/pl/mkdocs.yml b/docs/pl/mkdocs.yml new file mode 100644 index 000000000..a2c6102b8 --- /dev/null +++ b/docs/pl/mkdocs.yml @@ -0,0 +1,119 @@ +site_name: FastAPI +site_description: FastAPI framework, high performance, easy to learn, fast to code, ready for production +site_url: https://fastapi.tiangolo.com/pl/ +theme: + name: material + custom_dir: overrides + palette: + - scheme: default + primary: teal + accent: amber + toggle: + icon: material/lightbulb-outline + name: Switch to light mode + - scheme: slate + primary: teal + accent: amber + toggle: + icon: material/lightbulb + name: Switch to dark mode + features: + - search.suggest + - search.highlight + icon: + repo: fontawesome/brands/github-alt + logo: https://fastapi.tiangolo.com/img/icon-white.svg + favicon: https://fastapi.tiangolo.com/img/favicon.png + language: pl +repo_name: tiangolo/fastapi +repo_url: https://github.com/tiangolo/fastapi +edit_uri: '' +google_analytics: +- UA-133183413-1 +- auto +plugins: +- search +- markdownextradata: + data: data +nav: +- FastAPI: index.md +- Languages: + - en: / + - es: /es/ + - fr: /fr/ + - it: /it/ + - ja: /ja/ + - ko: /ko/ + - pl: /pl/ + - pt: /pt/ + - ru: /ru/ + - sq: /sq/ + - tr: /tr/ + - uk: /uk/ + - zh: /zh/ +markdown_extensions: +- toc: + permalink: true +- markdown.extensions.codehilite: + guess_lang: false +- markdown_include.include: + base_path: docs +- admonition +- codehilite +- extra +- pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_div_format '' +- pymdownx.tabbed +extra: + social: + - icon: fontawesome/brands/github-alt + link: https://github.com/tiangolo/fastapi + - icon: fontawesome/brands/discord + link: https://discord.gg/VQjSZaeJmf + - icon: fontawesome/brands/twitter + link: https://twitter.com/tiangolo + - icon: fontawesome/brands/linkedin + link: https://www.linkedin.com/in/tiangolo + - icon: fontawesome/brands/dev + link: https://dev.to/tiangolo + - icon: fontawesome/brands/medium + link: https://medium.com/@tiangolo + - icon: fontawesome/solid/globe + link: https://tiangolo.com + alternate: + - link: / + name: en - English + - link: /es/ + name: es - español + - link: /fr/ + name: fr - français + - link: /it/ + name: it - italiano + - link: /ja/ + name: ja - 日本語 + - link: /ko/ + name: ko - 한국어 + - link: /pl/ + name: pl + - link: /pt/ + name: pt - português + - link: /ru/ + name: ru - русский язык + - link: /sq/ + name: sq - shqip + - link: /tr/ + name: tr - Türkçe + - link: /uk/ + name: uk - українська мова + - link: /zh/ + name: zh - 汉语 +extra_css: +- https://fastapi.tiangolo.com/css/termynal.css +- https://fastapi.tiangolo.com/css/custom.css +extra_javascript: +- https://unpkg.com/mermaid@8.4.6/dist/mermaid.min.js +- https://fastapi.tiangolo.com/js/termynal.js +- https://fastapi.tiangolo.com/js/custom.js diff --git a/docs/pl/overrides/.gitignore b/docs/pl/overrides/.gitignore new file mode 100644 index 000000000..e69de29bb diff --git a/docs/pt/mkdocs.yml b/docs/pt/mkdocs.yml index ca5e77b01..230012d3b 100644 --- a/docs/pt/mkdocs.yml +++ b/docs/pt/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -103,6 +104,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/ru/mkdocs.yml b/docs/ru/mkdocs.yml index 55ee72fb6..b2b1b9aa7 100644 --- a/docs/ru/mkdocs.yml +++ b/docs/ru/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -95,6 +96,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/sq/mkdocs.yml b/docs/sq/mkdocs.yml index 7608f0220..9b255718b 100644 --- a/docs/sq/mkdocs.yml +++ b/docs/sq/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -95,6 +96,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/tr/mkdocs.yml b/docs/tr/mkdocs.yml index 30ee0ca2e..b65088447 100644 --- a/docs/tr/mkdocs.yml +++ b/docs/tr/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -95,6 +96,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/uk/mkdocs.yml b/docs/uk/mkdocs.yml index ab54f4f21..cecd2444f 100644 --- a/docs/uk/mkdocs.yml +++ b/docs/uk/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -95,6 +96,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ diff --git a/docs/zh/mkdocs.yml b/docs/zh/mkdocs.yml index 9cea77745..b88f04382 100644 --- a/docs/zh/mkdocs.yml +++ b/docs/zh/mkdocs.yml @@ -44,6 +44,7 @@ nav: - it: /it/ - ja: /ja/ - ko: /ko/ + - pl: /pl/ - pt: /pt/ - ru: /ru/ - sq: /sq/ @@ -135,6 +136,8 @@ extra: name: ja - 日本語 - link: /ko/ name: ko - 한국어 + - link: /pl/ + name: pl - link: /pt/ name: pt - português - link: /ru/ From e956ba4d4a2175aa919f01fd13ad5fa0b7eb6aa1 Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 10 May 2021 07:27:43 +0000 Subject: [PATCH 04/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 91b47ab00..912887c39 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). * 🐛 Fix docs script to generate a new translation language with `overrides` boilerplate. PR [#3202](https://github.com/tiangolo/fastapi/pull/3202) by [@tiangolo](https://github.com/tiangolo). * ✨ Add new Deta banner badge with new sponsorship tier 🙇. PR [#3194](https://github.com/tiangolo/fastapi/pull/3194) by [@tiangolo](https://github.com/tiangolo). * 👥 Update FastAPI People. PR [#3189](https://github.com/tiangolo/fastapi/pull/3189) by [@github-actions[bot]](https://github.com/apps/github-actions). From 7c9d0168ff4089e6da51b7ceb3ca16d7f8ef3f46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 10 May 2021 09:46:32 +0200 Subject: [PATCH 05/14] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20Upgrade=20setup-pyth?= =?UTF-8?q?on=20GitHub=20Action=20to=20v2=20(#3203)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-docs.yml | 2 +- .github/workflows/publish.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index f575cbf5e..72e2da107 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -13,7 +13,7 @@ jobs: run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: "3.7" - name: Install Flit diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d5f4de462..43f086e53 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -15,7 +15,7 @@ jobs: run: echo "$GITHUB_CONTEXT" - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: "3.6" - name: Install Flit diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ef3c6f010..88fa290d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,7 +16,7 @@ jobs: steps: - uses: actions/checkout@v2 - name: Set up Python - uses: actions/setup-python@v1 + uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} - name: Install Flit From c654e8384b76c95bdcf01c7306c6a00d1075379f Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 10 May 2021 07:47:11 +0000 Subject: [PATCH 06/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 912887c39..58d8228cc 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆️ Upgrade setup-python GitHub Action to v2. PR [#3203](https://github.com/tiangolo/fastapi/pull/3203) by [@tiangolo](https://github.com/tiangolo). * 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). * 🐛 Fix docs script to generate a new translation language with `overrides` boilerplate. PR [#3202](https://github.com/tiangolo/fastapi/pull/3202) by [@tiangolo](https://github.com/tiangolo). * ✨ Add new Deta banner badge with new sponsorship tier 🙇. PR [#3194](https://github.com/tiangolo/fastapi/pull/3194) by [@tiangolo](https://github.com/tiangolo). From d75126a4cef0b4b1ac01de79c42d4ce677eab4d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 10 May 2021 10:10:48 +0200 Subject: [PATCH 07/14] =?UTF-8?q?=F0=9F=91=B7=20Add=20GitHub=20Action=20ca?= =?UTF-8?q?che=20to=20speed=20up=20CI=20installs=20(#3204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build-docs.yml | 9 ++++++++- .github/workflows/publish.yml | 7 +++++++ .github/workflows/test.yml | 7 +++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 72e2da107..ad20f45b4 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -16,12 +16,19 @@ jobs: uses: actions/setup-python@v2 with: python-version: "3.7" + - uses: actions/cache@v2 + id: cache + with: + path: ${{ env.pythonLocation }} + key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-docs - name: Install Flit + if: steps.cache.outputs.cache-hit != 'true' run: python3.7 -m pip install flit - name: Install docs extras + if: steps.cache.outputs.cache-hit != 'true' run: python3.7 -m flit install --extras doc - name: Install Material for MkDocs Insiders - if: github.event.pull_request.head.repo.fork == false + if: github.event.pull_request.head.repo.fork == false && steps.cache.outputs.cache-hit != 'true' run: pip install git+https://${{ secrets.ACTIONS_TOKEN }}@github.com/squidfunk/mkdocs-material-insiders.git - name: Build Docs run: python3.7 ./scripts/docs.py build-all diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 43f086e53..9dde4e066 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -18,9 +18,16 @@ jobs: uses: actions/setup-python@v2 with: python-version: "3.6" + - uses: actions/cache@v2 + id: cache + with: + path: ${{ env.pythonLocation }} + key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-publish - name: Install Flit + if: steps.cache.outputs.cache-hit != 'true' run: pip install flit - name: Install Dependencies + if: steps.cache.outputs.cache-hit != 'true' run: flit install --symlink - name: Publish env: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 88fa290d5..f346cab6b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,9 +19,16 @@ jobs: uses: actions/setup-python@v2 with: python-version: ${{ matrix.python-version }} + - uses: actions/cache@v2 + id: cache + with: + path: ${{ env.pythonLocation }} + key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test - name: Install Flit + if: steps.cache.outputs.cache-hit != 'true' run: pip install flit - name: Install Dependencies + if: steps.cache.outputs.cache-hit != 'true' run: flit install --symlink - name: Test run: bash scripts/test.sh From 04ac4667483648a20e7642947936d60449f06b4c Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 10 May 2021 08:11:22 +0000 Subject: [PATCH 08/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 58d8228cc..818b7669b 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 👷 Add GitHub Action cache to speed up CI installs. PR [#3204](https://github.com/tiangolo/fastapi/pull/3204) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade setup-python GitHub Action to v2. PR [#3203](https://github.com/tiangolo/fastapi/pull/3203) by [@tiangolo](https://github.com/tiangolo). * 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). * 🐛 Fix docs script to generate a new translation language with `overrides` boilerplate. PR [#3202](https://github.com/tiangolo/fastapi/pull/3202) by [@tiangolo](https://github.com/tiangolo). From 4aed0411e9ead36641218319711ea69e2302bbb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=BCttner?= Date: Mon, 10 May 2021 16:09:04 +0200 Subject: [PATCH 09/14] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20=20Upgrade=20Starlet?= =?UTF-8?q?te=20to=200.14.2,=20including=20internal=20UJSONResponse=20migr?= =?UTF-8?q?ated=20from=20Starlette=20(#2335)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fastapi/responses.py | 13 ++++++- pyproject.toml | 5 +-- .../test_custom_response/test_tutorial001.py | 36 +++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 tests/test_tutorial/test_custom_response/test_tutorial001.py diff --git a/fastapi/responses.py b/fastapi/responses.py index 8d9d62dfb..6cd793157 100644 --- a/fastapi/responses.py +++ b/fastapi/responses.py @@ -7,7 +7,12 @@ from starlette.responses import PlainTextResponse as PlainTextResponse # noqa from starlette.responses import RedirectResponse as RedirectResponse # noqa from starlette.responses import Response as Response # noqa from starlette.responses import StreamingResponse as StreamingResponse # noqa -from starlette.responses import UJSONResponse as UJSONResponse # noqa + +try: + import ujson +except ImportError: # pragma: nocover + ujson = None # type: ignore + try: import orjson @@ -15,6 +20,12 @@ except ImportError: # pragma: nocover orjson = None # type: ignore +class UJSONResponse(JSONResponse): + def render(self, content: Any) -> bytes: + assert ujson is not None, "ujson must be installed to use UJSONResponse" + return ujson.dumps(content, ensure_ascii=False).encode("utf-8") + + class ORJSONResponse(JSONResponse): media_type = "application/json" diff --git a/pyproject.toml b/pyproject.toml index 66cb00345..a2845ff26 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ classifiers = [ "Topic :: Internet :: WWW/HTTP", ] requires = [ - "starlette ==0.13.6", + "starlette ==0.14.2", "pydantic >=1.0.0,<2.0.0" ] description-file = "README.md" @@ -57,6 +57,7 @@ test = [ "peewee >=3.13.3,<4.0.0", "databases[sqlite] >=0.3.2,<0.4.0", "orjson >=3.2.1,<4.0.0", + "ujson >=4.0.1,<5.0.0", "async_exit_stack >=1.0.1,<2.0.0", "async_generator >=1.10,<2.0.0", "python-multipart >=0.0.5,<0.0.6", @@ -87,7 +88,7 @@ all = [ "itsdangerous >=1.1.0,<2.0.0", "pyyaml >=5.3.1,<6.0.0", "graphene >=2.1.8,<3.0.0", - "ujson >=3.0.0,<4.0.0", + "ujson >=4.0.1,<5.0.0", "orjson >=3.2.1,<4.0.0", "email_validator >=1.1.1,<2.0.0", "uvicorn[standard] >=0.12.0,<0.14.0", diff --git a/tests/test_tutorial/test_custom_response/test_tutorial001.py b/tests/test_tutorial/test_custom_response/test_tutorial001.py new file mode 100644 index 000000000..430076f88 --- /dev/null +++ b/tests/test_tutorial/test_custom_response/test_tutorial001.py @@ -0,0 +1,36 @@ +from fastapi.testclient import TestClient + +from docs_src.custom_response.tutorial001 import app + +client = TestClient(app) + +openapi_schema = { + "openapi": "3.0.2", + "info": {"title": "FastAPI", "version": "0.1.0"}, + "paths": { + "/items/": { + "get": { + "responses": { + "200": { + "description": "Successful Response", + "content": {"application/json": {"schema": {}}}, + } + }, + "summary": "Read Items", + "operationId": "read_items_items__get", + } + } + }, +} + + +def test_openapi_schema(): + response = client.get("/openapi.json") + assert response.status_code == 200, response.text + assert response.json() == openapi_schema + + +def test_get_custom_response(): + response = client.get("/items/") + assert response.status_code == 200, response.text + assert response.json() == [{"item_id": "Foo"}] From 3819a11b5fb544287779d8b0d4b542b1344dbd7a Mon Sep 17 00:00:00 2001 From: github-actions Date: Mon, 10 May 2021 14:09:42 +0000 Subject: [PATCH 10/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 818b7669b..35f024119 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* ⬆️ Upgrade Starlette to 0.14.2, including internal `UJSONResponse` migrated from Starlette. PR [#2335](https://github.com/tiangolo/fastapi/pull/2335) by [@hanneskuettner](https://github.com/hanneskuettner). * 👷 Add GitHub Action cache to speed up CI installs. PR [#3204](https://github.com/tiangolo/fastapi/pull/3204) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade setup-python GitHub Action to v2. PR [#3203](https://github.com/tiangolo/fastapi/pull/3203) by [@tiangolo](https://github.com/tiangolo). * 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). From b890bd1dc50622ebca8e984c03a055043a882302 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Mon, 10 May 2021 17:45:21 +0200 Subject: [PATCH 11/14] =?UTF-8?q?=F0=9F=94=96=20Release=20version=200.65.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 16 ++++++++++++++-- fastapi/__init__.py | 2 +- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 35f024119..5f00b965a 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,14 +2,26 @@ ## Latest Changes -* ⬆️ Upgrade Starlette to 0.14.2, including internal `UJSONResponse` migrated from Starlette. PR [#2335](https://github.com/tiangolo/fastapi/pull/2335) by [@hanneskuettner](https://github.com/hanneskuettner). + +## 0.65.0 + +### Breaking Changes - Upgrade + +* ⬆️ Upgrade Starlette to `0.14.2`, including internal `UJSONResponse` migrated from Starlette. This includes several bug fixes and features from Starlette. PR [#2335](https://github.com/tiangolo/fastapi/pull/2335) by [@hanneskuettner](https://github.com/hanneskuettner). + +### Translations + +* 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). + +### Internal + * 👷 Add GitHub Action cache to speed up CI installs. PR [#3204](https://github.com/tiangolo/fastapi/pull/3204) by [@tiangolo](https://github.com/tiangolo). * ⬆️ Upgrade setup-python GitHub Action to v2. PR [#3203](https://github.com/tiangolo/fastapi/pull/3203) by [@tiangolo](https://github.com/tiangolo). -* 🌐 Initialize new language Polish for translations. PR [#3170](https://github.com/tiangolo/fastapi/pull/3170) by [@neternefer](https://github.com/neternefer). * 🐛 Fix docs script to generate a new translation language with `overrides` boilerplate. PR [#3202](https://github.com/tiangolo/fastapi/pull/3202) by [@tiangolo](https://github.com/tiangolo). * ✨ Add new Deta banner badge with new sponsorship tier 🙇. PR [#3194](https://github.com/tiangolo/fastapi/pull/3194) by [@tiangolo](https://github.com/tiangolo). * 👥 Update FastAPI People. PR [#3189](https://github.com/tiangolo/fastapi/pull/3189) by [@github-actions[bot]](https://github.com/apps/github-actions). * 🔊 Update FastAPI People to allow better debugging. PR [#3188](https://github.com/tiangolo/fastapi/pull/3188) by [@tiangolo](https://github.com/tiangolo). + ## 0.64.0 ### Features diff --git a/fastapi/__init__.py b/fastapi/__init__.py index 332c5aaf7..52a3b01e6 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.64.0" +__version__ = "0.65.0" from starlette import status as status From a6293397bc403254d80e8f50afbb43ae1693df46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Tue, 11 May 2021 23:17:17 +0200 Subject: [PATCH 12/14] =?UTF-8?q?=F0=9F=93=8C=20Upgrade=20pydantic=20pin,?= =?UTF-8?q?=20to=20handle=20security=20vulnerability=20CVE-2021-29510=20(#?= =?UTF-8?q?3213)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index a2845ff26..f376dcdff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ classifiers = [ ] requires = [ "starlette ==0.14.2", - "pydantic >=1.0.0,<2.0.0" + "pydantic >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<2.0.0" ] description-file = "README.md" requires-python = ">=3.6" From eaa49ebd2053d6a415a3ed3a1f1176e3aecc19b5 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 11 May 2021 21:17:51 +0000 Subject: [PATCH 13/14] =?UTF-8?q?=F0=9F=93=9D=20Update=20release=20notes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index 5f00b965a..a9e4c9d0a 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,6 +2,7 @@ ## Latest Changes +* 📌 Upgrade pydantic pin, to handle security vulnerability CVE-2021-29510. PR [#3213](https://github.com/tiangolo/fastapi/pull/3213) by [@tiangolo](https://github.com/tiangolo). ## 0.65.0 From 43df5d05edd30fdeb16a9f5b26c02d4f47bdd8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Ram=C3=ADrez?= Date: Tue, 11 May 2021 23:19:14 +0200 Subject: [PATCH 14/14] =?UTF-8?q?=F0=9F=94=96=20Release=20FastAPI=20versio?= =?UTF-8?q?n=200.65.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/en/docs/release-notes.md | 7 ++++++- fastapi/__init__.py | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/en/docs/release-notes.md b/docs/en/docs/release-notes.md index a9e4c9d0a..25c8d03ca 100644 --- a/docs/en/docs/release-notes.md +++ b/docs/en/docs/release-notes.md @@ -2,7 +2,12 @@ ## Latest Changes -* 📌 Upgrade pydantic pin, to handle security vulnerability CVE-2021-29510. PR [#3213](https://github.com/tiangolo/fastapi/pull/3213) by [@tiangolo](https://github.com/tiangolo). + +## 0.65.1 + +### Security fixes + +* 📌 Upgrade pydantic pin, to handle security vulnerability [CVE-2021-29510](https://github.com/samuelcolvin/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh). PR [#3213](https://github.com/tiangolo/fastapi/pull/3213) by [@tiangolo](https://github.com/tiangolo). ## 0.65.0 diff --git a/fastapi/__init__.py b/fastapi/__init__.py index 52a3b01e6..80f61d9f4 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.65.0" +__version__ = "0.65.1" from starlette import status as status