anemoi-datasets 0.5.13__py3-none-any.whl → 0.5.14__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.
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.5.13'
16
- __version_tuple__ = version_tuple = (0, 5, 13)
15
+ __version__ = version = '0.5.14'
16
+ __version_tuple__ = version_tuple = (0, 5, 14)
@@ -83,11 +83,12 @@ class Create(Command):
83
83
  task("load", options)
84
84
  task("finalise", options)
85
85
 
86
- task("patch", options)
87
-
88
86
  task("init_additions", options)
89
87
  task("run_additions", options)
90
88
  task("finalise_additions", options)
89
+
90
+ task("patch", options)
91
+
91
92
  task("cleanup", options)
92
93
  task("verify", options)
93
94
 
@@ -153,6 +154,7 @@ class Create(Command):
153
154
 
154
155
  with ExecutorClass(max_workers=1) as executor:
155
156
  executor.submit(task, "finalise-additions", options).result()
157
+ executor.submit(task, "patch", options).result()
156
158
  executor.submit(task, "cleanup", options).result()
157
159
  executor.submit(task, "verify", options).result()
158
160
 
@@ -79,7 +79,10 @@ def json_tidy(o):
79
79
  )
80
80
  return o.isoformat()
81
81
 
82
- raise TypeError(repr(o) + " is not JSON serializable")
82
+ if isinstance(o, (np.float32, np.float64)):
83
+ return float(o)
84
+
85
+ raise TypeError(f"{repr(o)} is not JSON serializable {type(o)}")
83
86
 
84
87
 
85
88
  def build_statistics_dates(dates, start, end):
@@ -596,6 +599,8 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
596
599
  # There is one cube to load for each result.
597
600
  dates = list(result.group_of_dates)
598
601
 
602
+ LOG.debug(f"Loading cube for {len(dates)} dates")
603
+
599
604
  cube = result.get_cube()
600
605
  shape = cube.extended_user_shape
601
606
  dates_in_data = cube.user_coords["valid_datetime"]
