summaryrefslogtreecommitdiffstats
path: root/contrib/python/multidict
diff options
context:
space:
mode:
authorshadchin <[email protected]>2024-03-04 21:16:16 +0300
committershadchin <[email protected]>2024-03-04 21:43:39 +0300
commit74819c4157bd388a7d429c870ea4b343a282dafa (patch)
tree4bff355b03dfb24b14d33581357cc8e624d170fd /contrib/python/multidict
parentf64c28a5443395e3a8f27e6f1b15a3507812d2de (diff)
Extend support pyi files
Сейчас pyi файлы в макросе PY_SRCS используются исключительно в Arcadia плагине для продуктов JB, при сборке эти файлы просто игнорируются. В этом PR добавил шаг, который будет содержимое этих файлов складывать в ресурсы, секция PY_SRCS удобна тем, что позволяет раскладывать pyi файлы с учетом TOP_LEVEL/NAMESPACE, а это необходимо для правильной работы mypy. 3924b0556bc99947e6893cd79e5ce62ec72a18a9
Diffstat (limited to 'contrib/python/multidict')
-rw-r--r--contrib/python/multidict/multidict/__init__.pyi152
1 files changed, 152 insertions, 0 deletions
diff --git a/contrib/python/multidict/multidict/__init__.pyi b/contrib/python/multidict/multidict/__init__.pyi
new file mode 100644
index 00000000000..0940340f81e
--- /dev/null
+++ b/contrib/python/multidict/multidict/__init__.pyi
@@ -0,0 +1,152 @@
+import abc
+from typing import (
+ Generic,
+ Iterable,
+ Iterator,
+ Mapping,
+ MutableMapping,
+ TypeVar,
+ overload,
+)
+
+class istr(str): ...
+
+upstr = istr
+
+_S = str | istr
+
+_T = TypeVar("_T")
+
+_T_co = TypeVar("_T_co", covariant=True)
+
+_D = TypeVar("_D")
+
+class MultiMapping(Mapping[_S, _T_co]):
+ @overload
+ @abc.abstractmethod
+ def getall(self, key: _S) -> list[_T_co]: ...
+ @overload
+ @abc.abstractmethod
+ def getall(self, key: _S, default: _D) -> list[_T_co] | _D: ...
+ @overload
+ @abc.abstractmethod
+ def getone(self, key: _S) -> _T_co: ...
+ @overload
+ @abc.abstractmethod
+ def getone(self, key: _S, default: _D) -> _T_co | _D: ...
+
+_Arg = (
+ Mapping[str, _T]
+ | Mapping[istr, _T]
+ | dict[str, _T]
+ | dict[istr, _T]
+ | MultiMapping[_T]
+ | Iterable[tuple[str, _T]]
+ | Iterable[tuple[istr, _T]]
+)
+
+class MutableMultiMapping(MultiMapping[_T], MutableMapping[_S, _T], Generic[_T]):
+ @abc.abstractmethod
+ def add(self, key: _S, value: _T) -> None: ...
+ @abc.abstractmethod
+ def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
+ @overload
+ @abc.abstractmethod
+ def popone(self, key: _S) -> _T: ...
+ @overload
+ @abc.abstractmethod
+ def popone(self, key: _S, default: _D) -> _T | _D: ...
+ @overload
+ @abc.abstractmethod
+ def popall(self, key: _S) -> list[_T]: ...
+ @overload
+ @abc.abstractmethod
+ def popall(self, key: _S, default: _D) -> list[_T] | _D: ...
+
+class MultiDict(MutableMultiMapping[_T], Generic[_T]):
+ def __init__(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
+ def copy(self) -> MultiDict[_T]: ...
+ def __getitem__(self, k: _S) -> _T: ...
+ def __setitem__(self, k: _S, v: _T) -> None: ...
+ def __delitem__(self, v: _S) -> None: ...
+ def __iter__(self) -> Iterator[_S]: ...
+ def __len__(self) -> int: ...
+ @overload
+ def getall(self, key: _S) -> list[_T]: ...
+ @overload
+ def getall(self, key: _S, default: _D) -> list[_T] | _D: ...
+ @overload
+ def getone(self, key: _S) -> _T: ...
+ @overload
+ def getone(self, key: _S, default: _D) -> _T | _D: ...
+ def add(self, key: _S, value: _T) -> None: ...
+ def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
+ @overload
+ def popone(self, key: _S) -> _T: ...
+ @overload
+ def popone(self, key: _S, default: _D) -> _T | _D: ...
+ @overload
+ def popall(self, key: _S) -> list[_T]: ...
+ @overload
+ def popall(self, key: _S, default: _D) -> list[_T] | _D: ...
+
+class CIMultiDict(MutableMultiMapping[_T], Generic[_T]):
+ def __init__(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
+ def copy(self) -> CIMultiDict[_T]: ...
+ def __getitem__(self, k: _S) -> _T: ...
+ def __setitem__(self, k: _S, v: _T) -> None: ...
+ def __delitem__(self, v: _S) -> None: ...
+ def __iter__(self) -> Iterator[_S]: ...
+ def __len__(self) -> int: ...
+ @overload
+ def getall(self, key: _S) -> list[_T]: ...
+ @overload
+ def getall(self, key: _S, default: _D) -> list[_T] | _D: ...
+ @overload
+ def getone(self, key: _S) -> _T: ...
+ @overload
+ def getone(self, key: _S, default: _D) -> _T | _D: ...
+ def add(self, key: _S, value: _T) -> None: ...
+ def extend(self, arg: _Arg[_T] = ..., **kwargs: _T) -> None: ...
+ @overload
+ def popone(self, key: _S) -> _T: ...
+ @overload
+ def popone(self, key: _S, default: _D) -> _T | _D: ...
+ @overload
+ def popall(self, key: _S) -> list[_T]: ...
+ @overload
+ def popall(self, key: _S, default: _D) -> list[_T] | _D: ...
+
+class MultiDictProxy(MultiMapping[_T], Generic[_T]):
+ def __init__(self, arg: MultiMapping[_T] | MutableMultiMapping[_T]) -> None: ...
+ def copy(self) -> MultiDict[_T]: ...
+ def __getitem__(self, k: _S) -> _T: ...
+ def __iter__(self) -> Iterator[_S]: ...
+ def __len__(self) -> int: ...
+ @overload
+ def getall(self, key: _S) -> list[_T]: ...
+ @overload
+ def getall(self, key: _S, default: _D) -> list[_T] | _D: ...
+ @overload
+ def getone(self, key: _S) -> _T: ...
+ @overload
+ def getone(self, key: _S, default: _D) -> _T | _D: ...
+
+class CIMultiDictProxy(MultiMapping[_T], Generic[_T]):
+ def __init__(self, arg: MultiMapping[_T] | MutableMultiMapping[_T]) -> None: ...
+ def __getitem__(self, k: _S) -> _T: ...
+ def __iter__(self) -> Iterator[_S]: ...
+ def __len__(self) -> int: ...
+ @overload
+ def getall(self, key: _S) -> list[_T]: ...
+ @overload
+ def getall(self, key: _S, default: _D) -> list[_T] | _D: ...
+ @overload
+ def getone(self, key: _S) -> _T: ...
+ @overload
+ def getone(self, key: _S, default: _D) -> _T | _D: ...
+ def copy(self) -> CIMultiDict[_T]: ...
+
+def getversion(
+ md: MultiDict[_T] | CIMultiDict[_T] | MultiDictProxy[_T] | CIMultiDictProxy[_T],
+) -> int: ...