experimaestro 1.11.1__py3-none-any.whl → 2.0.0a8__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.

Files changed (52) hide show
  1. experimaestro/annotations.py +1 -1
  2. experimaestro/cli/__init__.py +10 -11
  3. experimaestro/cli/progress.py +269 -0
  4. experimaestro/connectors/__init__.py +2 -2
  5. experimaestro/core/arguments.py +20 -1
  6. experimaestro/core/identifier.py +21 -7
  7. experimaestro/core/objects/config.py +174 -274
  8. experimaestro/core/objects/config_walk.py +4 -6
  9. experimaestro/core/objects.pyi +2 -6
  10. experimaestro/core/serializers.py +1 -8
  11. experimaestro/core/types.py +35 -57
  12. experimaestro/launcherfinder/registry.py +3 -3
  13. experimaestro/mkdocs/base.py +6 -8
  14. experimaestro/notifications.py +12 -3
  15. experimaestro/progress.py +406 -0
  16. experimaestro/scheduler/__init__.py +18 -1
  17. experimaestro/scheduler/base.py +87 -906
  18. experimaestro/scheduler/experiment.py +387 -0
  19. experimaestro/scheduler/jobs.py +475 -0
  20. experimaestro/scheduler/signal_handler.py +32 -0
  21. experimaestro/scheduler/state.py +1 -1
  22. experimaestro/server/__init__.py +36 -5
  23. experimaestro/settings.py +4 -2
  24. experimaestro/tests/launchers/common.py +2 -2
  25. experimaestro/tests/restart.py +1 -1
  26. experimaestro/tests/tasks/all.py +7 -0
  27. experimaestro/tests/test_checkers.py +2 -2
  28. experimaestro/tests/test_dependencies.py +11 -17
  29. experimaestro/tests/test_experiment.py +3 -3
  30. experimaestro/tests/test_file_progress.py +425 -0
  31. experimaestro/tests/test_file_progress_integration.py +477 -0
  32. experimaestro/tests/test_generators.py +93 -0
  33. experimaestro/tests/test_identifier.py +155 -135
  34. experimaestro/tests/test_instance.py +13 -18
  35. experimaestro/tests/test_objects.py +9 -32
  36. experimaestro/tests/test_outputs.py +6 -6
  37. experimaestro/tests/test_param.py +14 -14
  38. experimaestro/tests/test_progress.py +4 -4
  39. experimaestro/tests/test_serializers.py +0 -59
  40. experimaestro/tests/test_tags.py +15 -15
  41. experimaestro/tests/test_tasks.py +42 -51
  42. experimaestro/tests/test_tokens.py +8 -6
  43. experimaestro/tests/test_types.py +10 -10
  44. experimaestro/tests/test_validation.py +19 -19
  45. experimaestro/tests/token_reschedule.py +1 -1
  46. experimaestro/tools/diff.py +8 -1
  47. experimaestro/typingutils.py +11 -2
  48. {experimaestro-1.11.1.dist-info → experimaestro-2.0.0a8.dist-info}/METADATA +3 -2
  49. {experimaestro-1.11.1.dist-info → experimaestro-2.0.0a8.dist-info}/RECORD +52 -44
  50. {experimaestro-1.11.1.dist-info → experimaestro-2.0.0a8.dist-info}/WHEEL +1 -1
  51. {experimaestro-1.11.1.dist-info → experimaestro-2.0.0a8.dist-info}/entry_points.txt +0 -0
  52. {experimaestro-1.11.1.dist-info → experimaestro-2.0.0a8.dist-info/licenses}/LICENSE +0 -0
@@ -26,17 +26,17 @@ def test_multiple_inheritance():
26
26
 
27
27
  for C in (C1, C2):
28
28
  logging.info("Testing %s", C)
29
- ctype = C.__xpmtype__
29
+ ctype = C.__getxpmtype__()
30
30
  assert issubclass(C, A)
31
31
  assert issubclass(C, B)
32
32
  assert issubclass(C, B1)
33
33
 
34
- assert ctype.objecttype == C.__xpmtype__.objecttype
34
+ assert ctype.value_type == C.__getxpmtype__().value_type
35
35
 
36
- assert issubclass(C.__xpmtype__.objecttype, B1.__xpmtype__.basetype)
37
- assert issubclass(C.__xpmtype__.objecttype, B.__xpmtype__.basetype)
38
- assert issubclass(C.__xpmtype__.objecttype, A.__xpmtype__.basetype)
39
- assert not issubclass(C.__xpmtype__.objecttype, ConfigMixin)
36
+ assert issubclass(C.__getxpmtype__().value_type, B1.__getxpmtype__().value_type)
37
+ assert issubclass(C.__getxpmtype__().value_type, B.__getxpmtype__().value_type)
38
+ assert issubclass(C.__getxpmtype__().value_type, A.__getxpmtype__().value_type)
39
+ assert not issubclass(C.__getxpmtype__().value_type, ConfigMixin)
40
40
 
41
41
 
42
42
  def test_missing_hierarchy():
@@ -49,7 +49,7 @@ def test_missing_hierarchy():
49
49
  class B(A1):
50
50
  pass
51
51
 
52
- B.__xpmtype__
52
+ B.__getxpmtype__()
53
53
 
54
54
  assert issubclass(B, A)
55
55
  assert issubclass(B, A1)
@@ -59,7 +59,7 @@ def test_types_union():
59
59
  class A(Config):
60
60
  x: Param[Union[int, str]]
61
61
 
62
- A(x=1)
63
- A(x="hello")
62
+ A.C(x=1)
63
+ A.C(x="hello")
64
64
  with pytest.raises(ValueError):
65
- A(x=[])
65
+ A.C(x=[])
@@ -36,22 +36,22 @@ class C(Config):
36
36
 
37
37
 
38
38
  def test_validation_simple():
39
- expect_validate(A(value=1))
39
+ expect_validate(A.C(value=1))
40
40
 
41
41
 
42
42
  def test_validation_missing():
43
- expect_notvalidate(A())
43
+ expect_notvalidate(A.C())
44
44
 
45
45
 
46
46
  def test_validation_simple_nested():
47
- b = B()
48
- b.a = A(value=1)
47
+ b = B.C()
48
+ b.a = A.C(value=1)
49
49
  expect_validate(b)
50
50
 
51
51
 
52
52
  def test_validation_missing_nested():
53
- b = B()
54
- b.a = A()
53
+ b = B.C()
54
+ b.a = A.C()
55
55
  expect_notvalidate(b)
56
56
 
57
57
 
@@ -68,11 +68,11 @@ def test_validation_type():
68
68
  __xpmid__ = valns.type.c
69
69
 
70
70
  with pytest.raises(ValueError):
71
- C(a=B())
71
+ C.C(a=B.C())
72
72
 
73
73
  with pytest.raises(ValueError):
74
- c = C()
75
- c.a = B()
74
+ c = C.C()
75
+ c.a = B.C()
76
76
 
77
77
 
78
78
  def test_validation_subtype():
@@ -86,7 +86,7 @@ def test_validation_subtype():
86
86
  __xpmid__ = valns.subtype.b
87
87
  a: Param[A]
88
88
 
89
- expect_validate(B(a=A1()))
89
+ expect_validate(B.C(a=A1.C()))
90
90
 
91
91
 
92
92
  def test_validation_path_generator():
@@ -96,7 +96,7 @@ def test_validation_path_generator():
96
96
  __xpmid__ = valns.path.a
97
97
  value: Meta[Path] = field(default_factory=PathGenerator("file.txt"))
98
98
 
99
- a = A()
99
+ a = A.C()
100
100
  a.__xpm__.validate()
101
101
  with TemporaryExperiment("constant") as xp:
102
102
  jobcontext = Job(a)
@@ -116,7 +116,7 @@ def test_validation_constant():
116
116
  __xpmid__ = valns.constant.a
117
117
  value: Constant[int] = 1
118
118
 
119
- a = A()
119
+ a = A.C()
120
120
  a.__xpm__.validate()
121
121
  with TemporaryExperiment("constant"):
122
122
  joba = Job(a)
@@ -133,7 +133,7 @@ class Child(Parent):
133
133
 
134
134
 
135
135
  def test_validation_child():
136
- expect_validate(Child(x=1))
136
+ expect_validate(Child.C(x=1))
137
137
 
138
138
 
139
139
  # --- Path argument checks
@@ -144,7 +144,7 @@ class PathParent(Config):
144
144
 
145
145
 
146
146
  def test_validation_path_option():
147
- c = PathParent()
147
+ c = PathParent.C()
148
148
  expect_validate(c)
149
149
 
150
150
 
@@ -157,7 +157,7 @@ def test_validation_seal():
157
157
  class A(Config):
158
158
  a: Param[int]
159
159
 
160
- a = A(a=2)
160
+ a = A.C(a=2)
161
161
  a.__xpm__.seal(EmptyContext())
162
162
 
163
163
  with pytest.raises(AttributeError):
@@ -174,10 +174,10 @@ def test_validation_validation_enum():
174
174
  class EnumConfig(Config):
175
175
  a: Param[EnumParam]
176
176
 
177
- expect_validate(EnumConfig(a=EnumParam.FIRST))
177
+ expect_validate(EnumConfig.C(a=EnumParam.FIRST))
178
178
 
179
179
  try:
180
- EnumConfig(a=1)
180
+ EnumConfig.C(a=1)
181
181
  assert False, "Enum value should be rejected"
182
182
  except AssertionError:
183
183
  pass
@@ -199,7 +199,7 @@ class TaskConfigConsumer(Config):
199
199
 
200
200
 
201
201
  def test_validation_taskargument():
202
- x = taskconfig()
202
+ x = taskconfig.C()
203
203
  with TemporaryExperiment("fake"):
204
204
  x.submit(run_mode=RunMode.DRY_RUN)
205
- expect_validate(TaskConfigConsumer(x=x))
205
+ expect_validate(TaskConfigConsumer.C(x=x))
@@ -31,7 +31,7 @@ if __name__ == "__main__":
31
31
  logging.info("Reschedule with token [%s]: starting task in %s", x, workdir)
32
32
  token = xp.workspace.connector.createtoken("test-token-reschedule", 1)
33
33
  task = (
34
- TokenTask(path=lockingpath, x=int(x))
34
+ TokenTask.C(path=lockingpath, x=int(x))
35
35
  .add_dependencies(token.dependency(1))
36
36
  .submit()
37
37
  )
@@ -1,7 +1,9 @@
1
+ import importlib
1
2
  from itertools import chain
2
3
  from typing import Dict, Any
3
4
  from pathlib import Path
4
5
  import json
6
+ from src.experimaestro.core.objects.config_utils import getqualattr
5
7
  from termcolor import colored
6
8
 
7
9
 
@@ -42,6 +44,11 @@ def build_value(data, store: Store):
42
44
  elif t == "path.serialized":
43
45
  # Again, do not return anything (won't change the identifier)
44
46
  return None
47
+ elif t == "enum":
48
+ module = importlib.import_module(data["module"])
49
+ enumClass = getqualattr(module, data["enum"])
50
+ return enumClass[data["value"]]
51
+
45
52
  elif t is None:
46
53
  return {key: build_value(value, store) for key, value in data.items()}
47
54
  assert False, f"Data type {t} not handled"
@@ -71,7 +78,7 @@ def load(path: Path):
71
78
 
72
79
 
73
80
  def print_diff(path: str, conf1: Any, conf2: Any):
74
- if type(conf1) != type(conf2):
81
+ if type(conf1) is not type(conf2):
75
82
  print(f"[{colored(path, 'red')}] {conf1} and {conf2} of different types")
76
83
 
77
84
  if isinstance(conf1, ObjectProxy) and isinstance(conf2, ObjectProxy):
@@ -6,7 +6,16 @@ if sys.version_info.major == 3:
6
6
  if sys.version_info.minor < 11:
7
7
  from typing import _collect_type_vars as _collect_parameters
8
8
  else:
9
- from typing import _collect_parameters
9
+
10
+ def _collect_parameters(bases):
11
+ """Collect type parameters from generic bases"""
12
+ parameters = []
13
+ for base in bases:
14
+ if hasattr(base, "__parameters__"):
15
+ parameters.extend(base.__parameters__)
16
+ return tuple(parameters)
17
+
18
+ # from typing import _collect_parameters
10
19
 
11
20
  from typing import _AnnotatedAlias as AnnotatedAlias, get_args, get_origin
12
21
 
@@ -62,7 +71,7 @@ def get_type(typehint):
62
71
  while True:
63
72
  if t := get_optional(typehint):
64
73
  typehint = t
65
- if isinstance(typehint, AnnotatedAlias):
74
+ if is_annotated(typehint):
66
75
  typehint = get_args(typehint)[0]
67
76
  else:
68
77
  break
@@ -1,8 +1,9 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: experimaestro
3
- Version: 1.11.1
3
+ Version: 2.0.0a8
4
4
  Summary: "Experimaestro is a computer science experiment manager"
5
5
  License: GPL-3
6
+ License-File: LICENSE
6
7
  Keywords: experiment manager
7
8
  Author: Benjamin Piwowarski
8
9
  Author-email: benjamin@piwowarski.fr
@@ -1,29 +1,30 @@
1
1
  experimaestro/__init__.py,sha256=XCSuw7ozZZxL9ugnkIhqAaG7CQ6dE9NeSiDJ93QFH_I,1649
2
2
  experimaestro/__main__.py,sha256=Dv9lFl03yt1dswd0Xb9NIJRgHpA5_IwH4RfQPEHyFz0,158
3
- experimaestro/annotations.py,sha256=wyVmPlkXuoT6IxJ-ti8bFo6HxhGY1BYBxM5-pib6shU,8773
3
+ experimaestro/annotations.py,sha256=1QhKA247w50KmhsxvFBnDe6BRc7_EIMMq0GT7LIaGv8,8774
4
4
  experimaestro/checkers.py,sha256=ZCMbnE_GFC5compWjt-fuHhPImi9fCPjImF8Ow9NqK8,696
5
- experimaestro/cli/__init__.py,sha256=mzc-qqTFtZnFwCQl7IiwlYXEx08kLGwdntWayCerZ6E,9610
5
+ experimaestro/cli/__init__.py,sha256=bJ7lMdR45bTd-W-kw7CJicR-0qXwNzqUZ_EYfaHH3Oc,9537
6
6
  experimaestro/cli/filter.py,sha256=bINAF-O7CwJ2u3T6xG_Q_niqDbPeoEASyYLuCeNlbFw,6313
7
7
  experimaestro/cli/jobs.py,sha256=BnejUnhKAgMBVgwANfQYj5mLzknXVohveg7NpovNZ8o,7925
8
+ experimaestro/cli/progress.py,sha256=I6qhVe-vvqA1ym6XJE75q7Hb0jGeFwgodIqfhlTrPKY,8200
8
9
  experimaestro/click.py,sha256=6BkeQHEgcxaxzq3xEvEEzwzuBj5-dkfrpOGikuA8L00,1377
9
10
  experimaestro/commandline.py,sha256=MJIJcfppGCjNA8ozxXUzbUSeDOlTExuzhxryGx3_lIo,9314
10
11
  experimaestro/compat.py,sha256=dQqE2ZNHLM2wtdfp7fBRYMfC33qNehVf9J6FGRBUQhs,171
11
- experimaestro/connectors/__init__.py,sha256=UKhDU3uv9jFH37oUb0JiejrekA85xtEirn79pA7DFhI,6125
12
+ experimaestro/connectors/__init__.py,sha256=_8jETUTM3Ecdm8azNrxCSCXyXWso0mwDFnTrcNV3a4w,6129
12
13
  experimaestro/connectors/local.py,sha256=lCGIubqmUJZ1glLtLRXOgakTMfEaEmFtNkEcw9qV5vw,6143
13
14
  experimaestro/connectors/ssh.py,sha256=5giqvv1y0QQKF-GI0IFUzI_Z5H8Bj9EuL_Szpvk899Q,8600
14
15
  experimaestro/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- experimaestro/core/arguments.py,sha256=7hpkU1f8LJ7JL8kQaD514h9CFSfMotYLsVfMsMmdpWk,6487
16
+ experimaestro/core/arguments.py,sha256=gB0Kq9XL0_mYbm9WHL-mDx2tUGHI1pvsu1ahMaDxIY0,7170
16
17
  experimaestro/core/callbacks.py,sha256=59JfeUgWcCCdIQ3pvh-xNnoRp9BX8f4iOAkgm16wBzE,1660
17
18
  experimaestro/core/context.py,sha256=1tLmX7WcgEKSbGw77vfziTzS8KNsoZJ02JBWMBCqqOk,2606
18
- experimaestro/core/identifier.py,sha256=JadBAdW2fOIgoTyMRtKI_RY9SXQP2B1vq1rUcV465Hs,10214
19
+ experimaestro/core/identifier.py,sha256=GmS3HtfLwirjoaVx6cZvLJL4r4546P0FFUSu2Nt0W9g,10812
19
20
  experimaestro/core/objects/__init__.py,sha256=ucJY5e17QQ1Kc-GYXeL7g8GFj8rP0XB4g2vrl32uhxY,721
20
- experimaestro/core/objects/config.py,sha256=qOUgCmX1NwhRhpTVxgr2sSAqBCMYloUXb5f-NiXgV8Q,56989
21
+ experimaestro/core/objects/config.py,sha256=D6puZs3VH9GapoHhtgNawwjfQUxSH4E5v3V3sdwLZbg,53575
21
22
  experimaestro/core/objects/config_utils.py,sha256=ZLECGkeIWdzunm8vwWsQhvcSgV1e064BgXbLiZnxSEM,1288
22
- experimaestro/core/objects/config_walk.py,sha256=gyDMrVPbBMChn7r4em_gQXuqnxASO_JVauEbnJNO8II,4245
23
- experimaestro/core/objects.pyi,sha256=xvlsRj4u1xsJxbevJl5Ner_HwmxR8x1JlAeIVDJzuy0,6498
23
+ experimaestro/core/objects/config_walk.py,sha256=SYBrGuT7HV12no9mQd1HjnebiyygHyO-zq_TO1brUtc,4233
24
+ experimaestro/core/objects.pyi,sha256=Q1tq4F8LrExPm00E-P5aaygxMvViYZqhHvByo_TTZRE,6315
24
25
  experimaestro/core/serialization.py,sha256=CSPEwOzlDsgAz6V2og-TgyU0RXDtzt_nXaoXFZleDZE,5775
25
- experimaestro/core/serializers.py,sha256=R_CAMyjjfU1oi-eHU6VlEUixJpFayGqEPaYu7VsD9xA,1197
26
- experimaestro/core/types.py,sha256=AH3ni1nIKGTeRmc7ECL6GH_dYqiuZp_mAN4E-JqdqnY,21741
26
+ experimaestro/core/serializers.py,sha256=iOBuASEgD8dRKPnL16iOLBsM0GHChCJgjBd7LixFui4,919
27
+ experimaestro/core/types.py,sha256=aI-Qad27tkBFR5HyBCeeUwmZFIQif70__AR7enzpjvY,20938
27
28
  experimaestro/core/utils.py,sha256=JfC3qGUS9b6FUHc2VxIYUI9ysNpXSQ1LjOBkjfZ8n7o,495
28
29
  experimaestro/exceptions.py,sha256=cUy83WHM3GeynxmMk6QRr5xsnpqUAdAoc-m3KQVrE2o,44
29
30
  experimaestro/experiments/__init__.py,sha256=GcpDUIbCvhnv6rxFdAp4wTffCVNTv-InY6fbQAlTy-o,159
@@ -35,7 +36,7 @@ experimaestro/ipc.py,sha256=Xn3tYME83jLEB0nFak3DwEIhpL5IRZpCl3jirBF_jl4,1570
35
36
  experimaestro/launcherfinder/__init__.py,sha256=qRUDyv3B9UsAM8Q31mRrZrTZox0AptwdmOY4f2K-TUo,279
36
37
  experimaestro/launcherfinder/base.py,sha256=q47SsF_cXdo5O6ZhFKn5385WVFcx8Wd-BcEpd6tRpbs,515
37
38
  experimaestro/launcherfinder/parser.py,sha256=MIHhjs2sTVxLHLcc1CgFid9XxhInXker8QdA-GBA-Bk,2364
38
- experimaestro/launcherfinder/registry.py,sha256=F16A7SE_CgzaTBC-LBlurbthTDvYUa5iyjJftkDNN4M,6420
39
+ experimaestro/launcherfinder/registry.py,sha256=qP2Y9mfxn7XvIBr4ot2zkyKw6sWhmgBxDDKU5Ty04FE,6417
39
40
  experimaestro/launcherfinder/specs.py,sha256=eQC2pwAnvq7kF2xmAfHpg_Wx6_lH6YMf3ZCDwqatjKk,7898