@@ -642,12 +647,14 @@ class Load(Actor, HasRegistryMixin, HasStatisticTempMixin, HasElementForDataMixi
642
647
  indexes = dates_to_indexes(self.dates, dates_in_data)
643
648
 
644
649
  array = ViewCacheArray(self.data_array, shape=shape, indexes=indexes)
650
+ LOG.info(f"Loading array shape={shape}, indexes={len(indexes)}")
645
651
  self.load_cube(cube, array)
646
652
 
647
653
  stats = compute_statistics(array.cache, self.variables_names, allow_nans=self._get_allow_nans())
648
654
  self.tmp_statistics.write(indexes, stats, dates=dates_in_data)
649
-
655
+ LOG.info("Flush data array")
650
656
  array.flush()
657
+ LOG.info("Flushed data array")
651
658
 
652
659
  def _get_allow_nans(self):
653
660
  config = self.main_config
@@ -740,6 +747,11 @@ class AdditionsMixin:
740
747
  if not self.delta.total_seconds() % frequency.total_seconds() == 0:
741
748
  LOG.debug(f"Delta {self.delta} is not a multiple of frequency {frequency}. Skipping.")
742
749
  return True
750
+
751
+ if self.dataset.zarr_metadata.get("build", {}).get("additions", None) is False:
752
+ LOG.warning(f"Additions are disabled for {self.path} in the recipe.")
753
+ return True
754
+
743
755
  return False
744
756
 
745
757
  @cached_property
@@ -253,6 +253,7 @@ def _compute_accumulations(
253
253
  data_accumulation_period=None,
254
254
  patch=_identity,
255
255
  base_times=None,
256
+ use_cdsapi_dataset=None,
256
257
  ):
257
258
  adjust_step = isinstance(user_accumulation_period, int)
258
259
 
@@ -311,7 +312,9 @@ def _compute_accumulations(
311
312
 
312
313
  requests.append(patch(r))
313
314
 
314
- ds = mars(context, dates, *requests, request_already_using_valid_datetime=True)
315
+ ds = mars(
316
+ context, dates, *requests, request_already_using_valid_datetime=True, use_cdsapi_dataset=use_cdsapi_dataset
317
+ )
315
318
 
316
319
  accumulations = {}
317
320
  for a in [AccumulationClass(out, frequency=frequency, **r) for r in requests]:
@@ -366,7 +369,7 @@ def _scda(request):
366
369
  return request
367
370
 
368
371
 
369
- def accumulations(context, dates, **request):
372
+ def accumulations(context, dates, use_cdsapi_dataset=None, **request):
370
373
  _to_list(request["param"])
371
374
  class_ = request.get("class", "od")
372
375
  stream = request.get("stream", "oper")
@@ -395,6 +398,7 @@ def accumulations(context, dates, **request):
395
398
  dates,
396
399
  request,
397
400
  user_accumulation_period=user_accumulation_period,
401
+ use_cdsapi_dataset=use_cdsapi_dataset,
398
402
  **kwargs,
399
403
  )
400
404
 
@@ -0,0 +1,16 @@
1
+ # (C) Copyright 2025 Anemoi contributors.
2
+ #
3
+ # This software is licensed under the terms of the Apache Licence Version 2.0
4
+ # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
5
+ #
6
+ # In applying this licence, ECMWF does not waive the privileges and immunities
7
+ # granted to it by virtue of its status as an intergovernmental organisation
8
+ # nor does it submit to any jurisdiction.
9
+
10
+
11
+ from .xarray import load_many
12
+
13
+
14
+ def execute(context, dates, path, *args, **kwargs):
15
+ options = {"engine": "fstd"}
16
+ return load_many("🍁", context, dates, path, *args, options=options, **kwargs)
@@ -246,6 +246,7 @@ def mars(
246
246
  *requests,
247
247
  request_already_using_valid_datetime=False,
248
248
  date_key="date",
249
+ use_cdsapi_dataset=None,
249
250
  **kwargs,
250
251
  ):
251
252
 
@@ -305,7 +306,10 @@ def mars(
305
306
  f"⚠️ Unknown key {k}={v} in MARS request. Did you mean '{did_you_mean(k, MARS_KEYS)}' ?"
306
307
  )
307
308
  try:
308
- ds = ds + from_source("mars", **r)
309
+ if use_cdsapi_dataset:
310
+ ds = ds + from_source("cds", use_cdsapi_dataset, r)
311
+ else:
312
+ ds = ds + from_source("mars", **r)
309
313
  except Exception as e:
310
314
  if "File is empty:" not in str(e):
311
315
  raise
@@ -459,7 +459,7 @@ class Result:
459
459
  if self.group_of_dates is not None:
460
460
  dates = f" {len(self.group_of_dates)} dates"
461
461
  dates += " ("
462
- dates += "/".join(d.strftime("%Y-%m-%d:%H") for d in self.group_of_dates)
462
+ dates += "/".join(d.strftime("%Y-%m-%dT%H:%M") for d in self.group_of_dates)
463
463
  if len(dates) > 100:
464
464
  dates = dates[:100] + "..."
465
465
  dates += ")"
@@ -18,6 +18,7 @@ import shutil
18
18
  import socket
19
19
 
20
20
  import numpy as np
21
+ import tqdm
21
22
  from anemoi.utils.provenance import gather_provenance_info
22
23
 
23
24
  from ..check import check_data_values
@@ -134,7 +135,7 @@ def check_variance(x, variables_names, minimum, maximum, mean, count, sums, squa
134
135
 
135
136
  def compute_statistics(array, check_variables_names=None, allow_nans=False):
136
137
  """Compute statistics for a given array, provides minimum, maximum, sum, squares, count and has_nans as a dictionary."""
137
-
138
+ LOG.info(f"Computing statistics for {array.shape} array")
138
139
  nvars = array.shape[1]
139
140
 
140
141
  LOG.debug(f"Stats {nvars}, {array.shape}, {check_variables_names}")
@@ -149,7 +150,7 @@ def compute_statistics(array, check_variables_names=None, allow_nans=False):
149
150
  maximum = np.zeros(stats_shape, dtype=np.float64)
150
151
  has_nans = np.zeros(stats_shape, dtype=np.bool_)
151
152
 
152
- for i, chunk in enumerate(array):
153
+ for i, chunk in tqdm.tqdm(enumerate(array), delay=1, total=array.shape[0], desc="Computing statistics"):
153
154
  values = chunk.reshape((nvars, -1))
154
155
 
155
156
  for j, name in enumerate(check_variables_names):
@@ -166,6 +167,8 @@ def compute_statistics(array, check_variables_names=None, allow_nans=False):
166
167
  count[i] = np.sum(~np.isnan(values), axis=1)
167
168
  has_nans[i] = np.isnan(values).any()
168
169
 
170
+ LOG.info(f"Statistics computed for {nvars} variables.")
171
+
169
172
  return {
170
173
  "minimum": minimum,
171
174
  "maximum": maximum,
@@ -103,6 +103,30 @@ def _as_date(d, dates, last):
103
103
 
104
104
  if isinstance(d, str):
105
105
 
106
+ def isfloat(s):
107
+ try:
108
+ float(s)
109
+ return True
110
+ except ValueError:
111
+ return False
112
+
113
+ if d.endswith("%") and isfloat(d[:-1]):
114
+ x = float(d[:-1])
115
+ if not 0 <= x <= 100:
116
+ raise ValueError(f"Invalid date: {d}")
117
+ i_float = x * len(dates) / 100
118
+
119
+ epsilon = 2 ** (-30)
120
+ if len(dates) > 1 / epsilon:
121
+ LOG.warning("Too many dates to use percentage, one date may be lost in rounding")
122
+
123
+ if last:
124
+ index = int(i_float + epsilon) - 1
125
+ else:
126
+ index = int(i_float - epsilon)
127
+ index = max(0, min(len(dates) - 1, index))
128
+ return dates[index]
129
+
106
130
  if "-" in d and ":" in d:
107
131
  date, time = d.replace(" ", "T").split("T")
108
132
  year, month, day = [int(_) for _ in date.split("-")]
anemoi/datasets/grids.py CHANGED
@@ -62,6 +62,8 @@ def plot_mask(path, mask, lats, lons, global_lats, global_lons):
62
62
  plt.savefig(path + "-global-zoomed.png")
63
63
 
64
64
 
65
+ # TODO: Use the one from anemoi.utils.grids instead
66
+ # from anemoi.utils.grids import ...
65
67
  def xyz_to_latlon(x, y, z):
66
68
  return (
67
69
  np.rad2deg(np.arcsin(np.minimum(1.0, np.maximum(-1.0, z)))),
@@ -69,6 +71,8 @@ def xyz_to_latlon(x, y, z):
69
71
  )
70
72
 
71
73
 
74
+ # TODO: Use the one from anemoi.utils.grids instead
75
+ # from anemoi.utils.grids import ...
72
76
  def latlon_to_xyz(lat, lon, radius=1.0):
73
77
  # https://en.wikipedia.org/wiki/Geographic_coordinate_conversion#From_geodetic_to_ECEF_coordinates
74
78
  # We assume that the Earth is a sphere of radius 1 so N(phi) = 1
@@ -380,6 +384,8 @@ def serialise_mask(mask):
380
384
 
381
385
 
382
386
  def nearest_grid_points(source_latitudes, source_longitudes, target_latitudes, target_longitudes):
387
+ # TODO: Use the one from anemoi.utils.grids instead
388
+ # from anemoi.utils.grids import ...
383
389
  from scipy.spatial import cKDTree
384
390
 
385
391
  source_xyz = latlon_to_xyz(source_latitudes, source_longitudes)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: anemoi-datasets
3
- Version: 0.5.13
3
+ Version: 0.5.14
4
4
  Summary: A package to hold various functions to support training of ML models on ECMWF data.
5
5
  Author-email: "European Centre for Medium-Range Weather Forecasts (ECMWF)" <software.support@ecmwf.int>
6
6
  License: Apache License
@@ -1,13 +1,13 @@
1
1
  anemoi/datasets/__init__.py,sha256=0GOHATiKgkUqLRgAVQhNP1aPO7ULfSr8DqUf2ANPEv8,1010
2
2
  anemoi/datasets/__main__.py,sha256=5NW2A3OgTimB4ptwYThivIRSeCrvabMuvnr8mmnVx0E,715
3
- anemoi/datasets/_version.py,sha256=Ywt_J-kUrkp4bt0vX46Ot5kDjsAA9dtf8IfOdhjGcXA,413
4
- anemoi/datasets/grids.py,sha256=xHZwE3pJs0wP05x9qCgMcTuBnBGoCU51YKx5JQ7Ukts,11398
3
+ anemoi/datasets/_version.py,sha256=y_fPpU6VK_LLaj-dweUMkuluSUpLZldJCnJxFDfcohM,413
4
+ anemoi/datasets/grids.py,sha256=qG4TDESkbS48AJr7Q5PKgAagkwrz4KpSktnNmn_zTsQ,11673
5
5
  anemoi/datasets/testing.py,sha256=7HGOz5_V9MbkHTDJ4KbklGRndBMrFfVrBBu6a9k0_qY,1825
6
6
  anemoi/datasets/commands/__init__.py,sha256=O5W3yHZywRoAqmRUioAr3zMCh0hGVV18wZYGvc00ioM,698
7
7
  anemoi/datasets/commands/cleanup.py,sha256=2rD34bHtfOCLwQh7yXa02IJmmOYMOma4YDj0PM-2-Jc,1456
8
8
  anemoi/datasets/commands/compare.py,sha256=8YOlFi9Ydw81qNx4kmI35gvoldUAjYae1enBhxqLrvQ,3256
9
9
  anemoi/datasets/commands/copy.py,sha256=2owwwcih6mzrmgxrKNmm1B9ngjxZ6q3ZVo3S7grrGWQ,11305
10
- anemoi/datasets/commands/create.py,sha256=SRHQdMPwBmbjfi2JDYmF3uC7R6dIrcrOOBs0aaVSQmQ,5505
10
+ anemoi/datasets/commands/create.py,sha256=Es8BV2d9iazAjiGWaXf5EUmjkGk6-whGHaOEYG34CBU,5567
11
11
  anemoi/datasets/commands/finalise-additions.py,sha256=ZCUa5CbScR_tEImcJe9AhhGryyrsq1bYhM-dtjaIw7M,1552
12
12
  anemoi/datasets/commands/finalise.py,sha256=glFj3lhPwf5niybx8u053zMItNjIxYebt3r6E6W2D9Y,1307
13
13
  anemoi/datasets/commands/init-additions.py,sha256=JFTPu5cGNsmojbkb5DRhKF0rSku0S_2O6wRf7EvjEnM,1540
@@ -20,7 +20,7 @@ anemoi/datasets/commands/publish.py,sha256=z1MV9_1BsEnw81Y_17fHkKGYe8_ZJo9eeQ1kG
20
20
  anemoi/datasets/commands/scan.py,sha256=mXzYEcYsncxC7ItyL_TlVRiWji6OFYfVxO5OMD9mbEI,3304
21
21
  anemoi/datasets/compute/__init__.py,sha256=hCW0QcLHJmE-C1r38P27_ZOvCLNewex5iQEtZqx2ckI,393
22
22
  anemoi/datasets/compute/recentre.py,sha256=tKs-YZLhqsMRBNEUF41hcuMmyvbRuFX07xJq-Cqg2_w,4954
23
- anemoi/datasets/create/__init__.py,sha256=ImonAvvz-HqoZMF4vczyWEV48tGiZZ8RfM01SsxJ6ew,36427
23
+ anemoi/datasets/create/__init__.py,sha256=0kGaWi3WA3rD-Jfps6HBa6v8J8CNTvXtoaXeT9DpfgU,36913
24
24
  anemoi/datasets/create/check.py,sha256=q205XxzR7UtBRI5qOANav_NAVqAERs0aLJ8oBL3VNc4,6153
25
25
  anemoi/datasets/create/chunks.py,sha256=c7ufk-EamAGqxOI4ScTFlBzdEiH6V1R0f0SPavtZ2Xw,2457
26
26
  anemoi/datasets/create/config.py,sha256=Tq9kJ-bKhYSTWCXNa8lZIJpO3RteZfCr5hQVM12IgD0,8892
@@ -49,13 +49,14 @@ anemoi/datasets/create/functions/filters/unrotate_winds.py,sha256=tDFXUSF2flD83W
49
49
  anemoi/datasets/create/functions/filters/uv_to_speeddir.py,sha256=niNuTSmyxLn4MGeNL1lowl5M0dH7har-flXy3ZtmKPM,1762
50
50
  anemoi/datasets/create/functions/filters/wz_to_w.py,sha256=SbTYE6rRjObR-sJEDYyc0-1Kw39zZOAheGMznD7Ic9A,2161
51
51
  anemoi/datasets/create/functions/sources/__init__.py,sha256=TMm8LerGY7--b0AMUqnz07ZGo-F7I9FF0DGlozcTtSg,1364
52
- anemoi/datasets/create/functions/sources/accumulations.py,sha256=xs3Ql3h_jfJDR0mzGIh54adVaHacHE3LQpBL5_8Rx8k,12373
52
+ anemoi/datasets/create/functions/sources/accumulations.py,sha256=lOICpg8T1sKn7n0X0EkMrNDFBYIqmHYSF_-_LYIEPaw,12527
53
53
  anemoi/datasets/create/functions/sources/constants.py,sha256=GaiUpJPYupiLWl8O9GEZ9KmlD88pH6dlBiUVrhNl_uA,918
54
+ anemoi/datasets/create/functions/sources/eccc_fstd.py,sha256=pcF-N9IarrXuoZ85lmKRbESr8QsSc2VWxUGKT9aNw_M,597
54
55
  anemoi/datasets/create/functions/sources/empty.py,sha256=YTpOJ3rcb_eS9CbnpwPWBR9r1APIAaG6a_N803YFZFE,500
55
56
  anemoi/datasets/create/functions/sources/forcings.py,sha256=p442lCOXm8TJFRlP0mgwZujveo9gCtdAGLS4KSIqYfk,661
56
57
  anemoi/datasets/create/functions/sources/grib.py,sha256=BSieYEnoG92-8lPlrK7CIaGX7qozpkixqHarucDZtLk,4543
57
58
  anemoi/datasets/create/functions/sources/hindcasts.py,sha256=AWtSW_VoeWIjwjojyAL8FskKMq9fTUfnQ1OI30_J2qA,1677
58
- anemoi/datasets/create/functions/sources/mars.py,sha256=_QDAhb1onZRBcH21jMdlhw8gp1taiQyt3bpkbQpGWRY,8736
59
+ anemoi/datasets/create/functions/sources/mars.py,sha256=AXz2q1XhvIEVtj0gJNWqcZNkyvXSL-8r6i93GhnmGn4,8890
59
60
  anemoi/datasets/create/functions/sources/netcdf.py,sha256=GZvd8-d9lQFQ6sJL1usJPtnVqRz2UWqJOX3Fup1CAcI,547
60
61
  anemoi/datasets/create/functions/sources/opendap.py,sha256=vkbk14-1PFwN9o1wlGROLoF3P-t9WtUVSum6aW_2JoM,545
61
62
  anemoi/datasets/create/functions/sources/recentre.py,sha256=cCA4TIdRp5r7PaGe7skOuwB1Np9-FcuRX1JXIpUSuyc,1825
@@ -86,11 +87,11 @@ anemoi/datasets/create/input/join.py,sha256=wQP1-vVg4as-R5i3pstgK6HmTJAY7WyWYhCE
86
87
  anemoi/datasets/create/input/misc.py,sha256=r7NC_QRYA8iiJJbSFgQnNuixymATK0CPZknGxgYcLOk,1975
87
88
  anemoi/datasets/create/input/pipe.py,sha256=KfPCtiqyfqkXbmC-2LTqHkCQ7bJY46XMvNDnp9QeHTQ,1344
88
89
  anemoi/datasets/create/input/repeated_dates.py,sha256=59EvJ_cQwA-p_42cmMFy3pBAAWV0xwPg4E3q2PIofcM,7461
89
- anemoi/datasets/create/input/result.py,sha256=-pcVcaaj3G_xcNKWWTgzVH5Ds5-ETWmErN0KeQGitAw,20013
90
+ anemoi/datasets/create/input/result.py,sha256=AW6BGDQkrL1XQLXt-h-3lzFOCrVgXjAm3SYk2ZlDfrE,20016
90
91
  anemoi/datasets/create/input/step.py,sha256=CoowF9mc3kepT8XQ2ObxO750rnQEkYNTviIHQ1m-4UA,2886
91
92
  anemoi/datasets/create/input/template.py,sha256=Vgi4wQ1aeswLbji0fIzshYhISmzdrt7b0BmgeJJjYGc,1859
92
93
  anemoi/datasets/create/input/trace.py,sha256=DYXMSnwKqOIx0XWZTKNJojWz4EqaFLknTh6ysxsW9uY,2198
93
- anemoi/datasets/create/statistics/__init__.py,sha256=iJ3mZ6eEI88wPXUKyOhNKqhakyHoceX9ICEKXVOriTo,12789
94
+ anemoi/datasets/create/statistics/__init__.py,sha256=Z3UXauDVYyfNjsBvfJGjK1unnxEkqNIfpjLCQCiLS2k,12994
94
95
  anemoi/datasets/create/statistics/summary.py,sha256=wmnz4fZkr6fomXgI8JlMutU8gakfrXTc5ixf3Np7gZA,3385
95
96
  anemoi/datasets/data/__init__.py,sha256=AW1-Ycj77pWQsZcDGsp0pgTS5rFW6XC4CzuUEIUPAIk,1558
96
97
  anemoi/datasets/data/complement.py,sha256=hTvA_zTGIHAvZYPv1npVpRpxPg8nXbNTEBAU8r33rlc,5105
@@ -107,7 +108,7 @@ anemoi/datasets/data/interpolate.py,sha256=D27lSH8yNhm0aoO0U3UoRbr3kni7OWXSu_X4j
107
108
  anemoi/datasets/data/join.py,sha256=IG9Bj4o4Z25cl5YGMqtl75UuSZCWIJwGIUB0fsfnkE8,5456
108
109
  anemoi/datasets/data/masked.py,sha256=eAVGVmQR7tWsd3xXYGXGyq28uRLwL50vOXWTNNdHxl0,4530
109
110
  anemoi/datasets/data/merge.py,sha256=dr0sX2ufm-qOgOAMV5oh8qQwPvSdYbU-mhux6u-cmQw,5547
110
- anemoi/datasets/data/misc.py,sha256=J1v84jHpRgDK0DUrNmII5oqt3jft8rSTve2GtxqTKa8,10310
111
+ anemoi/datasets/data/misc.py,sha256=lYRE-vfRIra9bhyG3-kdruoQvxyYWaE9EN9qTFoM7bA,11074
111
112
  anemoi/datasets/data/missing.py,sha256=SWEjiC1usBjZtlKMr73uKetnoQZoflVQVGqLP2gJR7A,7131
112
113
  anemoi/datasets/data/rescale.py,sha256=wMU7tFZebnOqJJxaIGOqNqhpNKGsPNZMC1YxuiHvri4,4112
113
114
  anemoi/datasets/data/select.py,sha256=XW_ohlhrF8FLe13pdM3DRZDxbHxntcsO0F56GRqZQY0,4293
@@ -120,9 +121,9 @@ anemoi/datasets/dates/__init__.py,sha256=wX2FvlmRfHV5HDmllIxwfrC1LuRlb7i6SguLLas
120
121
  anemoi/datasets/dates/groups.py,sha256=i7x8z0kv6E8qUfm1tMZR1aaOqNwQzEkV-VWpOvHjoX4,5390
121
122
  anemoi/datasets/utils/__init__.py,sha256=hCW0QcLHJmE-C1r38P27_ZOvCLNewex5iQEtZqx2ckI,393
122
123
  anemoi/datasets/utils/fields.py,sha256=l7xKOiRLgk9Eewykqu7xZP9xOajG2dx2CiDlGvBVejU,1411
123
- anemoi_datasets-0.5.13.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
124
- anemoi_datasets-0.5.13.dist-info/METADATA,sha256=ArEcpcTEQ_Tt270GtB5GEeDX_1SJMKM8P4NWMdSve8M,15598
125
- anemoi_datasets-0.5.13.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
126
- anemoi_datasets-0.5.13.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
127
- anemoi_datasets-0.5.13.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
128
- anemoi_datasets-0.5.13.dist-info/RECORD,,
124
+ anemoi_datasets-0.5.14.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
125
+ anemoi_datasets-0.5.14.dist-info/METADATA,sha256=FCUiHOFlg1S8dOZasmQkDBLKpeoEAZrXP4L8t9oFEuA,15598
126
+ anemoi_datasets-0.5.14.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
127
+ anemoi_datasets-0.5.14.dist-info/entry_points.txt,sha256=yR-o-4uiPEA_GLBL81SkMYnUoxq3CAV3hHulQiRtGG0,66
128
+ anemoi_datasets-0.5.14.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
129
+ anemoi_datasets-0.5.14.dist-info/RECORD,,