Content-Length: 337543 | pFad | http://github.com/python/cpython/pull/17323/commits/2c5c6df01629e304cef490814a05938c57c73b83

0D bpo-38880: List interpreters associated with a channel end by LewisGaul · Pull Request #17323 · python/cpython · GitHub
Skip to content

bpo-38880: List interpreters associated with a channel end #17323

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 34 commits into from
Apr 29, 2020
Merged
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ec5aa60
Attempt at implementing channel_list_interpreters()
LewisGaul Nov 12, 2019
ee78133
Fix some error cases
LewisGaul Nov 12, 2019
433a5b0
Fix issue with decreasing list items' references
LewisGaul Nov 12, 2019
64c1661
Fix issue with reference to interpreter
LewisGaul Nov 20, 2019
2c5c6df
Add ability to list interpreters on send or receive channels
LewisGaul Nov 20, 2019
7f439fa
Fix arg parsing in C code
LewisGaul Nov 20, 2019
d86ae97
Minor changes
LewisGaul Nov 20, 2019
c529c88
Add channel_list_interpreters() tests
Nov 21, 2019
168ebf3
Fix docstring
LewisGaul Nov 21, 2019
2a7b508
Improve naming in tests
LewisGaul Nov 21, 2019
4d6ac6e
Add macros for int64_t max etc
LewisGaul Nov 21, 2019
a44c2d2
Fix error handling
LewisGaul Nov 21, 2019
215300b
Expose _PyInterpreterState_LookUpID
LewisGaul Nov 21, 2019
9b124db
Fix bad git rebase (use _xxsubinterpreters module name)
LewisGaul Nov 21, 2019
76621c7
Remove decref of NULL
LewisGaul Nov 21, 2019
d4c51bf
Fix leftover broken code from nested loop
LewisGaul Nov 21, 2019
f3c2b34
Remove whitespace from tests
LewisGaul Nov 21, 2019
af10d1f
Add to Misc/ACKS
LewisGaul Nov 21, 2019
ac09b6c
Remove PY_INT64_T_MAX etc. and use stdint.h
LewisGaul Nov 22, 2019
8e69864
Remove whitespace
LewisGaul Nov 22, 2019
0546702
📜🤖 Added by blurb_it.
blurb-it[bot] Nov 22, 2019
ad511ef
Update news entry to remove mention of PEP 554
LewisGaul Nov 23, 2019
a1b7c3a
Remove unnecessary asserts
LewisGaul Nov 23, 2019
d9b3e27
Use single 'send' argument in channel_list_interpreters() API
LewisGaul Nov 23, 2019
f4990b0
Tidy up _channelends_list_interpreters() function
LewisGaul Nov 23, 2019
c7dbb04
Move variable declarations inline
LewisGaul Nov 23, 2019
6202ecd
Use _PyInterpreterID_New() instead of getting existing objects
LewisGaul Nov 23, 2019
a7cf61b
Merge branch 'list-channel-interps' of github.com:LewisGaul/cpython i…
LewisGaul Nov 23, 2019
357101f
Markups - remove check for number of open channels and improve test s…
LewisGaul Dec 14, 2019
faca1df
Add more listing subinterpreter tests
LewisGaul Jan 21, 2020
75e791f
Implementation rewrite upon Eric's suggestion. Just one testcase now …
LewisGaul Apr 18, 2020
79f5d35
Fix issue with ChannelClosedError not being raised when 'send' end of…
LewisGaul Apr 28, 2020
5481e82
Add testcase for listing associated interpreters with basic closed ch…
LewisGaul Apr 28, 2020
79be8a0
Fix a refleak.
ericsnowcurrently Apr 28, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add ability to list interpreters on send or receive channels
  • Loading branch information
LewisGaul committed Nov 21, 2019
commit 2c5c6df01629e304cef490814a05938c57c73b83
22 changes: 14 additions & 8 deletions Modules/_xxsubinterpretersmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -2354,17 +2354,23 @@ channel_list_interpreters(PyObject *self, PyObject *args, PyObject *kwds)
static char *kwlist[] = {"cid", NULL};
int64_t cid;
_PyChannelState *chan;
int send = 1; /* Send or receive ends? */
int64_t count; /* Number of interpreters to return */
int64_t *ids = NULL; /* Array of interpreter IDs to return */
PyObject *id_obj = NULL;
int send = 0; /* Send end? */
int recv = 0; /* Receive end? */
int64_t *ids = NULL; /* Array of interpreter IDs */
int64_t count = 0; /* Number of interpreters to return */
PyObject *ret = NULL; /* Python list of interpreter IDs */

if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&:channel_list_interpreters",
kwlist, channel_id_converter, &cid)) {
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O&|$pp:channel_list_interpreters",
kwlist, channel_id_converter, &cid, &send, &recv)) {
return NULL;
}

if ((send && recv) || (!send && !recv)) {
PyErr_SetString(PyExc_RuntimeError,
"Can only list interpreters for a single end of a channel");
goto except;
}

chan = _channels_lookup(&_globals.channels, cid, NULL);
if (chan == NULL) {
goto except;
Expand All @@ -2380,7 +2386,7 @@ channel_list_interpreters(PyObject *self, PyObject *args, PyObject *kwds)
for (int64_t i=0; i < count; i++) {
PyInterpreterState *interp = PyInterpreterState_Head();
while (interp != NULL) {
id_obj = _PyInterpreterState_GetIDObject(interp);
PyObject *id_obj = _PyInterpreterState_GetIDObject(interp);
if (id_obj == NULL) {
Py_DECREF(id_obj);
goto except;
Expand All @@ -2407,7 +2413,7 @@ channel_list_interpreters(PyObject *self, PyObject *args, PyObject *kwds)
}

PyDoc_STRVAR(channel_list_interpreters_doc,
"channel_list_interpreters(cid) -> [id]\n\
"channel_list_interpreters(cid, *, send=False, recv=False) -> [id]\n\
\n\
Return the list of all interpreter IDs associated with the channel\n\
XXX in the send direction.");
Expand Down








ApplySandwichStrip

pFad - (p)hone/(F)rame/(a)nonymizer/(d)eclutterfier!      Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

Fetched URL: http://github.com/python/cpython/pull/17323/commits/2c5c6df01629e304cef490814a05938c57c73b83

Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy