experimaestro 0.23.0__zip → 0.24.0__zip

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 (189) hide show
  1. {experimaestro-0.23.0 → experimaestro-0.24.0}/CHANGELOG.md +15 -0
  2. {experimaestro-0.23.0 → experimaestro-0.24.0}/PKG-INFO +16 -1
  3. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/task.md +45 -7
  4. {experimaestro-0.23.0 → experimaestro-0.24.0}/pyproject.toml +1 -1
  5. {experimaestro-0.23.0 → experimaestro-0.24.0}/requirements.txt +3 -0
  6. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/__init__.py +3 -3
  7. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/__main__.py +2 -2
  8. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/objects.py +167 -129
  9. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/objects.pyi +2 -1
  10. experimaestro-0.24.0/src/experimaestro/core/serializers.py +52 -0
  11. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/huggingface.py +2 -2
  12. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_identifier.py +33 -6
  13. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_instance.py +18 -15
  14. experimaestro-0.24.0/src/experimaestro/tests/test_outputs.py +50 -0
  15. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_progress.py +7 -9
  16. experimaestro-0.24.0/src/experimaestro/tests/test_serializers.py +54 -0
  17. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/jobs.py +2 -2
  18. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/version.py +2 -2
  19. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/PKG-INFO +16 -1
  20. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/SOURCES.txt +2 -1
  21. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/requires.txt +2 -0
  22. experimaestro-0.23.0/src/experimaestro/tests/test_outputs.py +0 -88
  23. experimaestro-0.23.0/src/experimaestro/tests/test_serialization.py +0 -45
  24. {experimaestro-0.23.0 → experimaestro-0.24.0}/.circleci/config.yml +0 -0
  25. {experimaestro-0.23.0 → experimaestro-0.24.0}/.flake8 +0 -0
  26. {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/release.yaml +0 -0
  27. {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/workflows/pytest.yml +0 -0
  28. {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/workflows/python-publish.yml +0 -0
  29. {experimaestro-0.23.0 → experimaestro-0.24.0}/.gitignore +0 -0
  30. {experimaestro-0.23.0 → experimaestro-0.24.0}/.gitmodules +0 -0
  31. {experimaestro-0.23.0 → experimaestro-0.24.0}/.pre-commit-config.yaml +0 -0
  32. {experimaestro-0.23.0 → experimaestro-0.24.0}/.prettierignore +0 -0
  33. {experimaestro-0.23.0 → experimaestro-0.24.0}/.readthedocs.yml +0 -0
  34. {experimaestro-0.23.0 → experimaestro-0.24.0}/LICENSE +0 -0
  35. {experimaestro-0.23.0 → experimaestro-0.24.0}/MANIFEST.in +0 -0
  36. {experimaestro-0.23.0 → experimaestro-0.24.0}/README.md +0 -0
  37. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/.gitignore +0 -0
  38. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/.nolluprc.js +0 -0
  39. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/CHANGELOG.md +0 -0
  40. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/README.md +0 -0
  41. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/package-lock.json +0 -0
  42. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/package.json +0 -0
  43. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/postcss.config.js +0 -0
  44. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/favicon.ico +0 -0
  45. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/index.html +0 -0
  46. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/login.html +0 -0
  47. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/manifest.json +0 -0
  48. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/App.tsx +0 -0
  49. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Experiments.tsx +0 -0
  50. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Services.tsx +0 -0
  51. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/TaskDetail.tsx +0 -0
  52. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/TaskJobs.tsx +0 -0
  53. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Tasks.tsx +0 -0
  54. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/client.ts +0 -0
  55. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/clipboard.ts +0 -0
  56. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/index.css +0 -0
  57. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/index.tsx +0 -0
  58. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/logo.png +0 -0
  59. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/logo.pxm +0 -0
  60. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/reducers.ts +0 -0
  61. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/store.ts +0 -0
  62. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/theme/_jobs.scss +0 -0
  63. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/theme/theme.scss +0 -0
  64. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/ui/messages.tsx +0 -0
  65. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/tsconfig.json +0 -0
  66. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/webpack.config.ts +0 -0
  67. {experimaestro-0.23.0 → experimaestro-0.24.0}/app/xp/run.py +0 -0
  68. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/changelog.md +0 -0
  69. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/cli.md +0 -0
  70. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/concepts.md +0 -0
  71. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/configuration.md +0 -0
  72. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/connectors/index.md +0 -0
  73. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/documenting.md +0 -0
  74. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/config.md +0 -0
  75. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/overview.md +0 -0
  76. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/plan.md +0 -0
  77. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/faq.md +0 -0
  78. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/index.md +0 -0
  79. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/jupyter.md +0 -0
  80. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/launchers/index.md +0 -0
  81. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/requirements.txt +0 -0
  82. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/serialization.md +0 -0
  83. {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/tutorial.md +0 -0
  84. {experimaestro-0.23.0 → experimaestro-0.24.0}/mkdocs.yml +0 -0
  85. {experimaestro-0.23.0 → experimaestro-0.24.0}/pytest.ini +0 -0
  86. {experimaestro-0.23.0 → experimaestro-0.24.0}/scripts/longtask.py +0 -0
  87. {experimaestro-0.23.0 → experimaestro-0.24.0}/setup.cfg +0 -0
  88. {experimaestro-0.23.0 → experimaestro-0.24.0}/setup.py +0 -0
  89. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/annotations.py +0 -0
  90. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/checkers.py +0 -0
  91. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/click.py +0 -0
  92. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/commandline.py +0 -0
  93. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/compat.py +0 -0
  94. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/__init__.py +0 -0
  95. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/local.py +0 -0
  96. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/ssh.py +0 -0
  97. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/__init__.py +0 -0
  98. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/arguments.py +0 -0
  99. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/context.py +0 -0
  100. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/types.py +0 -0
  101. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/filter.py +0 -0
  102. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/generators.py +0 -0
  103. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/ipc.py +0 -0
  104. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/__init__.py +0 -0
  105. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/base.py +0 -0
  106. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/parser.py +0 -0
  107. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/registry.py +0 -0
  108. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/specs.py +0 -0
  109. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/__init__.py +0 -0
  110. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/direct.py +0 -0
  111. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/oar.py +0 -0
  112. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/slurm.py +0 -0
  113. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/locking.py +0 -0
  114. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/__init__.py +0 -0
  115. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/annotations.py +0 -0
  116. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/base.py +0 -0
  117. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/metaloader.py +0 -0
  118. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/style.css +0 -0
  119. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mypy.py +0 -0
  120. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/notifications.py +0 -0
  121. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/rpyc.py +0 -0
  122. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/run.py +0 -0
  123. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/__init__.py +0 -0
  124. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/base.py +0 -0
  125. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/dependencies.py +0 -0
  126. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/environment.py +0 -0
  127. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/services.py +0 -0
  128. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/workspace.py +0 -0
  129. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scriptbuilder.py +0 -0
  130. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/server/__init__.py +0 -0
  131. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/settings.py +0 -0
  132. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/sphinx/__init__.py +0 -0
  133. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/sphinx/static/experimaestro.css +0 -0
  134. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/taskglobals.py +0 -0
  135. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/__init__.py +0 -0
  136. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/conftest.py +0 -0
  137. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/bin/executable.py +0 -0
  138. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/test_local.py +0 -0
  139. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/utils.py +0 -0
  140. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/definitions_types.py +0 -0
  141. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/__init__.py +0 -0
  142. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/sacct +0 -0
  143. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/sbatch +0 -0
  144. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/test.py +0 -0
  145. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/common.py +0 -0
  146. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/config_slurm/__init__.py +0 -0
  147. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/config_slurm/launchers.yaml +0 -0
  148. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/test_local.py +0 -0
  149. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/test_slurm.py +0 -0
  150. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/restart.py +0 -0
  151. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/restart_main.py +0 -0
  152. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/scripts/notifyandwait.py +0 -0
  153. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/scripts/waitforfile.py +0 -0
  154. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/task_tokens.py +0 -0
  155. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/__init__.py +0 -0
  156. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/all.py +0 -0
  157. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/foreign.py +0 -0
  158. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/subparams.py +0 -0
  159. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_checkers.py +0 -0
  160. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_findlauncher.py +0 -0
  161. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_forward.py +0 -0
  162. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_objects.py +0 -0
  163. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_param.py +0 -0
  164. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_snippets.py +0 -0
  165. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_ssh.py +0 -0
  166. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tags.py +0 -0
  167. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tasks.py +0 -0
  168. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tokens.py +0 -0
  169. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_types.py +0 -0
  170. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_validation.py +0 -0
  171. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/token_reschedule.py +0 -0
  172. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/utils.py +0 -0
  173. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tokens.py +0 -0
  174. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/__init__.py +0 -0
  175. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/diff.py +0 -0
  176. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/jobs.py +0 -0
  177. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/typingutils.py +0 -0
  178. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/__init__.py +0 -0
  179. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/asyncio.py +0 -0
  180. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/jupyter.py +0 -0
  181. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/resources.py +0 -0
  182. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/settings.py +0 -0
  183. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/yaml.py +0 -0
  184. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/xpmutils.py +0 -0
  185. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/dependency_links.txt +0 -0
  186. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/entry_points.txt +0 -0
  187. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/not-zip-safe +0 -0
  188. {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/top_level.txt +0 -0
  189. {experimaestro-0.23.0 → experimaestro-0.24.0}/tox.ini +0 -0
@@ -1,3 +1,18 @@
1
+ ## 0.24.0 (2023-05-23)
2
+
3
+ ### Feat
4
+
5
+ - serialized configurations
6
+
7
+ ### Fix
8
+
9
+ - requirement for fabric
10
+ - add gevent-websocket for supporting websockets
11
+
12
+ ### Refactor
13
+
14
+ - Changed TaskOutput to ConfigWrapper
15
+
1
16
  ## 0.23.0 (2023-04-07)
2
17
 
3
18
  ### Feat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: experimaestro
3
- Version: 0.23.0
3
+ Version: 0.24.0
4
4
  Summary: "Experimaestro is a computer science experiment manager"
5
5
  Home-page: https://github.com/experimaestro/experimaestro-python
6
6
  Author: Benjamin Piwowarski
@@ -127,6 +127,21 @@ if __name__ == "__main__":
127
127
 
128
128
  which can be launched with `python test.py /tmp/helloworld-workdir`
129
129
 
130
+ ## 0.24.0 (2023-05-23)
131
+
132
+ ### Feat
133
+
134
+ - serialized configurations
135
+
136
+ ### Fix
137
+
138
+ - requirement for fabric
139
+ - add gevent-websocket for supporting websockets
140
+
141
+ ### Refactor
142
+
143
+ - Changed TaskOutput to ConfigWrapper
144
+
130
145
  ## 0.23.0 (2023-04-07)
131
146
 
132
147
  ### Feat
@@ -30,6 +30,44 @@ some special variables are defined:
30
30
  - task directory can is `self.__taskdir__`
31
31
  - when using [sub-parameters](../config#sub-parameters), `self.__maintaskdir__` is the directory of the main task
32
32
 
33
+
34
+ ## Restoring object state
35
+
36
+ It is possible to restore an object state from disk; in that case, `SerializedConfig` (which can
37
+ be subclassed) can be used:
38
+
39
+ ```py3
40
+ from experimaestro import Config, SerializedConfig
41
+
42
+ class Model(Config):
43
+ ...
44
+
45
+ class SerializedModel(SerializedConfig):
46
+ def initialize(self):
47
+ # Access the configuration through self.config
48
+ self.config.initialized = True
49
+ ```
50
+
51
+ A serialized configuration can be used instead of the configuration. This is useful
52
+ to separate the loading mechanism from the configuration logic.
53
+
54
+
55
+ The most often use case is when the state can be recovered from disk. In that case,
56
+ `PathBasedSerializedConfig` can be used
57
+
58
+ ```py3
59
+ from experimaestro import Config, PathBasedSerializedConfig
60
+
61
+ class Model(Config):
62
+ ...
63
+
64
+ class SerializedModel(PathBasedSerializedConfig):
65
+ def initialize(self):
66
+ # Loads the model from disk
67
+ data = torch.load(self.path)
68
+ self.config.load_state_dict(data)
69
+ ```
70
+
33
71
  ## Tasks outputs
34
72
 
35
73
  It is possible to generate a configuration when submitting a task.
@@ -53,7 +91,7 @@ It is possible to generate a configuration when submitting a task.
53
91
  parameters: Annotated[Path, pathgenerator("parameters.pth")]
54
92
 
55
93
  def taskoutputs(self) -> Model:
56
- return SerializedConfig(self.model, ModelLoader(str(self.parameters)))
94
+ return SerializedModel(config=self.model, path=ModelLoader(str(self.parameters)))
57
95
 
58
96
  def execute(self):
59
97
  """Called when this task is run"""
@@ -67,18 +105,18 @@ It is possible to generate a configuration when submitting a task.
67
105
 
68
106
  ```
69
107
 
70
- ## Task output object
108
+ ## Wrapper object
71
109
 
72
- Calling submit returns a `TaskOutput` object, which is necessary to keep track
110
+ Calling submit returns a `ConfigWrapper` object, which is necessary to keep track
73
111
  of dependencies. This task output is a proxy for the returned object, i.e.
74
- accessing an attribute wraps it into another `TaskOutput` object.
112
+ accessing an attribute wraps it into another `ConfigWrapper` object.
75
113
 
76
- `TaskOutput` objects have two specific methods and variables:
114
+ `ConfigWrapper` objects have two specific methods and variables:
77
115
 
78
- - `__xpm__`, a `TaskOutputInformation` instance, containing the `task` that was submitted (dependency tracking)
116
+ - `__xpm__`, a `ConfigWrapperInformation` instance, containing the `task` that was submitted (dependency tracking)
79
117
  - `__unwrap__` that returns the wrapped value (warning: unwrapping might prevent dependency tracking from working, but might be useful in some corner cases)
80
118
 
81
- For `TaskOutputInformation`, we have:
119
+ For `ConfigWrapperInformation`, we have:
82
120
 
83
121
  - `stdout()` and `stderr()` that return a `Path` to the file that contains the standard output/error
84
122
  - `tags()` that returns the tags of the wrapped variable
@@ -4,7 +4,7 @@ fallback_version = "0.0.0-dev"
4
4
 
5
5
  [tool.commitizen]
6
6
  name = "cz_conventional_commits"
7
- version = "0.23.0"
7
+ version = "0.24.0"
8
8
  changelog_start_rev = "0.15.0"
9
9
  tag_format = "$version"
10
10
  update_changelog_on_bump = true
@@ -23,6 +23,7 @@ huggingface_hub ~= 0.11.1
23
23
 
24
24
  # server
25
25
  gevent
26
+ gevent-websocket
26
27
  flask
27
28
  flask-socketio
28
29
 
@@ -38,6 +39,8 @@ marshmallow
38
39
  # SSH support (fabric is built on Paramiko,
39
40
  # and allows using OpenSSH config out of the box)
40
41
  fabric
42
+ # Bug fix: required by fabric but not in reqs.
43
+ decorator
41
44
 
42
45
  # Remote code execution
43
46
  rpyc
@@ -44,11 +44,11 @@ from .core.objects import (
44
44
  Config,
45
45
  copyconfig,
46
46
  setmeta,
47
- TaskOutput,
47
+ ConfigWrapper,
48
+ ConfigWrapper as TaskOutput, # maintains compatibility
48
49
  Task,
49
- SerializedConfig,
50
- Serialized,
51
50
  )
51
+ from .core.serializers import SerializedConfig, PathBasedSerializedConfig
52
52
  from .core.types import Any, SubmitHook, submit_hook_decorator
53
53
  from .launchers import Launcher
54
54
  from .scheduler.environment import Environment
@@ -12,7 +12,7 @@ import subprocess
12
12
  from termcolor import colored, cprint
13
13
 
14
14
  import experimaestro
15
- from experimaestro.core.objects import TaskOutput
15
+ from experimaestro.core.objects import ConfigWrapper
16
16
 
17
17
  # --- Command line main options
18
18
  logging.basicConfig(level=logging.INFO)
@@ -142,7 +142,7 @@ def diff(path: Path):
142
142
  if new_id != old_id:
143
143
  print(f"{path} differ: {new_id} vs {old_id}")
144
144
 
145
- if isinstance(value, TaskOutput):
145
+ if isinstance(value, ConfigWrapper):
146
146
  check(f"{path}.<task>", value.__xpm__.task, new_value.__xpm__.task)
147
147
  else:
148
148
  for arg in value.__xpmtype__.arguments.values():