Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 1.3k
Add support for httpx.Response(content=..., text=..., html=..., json=...)#1250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Changes from all commits
406c0dc786258dbd14386f457af0b34da18d03b97276d36048e7b8d1266bfa1File filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -4,7 +4,7 @@ | ||
| import httpcore | ||
| from .._config import create_ssl_context | ||
| from .._content_streams import ByteStream, IteratorStream | ||
| from .._content_streams import ByteStream | ||
| from .._exceptions import NetworkError, map_exceptions | ||
| from .._types import CertTypes, VerifyTypes | ||
| @@ -15,6 +15,21 @@ | ||
| urllib3 = None | ||
| class URLLib3ByteStream(httpcore.SyncByteStream): | ||
| def __init__(self, conn: urllib3.HTTPResponse) -> None: | ||
| self._conn = conn | ||
| def __iter__(self) -> Iterator[bytes]: | ||
| try: | ||
| for chunk in self._conn.stream(4096, decode_content=False): | ||
| yield chunk | ||
| except socket.error as exc: | ||
| raise httpcore.NetworkError(exc) from exc | ||
| def close(self) -> None: | ||
| self._conn.release_conn() | ||
MemberAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Changes in this module are redundant given #1182, but I've updated this all the same since this PR removes | ||
| class URLLib3Transport(httpcore.SyncHTTPTransport): | ||
| def __init__( | ||
| self, | ||
| @@ -104,16 +119,9 @@ def request( | ||
| pool_timeout=timeout.get("pool"), | ||
| ) | ||
| def response_bytes() -> Iterator[bytes]: | ||
| with map_exceptions({socket.error: NetworkError}): | ||
| for chunk in conn.stream(4096, decode_content=False): | ||
| yield chunk | ||
| status_code = conn.status | ||
| headers = list(conn.headers.items()) | ||
| response_stream = IteratorStream( | ||
| iterator=response_bytes(), close_func=conn.release_conn | ||
| ) | ||
| response_stream = URLLib3ByteStream(conn=conn) | ||
| return (b"HTTP/1.1", status_code, conn.reason, headers, response_stream) | ||
| def close(self) -> None: | ||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Turns out we don't really need
close_funconIteratorStream/AsyncIteratorStreamanymore, which falls out from updating test cases to useResponse(content=<bytes iterator>)