experimaestro 2.0.0a4__tar.gz → 2.0.0b13__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.
Files changed (253) hide show
  1. experimaestro-2.0.0b13/.gitignore +18 -0
  2. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/PKG-INFO +68 -38
  3. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/README.md +13 -5
  4. experimaestro-2.0.0b13/pyproject.toml +167 -0
  5. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/__init__.py +13 -12
  6. experimaestro-2.0.0b13/src/experimaestro/annotations.py +307 -0
  7. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/cli/__init__.py +280 -9
  8. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/cli/filter.py +72 -79
  9. experimaestro-2.0.0b13/src/experimaestro/cli/jobs.py +327 -0
  10. experimaestro-2.0.0b13/src/experimaestro/cli/refactor.py +248 -0
  11. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/click.py +0 -1
  12. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/commandline.py +23 -3
  13. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/connectors/__init__.py +29 -2
  14. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/connectors/local.py +55 -3
  15. experimaestro-2.0.0b13/src/experimaestro/core/arguments.py +376 -0
  16. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/identifier.py +116 -10
  17. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/objects/__init__.py +6 -0
  18. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/objects/config.py +678 -245
  19. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/objects/config_walk.py +21 -5
  20. experimaestro-2.0.0b13/src/experimaestro/core/partial.py +164 -0
  21. experimaestro-2.0.0b13/src/experimaestro/core/partial_lock.py +394 -0
  22. experimaestro-2.0.0b13/src/experimaestro/core/serialization.py +239 -0
  23. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/serializers.py +1 -8
  24. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/types.py +178 -44
  25. experimaestro-2.0.0b13/src/experimaestro/dynamic.py +290 -0
  26. experimaestro-2.0.0b13/src/experimaestro/exceptions.py +28 -0
  27. experimaestro-2.0.0b13/src/experimaestro/experiments/__init__.py +6 -0
  28. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/experiments/cli.py +198 -41
  29. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/experiments/configuration.py +24 -0
  30. experimaestro-2.0.0b13/src/experimaestro/generators.py +88 -0
  31. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/huggingface.py +3 -1
  32. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launcherfinder/__init__.py +2 -2
  33. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launcherfinder/parser.py +29 -0
  34. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launcherfinder/registry.py +6 -7
  35. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launcherfinder/specs.py +2 -9
  36. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launchers/__init__.py +26 -1
  37. experimaestro-2.0.0b13/src/experimaestro/launchers/direct.py +22 -0
  38. experimaestro-2.0.0b13/src/experimaestro/launchers/slurm/__init__.py +2 -0
  39. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launchers/slurm/base.py +216 -2
  40. experimaestro-2.0.0b13/src/experimaestro/locking.py +1024 -0
  41. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/mkdocs/metaloader.py +0 -1
  42. experimaestro-2.0.0b13/src/experimaestro/mypy.py +460 -0
  43. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/notifications.py +105 -13
  44. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/progress.py +0 -2
  45. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/rpyc.py +0 -3
  46. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/run.py +43 -7
  47. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/scheduler/__init__.py +2 -1
  48. experimaestro-2.0.0b13/src/experimaestro/scheduler/base.py +1115 -0
  49. experimaestro-2.0.0b13/src/experimaestro/scheduler/db_state_provider.py +2423 -0
  50. experimaestro-2.0.0b13/src/experimaestro/scheduler/dependencies.py +97 -0
  51. experimaestro-2.0.0b13/src/experimaestro/scheduler/dynamic_outputs.py +313 -0
  52. experimaestro-2.0.0b13/src/experimaestro/scheduler/experiment.py +804 -0
  53. experimaestro-2.0.0b13/src/experimaestro/scheduler/interfaces.py +656 -0
  54. experimaestro-2.0.0b13/src/experimaestro/scheduler/jobs.py +527 -0
  55. experimaestro-2.0.0b13/src/experimaestro/scheduler/remote/__init__.py +31 -0
  56. experimaestro-2.0.0b13/src/experimaestro/scheduler/remote/client.py +900 -0
  57. experimaestro-2.0.0b13/src/experimaestro/scheduler/remote/protocol.py +281 -0
  58. experimaestro-2.0.0b13/src/experimaestro/scheduler/remote/server.py +437 -0
  59. experimaestro-2.0.0b13/src/experimaestro/scheduler/remote/sync.py +144 -0
  60. experimaestro-2.0.0b13/src/experimaestro/scheduler/services.py +434 -0
  61. experimaestro-2.0.0b13/src/experimaestro/scheduler/state_db.py +542 -0
  62. experimaestro-2.0.0b13/src/experimaestro/scheduler/state_provider.py +656 -0
  63. experimaestro-2.0.0b13/src/experimaestro/scheduler/state_sync.py +862 -0
  64. experimaestro-2.0.0b13/src/experimaestro/scheduler/transient.py +31 -0
  65. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/scheduler/workspace.py +52 -10
  66. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/scriptbuilder.py +11 -4
  67. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/settings.py +44 -5
  68. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/sphinx/__init__.py +3 -3
  69. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/taskglobals.py +20 -0
  70. experimaestro-2.0.0b13/src/experimaestro/tests/conftest.py +135 -0
  71. experimaestro-2.0.0b13/src/experimaestro/tests/connectors/bin/executable.py +1 -0
  72. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/core/test_generics.py +2 -2
  73. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/experiment_check_env.py +16 -0
  74. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/experiment_check_mock.py +14 -0
  75. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/experiment_simple.py +12 -0
  76. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/pre_setup_env.py +5 -0
  77. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/pre_setup_error.py +3 -0
  78. experimaestro-2.0.0b13/src/experimaestro/tests/fixtures/pre_experiment/pre_setup_mock.py +8 -0
  79. experimaestro-2.0.0b13/src/experimaestro/tests/identifier_stability.json +45 -0
  80. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/bin/sacct +6 -2
  81. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/bin/sbatch +4 -2
  82. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/bin/test.py +1 -0
  83. experimaestro-2.0.0b13/src/experimaestro/tests/launchers/test_slurm.py +166 -0
  84. experimaestro-2.0.0b13/src/experimaestro/tests/partial_reschedule.py +46 -0
  85. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/restart.py +3 -3
  86. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/restart_main.py +1 -0
  87. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/scripts/notifyandwait.py +1 -0
  88. experimaestro-2.0.0b13/src/experimaestro/tests/task_partial.py +38 -0
  89. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/task_tokens.py +2 -2
  90. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/tasks/all.py +7 -0
  91. experimaestro-2.0.0b13/src/experimaestro/tests/tasks/test_dynamic.py +231 -0
  92. experimaestro-2.0.0b13/src/experimaestro/tests/test_cli_jobs.py +619 -0
  93. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_dependencies.py +3 -9
  94. experimaestro-2.0.0b13/src/experimaestro/tests/test_deprecated.py +630 -0
  95. experimaestro-2.0.0b13/src/experimaestro/tests/test_dynamic_locking.py +317 -0
  96. experimaestro-2.0.0b13/src/experimaestro/tests/test_environment.py +210 -0
  97. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_file_progress_integration.py +7 -7
  98. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_forward.py +3 -3
  99. experimaestro-2.0.0b13/src/experimaestro/tests/test_identifier.py +923 -0
  100. experimaestro-2.0.0b13/src/experimaestro/tests/test_identifier_stability.py +456 -0
  101. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_instance.py +3 -15
  102. experimaestro-2.0.0b13/src/experimaestro/tests/test_multitoken.py +440 -0
  103. experimaestro-2.0.0b13/src/experimaestro/tests/test_mypy.py +433 -0
  104. experimaestro-2.0.0b13/src/experimaestro/tests/test_objects.py +393 -0
  105. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_outputs.py +2 -2
  106. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_param.py +8 -12
  107. experimaestro-2.0.0b13/src/experimaestro/tests/test_partial.py +160 -0
  108. experimaestro-2.0.0b13/src/experimaestro/tests/test_partial_paths.py +298 -0
  109. experimaestro-2.0.0b13/src/experimaestro/tests/test_pre_experiment.py +219 -0
  110. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_progress.py +0 -48
  111. experimaestro-2.0.0b13/src/experimaestro/tests/test_remote_state.py +1108 -0
  112. experimaestro-2.0.0b13/src/experimaestro/tests/test_resumable_task.py +480 -0
  113. experimaestro-2.0.0b13/src/experimaestro/tests/test_serializers.py +194 -0
  114. experimaestro-2.0.0b13/src/experimaestro/tests/test_state_db.py +791 -0
  115. experimaestro-2.0.0b13/src/experimaestro/tests/test_state_provider_methods.py +1039 -0
  116. experimaestro-2.0.0b13/src/experimaestro/tests/test_tags.py +256 -0
  117. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_tasks.py +116 -144
  118. experimaestro-2.0.0b13/src/experimaestro/tests/test_token_locking.py +237 -0
  119. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_tokens.py +21 -18
  120. experimaestro-2.0.0b13/src/experimaestro/tests/test_transient.py +225 -0
  121. experimaestro-2.0.0b13/src/experimaestro/tests/test_types.py +187 -0
  122. experimaestro-2.0.0b13/src/experimaestro/tests/test_workspace_triggers.py +158 -0
  123. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/token_reschedule.py +4 -4
  124. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/utils.py +3 -4
  125. experimaestro-2.0.0b13/src/experimaestro/tokens.py +425 -0
  126. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tools/diff.py +9 -1
  127. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tools/documentation.py +4 -5
  128. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tools/jobs.py +1 -2
  129. experimaestro-2.0.0b13/src/experimaestro/tui/__init__.py +8 -0
  130. experimaestro-2.0.0b13/src/experimaestro/tui/app.py +2582 -0
  131. experimaestro-2.0.0b13/src/experimaestro/tui/app.tcss +355 -0
  132. experimaestro-2.0.0b13/src/experimaestro/tui/log_viewer.py +228 -0
  133. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/__init__.py +24 -1
  134. experimaestro-2.0.0b13/src/experimaestro/utils/environment.py +225 -0
  135. experimaestro-2.0.0b13/src/experimaestro/utils/fswatcher.py +124 -0
  136. experimaestro-2.0.0b13/src/experimaestro/utils/git.py +129 -0
  137. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/jobs.py +1 -2
  138. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/jupyter.py +1 -2
  139. experimaestro-2.0.0b13/src/experimaestro/utils/logging.py +72 -0
  140. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/resources.py +1 -1
  141. experimaestro-2.0.0b13/src/experimaestro/version.py +34 -0
  142. experimaestro-2.0.0b13/src/experimaestro/webui/__init__.py +9 -0
  143. experimaestro-2.0.0b13/src/experimaestro/webui/app.py +118 -0
  144. experimaestro-2.0.0b13/src/experimaestro/webui/routes/__init__.py +5 -0
  145. experimaestro-2.0.0b13/src/experimaestro/webui/routes/auth.py +53 -0
  146. experimaestro-2.0.0b13/src/experimaestro/webui/routes/notifications.py +51 -0
  147. experimaestro-2.0.0b13/src/experimaestro/webui/routes/proxy.py +117 -0
  148. experimaestro-2.0.0b13/src/experimaestro/webui/server.py +210 -0
  149. experimaestro-2.0.0b13/src/experimaestro/webui/state_bridge.py +155 -0
  150. experimaestro-2.0.0b13/src/experimaestro/webui/websocket.py +413 -0
  151. experimaestro-2.0.0a4/pyproject.toml +0 -155
  152. experimaestro-2.0.0a4/src/experimaestro/annotations.py +0 -346
  153. experimaestro-2.0.0a4/src/experimaestro/cli/jobs.py +0 -268
  154. experimaestro-2.0.0a4/src/experimaestro/compat.py +0 -6
  155. experimaestro-2.0.0a4/src/experimaestro/core/arguments.py +0 -240
  156. experimaestro-2.0.0a4/src/experimaestro/core/objects.pyi +0 -225
  157. experimaestro-2.0.0a4/src/experimaestro/core/serialization.py +0 -182
  158. experimaestro-2.0.0a4/src/experimaestro/exceptions.py +0 -2
  159. experimaestro-2.0.0a4/src/experimaestro/experiments/__init__.py +0 -2
  160. experimaestro-2.0.0a4/src/experimaestro/generators.py +0 -47
  161. experimaestro-2.0.0a4/src/experimaestro/launchers/direct.py +0 -10
  162. experimaestro-2.0.0a4/src/experimaestro/launchers/slurm/__init__.py +0 -2
  163. experimaestro-2.0.0a4/src/experimaestro/locking.py +0 -68
  164. experimaestro-2.0.0a4/src/experimaestro/mypy.py +0 -15
  165. experimaestro-2.0.0a4/src/experimaestro/scheduler/base.py +0 -310
  166. experimaestro-2.0.0a4/src/experimaestro/scheduler/dependencies.py +0 -78
  167. experimaestro-2.0.0a4/src/experimaestro/scheduler/dynamic_outputs.py +0 -184
  168. experimaestro-2.0.0a4/src/experimaestro/scheduler/experiment.py +0 -387
  169. experimaestro-2.0.0a4/src/experimaestro/scheduler/jobs.py +0 -475
  170. experimaestro-2.0.0a4/src/experimaestro/scheduler/services.py +0 -103
  171. experimaestro-2.0.0a4/src/experimaestro/server/__init__.py +0 -377
  172. experimaestro-2.0.0a4/src/experimaestro/server/data/0c35d18bf06992036b69.woff2 +0 -0
  173. experimaestro-2.0.0a4/src/experimaestro/server/data/1815e00441357e01619e.ttf +0 -0
  174. experimaestro-2.0.0a4/src/experimaestro/server/data/219aa9140e099e6c72ed.woff2 +0 -0
  175. experimaestro-2.0.0a4/src/experimaestro/server/data/2463b90d9a316e4e5294.woff2 +0 -0
  176. experimaestro-2.0.0a4/src/experimaestro/server/data/2582b0e4bcf85eceead0.ttf +0 -0
  177. experimaestro-2.0.0a4/src/experimaestro/server/data/3a4004a46a653d4b2166.woff +0 -0
  178. experimaestro-2.0.0a4/src/experimaestro/server/data/3baa5b8f3469222b822d.woff +0 -0
  179. experimaestro-2.0.0a4/src/experimaestro/server/data/4d73cb90e394b34b7670.woff +0 -0
  180. experimaestro-2.0.0a4/src/experimaestro/server/data/4ef4218c522f1eb6b5b1.woff2 +0 -0
  181. experimaestro-2.0.0a4/src/experimaestro/server/data/5d681e2edae8c60630db.woff +0 -0
  182. experimaestro-2.0.0a4/src/experimaestro/server/data/6f420cf17cc0d7676fad.woff2 +0 -0
  183. experimaestro-2.0.0a4/src/experimaestro/server/data/89999bdf5d835c012025.woff2 +0 -0
  184. experimaestro-2.0.0a4/src/experimaestro/server/data/914997e1bdfc990d0897.ttf +0 -0
  185. experimaestro-2.0.0a4/src/experimaestro/server/data/c210719e60948b211a12.woff2 +0 -0
  186. experimaestro-2.0.0a4/src/experimaestro/server/data/c380809fd3677d7d6903.woff2 +0 -0
  187. experimaestro-2.0.0a4/src/experimaestro/server/data/f882956fd323fd322f31.woff +0 -0
  188. experimaestro-2.0.0a4/src/experimaestro/server/data/favicon.ico +0 -0
  189. experimaestro-2.0.0a4/src/experimaestro/server/data/index.css +0 -22963
  190. experimaestro-2.0.0a4/src/experimaestro/server/data/index.css.map +0 -1
  191. experimaestro-2.0.0a4/src/experimaestro/server/data/index.html +0 -27
  192. experimaestro-2.0.0a4/src/experimaestro/server/data/index.js +0 -101770
  193. experimaestro-2.0.0a4/src/experimaestro/server/data/index.js.map +0 -1
  194. experimaestro-2.0.0a4/src/experimaestro/server/data/login.html +0 -22
  195. experimaestro-2.0.0a4/src/experimaestro/server/data/manifest.json +0 -15
  196. experimaestro-2.0.0a4/src/experimaestro/tests/conftest.py +0 -32
  197. experimaestro-2.0.0a4/src/experimaestro/tests/connectors/bin/executable.py +0 -1
  198. experimaestro-2.0.0a4/src/experimaestro/tests/launchers/test_slurm.py +0 -86
  199. experimaestro-2.0.0a4/src/experimaestro/tests/test_identifier.py +0 -581
  200. experimaestro-2.0.0a4/src/experimaestro/tests/test_objects.py +0 -86
  201. experimaestro-2.0.0a4/src/experimaestro/tests/test_serializers.py +0 -113
  202. experimaestro-2.0.0a4/src/experimaestro/tests/test_tags.py +0 -120
  203. experimaestro-2.0.0a4/src/experimaestro/tests/test_types.py +0 -65
  204. experimaestro-2.0.0a4/src/experimaestro/tokens.py +0 -473
  205. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/LICENSE +0 -0
  206. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/__main__.py +0 -0
  207. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/checkers.py +0 -0
  208. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/cli/progress.py +0 -0
  209. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/connectors/ssh.py +0 -0
  210. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/__init__.py +0 -0
  211. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/callbacks.py +0 -0
  212. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/context.py +0 -0
  213. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/objects/config_utils.py +0 -0
  214. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/core/utils.py +0 -0
  215. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/ipc.py +0 -0
  216. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launcherfinder/base.py +0 -0
  217. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/launchers/oar.py +0 -0
  218. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/mkdocs/__init__.py +0 -0
  219. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/mkdocs/annotations.py +0 -0
  220. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/mkdocs/base.py +0 -0
  221. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/mkdocs/style.css +0 -0
  222. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/py.typed +0 -0
  223. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/scheduler/signal_handler.py +0 -0
  224. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/scheduler/state.py +0 -0
  225. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/sphinx/static/experimaestro.css +0 -0
  226. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/__init__.py +0 -0
  227. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/connectors/test_local.py +0 -0
  228. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/connectors/utils.py +0 -0
  229. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/core/__init__.py +0 -0
  230. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/definitions_types.py +0 -0
  231. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/__init__.py +0 -0
  232. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/bin/srun +0 -0
  233. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/common.py +0 -0
  234. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/config_slurm/__init__.py +0 -0
  235. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/config_slurm/launchers.py +0 -0
  236. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/launchers/test_local.py +0 -0
  237. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/scripts/waitforfile.py +0 -0
  238. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/tasks/__init__.py +0 -0
  239. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/tasks/foreign.py +0 -0
  240. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_checkers.py +0 -0
  241. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_experiment.py +0 -0
  242. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_file_progress.py +0 -0
  243. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_findlauncher.py +0 -0
  244. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_generators.py +0 -0
  245. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_snippets.py +0 -0
  246. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_ssh.py +0 -0
  247. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tests/test_validation.py +0 -0
  248. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/tools/__init__.py +0 -0
  249. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/typingutils.py +0 -0
  250. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/asyncio.py +0 -0
  251. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/multiprocessing.py +0 -0
  252. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/utils/settings.py +0 -0
  253. {experimaestro-2.0.0a4 → experimaestro-2.0.0b13}/src/experimaestro/xpmutils.py +0 -0
