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.
Fixes #3683
This is a bit odd because of how we implement
__getitem__. Normally, the arguments for a slice in__getitem__must satisfySupportsIndex, meaning that they must have an__index__method that returnsint. Unlike__int__,__index__is not supposed to convert floats to ints. E.g.,float.__index__does not exist andnp.ndarray.__index__raises an error if the dtype is not an integer.This PR implements
Variable.__index__similarly and rejects non-integer inputs. However, at runtime, we do allow floating point variables as indices in label-based indexing. (See the newtest_can_use_variable_as_index.) Fortunately, our code does not actually callVariable.__index__when constructing slices. So everything continues to work as before. But this leads to a disconnect. I think this is the best solution possible because our non-standard use of__getitem__will always lead to conflicts.