Skip to content

Conversation

shoyer
Copy link
Member

@shoyer shoyer commented Aug 14, 2025

I switched typing in treenode.py to use Self instead of using type variables, which we can do now that Xarray requries Python 3.11+.

This is simpler than using TypeVar and a Generic base class, and as a bonus type checkers seem to be a bit happier with Self, e.g., this turned up a bunch of other type errors with DataTree, which I also fixed here.

@shoyer shoyer requested a review from TomNicholas August 14, 2025 18:41
@github-actions github-actions bot added topic-backends topic-DataTree Related to the implementation of a DataTree class io labels Aug 14, 2025
Copy link
Member

@TomNicholas TomNicholas left a comment

Choose a reason for hiding this comment

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

Lovely!

I think I always wanted to do this but when this was first written python 3.11 had not even been released yet!

@shoyer shoyer merged commit b1ce76e into pydata:main Aug 15, 2025
37 checks passed
@shoyer shoyer deleted the datatree-typing branch August 15, 2025 18:07
dcherian added a commit to dhruvak001/xarray that referenced this pull request Aug 24, 2025
* main: (46 commits)
  use the new syntax of ignoring bots (pydata#10668)
  modification methods on `Coordinates` (pydata#10318)
  Silence warnings from test_tutorial.py (pydata#10661)
  test: update write_empty test for zarr 3.1.2 (pydata#10665)
  Bump actions/checkout from 4 to 5 in the actions group (pydata#10652)
  Add load_datatree function (pydata#10649)
  Support compute=False from DataTree.to_netcdf (pydata#10625)
  Fix typos (pydata#10655)
  In case of misconfiguration of dataset.encoding `unlimited_dims` warn instead of raise (pydata#10648)
  fix ``auto_complex`` for ``open_datatree`` (pydata#10632)
  Fix bug indexing with boolean scalars (pydata#10635)
  Improve DataTree typing (pydata#10644)
  Update Cartopy and Iris references (pydata#10645)
  Empty release notes (pydata#10642)
  release notes for v2025.08.0 (pydata#10641)
  Fix `ds.merge` to prevent altering original object depending on join value (pydata#10596)
  Add asynchronous load method (pydata#10327)
  Add DataTree.prune() method              … (pydata#10598)
  Avoid refining parent dimensions in NetCDF files (pydata#10623)
  clarify lazy behaviour and eager loading chunks=None in open_*-functions (pydata#10627)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
io topic-backends topic-DataTree Related to the implementation of a DataTree class
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants