Xarray specifications by type hints
Project description
Xarrayspecs
Xarray specifications by type hints
Installation
pip install xarrayspecs
Basic Usage
Xarray DataArray Specifications
import numpy as np
import xarrayspecs as xs
from dataclasses import dataclass
from numpy.typing import NDArray
from typing import Annotated, Any
@dataclass
class Temp(xs.AsDataArray):
temp: Annotated[
NDArray[Any],
xs.use("data"),
xs.dims("lon", "lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Temperature", units="K"),
]
lat: Annotated[
NDArray[Any],
xs.use("coord"),
xs.dims("lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Latitude", units="deg"),
]
lon: Annotated[
NDArray[Any],
xs.use("coord"),
xs.dims("lon"),
xs.dtype(np.float64),
xs.attrs(long_name="Longitude", units="deg"),
]
date: Annotated[str, xs.use("attr")]
Temp.new(
np.random.uniform(273, 293, size=(2, 2)),
np.array([0, 1]),
np.array([2, 3]),
"2026-03-01",
)
<xarray.DataArray 'temp' (lon: 2, lat: 2)> Size: 32B
array([[283.97627008, 287.30378733],
[285.05526752, 283.89766366]])
Coordinates:
* lon (lon) float64 16B 2.0 3.0
* lat (lat) float64 16B 0.0 1.0
Attributes:
long_name: Temperature
units: K
date: 2026-03-01
Xarray Dataset Specifications
@dataclass
class Weather(xs.AsDataset):
temp: Annotated[
NDArray[Any],
xs.use("data"),
xs.dims("lon", "lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Temperature", units="K"),
]
humid: Annotated[
NDArray[Any],
xs.use("data"),
xs.dims("lon", "lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Humidity", units="%"),
]
lat: Annotated[
NDArray[Any],
xs.use("coord"),
xs.dims("lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Latitude", units="deg"),
]
lon: Annotated[
NDArray[Any],
xs.use("coord"),
xs.dims("lon"),
xs.dtype(np.float64),
xs.attrs(long_name="Longitude", units="deg"),
]
date: Annotated[str, xs.use("attr")]
Weather.new(
np.random.uniform(273, 293, size=(2, 2)),
np.random.uniform(0, 100, size=(2, 2)),
np.array([0, 1]),
np.array([2, 3]),
"2026-03-01",
)
<xarray.Dataset> Size: 96B
Dimensions: (lat: 2, lon: 2)
Coordinates:
* lat (lat) float64 16B 0.0 1.0
* lon (lon) float64 16B 2.0 3.0
Data variables:
temp (lon, lat) float64 32B 284.0 287.3 285.1 283.9
humid (lon, lat) float64 32B 42.37 64.59 43.76 89.18
Attributes:
date: 2026-03-01
Xarray DataTree Specifications
Temp = Annotated[
NDArray[Any],
xs.use("data"),
xs.name("temp"),
xs.dims("lon", "lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Temperature", units="K"),
]
Humid = Annotated[
NDArray[Any],
xs.use("data"),
xs.name("humid"),
xs.dims("lon", "lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Humidity", units="%"),
]
Lat = Annotated[
NDArray[Any],
xs.use("coord"),
xs.name("lat"),
xs.dims("lat"),
xs.dtype(np.float64),
xs.attrs(long_name="Latitude", units="deg"),
]
Lon = Annotated[
NDArray[Any],
xs.use("coord"),
xs.name("lon"),
xs.dims("lon"),
xs.dtype(np.float64),
xs.attrs(long_name="Longitude", units="deg"),
]
Date = Annotated[str, xs.use("attr"), xs.name("date")]
@dataclass
class Weathers(xs.AsDataTree):
temp_0: Annotated[Temp, xs.node("/0")]
temp_1: Annotated[Temp, xs.node("/1")]
humid_0: Annotated[Humid, xs.node("/0")]
humid_1: Annotated[Humid, xs.node("/1")]
lat_0: Annotated[Lat, xs.node("/0")]
lat_1: Annotated[Lat, xs.node("/1")]
lon_0: Annotated[Lon, xs.node("/0")]
lon_1: Annotated[Lon, xs.node("/1")]
date_0: Annotated[Date, xs.node("/0")]
date_1: Annotated[Date, xs.node("/1")]
Weathers.new(
np.random.uniform(273, 293, size=(2, 2)),
np.random.uniform(273, 293, size=(2, 2)),
np.random.uniform(0, 100, size=(2, 2)),
np.random.uniform(0, 100, size=(2, 2)),
np.array([0, 1]),
np.array([0, 1]),
np.array([2, 3]),
np.array([2, 3]),
"2026-03-01",
"2026-03-01",
)
<xarray.DataTree>
Group: /
├── Group: /0
│ Dimensions: (lat: 2, lon: 2)
│ Coordinates:
│ * lat (lat) float64 16B 0.0 1.0
│ * lon (lon) float64 16B 2.0 3.0
│ Data variables:
│ temp (lon, lat) float64 32B 284.0 287.3 285.1 283.9
│ humid (lon, lat) float64 32B 96.37 38.34 79.17 52.89
│ Attributes:
│ date: 2026-03-01
└── Group: /1
Dimensions: (lat: 2, lon: 2)
Coordinates:
* lat (lat) float64 16B 0.0 1.0
* lon (lon) float64 16B 2.0 3.0
Data variables:
temp (lon, lat) float64 32B 281.5 285.9 281.8 290.8
humid (lon, lat) float64 32B 56.8 92.56 7.104 8.713
Attributes:
date: 2026-03-01
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
xarrayspecs-0.7.0.tar.gz
(89.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xarrayspecs-0.7.0.tar.gz.
File metadata
- Download URL: xarrayspecs-0.7.0.tar.gz
- Upload date:
- Size: 89.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ef0a401b3e7c7b2495fb8c12eafa162ce24d7c492525f06fab4daee7512da161
|
|
| MD5 |
daa79ba33deb9b42dd0cb9f758fed4a1
|
|
| BLAKE2b-256 |
83f5cb7a69d9ef38c15227e0f12f1b2dcb91c90b781e2d1f9a8fe6cd63f108e3
|
File details
Details for the file xarrayspecs-0.7.0-py3-none-any.whl.
File metadata
- Download URL: xarrayspecs-0.7.0-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dce28da6a54d7817ce6b57c21c2471e15359b9bce452b12079d4adaaa9af7911
|
|
| MD5 |
da8f87edf0c20b786244bdd71d0f45e7
|
|
| BLAKE2b-256 |
a2fbb7329036dd43c6b1ad5c6490ff028ab5903a817e8226755b58856d65895b
|