|
5 | 5 | # Once we drop 3.10 support, we can use 'typing.Self'. |
6 | 6 | from typing_extensions import Self |
7 | 7 |
|
8 | | -from ._body import GZipStream, HTTPStream |
9 | | -from ._content import Content |
10 | | -from ._headers import Headers |
11 | | -from ._parsers import HTTPParser |
12 | | -from ._request import Method, Request |
13 | | -from ._response import Response, StatusCode |
14 | | -from ._streams import Stream |
15 | | -from ._urls import URL |
16 | | -from .backends.sync import Lock, NetworkBackend |
17 | | - |
18 | | -__all__ = [ |
19 | | - "Connection", |
20 | | - "ResponseStream", |
21 | | - "Transport", |
22 | | - "open_connection", |
23 | | -] |
24 | | - |
25 | | - |
26 | | -class ResponseStream(Stream): |
27 | | - def __init__( |
28 | | - self, status_code: StatusCode, headers: Headers, stream: Stream |
29 | | - ) -> None: |
30 | | - self.status_code = status_code |
31 | | - self.headers = headers |
32 | | - self.stream = stream |
33 | | - |
34 | | - def read(self, size: int = -1) -> bytes: |
35 | | - return self.stream.read(size) |
36 | | - |
37 | | - def close(self): |
38 | | - self.stream.close() |
39 | | - |
40 | | - def __enter__(self): |
41 | | - return self |
42 | | - |
43 | | - def __exit__( |
44 | | - self, |
45 | | - exc_type: type[BaseException] | None = None, |
46 | | - exc_value: BaseException | None = None, |
47 | | - traceback: types.TracebackType | None = None, |
48 | | - ) -> None: |
49 | | - self.close() |
50 | | - |
51 | | - |
52 | | -class Transport: |
53 | | - def send(self, request: Request) -> ResponseStream: |
54 | | - raise NotImplementedError() |
55 | | - |
56 | | - def close(self): |
57 | | - pass |
58 | | - |
59 | | - def request( |
60 | | - self, |
61 | | - method: Method | str, |
62 | | - url: URL | str, |
63 | | - headers: Headers | dict[str, str] | None = None, |
64 | | - content: Content | bytes | None = None, |
65 | | - ) -> Response: |
66 | | - request = Request(method, url, headers=headers, content=content) |
67 | | - with self.send(request) as stream: |
68 | | - body = stream.read() |
69 | | - return Response(stream.status_code, headers=stream.headers, content=body) |
70 | | - |
71 | | - def stream( |
72 | | - self, |
73 | | - method: Method | str, |
74 | | - url: URL | str, |
75 | | - headers: Headers | dict[str, str] | None = None, |
76 | | - content: Content | bytes | None = None, |
77 | | - ) -> ResponseStream: |
78 | | - request = Request(method, url, headers=headers, content=content) |
79 | | - return self.send(request) |
| 8 | +from .._body import GZipStream, HTTPStream |
| 9 | +from .._content import Content |
| 10 | +from .._headers import Headers |
| 11 | +from .._parsers import HTTPParser |
| 12 | +from .._request import Method, Request |
| 13 | +from .._response import Response, StatusCode |
| 14 | +from .._streams import Stream |
| 15 | +from .._urls import URL |
| 16 | +from ..backends.sync import Lock, NetworkBackend |
| 17 | +from .base import ResponseStream, Transport |
| 18 | + |
| 19 | +__all__ = ["Connection", "open_connection"] |
80 | 20 |
|
81 | 21 |
|
82 | 22 | class Connection(Transport): |
|
0 commit comments