Skip to content

Missing Signature Info for Builtin Exceptions in help() and Docs #111405

Description

@ericsnowcurrently

Bug report

Bug description:

(I've tagged this as a "docs" issue because help() is arguably a part of the documentation. Also, some of the docs entries have a similar lack of details. I suppose that could be dealt with separately.)

The help() text for (at least some) builtin exceptions doesn't show the type-specific signature for __init__() (or __new__()), instead showing a generic one with (self, /, *args, **kwargs).

Here's an example (in the REPL) 1:

>>>help(ExceptionGroup)| ...
|__init__(self, /, *args, **kwargs)
|Initializeself. Seehelp(type(self)) foraccuratesignature.
| ...

(The help() entry for __new__() is likewise unhelpful.)

There is a similar lack of information in the docs, though a handful of entries have at least some signature information.

All builtin exceptions (best effort catalog):

exception typeexpected* (approximately)
(incl. additional forms)
docs
have
sig
Exception
BaseException
__init__(self, /, *args)
ExceptionGroup
BaseExceptionGroup
__init__(self, msg, excs, /)X†
StopIteration__init__(self, value=None, /, *args)
SystemExit__init__(self, code=None, /, *args)
ImportError__init__(self, /, name=None, path=None, name_from=None)
OSError__init__(self, errno, strerror, filename=None, winerror=None, filename2=None, /)X†
^^^^^__init__(self, arg=None, /)X†
^^^^^__init__(self, /, *args)
NameError__init__(self, /, *args, name=None)
AttributeError__init__(self, /, *args, name=None, obj=None)
SyntaxError__init__(self, msg, details, /)X†
^^^^^__init__(self, msg=None, /, *args)
UnicodeEncodeError__init__(self, encoding, obj, start, end, reason, /)
UnicodeDecodeError__init__(self, encoding, obj, start, end, reason, /)
UnicodeTranslateError__init__(self, obj, start, end, reason, /)
-- all others (?) ---- same as Exception/BaseException --

* I derived expected signatures from the content of Objects/exceptions.c.
† The doc entries for OSError, ExceptionGroup, and SyntaxError imply that they each take keyword arguments but they do not.
‡ The doc entries for OSError and SyntaxError do not include the alternate signature.

CPython versions tested on:

CPython main branch

Operating systems tested on:

No response

Footnotes

  1. FYI, I don't mean to pick on ExceptionGroup. It happened to be the one for which I first noticed the problem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    3.11only security fixes3.12only security fixes3.13bugs and security fixesdocsDocumentation in the Doc dirinterpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions