Don't add strange fictional parameters to the signature of NamedTuple._make()
#15578
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
It appears that mypy currently synthesises two fictional parameters for the NamedTuple classmethod
_make()
:new
andlen
. I'm not sure why we do this? They've never existed at runtime, and all tests pass if we remove them (except for two that need to be changed slightly, due to the output ofreveal_type(namedtuple_cls._make)
changing).It looks like we've been adding these parameters since support for
_make()
was first added in 2016: #1810. I can't find any reference in that PR thread about why we add these parameters, however.This PR proposes that we stop adding these parameters, which makes the output of
reveal_type(namedtuple_class._make)
much more accurate :)