anemoi-utils 0.3.5__tar.gz → 0.3.6__tar.gz

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.

Files changed (51) hide show
  1. {anemoi_utils-0.3.5/src/anemoi_utils.egg-info → anemoi_utils-0.3.6}/PKG-INFO +1 -1
  2. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/_version.py +2 -2
  3. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/config.py +42 -0
  4. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6/src/anemoi_utils.egg-info}/PKG-INFO +1 -1
  5. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/tests/test_utils.py +3 -1
  6. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/.github/workflows/python-publish.yml +0 -0
  7. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/.gitignore +0 -0
  8. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/.pre-commit-config.yaml +0 -0
  9. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/.readthedocs.yaml +0 -0
  10. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/LICENSE +0 -0
  11. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/README.md +0 -0
  12. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/Makefile +0 -0
  13. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/_static/logo.png +0 -0
  14. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/_static/style.css +0 -0
  15. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/_templates/.gitkeep +0 -0
  16. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/conf.py +0 -0
  17. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/index.rst +0 -0
  18. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/installing.rst +0 -0
  19. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/checkpoints.rst +0 -0
  20. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/config.rst +0 -0
  21. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/dates.rst +0 -0
  22. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/grib.rst +0 -0
  23. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/humanize.rst +0 -0
  24. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/provenance.rst +0 -0
  25. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/s3.rst +0 -0
  26. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/modules/text.rst +0 -0
  27. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/docs/requirements.txt +0 -0
  28. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/pyproject.toml +0 -0
  29. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/setup.cfg +0 -0
  30. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/__init__.py +0 -0
  31. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/__main__.py +0 -0
  32. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/caching.py +0 -0
  33. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/checkpoints.py +0 -0
  34. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/cli.py +0 -0
  35. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/commands/__init__.py +0 -0
  36. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/commands/checkpoint.py +0 -0
  37. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/dates.py +0 -0
  38. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/grib.py +0 -0
  39. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/humanize.py +0 -0
  40. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/mars/__init__.py +0 -0
  41. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/mars/mars.yaml +0 -0
  42. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/provenance.py +0 -0
  43. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/s3.py +0 -0
  44. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/text.py +0 -0
  45. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi/utils/timer.py +0 -0
  46. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi_utils.egg-info/SOURCES.txt +0 -0
  47. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi_utils.egg-info/dependency_links.txt +0 -0
  48. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi_utils.egg-info/entry_points.txt +0 -0
  49. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi_utils.egg-info/requires.txt +0 -0
  50. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/src/anemoi_utils.egg-info/top_level.txt +0 -0
  51. {anemoi_utils-0.3.5 → anemoi_utils-0.3.6}/tests/test_dates.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-utils
3
- Version: 0.3.5
3
+ Version: 0.3.6
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
@@ -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.5'
16
- __version_tuple__ = version_tuple = (0, 3, 5)
15
+ __version__ = version = '0.3.6'
16
+ __version_tuple__ = version_tuple = (0, 3, 6)
@@ -6,10 +6,13 @@
6
6
  # nor does it submit to any jurisdiction.
7
7
 
8
8
 
9
+ import json
9
10
  import logging
10
11
  import os
11
12
  import threading
12
13
 
14
+ import yaml
15
+
13
16
  try:
14
17
  import tomllib # Only available since 3.11
15
18
  except ImportError:
@@ -41,10 +44,49 @@ class DotDict(dict):
41
44
 
42
45
  def __init__(self, *args, **kwargs):
43
46
  super().__init__(*args, **kwargs)
47
+
44
48
  for k, v in self.items():
45
49
  if isinstance(v, dict):
46
50
  self[k] = DotDict(v)
47
51
 
52
+ if isinstance(v, list):
53
+ self[k] = [DotDict(i) if isinstance(i, dict) else i for i in v]
54
+
55
+ if isinstance(v, tuple):
56
+ self[k] = [DotDict(i) if isinstance(i, dict) else i for i in v]
57
+
58
+ @classmethod
59
+ def from_file(cls, path: str):
60
+ _, ext = os.path.splitext(path)
61
+ if ext == ".yaml" or ext == ".yml":
62
+ return cls.from_yaml_file(path)
63
+ elif ext == ".json":
64
+ return cls.from_json_file(path)
65
+ elif ext == ".toml":
66
+ return cls.from_toml_file(path)
67
+ else:
68
+ raise ValueError(f"Unknown file extension {ext}")
69
+
70
+ @classmethod
71
+ def from_yaml_file(cls, path: str):
72
+ with open(path, "r") as file:
73
+ data = yaml.safe_load(file)
74
+
75
+ return cls(data)
76
+
77
+ @classmethod
78
+ def from_json_file(cls, path: str):
79
+ with open(path, "r") as file:
80
+ data = json.load(file)
81
+
82
+ return cls(data)
83
+
84
+ @classmethod
85
+ def from_toml_file(cls, path: str):
86
+ with open(path, "r") as file:
87
+ data = tomllib.load(file)
88
+ return cls(data)
89
+
48
90
  def __getattr__(self, attr):
49
91
  try:
50
92
  return self[attr]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: anemoi-utils
3
- Version: 0.3.5
3
+ Version: 0.3.6
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
@@ -12,7 +12,7 @@ from anemoi.utils.grib import shortname_to_paramid
12
12
 
13
13
 
14
14
  def test_dotdict():
15
- d = DotDict(a=1, b=2, c=dict(d=3, e=4))
15
+ d = DotDict(a=1, b=2, c=dict(d=3, e=4), e=[1, dict(a=3), 3])
16
16
  assert d.a == 1
17
17
  assert d.b == 2
18
18
  assert d.c.d == 3
@@ -27,6 +27,8 @@ def test_dotdict():
27
27
  d.d.x = 6
28
28
  assert d.d.x == 6
29
29
 
30
+ assert d.e[1].a == 3
31
+
30
32
 
31
33
  def test_grib():
32
34
  assert shortname_to_paramid("2t") == 167
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes