anemoi-utils 0.3.18__py3-none-any.whl → 0.4.1__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.

Potentially problematic release.


This version of anemoi-utils might be problematic. Click here for more details.

anemoi/utils/__init__.py CHANGED
@@ -6,4 +6,4 @@
6
6
  # nor does it submit to any jurisdiction.
7
7
 
8
8
 
9
- from ._version import __version__
9
+ from ._version import __version__ as __version__
anemoi/utils/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.3.18'
16
- __version_tuple__ = version_tuple = (0, 3, 18)
15
+ __version__ = version = '0.4.1'
16
+ __version_tuple__ = version_tuple = (0, 4, 1)
anemoi/utils/cli.py CHANGED
@@ -60,6 +60,7 @@ class Failed(Command):
60
60
  def __init__(self, name, error):
61
61
  self.name = name
62
62
  self.error = error
63
+ traceback.print_tb(error.__traceback__)
63
64
 
64
65
  def add_arguments(self, command_parser):
65
66
  command_parser.add_argument("x", nargs=argparse.REMAINDER)
anemoi/utils/config.py CHANGED
@@ -353,3 +353,22 @@ def check_config_mode(name="settings.toml", secrets_name=None, secrets=None) ->
353
353
  raise SystemError(f"Configuration file {conf} is not secure.\n" f"Please run `chmod 600 {conf}`.")
354
354
 
355
355
  CHECKED[name] = True
