mirror of https://github.com/tiangolo/fastapi.git
Remove code examples for Python 3.8 in `query_params_str_validations`
This commit is contained in:
parent
2c6bc791d5
commit
c2af158f6c
|
|
@ -1,7 +1,6 @@
|
||||||
from typing import Union
|
from typing import Annotated, Union
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
from fastapi import FastAPI, Query
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
app = FastAPI()
|
||||||
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
q: Annotated[Union[str, None], Query(min_length=3, max_length=50)] = None,
|
|
||||||
):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
q: Annotated[
|
|
||||||
Union[str, None], Query(min_length=3, max_length=50, pattern="^fixedquery$")
|
|
||||||
] = None,
|
|
||||||
):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[str, Query(min_length=3)] = "fixedquery"):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[str, Query(min_length=3)]):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[Union[str, None], Query(min_length=3)]):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
q: Annotated[Union[str, None], Query(title="Query string", min_length=3)] = None,
|
|
||||||
):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
q: Annotated[
|
|
||||||
Union[str, None],
|
|
||||||
Query(
|
|
||||||
title="Query string",
|
|
||||||
description="Query string for the items to search in the database that have a good match",
|
|
||||||
min_length=3,
|
|
||||||
),
|
|
||||||
] = None,
|
|
||||||
):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[Union[str, None], Query(alias="item-query")] = None):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
q: Annotated[
|
|
||||||
Union[str, None],
|
|
||||||
Query(
|
|
||||||
alias="item-query",
|
|
||||||
title="Query string",
|
|
||||||
description="Query string for the items to search in the database that have a good match",
|
|
||||||
min_length=3,
|
|
||||||
max_length=50,
|
|
||||||
pattern="^fixedquery$",
|
|
||||||
deprecated=True,
|
|
||||||
),
|
|
||||||
] = None,
|
|
||||||
):
|
|
||||||
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
|
|
||||||
if q:
|
|
||||||
results.update({"q": q})
|
|
||||||
return results
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
from typing import List, Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Union[List[str], None] = Query(default=None)):
|
|
||||||
query_items = {"q": q}
|
|
||||||
return query_items
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from typing import List, Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[Union[List[str], None], Query()] = None):
|
|
||||||
query_items = {"q": q}
|
|
||||||
return query_items
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
from typing import List
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: List[str] = Query(default=["foo", "bar"])):
|
|
||||||
query_items = {"q": q}
|
|
||||||
return query_items
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
from typing import List
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[List[str], Query()] = ["foo", "bar"]):
|
|
||||||
query_items = {"q": q}
|
|
||||||
return query_items
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(q: Annotated[list, Query()] = []):
|
|
||||||
query_items = {"q": q}
|
|
||||||
return query_items
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI, Query
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
hidden_query: Annotated[Union[str, None], Query(include_in_schema=False)] = None,
|
|
||||||
):
|
|
||||||
if hidden_query:
|
|
||||||
return {"hidden_query": hidden_query}
|
|
||||||
else:
|
|
||||||
return {"hidden_query": "Not found"}
|
|
||||||
|
|
@ -1,31 +0,0 @@
|
||||||
import random
|
|
||||||
from typing import Union
|
|
||||||
|
|
||||||
from fastapi import FastAPI
|
|
||||||
from pydantic import AfterValidator
|
|
||||||
from typing_extensions import Annotated
|
|
||||||
|
|
||||||
app = FastAPI()
|
|
||||||
|
|
||||||
data = {
|
|
||||||
"isbn-9781529046137": "The Hitchhiker's Guide to the Galaxy",
|
|
||||||
"imdb-tt0371724": "The Hitchhiker's Guide to the Galaxy",
|
|
||||||
"isbn-9781439512982": "Isaac Asimov: The Complete Stories, Vol. 2",
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def check_valid_id(id: str):
|
|
||||||
if not id.startswith(("isbn-", "imdb-")):
|
|
||||||
raise ValueError('Invalid ID format, it must start with "isbn-" or "imdb-"')
|
|
||||||
return id
|
|
||||||
|
|
||||||
|
|
||||||
@app.get("/items/")
|
|
||||||
async def read_items(
|
|
||||||
id: Annotated[Union[str, None], AfterValidator(check_valid_id)] = None,
|
|
||||||
):
|
|
||||||
if id:
|
|
||||||
item = data.get(id)
|
|
||||||
else:
|
|
||||||
id, item = random.choice(list(data.items()))
|
|
||||||
return {"id": id, "name": item}
|
|
||||||
|
|
@ -5,16 +5,15 @@ from dirty_equals import IsDict
|
||||||
from fastapi._compat import PYDANTIC_VERSION_MINOR_TUPLE
|
from fastapi._compat import PYDANTIC_VERSION_MINOR_TUPLE
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py39, needs_py310
|
from ...utils import needs_py310
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
"tutorial010",
|
pytest.param("tutorial010_py39"),
|
||||||
pytest.param("tutorial010_py310", marks=needs_py310),
|
pytest.param("tutorial010_py310", marks=needs_py310),
|
||||||
"tutorial010_an",
|
pytest.param("tutorial010_an_py39"),
|
||||||
pytest.param("tutorial010_an_py39", marks=needs_py39),
|
|
||||||
pytest.param("tutorial010_an_py310", marks=needs_py310),
|
pytest.param("tutorial010_an_py310", marks=needs_py310),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -4,17 +4,15 @@ import pytest
|
||||||
from dirty_equals import IsDict
|
from dirty_equals import IsDict
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py39, needs_py310
|
from ...utils import needs_py310
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
"tutorial011",
|
pytest.param("tutorial011_py39"),
|
||||||
pytest.param("tutorial011_py39", marks=needs_py310),
|
|
||||||
pytest.param("tutorial011_py310", marks=needs_py310),
|
pytest.param("tutorial011_py310", marks=needs_py310),
|
||||||
"tutorial011_an",
|
pytest.param("tutorial011_an_py39"),
|
||||||
pytest.param("tutorial011_an_py39", marks=needs_py39),
|
|
||||||
pytest.param("tutorial011_an_py310", marks=needs_py310),
|
pytest.param("tutorial011_an_py310", marks=needs_py310),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,12 @@ import importlib
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py39
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
"tutorial012",
|
pytest.param("tutorial012_py39"),
|
||||||
pytest.param("tutorial012_py39", marks=needs_py39),
|
pytest.param("tutorial012_an_py39"),
|
||||||
"tutorial012_an",
|
|
||||||
pytest.param("tutorial012_an_py39", marks=needs_py39),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def get_client(request: pytest.FixtureRequest):
|
def get_client(request: pytest.FixtureRequest):
|
||||||
|
|
|
||||||
|
|
@ -3,15 +3,12 @@ import importlib
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py39
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
"tutorial013",
|
"tutorial013_py39",
|
||||||
"tutorial013_an",
|
"tutorial013_an_py39",
|
||||||
pytest.param("tutorial013_an_py39", marks=needs_py39),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def get_client(request: pytest.FixtureRequest):
|
def get_client(request: pytest.FixtureRequest):
|
||||||
|
|
|
||||||
|
|
@ -3,16 +3,15 @@ import importlib
|
||||||
import pytest
|
import pytest
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
|
|
||||||
from ...utils import needs_py39, needs_py310
|
from ...utils import needs_py310
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
"tutorial014",
|
pytest.param("tutorial014_py39"),
|
||||||
pytest.param("tutorial014_py310", marks=needs_py310),
|
pytest.param("tutorial014_py310", marks=needs_py310),
|
||||||
"tutorial014_an",
|
pytest.param("tutorial014_an_py39"),
|
||||||
pytest.param("tutorial014_an_py39", marks=needs_py39),
|
|
||||||
pytest.param("tutorial014_an_py310", marks=needs_py310),
|
pytest.param("tutorial014_an_py310", marks=needs_py310),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -5,15 +5,14 @@ from dirty_equals import IsStr
|
||||||
from fastapi.testclient import TestClient
|
from fastapi.testclient import TestClient
|
||||||
from inline_snapshot import snapshot
|
from inline_snapshot import snapshot
|
||||||
|
|
||||||
from ...utils import needs_py39, needs_py310, needs_pydanticv2
|
from ...utils import needs_py310, needs_pydanticv2
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
name="client",
|
name="client",
|
||||||
params=[
|
params=[
|
||||||
pytest.param("tutorial015_an", marks=needs_pydanticv2),
|
pytest.param("tutorial015_an_py39", marks=needs_pydanticv2),
|
||||||
pytest.param("tutorial015_an_py310", marks=(needs_py310, needs_pydanticv2)),
|
pytest.param("tutorial015_an_py310", marks=(needs_py310, needs_pydanticv2)),
|
||||||
pytest.param("tutorial015_an_py39", marks=(needs_py39, needs_pydanticv2)),
|
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def get_client(request: pytest.FixtureRequest):
|
def get_client(request: pytest.FixtureRequest):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue