← baseline_full_v2

fastapi_15589

failed NO_PATCH NO_PATCH UNSUBMITTED empty_patch(None) · None tool calls · 0 s · fastapi/fastapi

Task input

♻️ Do not accept underscore headers when using `convert_underscores=True` (the default)

## Pull Request

<!--
Please start with a GitHub Discussion.

Once a team member asks you to open a PR, create it and link the discussion here.

Obvious typo fixes can be made in a PR without starting a discussion.
-->

Discussion: <!-- Link to the GitHub Discussion -->

## Description

♻️ Do not accept underscore headers when using `convert_underscores=True` (the default)

This means it would only accept header names separated with hyphens by default, and to accept header names separated with underscores, an app would need to explicitly set `convert_underscores=False`.

<!-- Write the description of your PR here -->

## AI Disclaimer

<!-- If using AI, write here the prompt and model used -->

<details>
<summary>AI transcript</summary>

<!-- Paste here the entire AI transcript -->

</details>

## Checklist

- [ ] This PR is an obvious typo fix, or it links to a GitHub Discussion for the proposed code change.
- [ ] I added tests for the change.
- [ ] The new or updated tests fail on the main branch and pass on this PR.
- [ ] Coverage stays at 100%.
- [ ] The documentation explains the change if needed.

Tool calls (0)

#ToolArgumentsResult
No trace captured.

Test output

show
....F
=================================== FAILURES ===================================
_____ test_header_model_prefers_hyphenated_header_with_convert_underscores _____

    def test_header_model_prefers_hyphenated_header_with_convert_underscores():
        client = TestClient(app)
    
        resp = client.get(
            "/header-requires-hyphen",
            headers=[
                ("x-user-id", "hyphenated-value"),
                ("x_user_id", "underscore-value"),
            ],
        )
    
        assert resp.status_code == 200
>       assert resp.json() == {"x_user_id": "hyphenated-value"}
E       AssertionError: assert {'x_user_id':...rscore-value'} == {'x_user_id':...enated-value'}
E         
E         Differing items:
E         {'x_user_id': 'underscore-value'} != {'x_user_id': 'hyphenated-value'}
E         Use -v to get more diff

tests/test_query_cookie_header_model_extra_params.py:115: AssertionError
=============================== 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]]

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
1 failed, 4 passed, 1 warning in 0.59s