ProtocolError,
ProxyError,
ReadTimeout,
- RedirectBodyUnavailable,
RedirectLoop,
+ RequestBodyUnavailable,
ResponseClosed,
ResponseNotRead,
StreamConsumed,
"PoolTimeout",
"ProtocolError",
"ReadTimeout",
- "RedirectBodyUnavailable",
"RedirectLoop",
+ "RequestBodyUnavailable",
"ResponseClosed",
"ResponseNotRead",
"StreamConsumed",
from .exceptions import (
HTTPError,
InvalidURL,
- RedirectBodyUnavailable,
RedirectLoop,
+ RequestBodyUnavailable,
TooManyRedirects,
)
from .models import (
"""
if method != request.method and method == "GET":
return None
+
if not request.stream.can_replay():
- raise RedirectBodyUnavailable()
+ raise RequestBodyUnavailable(
+ "Got a redirect response, but the request body was streaming "
+ "and is no longer available."
+ )
+
return request.stream
async def send_handling_auth(
"""
-class RedirectBodyUnavailable(RedirectError):
- """
- Got a redirect response, but the request body was streaming, and is
- no longer available.
- """
-
-
class RedirectLoop(RedirectError):
"""
Infinite redirect loop.
"""
+class RequestBodyUnavailable(StreamError):
+ """
+ Had to send the request again, but the request body was streaming, and is
+ no longer available.
+ """
+
+
class StreamConsumed(StreamError):
"""
Attempted to read or stream response content, but the content has already
URL,
AsyncClient,
NotRedirectResponse,
- RedirectBodyUnavailable,
RedirectLoop,
Request,
+ RequestBodyUnavailable,
Response,
TooManyRedirects,
codes,
async def streaming_body():
yield b"Example request body"
- with pytest.raises(RedirectBodyUnavailable):
+ with pytest.raises(RequestBodyUnavailable):
await client.post(url, data=streaming_body())