sortedlist.pyi 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. # stub for SortedList. This is an exact copy of
  2. # https://github.com/grantjenks/python-sortedcontainers/blob/a419ffbd2b1c935b09f11f0971696e537fd0c510/sortedcontainers/sortedlist.pyi
  3. # (from https://github.com/grantjenks/python-sortedcontainers/pull/107)
  4. from __future__ import annotations
  5. from typing import (
  6. Any,
  7. Callable,
  8. Generic,
  9. Iterable,
  10. Iterator,
  11. List,
  12. MutableSequence,
  13. Optional,
  14. Sequence,
  15. Tuple,
  16. Type,
  17. TypeVar,
  18. Union,
  19. overload,
  20. )
  21. _T = TypeVar("_T")
  22. _SL = TypeVar("_SL", bound=SortedList)
  23. _SKL = TypeVar("_SKL", bound=SortedKeyList)
  24. _Key = Callable[[_T], Any]
  25. _Repr = Callable[[], str]
  26. def recursive_repr(fillvalue: str = ...) -> Callable[[_Repr], _Repr]: ...
  27. class SortedList(MutableSequence[_T]):
  28. DEFAULT_LOAD_FACTOR: int = ...
  29. def __init__(
  30. self,
  31. iterable: Optional[Iterable[_T]] = ...,
  32. key: Optional[_Key[_T]] = ...,
  33. ): ...
  34. # NB: currently mypy does not honour return type, see mypy #3307
  35. @overload
  36. def __new__(cls: Type[_SL], iterable: None, key: None) -> _SL: ...
  37. @overload
  38. def __new__(cls: Type[_SL], iterable: None, key: _Key[_T]) -> SortedKeyList[_T]: ...
  39. @overload
  40. def __new__(cls: Type[_SL], iterable: Iterable[_T], key: None) -> _SL: ...
  41. @overload
  42. def __new__(cls, iterable: Iterable[_T], key: _Key[_T]) -> SortedKeyList[_T]: ...
  43. @property
  44. def key(self) -> Optional[Callable[[_T], Any]]: ...
  45. def _reset(self, load: int) -> None: ...
  46. def clear(self) -> None: ...
  47. def _clear(self) -> None: ...
  48. def add(self, value: _T) -> None: ...
  49. def _expand(self, pos: int) -> None: ...
  50. def update(self, iterable: Iterable[_T]) -> None: ...
  51. def _update(self, iterable: Iterable[_T]) -> None: ...
  52. def discard(self, value: _T) -> None: ...
  53. def remove(self, value: _T) -> None: ...
  54. def _delete(self, pos: int, idx: int) -> None: ...
  55. def _loc(self, pos: int, idx: int) -> int: ...
  56. def _pos(self, idx: int) -> int: ...
  57. def _build_index(self) -> None: ...
  58. def __contains__(self, value: Any) -> bool: ...
  59. def __delitem__(self, index: Union[int, slice]) -> None: ...
  60. @overload
  61. def __getitem__(self, index: int) -> _T: ...
  62. @overload
  63. def __getitem__(self, index: slice) -> List[_T]: ...
  64. @overload
  65. def _getitem(self, index: int) -> _T: ...
  66. @overload
  67. def _getitem(self, index: slice) -> List[_T]: ...
  68. @overload
  69. def __setitem__(self, index: int, value: _T) -> None: ...
  70. @overload
  71. def __setitem__(self, index: slice, value: Iterable[_T]) -> None: ...
  72. def __iter__(self) -> Iterator[_T]: ...
  73. def __reversed__(self) -> Iterator[_T]: ...
  74. def __len__(self) -> int: ...
  75. def reverse(self) -> None: ...
  76. def islice(
  77. self,
  78. start: Optional[int] = ...,
  79. stop: Optional[int] = ...,
  80. reverse: bool = ...,
  81. ) -> Iterator[_T]: ...
  82. def _islice(
  83. self,
  84. min_pos: int,
  85. min_idx: int,
  86. max_pos: int,
  87. max_idx: int,
  88. reverse: bool,
  89. ) -> Iterator[_T]: ...
  90. def irange(
  91. self,
  92. minimum: Optional[int] = ...,
  93. maximum: Optional[int] = ...,
  94. inclusive: Tuple[bool, bool] = ...,
  95. reverse: bool = ...,
  96. ) -> Iterator[_T]: ...
  97. def bisect_left(self, value: _T) -> int: ...
  98. def bisect_right(self, value: _T) -> int: ...
  99. def bisect(self, value: _T) -> int: ...
  100. def _bisect_right(self, value: _T) -> int: ...
  101. def count(self, value: _T) -> int: ...
  102. def copy(self: _SL) -> _SL: ...
  103. def __copy__(self: _SL) -> _SL: ...
  104. def append(self, value: _T) -> None: ...
  105. def extend(self, values: Iterable[_T]) -> None: ...
  106. def insert(self, index: int, value: _T) -> None: ...
  107. def pop(self, index: int = ...) -> _T: ...
  108. def index(
  109. self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ...
  110. ) -> int: ...
  111. def __add__(self: _SL, other: Iterable[_T]) -> _SL: ...
  112. def __radd__(self: _SL, other: Iterable[_T]) -> _SL: ...
  113. def __iadd__(self: _SL, other: Iterable[_T]) -> _SL: ...
  114. def __mul__(self: _SL, num: int) -> _SL: ...
  115. def __rmul__(self: _SL, num: int) -> _SL: ...
  116. def __imul__(self: _SL, num: int) -> _SL: ...
  117. def __eq__(self, other: Any) -> bool: ...
  118. def __ne__(self, other: Any) -> bool: ...
  119. def __lt__(self, other: Sequence[_T]) -> bool: ...
  120. def __gt__(self, other: Sequence[_T]) -> bool: ...
  121. def __le__(self, other: Sequence[_T]) -> bool: ...
  122. def __ge__(self, other: Sequence[_T]) -> bool: ...
  123. def __repr__(self) -> str: ...
  124. def _check(self) -> None: ...
  125. class SortedKeyList(SortedList[_T]):
  126. def __init__(
  127. self, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ...
  128. ) -> None: ...
  129. def __new__(
  130. cls, iterable: Optional[Iterable[_T]] = ..., key: _Key[_T] = ...
  131. ) -> SortedKeyList[_T]: ...
  132. @property
  133. def key(self) -> Callable[[_T], Any]: ...
  134. def clear(self) -> None: ...
  135. def _clear(self) -> None: ...
  136. def add(self, value: _T) -> None: ...
  137. def _expand(self, pos: int) -> None: ...
  138. def update(self, iterable: Iterable[_T]) -> None: ...
  139. def _update(self, iterable: Iterable[_T]) -> None: ...
  140. # NB: Must be T to be safely passed to self.func, yet base class imposes Any
  141. def __contains__(self, value: _T) -> bool: ... # type: ignore
  142. def discard(self, value: _T) -> None: ...
  143. def remove(self, value: _T) -> None: ...
  144. def _delete(self, pos: int, idx: int) -> None: ...
  145. def irange(
  146. self,
  147. minimum: Optional[int] = ...,
  148. maximum: Optional[int] = ...,
  149. inclusive: Tuple[bool, bool] = ...,
  150. reverse: bool = ...,
  151. ) -> Iterator[_T]: ...
  152. def irange_key(
  153. self,
  154. min_key: Optional[Any] = ...,
  155. max_key: Optional[Any] = ...,
  156. inclusive: Tuple[bool, bool] = ...,
  157. reserve: bool = ...,
  158. ) -> Iterator[_T]: ...
  159. def bisect_left(self, value: _T) -> int: ...
  160. def bisect_right(self, value: _T) -> int: ...
  161. def bisect(self, value: _T) -> int: ...
  162. def bisect_key_left(self, key: Any) -> int: ...
  163. def _bisect_key_left(self, key: Any) -> int: ...
  164. def bisect_key_right(self, key: Any) -> int: ...
  165. def _bisect_key_right(self, key: Any) -> int: ...
  166. def bisect_key(self, key: Any) -> int: ...
  167. def count(self, value: _T) -> int: ...
  168. def copy(self: _SKL) -> _SKL: ...
  169. def __copy__(self: _SKL) -> _SKL: ...
  170. def index(
  171. self, value: _T, start: Optional[int] = ..., stop: Optional[int] = ...
  172. ) -> int: ...
  173. def __add__(self: _SKL, other: Iterable[_T]) -> _SKL: ...
  174. def __radd__(self: _SKL, other: Iterable[_T]) -> _SKL: ...
  175. def __iadd__(self: _SKL, other: Iterable[_T]) -> _SKL: ...
  176. def __mul__(self: _SKL, num: int) -> _SKL: ...
  177. def __rmul__(self: _SKL, num: int) -> _SKL: ...
  178. def __imul__(self: _SKL, num: int) -> _SKL: ...
  179. def __repr__(self) -> str: ...
  180. def _check(self) -> None: ...
  181. SortedListWithKey = SortedKeyList