from .config import (
USER_AGENT,
CertTypes,
- PoolLimits,
HTTPVersionConfig,
HTTPVersionTypes,
+ PoolLimits,
SSLConfig,
TimeoutConfig,
TimeoutTypes,
"StatusCode",
"codes",
"TimeoutTypes",
+ "HTTPVersionTypes",
+ "HTTPVersionConfig",
"AsyncRequest",
"AsyncRequestData",
"AsyncResponse",
json: typing.Any = None,
headers: HeaderTypes = None,
cookies: CookieTypes = None,
- # files
auth: AuthTypes = None,
timeout: TimeoutTypes = None,
allow_redirects: bool = True,
DEFAULT_POOL_LIMITS,
DEFAULT_TIMEOUT_CONFIG,
CertTypes,
+ HTTPVersionTypes,
PoolLimits,
TimeoutTypes,
VerifyTypes,
cookies: CookieTypes = None,
verify: VerifyTypes = True,
cert: CertTypes = None,
+ http_versions: HTTPVersionTypes = None,
timeout: TimeoutTypes = DEFAULT_TIMEOUT_CONFIG,
pool_limits: PoolLimits = DEFAULT_POOL_LIMITS,
max_redirects: int = DEFAULT_MAX_REDIRECTS,
verify=verify,
cert=cert,
timeout=timeout,
+ http_versions=http_versions,
pool_limits=pool_limits,
backend=backend,
)
import typing
from types import TracebackType
-from ..config import PoolLimits, HTTPVersionConfig, TimeoutConfig
+from ..config import PoolLimits, TimeoutConfig
from ..exceptions import ConnectTimeout, PoolTimeout, ReadTimeout, WriteTimeout
from ..interfaces import (
BaseBackgroundManager,
http_versions = ["HTTP/1.1", "HTTP/2"]
if isinstance(http_versions, str):
- self.http_versions = set([http_versions.upper()])
+ self.http_versions = {http_versions.upper()}
elif isinstance(http_versions, HTTPVersionConfig):
self.http_versions = http_versions.http_versions
else:
- self.http_versions = set([version.upper() for version in http_versions])
+ self.http_versions = {version.upper() for version in http_versions}
for version in self.http_versions:
if version not in ("HTTP/1.1", "HTTP/2"):
import asyncio
import typing
-from ..config import CertTypes, HTTPVersionTypes, TimeoutTypes, VerifyTypes
+from ..config import CertTypes, TimeoutTypes, VerifyTypes
from ..interfaces import AsyncDispatcher
from ..models import AsyncRequest, AsyncResponse
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
scope = {
import functools
-import typing
import ssl
+import typing
from ..concurrency.asyncio import AsyncioBackend
from ..config import (
DEFAULT_TIMEOUT_CONFIG,
CertTypes,
- HTTPVersionTypes,
HTTPVersionConfig,
+ HTTPVersionTypes,
SSLConfig,
TimeoutConfig,
TimeoutTypes,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
if self.h11_connection is None and self.h2_connection is None:
- await self.connect(
- verify=verify, cert=cert, timeout=timeout, http_versions=http_versions
- )
+ await self.connect(verify=verify, cert=cert, timeout=timeout)
if self.h2_connection is not None:
response = await self.h2_connection.send(request, timeout=timeout)
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> None:
ssl = self.ssl.with_overrides(verify=verify, cert=cert)
timeout = self.timeout if timeout is None else TimeoutConfig(timeout)
- http_versions = (
- self.http_versions
- if http_versions is None
- else HTTPVersionConfig(http_versions)
- )
host = self.origin.host
port = self.origin.port
- ssl_context = await self.get_ssl_context(ssl, http_versions)
+ ssl_context = await self.get_ssl_context(ssl)
if self.release_func is None:
on_release = None
reader, writer, self.backend, on_release=on_release
)
- async def get_ssl_context(
- self, ssl: SSLConfig, http_versions: HTTPVersionConfig
- ) -> typing.Optional[ssl.SSLContext]:
+ async def get_ssl_context(self, ssl: SSLConfig) -> typing.Optional[ssl.SSLContext]:
if not self.origin.is_ssl:
return None
# Run the SSL loading in a threadpool, since it may makes disk accesses.
- return await self.backend.run_in_threadpool(ssl.load_ssl_context, http_versions)
+ return await self.backend.run_in_threadpool(
+ ssl.load_ssl_context, self.http_versions
+ )
async def close(self) -> None:
if self.h2_connection is not None:
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
connection = await self.acquire_connection(origin=request.url.origin)
try:
response = await connection.send(
- request,
- verify=verify,
- cert=cert,
- timeout=timeout,
- http_versions=http_versions,
+ request, verify=verify, cert=cert, timeout=timeout
)
except BaseException as exc:
self.active_connections.remove(connection)
-from ..config import CertTypes, HTTPVersionTypes, TimeoutTypes, VerifyTypes
+from ..config import CertTypes, TimeoutTypes, VerifyTypes
from ..interfaces import AsyncDispatcher, ConcurrencyBackend, Dispatcher
from ..models import (
AsyncRequest,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
concurrency_backend = self.backend
"verify": verify,
"cert": cert,
"timeout": timeout,
- "http_versions": http_versions,
}
sync_response = await self.backend.run_in_threadpool(func, **kwargs)
assert isinstance(sync_response, Response)
import io
import typing
-from ..config import CertTypes, HTTPVersionTypes, TimeoutTypes, VerifyTypes
+from ..config import CertTypes, TimeoutTypes, VerifyTypes
from ..interfaces import Dispatcher
from ..models import Request, Response
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> Response:
environ = {
"wsgi.version": (1, 0),
import typing
from types import TracebackType
-from .config import (
- CertTypes,
- PoolLimits,
- HTTPVersionConfig,
- HTTPVersionTypes,
- TimeoutConfig,
- TimeoutTypes,
- VerifyTypes,
-)
+from .config import CertTypes, PoolLimits, TimeoutConfig, TimeoutTypes, VerifyTypes
from .models import (
AsyncRequest,
AsyncRequestData,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
request = AsyncRequest(method, url, data=data, params=params, headers=headers)
- return await self.send(
- request,
- verify=verify,
- cert=cert,
- timeout=timeout,
- http_versions=http_versions,
- )
+ return await self.send(request, verify=verify, cert=cert, timeout=timeout)
async def send(
self,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
raise NotImplementedError() # pragma: nocover
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> Response:
request = Request(method, url, data=data, params=params, headers=headers)
- return self.send(
- request,
- verify=verify,
- cert=cert,
- timeout=timeout,
- http_versions=http_versions,
- )
+ return self.send(request, verify=verify, cert=cert, timeout=timeout)
def send(
self,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> Response:
raise NotImplementedError() # pragma: nocover
AsyncResponse,
CertTypes,
Client,
- HTTPVersionTypes,
TimeoutTypes,
VerifyTypes,
)
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
body = json.dumps({"auth": request.headers.get("Authorization")}).encode()
return AsyncResponse(200, content=body, request=request)
CertTypes,
Client,
Cookies,
- HTTPVersionTypes,
TimeoutTypes,
VerifyTypes,
)
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
if request.url.path.startswith("/echo_cookies"):
body = json.dumps({"cookies": request.headers.get("Cookie")}).encode()
AsyncResponse,
CertTypes,
Client,
- HTTPVersionTypes,
TimeoutTypes,
VerifyTypes,
__version__,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
if request.url.path.startswith("/echo_headers"):
request_headers = dict(request.headers.items())
CertTypes,
RedirectBodyUnavailable,
RedirectLoop,
- HTTPVersionTypes,
TimeoutTypes,
TooManyRedirects,
VerifyTypes,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> AsyncResponse:
if request.url.path == "/redirect_301":
status_code = codes.MOVED_PERMANENTLY
CertTypes,
Client,
Dispatcher,
- HTTPVersionTypes,
Request,
Response,
TimeoutTypes,
verify: VerifyTypes = None,
cert: CertTypes = None,
timeout: TimeoutTypes = None,
- http_versions: HTTPVersionTypes = None,
) -> Response:
if request.url.path == "/streaming_response":
return Response(200, content=streaming_body(), request=request)
Protocol,
Request,
TimeoutConfig,
- HTTPVersionConfig,
)
CertTypes,
Client,
Dispatcher,
+ HTTPVersionTypes,
Request,
Response,
- HTTPVersionTypes,
TimeoutTypes,
VerifyTypes,
multipart,