Skip to content

Commit dd99ccd

Browse files
rajeejaerogluorhan
andauthored
o Move from legacy Union/Optional/List/Dict/Tuple/Set hints were con… (#1418)
* o Move from legacy Union/Optional/List/Dict/Tuple/Set hints were converted to | unions and built-in generics * More fixes to modernize typing by replacing legacy typing aliases with built-in/PEP 604 types * o precommit --------- Co-authored-by: Orhan Eroglu <[email protected]>
1 parent 3f05df9 commit dd99ccd

File tree

16 files changed

+225
-249
lines changed

16 files changed

+225
-249
lines changed

uxarray/core/accessors.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
operations return UxDataArray/UxDataset objects with preserved uxgrid.
66
"""
77

8-
from typing import Any, Set
8+
from typing import Any
99

1010
import xarray as xr
1111

@@ -148,7 +148,7 @@ def remove_preserve_method(cls, method_name: str):
148148
cls._preserve_methods.discard(method_name)
149149

150150
@classmethod
151-
def set_preserve_methods(cls, methods: Set[str]):
151+
def set_preserve_methods(cls, methods: set[str]):
152152
"""Set the complete list of methods that preserve uxgrid."""
153153
cls._preserve_methods = set(methods)
154154

uxarray/core/api.py

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,7 @@
22

33
import os
44
from pathlib import Path
5-
from typing import (
6-
TYPE_CHECKING,
7-
Any,
8-
Dict,
9-
Mapping,
10-
Optional,
11-
Sequence,
12-
TypeAlias,
13-
Union,
14-
)
5+
from typing import TYPE_CHECKING, Any, Mapping, Sequence, TypeAlias
156
from warnings import warn
167

178
import numpy as np
@@ -46,8 +37,8 @@
4637
def open_grid(
4738
grid_filename_or_obj: str | os.PathLike[Any] | dict | Dataset,
4839
chunks=None,
49-
use_dual: Optional[bool] = False,
50-
**kwargs: Dict[str, Any],
40+
use_dual: bool | None = False,
41+
**kwargs: dict[str, Any],
5142
):
5243
"""Constructs and returns a ``Grid`` from a grid file.
5344
@@ -436,12 +427,12 @@ def open_dataset(
436427

437428
def open_mfdataset(
438429
grid_filename_or_obj: str | os.PathLike[Any] | dict | Dataset,
439-
paths: Union[str, os.PathLike],
430+
paths: str | os.PathLike,
440431
chunks=None,
441432
chunk_grid: bool = True,
442-
use_dual: Optional[bool] = False,
443-
grid_kwargs: Optional[Dict[str, Any]] = None,
444-
**kwargs: Dict[str, Any],
433+
use_dual: bool | None = False,
434+
grid_kwargs: dict[str, Any] | None = None,
435+
**kwargs: dict[str, Any],
445436
) -> UxDataset:
446437
"""Wraps ``xarray.open_dataset()`` to support reading in a grid and
447438
multiple data files together.

uxarray/core/dataarray.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import warnings
44
from html import escape
5-
from typing import TYPE_CHECKING, Any, Hashable, Literal, Mapping, Optional
5+
from typing import TYPE_CHECKING, Any, Hashable, Literal, Mapping
66
from warnings import warn
77

88
import numpy as np
@@ -164,12 +164,12 @@ def data_mapping(self):
164164

165165
def to_geodataframe(
166166
self,
167-
periodic_elements: Optional[str] = "exclude",
167+
periodic_elements: str | None = "exclude",
168168
projection=None,
169-
cache: Optional[bool] = True,
170-
override: Optional[bool] = False,
171-
engine: Optional[str] = "spatialpandas",
172-
exclude_antimeridian: Optional[bool] = None,
169+
cache: bool | None = True,
170+
override: bool | None = False,
171+
engine: str | None = "spatialpandas",
172+
exclude_antimeridian: bool | None = None,
173173
**kwargs,
174174
):
175175
"""Constructs a ``GeoDataFrame`` consisting of polygons representing
@@ -462,7 +462,7 @@ def to_xarray(self):
462462
return xr.DataArray(self)
463463

464464
def integrate(
465-
self, quadrature_rule: Optional[str] = "triangular", order: Optional[int] = 4
465+
self, quadrature_rule: str | None = "triangular", order: int | None = 4
466466
) -> UxDataArray:
467467
"""Computes the integral of a data variable.
468468
@@ -1501,7 +1501,7 @@ def divergence(self, other: "UxDataArray", **kwargs) -> "UxDataArray":
15011501

15021502
return divergence_da
15031503

1504-
def difference(self, destination: Optional[str] = "edge"):
1504+
def difference(self, destination: str | None = "edge"):
15051505
"""Computes the absolute difference of a data variable.
15061506
15071507
The difference for a face-centered data variable can be computed on each edge using the ``edge_face_connectivity``,

uxarray/core/dataset.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import os
44
import sys
55
from html import escape
6-
from typing import IO, Any, Mapping, Optional, Union
6+
from typing import IO, Any, Mapping
77
from warnings import warn
88

99
import numpy as np
@@ -75,7 +75,7 @@ def __init__(
7575
self,
7676
*args,
7777
uxgrid: Grid = None,
78-
source_datasets: Optional[str] = None,
78+
source_datasets: str | None = None,
7979
**kwargs,
8080
):
8181
self._uxgrid = None
@@ -301,7 +301,7 @@ def from_xarray(cls, ds: xr.Dataset, uxgrid: Grid = None, ugrid_dims: dict = Non
301301
@classmethod
302302
def from_healpix(
303303
cls,
304-
ds: Union[str, os.PathLike, xr.Dataset],
304+
ds: str | os.PathLike | xr.Dataset,
305305
pixels_only: bool = True,
306306
face_dim: str = "cell",
307307
**kwargs,

uxarray/grid/coordinates.py

Lines changed: 24 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import math
2-
from typing import Union
32

43
import numpy as np
54
import xarray as xr
@@ -12,8 +11,8 @@
1211

1312
@njit(cache=True)
1413
def _lonlat_rad_to_xyz(
15-
lon: Union[np.ndarray, float],
16-
lat: Union[np.ndarray, float],
14+
lon: np.ndarray | float,
15+
lat: np.ndarray | float,
1716
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
1817
"""Converts Spherical latitude and longitude coordinates into Cartesian x,
1918
y, z coordinates."""
@@ -26,9 +25,9 @@ def _lonlat_rad_to_xyz(
2625

2726
@njit(cache=True)
2827
def _xyz_to_lonlat_rad_no_norm(
29-
x: Union[np.ndarray, float],
30-
y: Union[np.ndarray, float],
31-
z: Union[np.ndarray, float],
28+
x: np.ndarray | float,
29+
y: np.ndarray | float,
30+
z: np.ndarray | float,
3231
):
3332
"""Converts a Cartesian x,y,z coordinates into Spherical latitude and
3433
longitude without normalization, decorated with Numba.
@@ -93,30 +92,30 @@ def _xyz_to_lonlat_rad_scalar(x, y, z, normalize=True):
9392

9493

9594
def _xyz_to_lonlat_rad(
96-
x: Union[np.ndarray, float],
97-
y: Union[np.ndarray, float],
98-
z: Union[np.ndarray, float],
95+
x: np.ndarray | float,
96+
y: np.ndarray | float,
97+
z: np.ndarray | float,
9998
normalize: bool = True,
10099
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
101100
"""Converts Cartesian x, y, z coordinates in Spherical longitude and
102101
latitude coordinates in radians.
103102
104103
Parameters
105104
----------
106-
x : Union[np.ndarray, float]
105+
x : np.ndarray | float
107106
Cartesian x coordinates
108-
y: Union[np.ndarray, float]
107+
y: np.ndarray | float
109108
Cartesiain y coordinates
110-
z: Union[np.ndarray, float]
109+
z: np.ndarray | float
111110
Cartesian z coordinates
112111
normalize: bool
113112
Flag to select whether to normalize the coordinates
114113
115114
Returns
116115
-------
117-
lon : Union[np.ndarray, float]
116+
lon : np.ndarray | float
118117
Longitude in radians
119-
lat: Union[np.ndarray, float]
118+
lat: np.ndarray | float
120119
Latitude in radians
121120
"""
122121

@@ -142,30 +141,30 @@ def _xyz_to_lonlat_rad(
142141

143142

144143
def _xyz_to_lonlat_deg(
145-
x: Union[np.ndarray, float],
146-
y: Union[np.ndarray, float],
147-
z: Union[np.ndarray, float],
144+
x: np.ndarray | float,
145+
y: np.ndarray | float,
146+
z: np.ndarray | float,
148147
normalize: bool = True,
149148
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
150149
"""Converts Cartesian x, y, z coordinates in Spherical latitude and
151150
longitude coordinates in degrees.
152151
153152
Parameters
154153
----------
155-
x : Union[np.ndarray, float]
154+
x : np.ndarray | float
156155
Cartesian x coordinates
157-
y: Union[np.ndarray, float]
156+
y: np.ndarray | float
158157
Cartesiain y coordinates
159-
z: Union[np.ndarray, float]
158+
z: np.ndarray | float
160159
Cartesian z coordinates
161160
normalize: bool
162161
Flag to select whether to normalize the coordinates
163162
164163
Returns
165164
-------
166-
lon : Union[np.ndarray, float]
165+
lon : np.ndarray | float
167166
Longitude in degrees
168-
lat: Union[np.ndarray, float]
167+
lat: np.ndarray | float
169168
Latitude in degrees
170169
"""
171170
lon_rad, lat_rad = _xyz_to_lonlat_rad(x, y, z, normalize=normalize)
@@ -178,9 +177,9 @@ def _xyz_to_lonlat_deg(
178177

179178

180179
def _normalize_xyz(
181-
x: Union[np.ndarray, float],
182-
y: Union[np.ndarray, float],
183-
z: Union[np.ndarray, float],
180+
x: np.ndarray | float,
181+
y: np.ndarray | float,
182+
z: np.ndarray | float,
184183
) -> tuple[np.ndarray, np.ndarray, np.ndarray]:
185184
"""Normalizes a set of Cartesian coordinates."""
186185
denom = np.linalg.norm(

0 commit comments

Comments
 (0)