Title: generator.throw() documentation inaccurate
Type: Stage: patch review
Components: Documentation Versions: Python 3.6, Python 3.5, Python 3.4, Python 2.7
Status: open Resolution:
Dependencies: Superseder:
Assigned To: docs@python Nosy List: docs@python, kristjan.jonsson, martin.panter, yselivanov
Priority: normal Keywords: patch

Created on 2012-05-25 11:02 by kristjan.jonsson, last changed 2015-11-18 00:00 by martin.panter.

File name Uploaded Description Edit
throw27.diff kristjan.jonsson, 2014-02-03 15:19
3x.diff kristjan.jonsson, 2014-02-03 15:57 review
Messages (8)
msg161565 - (view) Author: Kristján Valur Jónsson (kristjan.jonsson) * (Python committer) Date: 2012-05-25 11:02
the documentation for generator.throw() does not mention the fact that it has the same semantics for the three arguments as a "raise" expression has.
The first two arguments can be:
throw(exc_type, None)
throw(exc_type, value)
throw(exc_type, exc_instance)
throw(exc_instance, None)
msg209836 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-01-31 22:11
Kristjan, can you write a patch for this?
msg210139 - (view) Author: Kristján Valur Jónsson (kristjan.jonsson) * (Python committer) Date: 2014-02-03 15:19
Here's one for 2.7.  I'm still looking at 3.  The funny thing is that the signature of generator.throw reflects 2.x conventions.  I'm figuring out if it can be used with the .with_traceback() idiom
msg210146 - (view) Author: Kristján Valur Jónsson (kristjan.jonsson) * (Python committer) Date: 2014-02-03 15:57
And 3.x
msg210150 - (view) Author: Yury Selivanov (yselivanov) * (Python committer) Date: 2014-02-03 17:35
I like the patches, except the example in 3x.diff. Please see the review.
msg210188 - (view) Author: Kristján Valur Jónsson (kristjan.jonsson) * (Python committer) Date: 2014-02-04 09:45
Note that the docstring does not match the doc:
"throw(typ[,val[,tb]]) -> raise exception in generator,\n\
return next yielded value or raise StopIteration.");

Should I change the docstring too?
msg245559 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2015-06-20 12:00
See Issue 13213 for some analysis of the behaviour of different combinations of arguments.

The docstring should be changed if necessary, but in this case I don’t see what needs changing. The argument names perhaps, just for consistency’s sake?
msg254824 - (view) Author: Martin Panter (martin.panter) * (Python committer) Date: 2015-11-18 00:00
I can’t really comment on the 2.7 version, because I’m not too familiar with Python 2 exceptions.

For Python 3, is there any reason to bless the None, tuple or non-exception cases as the exception “value” argument? IMO these just make things too complicated without any benefit. Changes I would make to the patch:

* Only mention that “value” can be omitted, or it can be an instance of the class specified by “type”. Drop mentioning the None option, and the single or tuple constructor argument options. It looks like the tuple option actually gets expanded to multiple constructor arguments?!
* Mention that if “value” is passed, its traceback could be lost
* Drop the example, unless someone can come up with a concise and realistic example
* Unify with definition for coroutines <>
* Change the doc string(s) to match the argument names, but don’t bother copying the full definition text
Date User Action Args
2015-11-18 00:00:32martin.pantersetmessages: + msg254824
stage: needs patch -> patch review
2015-06-20 12:02:41martin.panterlinkissue13213 superseder
2015-06-20 12:00:48martin.pantersetnosy: + martin.panter

messages: + msg245559
versions: + Python 3.4, Python 3.5, Python 3.6, - Python 3.2, Python 3.3
2014-02-04 09:45:12kristjan.jonssonsetmessages: + msg210188
2014-02-03 17:35:14yselivanovsetmessages: + msg210150
2014-02-03 15:57:37kristjan.jonssonsetfiles: + 3x.diff

messages: + msg210146
2014-02-03 15:19:58kristjan.jonssonsetfiles: + throw27.diff
keywords: + patch
messages: + msg210139
2014-01-31 22:11:27yselivanovsetnosy: + yselivanov
messages: + msg209836
2012-05-25 18:42:09eric.araujosetstage: needs patch
versions: - Python 3.1, Python 3.4
2012-05-25 11:02:16kristjan.jonssoncreate