11from _typeshed import SupportsKeysAndGetItem
2- from collections .abc import Generator , ItemsView , Iterable , KeysView , ValuesView
3- from typing import NoReturn , TypeAlias , TypeVar , overload
2+ from collections .abc import Generator , ItemsView , Iterable , Iterator , KeysView , ValuesView
3+ from typing import Any , Generic , NoReturn , TypeAlias , TypeVar , overload
44from typing_extensions import Self
55
66_KT = TypeVar ("_KT" )
@@ -12,17 +12,26 @@ class OrderedMultiDict(dict[_KT, _VT]):
1212 def addlist (self , k : _KT , v : Iterable [_VT ]) -> None : ...
1313 def clear (self ) -> None : ...
1414 def copy (self ) -> Self : ...
15- def counts (self ) -> Self : ...
15+ def counts (self ) -> OrderedMultiDict [_KT , int ]: ...
16+
17+ @overload # type: ignore[override]
18+ @classmethod
19+ def fromkeys (cls , keys : Iterable [_KT ], default : None = None ) -> OrderedMultiDict [_KT , Any | None ]: ...
20+ @overload
1621 @classmethod
17- def fromkeys (cls , keys : _KT , default : _VT | None = None ) -> Self : ... # type: ignore[override]
22+ def fromkeys (cls , keys : Iterable [ _KT ] , default : _T ) -> OrderedMultiDict [ _KT , _T ] : ...
1823
1924 @overload # type: ignore[override]
2025 def get (self , k : _KT , default : None = None ) -> _VT | None : ...
2126 @overload
2227 def get (self , k : _KT , default : _VT ) -> _VT : ...
2328
24- def getlist (self , k : _KT , default : list [_VT ] = ...) -> list [_VT ]: ...
25- def inverted (self ) -> Self : ...
29+ @overload
30+ def getlist (self , k : _KT ) -> list [_VT ]: ...
31+ @overload
32+ def getlist (self , k : _KT , default : _T ) -> list [_VT ] | _T : ...
33+
34+ def inverted (self ) -> OrderedMultiDict [_VT , _KT ]: ...
2635 def items (self , multi : bool = False ) -> list [tuple [_KT , _VT ]]: ... # type: ignore[override]
2736 def iteritems (self , multi : bool = False ) -> Generator [tuple [_KT , _VT ]]: ...
2837 def iterkeys (self , multi : bool = False ) -> Generator [_KT ]: ...
@@ -61,31 +70,41 @@ class OneToOne(dict[_KT, _VT]):
6170 def copy (self ) -> Self : ...
6271 def pop (self , key : _KT , default : _VT | _T = ...) -> _VT | _T : ...
6372 def popitem (self ) -> tuple [_KT , _VT ]: ...
64- def setdefault (self , key : _KT , default : _VT | None = None ) -> _VT : ...
73+
74+ @overload
75+ def setdefault (self , key : _KT , default : None = None ) -> _VT | None : ...
76+ @overload
77+ def setdefault (self , key : _KT , default : _VT ) -> _VT : ...
78+
6579 @classmethod
6680 def unique (cls , * a , ** kw ) -> Self : ...
6781 def update (self , dict_or_iterable , ** kw ) -> None : ... # type: ignore[override]
6882
69- class ManyToMany (dict [_KT , frozenset [ _VT ] ]):
83+ class ManyToMany (Generic [_KT , _VT ]):
7084 data : dict [_KT , set [_VT ]]
71- inv : dict [_VT , set [ _KT ] ]
72- # def __contains__(self, key: _KT) : ...
85+ inv : ManyToMany [_VT , _KT ]
86+ def __contains__ (self , key : object ) -> bool : ...
7387 def __delitem__ (self , key : _KT ) -> None : ...
7488 def __eq__ (self , other ): ...
75- def __getitem__ (self , key : _KT ): ...
89+ def __getitem__ (self , key : _KT ) -> frozenset [ _VT ] : ...
7690 def __init__ (
77- self , items : ManyToMany [_KT , _VT ] | SupportsKeysAndGetItem [_KT , _VT ] | tuple [_KT , _VT ] | None = None
91+ self , items : ManyToMany [_KT , _VT ] | SupportsKeysAndGetItem [_KT , _VT ] | Iterable [ tuple [_KT , _VT ] ] | None = None
7892 ) -> None : ...
79- def __iter__ (self ): ...
80- def __len__ (self ): ...
93+ def __iter__ (self ) -> Iterator [ _KT ] : ...
94+ def __len__ (self ) -> int : ...
8195 def __setitem__ (self , key : _KT , vals : Iterable [_VT ]) -> None : ...
8296 def add (self , key : _KT , val : _VT ) -> None : ...
83- def get (self , key : _KT , default : frozenset [_VT ] = ...) -> frozenset [_VT ]: ... # type: ignore[override]
97+
98+ @overload
99+ def get (self , key : _KT ) -> frozenset [_VT ]: ...
100+ @overload
101+ def get (self , key : _KT , default : _T ) -> frozenset [_VT ] | _T : ...
102+
84103 def iteritems (self ) -> Generator [tuple [_KT , _VT ]]: ...
85- def keys (self ): ...
104+ def keys (self ) -> KeysView [ _KT ] : ...
86105 def remove (self , key : _KT , val : _VT ) -> None : ...
87106 def replace (self , key : _KT , newkey : _KT ) -> None : ...
88- def update (self , iterable : ManyToMany [_KT , _VT ] | SupportsKeysAndGetItem [_KT , _VT ] | tuple [_KT , _VT ]) -> None : ... # type: ignore[override]
107+ def update (self , iterable : ManyToMany [_KT , _VT ] | SupportsKeysAndGetItem [_KT , _VT ] | Iterable [ tuple [_KT , _VT ]] ) -> None : ...
89108
90109def subdict (d : dict [_KT , _VT ], keep : Iterable [_KT ] | None = None , drop : Iterable [_KT ] | None = None ) -> dict [_KT , _VT ]: ...
91110
0 commit comments