Skip to content

Several type annotations in _interpreters and _interpqueues are wrong #13351

Open
@agronholm

Description

  1. _interpreters.exec() is annotated as returning None, while on error it actually returns a namespace (though this fact is largely undocumented)
  2. _interpreters.exec() is annotated as only taking str as the code argument, though it's documented to also accept code objects:

Functions (and code objects) are also supported, with some restrictions.
The code/function must not take any arguments or be a closure
(i.e. have cell vars). Methods and other callables are not supported.

  1. _interpqueues.create() takes 3 mandatory arguments (create(maxsize, fmt, unboundop) -> qid), but the type stub says it takes 2
  2. _interpqueues.get() returns a 3-tuple (item, fmt, unboundop), not 2-tuple as annotated in typeshed
  3. _interpqueues.put takes 4 arguments (qid, item, fmt, unboundop), not 3 as annotated in typeshed (admittedly its own docstring is also wrong!)

I believe the annotations may have been correct at the time they were added, but changes have been made to them in the CPython repository since then.

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions