experimaestro 1.5.9__tar.gz → 1.5.10__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 experimaestro might be problematic. Click here for more details.

Files changed (145) hide show
  1. {experimaestro-1.5.9 → experimaestro-1.5.10}/PKG-INFO +1 -1
  2. {experimaestro-1.5.9 → experimaestro-1.5.10}/pyproject.toml +2 -2
  3. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/cli/jobs.py +81 -71
  4. {experimaestro-1.5.9 → experimaestro-1.5.10}/LICENSE +0 -0
  5. {experimaestro-1.5.9 → experimaestro-1.5.10}/README.md +0 -0
  6. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/__init__.py +0 -0
  7. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/__main__.py +0 -0
  8. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/annotations.py +0 -0
  9. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/checkers.py +0 -0
  10. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/cli/__init__.py +0 -0
  11. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/cli/filter.py +0 -0
  12. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/click.py +0 -0
  13. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/commandline.py +0 -0
  14. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/compat.py +0 -0
  15. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/connectors/__init__.py +0 -0
  16. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/connectors/local.py +0 -0
  17. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/connectors/ssh.py +0 -0
  18. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/__init__.py +0 -0
  19. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/arguments.py +0 -0
  20. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/context.py +0 -0
  21. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/objects.py +0 -0
  22. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/objects.pyi +0 -0
  23. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/serialization.py +0 -0
  24. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/serializers.py +0 -0
  25. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/types.py +0 -0
  26. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/core/utils.py +0 -0
  27. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/exceptions.py +0 -0
  28. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/experiments/__init__.py +0 -0
  29. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/experiments/cli.py +0 -0
  30. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/experiments/configuration.py +0 -0
  31. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/generators.py +0 -0
  32. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/huggingface.py +0 -0
  33. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/ipc.py +0 -0
  34. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launcherfinder/__init__.py +0 -0
  35. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launcherfinder/base.py +0 -0
  36. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launcherfinder/parser.py +0 -0
  37. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launcherfinder/registry.py +0 -0
  38. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launcherfinder/specs.py +0 -0
  39. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launchers/__init__.py +0 -0
  40. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launchers/direct.py +0 -0
  41. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launchers/oar.py +0 -0
  42. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launchers/slurm/__init__.py +0 -0
  43. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/launchers/slurm/base.py +0 -0
  44. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/locking.py +0 -0
  45. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mkdocs/__init__.py +0 -0
  46. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mkdocs/annotations.py +0 -0
  47. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mkdocs/base.py +0 -0
  48. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mkdocs/metaloader.py +0 -0
  49. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mkdocs/style.css +0 -0
  50. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/mypy.py +0 -0
  51. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/notifications.py +0 -0
  52. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/py.typed +0 -0
  53. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/rpyc.py +0 -0
  54. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/run.py +0 -0
  55. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scheduler/__init__.py +0 -0
  56. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scheduler/base.py +0 -0
  57. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scheduler/dependencies.py +0 -0
  58. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scheduler/services.py +0 -0
  59. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scheduler/workspace.py +0 -0
  60. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/scriptbuilder.py +0 -0
  61. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/__init__.py +0 -0
  62. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/016b4a6cdced82ab3aa1.ttf +0 -0
  63. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/0c35d18bf06992036b69.woff2 +0 -0
  64. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/219aa9140e099e6c72ed.woff2 +0 -0
  65. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/3a4004a46a653d4b2166.woff +0 -0
  66. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/3baa5b8f3469222b822d.woff +0 -0
  67. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/4d73cb90e394b34b7670.woff +0 -0
  68. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/4ef4218c522f1eb6b5b1.woff2 +0 -0
  69. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/50701fbb8177c2dde530.ttf +0 -0
  70. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/5d681e2edae8c60630db.woff +0 -0
  71. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/6f420cf17cc0d7676fad.woff2 +0 -0
  72. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/878f31251d960bd6266f.woff2 +0 -0
  73. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/b041b1fa4fe241b23445.woff2 +0 -0
  74. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/b6879d41b0852f01ed5b.woff2 +0 -0
  75. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/c380809fd3677d7d6903.woff2 +0 -0
  76. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/d75e3fd1eb12e9bd6655.ttf +0 -0
  77. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/f882956fd323fd322f31.woff +0 -0
  78. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/favicon.ico +0 -0
  79. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/index.css +0 -0
  80. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/index.css.map +0 -0
  81. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/index.html +0 -0
  82. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/index.js +0 -0
  83. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/index.js.map +0 -0
  84. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/login.html +0 -0
  85. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/server/data/manifest.json +0 -0
  86. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/settings.py +0 -0
  87. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/sphinx/__init__.py +0 -0
  88. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/sphinx/static/experimaestro.css +0 -0
  89. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/taskglobals.py +0 -0
  90. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/__init__.py +0 -0
  91. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/conftest.py +0 -0
  92. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/connectors/bin/executable.py +0 -0
  93. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/connectors/test_local.py +0 -0
  94. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/connectors/utils.py +0 -0
  95. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/definitions_types.py +0 -0
  96. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/__init__.py +0 -0
  97. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/bin/sacct +0 -0
  98. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/bin/sbatch +0 -0
  99. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/bin/test.py +0 -0
  100. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/common.py +0 -0
  101. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/config_slurm/__init__.py +0 -0
  102. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/config_slurm/launchers.py +0 -0
  103. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/test_local.py +0 -0
  104. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/launchers/test_slurm.py +0 -0
  105. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/restart.py +0 -0
  106. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/restart_main.py +0 -0
  107. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/scripts/notifyandwait.py +0 -0
  108. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/scripts/waitforfile.py +0 -0
  109. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/task_tokens.py +0 -0
  110. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/tasks/__init__.py +0 -0
  111. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/tasks/all.py +0 -0
  112. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/tasks/foreign.py +0 -0
  113. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_checkers.py +0 -0
  114. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_dependencies.py +0 -0
  115. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_findlauncher.py +0 -0
  116. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_forward.py +0 -0
  117. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_identifier.py +0 -0
  118. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_instance.py +0 -0
  119. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_objects.py +0 -0
  120. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_outputs.py +0 -0
  121. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_param.py +0 -0
  122. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_progress.py +0 -0
  123. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_serializers.py +0 -0
  124. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_snippets.py +0 -0
  125. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_ssh.py +0 -0
  126. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_tags.py +0 -0
  127. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_tasks.py +0 -0
  128. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_tokens.py +0 -0
  129. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_types.py +0 -0
  130. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/test_validation.py +0 -0
  131. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/token_reschedule.py +0 -0
  132. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tests/utils.py +0 -0
  133. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tokens.py +0 -0
  134. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tools/__init__.py +0 -0
  135. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tools/diff.py +0 -0
  136. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tools/documentation.py +0 -0
  137. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/tools/jobs.py +0 -0
  138. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/typingutils.py +0 -0
  139. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/__init__.py +0 -0
  140. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/asyncio.py +0 -0
  141. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/jobs.py +0 -0
  142. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/jupyter.py +0 -0
  143. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/resources.py +0 -0
  144. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/utils/settings.py +0 -0
  145. {experimaestro-1.5.9 → experimaestro-1.5.10}/src/experimaestro/xpmutils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: experimaestro
