1 from ._api import request, stream 2 from ._async import ( 3 AsyncConnectionInterface, 4 AsyncConnectionPool, 5 AsyncHTTP2Connection, 6 AsyncHTTP11Connection, 7 AsyncHTTPConnection, 8 AsyncHTTPProxy, 9 AsyncSOCKSProxy, 10 ) 11 from ._backends.base import ( 12 SOCKET_OPTION, 13 AsyncNetworkBackend, 14 AsyncNetworkStream, 15 NetworkBackend, 16 NetworkStream, 17 ) 18 from ._backends.mock import AsyncMockBackend, AsyncMockStream, MockBackend, MockStream 19 from ._backends.sync import SyncBackend 20 from ._exceptions import ( 21 ConnectError, 22 ConnectionNotAvailable, 23 ConnectTimeout, 24 LocalProtocolError, 25 NetworkError, 26 PoolTimeout, 27 ProtocolError, 28 ProxyError, 29 ReadError, 30 ReadTimeout, 31 RemoteProtocolError, 32 TimeoutException, 33 UnsupportedProtocol, 34 WriteError, 35 WriteTimeout, 36 ) 37 from ._models import URL, Origin, Proxy, Request, Response 38 from ._ssl import default_ssl_context 39 from ._sync import ( 40 ConnectionInterface, 41 ConnectionPool, 42 HTTP2Connection, 43 HTTP11Connection, 44 HTTPConnection, 45 HTTPProxy, 46 SOCKSProxy, 47 ) 48 49 # The 'httpcore.AnyIOBackend' class is conditional on 'anyio' being installed. 50 try: 51 from ._backends.anyio import AnyIOBackend 52 except ImportError: # pragma: nocover 53 54 class AnyIOBackend: # type: ignore 55 def __init__(self, *args, **kwargs): # type: ignore 56 msg = ( 57 "Attempted to use 'httpcore.AnyIOBackend' but 'anyio' is not installed." 58 ) 59 raise RuntimeError(msg) 60 61 62 # The 'httpcore.TrioBackend' class is conditional on 'trio' being installed. 63 try: 64 from ._backends.trio import TrioBackend 65 except ImportError: # pragma: nocover 66 67 class TrioBackend: # type: ignore 68 def __init__(self, *args, **kwargs): # type: ignore 69 msg = "Attempted to use 'httpcore.TrioBackend' but 'trio' is not installed." 70 raise RuntimeError(msg) 71 72 73 __all__ = [ 74 # top-level requests 75 "request", 76 "stream", 77 # models 78 "Origin", 79 "URL", 80 "Request", 81 "Response", 82 "Proxy", 83 # async 84 "AsyncHTTPConnection", 85 "AsyncConnectionPool", 86 "AsyncHTTPProxy", 87 "AsyncHTTP11Connection", 88 "AsyncHTTP2Connection", 89 "AsyncConnectionInterface", 90 "AsyncSOCKSProxy", 91 # sync 92 "HTTPConnection", 93 "ConnectionPool", 94 "HTTPProxy", 95 "HTTP11Connection", 96 "HTTP2Connection", 97 "ConnectionInterface", 98 "SOCKSProxy", 99 # network backends, implementations 100 "SyncBackend", 101 "AnyIOBackend", 102 "TrioBackend", 103 # network backends, mock implementations 104 "AsyncMockBackend", 105 "AsyncMockStream", 106 "MockBackend", 107 "MockStream", 108 # network backends, interface 109 "AsyncNetworkStream", 110 "AsyncNetworkBackend", 111 "NetworkStream", 112 "NetworkBackend", 113 # util 114 "default_ssl_context", 115 "SOCKET_OPTION", 116 # exceptions 117 "ConnectionNotAvailable", 118 "ProxyError", 119 "ProtocolError", 120 "LocalProtocolError", 121 "RemoteProtocolError", 122 "UnsupportedProtocol", 123 "TimeoutException", 124 "PoolTimeout", 125 "ConnectTimeout", 126 "ReadTimeout", 127 "WriteTimeout", 128 "NetworkError", 129 "ConnectError", 130 "ReadError", 131 "WriteError", 132 ] 133 134 __version__ = "1.0.8" 135 136 137 __locals = locals() 138 for __name in __all__: 139 # Exclude SOCKET_OPTION, it causes AttributeError on Python 3.14 140 if not __name.startswith(("__", "SOCKET_OPTION")): 141 setattr(__locals[__name], "__module__", "httpcore") # noqa 142