]> git.ipfire.org Git - thirdparty/fastapi/fastapi.git/commitdiff
🔧 Update package metadata, drop support for Python 3.6, move build internals from...
authorOfek Lev <ofekmeister@gmail.com>
Wed, 14 Sep 2022 18:31:19 +0000 (14:31 -0400)
committerGitHub <noreply@github.com>
Wed, 14 Sep 2022 18:31:19 +0000 (20:31 +0200)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
28 files changed:
.github/workflows/build-docs.yml
.github/workflows/publish.yml
.github/workflows/test.yml
README.md
docs/de/docs/index.md
docs/en/docs/contributing.md
docs/en/docs/index.md
docs/es/docs/index.md
docs/fr/docs/index.md
docs/id/docs/index.md
docs/it/docs/index.md
docs/ja/docs/contributing.md
docs/ja/docs/index.md
docs/ko/docs/index.md
docs/nl/docs/index.md
docs/pl/docs/index.md
docs/pt/docs/contributing.md
docs/pt/docs/index.md
docs/ru/docs/index.md
docs/sq/docs/index.md
docs/sv/docs/index.md
docs/tr/docs/index.md
docs/uk/docs/index.md
docs/zh/docs/contributing.md
fastapi/concurrency.py
fastapi/dependencies/utils.py
fastapi/encoders.py
pyproject.toml

index 0d666b82a8a45ac0cad6312a38c38b685708fe22..af8909845b5b458aedb122c7a827d13e2bc788cc 100644 (file)
@@ -23,17 +23,14 @@ jobs:
         with:
           path: ${{ env.pythonLocation }}
           key: ${{ runner.os }}-python-docs-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-v03