@@ -0,0 +1,18 @@
1
+ dist
2
+ *.pyc
3
+ *.egg-info
4
+ .vscode/
5
+ .tox
6
+ **/.DS_Store
7
+
8
+ __pycache__/
9
+ .mypy_cache/
10
+ .pytest_cache
11
+ test-reports/
12
+ .eggs
13
+ site/
14
+ build/
15
+
16
+ # Generated
17
+ src/experimaestro/version.py
18
+ src/experimaestro/webui/data
@@ -1,61 +1,92 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: experimaestro
3
- Version: 2.0.0a4
4
- Summary: "Experimaestro is a computer science experiment manager"
5
- License: GPL-3
3
+ Version: 2.0.0b13
4
+ Summary: Experimaestro is a computer science experiment manager
5
+ Project-URL: Homepage, https://github.com/experimaestro/experimaestro-python
6
+ Project-URL: Documentation, https://experimaestro-python.readthedocs.io/
7
+ Project-URL: Repository, https://github.com/experimaestro/experimaestro-python
8
+ Project-URL: Bug Tracker, https://github.com/experimaestro/experimaestro-python/issues
9
+ Author-email: Benjamin Piwowarski <benjamin@piwowarski.fr>
10
+ License: GPL-3.0-or-later
6
11
  License-File: LICENSE
7
12
  Keywords: experiment manager
8
- Author: Benjamin Piwowarski
9
- Author-email: benjamin@piwowarski.fr
10
- Requires-Python: >=3.10
11
13
  Classifier: Development Status :: 4 - Beta
12
14
  Classifier: Intended Audience :: Science/Research
13
15
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
14
16
  Classifier: Operating System :: OS Independent
15
17
  Classifier: Programming Language :: Python
16
18
  Classifier: Programming Language :: Python :: 3
19
+ Classifier: Programming Language :: Python :: 3.10
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
17
22
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
- Requires-Dist: arpeggio (>=2,<3)
19
- Requires-Dist: attrs (>=23.1.0,<24)
20
- Requires-Dist: click (>=8)
21
- Requires-Dist: decorator (>=5,<6)
22
- Requires-Dist: docstring-parser (>=0.15,<1)
23
- Requires-Dist: fasteners (>=0.19,<1)
24
- Requires-Dist: flask (>=2.3,<3)
25
- Requires-Dist: flask-socketio (>=5.3,<6)
26
- Requires-Dist: gevent (>=25)
27
- Requires-Dist: gevent-websocket (>=0.10)
28
- Requires-Dist: huggingface-hub (>0.17)
29
- Requires-Dist: humanfriendly (>=10)
30
- Requires-Dist: marshmallow (>=3.20,<4)
31
- Requires-Dist: mkdocs (>=1.5,<2)
32
- Requires-Dist: omegaconf (>=2.3,<3)
33
- Requires-Dist: psutil (>=7,<8)
34
- Requires-Dist: pyparsing (>=3.1,<4)
35
- Requires-Dist: pytools (>=2023.1.1,<2024)
36
- Requires-Dist: pyyaml (>=6.0.1,<7)
37
- Requires-Dist: requests (>=2.31,<3)
38
- Requires-Dist: rpyc (>=5,<7)
39
- Requires-Dist: sortedcontainers (>=2.4,<3)
40
- Requires-Dist: termcolor (>=2.3,<3)
41
- Requires-Dist: tqdm (>=4.66.1,<5)
42
- Requires-Dist: typing-extensions (>=4.2) ; python_version < "3.12"
43
- Requires-Dist: watchdog (>=2)
23
+ Requires-Python: >=3.10
24
+ Requires-Dist: arpeggio<3,>=2
25
+ Requires-Dist: attrs<24,>=23.1.0
26
+ Requires-Dist: click>=8
27
+ Requires-Dist: decorator<6,>=5
28
+ Requires-Dist: docstring-parser<1,>=0.15
29
+ Requires-Dist: fastapi<1,>=0.109
30
+ Requires-Dist: fasteners<1,>=0.19
31
+ Requires-Dist: httpx<1,>=0.26
32
+ Requires-Dist: huggingface-hub>0.17
33
+ Requires-Dist: humanfriendly>=10
34
+ Requires-Dist: marshmallow<4,>=3.20
35
+ Requires-Dist: omegaconf<3,>=2.3
36
+ Requires-Dist: peewee<4,>=3.17
37
+ Requires-Dist: psutil<8,>=7
38
+ Requires-Dist: pyparsing<4,>=3.1
39
+ Requires-Dist: pyperclip<2,>=1.8
40
+ Requires-Dist: pytools<2024,>=2023.1.1
41
+ Requires-Dist: pyyaml<7,>=6.0.1
42
+ Requires-Dist: requests<3,>=2.31
43
+ Requires-Dist: rpyc<7,>=5
44
+ Requires-Dist: sortedcontainers<3,>=2.4
45
+ Requires-Dist: termcolor<3,>=2.3
46
+ Requires-Dist: textual>=6
47
+ Requires-Dist: tqdm<5,>=4.66.1
48
+ Requires-Dist: typing-extensions>=4.2; python_version < '3.12'
49
+ Requires-Dist: uvicorn[standard]<1,>=0.27
50
+ Requires-Dist: watchdog>=2
51
+ Provides-Extra: dev
52
+ Requires-Dist: docutils>=0.18; extra == 'dev'
53
+ Requires-Dist: mypy>=1.0; extra == 'dev'
54
+ Requires-Dist: pygments>=2.15; extra == 'dev'
55
+ Requires-Dist: pytest-timeout>=2.4.0; extra == 'dev'
56
+ Requires-Dist: pytest>=8.4.1; extra == 'dev'
57
+ Requires-Dist: textual-dev>=1.8.0; extra == 'dev'
58
+ Provides-Extra: docs
59
+ Requires-Dist: myst-parser>=2.0; extra == 'docs'
60
+ Requires-Dist: sphinx-codeautolink>=0.15; extra == 'docs'
61
+ Requires-Dist: sphinx-copybutton>=0.5; extra == 'docs'
62
+ Requires-Dist: sphinx-rtd-theme>=2.0; extra == 'docs'
63
+ Requires-Dist: sphinx>=6; extra == 'docs'
64
+ Provides-Extra: ssh
65
+ Requires-Dist: fabric>=3; extra == 'ssh'
66
+ Requires-Dist: paramiko>=3.3; extra == 'ssh'
44
67
  Description-Content-Type: text/markdown
