Skip to content

Commit 8eca5cf

Browse files
committed
Serhiy's review
1 parent db92aba commit 8eca5cf

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

Lib/concurrent/interpreters/_queues.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def create(maxsize=0, *, unbounditems=UNBOUND):
7373
"""
7474
unbound = _serialize_unbound(unbounditems)
7575
unboundop, = unbound
76-
qid = _queues.create(maxsize, unboundop, -1)
76+
qid = _queues.create(maxsize, unboundop)
7777
self = Queue(qid)
7878
self._set_unbound(unboundop, unbounditems)
7979
return self

Lib/test/test_interpreters/test_queues.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def test_highlevel_reloaded(self):
4242
importlib.reload(queues)
4343

4444
def test_create_destroy(self):
45-
qid = _queues.create(2, REPLACE, -1)
45+
qid = _queues.create(2, REPLACE)
4646
_queues.destroy(qid)
4747
self.assertEqual(get_num_queues(), 0)
4848
with self.assertRaises(queues.QueueNotFoundError):
@@ -56,7 +56,7 @@ def test_not_destroyed(self):
5656
'-c',
5757
dedent(f"""
5858
import {_queues.__name__} as _queues
59-
_queues.create(2, {REPLACE}, -1)
59+
_queues.create(2, {REPLACE})
6060
"""),
6161
)
6262
self.assertEqual(stdout, '')
@@ -67,32 +67,53 @@ def test_not_destroyed(self):
6767

6868
def test_bind_release(self):
6969
with self.subTest('typical'):
70-
qid = _queues.create(2, REPLACE, -1)
70+
qid = _queues.create(2, REPLACE)
7171
_queues.bind(qid)
7272
_queues.release(qid)
7373
self.assertEqual(get_num_queues(), 0)
7474

7575
with self.subTest('bind too much'):
76-
qid = _queues.create(2, REPLACE, -1)
76+
qid = _queues.create(2, REPLACE)
7777
_queues.bind(qid)
7878
_queues.bind(qid)
7979
_queues.release(qid)
8080
_queues.destroy(qid)
8181
self.assertEqual(get_num_queues(), 0)
8282

8383
with self.subTest('nested'):
84-
qid = _queues.create(2, REPLACE, -1)
84+
qid = _queues.create(2, REPLACE)
8585
_queues.bind(qid)
8686
_queues.bind(qid)
8787
_queues.release(qid)
8888
_queues.release(qid)
8989
self.assertEqual(get_num_queues(), 0)
9090

9191
with self.subTest('release without binding'):
92-
qid = _queues.create(2, REPLACE, -1)
92+
qid = _queues.create(2, REPLACE)
9393
with self.assertRaises(queues.QueueError):
9494
_queues.release(qid)
9595

96+
def test_parse_fallback(self):
97+
# see https://github.com/python/cpython/pull/137686
98+
# does not raise TypeError / OverflowError / ValueError
99+
for arg in False, True, None, -1, 2**1000:
100+
_queues.create(2, REPLACE, fallback=arg)
101+
msg = r'create\(\) takes at most 2 positional arguments'
102+
with self.assertRaisesRegex(TypeError, msg):
103+
_queues.create(2, REPLACE, -1)
104+
105+
obj = None
106+
unboundop = -1
107+
for arg in False, True, None, -1, 2**1000:
108+
qid = _queues.create(2, REPLACE)
109+
_queues.put(qid, obj, unboundop, fallback=arg)
110+
_queues.destroy(qid)
111+
msg = r'put\(\) takes at most 3 positional arguments'
112+
with self.assertRaisesRegex(TypeError, msg):
113+
qid = _queues.create(2, REPLACE)
114+
_queues.put(qid, obj, unboundop, -1)
115+
_queues.destroy(qid)
116+
96117

97118
class QueueTests(TestBase):
98119

Modules/_interpqueuesmodule.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1486,7 +1486,7 @@ queuesmod_create(PyObject *self, PyObject *args, PyObject *kwds)
14861486
Py_ssize_t maxsize;
14871487
int unboundarg = -1;
14881488
int fallbackarg = -1;
1489-
if (!PyArg_ParseTupleAndKeywords(args, kwds, "n|ii:create", kwlist,
1489+
if (!PyArg_ParseTupleAndKeywords(args, kwds, "n|i$p:create", kwlist,
14901490
&maxsize, &unboundarg, &fallbackarg))
14911491
{
14921492
return NULL;
@@ -1603,7 +1603,7 @@ queuesmod_put(PyObject *self, PyObject *args, PyObject *kwds)
16031603
PyObject *obj;
16041604
int unboundarg = -1;
16051605
int fallbackarg = -1;
1606-
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&O|ii:put", kwlist,
1606+
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&O|i$p:put", kwlist,
16071607
qidarg_converter, &qidarg, &obj,
16081608
&unboundarg, &fallbackarg))
16091609
{

0 commit comments

Comments
 (0)