356
+
357
+
358
+ def find(metadata, what, result=None):
359
+ if result is None:
360
+ result = []
361
+
362
+ if isinstance(metadata, list):
363
+ for i in metadata:
364
+ find(i, what, result)
365
+ return result
366
+
367
+ if isinstance(metadata, dict):
368
+ if what in metadata:
369
+ result.append(metadata[what])
370
+
371
+ for k, v in metadata.items():
372
+ find(v, what, result)
373
+
374
+ return result
anemoi/utils/humanize.py CHANGED
@@ -97,7 +97,7 @@ PERIODS = (
97
97
 
98
98
 
99
99
  def _plural(count):
100
- if count > 1:
100
+ if count != 1:
101
101
  return "s"
102
102
  else:
103
103
  return ""
@@ -145,11 +145,15 @@ def _module_versions(full):
145
145
 
146
146
 
147
147
  @cache
148
- def package_distributions():
148
+ def package_distributions() -> dict[str, list[str]]:
149
149
  # Takes a significant amount of time to run
150
150
  # so cache the result
151
151
  from importlib import metadata
152
152
 
153
+ # For python 3.9 support
154
+ if not hasattr(metadata, "packages_distributions"):
155
+ import importlib_metadata as metadata
156
+
153
157
  return metadata.packages_distributions()
154
158
 
155
159
 
anemoi/utils/text.py CHANGED
@@ -173,6 +173,12 @@ def green(text):
173
173
  return colored(text, "green")
174
174
 
175
175
 
176
+ def blue(text):
177
+ from termcolor import colored
178
+
179
+ return colored(text, "blue")
180
+
181
+
176
182
  class Tree:
177
183
  """Tree data structure."""
178
184
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-utils
3
- Version: 0.3.18
3
+ Version: 0.4.1
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
@@ -224,9 +224,11 @@ Classifier: Programming Language :: Python :: Implementation :: PyPy
224
224
  Requires-Python: >=3.9
225
225
  License-File: LICENSE
226
226
  Requires-Dist: aniso8601
227
+ Requires-Dist: python-dateutil
227
228
  Requires-Dist: pyyaml
228
- Requires-Dist: tomli
229
229
  Requires-Dist: tqdm
230
+ Requires-Dist: importlib-metadata ; python_version < "3.10"
231
+ Requires-Dist: tomli ; python_version < "3.11"
230
232
  Provides-Extra: all
231
233
  Requires-Dist: anemoi-utils[grib,provenance,text] ; extra == 'all'
232
234
  Provides-Extra: dev
@@ -1,27 +1,27 @@
1
- anemoi/utils/__init__.py,sha256=zZZpbKIoGWwdCOuo6YSruLR7C0GzvzI1Wzhyqaa0K7M,456
1
+ anemoi/utils/__init__.py,sha256=cXvnZAd--_pmNMnaRQDb7Lqf_tVqdq0QXDC674EKxks,471
2
2
  anemoi/utils/__main__.py,sha256=cLA2PidDTOUHaDGzd0_E5iioKYNe-PSTv567Y2fuwQk,723
3
- anemoi/utils/_version.py,sha256=QAzjzlQ8v3ZqOKXdT0jblmkqebjcDj2MPKGBvc_ei_4,413
3
+ anemoi/utils/_version.py,sha256=H6xAc33bJwmO0oYU-O7_wWInmGAifNGi6CO6khT0G1g,411
4
4
  anemoi/utils/caching.py,sha256=bCOjP1jcDbwi7BID3XaR9BbkD1k3UipkP74NbgJuEFA,1974
5
5
  anemoi/utils/checkpoints.py,sha256=qWtqkQvMDlPIcfqz_GmOyUf0mmHZ6QEInpvgSJYIQjY,5275
6
- anemoi/utils/cli.py,sha256=9TrBXkDjBsos2d0z6wdFDRZIjft3HWGutSgAFi0zCK4,3712
7
- anemoi/utils/config.py,sha256=fHM6kENZhdD350WaEDekSdH_Fs0diovj-nPuv_a7bko,9408
6
+ anemoi/utils/cli.py,sha256=Or4pUnuFqpSTlkTvh_VqV5moP2aBHKYINomPkUJFS68,3760
7
+ anemoi/utils/config.py,sha256=nOYVUmajh-9nlzX-fCCPjVCUDjjaL3zZ8SWr2gP8qNs,9810
8
8
  anemoi/utils/dates.py,sha256=dgGbTqpGOpYDGgWfXL_69HutXTCHDFI2DhvG-9I9WQI,12341
9
9
  anemoi/utils/grib.py,sha256=mrk1drJm2jaPYERQX45QfX2MP4eUqRv0J-Y8IRSRTRE,3073
10
10
  anemoi/utils/hindcasts.py,sha256=X8k-81ltmkTDHdviY0SJgvMg7XDu07xoc5ALlUxyPoo,1453
11
- anemoi/utils/humanize.py,sha256=-xQraQWMLwNaLQAWfPi4K05qieQLgkiyYmV6bfhr10U,16611
12
- anemoi/utils/provenance.py,sha256=N0JYslg7foDgkQFGDytkYZhiDMELvJHzGYynetF0rW8,10726
11
+ anemoi/utils/humanize.py,sha256=IxPpplDPSaFFRbAsy84fmit0rxRuJX5XpPhZbBHPB00,16612
12
+ anemoi/utils/provenance.py,sha256=iSq4Y5eoWK_SNBMpMfInOB3shQlMZqE8iMBp-LgKtJk,10882
13
13
  anemoi/utils/s3.py,sha256=MuY-PrHpt6iKM2RK7v74YoCdqvVJ8UjBDJh0wxUR9Co,18720
14
14
  anemoi/utils/sanitise.py,sha256=VKIUiwm0EHPdkFUR6FkAxe94933yQx2obQtN6YROH5M,2862
15
15
  anemoi/utils/sanitize.py,sha256=6HJrfCMnrmH5lfxydcBc-AjxkmkFXdCc1wotzm9NBCw,488
16
- anemoi/utils/text.py,sha256=WvxkRlPpmK7HLOpWZmyqPQG29GMF8IFaCJp7frfIWNI,10436
16
+ anemoi/utils/text.py,sha256=2D2ZbAdoivCgIjktpLoxb1D62GfyZ8P5KwVS3KWixR8,10522
17
17
  anemoi/utils/timer.py,sha256=EQcucuwUaGeSpt2S1APJlwSOu6kC47MK9f4h-r8c_AY,990
18
18
  anemoi/utils/commands/__init__.py,sha256=qAybFZPBBQs0dyx7dZ3X5JsLpE90pwrqt1vSV7cqEIw,706
19
19
  anemoi/utils/commands/config.py,sha256=KEffXZh0ZQfn8t6LXresfd94kDY0gEyulx9Wto5ttW0,824
20
20
  anemoi/utils/mars/__init__.py,sha256=RAeY8gJ7ZvsPlcIvrQ4fy9xVHs3SphTAPw_XJDtNIKo,1750
21
21
  anemoi/utils/mars/mars.yaml,sha256=R0dujp75lLA4wCWhPeOQnzJ45WZAYLT8gpx509cBFlc,66
22
- anemoi_utils-0.3.18.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
23
- anemoi_utils-0.3.18.dist-info/METADATA,sha256=uhfZ-zuzer9SQNNPAvvs-KaqRomfEiJYlXVX1VKdbhM,15055
24
- anemoi_utils-0.3.18.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
25
- anemoi_utils-0.3.18.dist-info/entry_points.txt,sha256=LENOkn88xzFQo-V59AKoA_F_cfYQTJYtrNTtf37YgHY,60
26
- anemoi_utils-0.3.18.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
27
- anemoi_utils-0.3.18.dist-info/RECORD,,
22
+ anemoi_utils-0.4.1.dist-info/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
23
+ anemoi_utils-0.4.1.dist-info/METADATA,sha256=PoA_pFFYtvbx-ygG4g4UumwRLJ8kQx32xIadEE_6iSg,15171
24
+ anemoi_utils-0.4.1.dist-info/WHEEL,sha256=OVMc5UfuAQiSplgO0_WdW7vXVGAt9Hdd6qtN4HotdyA,91
25
+ anemoi_utils-0.4.1.dist-info/entry_points.txt,sha256=LENOkn88xzFQo-V59AKoA_F_cfYQTJYtrNTtf37YgHY,60
26
+ anemoi_utils-0.4.1.dist-info/top_level.txt,sha256=DYn8VPs-fNwr7fNH9XIBqeXIwiYYd2E2k5-dUFFqUz0,7
27
+ anemoi_utils-0.4.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.1.0)
2
+ Generator: setuptools (75.2.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5