45
68
 
46
69
  [![PyPI version](https://badge.fury.io/py/experimaestro.svg)](https://badge.fury.io/py/experimaestro)
47
70
  [![RTD](https://readthedocs.org/projects/experimaestro-python/badge/?version=latest)](https://experimaestro-python.readthedocs.io)
48
71
 
49
- Experimaestro helps in designing and managing complex workflows. It allows for the definition of tasks and their dependencies, ensuring that each step in a workflow is executed in the correct order. Some key aspects of Experimaestro are:
72
+ Experimaestro helps in designing and managing **complex experimental plans**. It allows for the definition of tasks and their dependencies, ensuring that each step in a workflow is executed in the correct order. Some key aspects of Experimaestro are:
50
73
 
51
74
  - **Task Automation**: The tool automates repetitive tasks, making it easier to run large-scale experiments. It's particularly useful in scenarios where experiments need to be repeated with different parameters or datasets.
52
75
  - **Resource Management**: It efficiently manages computational resources, which is critical when dealing with data-intensive tasks or when running multiple experiments in parallel.
53
- - **Extensibility**: Experimaestro is designed to be flexible and extensible, allowing users to integrate it with various programming languages and tools commonly used in data science and research.
54
- - **Reproducibility**: By keeping a detailed record of experiments, including parameters and environments, it aids in ensuring the reproducibility of scientific experiments, which is a fundamental requirement in research.
55
- - **User Interface**: While primarily a back-end tool, Experimaestro also offers a user interface to help in managing and visualizing workflows.
76
+ - **Reproducibility**: By keeping a detailed record of experiments (the experimental plan in python), including parameters and environments, it aids in ensuring the reproducibility of scientific experiments, which is a fundamental requirement in research.
77
+ - **User Interface**: While primarily a back-end tool, Experimaestro also offers a user interface to help in managing and visualizing workflows (web and text-based).
78
+
79
+ The full documentation can be read by going to the following URL: [https://experimaestro-python.readthedocs.io](https://experimaestro-python.readthedocs.io). A tutorial (training a CNN on MNIST) is [available on github](https://github.com/experimaestro/experimaestro-demo).
80
+
81
+ # Screenshots
56
82
 
57
- The full documentation can be read by going to the following URL: [https://experimaestro-python.readthedocs.io](https://experimaestro-python.readthedocs.io)
83
+ ## Textual interface (new in v2)
58
84
 
85
+ ![Experiment screen](docs/source/img/tui-experiments.png)
86
+
87
+ ![Jobs screen](docs/source/img/tui-jobs.png)
88
+
89
+ ![Log screen](docs/source/img/tui-logs.png)
59
90
 
60
91
  # Install
61
92
 
@@ -150,4 +181,3 @@ if __name__ == "__main__":
150
181
  ```
151
182
 
152
183
  which can be launched with `python test.py /tmp/helloworld-workdir`
153
-
@@ -1,16 +1,24 @@
1
1
  [![PyPI version](https://badge.fury.io/py/experimaestro.svg)](https://badge.fury.io/py/experimaestro)
2
2
  [![RTD](https://readthedocs.org/projects/experimaestro-python/badge/?version=latest)](https://experimaestro-python.readthedocs.io)
3
3
 
4
- Experimaestro helps in designing and managing complex workflows. It allows for the definition of tasks and their dependencies, ensuring that each step in a workflow is executed in the correct order. Some key aspects of Experimaestro are:
4
+ Experimaestro helps in designing and managing **complex experimental plans**. It allows for the definition of tasks and their dependencies, ensuring that each step in a workflow is executed in the correct order. Some key aspects of Experimaestro are:
5
5
 
6
6
  - **Task Automation**: The tool automates repetitive tasks, making it easier to run large-scale experiments. It's particularly useful in scenarios where experiments need to be repeated with different parameters or datasets.
7
7
  - **Resource Management**: It efficiently manages computational resources, which is critical when dealing with data-intensive tasks or when running multiple experiments in parallel.
8
- - **Extensibility**: Experimaestro is designed to be flexible and extensible, allowing users to integrate it with various programming languages and tools commonly used in data science and research.
9
- - **Reproducibility**: By keeping a detailed record of experiments, including parameters and environments, it aids in ensuring the reproducibility of scientific experiments, which is a fundamental requirement in research.
10
- - **User Interface**: While primarily a back-end tool, Experimaestro also offers a user interface to help in managing and visualizing workflows.
8
+ - **Reproducibility**: By keeping a detailed record of experiments (the experimental plan in python), including parameters and environments, it aids in ensuring the reproducibility of scientific experiments, which is a fundamental requirement in research.
9
+ - **User Interface**: While primarily a back-end tool, Experimaestro also offers a user interface to help in managing and visualizing workflows (web and text-based).
11
10
 
12
- The full documentation can be read by going to the following URL: [https://experimaestro-python.readthedocs.io](https://experimaestro-python.readthedocs.io)
11
+ The full documentation can be read by going to the following URL: [https://experimaestro-python.readthedocs.io](https://experimaestro-python.readthedocs.io). A tutorial (training a CNN on MNIST) is [available on github](https://github.com/experimaestro/experimaestro-demo).
13
12
 
13
+ # Screenshots
14
+
15
+ ## Textual interface (new in v2)
16
+
17
+ ![Experiment screen](docs/source/img/tui-experiments.png)
18
+
19
+ ![Jobs screen](docs/source/img/tui-jobs.png)
20
+
21
+ ![Log screen](docs/source/img/tui-logs.png)
14
22
 
15
23
  # Install
16
24
 
@@ -0,0 +1,167 @@
1
+ [build-system]
2
+ requires = ["hatchling", "hatch-vcs"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "experimaestro"
7
+ authors = [
8
+ {name = "Benjamin Piwowarski", email = "benjamin@piwowarski.fr"}
9
+ ]
10
+ description = "Experimaestro is a computer science experiment manager"
11
+ readme = "README.md"
12
+ license = {text = "GPL-3.0-or-later"}
13
+ keywords = ["experiment manager"]
14
+ classifiers = [
15
+ "Development Status :: 4 - Beta",
16
+ "Intended Audience :: Science/Research",
17
+ "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
18
+ "Operating System :: OS Independent",
19
+ "Programming Language :: Python",
20
+ "Programming Language :: Python :: 3",
21
+ "Programming Language :: Python :: 3.10",
22
+ "Programming Language :: Python :: 3.11",
23
+ "Programming Language :: Python :: 3.12",
24
+ "Topic :: Software Development :: Libraries :: Python Modules",
25
+ ]
26
+ requires-python = ">=3.10"
27
+ dynamic = ["version"]
28
+ dependencies = [
29
+ "arpeggio >=2,<3",
30
+ "attrs >=23.1.0,<24",
31
+ "click >=8",
32
+ "decorator >=5,<6",
33
+ "docstring-parser >=0.15,<1",
34
+ "fastapi >=0.109,<1",
35
+ "fasteners >=0.19,<1",
36
+ "httpx >=0.26,<1",
37
+ "humanfriendly >=10",
38
+ "huggingface-hub >0.17",
39
+ "marshmallow >=3.20,<4",
40
+ "omegaconf >=2.3,<3",
41
+ "peewee >=3.17,<4",
42
+ "psutil >=7,<8",
43
+ "pyparsing >=3.1,<4",
44
+ "pyperclip >=1.8,<2",
45
+ "pytools >=2023.1.1,<2024",
46
+ "pyyaml >=6.0.1,<7",
47
+ "requests >=2.31,<3",
48
+ "rpyc >=5,<7",
49
+ "sortedcontainers >=2.4,<3",
50
+ "termcolor >=2.3,<3",
51
+ "textual >=6",
52
+ "tqdm >=4.66.1,<5",
53
+ "typing-extensions >=4.2; python_version < \"3.12\"",
54
+ "uvicorn[standard] >=0.27,<1",
55
+ "watchdog >=2",
56
+ ]
57
+
58
+ [project.optional-dependencies]
59
+ dev = [
60
+ "mypy>=1.0",
61
+ "pytest>=8.4.1",
62
+ "pytest-timeout>=2.4.0",
63
+ "textual-dev>=1.8.0",
64
+ "docutils>=0.18",
65
+ "Pygments>=2.15",
66
+ ]
67
+ docs = [
68
+ "sphinx>=6",
69
+ "myst-parser>=2.0",
70
+ "sphinx-rtd-theme>=2.0",
71
+ "sphinx-codeautolink>=0.15",
72
+ "sphinx-copybutton>=0.5",
73
+ ]
74
+ ssh = [
75
+ "paramiko>=3.3",
76
+ "fabric>=3",
77
+ ]
78
+
79
+ [project.urls]
80
+ Homepage = "https://github.com/experimaestro/experimaestro-python"
81
+ Documentation = "https://experimaestro-python.readthedocs.io/"
82
+ Repository = "https://github.com/experimaestro/experimaestro-python"
83
+ "Bug Tracker" = "https://github.com/experimaestro/experimaestro-python/issues"
84
+
85
+ [project.scripts]
86
+ experimaestro = "experimaestro.__main__:main"
87
+
88
+ [project.entry-points."experimaestro.process"]
89
+ local = "experimaestro.connectors.local:LocalProcess"
90
+ slurm = "experimaestro.launchers.slurm:BatchSlurmProcess"
91
+
92
+ [project.entry-points."experimaestro.connectors"]
93
+ local = "experimaestro.connectors.local:LocalConnector"
94
+ ssh = "experimaestro.connectors.ssh:SshConnector"
95
+
96
+ [project.entry-points."experimaestro.tokens"]
97
+ unix = "experimaestro.tokens:CounterToken"
98
+
99
+ [project.entry-points.mypy]
100
+ experimaestro = "experimaestro.mypy:plugin"
101
+
102
+ [tool.hatch.version]
103
+ source = "vcs"
104
+
105
+ [tool.hatch.version.raw-options]
106
+ local_scheme = "no-local-version"
107
+
108
+ [tool.hatch.build.hooks.vcs]
109
+ version-file = "src/experimaestro/version.py"
110
+
111
+ [tool.hatch.build.targets.sdist]
112
+ include = [
113
+ "/src",
114
+ "/README.md",
115
+ "/LICENSE",
116
+ "/pyproject.toml",
117
+ ]
118
+
119
+ [tool.hatch.build.targets.wheel]
120
+ packages = ["src/experimaestro"]
121
+
122
+ [tool.hatch.build.targets.wheel.force-include]
123
+ "src/experimaestro/webui/data" = "experimaestro/webui/data"
124
+ "src/experimaestro/sphinx/static/experimaestro.css" = "experimaestro/sphinx/static/experimaestro.css"
125
+ "src/experimaestro/tui/app.tcss" = "experimaestro/tui/app.tcss"
126
+
127
+ [tool.pydocstyle]
128
+ match-dir = '(?!tests)(?!resources)(?!docs)[^\.].*'
129
+ match = '(?!test)(?!setup)[^\._].*\.py'
130
+ inherit = false
131
+ ignore = "D200,D203,D213,D406,D407"
132
+
133
+ [tool.mypy]
134
+ python_version = "3.10"
135
+ warn_unused_ignores = true
136
+
137
+ [tool.pytest.ini_options]
138
+ junit_family = "xunit2"
139
+ testpaths = ["src/experimaestro"]
140
+ norecursedirs = ["node_modules"]
141
+ log_format = "[%(levelname)s] %(asctime)s %(name)s [%(process)d/%(threadName)s]: %(message)s"
142
+ log_date_format = "%H:%M:%S"
143
+
144
+ [dependency-groups]
145
+ dev = [
146
+ "ruff>=0.8",
147
+ "mkdocs>=1.6.1",
148
+ ]
149
+
150
+ [tool.ruff]
151
+ line-length = 88
152
+ target-version = "py310"
153
+
154
+ [tool.ruff.lint]
155
+ select = [
156
+ "E", # pycodestyle errors
157
+ "F", # pyflakes
158
+ "W", # pycodestyle warnings
159
+ "C90", # mccabe complexity
160
+ "T20", # flake8-print
161
+ ]
162
+ ignore = [
163
+ "E501", # line too long (handled by formatter)
164
+ ]
165
+
166
+ [tool.ruff.lint.mccabe]
167
+ max-complexity = 25
@@ -4,15 +4,7 @@ from pathlib import Path
4
4
 
5
5
  # Annotations
6
6
  from .annotations import (
7
- config,
8
- task,
9
- param,
10
- ConstantParam,
11
- constant,
12
- option,
13
- pathoption,
14
7
  cache,
15
- Identifier,
16
8
  Array,
17
9
  TagDict,
18
10
  tag,
@@ -21,12 +13,11 @@ from .annotations import (
21
13
  STDOUT,
22
14
  STDERR,
23
15
  deprecate,
24
- # deprecated
25
- argument,
26
16
  initializer,
27
17
  # Method
28
18
  config_only,
29
19
  )
20
+ from .core.types import Identifier
30
21
  from .core.serialization import (
31
22
  load,
32
23
  save,
@@ -47,15 +38,22 @@ from .core.arguments import (
47
38
  field,
48
39
  # Annotations helpers
49
40
  help,
50
- default,
51
41
  )
52
42
  from .generators import pathgenerator, PathGenerator
43
+ from .core.partial import (
44
+ partial,
45
+ param_group,
46
+ ParameterGroup,
47
+ Partial,
48
+ )
53
49
  from .core.objects import (
54
50
  Config,
51
+ InstanceConfig,
55
52
  copyconfig,
56
53
  setmeta,
57
54
  DependentMarker,
58
55
  Task,
56
+ ResumableTask,
59
57
  LightweightTask,
60
58
  ObjectStore,
61
59
  )
@@ -63,8 +61,10 @@ from .core.context import SerializationContext
63
61
  from .core.serializers import SerializationLWTask, PathSerializationLWTask
64
62
  from .core.types import Any, SubmitHook
65
63
  from .launchers import Launcher
66
- from .scheduler import Scheduler, experiment, FailedExperiment
64
+ from .scheduler import Scheduler, experiment, FailedExperiment, DirtyGitError
65
+ from .exceptions import GracefulTimeout
67
66
  from .scheduler.workspace import Workspace, RunMode
67
+ from .scheduler.transient import TransientMode
68
68
  from .scheduler.state import get_experiment
69
69
  from .notifications import progress, tqdm
70
70
  from .checkers import Choices
@@ -72,6 +72,7 @@ from .xpmutils import DirectoryContext
72
72
  from .mkdocs.annotations import documentation
73
73
  from .scheduler.base import Job
74
74
  from .launcherfinder.registry import LauncherRegistry
75
+ from .experiments.configuration import DirtyGitAction
75
76
 
76
77
 
77
78
  def set_launcher(launcher: Launcher):