-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Raise if Index.create_variables
returns more variables than passed in through set_xindex
#10503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Thanks! given the discussion on the issue, can you change to raise an error if extra variables are returned please? That will be a good improvement until we decide to change behaviour |
@dcherian I have already implemented it accordingly, as I after then commented (#10499 (comment)) on issue too. I think you can review it. |
create_variables
returns more variables than passed in through set_xindex
create_variables
returns more variables than passed in through set_xindex
Index.create_variables
returns more variables than passed in through set_xindex
Nice, can you add a test to https://github.com/pydata/xarray/blob/main/xarray/tests/test_indexes.py please |
@dcherian i have added the tests. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Amazing, thanks!
|
||
def create_variables(self, variables=None): | ||
if variables is None: | ||
# For Coordinates.from_xindex(), return all variables the index can create |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
:) clever
whats-new.rst
Previously,
set_xindex
silently ignored any extra variables returned by custom indexes'create_variables
method, only adding variables that matched the original coordinate names. This prevented custom indexes from providing additional computed variables, limiting their usefulness for advanced indexing scenarios like weather forecasting where derived coordinates are needed.This change modifies
set_xindex
indataset.py
to add all variables returned bycreate_variables()
, not just those matching coordinate names. The implementation simply iterates through all returned variables instead of filtering by coordinate names.The fix enables custom indexes to provide computed variables while maintaining full backward compatibility. Existing code continues to work unchanged, but custom indexes can now return additional variables that will be properly added to the dataset, resolving the silent ignoring behavior that was confusing to users.