roms-tools 2.1.0__py3-none-any.whl → 2.2.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -710,8 +710,7 @@ class BoundaryForcing:
710
710
  variable in the dataset.
711
711
  """
712
712
  for var_name in self.variable_info:
713
- # only validate variables based on "validate" flag if use_dask is false
714
- if not self.use_dask or self.variable_info[var_name]["validate"]:
713
+ if self.variable_info[var_name]["validate"]:
715
714
  location = self.variable_info[var_name]["location"]
716
715
 
717
716
  # Select the appropriate mask based on variable location
@@ -2052,6 +2052,12 @@ def _load_data(filename, dim_names, use_dask, decode_times=True):
2052
2052
  **combine_kwargs,
2053
2053
  **kwargs,
2054
2054
  )
2055
+
2056
+ # Rechunk the dataset along the tidal constituent dimension ("ntides") after loading
2057
+ # because the original dataset does not have a chunk size of 1 along this dimension.
2058
+ if "ntides" in dim_names:
2059
+ ds = ds.chunk({dim_names["ntides"]: 1})
2060
+
2055
2061
  else:
2056
2062
  ds_list = []
2057
2063
  for file in matching_files:
@@ -533,10 +533,15 @@ class InitialConditions:
533
533
  variable_info = self.variable_info_physics
534
534
 
535
535
  for var_name in variable_info:
536
- # Only validate variables based on "validate" flag if use_dask is False
537
- if not self.use_dask or variable_info[var_name]["validate"]:
536
+ if variable_info[var_name]["validate"]:
537
+ if variable_info[var_name]["location"] == "rho":
538
+ mask = self.grid.ds.mask_rho
539
+ elif variable_info[var_name]["location"] == "u":
540
+ mask = self.grid.ds.mask_u
541
+ elif variable_info[var_name]["location"] == "v":
542
+ mask = self.grid.ds.mask_v
538
543
  ds[var_name].load()
539
- nan_check(ds[var_name].squeeze(), self.grid.ds.mask_rho)
544
+ nan_check(ds[var_name].squeeze(), mask)
540
545
 
541
546
  def _add_global_metadata(self, ds):
542
547
 
@@ -291,6 +291,8 @@ class SurfaceForcing:
291
291
 
292
292
  processed_fields["swrad"] = processed_fields["swrad"] * corr_factor
293
293
 
294
+ del corr_factor
295
+
294
296
  return processed_fields
295
297
 
296
298
  def _write_into_dataset(self, processed_fields, data, d_meta):
@@ -298,8 +300,9 @@ class SurfaceForcing:
298
300
  # save in new dataset
299
301
  ds = xr.Dataset()
300
302
 
301
- for var_name in processed_fields.keys():
303
+ for var_name in list(processed_fields.keys()):
302
304
  ds[var_name] = processed_fields[var_name].astype(np.float32)
305
+ del processed_fields[var_name]
303
306
  ds[var_name].attrs["long_name"] = d_meta[var_name]["long_name"]
304
307
  ds[var_name].attrs["units"] = d_meta[var_name]["units"]
305
308
 
@@ -353,9 +356,14 @@ class SurfaceForcing:
353
356
  """
354
357
 
355
358
  for var_name in ds.data_vars:
356
- # Only validate variables based on "validate" flag if use_dask is False
357
- if not self.use_dask or self.variable_info[var_name]["validate"]:
358
- nan_check(ds[var_name].isel(time=0), self.target_coords["mask"])
359
+ if self.variable_info[var_name]["validate"]:
360
+ if self.variable_info[var_name]["location"] == "rho":
361
+ mask = self.target_coords["mask"]
362
+ elif self.variable_info[var_name]["location"] == "u":
363
+ mask = self.target_coords["mask_u"]
364
+ elif self.variable_info[var_name]["location"] == "v":
365
+ mask = self.target_coords["mask_v"]
366
+ nan_check(ds[var_name].isel(time=0), mask)
359
367
 
360
368
  def _add_global_metadata(self, ds=None):
361
369
 
roms_tools/setup/tides.py CHANGED
@@ -270,9 +270,16 @@ class TidalForcing:
270
270
  The method utilizes `self.grid.ds.mask_rho` to determine the wet points in the domain.
271
271
  """
272
272
  for var_name in ds.data_vars:
273
- # only validate variables based on "validate" flag if use_dask is false
274
- if not self.use_dask or self.variable_info[var_name]["validate"]:
275
- nan_check(ds[var_name].isel(ntides=0), self.grid.ds.mask_rho)
273
+ if self.variable_info[var_name]["validate"]:
274
+ if self.variable_info[var_name]["location"] == "rho":
275
+ mask = self.grid.ds.mask_rho
276
+ elif self.variable_info[var_name]["location"] == "u":
277
+ mask = self.grid.ds.mask_u
278
+ elif self.variable_info[var_name]["location"] == "v":
279
+ mask = self.grid.ds.mask_v
280
+
281
+ da = ds[var_name].isel(ntides=0)
282
+ nan_check(da, mask)
276
283
 
277
284
  def plot(self, var_name, ntides=0) -> None:
278
285
  """Plot the specified tidal forcing variable for a given tidal constituent.
roms_tools/setup/utils.py CHANGED
@@ -745,6 +745,8 @@ def get_target_coords(grid, use_coarse_grid=False):
745
745
  mask = grid.ds.get("mask_coarse")
746
746
  if mask is not None:
747
747
  mask = mask.rename({"eta_coarse": "eta_rho", "xi_coarse": "xi_rho"})
748
+ mask_u = interpolate_from_rho_to_u(mask, method="multiplicative")
749
+ mask_v = interpolate_from_rho_to_v(mask, method="multiplicative")
748
750
 
749
751
  lat_psi = grid.ds.get("lat_psi_coarse")
750
752
  lon_psi = grid.ds.get("lon_psi_coarse")
@@ -754,6 +756,8 @@ def get_target_coords(grid, use_coarse_grid=False):
754
756
  lon = grid.ds.lon_rho
755
757
  angle = grid.ds.angle
756
758
  mask = grid.ds.get("mask_rho")
759
+ mask_u = grid.ds.get("mask_u")
760
+ mask_v = grid.ds.get("mask_v")
757
761
  lat_psi = grid.ds.get("lat_psi")
758
762
  lon_psi = grid.ds.get("lon_psi")
759
763
 
@@ -776,6 +780,8 @@ def get_target_coords(grid, use_coarse_grid=False):
776
780
  "lon_psi": lon_psi,
777
781
  "angle": angle,
778
782
  "mask": mask,
783
+ "mask_u": mask_u,
784
+ "mask_v": mask_v,
779
785
  "straddle": straddle,
780
786
  }
781
787
 
@@ -1073,6 +1079,10 @@ def _to_yaml(forcing_object, filepath: Union[str, Path]) -> None:
1073
1079
 
1074
1080
  grid_yaml_data = {**parent_grid_yaml_data, **child_grid_yaml_data}
1075
1081
 
1082
+ # Ensure forcing_object.source.path is a string (convert if it's a pathlib object)
1083
+ if hasattr(forcing_object, "source") and "path" in forcing_object.source:
1084
+ forcing_object.source["path"] = str(forcing_object.source["path"])
1085
+
1076
1086
  # Step 2: Get ROMS Tools version
1077
1087
  # Fetch the version of the 'roms-tools' package for inclusion in the YAML header
1078
1088
  try:
@@ -19,7 +19,7 @@ import logging
19
19
  def test_boundary_forcing_creation(boundary_forcing_fixture, request):
20
20
  """Test the creation of the BoundaryForcing object."""
21
21
 
22
- fname = download_test_data("GLORYS_coarse_test_data.nc")
22
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
23
23
  boundary_forcing = request.getfixturevalue(boundary_forcing_fixture)
24
24
  assert boundary_forcing.start_time == datetime(2021, 6, 29)
25
25
  assert boundary_forcing.end_time == datetime(2021, 6, 30)
@@ -59,7 +59,9 @@ def test_boundary_forcing_creation(boundary_forcing_fixture, request):
59
59
  def test_boundary_forcing_creation_with_bgc(boundary_forcing_fixture, request):
60
60
  """Test the creation of the BoundaryForcing object."""
61
61
 
62
- fname_bgc = download_test_data("CESM_regional_coarse_test_data_climatology.nc")
62
+ fname_bgc = Path(
63
+ download_test_data("CESM_regional_coarse_test_data_climatology.nc")
64
+ )
63
65
  boundary_forcing = request.getfixturevalue(boundary_forcing_fixture)
64
66
 
65
67
  assert boundary_forcing.start_time == datetime(2021, 6, 29)
@@ -103,7 +105,7 @@ def test_unsuccessful_boundary_forcing_creation_with_1d_fill(use_dask):
103
105
  hc=250.0, # critical depth
104
106
  )
105
107
 
106
- fname = download_test_data("GLORYS_coarse_test_data.nc")
108
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
107
109
 
108
110
  with pytest.raises(ValueError, match="consists entirely of NaNs"):
109
111
 
@@ -138,7 +140,7 @@ def test_boundary_divided_by_land_warning(caplog, use_dask):
138
140
  nx=5, ny=5, size_x=500, size_y=500, center_lon=-10, center_lat=65, rot=0
139
141
  )
140
142
 
141
- fname = download_test_data("GLORYS_coarse_test_data.nc")
143
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
142
144
 
143
145
  with caplog.at_level(logging.WARNING):
