gh-100129: Make the names of all classes in the types module resolvable#100130
gh-100129: Make the names of all classes in the types module resolvable#100130serhiy-storchaka wants to merge 11 commits into
Conversation
JelleZijlstra
left a comment
There was a problem hiding this comment.
I like how this change makes the builtin types more consistent and easy to resolve. However, I have two concerns:
- When the new type names appear in error messages, they make the errors harder to understand for new users. This is especially important with core types like module, function, and None.
- We'll surely break some external tools that rely on the names of these classes.
I think the case for changing is strongest for the various descriptor types, where it's otherwise difficult right now to map a type to the entry in the types module, and weakest for core builtins like module, function, and NoneType.
Sorry, something went wrong.
Agreed. I'm broadly supportive of this change, but the change to |
Sorry, something went wrong.
gvanrossum
left a comment
There was a problem hiding this comment.
I have a few nits -- feel free to address or ignore those.
I'd like @JelleZijlstra or another typeshed/mypy dev to have a quick look here to see whether changing a few names like function, ellipsis would cause any issues for static type checkers (though I doubt it).
Sorry, something went wrong.
Fully static type checkers like mypy never look at the runtime type objects so it shouldn't matter. Tools like stubtest or my pyanalyze typechecker might need to adapt a little but that's pretty easy. |
Sorry, something went wrong.
I was thinking about it slightly differently. Typeshed defines classes def f():
pass
func: function = fThere was some precedent for this when import types
func: types.FunctionType = fwhich currently produces an error in mypy. (In a sense, this PR finally resolves a problem that mypy experienced from its creation: what is the name of the type of a function object. Grepping shows dozens of occurrences of I agree that we shouldn't stop this PR because it exposes mypy's "lie". :-) |
Sorry, something went wrong.
|
Thanks for the answers, go ahead and merge. |
Sorry, something went wrong.
|
What do you think about omitting the |
Sorry, something went wrong.
|
This is going to break things. Changing the names There are a lot of changes to the tests. If this change breaks our tests, it is reasonable to assume it will break other people's tests. |
Sorry, something went wrong.
|
I'm happy to retract my approval in favor of more discussion -- maybe we should do that on Discourse though, where we can get the view of more people whose code actually will break. I agree that the amount of change needed in our own tests doesn't bode well. |
Sorry, something went wrong.
|
Just to note: the new-in-3.13 |
Sorry, something went wrong.
|
This PR is stale because it has been open for 30 days with no activity. |
Sorry, something went wrong.
Documentation build overview
8 files changed ·
|
Sorry, something went wrong.
edited by bedevere-bot
LoadingUh oh!
There was an error while loading. Please reload this page.
Copy link Copy MarkdownSorry, something went wrong.
Uh oh!
There was an error while loading. Please reload this page.