Jellyfin(8096), OrbStack(8097) 포트 충돌으로 변경. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
207 lines
7.4 KiB
Python
207 lines
7.4 KiB
Python
from __future__ import annotations
|
|
|
|
import sys
|
|
import typing
|
|
from http.cookiejar import CookieJar
|
|
from os import PathLike
|
|
|
|
from ._vendor.kiss_headers import Headers
|
|
from .auth import AsyncAuthBase, AuthBase
|
|
from .packages.urllib3 import AsyncResolverDescription, ResolverDescription, Retry, Timeout
|
|
from .packages.urllib3.contrib.resolver import BaseResolver
|
|
from .packages.urllib3.contrib.resolver._async import AsyncBaseResolver
|
|
from .packages.urllib3.fields import RequestField
|
|
from .structures import CaseInsensitiveDict
|
|
|
|
if typing.TYPE_CHECKING:
|
|
# tool like pyright in strict mode can't infer what is ".packages.urllib3"
|
|
# so we circumvent it there[...]
|
|
from urllib3 import AsyncResolverDescription, ResolverDescription, Retry, Timeout # type: ignore[no-redef]
|
|
from urllib3.contrib.resolver import BaseResolver # type: ignore[no-redef]
|
|
from urllib3.contrib.resolver._async import AsyncBaseResolver # type: ignore[no-redef]
|
|
from urllib3.fields import RequestField # type: ignore[no-redef]
|
|
|
|
from .hooks import AsyncLifeCycleHook, LifeCycleHook
|
|
from .models import PreparedRequest
|
|
|
|
#: (Restricted) list of http verb that we natively support and understand.
|
|
HttpMethodType: typing.TypeAlias = str
|
|
#: List of formats accepted for URL queries parameters. (e.g. /?param1=a¶m2=b)
|
|
QueryParameterType: typing.TypeAlias = typing.Union[
|
|
typing.List[typing.Tuple[str, typing.Union[str, typing.List[str], None]]],
|
|
typing.Mapping[str, typing.Union[str, typing.List[str], None]],
|
|
bytes,
|
|
str,
|
|
]
|
|
BodyFormType: typing.TypeAlias = typing.Union[
|
|
typing.List[typing.Tuple[str, str]],
|
|
typing.Dict[str, typing.Union[typing.List[str], str]],
|
|
]
|
|
#: Accepted types for the payload in POST, PUT, and PATCH requests.
|
|
BodyType: typing.TypeAlias = typing.Union[
|
|
str,
|
|
bytes,
|
|
bytearray,
|
|
typing.IO[bytes],
|
|
typing.IO[str],
|
|
BodyFormType,
|
|
typing.Iterable[bytes],
|
|
typing.Iterable[str],
|
|
]
|
|
AsyncBodyType: typing.TypeAlias = typing.Union[
|
|
typing.AsyncIterable[bytes],
|
|
typing.AsyncIterable[str],
|
|
]
|
|
#: HTTP Headers can be represented through three ways. 1) typical dict, 2) internal insensitive dict, and 3) list of tuple.
|
|
HeadersType: typing.TypeAlias = typing.Union[
|
|
typing.MutableMapping[typing.Union[str, bytes], typing.Union[str, bytes]],
|
|
typing.MutableMapping[str, str],
|
|
typing.MutableMapping[bytes, bytes],
|
|
CaseInsensitiveDict,
|
|
typing.List[typing.Tuple[typing.Union[str, bytes], typing.Union[str, bytes]]],
|
|
Headers,
|
|
]
|
|
#: We accept both typical mapping and stdlib CookieJar.
|
|
CookiesType: typing.TypeAlias = typing.Union[
|
|
typing.MutableMapping[str, str],
|
|
CookieJar,
|
|
]
|
|
#: Either Yes/No, or CA bundle pem location. Or directly the raw bundle content itself.
|
|
if sys.version_info >= (3, 9): # we can't subscribe PathLike until that version...
|
|
# This one was found used directly within a Pydantic model
|
|
# see https://github.com/jawah/niquests/issues/324
|
|
TLSVerifyType: typing.TypeAlias = typing.Union[bool, str, bytes, PathLike[str]]
|
|
else:
|
|
TLSVerifyType: typing.TypeAlias = typing.Union[bool, str, bytes, "PathLike[str]"]
|
|
#: Accept a pem certificate (concat cert, key) or an explicit tuple of cert, key pair with an optional password.
|
|
TLSClientCertType: typing.TypeAlias = typing.Union[str, typing.Tuple[str, str], typing.Tuple[str, str, str]]
|
|
#: All accepted ways to describe desired timeout.
|
|
TimeoutType: typing.TypeAlias = typing.Union[
|
|
int, # TotalTimeout
|
|
float, # TotalTimeout
|
|
typing.Tuple[typing.Union[int, float], typing.Union[int, float]], # note: TotalTimeout, ConnectTimeout
|
|
typing.Tuple[
|
|
typing.Union[int, float], typing.Union[int, float], typing.Union[int, float]
|
|
], # note: TotalTimeout, ConnectTimeout, ReadTimeout
|
|
Timeout,
|
|
]
|
|
#: Specify (BasicAuth) authentication by passing a tuple of user, and password.
|
|
#: Can be a custom authentication mechanism that derive from AuthBase.
|
|
HttpAuthenticationType: typing.TypeAlias = typing.Union[
|
|
typing.Tuple[typing.Union[str, bytes], typing.Union[str, bytes]],
|
|
str,
|
|
AuthBase,
|
|
typing.Callable[["PreparedRequest"], "PreparedRequest"],
|
|
]
|
|
AsyncHttpAuthenticationType: typing.TypeAlias = typing.Union[
|
|
AsyncAuthBase,
|
|
typing.Callable[["PreparedRequest"], typing.Awaitable["PreparedRequest"]],
|
|
]
|
|
#: Map for each protocol (http, https) associated proxy to be used.
|
|
ProxyType: typing.TypeAlias = typing.Dict[str, str]
|
|
|
|
# cases:
|
|
# 1) fn, fp
|
|
# 2) fn, fp, ft
|
|
# 3) fn, fp, ft, fh
|
|
# OR
|
|
# 4) fp
|
|
BodyFileType: typing.TypeAlias = typing.Union[
|
|
str,
|
|
bytes,
|
|
bytearray,
|
|
typing.IO[str],
|
|
typing.IO[bytes],
|
|
]
|
|
MultiPartFileType: typing.TypeAlias = typing.Tuple[
|
|
str,
|
|
typing.Union[
|
|
BodyFileType,
|
|
typing.Tuple[str, BodyFileType],
|
|
typing.Tuple[str, BodyFileType, str],
|
|
typing.Tuple[str, BodyFileType, str, HeadersType],
|
|
],
|
|
]
|
|
MultiPartFilesType: typing.TypeAlias = typing.List[MultiPartFileType]
|
|
#: files (multipart formdata) can be (also) passed as dict.
|
|
MultiPartFilesAltType: typing.TypeAlias = typing.Dict[
|
|
str,
|
|
typing.Union[
|
|
BodyFileType,
|
|
typing.Tuple[str, BodyFileType],
|
|
typing.Tuple[str, BodyFileType, str],
|
|
typing.Tuple[str, BodyFileType, str, HeadersType],
|
|
],
|
|
]
|
|
|
|
FieldValueType: typing.TypeAlias = typing.Union[str, bytes]
|
|
FieldTupleType: typing.TypeAlias = typing.Union[
|
|
FieldValueType,
|
|
typing.Tuple[str, FieldValueType],
|
|
typing.Tuple[str, FieldValueType, str],
|
|
]
|
|
|
|
FieldSequenceType: typing.TypeAlias = typing.Sequence[typing.Union[typing.Tuple[str, FieldTupleType], RequestField]]
|
|
FieldsType: typing.TypeAlias = typing.Union[
|
|
FieldSequenceType,
|
|
typing.Mapping[str, FieldTupleType],
|
|
]
|
|
|
|
_HV = typing.TypeVar("_HV")
|
|
|
|
HookCallableType: typing.TypeAlias = typing.Callable[
|
|
[_HV],
|
|
typing.Optional[_HV],
|
|
]
|
|
|
|
HookType: typing.TypeAlias = typing.Union[
|
|
typing.Dict[str, typing.List[HookCallableType[_HV]]],
|
|
"LifeCycleHook[_HV]",
|
|
]
|
|
|
|
AsyncHookCallableType: typing.TypeAlias = typing.Callable[
|
|
[_HV],
|
|
typing.Awaitable[typing.Optional[_HV]],
|
|
]
|
|
|
|
AsyncHookType: typing.TypeAlias = typing.Union[
|
|
typing.Dict[str, typing.List[typing.Union[HookCallableType[_HV], AsyncHookCallableType[_HV]]]],
|
|
"AsyncLifeCycleHook[_HV]",
|
|
]
|
|
|
|
CacheLayerAltSvcType: typing.TypeAlias = typing.MutableMapping[typing.Tuple[str, int], typing.Optional[typing.Tuple[str, int]]]
|
|
|
|
RetryType: typing.TypeAlias = typing.Union[bool, int, Retry]
|
|
|
|
ResolverType: typing.TypeAlias = typing.Union[
|
|
str,
|
|
ResolverDescription,
|
|
BaseResolver,
|
|
typing.List[str],
|
|
typing.List[ResolverDescription],
|
|
]
|
|
|
|
AsyncResolverType: typing.TypeAlias = typing.Union[
|
|
str,
|
|
AsyncResolverDescription,
|
|
AsyncBaseResolver,
|
|
typing.List[str],
|
|
typing.List[AsyncResolverDescription],
|
|
]
|
|
|
|
ASGIScope: typing.TypeAlias = typing.MutableMapping[str, typing.Any]
|
|
ASGIMessage: typing.TypeAlias = typing.MutableMapping[str, typing.Any]
|
|
ASGIReceive: typing.TypeAlias = typing.Callable[[], typing.Awaitable[ASGIMessage]]
|
|
ASGISend: typing.TypeAlias = typing.Callable[[ASGIMessage], typing.Awaitable[None]]
|
|
|
|
ASGIApp: typing.TypeAlias = typing.Callable[[ASGIScope, ASGIReceive, ASGISend], typing.Awaitable[None]]
|
|
|
|
WSGIStartResponse: typing.TypeAlias = typing.Callable[
|
|
[str, typing.List[typing.Tuple[str, str]], typing.Optional[typing.Any]],
|
|
typing.Callable[[bytes], None],
|
|
]
|
|
WSGIApp: typing.TypeAlias = typing.Callable[
|
|
[typing.Dict[str, typing.Any], WSGIStartResponse],
|
|
typing.Iterable[bytes],
|
|
]
|