experimaestro 1.8.4__py3-none-any.whl → 1.8.6__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 experimaestro might be problematic. Click here for more details.

@@ -73,7 +73,7 @@ class SerializationContext:
73
73
 
74
74
 
75
75
  class SerializedPathLoader(Protocol):
76
- def __call__(path: Union[Path, str, SerializedPath]) -> Path:
76
+ def __call__(self, path: Union[Path, str, SerializedPath]) -> Path:
77
77
  """Get a filesystem path from a relative path
78
78
 
79
79
  :param path: The relative path
@@ -803,6 +803,9 @@ class ConfigInformation:
803
803
  def __collect_objects__(value, objects: List[Dict], context: SerializationContext):
804
804
  """Serialize all needed configuration objects, looking at sub
805
805
  configurations if necessary"""
806
+ if value is None:
807
+ return
808
+
806
809
  if isinstance(value, Config):
807
810
  value.__xpm__.__get_objects__(objects, context)
808
811
  elif isinstance(value, (list, tuple)):
@@ -129,6 +129,9 @@ class ConfigWalk:
129
129
  self.visited[xid] = processed
130
130
  return processed
131
131
 
132
+ if x is None:
133
+ return None
134
+
132
135
  if isinstance(x, list):
133
136
  result = []
134
137
  for i, sv in enumerate(x):
@@ -66,7 +66,8 @@ def save(obj: Any, save_directory: Optional[Path]):
66
66
  def get_data_loader(path: Union[str, Path, SerializedPathLoader]):
67
67
  if path is None:
68
68
 
69
- def data_loader():
69
+ def data_loader(_: Union[str, Path, SerializedPathLoader]):
70
+ # Just raise an exception
70
71
  raise RuntimeError("No serialization path was given")
71
72
 
72
73
  return data_loader
@@ -170,7 +171,7 @@ def deserialize(
170
171
  with data_loader("definition.json").open("rt") as fh:
171
172
  content = json.load(fh)
172
173
 
173
- object, init_tasks = from_state_dict(content, as_instance=as_instance)
174
+ object, init_tasks = from_state_dict(content, data_loader, as_instance=as_instance)
174
175
 
175
176
  if as_instance:
176
177
  for init_task in init_tasks:
@@ -1,3 +1,4 @@
1
+ from typing import Optional
1
2
  from experimaestro import (
2
3
  Config,
3
4
  Task,
@@ -78,8 +79,8 @@ class Object2(Config):
78
79
  def test_serializers_serialization():
79
80
  context = SerializationContext(save_directory=None)
80
81
 
81
- obj1 = Object1()
82
- obj2 = Object2(object=obj1)
82
+ obj1 = Object1.C()
83
+ obj2 = Object2.C(object=obj1)
83
84
 
84
85
  data = state_dict(context, [obj1, obj2])
85
86
 
@@ -92,3 +93,21 @@ def test_serializers_serialization():
92
93
  assert isinstance(obj1, Object1) and not isinstance(obj1, ConfigMixin)
93
94
  assert isinstance(obj2, Object2)
94
95
  assert obj2.object is obj1
96
+
97
+
98
+ class SubConfig(Config):
99
+ pass
100
+
101
+
102
+ class MultiParamObject(Config):
103
+ opt_a: Param[Optional[int]]
104
+
105
+ x: Param[dict[str, Optional[SubConfig]]]
106
+
107
+
108
+ def test_serializers_types():
109
+ context = SerializationContext(save_directory=None)
110
+
111
+ config = MultiParamObject.C(x={"a": None})
112
+ config.__xpm__.seal(context)
113
+ state_dict(context, config)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: experimaestro
3
- Version: 1.8.4
3
+ Version: 1.8.6
4
4
  Summary: "Experimaestro is a computer science experiment manager"
5
5
  License: GPL-3
6
6
  Keywords: experiment manager
@@ -14,14 +14,14 @@ experimaestro/connectors/ssh.py,sha256=5giqvv1y0QQKF-GI0IFUzI_Z5H8Bj9EuL_Szpvk89
14
14
  experimaestro/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
15
  experimaestro/core/arguments.py,sha256=7hpkU1f8LJ7JL8kQaD514h9CFSfMotYLsVfMsMmdpWk,6487
16
16
  experimaestro/core/callbacks.py,sha256=59JfeUgWcCCdIQ3pvh-xNnoRp9BX8f4iOAkgm16wBzE,1660
17
- experimaestro/core/context.py,sha256=41jvgudz4sgMDWrqOhPbgFRJHa3klWKvS3l_L661er0,2600
17
+ experimaestro/core/context.py,sha256=1tLmX7WcgEKSbGw77vfziTzS8KNsoZJ02JBWMBCqqOk,2606
18
18
  experimaestro/core/identifier.py,sha256=JadBAdW2fOIgoTyMRtKI_RY9SXQP2B1vq1rUcV465Hs,10214
19
19
  experimaestro/core/objects/__init__.py,sha256=ucJY5e17QQ1Kc-GYXeL7g8GFj8rP0XB4g2vrl32uhxY,721
20
- experimaestro/core/objects/config.py,sha256=fFg8PXTVDxDJk2A1xvckKGsf2bL6kUdkXmqEAyBVjuI,56943
20
+ experimaestro/core/objects/config.py,sha256=qOUgCmX1NwhRhpTVxgr2sSAqBCMYloUXb5f-NiXgV8Q,56989
21
21
  experimaestro/core/objects/config_utils.py,sha256=ZLECGkeIWdzunm8vwWsQhvcSgV1e064BgXbLiZnxSEM,1288
22
- experimaestro/core/objects/config_walk.py,sha256=FOSsyJlntglWL8DshxwEbQPmNZ3ZE9r5yOvTKkmRTHw,4198
22
+ experimaestro/core/objects/config_walk.py,sha256=gyDMrVPbBMChn7r4em_gQXuqnxASO_JVauEbnJNO8II,4245
23
23
  experimaestro/core/objects.pyi,sha256=xvlsRj4u1xsJxbevJl5Ner_HwmxR8x1JlAeIVDJzuy0,6498
24
- experimaestro/core/serialization.py,sha256=TLMTfU627bs9_1gyY2O5tX_xy1GhePIzleXwi27ffz0,5683
24
+ experimaestro/core/serialization.py,sha256=CSPEwOzlDsgAz6V2og-TgyU0RXDtzt_nXaoXFZleDZE,5775
25
25
  experimaestro/core/serializers.py,sha256=R_CAMyjjfU1oi-eHU6VlEUixJpFayGqEPaYu7VsD9xA,1197
26
26
  experimaestro/core/types.py,sha256=AH3ni1nIKGTeRmc7ECL6GH_dYqiuZp_mAN4E-JqdqnY,21741
27
27
  experimaestro/core/utils.py,sha256=JfC3qGUS9b6FUHc2VxIYUI9ysNpXSQ1LjOBkjfZ8n7o,495
@@ -127,7 +127,7 @@ experimaestro/tests/test_objects.py,sha256=zycxjvWuJAbPR8-q2T3zuBY9xfmlhf1YvtOcr
127
127
  experimaestro/tests/test_outputs.py,sha256=DYzPk5TT_yLumy8SsQbl-S66ivVxJ-ERFrZ68KQZ4KU,781
128
128
  experimaestro/tests/test_param.py,sha256=7BltCUm9uhtEupJZ-QSaj7MxuXoUl73NjE8NfzJD5BA,7290
129
129
  experimaestro/tests/test_progress.py,sha256=wtIGQzlV3ldd_wMng11LinVESchW-1J954mCJNlG28E,7580
130
- experimaestro/tests/test_serializers.py,sha256=p3WdDsifizn5FDq_jIYTm0Z2AWf62P4B6nnzcVgHoYA,2341
130
+ experimaestro/tests/test_serializers.py,sha256=u3A5JbusN8aW6x6reUIwpU1Fs-avnzTRU7WuTear9Qs,2722
131
131
  experimaestro/tests/test_snippets.py,sha256=rojnyDjtmAMnSuDUj6Bv9XEgdP8oQf2nVc132JF8vsM,3081
132
132
  experimaestro/tests/test_ssh.py,sha256=KS1NWltiXrJBSStY9d4mwrexeqgNGWmhxuAU_WLQDAU,1449
133
133
  experimaestro/tests/test_tags.py,sha256=v_8_7LuEHfY_gfa0JRCUkmgJh8h6RMya_nd5NcPAJPw,2852
@@ -150,8 +150,8 @@ experimaestro/utils/jupyter.py,sha256=JcEo2yQK7x3Cr1tNl5FqGMZOICxCv9DwMvL5xsWdQP
150
150
  experimaestro/utils/resources.py,sha256=j-nvsTFwmgENMoVGOD2Ap-UD3WU85WkI0IgeSszMCX4,1328
151
151
  experimaestro/utils/settings.py,sha256=jpFMqF0DLL4_P1xGal0zVR5cOrdD8O0Y2IOYvnRgN3k,793
152
152
  experimaestro/xpmutils.py,sha256=S21eMbDYsHfvmZ1HmKpq5Pz5O-1HnCLYxKbyTBbASyQ,638
153
- experimaestro-1.8.4.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
154
- experimaestro-1.8.4.dist-info/METADATA,sha256=a7FkYWKM7_g5gpZgrTWxSLy2x9OyhgPKsuEPIPAdnp8,6170
155
- experimaestro-1.8.4.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
156
- experimaestro-1.8.4.dist-info/entry_points.txt,sha256=TppTNiz5qm5xm1fhAcdLKdCLMrlL-eQggtCrCI00D9c,446
157
- experimaestro-1.8.4.dist-info/RECORD,,
153
+ experimaestro-1.8.6.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
154
+ experimaestro-1.8.6.dist-info/METADATA,sha256=sax7u9-ePHwmRxVtxWYby9INQTgGwKaGxXu4yJ-m5iw,6170
155
+ experimaestro-1.8.6.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
156
+ experimaestro-1.8.6.dist-info/entry_points.txt,sha256=TppTNiz5qm5xm1fhAcdLKdCLMrlL-eQggtCrCI00D9c,446
157
+ experimaestro-1.8.6.dist-info/RECORD,,