Skip to content

Conversation

@jsignell
Copy link
Member

Based off of #11079 but only does the typing part.

Example of static typing:

image

Example of dynamic typing (in ipython) for the case where there is a data variable named one of the accessor names:

image

FBumann and others added 11 commits January 9, 2026 20:29
The pixi workspace includes pyproject.toml as source metadata for the
local xarray package (via `xarray = { path = "." }`). When pyproject.toml
changes, the cached pixi.lock becomes invalid, causing CI failures with
"lock-file not up-to-date with the workspace".

This fix adds pyproject.toml to the cache key hash, ensuring the lock
file is regenerated when either pixi.toml or pyproject.toml changes.
@github-actions github-actions bot added the topic-DataTree Related to the implementation of a DataTree class label Jan 14, 2026
Comment on lines +15 to +20
if TYPE_CHECKING:
from cf_xarray.accessor import CFAccessor
from hvplot.xarray import hvPlotAccessor
from pint_xarray import PintDataArrayAccessor, PintDatasetAccessor
from rioxarray import RasterArray, RasterDataset
from xarray_plotly import DataArrayPlotlyAccessor, DatasetPlotlyAccessor
Copy link
Member

@TomNicholas TomNicholas Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So do all of these unrelated packages now have to be installed in our CI (in the same environment too)? Plotly at least is new.

Copy link
Member Author

@jsignell jsignell Jan 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just the mypy environment

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually they don't need to be installed at all since they are only imported within the TYPE_CHECKING block. So we just need some explicit mypy ignores (which @FBumann had already figured out).

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jsignell Pretty elegant solution with the MixIn. I like it!

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does the IDE completion/hints still work even if not all of these are installed?

Copy link

@FBumann FBumann Jan 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@DocOtak Yes they do. But they are deprioritized (at least in my IDE), saying they are not at the top of the list

Here with only xarray-plotly installed, I only see the plotly accessor.

image image

But after I type in .hv, also see that accessor with type hints.

Completion after the accessor name is only available for installed accessors:

image image

One more thing:
The data_vars overwrite the accessor. This is a good thing imo!
image

The existing .plot accessor behaves differently. It overwrites the data_var
image

This means with conflicting var_names and accessor names, the code behaviour is backwards compatible. Only conflict in type hints, not at Runtime.

The pixi workspace includes pyproject.toml as source metadata for the
local xarray package (via `xarray = { path = "." }`). When pyproject.toml
changes, the cached pixi.lock becomes invalid, causing CI failures with
"lock-file not up-to-date with the workspace".

This fix adds pyproject.toml to the cache key hash, ensuring the lock
file is regenerated when either pixi.toml or pyproject.toml changes.
@github-actions github-actions bot added the Automation Github bots, testing workflows, release automation label Jan 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Automation Github bots, testing workflows, release automation topic-DataTree Related to the implementation of a DataTree class

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Improve IDE/Editor Support for External Accessors

4 participants