failed WRONG_FIX UNSUBMITTED wrong_fix_unsubmitted(None) · None tool calls · 0 s · fastapi/fastapi
(not found in data/tasks.jsonl)
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
--- a/docs/en/docs/tutorial/frontend.md
+++ b/docs/en/docs/tutorial/frontend.md
@@ -52,7 +52,7 @@ For that, use `fallback="index.html"`:
{* ../../docs_src/frontend/tutorial002_py310.py hl[5] *}
-**FastAPI** uses this fallback only for `GET` and `HEAD` requests that look like browser navigation. Missing files like JavaScript, CSS, and images still return `404`.
+**FastAPI** uses this fallback only for `GET` and `HEAD` requests that explicitly accept HTML with `Accept: text/html` or `Accept: application/xhtml+xml`, as browser navigation requests normally do. Missing files like JavaScript, CSS, and images still return `404`.
Requests with other methods, like `POST` or `PUT`, to paths that only match the frontend fallback also return `404`. Regular **FastAPI** *path operations* still have higher priority than frontend routes.
--- a/fastapi/routing.py
+++ b/fastapi/routing.py
@@ -1984,24 +1984,13 @@ def _iter_accept_media_types(accept: str) -> Iterator[tuple[str, float]]:
def _is_frontend_navigation_request(scope: Scope) -> bool:
- route_path = get_route_path(scope)
- final_segment = route_path.rsplit("/", 1)[-1]
- if os.path.splitext(final_segment)[1]:
- return False
request = Request(scope)
- wildcard_accepted = False
- html_rejected = False
for media_type, quality in _iter_accept_media_types(
request.headers.get("accept", "")
):
- if media_type in {"text/html", "application/xhtml+xml"}:
- if quality == 0:
- html_rejected = True
- else:
- return True
- elif media_type == "*/*" and quality != 0:
- wildcard_accepted = True
- return wildcard_accepted and not html_rejected
+ if media_type in {"text/html", "application/xhtml+xml"} and quality != 0:
+ return True
+ return False
class _FrontendRoute(BaseRoute):
.....................F
=================================== FAILURES ===================================
_________ test_frontend_dependency_restores_existing_dependency_stacks _________
async def functions are not natively supported.
You need to install a suitable plugin for your async framework, for example:
- anyio
- pytest-asyncio
- pytest-tornasync
- pytest-trio
- pytest-twisted
=============================== warnings summary ===============================
../../../../../../../Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-1.6.0-py3-none-any/starlette/testclient.py:53
/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/overlays/starlette-1.6.0-py3-none-any/starlette/testclient.py:53: DeprecationWarning: The anyio.abc.BlockingPortal alias is deprecated, use anyio.from_thread.BlockingPortal instead.
_PortalFactoryType = Callable[[], AbstractContextManager[anyio.abc.BlockingPortal]]
tests/test_frontend.py:518
/private/tmp/swe_work/mined_oracle/fastapi_16011/b/workspace/tests/test_frontend.py:518: PytestUnknownMarkWarning: Unknown pytest.mark.anyio - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
@pytest.mark.anyio
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
1 failed, 21 passed, 2 warnings in 0.99s