Issue 17380: initproc return value is unclear (original) (raw)

Created on 2013-03-07 17:12 by zbysz, last changed 2022-04-11 14:57 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
issue_17380.patch james,2015-04-13 01:14 documentation patch for Doc/extending/newtypes.rst review
Messages (7)
msg183689 - (view) Author: Zbyszek Jędrzejewski-Szmek (zbysz) * Date: 2013-03-07 17:12
initproc is declared to return an int, but what returned values mean is not documented. Noddy_init in http://docs.python.org/3/extending/newtypes.html?highlight=initproc#adding-data-and-methods-to-the-basic-example can be seen to return 0 on success and -1 on error, but that's about it. Also, when I wrote a function which return 1 on error, on every second invocation the exception would be ignored: static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) { ... if (flags && path) { PyErr_SetString(PyExc_ValueError, "cannot use both flags and path"); return 1; } ... } >>> obj(123, '/tmp') >>> obj(123, '/tmp') ... ValueError >>> obj(123, '/tmp') >>> obj(123, '/tmp') ... ValueError I'm not sure how to interpret this since I couldn't find the documentation for the expected value.
msg183737 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2013-03-08 14:30
The return value for error conditions should be -1. - typeobject.c checks with "< 0" - in _iomodule.c, there is "== -1" - and pygobject/gobject/gobjectmodule.c just does:: if (...tp_init(...)) PyErr_Print();
msg183738 - (view) Author: Zbyszek Jędrzejewski-Szmek (zbysz) * Date: 2013-03-08 14:44
On Fri, Mar 08, 2013 at 02:30:18PM +0000, Amaury Forgeot d'Arc wrote: > > Amaury Forgeot d'Arc added the comment: > > The return value for error conditions should be -1. > > - typeobject.c checks with "< 0" > - in _iomodule.c, there is "== -1" > - and pygobject/gobject/gobjectmodule.c just does:: > if (...tp_init(...)) > PyErr_Print(); That's not very nice. Would it make sense to unify those checks, e.g. for "initproc() < 0"? Than the documentation could be updated. Zbyszek
msg184077 - (view) Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) * (Python committer) Date: 2013-03-13 12:43
Note that all these cases are compatible with "tp_init returns 0 on success and -1 on error".
msg240580 - (view) Author: James Powell (james) Date: 2015-04-13 01:14
See attached patch to clarify this in the docs.
msg240582 - (view) Author: Roundup Robot (python-dev) (Python triager) Date: 2015-04-13 01:54
New changeset c6dc1e0db7f0 by R David Murray in branch '3.4': #17380: Document tp_init return value in extending docs. https://hg.python.org/cpython/rev/c6dc1e0db7f0 New changeset d74ede4bbf81 by R David Murray in branch 'default': Merge: #17380: Document tp_init return value in extending docs. https://hg.python.org/cpython/rev/d74ede4bbf81
msg240583 - (view) Author: R. David Murray (r.david.murray) * (Python committer) Date: 2015-04-13 01:55
Thanks, James.
History
Date User Action Args
2022-04-11 14:57:42 admin set github: 61582
2015-04-13 01:55:19 r.david.murray set status: open -> closedresolution: fixedmessages: + stage: resolved
2015-04-13 01:54:08 python-dev set nosy: + python-devmessages: +
2015-04-13 01🔞09 james set nosy: + r.david.murray
2015-04-13 01:14:00 james set files: + issue_17380.patchkeywords: + patchmessages: +
2015-04-13 01:12:13 james set nosy: + james
2014-04-14 19:19:30 akuchling set keywords: + easy
2013-03-13 12:43:52 amaury.forgeotdarc set messages: +
2013-03-08 14:44:33 zbysz set messages: +
2013-03-08 14:30:18 amaury.forgeotdarc set nosy: + amaury.forgeotdarcmessages: +
2013-03-07 17:12:17 zbysz create