144
146
  BoundaryForcing(
@@ -158,7 +160,7 @@ def test_1d_and_2d_fill_coincide_if_no_land(use_dask):
158
160
  # this grid lies entirely over open ocean
159
161
  grid = Grid(nx=5, ny=5, size_x=300, size_y=300, center_lon=-5, center_lat=65, rot=0)
160
162
 
161
- fname = download_test_data("GLORYS_coarse_test_data.nc")
163
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
162
164
 
163
165
  kwargs = {
164
166
  "grid": grid,
@@ -26,7 +26,7 @@ def test_initial_conditions_creation(ic_fixture, request):
26
26
  assert ic.ini_time == datetime(2021, 6, 29)
27
27
  assert ic.source == {
28
28
  "name": "GLORYS",
29
- "path": download_test_data("GLORYS_coarse_test_data.nc"),
29
+ "path": Path(download_test_data("GLORYS_coarse_test_data.nc")),
30
30
  "climatology": False,
31
31
  }
32
32
  assert isinstance(ic.ds, xr.Dataset)
@@ -83,7 +83,7 @@ def test_initial_conditions_missing_physics_path(example_grid, use_dask):
83
83
  # Test initialization with missing 'name' in bgc_source
84
84
  def test_initial_conditions_missing_bgc_name(example_grid, use_dask):
85
85
 
86
- fname = download_test_data("GLORYS_coarse_test_data.nc")
86
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
87
87
  with pytest.raises(
88
88
  ValueError, match="`bgc_source` must include a 'name' if it is provided."
89
89
  ):
@@ -99,7 +99,7 @@ def test_initial_conditions_missing_bgc_name(example_grid, use_dask):
99
99
  # Test initialization with missing 'path' in bgc_source
100
100
  def test_initial_conditions_missing_bgc_path(example_grid, use_dask):
101
101
 
102
- fname = download_test_data("GLORYS_coarse_test_data.nc")
102
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
103
103
  with pytest.raises(
104
104
  ValueError, match="`bgc_source` must include a 'path' if it is provided."
105
105
  ):
@@ -115,7 +115,7 @@ def test_initial_conditions_missing_bgc_path(example_grid, use_dask):
115
115
  # Test default climatology value
116
116
  def test_initial_conditions_default_climatology(example_grid, use_dask):
117
117
 
118
- fname = download_test_data("GLORYS_coarse_test_data.nc")
118
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
119
119
 
120
120
  initial_conditions = InitialConditions(
121
121
  grid=example_grid,
@@ -130,8 +130,8 @@ def test_initial_conditions_default_climatology(example_grid, use_dask):
130
130
 
131
131
  def test_initial_conditions_default_bgc_climatology(example_grid, use_dask):
132
132
 
133
- fname = download_test_data("GLORYS_coarse_test_data.nc")
134
- fname_bgc = download_test_data("CESM_regional_test_data_one_time_slice.nc")
133
+ fname = Path(download_test_data("GLORYS_coarse_test_data.nc"))
134
+ fname_bgc = Path(download_test_data("CESM_regional_test_data_one_time_slice.nc"))
135
135
 
136
136
  initial_conditions = InitialConditions(
137
137
  grid=example_grid,
@@ -174,7 +174,7 @@ def test_successful_initialization_with_regional_data(grid_fixture, request, use
174
174
  start_time = datetime(2020, 1, 31)
175
175
  end_time = datetime(2020, 2, 2)
176
176
 
177
- fname = download_test_data("ERA5_regional_test_data.nc")
177
+ fname = Path(download_test_data("ERA5_regional_test_data.nc"))
178
178
 
179
179
  grid = request.getfixturevalue(grid_fixture)
180
180
 
@@ -235,7 +235,7 @@ def test_nan_detection_initialization_with_regional_data(
235
235
  start_time = datetime(2020, 1, 31)
236
236
  end_time = datetime(2020, 2, 2)
237
237
 
238
- fname = download_test_data("ERA5_regional_test_data.nc")
238
+ fname = Path(download_test_data("ERA5_regional_test_data.nc"))
239
239
 
240
240
  grid = request.getfixturevalue(grid_fixture)
241
241
 
@@ -264,7 +264,7 @@ def test_no_longitude_intersection_initialization_with_regional_data(
264
264
  start_time = datetime(2020, 1, 31)
265
265
  end_time = datetime(2020, 2, 2)
266
266
 
267
- fname = download_test_data("ERA5_regional_test_data.nc")
267
+ fname = Path(download_test_data("ERA5_regional_test_data.nc"))
268
268
 
269
269
  for use_coarse_grid in [True, False]:
270
270
  with pytest.raises(
@@ -304,7 +304,7 @@ def test_successful_initialization_with_global_data(grid_fixture, request, use_d
304
304
  start_time = datetime(2020, 1, 31)
305
305
  end_time = datetime(2020, 2, 2)
306
306
 
307
- fname = download_test_data("ERA5_global_test_data.nc")
307
+ fname = Path(download_test_data("ERA5_global_test_data.nc"))
308
308
 
309
309
  grid = request.getfixturevalue(grid_fixture)
310
310
 
@@ -353,8 +353,8 @@ def test_nans_filled_in(grid_that_straddles_dateline, use_dask):
353
353
  start_time = datetime(2020, 1, 31)
354
354
  end_time = datetime(2020, 2, 2)
355
355
 
356
- fname = download_test_data("ERA5_regional_test_data.nc")
357
- fname_bgc = download_test_data("CESM_surface_global_test_data_climatology.nc")
356
+ fname = Path(download_test_data("ERA5_regional_test_data.nc"))
357
+ fname_bgc = Path(download_test_data("CESM_surface_global_test_data_climatology.nc"))
358
358
 
359
359
  for use_coarse_grid in [True, False]:
360
360
  sfc_forcing = SurfaceForcing(
@@ -417,12 +417,12 @@ def test_time_attr(bgc_surface_forcing):
417
417
  (
418
418
  "bgc_surface_forcing",
419
419
  False,
420
- download_test_data("CESM_surface_global_test_data.nc"),
420
+ Path(download_test_data("CESM_surface_global_test_data.nc")),
421
421
  ),
422
422
  (
423
423
  "bgc_surface_forcing_from_climatology",
424
424
  True,
425
- download_test_data("CESM_surface_global_test_data_climatology.nc"),
425
+ Path(download_test_data("CESM_surface_global_test_data_climatology.nc")),
426
426
  ),
427
427
  ],
428
428
  )
@@ -67,7 +67,7 @@ def grid_that_straddles_180_degree_meridian():
67
67
  )
68
68
  def test_successful_initialization_with_global_data(grid_fixture, request, use_dask):
69
69
 
70
- fname = download_test_data("TPXO_global_test_data.nc")
70
+ fname = Path(download_test_data("TPXO_global_test_data.nc"))
71
71
 
72
72
  grid = request.getfixturevalue(grid_fixture)
73
73
 
@@ -94,7 +94,7 @@ def test_successful_initialization_with_regional_data(
94
94
  grid_that_lies_within_bounds_of_regional_tpxo_data, use_dask
95
95
  ):
96
96
 
97
- fname = download_test_data("TPXO_regional_test_data.nc")
97
+ fname = Path(download_test_data("TPXO_regional_test_data.nc"))
98
98
 
99
99
  tidal_forcing = TidalForcing(
100
100
  grid=grid_that_lies_within_bounds_of_regional_tpxo_data,
@@ -122,7 +122,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_nans(
122
122
  grid_that_is_out_of_bounds_of_regional_tpxo_data, use_dask
123
123
  ):
124
124
 
125
- fname = download_test_data("TPXO_regional_test_data.nc")
125
+ fname = Path(download_test_data("TPXO_regional_test_data.nc"))
126
126
 
127
127
  with pytest.raises(ValueError, match="NaN values found"):
128
128
  TidalForcing(
@@ -141,7 +141,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
141
141
  grid_fixture, request, use_dask
142
142
  ):
143
143
 
144
- fname = download_test_data("TPXO_regional_test_data.nc")
144
+ fname = Path(download_test_data("TPXO_regional_test_data.nc"))
145
145
 
146
146
  grid = request.getfixturevalue(grid_fixture)
147
147
 
@@ -158,7 +158,7 @@ def test_unsuccessful_initialization_with_regional_data_due_to_no_overlap(
158
158
 
159
159
  def test_insufficient_number_of_consituents(grid_that_straddles_dateline, use_dask):
160
160
 
161
- fname = download_test_data("TPXO_global_test_data.nc")
161
+ fname = Path(download_test_data("TPXO_global_test_data.nc"))
162
162
 
163
163
  with pytest.raises(ValueError, match="The dataset contains fewer"):
164
164
  TidalForcing(
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: roms-tools
3
- Version: 2.1.0
3
+ Version: 2.2.0
4
4
  Summary: Tools for running and analysing UCLA-ROMS simulations
5
5
  Author-email: Nora Loose <nora.loose@gmail.com>, Thomas Nicholas <tom@cworthy.org>
6
6
  License: Apache-2
@@ -2,35 +2,35 @@ ci/environment.yml,sha256=bwK5Lz4j44gY2ee2Edn3ftXnfvYbRUVvFXVJH7T-oro,198
2
2
  roms_tools/__init__.py,sha256=UdCkky5JiiUlqPlG0MwQdhm6uxsY0bkDuaxi4xOB3Ls,846
3
3
  roms_tools/utils.py,sha256=kMlVbaDcokPBqXN0307Dwt10Z8-qMcvbRLiDMX8fUpk,12230
4
4
  roms_tools/setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- roms_tools/setup/boundary_forcing.py,sha256=3s5_kHK1hhMGYafZNjjNmgWf5oDrNDVmwgz8Ek1X1I8,43172
6
- roms_tools/setup/datasets.py,sha256=qTKe2XVQnRfYjaPxlfhRPSA_vrUqicvwLW4BCbaVXSU,85893
5
+ roms_tools/setup/boundary_forcing.py,sha256=VocsvG3g9hQxzYO9gdy2bxZAaJc9oQlT7hpurcAi71Y,43067
6
+ roms_tools/setup/datasets.py,sha256=-SI5EAwgGzZ8ChM1YKU9lNi-M4tRRqG5RefEyHZcQyQ,86167
7
7
  roms_tools/setup/download.py,sha256=TgDC3TdE_njFGbPYJprAN8J1nYeOWFzavQhUfOGwAYk,5927
8
8
  roms_tools/setup/fill.py,sha256=YQes_9uADZ-XZ6dBqXyvG7OAp7UrWhX-p3pR1gD6Od4,11120
9
9
  roms_tools/setup/grid.py,sha256=hpECjTC8Bz3ysvabar7t7ZtsTanqxjvHtYHgnyFcVYQ,51293
10
- roms_tools/setup/initial_conditions.py,sha256=OCCDJMhpPYZzq0Xk_4c9sKThhKegSK-Y0DtWFV2o6c0,36843
10
+ roms_tools/setup/initial_conditions.py,sha256=NuTOqig8navFJ6IysXwK5pKd2selkRWrFaiedtRqqiw,37059
11
11
  roms_tools/setup/mask.py,sha256=IK2SrVnMJwZjE4jNFtzMQhp1c5c8SUO45OIpCIrNSis,3413
12
12
  roms_tools/setup/nesting.py,sha256=CB9bGizmNaQ74niARyRf-p0lY7c3CPhXTfdenmbIPOQ,21013
13
13
  roms_tools/setup/plot.py,sha256=Qs-JgHXQGfHcMg2cfn4TMYeDuJh2dMUgMMrndHr_jH4,12866
14
14
  roms_tools/setup/regrid.py,sha256=OBlW-KnQfXmxSZ5MwNoroxU51sI8-3ZRQhEPX3maj1A,5173
15
15
  roms_tools/setup/river_forcing.py,sha256=Ox61M_SNousC_FLwmBoR865oiTyisbvJb4bcEaJZfg4,27364
16
- roms_tools/setup/surface_forcing.py,sha256=RCsBZXr_5B2JpU51U68RL_94zyYY3kEODFdPkVWojb8,21086
17
- roms_tools/setup/tides.py,sha256=yIPaG70bwp-pH08F9J2yJR769B-_u02wJaFmZ8yKqqY,28001
16
+ roms_tools/setup/surface_forcing.py,sha256=-i2lAxv_vhjO2QQyWPfLg1mIIOx4N0VDmMUrkI1V0qQ,21409
17
+ roms_tools/setup/tides.py,sha256=EgsPsLY70ERB6q2w1DClRQZvSbX-i_Ypume01Ub_EYU,28257
18
18
  roms_tools/setup/topography.py,sha256=pKf2EmUc85meKN5aDkN1fY2U3Zn5nn80RDqzaEfpvvw,13475
19
- roms_tools/setup/utils.py,sha256=wQaJpbxq3evXG59wTzVUB8q8ozP234F521Evyd8CHsU,45967
19
+ roms_tools/setup/utils.py,sha256=1WzeRF8hf-00cnh2M73nsyvMQxDfHqXF2AMI947iyDk,46494
20
20
  roms_tools/setup/vertical_coordinate.py,sha256=yw3L_ONELAZfOHwNvcyQaJ0Vqir05FRzFBd601eTLUM,2689
21
21
  roms_tools/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  roms_tools/tests/test_utils.py,sha256=X16UHYzd8KmUgxBHJqmVP6cIHfOtScCdXPw905bgGMk,7966
23
23
  roms_tools/tests/test_setup/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
- roms_tools/tests/test_setup/test_boundary_forcing.py,sha256=21gyZLI-qeYq0sbaKmCd3qKFyzxgY_u9LyYX5cIn8vM,14381
24
+ roms_tools/tests/test_setup/test_boundary_forcing.py,sha256=izCr5zRLtCsbWa2jjEvuAP5Q941A_erDn1S3Ao5eXU0,14425
25
25
  roms_tools/tests/test_setup/test_datasets.py,sha256=Pxh95V-x-EaemVm6F_T0TbtrEp4Lh1_OAaOxPwTLrfQ,16441
26
26
  roms_tools/tests/test_setup/test_fill.py,sha256=gDHuM58d3ECQE317ZntChYt4hWCfo4eVhkW13NiZ1V4,3735
27
27
  roms_tools/tests/test_setup/test_grid.py,sha256=oGRiM2mqKuQavlS0C52ambLURu64Yc7zwaKYQxt5tOk,14663
28
- roms_tools/tests/test_setup/test_initial_conditions.py,sha256=jkVJhB2ig6-a53RlKcIyq2uiVCg-zlvGezzrIBepCMU,11165
28
+ roms_tools/tests/test_setup/test_initial_conditions.py,sha256=IFEUgice0hWPKQkQg44d5CJNJ-Cli1vYCK8a0kVAcvM,11201
29
29
  roms_tools/tests/test_setup/test_nesting.py,sha256=_LB_10XgGkQ6DmpHp5rgIWTEN6nR14aZY8B_ADX4cRQ,18525
30
30
  roms_tools/tests/test_setup/test_regrid.py,sha256=NMzMkPHaFfO_9H0SbIpFL3VHlzhd71gUVLu81QmU-bs,1891
31
31
  roms_tools/tests/test_setup/test_river_forcing.py,sha256=K0XoT8sIbqoFGyIkK6oPOPpihAJftXrcsymV2q5tD6o,12010
32
- roms_tools/tests/test_setup/test_surface_forcing.py,sha256=7_-vMHVKADjREywWKMOEVdAKuWFLtZqD6kieoRjEMVs,24952
33
- roms_tools/tests/test_setup/test_tides.py,sha256=7mOd1uVSTll3nJxAVGk6jqPHXbSdZm32GTOd4Fjcp70,8547
32
+ roms_tools/tests/test_setup/test_surface_forcing.py,sha256=oa_Nma8syqVw5_V3UHySIRCrJHdbunsmLXj4Fk7foaA,25000
33
+ roms_tools/tests/test_setup/test_tides.py,sha256=o5oY718nQg3cXuK7Ark0uOtkFF8KuJZI3wQcJwyz8O8,8577
34
34
  roms_tools/tests/test_setup/test_topography.py,sha256=RlkQ_zaJzXi75Y5kRCtHA9JO93MRPlj7LNjXIICI9Mk,4969
35
35
  roms_tools/tests/test_setup/test_utils.py,sha256=lVeeiEEk_nR0zdmAdRHMlkBUNrAZMiZFrHaLQNy_lPE,585
36
36
  roms_tools/tests/test_setup/test_validation.py,sha256=suAkZkcxum5I7uUI2eIXxutLk6yQPtXOCSKrfSIMbN4,2294
@@ -1048,8 +1048,8 @@ roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0,sha256=60jWZ
1048
1048
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zarray,sha256=2P8kKjSgdw5-3udU-vGJ3bzhNuRn7fZmWN811qBJn34,357
1049
1049
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/.zattrs,sha256=2z7WUPvCT9VfFs8VCBltFHLWgaGj1jcw3yZ4n0viLRg,197
1050
1050
  roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0,sha256=33Gl8otBmgqVarmAnZuEqTYS2_hVJUJh-iN1HzvaDuo,96
1051
- roms_tools-2.1.0.dist-info/LICENSE,sha256=yiff76E4xRioW2bHhlPpyYpstmePQBx2bF8HhgQhSsg,11318
1052
- roms_tools-2.1.0.dist-info/METADATA,sha256=sMXR8xKvfk2qVIfdyIfoX3xGzwi-fEfedQ-X7voXgME,4244
1053
- roms_tools-2.1.0.dist-info/WHEEL,sha256=A3WOREP4zgxI0fKrHUG8DC8013e3dK3n7a6HDbcEIwE,91
1054
- roms_tools-2.1.0.dist-info/top_level.txt,sha256=aAf4T4nYQSkay5iKJ9kmTjlDgd4ETdp9OSlB4sJdt8Y,19
1055
- roms_tools-2.1.0.dist-info/RECORD,,
1051
+ roms_tools-2.2.0.dist-info/LICENSE,sha256=yiff76E4xRioW2bHhlPpyYpstmePQBx2bF8HhgQhSsg,11318
1052
+ roms_tools-2.2.0.dist-info/METADATA,sha256=ez12LSQgsVdNz-ujYb7B26bIgVYhDi35_ZJRjPYEpEI,4244
1053
+ roms_tools-2.2.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
1054
+ roms_tools-2.2.0.dist-info/top_level.txt,sha256=aAf4T4nYQSkay5iKJ9kmTjlDgd4ETdp9OSlB4sJdt8Y,19
1055
+ roms_tools-2.2.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.7.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5