mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 04:34:28 +08:00
Fixes to ContextManager (#1249)
* add typing.ContextManager for 3.6+ only This fixes the easier part of #655. Would it make sense to add a generic typing.ContextManager that exists in any Python version? * update comment * fix argument types for ContextManager.__exit__ * add AsyncContextManager * add @asynccontextmanager * typing.ContextManager now always exists * back out async-related changes Will submit those in a separate PR later * fix import order * AbstractContextManager only exists in 3.6+ * AbstractContextManager -> ContextManager
This commit is contained in:
committed by
Matthias Kramm
parent
385b9c8b66
commit
7dd2f80194
@@ -2,24 +2,23 @@
|
||||
|
||||
from typing import (
|
||||
Any, Callable, Generator, IO, Iterable, Iterator, Optional, Type,
|
||||
Generic, TypeVar,
|
||||
Generic, TypeVar
|
||||
)
|
||||
from types import TracebackType
|
||||
import sys
|
||||
# Aliased here for backwards compatibility; TODO eventually remove this
|
||||
from typing import ContextManager as ContextManager
|
||||
|
||||
if sys.version_info >= (3, 6):
|
||||
from typing import ContextManager as AbstractContextManager
|
||||
|
||||
_T = TypeVar('_T')
|
||||
|
||||
_ExitFunc = Callable[[Optional[Type[BaseException]],
|
||||
Optional[Exception],
|
||||
Optional[BaseException],
|
||||
Optional[TracebackType]], bool]
|
||||
_CM_EF = TypeVar('_CM_EF', ContextManager, _ExitFunc)
|
||||
|
||||
# TODO already in PEP, have to get added to mypy
|
||||
class ContextManager(Generic[_T]):
|
||||
def __enter__(self) -> _T: ...
|
||||
def __exit__(self, exc_type: Optional[Type[BaseException]],
|
||||
exc_val: Optional[Exception],
|
||||
exc_tb: Optional[TracebackType]) -> bool: ...
|
||||
|
||||
if sys.version_info >= (3, 2):
|
||||
class GeneratorContextManager(Generic[_T], ContextManager[_T]):
|
||||
def __call__(self, func: Callable[..., _T]) -> Callable[..., _T]: ...
|
||||
|
||||
Reference in New Issue
Block a user