3
- Version: 1.5.9
3
+ Version: 1.5.10
4
4
  Summary: "Experimaestro is a computer science experiment manager"
5
5
  Home-page: https://github.com/experimaestro/experimaestro-python
6
6
  License: GPL-3
@@ -19,7 +19,7 @@ include = [
19
19
  "src/experimaestro/sphinx/static/experimaestro.css",
20
20
  "src/experimaestro/mkdocs/style.css"
21
21
  ]
22
- version = "1.5.9"
22
+ version = "1.5.10"
23
23
  repository = "https://github.com/experimaestro/experimaestro-python"
24
24
  documentation = "https://experimaestro-python.readthedocs.io/"
25
25
 
@@ -119,7 +119,7 @@ warn_unused_ignores = true
119
119
 
120
120
  [tool.commitizen]
121
121
  name = "cz_conventional_commits"
122
- version = "1.5.9"
122
+ version = "1.5.10"
123
123
  changelog_start_rev = "0.15.0"
124
124
  tag_format = "v$version"
125
125
  update_changelog_on_bump = true
@@ -50,90 +50,100 @@ def process(
50
50
  perform=False,
51
51
  fullpath=False,
52
52
  ):
53
- path = workspace.path
54
- for p in (path / "xp").glob("*"):
55
- if experiment and p.name != experiment:
56
- continue
53
+ from .filter import createFilter, JobInformation
54
+ from experimaestro.scheduler import JobState
57
55
 
58
- from .filter import createFilter, JobInformation
59
- from experimaestro.scheduler import JobState
56
+ _filter = createFilter(filter) if filter else lambda x: True
60
57
 
61
- _filter = createFilter(filter) if filter else lambda x: True
58
+ # Get all jobs from experiments
59
+ job2xp = {}
60
+
61
+ path = workspace.path
62
+ for p in (path / "xp").glob("*"):
63
+ for job in p.glob("jobs/*/*"):
64
+ job_path = job.resolve()
65
+ if job_path.is_dir():
66
+ *_, scriptname = job_path.parent.name.rsplit(".", 1)
67
+ job2xp.setdefault(scriptname, set()).add(p.name)
62
68
 
63
- print(f"* Experiment {p.name}")
64
69
  if (p / "jobs.bak").is_dir():
