Closed
Description
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
only security fixesonly security fixes(Objects, Python, Grammar, and Parser dirs)(Objects, Python, Grammar, and Parser dirs)A feature request or enhancementA feature request or enhancement
Projects
Status
Done