experimaestro 1.5.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 (118) hide show
  1. experimaestro/__init__.py +14 -4
  2. experimaestro/__main__.py +3 -423
  3. experimaestro/annotations.py +14 -4
  4. experimaestro/cli/__init__.py +311 -0
  5. experimaestro/{filter.py → cli/filter.py} +23 -9
  6. experimaestro/cli/jobs.py +268 -0
  7. experimaestro/cli/progress.py +269 -0
  8. experimaestro/click.py +0 -35
  9. experimaestro/commandline.py +3 -7
  10. experimaestro/connectors/__init__.py +29 -14
  11. experimaestro/connectors/local.py +19 -10
  12. experimaestro/connectors/ssh.py +27 -8
  13. experimaestro/core/arguments.py +45 -3
  14. experimaestro/core/callbacks.py +52 -0
  15. experimaestro/core/context.py +8 -9
  16. experimaestro/core/identifier.py +310 -0
  17. experimaestro/core/objects/__init__.py +44 -0
  18. experimaestro/core/{objects.py → objects/config.py} +399 -772
  19. experimaestro/core/objects/config_utils.py +58 -0
  20. experimaestro/core/objects/config_walk.py +151 -0
  21. experimaestro/core/objects.pyi +15 -45
  22. experimaestro/core/serialization.py +63 -9
  23. experimaestro/core/serializers.py +1 -8
  24. experimaestro/core/types.py +104 -66
  25. experimaestro/experiments/cli.py +154 -72
  26. experimaestro/experiments/configuration.py +10 -1
  27. experimaestro/generators.py +6 -1
  28. experimaestro/ipc.py +4 -1
  29. experimaestro/launcherfinder/__init__.py +1 -1
  30. experimaestro/launcherfinder/base.py +2 -18
  31. experimaestro/launcherfinder/parser.py +8 -3
  32. experimaestro/launcherfinder/registry.py +52 -140
  33. experimaestro/launcherfinder/specs.py +49 -10
  34. experimaestro/launchers/direct.py +0 -47
  35. experimaestro/launchers/slurm/base.py +54 -14
  36. experimaestro/mkdocs/__init__.py +1 -1
  37. experimaestro/mkdocs/base.py +6 -8
  38. experimaestro/notifications.py +38 -12
  39. experimaestro/progress.py +406 -0
  40. experimaestro/run.py +24 -3
  41. experimaestro/scheduler/__init__.py +18 -1
  42. experimaestro/scheduler/base.py +108 -808
  43. experimaestro/scheduler/dynamic_outputs.py +184 -0
  44. experimaestro/scheduler/experiment.py +387 -0
  45. experimaestro/scheduler/jobs.py +475 -0
  46. experimaestro/scheduler/signal_handler.py +32 -0
  47. experimaestro/scheduler/state.py +75 -0
  48. experimaestro/scheduler/workspace.py +27 -8
  49. experimaestro/scriptbuilder.py +18 -3
  50. experimaestro/server/__init__.py +36 -5
  51. experimaestro/server/data/1815e00441357e01619e.ttf +0 -0
  52. experimaestro/server/data/2463b90d9a316e4e5294.woff2 +0 -0
  53. experimaestro/server/data/2582b0e4bcf85eceead0.ttf +0 -0
  54. experimaestro/server/data/89999bdf5d835c012025.woff2 +0 -0
  55. experimaestro/server/data/914997e1bdfc990d0897.ttf +0 -0
  56. experimaestro/server/data/c210719e60948b211a12.woff2 +0 -0
  57. experimaestro/server/data/index.css +5187 -5068
  58. experimaestro/server/data/index.css.map +1 -1
  59. experimaestro/server/data/index.js +68887 -68064
  60. experimaestro/server/data/index.js.map +1 -1
  61. experimaestro/settings.py +45 -5
  62. experimaestro/sphinx/__init__.py +7 -17
  63. experimaestro/taskglobals.py +7 -2
  64. experimaestro/tests/core/__init__.py +0 -0
  65. experimaestro/tests/core/test_generics.py +206 -0
  66. experimaestro/tests/definitions_types.py +5 -3
  67. experimaestro/tests/launchers/bin/sbatch +34 -7
  68. experimaestro/tests/launchers/bin/srun +5 -0
  69. experimaestro/tests/launchers/common.py +17 -5
  70. experimaestro/tests/launchers/config_slurm/launchers.py +25 -0
  71. experimaestro/tests/restart.py +10 -5
  72. experimaestro/tests/tasks/all.py +23 -10
  73. experimaestro/tests/tasks/foreign.py +2 -4
  74. experimaestro/tests/test_checkers.py +2 -2
  75. experimaestro/tests/test_dependencies.py +11 -17
  76. experimaestro/tests/test_experiment.py +73 -0
  77. experimaestro/tests/test_file_progress.py +425 -0
  78. experimaestro/tests/test_file_progress_integration.py +477 -0
  79. experimaestro/tests/test_findlauncher.py +12 -5
  80. experimaestro/tests/test_forward.py +5 -5
  81. experimaestro/tests/test_generators.py +93 -0
  82. experimaestro/tests/test_identifier.py +182 -158
  83. experimaestro/tests/test_instance.py +19 -27
  84. experimaestro/tests/test_objects.py +13 -20
  85. experimaestro/tests/test_outputs.py +6 -6
  86. experimaestro/tests/test_param.py +68 -30
  87. experimaestro/tests/test_progress.py +4 -4
  88. experimaestro/tests/test_serializers.py +24 -64
  89. experimaestro/tests/test_ssh.py +7 -0
  90. experimaestro/tests/test_tags.py +50 -21
  91. experimaestro/tests/test_tasks.py +42 -51
  92. experimaestro/tests/test_tokens.py +11 -8
  93. experimaestro/tests/test_types.py +24 -21
  94. experimaestro/tests/test_validation.py +67 -110
  95. experimaestro/tests/token_reschedule.py +1 -1
  96. experimaestro/tokens.py +24 -13
  97. experimaestro/tools/diff.py +8 -1
  98. experimaestro/typingutils.py +20 -11
  99. experimaestro/utils/asyncio.py +6 -2
  100. experimaestro/utils/multiprocessing.py +44 -0
  101. experimaestro/utils/resources.py +11 -3
  102. {experimaestro-1.5.1.dist-info → experimaestro-2.0.0a8.dist-info}/METADATA +28 -36
  103. experimaestro-2.0.0a8.dist-info/RECORD +166 -0
  104. {experimaestro-1.5.1.dist-info → experimaestro-2.0.0a8.dist-info}/WHEEL +1 -1
  105. {experimaestro-1.5.1.dist-info → experimaestro-2.0.0a8.dist-info}/entry_points.txt +0 -4
  106. experimaestro/launchers/slurm/cli.py +0 -29
  107. experimaestro/launchers/slurm/configuration.py +0 -597
  108. experimaestro/scheduler/environment.py +0 -94
  109. experimaestro/server/data/016b4a6cdced82ab3aa1.ttf +0 -0
  110. experimaestro/server/data/50701fbb8177c2dde530.ttf +0 -0
  111. experimaestro/server/data/878f31251d960bd6266f.woff2 +0 -0
  112. experimaestro/server/data/b041b1fa4fe241b23445.woff2 +0 -0
  113. experimaestro/server/data/b6879d41b0852f01ed5b.woff2 +0 -0
  114. experimaestro/server/data/d75e3fd1eb12e9bd6655.ttf +0 -0
  115. experimaestro/tests/launchers/config_slurm/launchers.yaml +0 -134
  116. experimaestro/utils/yaml.py +0 -202
  117. experimaestro-1.5.1.dist-info/RECORD +0 -148
  118. {experimaestro-1.5.1.dist-info → experimaestro-2.0.0a8.dist-info/licenses}/LICENSE +0 -0
@@ -1,134 +0,0 @@
1
- local: []
2
- slurm:
3
- -
4
- id: "test_slurm"
5
-
6
- features_regex:
7
- - GPU(?P<cuda_count>\d+)
8
- - GPUM(?P<cuda_memory>\d+G)
9
-
10
- connector: local
11
- configuration:
12
- gpu:
13
- # At least 40% of the memory should be requested
14
- min_mem_ratio: 0.4
15
-
16
- partitions:
17
- electronic:
18
- configuration: null
19
- disabled: false
20
- nodes:
21
- - count: 0
22
- features:
23
- - GPU4
24
- - RTX
25
- - GPUM24G
26
- hosts:
27
- - daft
28
- - kavinsky
29
- - modjo
30
- - punk
31
- priority: 0
32
- funky:
33
- configuration: null
34
- disabled: false
35
- nodes:
36
- - count: 0
37
- features:
38
- - GPU4
39
- - TITANV
40
- - GPUM12G
41
- hosts:
42
- - bernard
43
- - count: 0
44
- features:
45
- - GPU4
46
- - TITANX
47
- - GPUM12G
48
- hosts:
49
- - chic
50
- - edwards
51
- - nile
52
- - rodgers
53
- - count: 0
54
- features:
55
- - GPU8
56
- - TITANX
57
- - GPUM12G
58
- hosts:
59
- - pascal
60
- priority: 0
61
- hard:
62
- configuration: null
63
- disabled: false
64
- nodes:
65
- - count: 0
66
- features:
67
- - GPU2
68
- - A6000
69
- - GPUM48G
70
- hosts:
71
- - aerosmith
72
- - count: 0
73
- features:
74
- - GPU3
75
- - A5000
76
- - GPUM24G
77
- hosts:
78
- - led
79
- - zeppelin
80
- - count: 0
81
- features:
82
- - GPU3
83
- - A6000
84
- - GPUM48G
85
- hosts:
86
- - top
87
- - zz
88
- priority: 0
89
- heavy:
90
- configuration: null
91
- disabled: true
92
- nodes:
93
- - count: 0
94
- features:
95
- - GPU8
96
- - A100
97
- - GPUM40G
98
- hosts:
99
- - a7x
100
- priority: 0
101
- jazzy:
102
- configuration: null
103
- disabled: false
104
- nodes:
105
- - count: 0
106
- features:
107
- - GPU4
108
- - TITANX
109
- - GPUM12G
110
- hosts:
111
- - cal
112
- - pas
113
- - titan
114
- - count: 0
115
- features:
116
- - GPU2
117
- - '3080'
118
- - GPUM10G
119
- hosts:
120
- - project
121
- - count: 0
122
- features:
123
- - GPU3
124
- - '2080'
125
- - GPUM11G
126
- hosts:
127
- - sister
128
- - sledge
129
- priority: 0
130
- query_slurm: false
131
- tags: []
132
- use_features: true
133
- use_hosts: true
134
- weight: 0
@@ -1,202 +0,0 @@
1
- import logging
2
- from typing import Any, ClassVar, Dict, List, Optional, Type, TypeVar
3
- import typing
4
- from yaml import Loader, Dumper, MappingNode
5
-
6
- from experimaestro import typingutils
7
-
8
- logger = logging.getLogger("xpm.yaml")
9
-
10
-
11
- class YAMLException(Exception):
12
- def __init__(self, key: str, name: str, line: int, column: int, message: str):
13
- super().__init__(
14
- f"Exception while setting {key} in {name}:{line}:{column}: {message}"
15
- )
16
-
17
-
18
- def check_type(object, typehint):
19
- typehint = typingutils.get_type(typehint)
20
- if list_type := typingutils.get_list(typehint):
21
- assert isinstance(object, list), f"{object} is not a list"
22
- for el in object:
23
- check_type(el, list_type)
24
- elif dict_type := typingutils.get_dict(typehint):
25
- assert isinstance(object, dict)
26
- for key, value in object.items():
27
- check_type(key, dict_type[0])
28
- check_type(value, dict_type[1])
29
- else:
30
- assert isinstance(
31
- object, typehint
32
- ), f"{type(object)} is not a subtype of {typehint}"
33
-
34
-
35
- def register_yaml(
36
- cls, yaml_loader: Type[Loader], yaml_dumper: Optional[Type[Dumper]] = None
37
- ):
38
- yaml_tag = getattr(cls, "yaml_tag", None)
39
- if yaml_tag is None and getattr(cls, "from_yaml", None):
40
- cls.yaml_tag = f"!{cls.__module__}.{cls.__qualname__}"
41
- logger.debug("Registering constructor %s / cls %s", cls.yaml_tag, cls.from_yaml)
42
- yaml_loader.add_constructor(cls.yaml_tag, cls.from_yaml)
43
- if yaml_dumper and (to_yaml := getattr(cls, "to_yaml", None)):
44
- logger.debug("Registering YAML dumper for %s", cls)
45
- yaml_dumper.add_representer(cls, to_yaml)
46
- return True
47
-
48
- # None when no from_yaml
49
- return yaml_tag is not None
50
-
51
-
52
- class YAMLDataClass:
53
- """Base class for dataclass driven YAML objects"""
54
-
55
- __dataclass_fields__: ClassVar[Dict[str, Any]]
56
- yaml_tag: ClassVar[str]
57
-
58
- @classmethod
59
- def to_yaml(cls, dumper: Dumper, data):
60
- return dumper.represent_dict(
61
- {key: getattr(data, key) for key, value in cls.__dataclass_fields__.items()}
62
- )
63
-
64
- @classmethod
65
- def from_yaml(cls, loader: Loader, node):
66
- kwargs = {}
67
- for key, value in node.value:
68
- try:
69
- assert isinstance(key.value, str)
70
- assert (
71
- key.value in cls.__dataclass_fields__
72
- ), f"{key.value} is not a valid field for {cls}"
73
-
74
- v = loader.construct_object(value, deep=True)
75
-
76
- fieldtype = cls.__dataclass_fields__[key.value].type
77
- if typingutils.is_annotated(fieldtype):
78
- initializers = [
79
- x
80
- for x in typingutils.get_args(fieldtype)
81
- if isinstance(x, Initialize)
82
- ]
83
- assert (
84
- len(initializers) <= 1
85
- ), "Too many initializers for this field"
86
- if initializers:
87
- v = initializers[0].fn(v)
88
-
89
- # Cast if needed
90
- origin = typingutils.get_type(fieldtype)
91
- origin = typing.get_origin(origin) or origin
92
- if origin and not isinstance(v, origin):
93
- v = origin(v)
94
-
95
- check_type(v, fieldtype)
96
- kwargs[key.value] = v
97
- except YAMLException:
98
- raise
99
- except Exception as e:
100
- raise YAMLException(
101
- key.value,
102
- node.start_mark.name,
103
- node.start_mark.line,
104
- node.start_mark.column,
105
- str(e),
106
- )
107
-
108
- return cls(**kwargs)
109
-
110
-
111
- T = TypeVar("T")
112
-
113
-
114
- class YAMLList(List[T]):
115
- @classmethod
116
- def from_yaml(cls, loader, node):
117
- array = [loader.construct_object(el, deep=True) for el in node.value]
118
- ctype = cls.get_ctype()
119
- for el in array:
120
- assert isinstance(el, ctype)
121
-
122
- return cls(array)
123
-
124
- @classmethod
125
- def get_ctype(cls):
126
- (list_type,) = [
127
- p for p in cls.__orig_bases__ if typing.get_origin(p) is YAMLList
128
- ]
129
- (list_element_type,) = typingutils.get_args(list_type)
130
- return list_element_type
131
-
132
-
133
- class YAMLDict(Dict[str, T]):
134
- @classmethod
135
- def from_yaml(cls, loader, node):
136
- map = {}
137
- ctype = cls.get_ctype()
138
-
139
- for node_key, node_value in node.value:
140
- key = loader.construct_scalar(node_key)
141
- value = loader.construct_object(node_value, deep=True)
142
- assert isinstance(value, ctype), f"{value} is not of type {ctype}"
143
- map[key] = value
144
-
145
- print(map)
146
- return cls(**map)
147
-
148
- @classmethod
149
- def get_ctype(cls):
150
- (list_type,) = [
151
- p for p in cls.__orig_bases__ if typing.get_origin(p) is YAMLDict
152
- ]
153
- (value_type,) = typingutils.get_args(list_type)
154
- return value_type
155
-
156
-
157
- class Initialize:
158
- def __init__(self, fn):
159
- self.fn = fn
160
-
161
-
162
- def add_path_resolvers(
163
- loader: Type[Loader],
164
- path: List[Optional[str]],
165
- cls: typing.Type,
166
- dumper: Optional[Type[Dumper]] = None,
167
- ):
168
- cls = typingutils.get_type(cls) or cls
169
-
170
- if list_type := typingutils.get_list(cls):
171
- add_path_resolvers(loader, path + [None], list_type, dumper=dumper)
172
-
173
- elif dict_type := typingutils.get_dict(cls):
174
- key_type, value_type = dict_type
175
- assert issubclass(key_type, str), f"Key of dict must be a string ({key_type})"
176
- add_path_resolvers(loader, path + [None], value_type, dumper=dumper)
177
-
178
- else:
179
- if register_yaml(cls, loader, yaml_dumper=dumper):
180
- logger.debug(f"Adding {cls.yaml_tag} -> {path}")
181
-
182
- if issubclass(cls, YAMLDataClass):
183
- # Add others
184
- loader.add_path_resolver(cls.yaml_tag, path, dict)
185
- for field in cls.__dataclass_fields__.values():
186
- # logger.debug("Processing %s", field)
187
- field_type = typingutils.get_type(field.type) or field.type
188
- add_path_resolvers(
189
- loader, path + [field.name], field_type, dumper=dumper
190
- )
191
-
192
- elif issubclass(cls, YAMLDict):
193
- loader.add_path_resolver(cls.yaml_tag, path + [None], dict)
194
- add_path_resolvers(
195
- loader, path + [None], cls.get_ctype(), dumper=dumper
196
- )
197
-
198
- elif issubclass(cls, YAMLList):
199
- loader.add_path_resolver(cls.yaml_tag, path, list)
200
- add_path_resolvers(
201
- loader, path + [None], cls.get_ctype(), dumper=dumper
202
- )
@@ -1,148 +0,0 @@
1
- experimaestro/__init__.py,sha256=5T8NC2WvqlCRXV4qSW4-_V42owXQs_YpXbEP6vLZN7E,1548
2
- experimaestro/__main__.py,sha256=iRi6yRJVcthXRTVnHQB0TNOKTRmKjdnX6yIQaf-z79o,13528
3
- experimaestro/annotations.py,sha256=dcpFmo01T12S_y5nIBIQjiXsGsq5S80ZB-58o8tW9wA,8450
4
- experimaestro/checkers.py,sha256=ZCMbnE_GFC5compWjt-fuHhPImi9fCPjImF8Ow9NqK8,696
5
- experimaestro/click.py,sha256=HTfjm4poqfG69MIYztrPWEei5OVnd154UCr2pJm6yp8,2390
6
- experimaestro/commandline.py,sha256=NS1ubme8DTJtDS2uWwdHLQiZsl6TSK1LkNxu39c3-cw,9463
7
- experimaestro/compat.py,sha256=dQqE2ZNHLM2wtdfp7fBRYMfC33qNehVf9J6FGRBUQhs,171
8
- experimaestro/connectors/__init__.py,sha256=hxcBSeVLk_7oyiIlS3l-9dGg1NGtShwvRD1tS7f8D2M,5461
9
- experimaestro/connectors/local.py,sha256=6tlaZb0tvNS2mjsapiVbfY7kIfLICJad137VXBMz-xo,5816
10
- experimaestro/connectors/ssh.py,sha256=hmvU6bCq6ZsB1Zjz273mzb9pdZdTinUhUqZFJTZl8Fg,8290
11
- experimaestro/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
- experimaestro/core/arguments.py,sha256=dW32opqNEsULYr6nR7Zk8PqHsSCbLPclfXofw27GTpI,5620
13
- experimaestro/core/context.py,sha256=Q8_ngiHRBZ0laavXRJNiDvdCprrnROVTWaHfrwMdlG4,2638
14
- experimaestro/core/objects.py,sha256=s9dt7U8LDT9XNVY7mowdt1DvuBH19EO4obips1ZBSHg,63989
15
- experimaestro/core/objects.pyi,sha256=Adi2OKCW0-B9GROlEUgxxBDK6SHUqccTBHTofRRJE9M,7131
16
- experimaestro/core/serialization.py,sha256=9tg5ebLF3YeZ_zG9DiTHPLthppvo7io710ohD_dcLTo,3836
17
- experimaestro/core/serializers.py,sha256=R_CAMyjjfU1oi-eHU6VlEUixJpFayGqEPaYu7VsD9xA,1197
18
- experimaestro/core/types.py,sha256=oTXD4UjMVoYn_Usxn2C4h6IGhYDTtekKB3O3hfeOynQ,20176
19
- experimaestro/core/utils.py,sha256=JfC3qGUS9b6FUHc2VxIYUI9ysNpXSQ1LjOBkjfZ8n7o,495
20
- experimaestro/exceptions.py,sha256=cUy83WHM3GeynxmMk6QRr5xsnpqUAdAoc-m3KQVrE2o,44
21
- experimaestro/experiments/__init__.py,sha256=GcpDUIbCvhnv6rxFdAp4wTffCVNTv-InY6fbQAlTy-o,159
22
- experimaestro/experiments/cli.py,sha256=MXJNRCvSuespStK8BSR82q-3NSPPXm6jq0Rsui4V2BU,7535
23
- experimaestro/experiments/configuration.py,sha256=8GRqyLG1leF_NbvbFzqpm0yM24O0WjSNmQzvnuLnxxw,1150
24
- experimaestro/filter.py,sha256=DN1PrmS9yXoOa5Xnv001zbxzpdzvcVZFI9xZFKZ1-6g,5794
25
- experimaestro/generators.py,sha256=9NQ_TfDfASkArLnO4PF7s5Yoo9KWjlna2DCPzk5gJOI,1230
26
- experimaestro/huggingface.py,sha256=gnVlr6SZnbutYz4PLH0Q77n1TRF-uk-dR-3UFzFqAY0,2956
27
- experimaestro/ipc.py,sha256=ltYqybPm_XfcQC3yiskMfhfI_1dREs-XRu0F83YsNws,1490
28
- experimaestro/launcherfinder/__init__.py,sha256=jIeT9uRKsIjUv-oyKt0MhFzXJJrSdpJKwM2vL9Sk5YY,294
29
- experimaestro/launcherfinder/base.py,sha256=NptPJ0e8CktdhOPejocSfI_B4mloeH_EmJrbXruUCSA,1020
30
- experimaestro/launcherfinder/parser.py,sha256=pYbfEJw7osnqZWm7fkVhQawhpNU8dLU_6vEjtXdc8E8,2279
31
- experimaestro/launcherfinder/registry.py,sha256=FKoacw7sIFxfYTRvaJpQs6o67qtBIDJobX0nmEUBU1Y,8927
32
- experimaestro/launcherfinder/specs.py,sha256=G8za6mEmkVxuZY_ab3OhWJIpONpcBMO_iXeB30sUbhI,6448
33
- experimaestro/launchers/__init__.py,sha256=lXn544sgJExr6uirILWzAXu_IfmfyqFZOt4OzRnjHXg,2525
34
- experimaestro/launchers/direct.py,sha256=VJzQNrUGnh-1Ovt6uw4yYIjXNu45QpR-_6V45lcZAfQ,1967
35
- experimaestro/launchers/oar.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
36
- experimaestro/launchers/slurm/__init__.py,sha256=R1Zwd4phZaXV8FwCYhzfB44n0V4cf-hBQzOc6NkFQ0s,41
37
- experimaestro/launchers/slurm/base.py,sha256=nMoSBMbA901OcneSHVXj8PXGqfv4mVN5G-NPDZ0HXO0,14135
38
- experimaestro/launchers/slurm/cli.py,sha256=c-S0TImvhZ-ZxFs5-5T2GRDm5manRYRiYudpQLHwsrQ,818
39
- experimaestro/launchers/slurm/configuration.py,sha256=mtozeuvIZmEfHlvEylwCgBrlVRFHT_jWNAKVxR4Tz1E,19357
40
- experimaestro/locking.py,sha256=hPT-LuDGZTijpbme8O0kEoB9a3WjdVzI2h31OT44UxE,1477
41
- experimaestro/mkdocs/__init__.py,sha256=u3AT-uBu3PqyZZXBr6U_ffioEoSZngDdw85005DbyDA,34
42
- experimaestro/mkdocs/annotations.py,sha256=qpDw8lzrxpsOShXcpcP_LAeR3UhiIXAybG8UvS64-OU,263
43
- experimaestro/mkdocs/base.py,sha256=SwLh9s7BZfrTAZdBaealSqVeLAroDSwLLMOHmLCxMPQ,16716
44
- experimaestro/mkdocs/metaloader.py,sha256=qCqnTWhlgxql-oe46E8AbvYdoM311-lQh-msmPnbllQ,1481
45
- experimaestro/mkdocs/style.css,sha256=42kJ6Ozq_n4Iw5UfJ4-nO1u-HN3ELvV7Vhvj1Xkn7rQ,66
46
- experimaestro/mypy.py,sha256=M39VFuDrab-ymlCDIF5jys9oKpTwnuBPzb1T8Un5J3s,285
47
- experimaestro/notifications.py,sha256=936tdH_KYJYBvPVu-ii4Sn_nso_TTs5GqAfO1FDYRgc,8710
48
- experimaestro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- experimaestro/rpyc.py,sha256=ZRKol-3tVoeoUITLNFenLF4dhWBLW_FvSV_GvsypmeI,3605
50
- experimaestro/run.py,sha256=tH9oG7o8_c7cp0cyBLIzWN7CVYjtz72SChz2X-FjYhs,4455
51
- experimaestro/scheduler/__init__.py,sha256=ERmmOxz_9mUkIuccNbzUa5Y6gVLLVDdyc4cCxbCCUbY,20
52
- experimaestro/scheduler/base.py,sha256=1SkwjSbOKTHs_pAB44z63xmcsgYrXsxxluO2MhJW5uU,31450
53
- experimaestro/scheduler/dependencies.py,sha256=n9XegwrmjayOIxt3xhuTEBVEBGSq4oeVdzz-FviDGXo,1994
54
- experimaestro/scheduler/environment.py,sha256=ZaSHSgAcZBmIj7b_eS1OvNQOuVLFvuw-qvqtYrc3Vms,2393
55
- experimaestro/scheduler/services.py,sha256=aCKkNZMULlceabqf-kOs_-C7KPINnjU3Q-I00o5x6iY,2189
56
- experimaestro/scheduler/workspace.py,sha256=xATJi6-GJcpdwB4alliJnmAuvwt-URUiUKUfq5scUac,1731
57
- experimaestro/scriptbuilder.py,sha256=AYh2LdO__mrCWuFa1JWvdfKm_wnk5hHDr_OjHo1voIE,4357
58
- experimaestro/server/__init__.py,sha256=F2bzLf2q29Haj2OIbPA26r5WVbaipBNylIozg-As758,10854
59
- experimaestro/server/data/016b4a6cdced82ab3aa1.ttf,sha256=AD8RVBhWpkmmyCNcYmbIk2IkxdYJ5RRC2iTcVVbRT78,189684
60
- experimaestro/server/data/0c35d18bf06992036b69.woff2,sha256=gmX2R4Y5fWuDLRygqv3xSa2E5ydZ__qfcnLpGg-wFdE,128352
61
- experimaestro/server/data/219aa9140e099e6c72ed.woff2,sha256=0xv7gdVueQ4Nni-gC4Pfj3FZ-QYxFM3AFIWbHUg5Vsg,135984
62
- experimaestro/server/data/3a4004a46a653d4b2166.woff,sha256=-jiI7_pbxjPGuygaSdiSf-eqACEsn8D3M4yBnsXMFu4,156236
63
- experimaestro/server/data/3baa5b8f3469222b822d.woff,sha256=PTTzCsa7Ivpb9Y0-Uue7bezZnFcdanfV36e-eL7PK1A,339600
64
- experimaestro/server/data/4d73cb90e394b34b7670.woff,sha256=_YT4i0lwQNT31ejJ-GNa740-cGwPpS4rb6zxTu6H5SI,164912
65
- experimaestro/server/data/4ef4218c522f1eb6b5b1.woff2,sha256=Hmc7qFiWVHlNKtN1woc_GHCkV48rPoR9zEB63QO1esI,215704
66
- experimaestro/server/data/50701fbb8177c2dde530.ttf,sha256=fYGhp8wH4asZbkBJbT9DWel1n3nY7Ig6Rmde5pkSlQs,63348
67
- experimaestro/server/data/5d681e2edae8c60630db.woff,sha256=HBNbFRpB4jE4sy0wZePw6rIwpnrv6SXplwnL4QK9YEw,206260
68
- experimaestro/server/data/6f420cf17cc0d7676fad.woff2,sha256=NdyopxRaF8jRMG8lo8oJFXjhU5bwsi1h645zJirHVXc,155276
69
- experimaestro/server/data/878f31251d960bd6266f.woff2,sha256=-q5vwKqUzFveUHZkfIF6IyBglqHL7aENHG89idYWPtE,109808
70
- experimaestro/server/data/b041b1fa4fe241b23445.woff2,sha256=kWnYvnqBd-WpKk0Ett5_ZQS5OFc79NpYiYccTzdtOEk,24488
71
- experimaestro/server/data/b6879d41b0852f01ed5b.woff2,sha256=iGyGESqATvHd0csgavTIxA40tzwmZSyiMUBKo1prMNk,150020
72
- experimaestro/server/data/c380809fd3677d7d6903.woff2,sha256=yUjxJjNBaZs8HpxV2NDz5EZmnQ8rnVVJTGFpIiwCQ6Y,173620
73
- experimaestro/server/data/d75e3fd1eb12e9bd6655.ttf,sha256=zqebNFyvSdYiMJi4orBNcCc-jXxrnj0Dz396JneT6ao,394668
74
- experimaestro/server/data/f882956fd323fd322f31.woff,sha256=jpR1jFTCboWqzy09yhrXqtpZBKRgI4-uSEPrxEvELtw,182028
75
- experimaestro/server/data/favicon.ico,sha256=PRD32mxgMXg0AIFmjErFs66XQ8qaJiqw_NMS-7n0i90,3870
76
- experimaestro/server/data/index.css,sha256=JTjLM7vCHt6ShbNYXZ27MJsYcX_KNuVVwg05OcTfqmU,418843
77
- experimaestro/server/data/index.css.map,sha256=ieCWV1uODCJdH3Lgoekp2WGaphqZird27UsGqFlzEI0,576970
78
- experimaestro/server/data/index.html,sha256=LcXSo2QU5jcmqgmFhVWWOG_CfGyrqdm3H8jwkdRgdGU,706
79
- experimaestro/server/data/index.js,sha256=f0GvRsfsQ4ayP4en7Q-raZ6buwRXLCswCbzVaxQEDWY,3734128
80
- experimaestro/server/data/index.js.map,sha256=za3MUIjzyyGRI6F5KuBFMTgrFU55xgt0LBrw-4YPHag,3904832
81
- experimaestro/server/data/login.html,sha256=4dvhSOn6DHp_tbmzqIKrqq2uAo0sAUbgLVD0lTnPp4s,511
82
- experimaestro/server/data/manifest.json,sha256=EpzHQZzrGh9c1Kf63nrqvI33H1cm0nLYfdh5lDm8ijI,318
83
- experimaestro/settings.py,sha256=nZO-667XgM-aC6A-RHw1C4gglDlDeIIIJAxs83IgRyI,1807
84
- experimaestro/sphinx/__init__.py,sha256=heovvtwbYToZM-b6HNi4pJdBoo_97usdEawhMGSK3bk,9560
85
- experimaestro/sphinx/static/experimaestro.css,sha256=0rEgt1LoDdD-a_R5rVfWZ19zD1gR-1L7q3f4UibIB58,294
86
- experimaestro/taskglobals.py,sha256=aBjPpo4HQp6E6M3GQ8L6PR4rK2Lu0kD5dS1WjnaGgDc,499
87
- experimaestro/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
- experimaestro/tests/conftest.py,sha256=CtC6TvUS9sbgSc3pZYyTyEvfilnNGPpOUJvi-jn6twI,695
89
- experimaestro/tests/connectors/bin/executable.py,sha256=RmCrH_MQiHuPRyeTP2jut0ASpfvHEH1QCxRnlvDZW2s,21
90
- experimaestro/tests/connectors/test_local.py,sha256=hMX3maYYRABGXqRZFZbTWjf-jcvPkBq9nReLtDwLydk,1204
91
- experimaestro/tests/connectors/utils.py,sha256=9sM3Pwy2nRfSr7pwQoOoSCDhBrEcDsEElI08Fmrw_gU,702
92
- experimaestro/tests/definitions_types.py,sha256=euiif3C3n4XhncB4KDTEzWwIOiTEfOIAszXbMKs0P9U,414
93
- experimaestro/tests/launchers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
94
- experimaestro/tests/launchers/bin/sacct,sha256=9mmRAYCE4RBSBOf7aanhFw9hzujOUlcw3OJmZJ3K-Wc,639
95
- experimaestro/tests/launchers/bin/sbatch,sha256=gQvJEzCz4OCPeLCElaD6tmbPeoLuGLlklkWiPCHBxis,1177
96
- experimaestro/tests/launchers/bin/test.py,sha256=MbxdAd2Sf7T-Hj3ldmrtngbQuBdNOkXjMcICJTf39wI,477
97
- experimaestro/tests/launchers/common.py,sha256=TAFDodyp36T8OaiUwxCv06gzbGYacKiD3sA6UekCfpk,2468
98
- experimaestro/tests/launchers/config_slurm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- experimaestro/tests/launchers/config_slurm/launchers.yaml,sha256=yb6gHNIguntCt2b4pwTZZ5xQHgXlUwnDNRvOIUd-tkk,2497
100
- experimaestro/tests/launchers/test_local.py,sha256=4oGgWH2YgkEm-Muu6s4cwlgriXtYr5xAd72DVoIw_Yk,717
101
- experimaestro/tests/launchers/test_slurm.py,sha256=5s-mMtqvE62xJ_GijLd4Hmsu3vWCRCbFy7cPce8YKsM,2534
102
- experimaestro/tests/restart.py,sha256=pYX5Tp6KaIYmSK8iqv-j98pbmExo-f9U3jdbW35PfW4,4016
103
- experimaestro/tests/restart_main.py,sha256=iAFzw0H1q9Aq7t6TrSAj236QBnYU52qx0VF-2dz6tx4,295
104
- experimaestro/tests/scripts/notifyandwait.py,sha256=3BLXLI5XgP3BnKf6sQ56oKoMVqR80VMHmploJ3JO6Ko,407
105
- experimaestro/tests/scripts/waitforfile.py,sha256=EDT-TuFi2fU_qt51K5EmAxjw_OnJKkBW7UCfhrtDbVw,120
106
- experimaestro/tests/task_tokens.py,sha256=vgqUa-S_YC2Id9pGOSv40qFTwq1WGZkFhr556Z5o678,477
107
- experimaestro/tests/tasks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
108
- experimaestro/tests/tasks/all.py,sha256=hrI2CDyeaYrp2IPzXWif-Uu1Uirkndmuih3Jj09CKZA,1851
109
- experimaestro/tests/tasks/foreign.py,sha256=7IAF525mmMORxSPKQmU1z1B84XPmwsO8PGdxBvYknwU,153
110
- experimaestro/tests/test_checkers.py,sha256=Kg5frDNRE3pvWVmmYzyk0tJFNO885KOrK48lSu-NlYA,403
111
- experimaestro/tests/test_dependencies.py,sha256=xfWrSkvjT45G4FSCL535m1huLT2ghmyW7kvP_XvvCJQ,2005
112
- experimaestro/tests/test_findlauncher.py,sha256=r34dci01FK9YpjtTHR9fIQ7AMHaMXQOrWtarytcf_Us,2967
113
- experimaestro/tests/test_forward.py,sha256=XkZ2iOPETVj-kbTyniOQU9gyHXdfvn89GTwpMq9J6qc,780
114
- experimaestro/tests/test_identifier.py,sha256=fnl7jCUAg86npRrS3yeXtb9JysSKhs5czgFzW9yJ9Q8,13397
115
- experimaestro/tests/test_instance.py,sha256=awIIMnhiec_qDO6jZBqWDR13ReTzh3arK_60QDY6TLQ,1540
116
- experimaestro/tests/test_objects.py,sha256=6PSG5FtqkiLg2OK26ZzvBYbJYPbFpyDYZtKS-DbiXIs,2037
117
- experimaestro/tests/test_outputs.py,sha256=DYzPk5TT_yLumy8SsQbl-S66ivVxJ-ERFrZ68KQZ4KU,781
118
- experimaestro/tests/test_param.py,sha256=FcRF8HbjoW96SR6cTW3fqracLM4BivAsTq0iZvl14Ow,6405
119
- experimaestro/tests/test_progress.py,sha256=wtIGQzlV3ldd_wMng11LinVESchW-1J954mCJNlG28E,7580
120
- experimaestro/tests/test_serializers.py,sha256=xSCezAM9yH_Ix1wr7j0au9SyBv9DtZ7b0zs2-Ynt-VM,2338
121
- experimaestro/tests/test_snippets.py,sha256=rojnyDjtmAMnSuDUj6Bv9XEgdP8oQf2nVc132JF8vsM,3081
122
- experimaestro/tests/test_ssh.py,sha256=JhwsS4lJWQeMhtnDfJhQqJ5dwEThqvcNBBgUq1EWvk0,979
123
- experimaestro/tests/test_tags.py,sha256=kanKx0TOpS7vNs5jOs-J8IuZjyUJ9zMJl2V8dfOh4Lo,1975
124
- experimaestro/tests/test_tasks.py,sha256=bUSB_UT1MTN2P_RPHd4AT5NK-DFsgCVeFKSiXu3bEz8,9429
125
- experimaestro/tests/test_tokens.py,sha256=cW9qQU4PhbQY4_SgK8ICmKcYq8JVvLRTOYZzdtoS5N8,7826
126
- experimaestro/tests/test_types.py,sha256=2BbdB4o_2HvFkyhiQ2X3oHM49xcck-phT873NF-p8lA,1257
127
- experimaestro/tests/test_validation.py,sha256=ziETaISLnpnAgNz8LRnxOOJzbNUT6PjW5G5IxYOhSnU,4339
128
- experimaestro/tests/token_reschedule.py,sha256=V8lAbjTWTatBrBjxde_KN-fDEI4sQ3HNr4scCXBU6fI,1701
129
- experimaestro/tests/utils.py,sha256=41krZFgUaCxCYBQPmo5dNFDd9W6RU8ZzzyzY3FyutUI,3805
130
- experimaestro/tokens.py,sha256=aHT6lN4YLF0ujXl0nNu1sSSx-2ebrYiZFfrFvvmsQ1s,14681
131
- experimaestro/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
132
- experimaestro/tools/diff.py,sha256=FBCwupPrSwkEOcqYu0NWe7LTkuOW6r-_btoCel2_k_I,3436
133
- experimaestro/tools/documentation.py,sha256=O2UzjzodPqGot3YSe6NYlK7S42XpplakUdqxFpvjqHQ,9184
134
- experimaestro/tools/jobs.py,sha256=63bXhJ7RGdczLU_nxu2skGn-9dwgr4r5pD23qH4WeBA,3516
135
- experimaestro/typingutils.py,sha256=Gtsz_nU-t2CBVZP-EeUn-uAlxcbcS9Hp03Xy-TLDY-Q,3334
136
- experimaestro/utils/__init__.py,sha256=BdYguxAbR1jOQPV36OgGA31itaMvBJ6WVPV6b4Jn4xw,2434
137
- experimaestro/utils/asyncio.py,sha256=zEQQqZW6uHGnFknp_udt9WjjtqLNNMWun9TPL6FOF64,601
138
- experimaestro/utils/jobs.py,sha256=42FAdKcn_v_-M6hcQZPUBr9kbDt1eVsk3a4E8Gc4eu8,2394
139
- experimaestro/utils/jupyter.py,sha256=JcEo2yQK7x3Cr1tNl5FqGMZOICxCv9DwMvL5xsWdQPk,2183
140
- experimaestro/utils/resources.py,sha256=gDjkrRjo7GULWyXmNXm_u1uqzEIAoAvJydICk56nOQw,1006
141
- experimaestro/utils/settings.py,sha256=jpFMqF0DLL4_P1xGal0zVR5cOrdD8O0Y2IOYvnRgN3k,793
142
- experimaestro/utils/yaml.py,sha256=jEjqXqUtJ333wNUdIc0o3LGvdsTQ9AKW9a9CCd-bmGU,6766
143
- experimaestro/xpmutils.py,sha256=S21eMbDYsHfvmZ1HmKpq5Pz5O-1HnCLYxKbyTBbASyQ,638
144
- experimaestro-1.5.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
145
- experimaestro-1.5.1.dist-info/METADATA,sha256=A79XLTCvr5By9ybZMel3_0FZduD20ww4kOamF-4xeQA,6265
146
- experimaestro-1.5.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
147
- experimaestro-1.5.1.dist-info/entry_points.txt,sha256=PhaEili_fDgn5q7rBJGip_uhGkRBq5l3Yuhg91zkcbk,574
148
- experimaestro-1.5.1.dist-info/RECORD,,