40
41
  experimaestro/launchers/__init__.py,sha256=lXn544sgJExr6uirILWzAXu_IfmfyqFZOt4OzRnjHXg,2525
41
42
  experimaestro/launchers/direct.py,sha256=JZh6WOPnO6ED_xlOs8pL4MRFmnRhmXzpVxTl-ByaD2A,258
@@ -45,23 +46,27 @@ experimaestro/launchers/slurm/base.py,sha256=2CPNJeTNuwPOjqgmdkZ3MfdZbKQTIwlJtu_
45
46
  experimaestro/locking.py,sha256=hPT-LuDGZTijpbme8O0kEoB9a3WjdVzI2h31OT44UxE,1477
46
47
  experimaestro/mkdocs/__init__.py,sha256=L9UDM7vOrRZl41zXTBOaHKSINEEsbmxwjIMIGESmLfU,46
47
48
  experimaestro/mkdocs/annotations.py,sha256=qpDw8lzrxpsOShXcpcP_LAeR3UhiIXAybG8UvS64-OU,263
48
- experimaestro/mkdocs/base.py,sha256=SwLh9s7BZfrTAZdBaealSqVeLAroDSwLLMOHmLCxMPQ,16716
49
+ experimaestro/mkdocs/base.py,sha256=qHDZZFdoNRsW6RcjRB1WCSp2sOtRiBk9zFO1acK05BQ,16706
49
50
  experimaestro/mkdocs/metaloader.py,sha256=qCqnTWhlgxql-oe46E8AbvYdoM311-lQh-msmPnbllQ,1481
50
51
  experimaestro/mkdocs/style.css,sha256=42kJ6Ozq_n4Iw5UfJ4-nO1u-HN3ELvV7Vhvj1Xkn7rQ,66
51
52
  experimaestro/mypy.py,sha256=M39VFuDrab-ymlCDIF5jys9oKpTwnuBPzb1T8Un5J3s,285
52
- experimaestro/notifications.py,sha256=TLG9sw6bxukj0Wj4ZXASn-A9sQuET_exzUHtgk8AgRQ,9335
53
+ experimaestro/notifications.py,sha256=30jPhTo8eU1Nd8RRYorswdlXZ99EuGs38Acg-6l9MyM,9643
54
+ experimaestro/progress.py,sha256=ABdgjCxdVreo6e--Pm1WgIjOWkmggloW2dJU-P5hCfk,14856
53
55
  experimaestro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
56
  experimaestro/rpyc.py,sha256=ZRKol-3tVoeoUITLNFenLF4dhWBLW_FvSV_GvsypmeI,3605
55
57
  experimaestro/run.py,sha256=_szMzKn-67ulT6Wy21dzhB1g6_fiL379JnBC0zJqpIY,5332
56
- experimaestro/scheduler/__init__.py,sha256=ERmmOxz_9mUkIuccNbzUa5Y6gVLLVDdyc4cCxbCCUbY,20
57
- experimaestro/scheduler/base.py,sha256=294a_29UtsSfoW4NpL4_6mvDyDslG0qDXGmVkcGRUDA,35829
58
+ experimaestro/scheduler/__init__.py,sha256=HssbogPCuGpKGMPZQP07XCT2-uMFRPANuPM-duMIrq4,422
59
+ experimaestro/scheduler/base.py,sha256=Wq5hfryOvBrvGDpOgitdVQ2TkNYgrt-hHCU8Yey6J6M,10316
58
60
  experimaestro/scheduler/dependencies.py,sha256=n9XegwrmjayOIxt3xhuTEBVEBGSq4oeVdzz-FviDGXo,1994
59
61
  experimaestro/scheduler/dynamic_outputs.py,sha256=yYPL98I0nSgDjlE3Sk9dtvovh2PZ6rUDnKjDNnAg1dc,5732
62
+ experimaestro/scheduler/experiment.py,sha256=gO0S66AE8jDv_huaezra3odFqjNnuLLVmZVv-sorJ1A,13297
63
+ experimaestro/scheduler/jobs.py,sha256=tJFndvHW5-Padfw-KfU_ytO7l3xaXpjhqEOy9g7gFDs,15279
60
64
  experimaestro/scheduler/services.py,sha256=aCKkNZMULlceabqf-kOs_-C7KPINnjU3Q-I00o5x6iY,2189
61
- experimaestro/scheduler/state.py,sha256=szTgnI_hAVqU2OWrrIXsZrO3VsrJlHryXUU0r95w_sw,2367
65
+ experimaestro/scheduler/signal_handler.py,sha256=B4ZeSVB8O41VDdFmV4n2cyBds7wKFG3kH2Fp7cpyxa4,872
66
+ experimaestro/scheduler/state.py,sha256=1ICn1K5gNMCEUb85vwwXLIUF6Lxqa5mbTgMzEz2pnXw,2367
62
67
  experimaestro/scheduler/workspace.py,sha256=KNdxPBwUk7gO8h2utMCrlIVKB-f2Ylqg_IxLc4okp_8,2320
63
68
  experimaestro/scriptbuilder.py,sha256=6GKUkgixLqSEy41sNr-_HNcrjKb8uxaoQ65DywRYsC0,5027
64
- experimaestro/server/__init__.py,sha256=F2bzLf2q29Haj2OIbPA26r5WVbaipBNylIozg-As758,10854
69
+ experimaestro/server/__init__.py,sha256=V1NbTS7ByqI29t6ArGn5GJeDWQ9VYGQ81qCwFbpLGso,11810
65
70
  experimaestro/server/data/0c35d18bf06992036b69.woff2,sha256=gmX2R4Y5fWuDLRygqv3xSa2E5ydZ__qfcnLpGg-wFdE,128352
66
71
  experimaestro/server/data/1815e00441357e01619e.ttf,sha256=gIRDrmyCBDla3YVD2oqQpguTdvsPh-2OjqN9EJWW2AU,210792
67
72
  experimaestro/server/data/219aa9140e099e6c72ed.woff2,sha256=0xv7gdVueQ4Nni-gC4Pfj3FZ-QYxFM3AFIWbHUg5Vsg,135984
@@ -86,7 +91,7 @@ experimaestro/server/data/index.js,sha256=q8oG4RM5rRjIGmI1szIrLTxigTHNkVUG1BuHbc
86
91
  experimaestro/server/data/index.js.map,sha256=cv7KF28Uq5dy7Ux3yRnoSVztrOFVid359fm0Xn2IJ6s,3903046
87
92
  experimaestro/server/data/login.html,sha256=4dvhSOn6DHp_tbmzqIKrqq2uAo0sAUbgLVD0lTnPp4s,511
88
93
  experimaestro/server/data/manifest.json,sha256=EpzHQZzrGh9c1Kf63nrqvI33H1cm0nLYfdh5lDm8ijI,318
89
- experimaestro/settings.py,sha256=U6gTVBL5Z4Rk0_7BAVoavVJKN2sQNRpspE-601Elfys,3170
94
+ experimaestro/settings.py,sha256=j6iVV8bFn5VP-TopjtbSyX1wNgmfs3jzGeeAmaZzOPA,3172
90
95
  experimaestro/sphinx/__init__.py,sha256=HAofa65lCLAUOShgWwJIGEEOPKzu4VEs5LZd46V_Bng,9466
91
96
  experimaestro/sphinx/static/experimaestro.css,sha256=0rEgt1LoDdD-a_R5rVfWZ19zD1gR-1L7q3f4UibIB58,294
92
97
  experimaestro/taskglobals.py,sha256=Lp0bqobVLndR7fOtF9qPI7utTKQXXwTdVN6l5Av9Dc4,660
@@ -103,46 +108,49 @@ experimaestro/tests/launchers/bin/sacct,sha256=9mmRAYCE4RBSBOf7aanhFw9hzujOUlcw3
103
108
  experimaestro/tests/launchers/bin/sbatch,sha256=KgG4xUiIpELHBWLjnM7IUBu5jKiIGnILS9HfHE5eVFk,1715
104
109
  experimaestro/tests/launchers/bin/srun,sha256=3oE3qq0UFpVtTvXfR1kH3tovFYX74fp1Fk-o8zgsaJA,47
105
110
  experimaestro/tests/launchers/bin/test.py,sha256=MbxdAd2Sf7T-Hj3ldmrtngbQuBdNOkXjMcICJTf39wI,477
106
- experimaestro/tests/launchers/common.py,sha256=E09KhrQfNQNZbaeVkXBgHk2906DvaCEU7CqEQvLbZTE,2994
111
+ experimaestro/tests/launchers/common.py,sha256=WqVcWX3g0XYJS0aJO7XWVvOmncRBbQmGvuNxH9AHUAE,2998
107
112
  experimaestro/tests/launchers/config_slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
113
  experimaestro/tests/launchers/config_slurm/launchers.py,sha256=DohwQVv1eXWfDpAYFg7KJekEm7q7G-lMou2lPg-PKOk,838
109
114
  experimaestro/tests/launchers/test_local.py,sha256=4oGgWH2YgkEm-Muu6s4cwlgriXtYr5xAd72DVoIw_Yk,717
110
115
  experimaestro/tests/launchers/test_slurm.py,sha256=5s-mMtqvE62xJ_GijLd4Hmsu3vWCRCbFy7cPce8YKsM,2534
111
- experimaestro/tests/restart.py,sha256=Mkf5CKZNKT4s2XEQMBFYWS6XqdmwI-OEzNnm2ttbtBc,4189
116
+ experimaestro/tests/restart.py,sha256=aAizVLvw2DaNfIzuRB13iYXOoX1Q5NkgsngumERlo2s,4191
112
117
  experimaestro/tests/restart_main.py,sha256=iAFzw0H1q9Aq7t6TrSAj236QBnYU52qx0VF-2dz6tx4,295
113
118
  experimaestro/tests/scripts/notifyandwait.py,sha256=3BLXLI5XgP3BnKf6sQ56oKoMVqR80VMHmploJ3JO6Ko,407
114
119
  experimaestro/tests/scripts/waitforfile.py,sha256=EDT-TuFi2fU_qt51K5EmAxjw_OnJKkBW7UCfhrtDbVw,120
115
120
  experimaestro/tests/task_tokens.py,sha256=vgqUa-S_YC2Id9pGOSv40qFTwq1WGZkFhr556Z5o678,477
116
121
  experimaestro/tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- experimaestro/tests/tasks/all.py,sha256=OMkHsWZkErCmTajiNO7hNhvnk9eKzJC-VatWgabWlsI,1955
122
+ experimaestro/tests/tasks/all.py,sha256=2KF0D1CB2PBwM_aXX09Ug6vy0MUQgoTATdheNeNKXHg,2101
118
123
  experimaestro/tests/tasks/foreign.py,sha256=uhXDOcWozkcm26ybbeEU9RElJpbhjC-zdzmlSKfPcdY,122
119
- experimaestro/tests/test_checkers.py,sha256=Kg5frDNRE3pvWVmmYzyk0tJFNO885KOrK48lSu-NlYA,403
120
- experimaestro/tests/test_dependencies.py,sha256=xfWrSkvjT45G4FSCL535m1huLT2ghmyW7kvP_XvvCJQ,2005
121
- experimaestro/tests/test_experiment.py,sha256=QWF9aHewL9hepagrKKFyfikKn3iiZ_lRRXl1LLttta0,1687
124
+ experimaestro/tests/test_checkers.py,sha256=e6Rv2TlePRY__VXs0vUb6a5Aw_KIq_cs4N86VhnYHtw,407
125
+ experimaestro/tests/test_dependencies.py,sha256=LvpmMcfnRzQPzUIuFNCIQnJot8YBSxCA827xh9gYlq0,1890
126
+ experimaestro/tests/test_experiment.py,sha256=Nfevu_aMyX4c5xTjDHMeKXZWs2HMOhy96tsQlnF-IVs,1693
127
+ experimaestro/tests/test_file_progress.py,sha256=uNUUq-ptcnxu56zRvUUZ5EYM9ZIQbUmOU_LI0roMgSw,15119
128
+ experimaestro/tests/test_file_progress_integration.py,sha256=ejXASpdnpi6HUy569Q5Vx5F8SV_RDU-4o3yuQka6vS4,16751
122
129
  experimaestro/tests/test_findlauncher.py,sha256=KPy8ow--NXS1KFCIpxrmEJFRvjo-v-PwlVHVyoVKLPg,3134
123
130
  experimaestro/tests/test_forward.py,sha256=9y1zYm7hT_Lx5citxnK7n20cMZ2WJbsaEeY5irCZ9U4,735
124
- experimaestro/tests/test_identifier.py,sha256=zgfpz5UumQftQTHhdw3nmr044Xd7Ntrh7e2hIAoS_PA,13862
125
- experimaestro/tests/test_instance.py,sha256=h-8UeoOlNsD-STWq5jbhmxw35CyiwJxtKAaUGmLPgB8,1521
126
- experimaestro/tests/test_objects.py,sha256=zycxjvWuJAbPR8-q2T3zuBY9xfmlhf1YvtOcrImHxnc,2431
127
- experimaestro/tests/test_outputs.py,sha256=DYzPk5TT_yLumy8SsQbl-S66ivVxJ-ERFrZ68KQZ4KU,781
128
- experimaestro/tests/test_param.py,sha256=7BltCUm9uhtEupJZ-QSaj7MxuXoUl73NjE8NfzJD5BA,7290
129
- experimaestro/tests/test_progress.py,sha256=wtIGQzlV3ldd_wMng11LinVESchW-1J954mCJNlG28E,7580
130
- experimaestro/tests/test_serializers.py,sha256=u3A5JbusN8aW6x6reUIwpU1Fs-avnzTRU7WuTear9Qs,2722
131
+ experimaestro/tests/test_generators.py,sha256=R0UypTzxX0dPYvY4A_kozpLDHhGzQDNfLQyc0oRaSx8,2891
132
+ experimaestro/tests/test_identifier.py,sha256=0uv7lsgLLzKHLinlq2J9yj9UyKG6ud1EYtxIyeXbyhE,14368
133
+ experimaestro/tests/test_instance.py,sha256=VFRvjy1OXGtGgkh__mf73KmJq4Lom7ppvBDkhE7rjTA,1325
134
+ experimaestro/tests/test_objects.py,sha256=hGku35h1qkNMIdgP_gWM7HeviaqW7jrZDffOsCJh-_Q,1787
135
+ experimaestro/tests/test_outputs.py,sha256=vilnECNfc-cyzDZjTvCgCSMesC7QwWTfhJtlOyM9kIM,797
136
+ experimaestro/tests/test_param.py,sha256=OW3uguPjy9U6f9BrLr8z4ieo88EH6da2zMho-FVwmKQ,7324
137
+ experimaestro/tests/test_progress.py,sha256=j-V65Adk9psBzMcSzlH7uSqDiLkYDd3Udpy1UCT8j2Y,7588
138
+ experimaestro/tests/test_serializers.py,sha256=dQkiuvHAQ1g-SCRCfOy977nQMWR7CFuBUud65N_vfiI,1248
131
139
  experimaestro/tests/test_snippets.py,sha256=rojnyDjtmAMnSuDUj6Bv9XEgdP8oQf2nVc132JF8vsM,3081
132
140
  experimaestro/tests/test_ssh.py,sha256=KS1NWltiXrJBSStY9d4mwrexeqgNGWmhxuAU_WLQDAU,1449
