Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Prev Previous commit
Next Next commit
Revert Use contravariant type variable in Container
  • Loading branch information
cdce8p authored and mypybot committed Apr 15, 2026
commit fa4ba513d0df17781734c240f0ed812957c56df5
9 changes: 3 additions & 6 deletions mypy/typeshed/stdlib/typing.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -640,17 +640,14 @@ class AsyncGenerator(AsyncIterator[_YieldT_co], Protocol[_YieldT_co, _SendT_cont
) -> Coroutine[Any, Any, _YieldT_co]: ...
def aclose(self) -> Coroutine[Any, Any, None]: ...

_ContainerT_contra = TypeVar("_ContainerT_contra", contravariant=True, default=Any)

@runtime_checkable
class Container(Protocol[_ContainerT_contra]):
class Container(Protocol[_T_co]):
# This is generic more on vibes than anything else
@abstractmethod
def __contains__(self, x: _ContainerT_contra, /) -> bool: ...
def __contains__(self, x: object, /) -> bool: ...

@runtime_checkable
class Collection(Iterable[_T_co], Container[Any], Protocol[_T_co]):
# Note: need to use Container[Any] instead of Container[_T_co] to ensure covariance.
class Collection(Iterable[_T_co], Container[_T_co], Protocol[_T_co]):
# Implement Sized (but don't have it as a base class).
@abstractmethod
def __len__(self) -> int: ...
Expand Down