resolved RESOLVED UNSUBMITTED PASS · None tool calls · 0 s · fastapi/fastapi
🗑️ Deprecate `ORJSONResponse` and `UJSONResponse` 🗑️ Deprecate `ORJSONResponse` and `UJSONResponse` Now that there's better performance by default, with response models: https://github.com/fastapi/fastapi/pull/14962 This removes `ujson` and `orjson` from the `"fastapi[all]"` extras. To use these responses, `ujson` or `orjson` need to be explicitly installed.
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
--- a/fastapi/responses.py
+++ b/fastapi/responses.py
@@ -1,12 +1,14 @@
from typing import Any
+from fastapi.exceptions import FastAPIDeprecationWarning
from starlette.responses import FileResponse as FileResponse # noqa
from starlette.responses import HTMLResponse as HTMLResponse # noqa
from starlette.responses import JSONResponse as JSONResponse # noqa
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 typing_extensions import deprecated
try:
import ujson
@@ -20,25 +22,59 @@
orjson = None # type: ignore
+@deprecated(
+ "UJSONResponse is deprecated, FastAPI now serializes data directly to JSON "
+ "bytes via Pydantic when a return type or response model is set, which is "
+ "faster and doesn't need a custom response class. Read more in the FastAPI "
+ "docs: https://fastapi.tiangolo.com/advanced/custom-response/#orjson-or-response-model "
+ "and https://fastapi.tiangolo.com/tutorial/response-model/",
+ category=FastAPIDeprecationWarning,
+ stacklevel=2,
+)
class UJSONResponse(JSONResponse):
- """
- JSON response using the high-performance ujson library to serialize data to JSON.
+ """JSON response using the ujson library to serialize data to JSON.
+
+ **Deprecated**: `UJSONResponse` is deprecated. FastAPI now serializes data
+ directly to JSON bytes via Pydantic when a return type or response model is
+ set, which is faster and doesn't need a custom response class.
+
+ Read more in the
+ [FastAPI docs for Custom Response](https://fastapi.tiangolo.com/advanced/custom-response/#orjson-or-response-model)
+ and the
+ [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
- Read more about it in the
- [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/).
+ **Note**: `ujson` is not included with FastAPI and must be installed
+ separately, e.g. `pip install ujson`.
"""
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")
+@deprecated(
+ "ORJSONResponse is deprecated, FastAPI now serializes data directly to JSON "
+ "bytes via Pydantic when a return type or response model is set, which is "
+ "faster and doesn't need a custom response class. Read more in the FastAPI "
+ "docs: https://fastapi.tiangolo.com/advanced/custom-response/#orjson-or-response-model "
+ "and https://fastapi.tiangolo.com/tutorial/response-model/",
+ category=FastAPIDeprecationWarning,
+ stacklevel=2,
+)
class ORJSONResponse(JSONResponse):
- """
- JSON response using the high-performance orjson library to serialize data to JSON.
+ """JSON response using the orjson library to serialize data to JSON.
+
+ **Deprecated**: `ORJSONResponse` is deprecated. FastAPI now serializes data
+ directly to JSON bytes via Pydantic when a return type or response model is
+ set, which is faster and doesn't need a custom response class.
+
+ Read more in the
+ [FastAPI docs for Custom Response](https://fastapi.tiangolo.com/advanced/custom-response/#orjson-or-response-model)
+ and the
+ [FastAPI docs for Response Model](https://fastapi.tiangolo.com/tutorial/response-model/).
- Read more about it in the
- [FastAPI docs for Custom Response - HTML, Stream, File, others](https://fastapi.tiangolo.com/advanced/custom-response/).
+ **Note**: `orjson` is not included with FastAPI and must be installed
+ separately, e.g. `pip install orjson`.
"""
def render(self, content: Any) -> bytes:......... [100%]
=============================== warnings summary ===============================
../../../../../../../Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.52.1-py3-none-any/starlette/testclient.py:45
/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-0.52.1-py3-none-any/starlette/testclient.py:45: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
_PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
9 passed, 1 warning in 1.12s