]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Reorganise structure
authorTom Christie <tom@tomchristie.com>
Wed, 1 May 2019 15:21:04 +0000 (16:21 +0100)
committerTom Christie <tom@tomchristie.com>
Wed, 1 May 2019 15:21:04 +0000 (16:21 +0100)
13 files changed:
README.md
httpcore/__init__.py
httpcore/adapters/redirects.py
httpcore/backends/__init__.py [new file with mode: 0644]
httpcore/backends/default.py [moved from httpcore/streams.py with 92% similarity]
httpcore/backends/sync.py [moved from httpcore/sync.py with 99% similarity]
httpcore/constants.py [moved from httpcore/status_codes.py with 95% similarity]
httpcore/dispatch/connection.py
httpcore/dispatch/connection_pool.py
httpcore/dispatch/http11.py
httpcore/dispatch/http2.py
httpcore/models.py
httpcore/utils.py

index bf0eb6a3d5391126dd3bff9df2d0523f6bdad405..a6b2078b07c556ff0b9a7561a0e5d8eefeb23148 100644 (file)
--- a/README.md
+++ b/README.md
@@ -77,7 +77,7 @@ Additionally, credit is due to for `urllib3` for plenty of design inspiration.
 
 ## API Reference
 
-#### Client
+### `Client`
 
 *An HTTP client, with connection pooling, redirects, cookie persistence, etc.*
 
@@ -99,11 +99,7 @@ Additionally, credit is due to for `urllib3` for plenty of design inspiration.
 * `async def .send(request, [stream], [allow_redirects], [ssl], [timeout])`
 * `async def .close()`
 
-### Models
-
-*Data-structures for HTTP primitives...*
-
-#### Response
+### `Response`
 
 *An HTTP response.*
 
@@ -128,7 +124,7 @@ Additionally, credit is due to for `urllib3` for plenty of design inspiration.
 * `async def .close()` - **None**
 * `async def .next()` - **Response**
 
-#### Request
+### `Request`
 
 *An HTTP request. Can be constructed explicitly for more control over exactly
 what gets sent over the wire.*
@@ -144,7 +140,7 @@ what gets sent over the wire.*
 * `.content` - **byte** or **byte async iterator**
 * `.headers` - **Headers**
 
-#### URL
+### `URL`
 
 *A normalized, IDNA supporting URL.*
 
@@ -170,7 +166,7 @@ what gets sent over the wire.*
 * `def .copy_with([scheme], [authority], [path], [query], [fragment])` - **URL**
 * `def .resolve_with(url)` - **URL**
 
-#### Origin
+### `Origin`
 
 *A normalized, IDNA supporting set of scheme/host/port info.*
 
@@ -184,7 +180,7 @@ True
 * `.host` - **str**
 * `.port` - **int**
 
-#### `Headers`
+### `Headers`
 
 *A case-insensitive multi-dict.*
 
index 1d6d7ca1191491449843b9183cfb0922b6aa6692..f637dc583606a66e78d16b98451b0595ed884d4a 100644 (file)
@@ -1,6 +1,8 @@
 from .adapters.redirects import RedirectAdapter
+from .backends.sync import SyncClient
 from .client import Client
 from .config import PoolLimits, SSLConfig, TimeoutConfig
+from .constants import Protocol, codes
 from .dispatch.connection import HTTPConnection
 from .dispatch.connection_pool import ConnectionPool
 from .dispatch.http2 import HTTP2Connection
@@ -20,10 +22,7 @@ from .exceptions import (
     Timeout,
     TooManyRedirects,
 )
-from .interfaces import Adapter
+from .interfaces import Adapter, BaseReader, BaseWriter
 from .models import URL, Headers, Origin, Request, Response
-from .status_codes import codes
-from .streams import BaseReader, BaseWriter, Protocol, Reader, Writer, connect
-from .sync import SyncClient
 
 __version__ = "0.2.1"
