Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Provide a hint when accidentally calling a module #103899

Copy link
Copy link
Closed
@brandtbucher

Description

@brandtbucher
Issue body actions

This is sort of inspired by PEP 713, but I think it's worth doing whether that PEP is accepted or not.

When somebody attempts to call a module, we can provide a more helpful TypeError message than 'module' object is not callable. Instead, we can check if the module has a callable attribute with the same name:

>>> import pprint
>>> pprint(thing)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'module' object is not callable. Did you mean: 'pprint.pprint(...)'?

As somebody who hits this fairly frequently with modules like dis and datetime, I think that this error message could reduce some confusion for beginners and friction for experienced users.

This is a cold code path, and I assume that this error is the most common reason for hitting it with a module object. So a little extra code (just one branch for non-modules) shouldn't be noticeable at all.

Linked PRs

Metadata

Metadata

Assignees

Labels

3.12only security fixesonly security fixesinterpreter-core(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)sprinttype-featureA feature request or enhancementA feature request or enhancement

Projects

Status

Done
Show more project fields

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    Morty Proxy This is a proxified and sanitized view of the page, visit original site.