mirror of
https://github.com/thegeeklab/ansible-later.git
synced 2024-11-26 23:00:36 +00:00
58 lines
1.4 KiB
Python
58 lines
1.4 KiB
Python
|
"""Helpers for use with type annotation.
|
||
|
|
||
|
Use the empty classes in this module when annotating the types of Pyrsistent
|
||
|
objects, instead of using the actual collection class.
|
||
|
|
||
|
For example,
|
||
|
|
||
|
from pyrsistent import pvector
|
||
|
from pyrsistent.typing import PVector
|
||
|
|
||
|
myvector: PVector[str] = pvector(['a', 'b', 'c'])
|
||
|
|
||
|
"""
|
||
|
|
||
|
try:
|
||
|
from typing import Container
|
||
|
from typing import Hashable
|
||
|
from typing import Generic
|
||
|
from typing import Iterable
|
||
|
from typing import Mapping
|
||
|
from typing import Sequence
|
||
|
from typing import Sized
|
||
|
from typing import TypeVar
|
||
|
|
||
|
__all__ = ['CheckedPSet', 'CheckedPVector', 'PBag', 'PDeque', 'PList', 'PMap', 'PSet', 'PVector']
|
||
|
|
||
|
T = TypeVar('T')
|
||
|
KT = TypeVar('KT')
|
||
|
VT = TypeVar('VT')
|
||
|
|
||
|
# PSet.add and PSet.discard have different type signatures than that of Set.
|
||
|
class CheckedPSet(Generic[T], Hashable):
|
||
|
pass
|
||
|
|
||
|
class CheckedPVector(Sequence[T], Hashable):
|
||
|
pass
|
||
|
|
||
|
class PBag(Container[T], Iterable[T], Sized, Hashable):
|
||
|
pass
|
||
|
|
||
|
class PDeque(Sequence[T], Hashable):
|
||
|
pass
|
||
|
|
||
|
class PList(Sequence[T], Hashable):
|
||
|
pass
|
||
|
|
||
|
class PMap(Mapping[KT, VT], Hashable):
|
||
|
pass
|
||
|
|
||
|
# PSet.add and PSet.discard have different type signatures than that of Set.
|
||
|
class PSet(Generic[T], Hashable):
|
||
|
pass
|
||
|
|
||
|
class PVector(Sequence[T], Hashable):
|
||
|
pass
|
||
|
except ImportError:
|
||
|
pass
|