experimaestro 1.15.2__py3-none-any.whl → 1.16.0__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.
- experimaestro/cli/__init__.py +2 -2
- experimaestro/cli/filter.py +1 -1
- experimaestro/connectors/__init__.py +2 -2
- experimaestro/core/arguments.py +1 -7
- experimaestro/core/types.py +1 -4
- experimaestro/launcherfinder/registry.py +6 -6
- experimaestro/launchers/slurm/base.py +1 -1
- experimaestro/scheduler/base.py +0 -2
- experimaestro/scheduler/workspace.py +44 -1
- experimaestro/server/__init__.py +12 -6
- experimaestro/tests/test_param.py +1 -4
- experimaestro/utils/resources.py +1 -1
- {experimaestro-1.15.2.dist-info → experimaestro-1.16.0.dist-info}/METADATA +1 -1
- {experimaestro-1.15.2.dist-info → experimaestro-1.16.0.dist-info}/RECORD +17 -18
- experimaestro/compat.py +0 -6
- {experimaestro-1.15.2.dist-info → experimaestro-1.16.0.dist-info}/WHEEL +0 -0
- {experimaestro-1.15.2.dist-info → experimaestro-1.16.0.dist-info}/entry_points.txt +0 -0
- {experimaestro-1.15.2.dist-info → experimaestro-1.16.0.dist-info}/licenses/LICENSE +0 -0
experimaestro/cli/__init__.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# flake8: noqa: T201
|
|
2
2
|
import sys
|
|
3
3
|
from typing import Set, Optional
|
|
4
|
-
import pkg_resources
|
|
5
4
|
from itertools import chain
|
|
6
5
|
from shutil import rmtree
|
|
7
6
|
import click
|
|
@@ -15,6 +14,7 @@ import experimaestro
|
|
|
15
14
|
from experimaestro.experiments.cli import experiments_cli
|
|
16
15
|
import experimaestro.launcherfinder.registry as launcher_registry
|
|
17
16
|
from experimaestro.settings import find_workspace
|
|
17
|
+
from importlib.metadata import entry_points
|
|
18
18
|
|
|
19
19
|
# --- Command line main options
|
|
20
20
|
logging.basicConfig(level=logging.INFO)
|
|
@@ -274,7 +274,7 @@ class Launchers(click.MultiCommand):
|
|
|
274
274
|
@cached_property
|
|
275
275
|
def commands(self):
|
|
276
276
|
map = {}
|
|
277
|
-
for ep in
|
|
277
|
+
for ep in entry_points(group=f"experimaestro.{self.name}"):
|
|
278
278
|
if get_cli := getattr(ep.load(), "get_cli", None):
|
|
279
279
|
map[ep.name] = get_cli()
|
|
280
280
|
return map
|
experimaestro/cli/filter.py
CHANGED
|
@@ -4,7 +4,7 @@ from typing import Any, Callable, Dict, List, Optional
|
|
|
4
4
|
import pyparsing as pp
|
|
5
5
|
from pathlib import Path
|
|
6
6
|
import json
|
|
7
|
-
from
|
|
7
|
+
from functools import cached_property
|
|
8
8
|
import re
|
|
9
9
|
from experimaestro.scheduler import JobState
|
|
10
10
|
|
|
@@ -16,7 +16,7 @@ from experimaestro.utils import logger
|
|
|
16
16
|
from experimaestro.locking import Lock
|
|
17
17
|
from experimaestro.tokens import Token
|
|
18
18
|
from experimaestro.utils.asyncio import asyncThreadcheck
|
|
19
|
-
import
|
|
19
|
+
from importlib.metadata import entry_points
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class RedirectType(enum.Enum):
|
|
@@ -101,7 +101,7 @@ class Process:
|
|
|
101
101
|
"""Get a handler"""
|
|
102
102
|
if Process.HANDLERS is None:
|
|
103
103
|
Process.HANDLERS = {}
|
|
104
|
-
for ep in
|
|
104
|
+
for ep in entry_points(group="experimaestro.process"):
|
|
105
105
|
logging.debug("Adding process handler for type %s", ep.name)
|
|
106
106
|
handler = ep.load()
|
|
107
107
|
Process.HANDLERS[ep.name] = handler
|
experimaestro/core/arguments.py
CHANGED
|
@@ -3,16 +3,10 @@
|
|
|
3
3
|
from typing import Optional, TypeVar, TYPE_CHECKING, Callable, Any
|
|
4
4
|
from experimaestro.typingutils import get_optional
|
|
5
5
|
from pathlib import Path
|
|
6
|
-
import
|
|
6
|
+
from typing import Annotated
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
|
-
from typing_extensions import Annotated
|
|
10
9
|
import experimaestro.core.types
|
|
11
|
-
else:
|
|
12
|
-
if sys.version_info.major == 3 and sys.version_info.minor < 9:
|
|
13
|
-
from typing_extensions import Annotated
|
|
14
|
-
else:
|
|
15
|
-
from typing import Annotated
|
|
16
10
|
|
|
17
11
|
|
|
18
12
|
class Argument:
|
experimaestro/core/types.py
CHANGED
|
@@ -13,10 +13,7 @@ from enum import Enum
|
|
|
13
13
|
import ast
|
|
14
14
|
import textwrap
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
from typing_extensions import _AnnotatedAlias, get_type_hints
|
|
18
|
-
else:
|
|
19
|
-
from typing import _AnnotatedAlias, get_type_hints
|
|
16
|
+
from typing import _AnnotatedAlias, get_type_hints
|
|
20
17
|
|
|
21
18
|
if typing.TYPE_CHECKING:
|
|
22
19
|
from experimaestro.scheduler.base import Job
|
|
@@ -6,10 +6,10 @@ from typing import ClassVar, Dict, Optional, Set, Type, Union
|
|
|
6
6
|
from pathlib import Path
|
|
7
7
|
import typing
|
|
8
8
|
from omegaconf import DictConfig, OmegaConf, SCMode
|
|
9
|
-
import pkg_resources
|
|
10
9
|
from experimaestro.utils import logger
|
|
11
10
|
from .base import ConnectorConfiguration, TokenConfiguration
|
|
12
11
|
from .specs import HostRequirement, RequirementUnion
|
|
12
|
+
from importlib.metadata import entry_points
|
|
13
13
|
|
|
14
14
|
if typing.TYPE_CHECKING:
|
|
15
15
|
from experimaestro.launchers import Launcher
|
|
@@ -59,9 +59,9 @@ class LauncherRegistry:
|
|
|
59
59
|
).expanduser()
|
|
60
60
|
|
|
61
61
|
if LauncherRegistry.CURRENT_CONFIG_DIR not in LauncherRegistry.INSTANCES:
|
|
62
|
-
LauncherRegistry.INSTANCES[
|
|
63
|
-
LauncherRegistry.CURRENT_CONFIG_DIR
|
|
64
|
-
|
|
62
|
+
LauncherRegistry.INSTANCES[LauncherRegistry.CURRENT_CONFIG_DIR] = (
|
|
63
|
+
LauncherRegistry(LauncherRegistry.CURRENT_CONFIG_DIR)
|
|
64
|
+
)
|
|
65
65
|
|
|
66
66
|
return LauncherRegistry.INSTANCES[LauncherRegistry.CURRENT_CONFIG_DIR]
|
|
67
67
|
|
|
@@ -75,10 +75,10 @@ class LauncherRegistry:
|
|
|
75
75
|
self.find_launcher_fn = None
|
|
76
76
|
|
|
77
77
|
# Use entry points for connectors and launchers
|
|
78
|
-
for entry_point in
|
|
78
|
+
for entry_point in entry_points(group="experimaestro.connectors"):
|
|
79
79
|
entry_point.load().init_registry(self)
|
|
80
80
|
|
|
81
|
-
for entry_point in
|
|
81
|
+
for entry_point in entry_points(group="experimaestro.tokens"):
|
|
82
82
|
entry_point.load().init_registry(self)
|
|
83
83
|
|
|
84
84
|
# Register the find launcher function if it exists
|
|
@@ -20,7 +20,7 @@ from experimaestro.launcherfinder.registry import (
|
|
|
20
20
|
from experimaestro.utils import ThreadingCondition
|
|
21
21
|
from experimaestro.tests.connectors.utils import OutputCaptureHandler
|
|
22
22
|
from experimaestro.utils.asyncio import asyncThreadcheck
|
|
23
|
-
from
|
|
23
|
+
from functools import cached_property
|
|
24
24
|
from experimaestro.launchers import Launcher
|
|
25
25
|
from experimaestro.scriptbuilder import PythonScriptBuilder
|
|
26
26
|
from experimaestro.connectors import (
|
experimaestro/scheduler/base.py
CHANGED
|
@@ -992,9 +992,7 @@ class experiment:
|
|
|
992
992
|
self.server.start()
|
|
993
993
|
|
|
994
994
|
self.workspace.__enter__()
|
|
995
|
-
(self.workspace.path / ".__experimaestro__").touch()
|
|
996
995
|
|
|
997
|
-
global SIGNAL_HANDLER
|
|
998
996
|
# Number of unfinished jobs
|
|
999
997
|
self.unfinishedJobs = 0
|
|
1000
998
|
self.taskOutputQueueSize = 0
|
|
@@ -2,10 +2,14 @@ from collections import ChainMap
|
|
|
2
2
|
from enum import Enum
|
|
3
3
|
from functools import cached_property
|
|
4
4
|
from pathlib import Path
|
|
5
|
-
from typing import
|
|
5
|
+
from typing import Optional
|
|
6
6
|
from experimaestro.settings import WorkspaceSettings, Settings
|
|
7
7
|
|
|
8
8
|
|
|
9
|
+
# Current workspace version
|
|
10
|
+
WORKSPACE_VERSION = 0
|
|
11
|
+
|
|
12
|
+
|
|
9
13
|
class RunMode(str, Enum):
|
|
10
14
|
NORMAL = "normal"
|
|
11
15
|
"""Normal run"""
|
|
@@ -54,6 +58,45 @@ class Workspace:
|
|
|
54
58
|
self.env = ChainMap({}, workspace_settings.env, settings.env)
|
|
55
59
|
|
|
56
60
|
def __enter__(self):
|
|
61
|
+
# Check and update workspace version
|
|
62
|
+
version_file = self.path / ".__experimaestro__"
|
|
63
|
+
|
|
64
|
+
if version_file.exists():
|
|
65
|
+
# Read existing version
|
|
66
|
+
content = version_file.read_text().strip()
|
|
67
|
+
if content == "":
|
|
68
|
+
# Empty file = v0
|
|
69
|
+
workspace_version = 0
|
|
70
|
+
else:
|
|
71
|
+
try:
|
|
72
|
+
workspace_version = int(content)
|
|
73
|
+
except ValueError:
|
|
74
|
+
raise RuntimeError(
|
|
75
|
+
f"Invalid workspace version file at {version_file}: "
|
|
76
|
+
f"expected integer, got '{content}'"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
# Check if workspace version is supported
|
|
80
|
+
if workspace_version > WORKSPACE_VERSION:
|
|
81
|
+
raise RuntimeError(
|
|
82
|
+
f"Workspace version {workspace_version} is not supported by "
|
|
83
|
+
f"this version of experimaestro (supports up to version "
|
|
84
|
+
f"{WORKSPACE_VERSION}). Please upgrade experimaestro."
|
|
85
|
+
)
|
|
86
|
+
if workspace_version < WORKSPACE_VERSION:
|
|
87
|
+
raise RuntimeError(
|
|
88
|
+
f"Workspace version {workspace_version} is not supported by "
|
|
89
|
+
"this version of experimaestro (please upgrade the experimaestro "
|
|
90
|
+
"workspace)"
|
|
91
|
+
)
|
|
92
|
+
else:
|
|
93
|
+
# New workspace - create the file
|
|
94
|
+
workspace_version = WORKSPACE_VERSION
|
|
95
|
+
|
|
96
|
+
# Write current version to file (update empty v0 workspaces)
|
|
97
|
+
if not version_file.exists() or version_file.read_text().strip() == "":
|
|
98
|
+
version_file.write_text(str(WORKSPACE_VERSION))
|
|
99
|
+
|
|
57
100
|
self.old_workspace = Workspace.CURRENT
|
|
58
101
|
Workspace.CURRENT = self
|
|
59
102
|
|
experimaestro/server/__init__.py
CHANGED
|
@@ -5,7 +5,7 @@ import platform
|
|
|
5
5
|
import socket
|
|
6
6
|
import uuid
|
|
7
7
|
from experimaestro.scheduler.base import Job
|
|
8
|
-
import
|
|
8
|
+
from importlib.metadata import files
|
|
9
9
|
import http
|
|
10
10
|
import threading
|
|
11
11
|
from typing import Optional, Tuple
|
|
@@ -143,7 +143,7 @@ def proxy_response(base_url: str, request: Request, path: str):
|
|
|
143
143
|
return flask_response
|
|
144
144
|
|
|
145
145
|
|
|
146
|
-
def start_app(server: "Server"):
|
|
146
|
+
def start_app(server: "Server"): # noqa: C901
|
|
147
147
|
logging.debug("Starting Flask server...")
|
|
148
148
|
app = Flask("experimaestro")
|
|
149
149
|
|
|
@@ -256,10 +256,16 @@ def start_app(server: "Server"):
|
|
|
256
256
|
|
|
257
257
|
datapath = "data/%s" % path
|
|
258
258
|
logging.debug("Looking for %s", datapath)
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
259
|
+
try:
|
|
260
|
+
package_files = files("experimaestro.server")
|
|
261
|
+
resource_file = package_files / datapath
|
|
262
|
+
if resource_file.is_file():
|
|
263
|
+
mimetype = MIMETYPES[datapath.rsplit(".", 1)[1]]
|
|
264
|
+
content = resource_file.read_bytes()
|
|
265
|
+
return Response(content, mimetype=mimetype)
|
|
266
|
+
except (FileNotFoundError, KeyError):
|
|
267
|
+
pass
|
|
268
|
+
|
|
263
269
|
return Response("Page not found", status=404)
|
|
264
270
|
|
|
265
271
|
# Start the app
|
|
@@ -5,7 +5,6 @@ Test annotation handling for configurations and tasks
|
|
|
5
5
|
|
|
6
6
|
# Annotation specific tests
|
|
7
7
|
|
|
8
|
-
import sys
|
|
9
8
|
from pathlib import Path
|
|
10
9
|
from typing import Dict, Optional, List
|
|
11
10
|
from experimaestro.core.context import SerializationContext
|
|
@@ -336,6 +335,4 @@ def test_help():
|
|
|
336
335
|
assert xpmtype.description.strip() == "Long description of A."
|
|
337
336
|
assert xpmtype.arguments["y"].help == "Parameter y"
|
|
338
337
|
|
|
339
|
-
|
|
340
|
-
if sys.version_info.major == 3 and sys.version_info.minor > 8:
|
|
341
|
-
assert xpmtype.arguments["x"].help == "Parameter x"
|
|
338
|
+
assert xpmtype.arguments["x"].help == "Parameter x"
|
experimaestro/utils/resources.py
CHANGED
|
@@ -2,17 +2,16 @@ experimaestro/__init__.py,sha256=XCSuw7ozZZxL9ugnkIhqAaG7CQ6dE9NeSiDJ93QFH_I,164
|
|
|
2
2
|
experimaestro/__main__.py,sha256=Dv9lFl03yt1dswd0Xb9NIJRgHpA5_IwH4RfQPEHyFz0,158
|
|
3
3
|
experimaestro/annotations.py,sha256=wyVmPlkXuoT6IxJ-ti8bFo6HxhGY1BYBxM5-pib6shU,8773
|
|
4
4
|
experimaestro/checkers.py,sha256=ZCMbnE_GFC5compWjt-fuHhPImi9fCPjImF8Ow9NqK8,696
|
|
5
|
-
experimaestro/cli/__init__.py,sha256=
|
|
6
|
-
experimaestro/cli/filter.py,sha256=
|
|
5
|
+
experimaestro/cli/__init__.py,sha256=NcALMvzZeSR1JMcllS7y9gl2BvIBxXM64f-ipVCx8No,9620
|
|
6
|
+
experimaestro/cli/filter.py,sha256=Y_ykQ0KcU7HeW7E-U_mtpkyMAZtO3EEOHxSy9tlhu2k,6302
|
|
7
7
|
experimaestro/cli/jobs.py,sha256=BnejUnhKAgMBVgwANfQYj5mLzknXVohveg7NpovNZ8o,7925
|
|
8
8
|
experimaestro/click.py,sha256=6BkeQHEgcxaxzq3xEvEEzwzuBj5-dkfrpOGikuA8L00,1377
|
|
9
9
|
experimaestro/commandline.py,sha256=MJIJcfppGCjNA8ozxXUzbUSeDOlTExuzhxryGx3_lIo,9314
|
|
10
|
-
experimaestro/
|
|
11
|
-
experimaestro/connectors/__init__.py,sha256=UKhDU3uv9jFH37oUb0JiejrekA85xtEirn79pA7DFhI,6125
|
|
10
|
+
experimaestro/connectors/__init__.py,sha256=_8jETUTM3Ecdm8azNrxCSCXyXWso0mwDFnTrcNV3a4w,6129
|
|
12
11
|
experimaestro/connectors/local.py,sha256=lCGIubqmUJZ1glLtLRXOgakTMfEaEmFtNkEcw9qV5vw,6143
|
|
13
12
|
experimaestro/connectors/ssh.py,sha256=5giqvv1y0QQKF-GI0IFUzI_Z5H8Bj9EuL_Szpvk899Q,8600
|
|
14
13
|
experimaestro/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
-
experimaestro/core/arguments.py,sha256=
|
|
14
|
+
experimaestro/core/arguments.py,sha256=ouEyEyOIneKTKD1nSkHjQkbtiTXNSC8lHqCtB6ERnd8,6516
|
|
16
15
|
experimaestro/core/callbacks.py,sha256=59JfeUgWcCCdIQ3pvh-xNnoRp9BX8f4iOAkgm16wBzE,1660
|
|
17
16
|
experimaestro/core/context.py,sha256=1tLmX7WcgEKSbGw77vfziTzS8KNsoZJ02JBWMBCqqOk,2606
|
|
18
17
|
experimaestro/core/identifier.py,sha256=5r2F425yX7Sfeub3EJZCs2Q4Qggifgi4uxMGcpI-ex0,10473
|
|
@@ -23,7 +22,7 @@ experimaestro/core/objects/config_walk.py,sha256=SYBrGuT7HV12no9mQd1HjnebiyygHyO
|
|
|
23
22
|
experimaestro/core/objects.pyi,sha256=Q1tq4F8LrExPm00E-P5aaygxMvViYZqhHvByo_TTZRE,6315
|
|
24
23
|
experimaestro/core/serialization.py,sha256=CSPEwOzlDsgAz6V2og-TgyU0RXDtzt_nXaoXFZleDZE,5775
|
|
25
24
|
experimaestro/core/serializers.py,sha256=iOBuASEgD8dRKPnL16iOLBsM0GHChCJgjBd7LixFui4,919
|
|
26
|
-
experimaestro/core/types.py,sha256=
|
|
25
|
+
experimaestro/core/types.py,sha256=7sHDPmWQRZZBDtdqShxrIXkJiQM9Z37gLRNYFQGSMSo,21602
|
|
27
26
|
experimaestro/core/utils.py,sha256=JfC3qGUS9b6FUHc2VxIYUI9ysNpXSQ1LjOBkjfZ8n7o,495
|
|
28
27
|
experimaestro/exceptions.py,sha256=cUy83WHM3GeynxmMk6QRr5xsnpqUAdAoc-m3KQVrE2o,44
|
|
29
28
|
experimaestro/experiments/__init__.py,sha256=GcpDUIbCvhnv6rxFdAp4wTffCVNTv-InY6fbQAlTy-o,159
|
|
@@ -35,13 +34,13 @@ experimaestro/ipc.py,sha256=Xn3tYME83jLEB0nFak3DwEIhpL5IRZpCl3jirBF_jl4,1570
|
|
|
35
34
|
experimaestro/launcherfinder/__init__.py,sha256=qRUDyv3B9UsAM8Q31mRrZrTZox0AptwdmOY4f2K-TUo,279
|
|
36
35
|
experimaestro/launcherfinder/base.py,sha256=q47SsF_cXdo5O6ZhFKn5385WVFcx8Wd-BcEpd6tRpbs,515
|
|
37
36
|
experimaestro/launcherfinder/parser.py,sha256=MIHhjs2sTVxLHLcc1CgFid9XxhInXker8QdA-GBA-Bk,2364
|
|
38
|
-
experimaestro/launcherfinder/registry.py,sha256=
|
|
37
|
+
experimaestro/launcherfinder/registry.py,sha256=dUsGtSbojUZKt_gwB4xBOQSMhJAQ51gEkVSu8_6CzPo,6419
|
|
39
38
|
experimaestro/launcherfinder/specs.py,sha256=eQC2pwAnvq7kF2xmAfHpg_Wx6_lH6YMf3ZCDwqatjKk,7898
|
|
40
39
|
experimaestro/launchers/__init__.py,sha256=lXn544sgJExr6uirILWzAXu_IfmfyqFZOt4OzRnjHXg,2525
|
|
41
40
|
experimaestro/launchers/direct.py,sha256=JZh6WOPnO6ED_xlOs8pL4MRFmnRhmXzpVxTl-ByaD2A,258
|
|
42
41
|
experimaestro/launchers/oar.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
43
42
|
experimaestro/launchers/slurm/__init__.py,sha256=R1Zwd4phZaXV8FwCYhzfB44n0V4cf-hBQzOc6NkFQ0s,41
|
|
44
|
-
experimaestro/launchers/slurm/base.py,sha256=
|
|
43
|
+
experimaestro/launchers/slurm/base.py,sha256=wbSMzbQk3pfOQWf4HSAkYtMo2TZklLEE3jev1gGvJFs,15742
|
|
45
44
|
experimaestro/locking.py,sha256=hPT-LuDGZTijpbme8O0kEoB9a3WjdVzI2h31OT44UxE,1477
|
|
46
45
|
experimaestro/mkdocs/__init__.py,sha256=L9UDM7vOrRZl41zXTBOaHKSINEEsbmxwjIMIGESmLfU,46
|
|
47
46
|
experimaestro/mkdocs/annotations.py,sha256=qpDw8lzrxpsOShXcpcP_LAeR3UhiIXAybG8UvS64-OU,263
|
|
@@ -54,14 +53,14 @@ experimaestro/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
|
54
53
|
experimaestro/rpyc.py,sha256=ZRKol-3tVoeoUITLNFenLF4dhWBLW_FvSV_GvsypmeI,3605
|
|
55
54
|
experimaestro/run.py,sha256=_szMzKn-67ulT6Wy21dzhB1g6_fiL379JnBC0zJqpIY,5332
|
|
56
55
|
experimaestro/scheduler/__init__.py,sha256=ERmmOxz_9mUkIuccNbzUa5Y6gVLLVDdyc4cCxbCCUbY,20
|
|
57
|
-
experimaestro/scheduler/base.py,sha256=
|
|
56
|
+
experimaestro/scheduler/base.py,sha256=gkwFPCNKQDsEmYtvOwaczf9HIP7SHHuMuJs8_PnsapM,35738
|
|
58
57
|
experimaestro/scheduler/dependencies.py,sha256=n9XegwrmjayOIxt3xhuTEBVEBGSq4oeVdzz-FviDGXo,1994
|
|
59
58
|
experimaestro/scheduler/dynamic_outputs.py,sha256=yYPL98I0nSgDjlE3Sk9dtvovh2PZ6rUDnKjDNnAg1dc,5732
|
|
60
59
|
experimaestro/scheduler/services.py,sha256=aCKkNZMULlceabqf-kOs_-C7KPINnjU3Q-I00o5x6iY,2189
|
|
61
60
|
experimaestro/scheduler/state.py,sha256=szTgnI_hAVqU2OWrrIXsZrO3VsrJlHryXUU0r95w_sw,2367
|
|
62
|
-
experimaestro/scheduler/workspace.py,sha256=
|
|
61
|
+
experimaestro/scheduler/workspace.py,sha256=S4Nal-RicYheWxHMrLC22LOB6csZDNHWUBz1oXOg1Qs,4048
|
|
63
62
|
experimaestro/scriptbuilder.py,sha256=6GKUkgixLqSEy41sNr-_HNcrjKb8uxaoQ65DywRYsC0,5027
|
|
64
|
-
experimaestro/server/__init__.py,sha256=
|
|
63
|
+
experimaestro/server/__init__.py,sha256=vN0Z6sgYXMhYAn1OZdoRkaEwiHjvySuXSIxDpi-ONE4,11011
|
|
65
64
|
experimaestro/server/data/0c35d18bf06992036b69.woff2,sha256=gmX2R4Y5fWuDLRygqv3xSa2E5ydZ__qfcnLpGg-wFdE,128352
|
|
66
65
|
experimaestro/server/data/1815e00441357e01619e.ttf,sha256=gIRDrmyCBDla3YVD2oqQpguTdvsPh-2OjqN9EJWW2AU,210792
|
|
67
66
|
experimaestro/server/data/219aa9140e099e6c72ed.woff2,sha256=0xv7gdVueQ4Nni-gC4Pfj3FZ-QYxFM3AFIWbHUg5Vsg,135984
|
|
@@ -126,7 +125,7 @@ experimaestro/tests/test_identifier.py,sha256=REFB9RGyVlSdAPMpmvJ9a0WbAoe6ZTR1xl
|
|
|
126
125
|
experimaestro/tests/test_instance.py,sha256=xLdSNVo_vAEaOWmjik1tAOYgyOkJPbmnwopyuDEQm1A,1147
|
|
127
126
|
experimaestro/tests/test_objects.py,sha256=zycxjvWuJAbPR8-q2T3zuBY9xfmlhf1YvtOcrImHxnc,2431
|
|
128
127
|
experimaestro/tests/test_outputs.py,sha256=DYzPk5TT_yLumy8SsQbl-S66ivVxJ-ERFrZ68KQZ4KU,781
|
|
129
|
-
experimaestro/tests/test_param.py,sha256=
|
|
128
|
+
experimaestro/tests/test_param.py,sha256=vPfPd9l-Id9EqLmd0-XklvTRje1hHrkIdLIfHKbXImE,7183
|
|
130
129
|
experimaestro/tests/test_progress.py,sha256=wtIGQzlV3ldd_wMng11LinVESchW-1J954mCJNlG28E,7580
|
|
131
130
|
experimaestro/tests/test_serializers.py,sha256=dQkiuvHAQ1g-SCRCfOy977nQMWR7CFuBUud65N_vfiI,1248
|
|
132
131
|
experimaestro/tests/test_snippets.py,sha256=rojnyDjtmAMnSuDUj6Bv9XEgdP8oQf2nVc132JF8vsM,3081
|
|
@@ -149,11 +148,11 @@ experimaestro/utils/asyncio.py,sha256=9r_vFQs6T6tqmymC_DbHVFhY9YVRO6X48uEuyL_ugP
|
|
|
149
148
|
experimaestro/utils/jobs.py,sha256=42FAdKcn_v_-M6hcQZPUBr9kbDt1eVsk3a4E8Gc4eu8,2394
|
|
150
149
|
experimaestro/utils/jupyter.py,sha256=JcEo2yQK7x3Cr1tNl5FqGMZOICxCv9DwMvL5xsWdQPk,2183
|
|
151
150
|
experimaestro/utils/multiprocessing.py,sha256=am3DkHP_kmWbpynbck2c9QystCUtPBoSAC0ViBVzndU,1275
|
|
152
|
-
experimaestro/utils/resources.py,sha256=
|
|
151
|
+
experimaestro/utils/resources.py,sha256=I0UPGMhQ_bttWt5JJLs1r-CmQsCHwtbmYjUN8JJLFKg,1317
|
|
153
152
|
experimaestro/utils/settings.py,sha256=jpFMqF0DLL4_P1xGal0zVR5cOrdD8O0Y2IOYvnRgN3k,793
|
|
154
153
|
experimaestro/xpmutils.py,sha256=S21eMbDYsHfvmZ1HmKpq5Pz5O-1HnCLYxKbyTBbASyQ,638
|
|
155
|
-
experimaestro-1.
|
|
156
|
-
experimaestro-1.
|
|
157
|
-
experimaestro-1.
|
|
158
|
-
experimaestro-1.
|
|
159
|
-
experimaestro-1.
|
|
154
|
+
experimaestro-1.16.0.dist-info/METADATA,sha256=qxLrpuKm5vBrGrKsNFT7eneNLw_SzEUkrL-6mha7e1Y,5705
|
|
155
|
+
experimaestro-1.16.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
156
|
+
experimaestro-1.16.0.dist-info/entry_points.txt,sha256=TppTNiz5qm5xm1fhAcdLKdCLMrlL-eQggtCrCI00D9c,446
|
|
157
|
+
experimaestro-1.16.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
158
|
+
experimaestro-1.16.0.dist-info/RECORD,,
|
experimaestro/compat.py
DELETED
|
File without changes
|
|
File without changes
|
|
File without changes
|