11import sys
22from types import GenericAlias
3- from typing import Any , Generic , TypeVar
3+ from typing import Any , Generic , NewType , TypeVar
44
55__all__ = ["Queue" , "SimpleQueue" , "JoinableQueue" ]
66
77_T = TypeVar ("_T" )
88
9+ _QueueState = NewType ("_QueueState" , object )
10+ _JoinableQueueState = NewType ("_JoinableQueueState" , object )
11+ _SimpleQueueState = NewType ("_SimpleQueueState" , object )
12+
913class Queue (Generic [_T ]):
1014 # FIXME: `ctx` is a circular dependency and it's not actually optional.
1115 # It's marked as such to be able to use the generic Queue in __init__.pyi.
1216 def __init__ (self , maxsize : int = 0 , * , ctx : Any = ...) -> None : ...
17+ def __getstate__ (self ) -> _QueueState : ...
18+ def __setstate__ (self , state : _QueueState ) -> None : ...
1319 def put (self , obj : _T , block : bool = True , timeout : float | None = None ) -> None : ...
1420 def get (self , block : bool = True , timeout : float | None = None ) -> _T : ...
1521 def qsize (self ) -> int : ...
@@ -24,13 +30,17 @@ class Queue(Generic[_T]):
2430 def __class_getitem__ (cls , item : Any , / ) -> GenericAlias : ...
2531
2632class JoinableQueue (Queue [_T ]):
33+ def __getstate__ (self ) -> _JoinableQueueState : ... # type: ignore[override]
34+ def __setstate__ (self , state : _JoinableQueueState ) -> None : ... # type: ignore[override]
2735 def task_done (self ) -> None : ...
2836 def join (self ) -> None : ...
2937
3038class SimpleQueue (Generic [_T ]):
3139 def __init__ (self , * , ctx : Any = ...) -> None : ...
3240 def close (self ) -> None : ...
3341 def empty (self ) -> bool : ...
42+ def __getstate__ (self ) -> _SimpleQueueState : ...
43+ def __setstate__ (self , state : _SimpleQueueState ) -> None : ...
3444 def get (self ) -> _T : ...
3545 def put (self , obj : _T ) -> None : ...
3646 def __class_getitem__ (cls , item : Any , / ) -> GenericAlias : ...
0 commit comments