@@ -49,6 +49,16 @@ class _WhitespaceInsideUrlRequest:
4949 url = "https://example.com/with space"
5050
5151
52+ class _BytesUrlContextRequest :
53+ method = "GET"
54+ url = b"https://example.com/from-bytes"
55+
56+
57+ class _InvalidBytesUrlContextRequest :
58+ method = "GET"
59+ url = b"\xff \xfe "
60+
61+
5262class _RequestErrorWithFailingRequestProperty (httpx .RequestError ):
5363 @property
5464 def request (self ): # type: ignore[override]
@@ -97,6 +107,18 @@ def request(self): # type: ignore[override]
97107 return _WhitespaceInsideUrlRequest ()
98108
99109
110+ class _RequestErrorWithBytesUrlContext (httpx .RequestError ):
111+ @property
112+ def request (self ): # type: ignore[override]
113+ return _BytesUrlContextRequest ()
114+
115+
116+ class _RequestErrorWithInvalidBytesUrlContext (httpx .RequestError ):
117+ @property
118+ def request (self ): # type: ignore[override]
119+ return _InvalidBytesUrlContextRequest ()
120+
121+
100122class _DummyResponse :
101123 def __init__ (self , json_value , text : str = "" ) -> None :
102124 self ._json_value = json_value
@@ -185,6 +207,24 @@ def test_extract_request_error_context_rejects_urls_with_whitespace():
185207 assert url == "unknown URL"
186208
187209
210+ def test_extract_request_error_context_supports_bytes_url_values ():
211+ method , url = extract_request_error_context (
212+ _RequestErrorWithBytesUrlContext ("network down" )
213+ )
214+
215+ assert method == "GET"
216+ assert url == "https://example.com/from-bytes"
217+
218+
219+ def test_extract_request_error_context_rejects_invalid_bytes_url_values ():
220+ method , url = extract_request_error_context (
221+ _RequestErrorWithInvalidBytesUrlContext ("network down" )
222+ )
223+
224+ assert method == "GET"
225+ assert url == "unknown URL"
226+
227+
188228def test_format_request_failure_message_uses_fallback_values ():
189229 message = format_request_failure_message (
190230 httpx .RequestError ("network down" ),
0 commit comments