|  | 
| 1 |  | -from __future__ import annotations | 
| 2 |  | - | 
| 3 | 1 | import abc | 
| 4 | 2 | import typing | 
| 5 | 3 | from typing import Any, Generator | 
|  | 
| 9 | 7 | if typing.TYPE_CHECKING: | 
| 10 | 8 |     import _typeshed  # noqa: F401 | 
| 11 | 9 | 
 | 
|  | 10 | +#: A type alias for a type that can be used as a key in a dictionary. | 
| 12 | 11 | KT = types.TypeVar('KT') | 
|  | 12 | +#: A type alias for a type that can be used as a value in a dictionary. | 
| 13 | 13 | VT = types.TypeVar('VT') | 
|  | 14 | +#: A type alias for a dictionary with keys of type KT and values of type VT. | 
| 14 | 15 | DT = types.Dict[KT, VT] | 
|  | 16 | +#: A type alias for the casted type of a dictionary key. | 
| 15 | 17 | KT_cast = types.Optional[types.Callable[[Any], KT]] | 
|  | 18 | +#: A type alias for the casted type of a dictionary value. | 
| 16 | 19 | VT_cast = types.Optional[types.Callable[[Any], VT]] | 
|  | 20 | +#: A type alias for the hashable values of the `UniqueList` | 
| 17 | 21 | HT = types.TypeVar('HT', bound=types.Hashable) | 
| 18 | 22 | 
 | 
| 19 | 23 | # Using types.Union instead of | since Python 3.7 doesn't fully support it | 
| @@ -61,7 +65,7 @@ class CastedDict(CastedDictBase[KT, VT]): | 
| 61 | 65 |     Note that you can specify the types for mypy and type hinting with: | 
| 62 | 66 |     CastedDict[int, int](int, int) | 
| 63 | 67 | 
 | 
| 64 |  | -    >>> d = CastedDict(int, int) | 
|  | 68 | +    >>> d: CastedDict[int, int] = CastedDict(int, int) | 
| 65 | 69 |     >>> d[1] = 2 | 
| 66 | 70 |     >>> d['3'] = '4' | 
| 67 | 71 |     >>> d.update({'5': '6'}) | 
| @@ -105,7 +109,7 @@ class LazyCastedDict(CastedDictBase[KT, VT]): | 
| 105 | 109 |     Note that you can specify the types for mypy and type hinting with: | 
| 106 | 110 |     LazyCastedDict[int, int](int, int) | 
| 107 | 111 | 
 | 
| 108 |  | -    >>> d = LazyCastedDict(int, int) | 
|  | 112 | +    >>> d: LazyCastedDict[int, int] = LazyCastedDict(int, int) | 
| 109 | 113 |     >>> d[1] = 2 | 
| 110 | 114 |     >>> d['3'] = '4' | 
| 111 | 115 |     >>> d.update({'5': '6'}) | 
| @@ -159,7 +163,9 @@ def __getitem__(self, key: Any) -> VT: | 
| 159 | 163 | 
 | 
| 160 | 164 |         return value | 
| 161 | 165 | 
 | 
| 162 |  | -    def items(self) -> Generator[tuple[KT, VT], None, None]:  # type: ignore | 
|  | 166 | +    def items(  # type: ignore | 
|  | 167 | +        self, | 
|  | 168 | +    ) -> Generator[types.Tuple[KT, VT], None, None]: | 
| 163 | 169 |         if self._value_cast is None: | 
| 164 | 170 |             yield from super().items() | 
| 165 | 171 |         else: | 
| @@ -208,7 +214,7 @@ class UniqueList(types.List[HT]): | 
| 208 | 214 |     ValueError: Duplicate value: 4 | 
| 209 | 215 |     ''' | 
| 210 | 216 | 
 | 
| 211 |  | -    _set: set[HT] | 
|  | 217 | +    _set: types.Set[HT] | 
| 212 | 218 | 
 | 
| 213 | 219 |     def __init__( | 
| 214 | 220 |         self, | 
|  | 
0 commit comments