import io
import itertools
import sys
-import types
import typing
from .._models import Request, Response
from .._types import SyncByteStream
from .base import BaseTransport
-_T = typing.TypeVar("_T")
-_ExcInfo = typing.Tuple[typing.Type[BaseException], BaseException, types.TracebackType]
-_OptExcInfo = typing.Union[_ExcInfo, typing.Tuple[None, None, None]]
-
-
-# backported wsgiref.types definitions from Python 3.11
-StartResponse = typing.Callable[
- [str, typing.List[typing.Tuple[str, str]], typing.Optional[_OptExcInfo]],
- typing.Callable[[bytes], object],
-]
+if typing.TYPE_CHECKING:
+ from _typeshed import OptExcInfo # pragma: no cover
+ from _typeshed.wsgi import WSGIApplication # pragma: no cover
-
-WSGIApplication = typing.Callable[
- [typing.Dict[str, typing.Any], StartResponse], typing.Iterable[bytes]
-]
+_T = typing.TypeVar("_T")
def _skip_leading_empty_chunks(body: typing.Iterable[_T]) -> typing.Iterable[_T]:
def __init__(
self,
- app: WSGIApplication,
+ app: "WSGIApplication",
raise_app_exceptions: bool = True,
script_name: str = "",
remote_addr: str = "127.0.0.1",
def start_response(
status: str,
response_headers: typing.List[typing.Tuple[str, str]],
- exc_info: typing.Optional[_OptExcInfo] = None,
+ exc_info: typing.Optional["OptExcInfo"] = None,
) -> typing.Callable[[bytes], typing.Any]:
nonlocal seen_status, seen_response_headers, seen_exc_info
seen_status = status