Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/httpcore/backends/auto.py: 44%
16 statements
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 07:19 +0000
« prev ^ index » next coverage.py v7.2.7, created at 2023-06-07 07:19 +0000
1import typing
2from typing import Optional
4import sniffio
6from .base import SOCKET_OPTION, AsyncNetworkBackend, AsyncNetworkStream
9class AutoBackend(AsyncNetworkBackend):
10 async def _init_backend(self) -> None:
11 if not (hasattr(self, "_backend")):
12 backend = sniffio.current_async_library()
13 if backend == "trio":
14 from .trio import TrioBackend
16 self._backend: AsyncNetworkBackend = TrioBackend()
17 else:
18 from .asyncio import AsyncIOBackend
20 self._backend = AsyncIOBackend()
22 async def connect_tcp(
23 self,
24 host: str,
25 port: int,
26 timeout: Optional[float] = None,
27 local_address: Optional[str] = None,
28 socket_options: typing.Optional[typing.Iterable[SOCKET_OPTION]] = None,
29 ) -> AsyncNetworkStream:
30 await self._init_backend()
31 return await self._backend.connect_tcp(
32 host,
33 port,
34 timeout=timeout,
35 local_address=local_address,
36 socket_options=socket_options,
37 )
39 async def connect_unix_socket(
40 self,
41 path: str,
42 timeout: Optional[float] = None,
43 socket_options: typing.Optional[typing.Iterable[SOCKET_OPTION]] = None,
44 ) -> AsyncNetworkStream: # pragma: nocover
45 await self._init_backend()
46 return await self._backend.connect_unix_socket(
47 path, timeout=timeout, socket_options=socket_options
48 )
50 async def sleep(self, seconds: float) -> None: # pragma: nocover
51 await self._init_backend()
52 return await self._backend.sleep(seconds)