1818]
1919
2020
21- class QueueEmpty (_queues . QueueEmpty , queue .Empty ):
21+ class QueueEmpty (QueueError , queue .Empty ):
2222 """Raised from get_nowait() when the queue is empty.
2323
2424 It is also raised from get() if it times out.
2525 """
2626
2727
28- class QueueFull (_queues . QueueFull , queue .Full ):
28+ class QueueFull (QueueError , queue .Full ):
2929 """Raised from put_nowait() when the queue is full.
3030
3131 It is also raised from put() if it times out.
@@ -66,7 +66,7 @@ def __new__(cls, id, /, *, _fmt=None):
6666 else :
6767 raise TypeError (f'id must be an int, got { id !r} ' )
6868 if _fmt is None :
69- _fmt = _queues .get_default_fmt (id )
69+ _fmt , = _queues .get_queue_defaults (id )
7070 try :
7171 self = _known_queues [id ]
7272 except KeyError :
@@ -93,6 +93,14 @@ def __repr__(self):
9393 def __hash__ (self ):
9494 return hash (self ._id )
9595
96+ # for pickling:
97+ def __getnewargs__ (self ):
98+ return (self ._id ,)
99+
100+ # for pickling:
101+ def __getstate__ (self ):
102+ return None
103+
96104 @property
97105 def id (self ):
98106 return self ._id
@@ -159,9 +167,8 @@ def put(self, obj, timeout=None, *,
159167 while True :
160168 try :
161169 _queues .put (self ._id , obj , fmt )
162- except _queues . QueueFull as exc :
170+ except QueueFull as exc :
163171 if timeout is not None and time .time () >= end :
164- exc .__class__ = QueueFull
165172 raise # re-raise
166173 time .sleep (_delay )
167174 else :
@@ -174,11 +181,7 @@ def put_nowait(self, obj, *, syncobj=None):
174181 fmt = _SHARED_ONLY if syncobj else _PICKLED
175182 if fmt is _PICKLED :
176183 obj = pickle .dumps (obj )
177- try :
178- _queues .put (self ._id , obj , fmt )
179- except _queues .QueueFull as exc :
180- exc .__class__ = QueueFull
181- raise # re-raise
184+ _queues .put (self ._id , obj , fmt )
182185
183186 def get (self , timeout = None , * ,
184187 _delay = 10 / 1000 , # 10 milliseconds
@@ -195,9 +198,8 @@ def get(self, timeout=None, *,
195198 while True :
196199 try :
197200 obj , fmt = _queues .get (self ._id )
198- except _queues . QueueEmpty as exc :
201+ except QueueEmpty as exc :
199202 if timeout is not None and time .time () >= end :
200- exc .__class__ = QueueEmpty
201203 raise # re-raise
202204 time .sleep (_delay )
203205 else :
@@ -216,8 +218,7 @@ def get_nowait(self):
216218 """
217219 try :
218220 obj , fmt = _queues .get (self ._id )
219- except _queues .QueueEmpty as exc :
220- exc .__class__ = QueueEmpty
221+ except QueueEmpty as exc :
221222 raise # re-raise
222223 if fmt == _PICKLED :
223224 obj = pickle .loads (obj )
@@ -226,4 +227,4 @@ def get_nowait(self):
226227 return obj
227228
228229
229- _queues ._register_queue_type (Queue )
230+ _queues ._register_heap_types (Queue , QueueEmpty , QueueFull )
0 commit comments