--- /dev/null
+from typing import Any, Optional\r
+from wsgiref.types import WSGIEnvironment, InputStream\r
+\r
+def responder(f): ...\r
+def get_current_url(environ, root_only=False, strip_querystring=False, host_only=False, trusted_hosts=None): ...\r
+def host_is_trusted(hostname, trusted_list): ...\r
+def get_host(environ, trusted_hosts=None): ...\r
+def get_content_length(environ: WSGIEnvironment) -> Optional[int]: ...\r
+def get_input_stream(environ: WSGIEnvironment, safe_fallback: bool = ...) -> InputStream: ...\r
+def get_query_string(environ): ...\r
+def get_path_info(environ, charset='', errors=''): ...\r
+def get_script_name(environ, charset='', errors=''): ...\r
+def pop_path_info(environ, charset='', errors=''): ...\r
+def peek_path_info(environ, charset='', errors=''): ...\r
+def extract_path_info(environ_or_baseurl, path_or_url, charset='', errors='', collapse_http_schemes=True): ...\r
+\r
+class SharedDataMiddleware:\r
+ app = ... # type: Any\r
+ exports = ... # type: Any\r
+ cache = ... # type: Any\r
+ cache_timeout = ... # type: Any\r
+ fallback_mimetype = ... # type: Any\r
+ def __init__(self, app, exports, disallow=None, cache=True, cache_timeout=..., fallback_mimetype=''): ...\r
+ def is_allowed(self, filename): ...\r
+ def get_file_loader(self, filename): ...\r
+ def get_package_loader(self, package, package_path): ...\r
+ def get_directory_loader(self, directory): ...\r
+ def generate_etag(self, mtime, file_size, real_filename): ...\r
+ def __call__(self, environ, start_response): ...\r
+\r
+class DispatcherMiddleware:\r
+ app = ... # type: Any\r
+ mounts = ... # type: Any\r
+ def __init__(self, app, mounts=None): ...\r
+ def __call__(self, environ, start_response): ...\r
+\r
+class ClosingIterator:\r
+ def __init__(self, iterable, callbacks=None): ...\r
+ def __iter__(self): ...\r
+ def __next__(self): ...\r
+ def close(self): ...\r
+\r
+def wrap_file(environ, file, buffer_size=8192): ...\r
+\r
+class FileWrapper:\r
+ file = ... # type: Any\r
+ buffer_size = ... # type: Any\r
+ def __init__(self, file, buffer_size=8192): ...\r
+ def close(self): ...\r
+ def seekable(self): ...\r
+ def seek(self, *args): ...\r
+ def tell(self): ...\r
+ def __iter__(self): ...\r
+ def __next__(self): ...\r
+\r
+class _RangeWrapper:\r
+ iterable = ... # type: Any\r
+ byte_range = ... # type: Any\r
+ start_byte = ... # type: Any\r
+ end_byte = ... # type: Any\r
+ read_length = ... # type: Any\r
+ seekable = ... # type: Any\r
+ end_reached = ... # type: Any\r
+ def __init__(self, iterable, start_byte=0, byte_range=None): ...\r
+ def __iter__(self): ...\r
+ def __next__(self): ...\r
+ def close(self): ...\r
+\r
+def make_line_iter(stream, limit=None, buffer_size=..., cap_at_buffer=False): ...\r
+def make_chunk_iter(stream, separator, limit=None, buffer_size=..., cap_at_buffer=False): ...\r
+\r
+class LimitedStream:\r
+ limit = ... # type: Any\r
+ def __init__(self, stream, limit): ...\r
+ def __iter__(self): ...\r
+ @property\r
+ def is_exhausted(self): ...\r
+ def on_exhausted(self): ...\r
+ def on_disconnect(self): ...\r
+ def exhaust(self, chunk_size=...): ...\r
+ def read(self, size=None): ...\r
+ def readline(self, size=None): ...\r
+ def readlines(self, size=None): ...\r
+ def tell(self): ...\r
+ def __next__(self): ...\r