11import collections .abc
22import sys
3- from typing import Any
3+ from _typeshed import Self , SupportsKeysAndGetItem
4+ from collections .abc import Callable , Iterable , Iterator
5+ from typing import Any , Generic , NoReturn , TypeVar , overload
46
57from ..cimmutabledict import immutabledict as immutabledict
8+ from ..sql .elements import ColumnElement
9+
10+ _S = TypeVar ("_S" )
11+ _T = TypeVar ("_T" )
612
713collections_abc = collections .abc
814
9- EMPTY_SET : Any
15+ EMPTY_SET : frozenset [ Any ]
1016
1117class ImmutableContainer :
12- __delitem__ : Any
13- __setitem__ : Any
14- __setattr__ : Any
18+ def __delitem__ ( self , * arg : object , ** kw : object ) -> NoReturn : ...
19+ def __setitem__ ( self , * arg : object , ** kw : object ) -> NoReturn : ...
20+ def __setattr__ ( self , * arg : object , ** kw : object ) -> NoReturn : ...
1521
16- def coerce_to_immutabledict (d ): ...
22+ def coerce_to_immutabledict (d ) -> immutabledict : ...
1723
18- EMPTY_DICT : Any
24+ EMPTY_DICT : immutabledict
1925
2026class FacadeDict (ImmutableContainer , dict [Any , Any ]):
2127 clear : Any
@@ -27,31 +33,34 @@ class FacadeDict(ImmutableContainer, dict[Any, Any]):
2733 def copy (self ) -> None : ... # type: ignore[override]
2834 def __reduce__ (self ): ...
2935
30- class Properties :
31- def __init__ (self , data ) -> None : ...
32- def __len__ (self ): ...
33- def __iter__ (self ): ...
34- def __dir__ (self ): ...
35- def __add__ (self , other ): ...
36- def __setitem__ (self , key , obj ) -> None : ...
37- def __getitem__ (self , key ): ...
38- def __delitem__ (self , key ) -> None : ...
39- def __setattr__ (self , key , obj ) -> None : ...
40- def __getattr__ (self , key ): ...
41- def __contains__ (self , key ): ...
42- def as_immutable (self ): ...
43- def update (self , value ) -> None : ...
44- def get (self , key , default : Any | None = ...): ...
45- def keys (self ): ...
46- def values (self ): ...
47- def items (self ): ...
48- def has_key (self , key ): ...
36+ class Properties (Generic [_T ]):
37+ def __init__ (self , data : dict [str , _T ]) -> None : ...
38+ def __len__ (self ) -> int : ...
39+ def __iter__ (self ) -> Iterator [_T ]: ...
40+ def __dir__ (self ) -> list [str ]: ...
41+ def __add__ (self , other : Iterable [_S ]) -> list [_S | _T ]: ...
42+ def __setitem__ (self , key : str , obj : _T ) -> None : ...
43+ def __getitem__ (self , key : str ) -> _T : ...
44+ def __delitem__ (self , key : str ) -> None : ...
45+ def __setattr__ (self , key : str , obj : _T ) -> None : ...
46+ def __getattr__ (self , key : str ) -> _T : ...
47+ def __contains__ (self , key : str ) -> bool : ...
48+ def as_immutable (self ) -> ImmutableProperties [_T ]: ...
49+ def update (self , value : Iterable [tuple [str , _T ]] | SupportsKeysAndGetItem [str , _T ]) -> None : ...
50+ @overload
51+ def get (self , key : str ) -> _T | None : ...
52+ @overload
53+ def get (self , key : str , default : _S ) -> _T | _S : ...
54+ def keys (self ) -> list [str ]: ...
55+ def values (self ) -> list [_T ]: ...
56+ def items (self ) -> list [tuple [str , _T ]]: ...
57+ def has_key (self , key : str ) -> bool : ...
4958 def clear (self ) -> None : ...
5059
51- class OrderedProperties (Properties ):
60+ class OrderedProperties (Properties [ _T ], Generic [ _T ] ):
5261 def __init__ (self ) -> None : ...
5362
54- class ImmutableProperties (ImmutableContainer , Properties ): ...
63+ class ImmutableProperties (ImmutableContainer , Properties [ _T ], Generic [ _T ] ): ...
5564
5665if sys .version_info >= (3 , 7 ):
5766 OrderedDict = dict
@@ -75,32 +84,32 @@ else:
7584
7685def sort_dictionary (d , key : Any | None = ...): ...
7786
78- class OrderedSet (set [Any ]):
79- def __init__ (self , d : Any | None = ...) -> None : ...
80- def add (self , element ) -> None : ...
81- def remove (self , element ) -> None : ...
82- def insert (self , pos , element ) -> None : ...
83- def discard (self , element ) -> None : ...
87+ class OrderedSet (set [_T ], Generic [ _T ]):
88+ def __init__ (self , d : Iterable [ _T ] | None = ...) -> None : ...
89+ def add (self , element : _T ) -> None : ...
90+ def remove (self , element : _T ) -> None : ...
91+ def insert (self , pos : int , element : _T ) -> None : ...
92+ def discard (self , element : _T ) -> None : ...
8493 def clear (self ) -> None : ...
85- def __getitem__ (self , key ) : ...
86- def __iter__ (self ): ...
87- def __add__ (self , other ) : ...
88- def update (self , iterable ) : ...
89- __ior__ : Any
90- def union (self , other ) : ...
91- __or__ : Any
92- def intersection (self , other ) : ...
93- __and__ : Any
94- def symmetric_difference (self , other ) : ...
95- __xor__ : Any
96- def difference (self , other ) : ...
97- __sub__ : Any
98- def intersection_update (self , other ) : ...
99- __iand__ : Any
100- def symmetric_difference_update (self , other ) : ...
101- __ixor__ : Any
102- def difference_update (self , other ) : ...
103- __isub__ : Any
94+ def __getitem__ (self , key : int ) -> _T : ...
95+ def __iter__ (self ) -> Iterator [ _T ] : ...
96+ def __add__ (self , other : Iterable [ _S ]) -> OrderedSet [ _S | _T ] : ...
97+ def update (self : Self , iterable : Iterable [ _T ]) -> Self : ... # type: ignore[override]
98+ __ior__ = update # type: ignore[assignment]
99+ def union (self , other : Iterable [ _S ]) -> OrderedSet [ _S | _T ] : ... # type: ignore[override]
100+ __or__ = union # type: ignore[assignment]
101+ def intersection (self : Self , other : Iterable [ Any ]) -> Self : ... # type: ignore[override]
102+ __and__ = intersection # type: ignore[assignment]
103+ def symmetric_difference (self , other : Iterable [ _S ]) -> OrderedSet [ _S | _T ] : ...
104+ __xor__ = symmetric_difference # type: ignore[assignment]
105+ def difference (self : Self , other : Iterable [ Any ]) -> Self : ... # type: ignore[override]
106+ __sub__ = difference # type: ignore[assignment]
107+ def intersection_update (self : Self , other : Iterable [ Any ]) -> Self : ... # type: ignore[override]
108+ __iand__ = intersection_update # type: ignore[assignment]
109+ def symmetric_difference_update (self : Self , other : Iterable [ _T ]) -> Self : ... # type: ignore[override]
110+ __ixor__ = symmetric_difference_update # type: ignore[assignment]
111+ def difference_update (self : Self , other : Iterable [ Any ]) -> Self : ... # type: ignore[override]
112+ __isub__ = difference_update # type: ignore[assignment]
104113
105114class IdentitySet :
106115 def __init__ (self , iterable : Any | None = ...) -> None : ...
@@ -164,9 +173,9 @@ class WeakPopulateDict(dict[Any, Any]):
164173
165174column_set = set
166175column_dict = dict
167- ordered_column_set = OrderedSet
176+ ordered_column_set = OrderedSet [ ColumnElement ]
168177
169- def unique_list (seq , hashfunc : Any | None = ...): ...
178+ def unique_list (seq : Iterable [ _T ] , hashfunc : Callable [[ _T ], Any ] | None = ...) -> list [ _T ] : ...
170179
171180class UniqueAppender :
172181 data : Any
0 commit comments