-
-
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_xindexIndex.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. |
dcherian
left a comment
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!
* main: (94 commits) Restructure API documentation into organized sections (pydata#10540) Fix convert calendar with different dimension name (pydata#10544) Fix kerchunk error in docs build (pydata#10545) Call super().__init__() in st.SearchStrategy subclasses (pydata#10543) CI: update actions location (pydata#10529) meta: Fix labeler topic-documentation (pydata#10524) drop_vars: use emit_user_level_warning (pydata#10528) Pydap flaky tests (pydata#10525) Remove test skip (pydata#10523) Improve warning message and tests for timedelta decoding (pydata#10508) Add dev whats-new (pydata#10522) Add release notes for v2025.07.1 (pydata#10520) Updates for Zarr 3 Dtypes (pydata#10456) Update Custom Indexes section in api.rst (pydata#10517) Expression not assigned (pydata#10507) Raise if `Index.create_variables` returns more variables than passed in through `set_xindex` (pydata#10503) Allow setting (or skipping) new indexes in open_dataset (pydata#8051) doc: add Pandas(Multi)Index to api reference (pydata#10515) Update pre-commit hooks (pydata#10510) Update pre-commit ruff legacy alias (pydata#10511) ...
whats-new.rstPreviously,
set_xindexsilently ignored any extra variables returned by custom indexes'create_variablesmethod, 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_xindexindataset.pyto 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.