133
- experimaestro/tests/test_tags.py,sha256=v_8_7LuEHfY_gfa0JRCUkmgJh8h6RMya_nd5NcPAJPw,2852
134
- experimaestro/tests/test_tasks.py,sha256=bUSB_UT1MTN2P_RPHd4AT5NK-DFsgCVeFKSiXu3bEz8,9429
135
- experimaestro/tests/test_tokens.py,sha256=U3nKBL1KftWhmk3dQZZLQd-MLJL_SscMjI3zMieMHfc,7823
136
- experimaestro/tests/test_types.py,sha256=HVOu05ivOQB0Y7iBLVBg1J_FKg9E49pbU3yk0jvWA6U,1301
137
- experimaestro/tests/test_validation.py,sha256=t0fu-5wkCzpUKLu8K0rbU5zDE_LtsgehWm84HtIF5JY,4076
138
- experimaestro/tests/token_reschedule.py,sha256=V8lAbjTWTatBrBjxde_KN-fDEI4sQ3HNr4scCXBU6fI,1701
141
+ experimaestro/tests/test_tags.py,sha256=_FE0g1kCwrgy7AlLNmgYHol07lMk8Iyera60-gO2k-s,2886
142
+ experimaestro/tests/test_tasks.py,sha256=Lbo9hc3FGah8XTsMFQVfFFp4YqE3FtHNCrEuz43ZHOs,9016
143
+ experimaestro/tests/test_tokens.py,sha256=0PPVCBcYWzFqgCQEbJsNAZOIVZt4VVv2vu-W4sk0Ogg,7859
144
+ experimaestro/tests/test_types.py,sha256=Y76TvSv9euJqI6Zu14cnD8ldToWxts43yvGa7-HV2kA,1363
145
+ experimaestro/tests/test_validation.py,sha256=tinkXETcAGtgPIsmbioKSU00kGIV1YnniHTGDDcUOq8,4118
146
+ experimaestro/tests/token_reschedule.py,sha256=z7oVrFvRkUlBC3FMTr552ayeCt6DWTpx1j9Dk5YtPq8,1703
139
147
  experimaestro/tests/utils.py,sha256=41krZFgUaCxCYBQPmo5dNFDd9W6RU8ZzzyzY3FyutUI,3805
140
148
  experimaestro/tokens.py,sha256=ZnsDnfJgyAUgThv0c-ta28CrHre0gRyQF6q5FD9tCLY,15147
141
149
  experimaestro/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
142
- experimaestro/tools/diff.py,sha256=FBCwupPrSwkEOcqYu0NWe7LTkuOW6r-_btoCel2_k_I,3436
150
+ experimaestro/tools/diff.py,sha256=4GWWXgpkotO6a7i6qG64oWPGm8Ej7eFCDNj0wjZ-G7s,3715
143
151
  experimaestro/tools/documentation.py,sha256=O2UzjzodPqGot3YSe6NYlK7S42XpplakUdqxFpvjqHQ,9184
144
152
  experimaestro/tools/jobs.py,sha256=63bXhJ7RGdczLU_nxu2skGn-9dwgr4r5pD23qH4WeBA,3516
145
- experimaestro/typingutils.py,sha256=NiHx62CQs1pJ6SwuZLxzlLXhxZUIe_cCgotLCHO9dhE,3380
153
+ experimaestro/typingutils.py,sha256=v7wS9xewF3cYOKvaBFxlTB-qplJ8olI1OaO3tAKiwIo,3678
146
154
  experimaestro/utils/__init__.py,sha256=BdYguxAbR1jOQPV36OgGA31itaMvBJ6WVPV6b4Jn4xw,2434
147
155
  experimaestro/utils/asyncio.py,sha256=9r_vFQs6T6tqmymC_DbHVFhY9YVRO6X48uEuyL_ugP8,726
148
156
  experimaestro/utils/jobs.py,sha256=42FAdKcn_v_-M6hcQZPUBr9kbDt1eVsk3a4E8Gc4eu8,2394
@@ -151,8 +159,8 @@ experimaestro/utils/multiprocessing.py,sha256=am3DkHP_kmWbpynbck2c9QystCUtPBoSAC
151
159
  experimaestro/utils/resources.py,sha256=j-nvsTFwmgENMoVGOD2Ap-UD3WU85WkI0IgeSszMCX4,1328
152
160
  experimaestro/utils/settings.py,sha256=jpFMqF0DLL4_P1xGal0zVR5cOrdD8O0Y2IOYvnRgN3k,793
153
161
  experimaestro/xpmutils.py,sha256=S21eMbDYsHfvmZ1HmKpq5Pz5O-1HnCLYxKbyTBbASyQ,638
154
- experimaestro-1.11.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
155
- experimaestro-1.11.1.dist-info/METADATA,sha256=OpqURuuxqEYVcPkwe68OG5_5i8wJ6Cv6PwGJKjbgML8,5689
156
- experimaestro-1.11.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
157
- experimaestro-1.11.1.dist-info/entry_points.txt,sha256=TppTNiz5qm5xm1fhAcdLKdCLMrlL-eQggtCrCI00D9c,446
158
- experimaestro-1.11.1.dist-info/RECORD,,
162
+ experimaestro-2.0.0a8.dist-info/METADATA,sha256=vZ4UCEkPrs1HE6gA8YUcTeyLyKgRz1-iGg9buRdX4D0,5712
163
+ experimaestro-2.0.0a8.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
164
+ experimaestro-2.0.0a8.dist-info/entry_points.txt,sha256=TppTNiz5qm5xm1fhAcdLKdCLMrlL-eQggtCrCI00D9c,446
165
+ experimaestro-2.0.0a8.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
166
+ experimaestro-2.0.0a8.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 2.1.3
2
+ Generator: poetry-core 2.2.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any