From 3f17cb9fb91aba6f53f075a47a31422f39da8ff3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:30:08 +0000 Subject: [PATCH 1/2] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/pre-commit-hooks: v5.0.0 → v6.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v5.0.0...v6.0.0) - [github.com/astral-sh/ruff-pre-commit: v0.12.5 → v0.16.0](https://github.com/astral-sh/ruff-pre-commit/compare/v0.12.5...v0.16.0) - [github.com/fsouza/mirrors-pyright: v1.1.403 → v1.1.275](https://github.com/fsouza/mirrors-pyright/compare/v1.1.403...v1.1.275) - [github.com/abravalheri/validate-pyproject: v0.24.1 → v0.25](https://github.com/abravalheri/validate-pyproject/compare/v0.24.1...v0.25) --- .pre-commit-config.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 590d9de..dc9cbb2 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -2,23 +2,23 @@ # See https://pre-commit.com/hooks.html for more hooks repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v5.0.0 + rev: v6.0.0 hooks: - id: trailing-whitespace - id: end-of-file-fixer - id: check-added-large-files - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.12.5 + rev: v0.16.0 hooks: - id: ruff-check args: [--fix] # optional, to autofix lint errors - id: ruff-format - repo: https://github.com/fsouza/mirrors-pyright - rev: v1.1.403 + rev: v1.1.275 hooks: - id: pyright - repo: https://github.com/abravalheri/validate-pyproject - rev: v0.24.1 + rev: v0.25 hooks: - id: validate-pyproject name: "python · Validate pyproject.toml" From d37008f2b535e32c79b25846e8accc007051bbc6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Jul 2026 19:30:41 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/xarray_dataclass/__init__.py | 16 ++++++---------- src/xarray_dataclass/dataarray.py | 7 ++----- src/xarray_dataclass/datamodel.py | 7 ++----- src/xarray_dataclass/dataoptions.py | 2 -- src/xarray_dataclass/dataset.py | 7 ++----- src/xarray_dataclass/typing.py | 15 ++++----------- tests/test_data.py | 9 +++++---- tests/test_dataarray.py | 2 -- tests/test_datamodel.py | 2 -- tests/test_dataset.py | 4 +--- tests/test_typing.py | 8 +++----- 11 files changed, 25 insertions(+), 54 deletions(-) diff --git a/src/xarray_dataclass/__init__.py b/src/xarray_dataclass/__init__.py index 41b2564..395d310 100644 --- a/src/xarray_dataclass/__init__.py +++ b/src/xarray_dataclass/__init__.py @@ -1,36 +1,32 @@ __all__ = [ "AsDataArray", "AsDataset", - "DataModel", - "DataOptions", "Attr", "Coord", "Coordof", "Data", + "DataModel", + "DataOptions", "Dataof", "Name", + "__version__", "asdataarray", "asdataset", "dataarray", - "dataset", "datamodel", "dataoptions", + "dataset", "typing", - "__version__", ] # submodules -from . import dataarray -from . import dataset -from . import datamodel -from . import dataoptions -from . import typing +from . import dataarray, datamodel, dataoptions, dataset, typing from .__about__ import __version__ from .dataarray import AsDataArray, asdataarray -from .dataset import AsDataset, asdataset from .datamodel import DataModel from .dataoptions import DataOptions +from .dataset import AsDataset, asdataset from .typing import ( Attr, Coord, diff --git a/src/xarray_dataclass/dataarray.py b/src/xarray_dataclass/dataarray.py index aaed391..d600ee3 100644 --- a/src/xarray_dataclass/dataarray.py +++ b/src/xarray_dataclass/dataarray.py @@ -9,19 +9,16 @@ from types import MethodType from typing import Any, Callable, Optional, Protocol, Type, TypeVar, Union, overload - # dependencies import numpy as np import xarray as xr from typing_extensions import ParamSpec - # submodules from .datamodel import DataModel from .dataoptions import DataOptions from .typing import AnyArray, AnyXarray, DataClass, Order, Shape, Sizes - # type hints PInit = ParamSpec("PInit") TDataArray = TypeVar("TDataArray", bound=xr.DataArray) @@ -143,8 +140,8 @@ def new(cls: Any) -> Any: def new(cls: Any, *args: Any, **kwargs: Any) -> Any: return asdataarray(cls(*args, **kwargs)) - setattr(new, "__doc__", cls.__init__.__doc__) - setattr(new, "__signature__", sig) + new.__doc__ = cls.__init__.__doc__ + new.__signature__ = sig return MethodType(new, cls) @overload diff --git a/src/xarray_dataclass/datamodel.py b/src/xarray_dataclass/datamodel.py index 450b9d8..642d80a 100644 --- a/src/xarray_dataclass/datamodel.py +++ b/src/xarray_dataclass/datamodel.py @@ -4,12 +4,11 @@ # standard library +from collections.abc import Hashable from dataclasses import dataclass, field, is_dataclass from typing import ( Any, Dict, - get_type_hints, - Hashable, List, Literal, Optional, @@ -17,15 +16,14 @@ Type, Union, cast, + get_type_hints, ) - # dependencies import numpy as np import xarray as xr from typing_extensions import ParamSpec - # submodules from .typing import ( AnyDType, @@ -42,7 +40,6 @@ get_role, ) - # type hints PInit = ParamSpec("PInit") AnyDataClass = Union[Type[DataClass[PInit]], DataClass[PInit]] diff --git a/src/xarray_dataclass/dataoptions.py b/src/xarray_dataclass/dataoptions.py index 2fa9e6b..a8a6f5c 100644 --- a/src/xarray_dataclass/dataoptions.py +++ b/src/xarray_dataclass/dataoptions.py @@ -7,11 +7,9 @@ from dataclasses import dataclass from typing import Callable, Generic, TypeVar - # submodules from .typing import AnyXarray - # type hints TAnyXarray = TypeVar("TAnyXarray", bound=AnyXarray) diff --git a/src/xarray_dataclass/dataset.py b/src/xarray_dataclass/dataset.py index 9f4bd2f..54e076c 100644 --- a/src/xarray_dataclass/dataset.py +++ b/src/xarray_dataclass/dataset.py @@ -9,19 +9,16 @@ from types import MethodType from typing import Any, Callable, Dict, Optional, Protocol, Type, TypeVar, overload - # dependencies import numpy as np import xarray as xr from typing_extensions import ParamSpec - # submodules from .datamodel import DataModel from .dataoptions import DataOptions from .typing import AnyArray, AnyXarray, DataClass, Order, Shape, Sizes - # type hints PInit = ParamSpec("PInit") TDataset = TypeVar("TDataset", bound=xr.Dataset) @@ -143,8 +140,8 @@ def new(cls: Any) -> Any: def new(cls: Any, *args: Any, **kwargs: Any) -> Any: return asdataset(cls(*args, **kwargs)) - setattr(new, "__doc__", cls.__init__.__doc__) - setattr(new, "__signature__", sig) + new.__doc__ = cls.__init__.__doc__ + new.__signature__ = sig return MethodType(new, cls) @overload diff --git a/src/xarray_dataclass/typing.py b/src/xarray_dataclass/typing.py index 8a9741c..2d1d612 100644 --- a/src/xarray_dataclass/typing.py +++ b/src/xarray_dataclass/typing.py @@ -19,6 +19,7 @@ # standard library +from collections.abc import Collection, Hashable, Iterable, Sequence from dataclasses import Field, is_dataclass from enum import Enum from itertools import chain @@ -26,31 +27,25 @@ Annotated, Any, ClassVar, - Collection, Dict, Generic, - get_args, - get_origin, - get_type_hints, - Hashable, - Iterable, Literal, Optional, Protocol, - Sequence, Tuple, Type, TypeVar, Union, + get_args, + get_origin, + get_type_hints, ) - # dependencies import numpy as np import xarray as xr from typing_extensions import ParamSpec, TypeAlias - # type hints (private) PInit = ParamSpec("PInit") T = TypeVar("T") @@ -80,8 +75,6 @@ def __init__(self, *args: PInit.args, **kwargs: PInit.kwargs) -> None: ... class Labeled(Generic[TDims]): """Type hint for labeled objects.""" - pass - # type hints (public) class Role(Enum): diff --git a/tests/test_data.py b/tests/test_data.py index ff4c347..88351e8 100644 --- a/tests/test_data.py +++ b/tests/test_data.py @@ -1,13 +1,14 @@ # standard library +from collections.abc import Collection from dataclasses import dataclass -from typing import Collection, Literal as L, Tuple, Union - +from typing import Annotated as Ann +from typing import Literal as L +from typing import Tuple, Union # dependencies import numpy as np -from typing_extensions import Annotated as Ann -from xarray_dataclass.typing import Attr, Coord, Coordof, Data +from xarray_dataclass.typing import Attr, Coord, Coordof, Data # type hints X = L["x"] diff --git a/tests/test_dataarray.py b/tests/test_dataarray.py index bf6146c..c6563db 100644 --- a/tests/test_dataarray.py +++ b/tests/test_dataarray.py @@ -7,13 +7,11 @@ import xarray as xr from typing_extensions import TypeAlias - # submodules from xarray_dataclass.dataarray import AsDataArray from xarray_dataclass.dataoptions import DataOptions from xarray_dataclass.typing import Attr, Coord, Data, Name - # constants DIMS = "x", "y" SHAPE = 10, 10 diff --git a/tests/test_datamodel.py b/tests/test_datamodel.py index 2894adc..55a9811 100644 --- a/tests/test_datamodel.py +++ b/tests/test_datamodel.py @@ -2,12 +2,10 @@ from dataclasses import dataclass from typing import Literal, Tuple - # submodules from xarray_dataclass.datamodel import DataModel from xarray_dataclass.typing import Attr, Coord, Coordof, Data, Dataof - # type hints X = Literal["x"] Y = Literal["y"] diff --git a/tests/test_dataset.py b/tests/test_dataset.py index 2f53db0..b29cff9 100644 --- a/tests/test_dataset.py +++ b/tests/test_dataset.py @@ -2,17 +2,15 @@ from dataclasses import dataclass from typing import Literal, Tuple - # dependencies import numpy as np import xarray as xr from typing_extensions import TypeAlias - # submodules from xarray_dataclass.dataarray import AsDataArray -from xarray_dataclass.dataset import AsDataset from xarray_dataclass.dataoptions import DataOptions +from xarray_dataclass.dataset import AsDataset from xarray_dataclass.typing import Attr, Coord, Data # constants diff --git a/tests/test_typing.py b/tests/test_typing.py index 1363477..98ad2ef 100644 --- a/tests/test_typing.py +++ b/tests/test_typing.py @@ -1,12 +1,11 @@ # standard library -from typing import Any, Literal as L, Tuple, Union - +from typing import Annotated as Ann +from typing import Any, Tuple, Union +from typing import Literal as L # dependencies import numpy as np from pytest import mark -from typing_extensions import Annotated as Ann - # submodules from xarray_dataclass.typing import ( @@ -21,7 +20,6 @@ get_role, ) - # test datasets testdata_dims = [ (Coord[Tuple[()], Any], ()),