Skip to content

new throw() / athrow() syntax w/ single value is not clearly documented or noted as new in python 3.12 #105269

@zzzeek

Description

@zzzeek

Documentation

the docs at

.. coroutinemethod:: agen.athrow(value)
does not note that the single arg throw(value) calling style appears to be new in Python 3.12; docs for 3.11 do not refer to it:
.. coroutinemethod:: agen.athrow(type[, value[, traceback]])
, even though you can actually pass the "value" as the first argument to throw(). It's not clear to us here if using throw(value) will work identically on older Python versions. Looking at 396b583 it seems to be possibly 3.11 related, but in #96348 @gvanrossum claims "It allows passing either an exception, or a (type, value, traceback) triple where the value and traceback are optional. ", but this does not seem to be documented and is creating some confusion over here.

the changelog as well as the deprecation warning both refer to the "single arg version" , which will "work" on older py3 versions but has different behavior (Edit: or maybe it doesn't. we're not sure :) ).

can this document be clarified as to what differences, if any, exist between athrow(value) and athrow(type, value) and within what Python versions this new style should be accepted as an exact drop-in for the old style? thanks

Linked PRs

Metadata

Metadata

Assignees

No one assigned

    Labels

    docsDocumentation in the Doc dir

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions