failed WRONG_FIX UNSUBMITTED wrong_fix_unsubmitted(None) · None tool calls · 0 s · psf/requests
Enhance `super_len` to count encoded bytes for str This is a possible fix for issue #6586. I am not at all confident that this is an appropriate change for Requests. All of the unit tests pass locally for me (specifically `make ci`).
| # | Tool | Arguments | Result |
|---|---|---|---|
| No trace captured. | |||
--- a/src/requests/utils.py
+++ b/src/requests/utils.py
@@ -134,6 +134,9 @@ def super_len(o):
total_length = None
current_position = 0
+ if isinstance(o, str):
+ o = o.encode("utf-8")
+
if hasattr(o, "__len__"):
total_length = len(o)
................................................................... [ 66%]
................x....................................................... [ 88%]
......................F
=================================== FAILURES ===================================
_ TestPreparingURLs.test_redirecting_to_bad_url[http://localhost:-1-InvalidURL] _
self = <tests.test_requests.TestPreparingURLs object at 0x112957750>
httpbin = <function prepare_url.<locals>.inner at 0x111a084a0>
url = 'http://localhost:-1'
exception = <class 'requests.exceptions.InvalidURL'>
@pytest.mark.parametrize("url, exception", (("http://localhost:-1", InvalidURL),))
def test_redirecting_to_bad_url(self, httpbin, url, exception):
> with pytest.raises(exception):
^^^^^^^^^^^^^^^^^^^^^^^^
E Failed: DID NOT RAISE InvalidURL
tests/test_requests.py:2724: Failed
----------------------------- Captured stderr call -----------------------------
Traceback (most recent call last):
File "/Users/jp/.local/share/uv/python/cpython-3.13.15-macos-aarch64-none/lib/python3.13/wsgiref/handlers.py", line 137, in run
self.result = application(self.environ, self.start_response)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/flask/app.py", line 1536, in __call__
return self.wsgi_app(environ, start_response)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/flask/app.py", line 1518, in wsgi_app
return response(environ, start_response)
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/werkzeug/wrappers/response.py", line 576, in __call__
app_iter, status, headers = self.get_wsgi_response(environ)
~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/werkzeug/wrappers/response.py", line 562, in get_wsgi_response
headers = self.get_wsgi_headers(environ)
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/werkzeug/wrappers/response.py", line 481, in get_wsgi_headers
location = iri_to_uri(location)
File "/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/werkzeug/urls.py", line 153, in iri_to_uri
if parts.port:
^^^^^^^^^^
File "/Users/jp/.local/share/uv/python/cpython-3.13.15-macos-aarch64-none/lib/python3.13/urllib/parse.py", line 182, in port
raise ValueError(f"Port could not be cast to integer value as {port!r}")
ValueError: Port could not be cast to integer value as '-1'
127.0.0.1 - - [23/Sep/2026 18:24:21] "GET /redirect-to?url=http%3A%2F%2Flocalhost%3A-1 HTTP/1.1" 500 59
=============================== warnings summary ===============================
../../../../../../../Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/_pytest/config/__init__.py:1464
/Users/jp/repos/kaggle-gemini-coding-agent-post-training/.envs/requests/lib/python3.13/site-packages/_pytest/config/__init__.py:1464: PytestConfigWarning: Unknown config option: timeout
self._warn_or_fail_if_strict(f"Unknown config option: {key}\n")
tests/test_requests.py::TestRequests::test_set_basicauth[42-42]
tests/test_requests.py::TestRequests::test_set_basicauth[42-42]
/tmp/swe_work/oracle_refix/requests_6589/b/workspace/src/requests/auth.py:36: DeprecationWarning: Non-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (42) to a string or bytes object in the near future to avoid problems.
warnings.warn(
tests/test_requests.py::TestRequests::test_set_basicauth[42-42]
tests/test_requests.py::TestRequests::test_set_basicauth[42-42]
/tmp/swe_work/oracle_refix/requests_6589/b/workspace/src/requests/auth.py:46: DeprecationWarning: Non-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (<class 'int'>) to a string or bytes object in the near future to avoid problems.
warnings.warn(
tests/test_requests.py::TestRequests::test_set_basicauth[None-None]
tests/test_requests.py::TestRequests::test_set_basicauth[None-None]
/tmp/swe_work/oracle_refix/requests_6589/b/workspace/src/requests/auth.py:36: DeprecationWarning: Non-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (None) to a string or bytes object in the near future to avoid problems.
warnings.warn(
tests/test_requests.py::TestRequests::test_set_basicauth[None-None]
tests/test_requests.py::TestRequests::test_set_basicauth[None-None]
/tmp/swe_work/oracle_refix/requests_6589/b/workspace/src/requests/auth.py:46: DeprecationWarning: Non-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (<class 'NoneType'>) to a string or bytes object in the near future to avoid problems.
warnings.warn(
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
1 failed, 308 passed, 1 skipped, 1 xfailed, 9 warnings in 31.50s
[2026-09-23 18:23:50,221] WARNING in core: flasgger is not installed; serving the static landing page at / and skipping the Swagger UI and /spec.json.
127.0.0.1 - - [23/Sep/2026 18:23:50] "GET /get HTTP/1.1" 200 208
127.0.0.1 - - [23/Sep/2026 18:23:50] "POST /post HTTP/1.1" 200 363
127.0.0.1 - - [23/Sep/2026 18:23:50] "POST /post HTTP/1.1" 200 438
127.0.0.1 - - [23/Sep/2026 18:23:51] "GET /get?foo=bar&FOO=bar HTTP/1.1" 200 326
127.0.0.1 - - [23/Sep/2026 18:23:51] "POST /post HTTP/1.1" 200 430
127.0.0.1 - - [23/Sep/2026 18:23:51] "GET /stream/4 HTTP/1.1" 200 1008