Skip to content

Commit c27baf1

Browse files
committed
#237 Add api module
1 parent a059250 commit c27baf1

File tree

2 files changed

+70
-0
lines changed

2 files changed

+70
-0
lines changed

xarray_dataclasses/__init__.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
__all__ = [
22
# submodules
3+
"api",
34
"typing",
45
# aliases
56
"Attr",
67
"Coord",
78
"Data",
89
"Multiple",
910
"Tag",
11+
"asarray",
12+
"asdataarray",
13+
"asdataset",
14+
"asset",
15+
"asxarray",
1016
]
1117
__version__ = "2.0.0"
1218

1319

1420
# submodules
21+
from . import api
1522
from . import typing
1623

1724

1825
# aliases
26+
from .api import *
1927
from .typing import *

xarray_dataclasses/api.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
__all__ = ["asarray", "asdataarray", "asdataset", "asset", "asxarray"]
2+
3+
4+
# standard library
5+
from typing import Any, Callable, overload
6+
7+
8+
# dependencies
9+
from xarray import DataArray, Dataset
10+
from .typing import P, DataClass, DataClassOf, TArray, TSet, TXarray
11+
12+
13+
@overload
14+
def asarray(obj: DataClass[P], /, *, factory: Callable[..., TArray]) -> TArray: ...
15+
16+
17+
@overload
18+
def asarray(obj: DataClassOf[TArray, P], /) -> TArray: ...
19+
20+
21+
@overload
22+
def asarray(obj: DataClass[P], /) -> DataArray: ...
23+
24+
25+
def asarray(obj: Any, /, *, factory: Any = None) -> Any:
26+
pass
27+
28+
29+
@overload
30+
def asset(obj: DataClass[P], /, *, factory: Callable[..., TSet]) -> TSet: ...
31+
32+
33+
@overload
34+
def asset(obj: DataClassOf[TSet, P], /) -> TSet: ...
35+
36+
37+
@overload
38+
def asset(obj: DataClass[P], /) -> Dataset: ...
39+
40+
41+
def asset(obj: Any, /, *, factory: Any = None) -> Any:
42+
pass
43+
44+
45+
@overload
46+
def asxarray(obj: DataClass[P], /, *, factory: Callable[..., TXarray]) -> TXarray: ...
47+
48+
49+
@overload
50+
def asxarray(obj: DataClassOf[TXarray, P], /) -> TXarray: ...
51+
52+
53+
def asxarray(obj: Any, /, *, factory: Any = None) -> Any:
54+
pass
55+
56+
57+
# function aliases
58+
asdataarray = asarray
59+
"""Alias of ``api.asdataarray``."""
60+
61+
asdataset = asset
62+
"""Alias of ``api.asset``."""

0 commit comments

Comments
 (0)