You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

202 lines
5.1 KiB

4 years ago
  1. import abc
  2. from typing import (Mapping, MutableMapping, List, Union, Iterable,
  3. Iterator, TypeVar, Generic, Tuple, Dict, Optional,
  4. overload)
  5. class istr(str):
  6. pass
  7. upstr = istr
  8. _S = Union[str, istr]
  9. _T = TypeVar('_T')
  10. _T_co = TypeVar('_T_co', covariant=True)
  11. _D = TypeVar('_D')
  12. class MultiMapping(Mapping[_S, _T_co]):
  13. @overload
  14. @abc.abstractmethod
  15. def getall(self, key: _S) -> List[_T_co]: ...
  16. @overload
  17. @abc.abstractmethod
  18. def getall(self, key: _S, default: _D) -> Union[List[_T_co], _D]: ...
  19. @overload
  20. @abc.abstractmethod
  21. def getone(self, key: _S) -> _T_co: ...
  22. @overload
  23. @abc.abstractmethod
  24. def getone(self, key: _S, default: _D) -> Union[_T_co, _D]: ...
  25. _Arg = Union[Mapping[_S, _T],
  26. Dict[_S, _T],
  27. MultiMapping[_T],
  28. Iterable[Tuple[_S, _T]]]
  29. class MutableMultiMapping(MultiMapping[_T],
  30. MutableMapping[_S, _T],
  31. Generic[_T]):
  32. @abc.abstractmethod
  33. def add(self, key: _S, value: _T) -> None: ...
  34. @abc.abstractmethod
  35. def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
  36. @overload
  37. @abc.abstractmethod
  38. def popone(self, key: _S) -> _T: ...
  39. @overload
  40. @abc.abstractmethod
  41. def popone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  42. @overload
  43. @abc.abstractmethod
  44. def popall(self, key: _S) -> List[_T]: ...
  45. @overload
  46. @abc.abstractmethod
  47. def popall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  48. class MultiDict(MutableMultiMapping[_T], Generic[_T]):
  49. def __init__(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
  50. def copy(self) -> MultiDict[_T]: ...
  51. def __getitem__(self, k: _S) -> _T: ...
  52. def __setitem__(self, k: _S, v: _T) -> None: ...
  53. def __delitem__(self, v: _S) -> None: ...
  54. def __iter__(self) -> Iterator[_S]: ...
  55. def __len__(self) -> int: ...
  56. @overload
  57. def getall(self, key: _S) -> List[_T]: ...
  58. @overload
  59. def getall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  60. @overload
  61. def getone(self, key: _S) -> _T: ...
  62. @overload
  63. def getone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  64. def add(self, key: _S, value: _T) -> None: ...
  65. def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
  66. @overload
  67. def popone(self, key: _S) -> _T: ...
  68. @overload
  69. def popone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  70. @overload
  71. def popall(self, key: _S) -> List[_T]: ...
  72. @overload
  73. def popall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  74. class CIMultiDict(MutableMultiMapping[_T], Generic[_T]):
  75. def __init__(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
  76. def copy(self) -> MultiDict[_T]: ...
  77. def __getitem__(self, k: _S) -> _T: ...
  78. def __setitem__(self, k: _S, v: _T) -> None: ...
  79. def __delitem__(self, v: _S) -> None: ...
  80. def __iter__(self) -> Iterator[_S]: ...
  81. def __len__(self) -> int: ...
  82. @overload
  83. def getall(self, key: _S) -> List[_T]: ...
  84. @overload
  85. def getall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  86. @overload
  87. def getone(self, key: _S) -> _T: ...
  88. @overload
  89. def getone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  90. def add(self, key: _S, value: _T) -> None: ...
  91. def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
  92. @overload
  93. def popone(self, key: _S) -> _T: ...
  94. @overload
  95. def popone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  96. @overload
  97. def popall(self, key: _S) -> List[_T]: ...
  98. @overload
  99. def popall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  100. class MultiDictProxy(MultiMapping[_T], Generic[_T]):
  101. def __init__(self, arg: Union[MultiMapping[_T],
  102. MutableMultiMapping[_T]]) -> None: ...
  103. def copy(self) -> MultiDict[_T]: ...
  104. def __getitem__(self, k: _S) -> _T: ...
  105. def __iter__(self) -> Iterator[_S]: ...
  106. def __len__(self) -> int: ...
  107. @overload
  108. def getall(self, key: _S) -> List[_T]: ...
  109. @overload
  110. def getall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  111. @overload
  112. def getone(self, key: _S) -> _T: ...
  113. @overload
  114. def getone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  115. class CIMultiDictProxy(MultiMapping[_T], Generic[_T]):
  116. def __init__(self, arg: Union[MultiMapping[_T],
  117. MutableMultiMapping[_T]]) -> None: ...
  118. def __getitem__(self, k: _S) -> _T: ...
  119. def __iter__(self) -> Iterator[_S]: ...
  120. def __len__(self) -> int: ...
  121. @overload
  122. def getall(self, key: _S) -> List[_T]: ...
  123. @overload
  124. def getall(self, key: _S, default: _D) -> Union[List[_T], _D]: ...
  125. @overload
  126. def getone(self, key: _S) -> _T: ...
  127. @overload
  128. def getone(self, key: _S, default: _D) -> Union[_T, _D]: ...
  129. def copy(self) -> CIMultiDict[_T]: ...
  130. def getversion(md: Union[MultiDict[_T],
  131. CIMultiDict[_T],
  132. MultiDictProxy[_T],
  133. CIMultiDictProxy[_T]]) -> int: ...