index d07484a20da932d789ab4a2968747d5b304275b8..0a79b4c937755c7c9e75c6c0262de30c1e9555a7 100644 (file)
@@ -1,10 +1,10 @@
 import typing
 
 from ..config import DEFAULT_MAX_REDIRECTS
+from ..constants import codes
 from ..exceptions import RedirectBodyUnavailable, RedirectLoop, TooManyRedirects
 from ..interfaces import Adapter
 from ..models import URL, Headers, Request, Response
-from ..status_codes import codes
 
 
 class RedirectAdapter(Adapter):
diff --git a/httpcore/backends/__init__.py b/httpcore/backends/__init__.py
new file mode 100644 (file)
index 0000000..c0f6f28
--- /dev/null
@@ -0,0 +1,2 @@
+"""
+"""
similarity index 92%
rename from httpcore/streams.py
rename to httpcore/backends/default.py
index f4bdbfec9029d50316120a50a1eb5d811e6c9475..b6acb7643ff777f4ed19554121cb51f7c84c0856 100644 (file)
@@ -9,22 +9,17 @@ protocols, and help keep the rest of the package more `async`/`await`
 based, and less strictly `asyncio`-specific.
 """
 import asyncio
-import enum
 import ssl
 import typing
 
-from .config import DEFAULT_TIMEOUT_CONFIG, PoolLimits, TimeoutConfig
-from .exceptions import ConnectTimeout, PoolTimeout, ReadTimeout, WriteTimeout
-from .interfaces import BasePoolSemaphore, BaseReader, BaseWriter
+from ..config import DEFAULT_TIMEOUT_CONFIG, PoolLimits, TimeoutConfig
+from ..constants import Protocol
+from ..exceptions import ConnectTimeout, PoolTimeout, ReadTimeout, WriteTimeout
+from ..interfaces import BasePoolSemaphore, BaseReader, BaseWriter
 
 OptionalTimeout = typing.Optional[TimeoutConfig]
 
 
-class Protocol(enum.Enum):
-    HTTP_11 = 1
-    HTTP_2 = 2
-
-
 class Reader(BaseReader):
     def __init__(
         self, stream_reader: asyncio.StreamReader, timeout: TimeoutConfig
similarity index 99%
rename from httpcore/sync.py
rename to httpcore/backends/sync.py
index 300c276bd0936751904353e06f605949f96f7866..ae8319412a5c2b4db6362c653c0b0c36d61aec32 100644 (file)
@@ -2,8 +2,8 @@ import asyncio
 import typing
 from types import TracebackType
 
-from .client import Client
-from .config import (
+from ..client import Client
+from ..config import (
     DEFAULT_MAX_REDIRECTS,
     DEFAULT_POOL_LIMITS,
     DEFAULT_SSL_CONFIG,
@@ -12,7 +12,7 @@ from .config import (
     SSLConfig,
     TimeoutConfig,
 )
-from .models import (
+from ..models import (
     URL,
     ByteOrByteStream,
     Headers,
similarity index 95%
rename from httpcore/status_codes.py
rename to httpcore/constants.py
index 6a224d04349334aec6018b3f5b9d296053e8ca8d..c7f4c648dbb9ae60c1b183b600e6450159197633 100644 (file)
@@ -1,5 +1,11 @@
 import enum
 
+
+class Protocol(str, enum.Enum):
+    HTTP_11 = "HTTP/1.1"
+    HTTP_2 = "HTTP/2"
+
+
 codes = enum.IntEnum(
     "StatusCode",
     [
index c342a0c3858eb0e3535a45e4fe8bd31ed0a945aa..f1a63f80382c6fcfd4b4c253198ad9b81c7a5c1f 100644 (file)
@@ -4,16 +4,17 @@ import typing
 import h2.connection
 import h11
 
+from ..backends.default import connect
 from ..config import (
     DEFAULT_SSL_CONFIG,
     DEFAULT_TIMEOUT_CONFIG,
     SSLConfig,
     TimeoutConfig,
 )
+from ..constants import Protocol
 from ..exceptions import ConnectTimeout
 from ..interfaces import Adapter
 from ..models import Origin, Request, Response
-from ..streams import Protocol, connect
 from .http2 import HTTP2Connection
 from .http11 import HTTP11Connection
 
index bf82805bd9a0d1a67f08f61b97644d0ca7c17d41..f10b14ce6b391c67288f0b5f3bcb41c3a4de1c62 100644 (file)
@@ -1,6 +1,7 @@
 import collections.abc
 import typing
 
+from ..backends.default import PoolSemaphore
 from ..config import (
     DEFAULT_CA_BUNDLE_PATH,
     DEFAULT_POOL_LIMITS,
@@ -14,7 +15,6 @@ from ..decoders import ACCEPT_ENCODING
 from ..exceptions import PoolTimeout
 from ..interfaces import Adapter
 from ..models import Origin, Request, Response
-from ..streams import PoolSemaphore
 from .connection import HTTPConnection
 
 CONNECTIONS_DICT = typing.Dict[Origin, typing.List[HTTPConnection]]
index 2a0cf2e00a5d06c1c9af9ab5db7234d6995ae07d..107fa06b03cc3519d15b1830779dc18cd2af4b58 100644 (file)
@@ -9,9 +9,8 @@ from ..config import (
     TimeoutConfig,
 )
 from ..exceptions import ConnectTimeout, ReadTimeout
-from ..interfaces import Adapter
+from ..interfaces import Adapter, BaseReader, BaseWriter
 from ..models import Request, Response
-from ..streams import BaseReader, BaseWriter
 
 H11Event = typing.Union[
     h11.Request,
index fb45d5418f2d092fd3341fd43f4f69c021905e3f..3cd15d5a607b59c38ad04d1f015d98eb2906ec7e 100644 (file)
@@ -11,9 +11,8 @@ from ..config import (
     TimeoutConfig,
 )
 from ..exceptions import ConnectTimeout, ReadTimeout
-from ..interfaces import Adapter
+from ..interfaces import Adapter, BaseReader, BaseWriter
 from ..models import Request, Response
-from ..streams import BaseReader, BaseWriter
 
 OptionalTimeout = typing.Optional[TimeoutConfig]
 
index 267c1ce39e048a93dec519d171eeecbd3affa8f5..e31b9ac80a4138814276afb5f2863aa9222c988f 100644 (file)
@@ -6,6 +6,7 @@ import idna
 import rfc3986
 
 from .config import SSLConfig, TimeoutConfig
+from .constants import codes
 from .decoders import (
     ACCEPT_ENCODING,
     SUPPORTED_DECODERS,
@@ -14,7 +15,6 @@ from .decoders import (
     MultiDecoder,
 )
 from .exceptions import InvalidURL, ResponseClosed, ResponseNotRead, StreamConsumed
-from .status_codes import codes
 from .utils import (
     get_reason_phrase,
     is_known_encoding,
index d3638585ce6bfe54751a32e88b6e335ac362be5f..0f5ec1b317e090f97a031a6680e9d0a5a89a8149 100644 (file)
@@ -23,7 +23,7 @@ def normalize_header_value(value: typing.AnyStr, encoding: str = None) -> bytes:
 
 def get_reason_phrase(status_code: int) -> str:
     """
-    Return an HTTP reason phrase, eg. "OK" for 200, or "Not Found" for 404.
+    Return an HTTP reason phrase such as "OK" for 200, or "Not Found" for 404.
     """
     try:
         return http.HTTPStatus(status_code).phrase
@@ -32,6 +32,9 @@ def get_reason_phrase(status_code: int) -> str:
 
 
 def is_known_encoding(encoding: str) -> bool:
+    """
+    Return `True` if `encoding` is a known codec.
+    """
     try:
         codecs.lookup(encoding)
     except LookupError: