diff --git a/stdlib/2/wsgiref/types.pyi b/stdlib/2/wsgiref/types.pyi new file mode 100644 index 000000000000..7c28415bb348 --- /dev/null +++ b/stdlib/2/wsgiref/types.pyi @@ -0,0 +1,34 @@ +# Type declaration for a WSGI Function in Python 2 +# +# wsgiref/types.py doesn't exist and neither does WSGIApplication, it's a type +# provided for type checking purposes. +# +# This means you cannot simply import wsgiref.types in your code. Instead, +# use the `TYPE_CHECKING` flag from the typing module: +# +# from typing import TYPE_CHECKING +# +# if TYPE_CHECKING: +# from wsgiref.types import WSGIApplication +# +# This import is now only taken into account by the type checker. Consequently, +# you need to use 'WSGIApplication' and not simply WSGIApplication when type +# hinting your code. Otherwise Python will raise NameErrors. + +from typing import Callable, Dict, Iterable, List, Optional, Tuple, Type, Union +from types import TracebackType + +_exc_info = Tuple[Optional[Type[BaseException]], + Optional[BaseException], + Optional[TracebackType]] +_Text = Union[unicode, str] +WSGIApplication = Callable[ + [ + Dict[_Text, _Text], + Union[ + Callable[[_Text, List[Tuple[_Text, _Text]]], Callable[[_Text], None]], + Callable[[_Text, List[Tuple[_Text, _Text]], _exc_info], Callable[[_Text], None]], + ] + ], + Iterable[_Text] +] diff --git a/stdlib/3/wsgiref/types.pyi b/stdlib/3/wsgiref/types.pyi new file mode 100644 index 000000000000..f9df8084cf79 --- /dev/null +++ b/stdlib/3/wsgiref/types.pyi @@ -0,0 +1,33 @@ +# Type declaration for a WSGI Function in Python 3 +# +# wsgiref/types.py doesn't exist and neither does WSGIApplication, it's a type +# provided for type checking purposes. +# +# This means you cannot simply import wsgiref.types in your code. Instead, +# use the `TYPE_CHECKING` flag from the typing module: +# +# from typing import TYPE_CHECKING +# +# if TYPE_CHECKING: +# from wsgiref.types import WSGIApplication +# +# This import is now only taken into account by the type checker. Consequently, +# you need to use 'WSGIApplication' and not simply WSGIApplication when type +# hinting your code. Otherwise Python will raise NameErrors. + +from typing import Callable, Dict, Iterable, List, Optional, Tuple, Type, Union +from types import TracebackType + +_exc_info = Tuple[Optional[Type[BaseException]], + Optional[BaseException], + Optional[TracebackType]] +WSGIApplication = Callable[ + [ + Dict[str, str], + Union[ + Callable[[str, List[Tuple[str, str]]], Callable[[Union[bytes, str]], None]], + Callable[[str, List[Tuple[str, str]], _exc_info], Callable[[Union[bytes, str]], None]], + ] + ], + Iterable[Union[bytes, str]], +]