mirror of https://github.com/tiangolo/fastapi.git
⬆ Upgrade version required of Starlette from `0.19.1` to `0.20.4` (#4820)
Co-authored-by: Sebastián Ramírez <tiangolo@gmail.com>
This commit is contained in:
parent
1073062c7f
commit
adcf03f2bc
|
|
@ -33,9 +33,10 @@ from fastapi.types import DecoratedCallable
|
||||||
from fastapi.utils import generate_unique_id
|
from fastapi.utils import generate_unique_id
|
||||||
from starlette.applications import Starlette
|
from starlette.applications import Starlette
|
||||||
from starlette.datastructures import State
|
from starlette.datastructures import State
|
||||||
from starlette.exceptions import ExceptionMiddleware, HTTPException
|
from starlette.exceptions import HTTPException
|
||||||
from starlette.middleware import Middleware
|
from starlette.middleware import Middleware
|
||||||
from starlette.middleware.errors import ServerErrorMiddleware
|
from starlette.middleware.errors import ServerErrorMiddleware
|
||||||
|
from starlette.middleware.exceptions import ExceptionMiddleware
|
||||||
from starlette.requests import Request
|
from starlette.requests import Request
|
||||||
from starlette.responses import HTMLResponse, JSONResponse, Response
|
from starlette.responses import HTMLResponse, JSONResponse, Response
|
||||||
from starlette.routing import BaseRoute
|
from starlette.routing import BaseRoute
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ class APIKeyQuery(APIKeyBase):
|
||||||
self.auto_error = auto_error
|
self.auto_error = auto_error
|
||||||
|
|
||||||
async def __call__(self, request: Request) -> Optional[str]:
|
async def __call__(self, request: Request) -> Optional[str]:
|
||||||
api_key: str = request.query_params.get(self.model.name)
|
api_key = request.query_params.get(self.model.name)
|
||||||
if not api_key:
|
if not api_key:
|
||||||
if self.auto_error:
|
if self.auto_error:
|
||||||
raise HTTPException(
|
raise HTTPException(
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ classifiers = [
|
||||||
"Topic :: Internet :: WWW/HTTP",
|
"Topic :: Internet :: WWW/HTTP",
|
||||||
]
|
]
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"starlette==0.19.1",
|
"starlette==0.20.4",
|
||||||
"pydantic >=1.6.2,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<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",
|
||||||
]
|
]
|
||||||
dynamic = ["version"]
|
dynamic = ["version"]
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,6 @@ from unittest.mock import MagicMock
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py37
|
|
||||||
|
|
||||||
openapi_schema = {
|
openapi_schema = {
|
||||||
"openapi": "3.0.2",
|
"openapi": "3.0.2",
|
||||||
"info": {"title": "FastAPI", "version": "0.1.0"},
|
"info": {"title": "FastAPI", "version": "0.1.0"},
|
||||||
|
|
@ -340,14 +338,12 @@ def client():
|
||||||
test_db.unlink()
|
test_db.unlink()
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_openapi_schema(client):
|
def test_openapi_schema(client):
|
||||||
response = client.get("/openapi.json")
|
response = client.get("/openapi.json")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
assert response.json() == openapi_schema
|
assert response.json() == openapi_schema
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_create_user(client):
|
def test_create_user(client):
|
||||||
test_user = {"email": "johndoe@example.com", "password": "secret"}
|
test_user = {"email": "johndoe@example.com", "password": "secret"}
|
||||||
response = client.post("/users/", json=test_user)
|
response = client.post("/users/", json=test_user)
|
||||||
|
|
@ -359,7 +355,6 @@ def test_create_user(client):
|
||||||
assert response.status_code == 400, response.text
|
assert response.status_code == 400, response.text
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_get_user(client):
|
def test_get_user(client):
|
||||||
response = client.get("/users/1")
|
response = client.get("/users/1")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
|
|
@ -368,13 +363,11 @@ def test_get_user(client):
|
||||||
assert "id" in data
|
assert "id" in data
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_inexistent_user(client):
|
def test_inexistent_user(client):
|
||||||
response = client.get("/users/999")
|
response = client.get("/users/999")
|
||||||
assert response.status_code == 404, response.text
|
assert response.status_code == 404, response.text
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_get_users(client):
|
def test_get_users(client):
|
||||||
response = client.get("/users/")
|
response = client.get("/users/")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
|
|
@ -386,7 +379,6 @@ def test_get_users(client):
|
||||||
time.sleep = MagicMock()
|
time.sleep = MagicMock()
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_get_slowusers(client):
|
def test_get_slowusers(client):
|
||||||
response = client.get("/slowusers/")
|
response = client.get("/slowusers/")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
|
|
@ -395,7 +387,6 @@ def test_get_slowusers(client):
|
||||||
assert "id" in data[0]
|
assert "id" in data[0]
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_create_item(client):
|
def test_create_item(client):
|
||||||
item = {"title": "Foo", "description": "Something that fights"}
|
item = {"title": "Foo", "description": "Something that fights"}
|
||||||
response = client.post("/users/1/items/", json=item)
|
response = client.post("/users/1/items/", json=item)
|
||||||
|
|
@ -419,7 +410,6 @@ def test_create_item(client):
|
||||||
assert item_to_check["description"] == item["description"]
|
assert item_to_check["description"] == item["description"]
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_read_items(client):
|
def test_read_items(client):
|
||||||
response = client.get("/items/")
|
response = client.get("/items/")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,6 @@ from fastapi import FastAPI
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from pydantic import BaseModel
|
from pydantic import BaseModel
|
||||||
|
|
||||||
from .utils import needs_py37
|
|
||||||
|
|
||||||
# In Python 3.6:
|
|
||||||
# u = Union[ExtendedItem, Item] == __main__.Item
|
|
||||||
|
|
||||||
# But in Python 3.7:
|
|
||||||
# u = Union[ExtendedItem, Item] == typing.Union[__main__.ExtendedItem, __main__.Item]
|
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -118,21 +110,18 @@ inherited_item_openapi_schema = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_inherited_item_openapi_schema():
|
def test_inherited_item_openapi_schema():
|
||||||
response = client.get("/openapi.json")
|
response = client.get("/openapi.json")
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
assert response.json() == inherited_item_openapi_schema
|
assert response.json() == inherited_item_openapi_schema
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_post_extended_item():
|
def test_post_extended_item():
|
||||||
response = client.post("/items/", json={"name": "Foo", "age": 5})
|
response = client.post("/items/", json={"name": "Foo", "age": 5})
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
assert response.json() == {"item": {"name": "Foo", "age": 5}}
|
assert response.json() == {"item": {"name": "Foo", "age": 5}}
|
||||||
|
|
||||||
|
|
||||||
@needs_py37
|
|
||||||
def test_post_item():
|
def test_post_item():
|
||||||
response = client.post("/items/", json={"name": "Foo"})
|
response = client.post("/items/", json={"name": "Foo"})
|
||||||
assert response.status_code == 200, response.text
|
assert response.status_code == 200, response.text
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ import sys
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
needs_py37 = pytest.mark.skipif(sys.version_info < (3, 7), reason="requires python3.7+")
|
|
||||||
needs_py39 = pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9+")
|
needs_py39 = pytest.mark.skipif(sys.version_info < (3, 9), reason="requires python3.9+")
|
||||||
needs_py310 = pytest.mark.skipif(
|
needs_py310 = pytest.mark.skipif(
|
||||||
sys.version_info < (3, 10), reason="requires python3.10+"
|
sys.version_info < (3, 10), reason="requires python3.10+"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue