Browse Source

🔇 Add filter warnings for benchmark tests

pull/14583/head
Sebastián Ramírez 7 months ago
parent
commit
05bd28cfc1
  1. 188
      tests/benchmarks/test_general_performance.py

188
tests/benchmarks/test_general_performance.py

@ -1,5 +1,6 @@
import json import json
import sys import sys
import warnings
from collections.abc import Iterator from collections.abc import Iterator
from typing import Annotated, Any from typing import Annotated, Any
@ -84,96 +85,103 @@ def app(basemodel_class: type[Any]) -> FastAPI:
app = FastAPI() app = FastAPI()
@app.post("/sync/validated", response_model=ItemOut) with warnings.catch_warnings(record=True):
def sync_validated(item: ItemIn, dep: Annotated[int, Depends(dep_b)]): warnings.filterwarnings(
return ItemOut(name=item.name, value=item.value, dep=dep) "ignore",
message=r"pydantic\.v1 is deprecated and will soon stop being supported by FastAPI\..*",
@app.get("/sync/dict-no-response-model") category=DeprecationWarning,
def sync_dict_no_response_model(): )
return {"name": "foo", "value": 123}
@app.post("/sync/validated", response_model=ItemOut)
@app.get("/sync/dict-with-response-model", response_model=ItemOut) def sync_validated(item: ItemIn, dep: Annotated[int, Depends(dep_b)]):
def sync_dict_with_response_model( return ItemOut(name=item.name, value=item.value, dep=dep)
dep: Annotated[int, Depends(dep_b)],
): @app.get("/sync/dict-no-response-model")
return {"name": "foo", "value": 123, "dep": dep} def sync_dict_no_response_model():
return {"name": "foo", "value": 123}
@app.get("/sync/model-no-response-model")
def sync_model_no_response_model(dep: Annotated[int, Depends(dep_b)]): @app.get("/sync/dict-with-response-model", response_model=ItemOut)
return ItemOut(name="foo", value=123, dep=dep) def sync_dict_with_response_model(
dep: Annotated[int, Depends(dep_b)],
@app.get("/sync/model-with-response-model", response_model=ItemOut) ):
def sync_model_with_response_model(dep: Annotated[int, Depends(dep_b)]): return {"name": "foo", "value": 123, "dep": dep}
return ItemOut(name="foo", value=123, dep=dep)
@app.get("/sync/model-no-response-model")
@app.post("/async/validated", response_model=ItemOut) def sync_model_no_response_model(dep: Annotated[int, Depends(dep_b)]):
async def async_validated( return ItemOut(name="foo", value=123, dep=dep)
item: ItemIn,
dep: Annotated[int, Depends(dep_b)], @app.get("/sync/model-with-response-model", response_model=ItemOut)
): def sync_model_with_response_model(dep: Annotated[int, Depends(dep_b)]):
return ItemOut(name=item.name, value=item.value, dep=dep) return ItemOut(name="foo", value=123, dep=dep)
@app.post("/sync/large-receive") @app.post("/async/validated", response_model=ItemOut)
def sync_large_receive(payload: LargeIn): async def async_validated(
return {"received": len(payload.items)} item: ItemIn,
dep: Annotated[int, Depends(dep_b)],
@app.post("/async/large-receive") ):
async def async_large_receive(payload: LargeIn): return ItemOut(name=item.name, value=item.value, dep=dep)
return {"received": len(payload.items)}
@app.post("/sync/large-receive")
@app.get("/sync/large-dict-no-response-model") def sync_large_receive(payload: LargeIn):
def sync_large_dict_no_response_model(): return {"received": len(payload.items)}
return LARGE_PAYLOAD
@app.post("/async/large-receive")
@app.get("/sync/large-dict-with-response-model", response_model=LargeOut) async def async_large_receive(payload: LargeIn):
def sync_large_dict_with_response_model(): return {"received": len(payload.items)}
return LARGE_PAYLOAD
@app.get("/sync/large-dict-no-response-model")
@app.get("/sync/large-model-no-response-model") def sync_large_dict_no_response_model():
def sync_large_model_no_response_model(): return LARGE_PAYLOAD
return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
@app.get("/sync/large-dict-with-response-model", response_model=LargeOut)
@app.get("/sync/large-model-with-response-model", response_model=LargeOut) def sync_large_dict_with_response_model():
def sync_large_model_with_response_model(): return LARGE_PAYLOAD
return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
@app.get("/sync/large-model-no-response-model")
@app.get("/async/large-dict-no-response-model") def sync_large_model_no_response_model():
async def async_large_dict_no_response_model(): return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
return LARGE_PAYLOAD
@app.get("/sync/large-model-with-response-model", response_model=LargeOut)
@app.get("/async/large-dict-with-response-model", response_model=LargeOut) def sync_large_model_with_response_model():
async def async_large_dict_with_response_model(): return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
return LARGE_PAYLOAD
@app.get("/async/large-dict-no-response-model")
@app.get("/async/large-model-no-response-model") async def async_large_dict_no_response_model():
async def async_large_model_no_response_model(): return LARGE_PAYLOAD
return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
@app.get("/async/large-dict-with-response-model", response_model=LargeOut)
@app.get("/async/large-model-with-response-model", response_model=LargeOut) async def async_large_dict_with_response_model():
async def async_large_model_with_response_model(): return LARGE_PAYLOAD
return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
@app.get("/async/large-model-no-response-model")
@app.get("/async/dict-no-response-model") async def async_large_model_no_response_model():
async def async_dict_no_response_model(): return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
return {"name": "foo", "value": 123}
@app.get("/async/large-model-with-response-model", response_model=LargeOut)
@app.get("/async/dict-with-response-model", response_model=ItemOut) async def async_large_model_with_response_model():
async def async_dict_with_response_model( return LargeOut(items=LARGE_ITEMS, metadata=LARGE_METADATA)
dep: Annotated[int, Depends(dep_b)],
): @app.get("/async/dict-no-response-model")
return {"name": "foo", "value": 123, "dep": dep} async def async_dict_no_response_model():
return {"name": "foo", "value": 123}
@app.get("/async/model-no-response-model")
async def async_model_no_response_model( @app.get("/async/dict-with-response-model", response_model=ItemOut)
dep: Annotated[int, Depends(dep_b)], async def async_dict_with_response_model(
): dep: Annotated[int, Depends(dep_b)],
return ItemOut(name="foo", value=123, dep=dep) ):
return {"name": "foo", "value": 123, "dep": dep}
@app.get("/async/model-with-response-model", response_model=ItemOut)
async def async_model_with_response_model( @app.get("/async/model-no-response-model")
dep: Annotated[int, Depends(dep_b)], async def async_model_no_response_model(
): dep: Annotated[int, Depends(dep_b)],
return ItemOut(name="foo", value=123, dep=dep) ):
return ItemOut(name="foo", value=123, dep=dep)
@app.get("/async/model-with-response-model", response_model=ItemOut)
async def async_model_with_response_model(
dep: Annotated[int, Depends(dep_b)],
):
return ItemOut(name="foo", value=123, dep=dep)
return app return app

Loading…
Cancel
Save