-      - 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 --deps production --extras doc
+        run: pip install .[doc]
       - name: Install Material for MkDocs Insiders
         if: ( github.event_name != 'pull_request' || 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
+        run: python ./scripts/docs.py build-all
       - name: Zip docs
         run: bash ./scripts/zip-docs.sh
       - uses: actions/upload-artifact@v3
index 02846cefdbdb3abe95c98169c8066699acea1c7d..fe4c5ee86c8c55775146b1d259e90541b9c2ecba 100644 (file)
@@ -17,23 +17,21 @@ jobs:
       - name: Set up Python
         uses: actions/setup-python@v4
         with:
-          python-version: "3.6"
+          python-version: "3.7"
       - uses: actions/cache@v3
         id: cache
         with:
           path: ${{ env.pythonLocation }}
           key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-publish
-      - name: Install Flit
+      - name: Install build dependencies
         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
+        run: pip install build
+      - name: Build distribution
+        run: python -m build
       - name: Publish
-        env:
-          FLIT_USERNAME: ${{ secrets.FLIT_USERNAME }}
-          FLIT_PASSWORD: ${{ secrets.FLIT_PASSWORD }}
-        run: bash scripts/publish.sh
+        uses: pypa/gh-action-pypi-publish@v1.5.1
+        with:
+          password: ${{ secrets.PYPI_API_TOKEN }}
       - name: Dump GitHub context
         env:
           GITHUB_CONTEXT: ${{ toJson(github) }}
index 14dc141d93b2f746ba516f97a1d64c03d0e4b7d9..3e6225db3343f688bf6d6cced4522089324f7c89 100644 (file)
@@ -12,7 +12,7 @@ jobs:
     runs-on: ubuntu-latest
     strategy:
       matrix:
-        python-version: ["3.6", "3.7", "3.8", "3.9", "3.10"]
+        python-version: ["3.7", "3.8", "3.9", "3.10"]
       fail-fast: false
 
     steps:
@@ -26,14 +26,10 @@ jobs:
         with:
           path: ${{ env.pythonLocation }}
           key: ${{ runner.os }}-python-${{ env.pythonLocation }}-${{ hashFiles('pyproject.toml') }}-test-v02
-      - name: Install Flit
-        if: steps.cache.outputs.cache-hit != 'true'
-        run: pip install flit
       - name: Install Dependencies
         if: steps.cache.outputs.cache-hit != 'true'
-        run: flit install --symlink
+        run: pip install -e .[all,dev,doc,test]
       - name: Lint
-        if: ${{ matrix.python-version != '3.6' }}
         run: bash scripts/lint.sh
       - name: Test
         run: bash scripts/test.sh
index bc00d9ed9ab86c12e6a448c31be459dcbd8dc382..9d4f1cd902e46b4457ecde1d67eef194d94c1772 100644 (file)
--- a/README.md
+++ b/README.md
@@ -27,7 +27,7 @@
 
 ---
 
-FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
+FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.
 
 The key features are:
 
@@ -112,7 +112,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
@@ -328,7 +328,7 @@ 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+**.
+Just standard **Python 3.7+**.
 
 For example, for an `int`:
 
index 287c79cff6e1a78ae5e0176d6c4dc51c6872b927..07f51b1be79771b45db7c01e8d77bf0e6c34fe02 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index ca51c6e82afda8c978999ff5c4393ca71a163d19..39d7dd19304dd534cb84599d4542111cfdc0b50f 100644 (file)
@@ -99,61 +99,29 @@ $ python -m pip install --upgrade pip
 !!! tip
     Every time you install a new package with `pip` under that environment, activate the environment again.
 
-    This makes sure that if you use a terminal program installed by that package (like `flit`), you use the one from your local environment and not any other that could be installed globally.
+    This makes sure that if you use a terminal program installed by that package, you use the one from your local environment and not any other that could be installed globally.
 
-### Flit
+### pip
 
-**FastAPI** uses <a href="https://flit.readthedocs.io/en/latest/index.html" class="external-link" target="_blank">Flit</a> to build, package and publish the project.
-
-After activating the environment as described above, install `flit`:
+After activating the environment as described above:
 
 <div class="termy">
 
 ```console
-$ pip install flit
+$ pip install -e .[dev,doc,test]
 
 ---> 100%
 ```
 
 </div>
 
-Now re-activate the environment to make sure you are using the `flit` you just installed (and not a global one).
-
-And now use `flit` to install the development dependencies:
-
-=== "Linux, macOS"
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --symlink
-
-    ---> 100%
-    ```
-
-    </div>
-
-=== "Windows"
-
-    If you are on Windows, use `--pth-file` instead of `--symlink`:
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --pth-file
-
-    ---> 100%
-    ```
-
-    </div>
-
 It will install all the dependencies and your local FastAPI in your local environment.
 
 #### Using your local FastAPI
 
 If you create a Python file that imports and uses FastAPI, and run it with the Python from your local environment, it will use your local FastAPI source code.
 
-And if you update that local FastAPI source code, as it is installed with `--symlink` (or `--pth-file` on Windows), when you run that Python file again, it will use the fresh version of FastAPI you just edited.
+And if you update that local FastAPI source code, as it is installed with `-e`, when you run that Python file again, it will use the fresh version of FastAPI you just edited.
 
 That way, you don't have to "install" your local version to be able to test every change.
 
@@ -171,7 +139,7 @@ $ bash scripts/format.sh
 
 It will also auto-sort all your imports.
 
-For it to sort them correctly, you need to have FastAPI installed locally in your environment, with the command in the section above using `--symlink` (or `--pth-file` on Windows).
+For it to sort them correctly, you need to have FastAPI installed locally in your environment, with the command in the section above using `-e`.
 
 ## Docs
 
index 97ec0ffcff74690c4bb07c4eb7d45f4340c3f870..afdd62ceec01c2fae3b8c77ea37d1b1a116504fe 100644 (file)
@@ -27,7 +27,7 @@
 
 ---
 
-FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
+FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.
 
 The key features are:
 
@@ -109,7 +109,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
@@ -325,7 +325,7 @@ 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+**.
+Just standard **Python 3.7+**.
 
 For example, for an `int`:
 
index 44c59202aa6b6cfcfdbecc3c0ffd23aad5614f26..aa3fa222809398457a3039e317845a87b3b36e43 100644 (file)
@@ -106,7 +106,7 @@ Si estás construyendo un app de <abbr title="Interfaz de línea de comandos en
 
 ## Requisitos
 
-Python 3.6+
+Python 3.7+
 
 FastAPI está sobre los hombros de gigantes:
 
index 1307c063bbc8e8cf5424c152add29201630b0ebe..69520445889cf058539f1e43be7ff9b69869783c 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 041e0b754f1c1836967e5631613a7078aa5b2bb5..3129f9dc6dc33ec9aa7def54d4edad90784b707a 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 5cbe78a717bb7fdeaa9317c691458238a8b4f8dc..852a5e56e82b5a3a252fc86e1cb6bbcafaba7bd3 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 07e53eeb7022b607953fa01593fcafa037569c76..8bad864a2b7719702828a2b591a2c8109c3f1dc6 100644 (file)
@@ -88,62 +88,29 @@ $ python -m venv env
 !!! tip "豆知識"
     この環境で`pip`を使って新しいパッケージをインストールするたびに、仮想環境を再度有効化します。
 
-    これにより、そのパッケージによってインストールされたターミナルのプログラム (`flit`など) を使用する場合、ローカル環境のものを使用し、グローバルにインストールされたものは使用されなくなります。
+    これにより、そのパッケージによってインストールされたターミナルのプログラム を使用する場合、ローカル環境のものを使用し、グローバルにインストールされたものは使用されなくなります。
 
-### Flit
+### pip
 
-**FastAPI**は<a href="https://flit.readthedocs.io/en/latest/index.html" class="external-link" target="_blank">Flit</a> を使って、ビルド、パッケージ化、公開します。
-
-上記のように環境を有効化した後、`flit`をインストールします:
+上記のように環境を有効化した後:
 
 <div class="termy">
 
 ```console
-$ pip install flit
+$ pip install -e .[dev,doc,test]
 
 ---> 100%
 ```
 
 </div>
 
-
-次に、環境を再び有効化して、インストールしたばかりの`flit` (グローバルではない) を使用していることを確認します。
-
-そして、`flit`を使用して開発のための依存関係をインストールします:
-
-=== "Linux, macOS"
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --symlink
-
-    ---> 100%
-    ```
-
-    </div>
-
-=== "Windows"
-
-    Windowsユーザーは、`--symlink`のかわりに`--pth-file`を使用します:
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --pth-file
-
-    ---> 100%
-    ```
-
-    </div>
-
 これで、すべての依存関係とFastAPIを、ローカル環境にインストールします。
 
 #### ローカル環境でFastAPIを使う
 
 FastAPIをインポートして使用するPythonファイルを作成し、ローカル環境で実行すると、ローカルのFastAPIソースコードが使用されます。
 
-そして、`--symlink` (Windowsでは` --pth-file`) でインストールされているローカルのFastAPIソースコードを更新した場合、そのPythonファイルを再度実行すると、更新したばかりの新しいバージョンのFastAPIが使用されます。
+そして、`-e` でインストールされているローカルのFastAPIソースコードを更新した場合、そのPythonファイルを再度実行すると、更新したばかりの新しいバージョンのFastAPIが使用されます。
 
 これにより、ローカルバージョンを「インストール」しなくても、すべての変更をテストできます。
 
@@ -161,7 +128,7 @@ $ bash scripts/format.sh
 
 また、すべてのインポートを自動でソートします。
 
-正しく並べ替えるには、上記セクションのコマンドで `--symlink` (Windowsの場合は` --pth-file`) を使い、FastAPIをローカル環境にインストールしている必要があります。
+正しく並べ替えるには、上記セクションのコマンドで `-e` を使い、FastAPIをローカル環境にインストールしている必要があります。
 
 ### インポートの整形
 
index 51977037c2208b7feab4e3903bdfb8324645ade2..177a78786cb39f2e9705160542733685178de057 100644 (file)
@@ -107,7 +107,7 @@ FastAPI は、Pythonの標準である型ヒントに基づいてPython 3.6 以
 
 ## 必要条件
 
-Python 3.6+
+Python 3.7+
 
 FastAPI は巨人の肩の上に立っています。
 
index 5a258f47b2504b0bcdd0e2378642871895ae0ea1..6d35afc47f28253988050cb30747c0783b7bba49 100644 (file)
@@ -107,7 +107,7 @@ FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트
 
 ## 요구사항
 
-Python 3.6+
+Python 3.7+
 
 FastAPI는 거인들의 어깨 위에 서 있습니다:
 
index fd52f994c83a9155862220d7bcab0e4aa4a957c6..fe55f6c1bb3b607189fb515c3a170116f4d4d44a 100644 (file)
@@ -114,7 +114,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 9cc99ba7200a08747c32368f5688a4a129ff5c8a..671c235a67098a51fc1039ca4009cd5688d4001c 100644 (file)
@@ -106,7 +106,7 @@ Jeżeli tworzysz aplikacje <abbr title="aplikacja z interfejsem konsolowym">CLI<
 
 ## Wymagania
 
-Python 3.6+
+Python 3.7+
 
 FastAPI oparty jest na:
 
index 327b8b607606e74c6b76fda6f25a95cc59f58be7..dcb6a80db1e794d5256218eca68a69a88f93d3e7 100644 (file)
@@ -89,61 +89,29 @@ Se ele exibir o binário `pip` em `env/bin/pip` então funcionou. 🎉
 !!! tip
     Toda vez que você instalar um novo pacote com `pip` nesse ambiente, ative o ambiente novamente.
 
-    Isso garante que se você usar um programa instalado por aquele pacote (como `flit`), você utilizará aquele de seu ambiente local e não outro que possa estar instalado globalmente.
+    Isso garante que se você usar um programa instalado por aquele pacote, você utilizará aquele de seu ambiente local e não outro que possa estar instalado globalmente.
 
-### Flit
+### pip
 
-**FastAPI** utiliza <a href="https://flit.readthedocs.io/en/latest/index.html" class="external-link" target="_blank">Flit</a> para construir, empacotar e publicar o projeto.
-
-Após ativar o ambiente como descrito acima, instale o `flit`:
+Após ativar o ambiente como descrito acima:
 
 <div class="termy">
 
 ```console
-$ pip install flit
+$ pip install -e .[dev,doc,test]
 
 ---> 100%
 ```
 
 </div>
 
-Ative novamente o ambiente para ter certeza que você esteja utilizando o `flit` que você acabou de instalar (e não um global).
-
-E agora use `flit` para instalar as dependências de desenvolvimento:
-
-=== "Linux, macOS"
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --symlink
-
-    ---> 100%
-    ```
-
-    </div>
-
-=== "Windows"
-
-    Se você está no Windows, use `--pth-file` ao invés de `--symlink`:
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --pth-file
-
-    ---> 100%
-    ```
-
-    </div>
-
 Isso irá instalar todas as dependências e seu FastAPI local em seu ambiente local.
 
 #### Usando seu FastAPI local
 
 Se você cria um arquivo Python que importa e usa FastAPI, e roda com Python de seu ambiente local, ele irá utilizar o código fonte de seu FastAPI local.
 
-E se você atualizar o código fonte do FastAPI local, como ele é instalado com `--symlink` (ou `--pth-file` no Windows), quando você rodar aquele arquivo Python novamente, ele irá utilizar a nova versão do FastAPI que você acabou de editar.
+E se você atualizar o código fonte do FastAPI local, como ele é instalado com `-e`, quando você rodar aquele arquivo Python novamente, ele irá utilizar a nova versão do FastAPI que você acabou de editar.
 
 Desse modo, você não tem que "instalar" sua versão local para ser capaz de testar cada mudança.
 
@@ -161,7 +129,7 @@ $ bash scripts/format.sh
 
 Ele irá organizar também todos os seus imports.
 
-Para que ele organize os imports corretamente, você precisa ter o FastAPI instalado localmente em seu ambiente, com o comando na seção acima usando `--symlink` (ou `--pth-file` no Windows).
+Para que ele organize os imports corretamente, você precisa ter o FastAPI instalado localmente em seu ambiente, com o comando na seção acima usando `-e`.
 
 ### Formato dos imports
 
index 51af486b973072dbd2416bd86c17e3a5c99c89c9..ccbb8dba8dbecf3b051b030099036bb4eb48c078 100644 (file)
@@ -100,7 +100,7 @@ Se você estiver construindo uma aplicação <abbr title="Command Line Interface
 
 ## Requisitos
 
-Python 3.6+
+Python 3.7+
 
 FastAPI está nos ombros de gigantes:
 
index 448e2c70793d46640432f0cb098d32e7383d3e3b..24f547ecc0f5919e81d993cd14b1320d5a8c3304 100644 (file)
@@ -109,7 +109,7 @@ FastAPI — это современный, быстрый (высокопрои
 
 ## Зависимости
 
-Python 3.6+
+Python 3.7+
 
 FastAPI стоит на плечах гигантов:
 
index 2b64003fe8d154b66d8514170ee99021138395fe..e799ff8d580e0db09876a7120e4d97493630829f 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index fd52f994c83a9155862220d7bcab0e4aa4a957c6..fe55f6c1bb3b607189fb515c3a170116f4d4d44a 100644 (file)
@@ -114,7 +114,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 0d5337c87462da5fc82d8be0b3deb04e91641c38..73caa6d61072c295f8e97d1bf11b7cb79bbd770f 100644 (file)
@@ -119,7 +119,7 @@ Eğer API yerine <abbr title="Command Line Interface">komut satırı uygulaması
 
 ## Gereksinimler
 
-Python 3.6+
+Python 3.7+
 
 FastAPI iki devin omuzları üstünde duruyor:
 
index 2b64003fe8d154b66d8514170ee99021138395fe..e799ff8d580e0db09876a7120e4d97493630829f 100644 (file)
@@ -111,7 +111,7 @@ If you are building a <abbr title="Command Line Interface">CLI</abbr> app to be
 
 ## Requirements
 
-Python 3.6+
+Python 3.7+
 
 FastAPI stands on the shoulders of giants:
 
index 95500d12be3a6d76c085ad266b5dee4aa3338773..ca3646289e9bda207ca4ad72fd63ef6687e7f165 100644 (file)
@@ -88,61 +88,29 @@ $ python -m venv env
 !!! tip
     每一次你在该环境下使用 `pip` 安装了新软件包时,请再次激活该环境。
 
-    这样可以确保你在使用由该软件包安装的终端程序(如 `flit`)时使用的是当前虚拟环境中的程序,而不是其他的可能是全局安装的程序。
+    这样可以确保你在使用由该软件包安装的终端程序时使用的是当前虚拟环境中的程序,而不是其他的可能是全局安装的程序。
 
-### Flit
+### pip
 
-**FastAPI** 使用 <a href="https://flit.readthedocs.io/en/latest/index.html" class="external-link" target="_blank">Flit</a> 来构建、打包和发布项目。
-
-如上所述激活环境后,安装 `flit`:
+如上所述激活环境后:
 
 <div class="termy">
 
 ```console
-$ pip install flit
+$ pip install -e .[dev,doc,test]
 
 ---> 100%
 ```
 
 </div>
 
-现在重新激活环境,以确保你正在使用的是刚刚安装的 `flit`(而不是全局环境的)。
-
-然后使用 `flit` 来安装开发依赖:
-
-=== "Linux, macOS"
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --symlink
-
-    ---> 100%
-    ```
-
-    </div>
-
-=== "Windows"
-
-    If you are on Windows, use `--pth-file` instead of `--symlink`:
-
-    <div class="termy">
-
-    ```console
-    $ flit install --deps develop --pth-file
-
-    ---> 100%
-    ```
-
-    </div>
-
 这将在虚拟环境中安装所有依赖和本地版本的 FastAPI。
 
 #### 使用本地 FastAPI
 
 如果你创建一个导入并使用 FastAPI 的 Python 文件,然后使用虚拟环境中的 Python 运行它,它将使用你本地的 FastAPI 源码。
 
-并且如果你更改该本地 FastAPI 的源码,由于它是通过 `--symlink` (或 Windows 上的 `--pth-file`)安装的,当你再次运行那个 Python 文件,它将使用你刚刚编辑过的最新版本的 FastAPI。
+并且如果你更改该本地 FastAPI 的源码,由于它是通过 `-e` 安装的,当你再次运行那个 Python 文件,它将使用你刚刚编辑过的最新版本的 FastAPI。
 
 这样,你不必再去重新"安装"你的本地版本即可测试所有更改。
 
@@ -160,7 +128,7 @@ $ bash scripts/format.sh
 
 它还会自动对所有导入代码进行整理。
 
-为了使整理正确进行,你需要在当前环境中安装本地的 FastAPI,即在运行上述段落中的命令时添加 `--symlink`(或 Windows 上的 `--pth-file`)
+为了使整理正确进行,你需要在当前环境中安装本地的 FastAPI,即在运行上述段落中的命令时添加 `-e`
 
 ### 格式化导入
 
index c728ec1d22915fc5a27c3f3e2de698711ea73b06..31b878d5df8a5d1c9687a8fdbf2f377e844d7f48 100644 (file)
@@ -1,4 +1,5 @@
-import sys
+from contextlib import AsyncExitStack as AsyncExitStack  # noqa
+from contextlib import asynccontextmanager as asynccontextmanager
 from typing import AsyncGenerator, ContextManager, TypeVar
 
 import anyio
@@ -9,14 +10,6 @@ from starlette.concurrency import (  # noqa
     run_until_first_complete as run_until_first_complete,
 )
 
-if sys.version_info >= (3, 7):
-    from contextlib import AsyncExitStack as AsyncExitStack
-    from contextlib import asynccontextmanager as asynccontextmanager
-else:
-    from contextlib2 import AsyncExitStack as AsyncExitStack  # noqa
-    from contextlib2 import asynccontextmanager as asynccontextmanager  # noqa
-
-
 _T = TypeVar("_T")
 
 
index d098b65f1a5f5758c37e9d06bdf794761c647ebb..cdc48c339dc507fd1938f9206d73c8e0176acaac 100644 (file)
@@ -7,6 +7,7 @@ from typing import (
     Callable,
     Coroutine,
     Dict,
+    ForwardRef,
     List,
     Mapping,
     Optional,
@@ -47,7 +48,7 @@ from pydantic.fields import (
     Undefined,
 )
 from pydantic.schema import get_annotation_from_field_info
-from pydantic.typing import ForwardRef, evaluate_forwardref
+from pydantic.typing import evaluate_forwardref
 from pydantic.utils import lenient_issubclass
 from starlette.background import BackgroundTasks
 from starlette.concurrency import run_in_threadpool
index 93045ca27f1589c8b1632a30cfa094a7492a9782..6bde9f4abf5830dd0ab733d395947d0025bafe9f 100644 (file)
@@ -54,8 +54,8 @@ def jsonable_encoder(
         if custom_encoder:
             encoder.update(custom_encoder)
         obj_dict = obj.dict(
-            include=include,  # type: ignore # in Pydantic
-            exclude=exclude,  # type: ignore # in Pydantic
+            include=include,
+            exclude=exclude,
             by_alias=by_alias,
             exclude_unset=exclude_unset,
             exclude_none=exclude_none,
index 3b77b113b9217a56acdea385686b7ed392d2190a..f5c9efd2aac06c6314e6b2586d75e35866602791 100644 (file)
@@ -1,12 +1,16 @@
 [build-system]
-requires = ["flit"]
-build-backend = "flit.buildapi"
+requires = ["hatchling"]
+build-backend = "hatchling.build"
 
-[tool.flit.metadata]
-module = "fastapi"
-author = "Sebastián Ramírez"
-author-email = "tiangolo@gmail.com"
-home-page = "https://github.com/tiangolo/fastapi"
+[project]
+name = "fastapi"
+description = "FastAPI framework, high performance, easy to learn, fast to code, ready for production"
+readme = "README.md"
+requires-python = ">=3.7"
+license = "MIT"
+authors = [
+    { name = "Sebastián Ramírez", email = "tiangolo@gmail.com" },
+]
 classifiers = [
     "Intended Audience :: Information Technology",
     "Intended Audience :: System Administrators",
@@ -26,7 +30,6 @@ classifiers = [
     "Intended Audience :: Developers",
     "License :: OSI Approved :: MIT License",
     "Programming Language :: Python :: 3 :: Only",
-    "Programming Language :: Python :: 3.6",
     "Programming Language :: Python :: 3.7",
     "Programming Language :: Python :: 3.8",
     "Programming Language :: Python :: 3.9",
@@ -34,17 +37,17 @@ classifiers = [
     "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
     "Topic :: Internet :: WWW/HTTP",
 ]
-requires = [
+dependencies = [
     "starlette==0.19.1",
     "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.1"
+dynamic = ["version"]
 
-[tool.flit.metadata.urls]
+[project.urls]
+Homepage = "https://github.com/tiangolo/fastapi"
 Documentation = "https://fastapi.tiangolo.com/"
 
-[tool.flit.metadata.requires-extra]
+[project.optional-dependencies]
 test = [
     "pytest >=6.2.4,<7.0.0",
     "pytest-cov >=2.12.0,<4.0.0",
@@ -67,7 +70,6 @@ test = [
     # types
     "types-ujson ==4.2.1",
     "types-orjson ==3.6.2",
-    "types-dataclasses ==0.6.5; python_version<'3.7'",
 ]
 doc = [
     "mkdocs >=1.1.2,<2.0.0",
@@ -99,6 +101,9 @@ all = [
     "uvicorn[standard] >=0.12.0,<0.18.0",
 ]
 
+[tool.hatch.version]
+path = "fastapi/__init__.py"
+
 [tool.isort]
 profile = "black"
 known_third_party = ["fastapi", "pydantic", "starlette"]
@@ -128,6 +133,4 @@ filterwarnings = [
     # TODO: needed by asyncio in Python 3.9.7 https://bugs.python.org/issue45097, try to remove on 3.9.8
     'ignore:The loop argument is deprecated since Python 3\.8, and scheduled for removal in Python 3\.10:DeprecationWarning:asyncio',
     'ignore:starlette.middleware.wsgi is deprecated and will be removed in a future release\..*:DeprecationWarning:starlette',
-    # TODO: remove after dropping support for Python 3.6
-    'ignore:Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography and will be removed in a future release.:UserWarning:jose',
 ]