-
-
Notifications
You must be signed in to change notification settings - Fork 32.4k
Closed
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
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
AlexWaygood, AA-Turner, sunmy2019, arhadthedev, rzehumat and 1 more
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