TYP: don't use literals in shape-types #28497
Merged
+76
−75
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.
Partial backport of numpy/numtype#122 and numpy/numtype#152
This changes
resize
,empty
,zeros
,ones
, andfull
, to no longer useLiteral
int's in the shape-type of the returned array. Type-checkers tend to upcastLiteral
integers toint
when used in generics, so it cannot be reliably used for shape-typing.I don't expect this to have any impact on type-inference, and even mypy users probably won't even notice any different type-checking behaviour.
But in some cases, this could help make the output of type-checkers less unreadable. For example when an typing error is reported for an array that you created with
np.zeros((1080, 1920, 3), dtype=np.uint8)
, you'd previously seeand after this change that would be