65
- cprint(" Experiment has not finished yet", "red")
66
- if not perform and (kill or clean):
70
+ cprint(f" Experiment {p.name} has not finished yet", "red")
71
+ if (not perform) and (kill or clean):
67
72
  cprint(" Preventing kill/clean (use --force if you want to)", "yellow")
68
73
  kill = False
69
74
  clean = False
70
- print()
71
75
 
72
- for job in p.glob("jobs/*/*"):
73
- info = None
74
- p = job.resolve()
75
- if p.is_dir():
76
- *_, scriptname = p.parent.name.rsplit(".", 1)
77
-
78
- info = JobInformation(p, scriptname)
79
- job_path = (
80
- str(job.resolve()) if fullpath else f"{job.parent.name}/{job.name}"
81
- )
76
+ # Now, process jobs
77
+ for job in path.glob("jobs/*/*"):
78
+ info = None
79
+ p = job.resolve()
80
+ if p.is_dir():
81
+ *_, scriptname = p.parent.name.rsplit(".", 1)
82
+ xps = job2xp.get(scriptname, set())
83
+ if experiment and experiment not in xps:
84
+ continue
82
85
 
83
- if filter:
84
- if not _filter(info):
85
- continue
86
-
87
- if info.state is None:
88
- print(colored(f"NODIR {job_path}", "red"), end="")
89
- elif info.state.running():
90
- if kill:
91
- if perform:
92
- process = info.getprocess()
93
- if process is None:
94
- cprint(
95
- "internal error – no process could be retrieved",
96
- "red",
97
- )
98
- else:
99
- cprint(f"KILLING {process}", "light_red")
100
- process.kill()
101
- else:
102
- print("KILLING (not performing)", process)
103
- print(
104
- colored(f"{info.state.name:8}{job_path}", "yellow"),
105
- end="",
106
- )
107
- elif info.state == JobState.DONE:
108
- print(
109
- colored(f"DONE {job_path}", "green"),
110
- end="",
111
- )
112
- elif info.state == JobState.ERROR:
113
- print(colored(f"FAIL {job_path}", "red"), end="")
114
- else:
115
- print(
116
- colored(f"{info.state.name:8}{job_path}", "red"),
117
- end="",
118
- )
86
+ info = JobInformation(p, scriptname)
87
+ job_str = (
88
+ (str(job.resolve()) if fullpath else f"{job.parent.name}/{job.name}")
89
+ + " "
90
+ + ",".join(xps)
91
+ )
119
92
 
120
- else:
121
- if not ready:
93
+ if filter:
94
+ if not _filter(info):
122
95
  continue
123
- print(colored(f"READY {job_path}", "yellow"), end="")
124
96
 
125
- if tags:
126
- print(f""" {" ".join(f"{k}={v}" for k, v in info.tags.items())}""")
97
+ if info.state is None:
98
+ print(colored(f"NODIR {job_str}", "red"), end="")
99
+ elif info.state.running():
100
+ if kill:
101
+ if perform:
102
+ process = info.getprocess()
103
+ if process is None:
104
+ cprint(
105
+ "internal error – no process could be retrieved",
106
+ "red",
107
+ )
108
+ else:
109
+ cprint(f"KILLING {process}", "light_red")
110
+ process.kill()
111
+ else:
112
+ print("KILLING (not performing)", process)
113
+ print(
114
+ colored(f"{info.state.name:8}{job_str}", "yellow"),
115
+ end="",
116
+ )
117
+ elif info.state == JobState.DONE:
118
+ print(
119
+ colored(f"DONE {job_str}", "green"),
120
+ end="",
121
+ )
122
+ elif info.state == JobState.ERROR:
123
+ print(colored(f"FAIL {job_str}", "red"), end="")
124
+ else:
125
+ print(
126
+ colored(f"{info.state.name:8}{job_str}", "red"),
127
+ end="",
128
+ )
129
+
130
+ else:
131
+ if not ready:
132
+ continue
133
+ print(colored(f"READY {job_path}", "yellow"), end="")
134
+
135
+ if tags:
136
+ print(f""" {" ".join(f"{k}={v}" for k, v in info.tags.items())}""")
137
+ else:
138
+ print()
139
+
140
+ if clean and info.state and info.state.finished():
141
+ if perform:
142
+ cprint("Cleaning...", "red")
143
+ rmtree(p)
127
144
  else:
128
- print()
129
-
130
- if clean and info.state and info.state.finished():
131
- if perform:
132
- cprint("Cleaning...", "red")
133
- rmtree(p)
134
- else:
135
- cprint("Cleaning... (not performed)", "red")
136
- print()
145
+ cprint("Cleaning... (not performed)", "red")
146
+ print()
137
147
 
138
148
 
139
149
  @click.option("--experiment", default=None, help="Restrict to this experiment")
File without changes
File without changes