@@ -250,6 +250,15 @@ def __len__(self):
250250 raise RuntimeError ("method length exploded" )
251251
252252
253+ class _StringSubclassMethodStripResult (str ):
254+ class _StripResult (str ):
255+ pass
256+
257+ def strip (self , chars = None ): # type: ignore[override]
258+ _ = chars
259+ return self ._StripResult ("get" )
260+
261+
253262class _BrokenStripUrl (str ):
254263 def strip (self , chars = None ): # type: ignore[override]
255264 _ = chars
@@ -277,6 +286,15 @@ def __iter__(self):
277286 raise RuntimeError ("url iteration exploded" )
278287
279288
289+ class _StringSubclassUrlStripResult (str ):
290+ class _StripResult (str ):
291+ pass
292+
293+ def strip (self , chars = None ): # type: ignore[override]
294+ _ = chars
295+ return self ._StripResult ("https://example.com/path" )
296+
297+
280298class _StringifiesToBrokenSubclass :
281299 class _BrokenString (str ):
282300 def __iter__ (self ):
@@ -771,6 +789,15 @@ def test_format_generic_request_failure_message_normalizes_method_length_failure
771789 assert message == "Request UNKNOWN https://example.com/path failed"
772790
773791
792+ def test_format_generic_request_failure_message_normalizes_method_strip_string_subclass_results ():
793+ message = format_generic_request_failure_message (
794+ method = _StringSubclassMethodStripResult ("get" ),
795+ url = "https://example.com/path" ,
796+ )
797+
798+ assert message == "Request UNKNOWN https://example.com/path failed"
799+
800+
774801def test_format_generic_request_failure_message_normalizes_url_strip_failures ():
775802 message = format_generic_request_failure_message (
776803 method = "GET" ,
@@ -798,6 +825,15 @@ def test_format_generic_request_failure_message_normalizes_url_iteration_failure
798825 assert message == "Request GET unknown URL failed"
799826
800827
828+ def test_format_generic_request_failure_message_normalizes_url_strip_string_subclass_results ():
829+ message = format_generic_request_failure_message (
830+ method = "GET" ,
831+ url = _StringSubclassUrlStripResult ("https://example.com/path" ),
832+ )
833+
834+ assert message == "Request GET unknown URL failed"
835+
836+
801837def test_format_request_failure_message_truncates_very_long_fallback_urls ():
802838 very_long_url = "https://example.com/" + ("a" * 1200 )
803839 message = format_request_failure_message (
0 commit comments