classification
Title: Clean up PEP 380 C API additions
Type: enhancement Stage: resolved
Components: Documentation, Interpreter Core Versions: Python 3.3
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ncoghlan Nosy List: Mark.Shannon, docs@python, meador.inge, ncoghlan, python-dev
Priority: release blocker Keywords:

Created on 2012-01-14 06:19 by ncoghlan, last changed 2012-06-17 05:48 by ncoghlan. This issue is now closed.

Messages (8)
msg151235 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-01-14 06:19
Georg noted that the PEP 380 patch added a couple of new C interfaces without documenting them. These interfaces need to be either:
1. Documented;
2. Made private; or
3. Removed (if they're completely trivial)

PyGen_FetchStopIterationValue: probably document, explicitly noting that it also clears the StopIteration exception from the thread state

PyStopIteration_Create: probably remove
msg151236 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-01-14 06:23
The current use of PyStopIteration_Create in genobject.c can probably be replaced with PyErr_SetObject(PyExc_StopIteration, value) anyway.
msg151254 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-01-14 14:02
Also check any GetAttr and CallMethod operations to see if they should be moved over to the new *Id variants.
msg151759 - (view) Author: Meador Inge (meador.inge) * (Python committer) Date: 2012-01-22 04:09
'PyStopIteration_Create' is just a trivial wrapper:

PyObject *
PyStopIteration_Create(PyObject *value)
{
    return PyObject_CallFunctionObjArgs(PyExc_StopIteration, value, NULL);
}

It is not needed.

As for 'PyGen_FetchStopIterationValue', does it really need to be public?  It is trivial to make it private because all calls to it are in 'genobject.c'.  However, I am not sure if there is a strong use case for having it public.
msg162714 - (view) Author: Mark Shannon (Mark.Shannon) * Date: 2012-06-13 17:33
There is one call to PyGen_FetchStopIterationValue in ceval.c.

But I don't think it should be public. 

There is no real reason for the "Gen" in the name. The function is used by generator handling code, but the code itself relates to StopIteration.
Perhaps it should be moved to errors.c and renamed _PyErr_FetchStopIterationValue.
msg163013 - (view) Author: Roundup Robot (python-dev) Date: 2012-06-17 05:16
New changeset cfbf6aa5c9e3 by Nick Coghlan in branch 'default':
Issue #13783: the PEP 380 implementation no longer expands the public C API
http://hg.python.org/cpython/rev/cfbf6aa5c9e3
msg163016 - (view) Author: Roundup Robot (python-dev) Date: 2012-06-17 05:45
New changeset 438b861e2edb by Nick Coghlan in branch 'default':
Issue #13783: PEP 380 cleanup part 2, using the new identifier APIs in the generator implementation
http://hg.python.org/cpython/rev/438b861e2edb
msg163017 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-06-17 05:48
I left the name of the new private API as _PyGen_FetchStopIterationValue. If anyone wants to make it public, they can raise a new issue to give it a more appropriate name (and move the definition accordingly).

PyStopIteration_Create is simply gone, replaced by the underlying call.
History
Date User Action Args
2012-06-17 05:48:44ncoghlansetstatus: open -> closed
resolution: fixed
messages: + msg163017

stage: needs patch -> resolved
2012-06-17 05:45:32python-devsetmessages: + msg163016
2012-06-17 05:16:04python-devsetnosy: + python-dev
messages: + msg163013
2012-06-13 17:33:27Mark.Shannonsetnosy: + Mark.Shannon
messages: + msg162714
2012-06-12 12:02:59ncoghlansetpriority: normal -> release blocker
assignee: docs@python -> ncoghlan
2012-01-22 04:09:31meador.ingesetnosy: + meador.inge
messages: + msg151759

type: enhancement
stage: needs patch
2012-01-14 14:02:15ncoghlansetmessages: + msg151254
2012-01-14 06:23:53ncoghlansetmessages: + msg151236
2012-01-14 06:19:46ncoghlancreate