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.
- {experimaestro-0.23.0 → experimaestro-0.24.0}/CHANGELOG.md +15 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/PKG-INFO +16 -1
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/task.md +45 -7
- {experimaestro-0.23.0 → experimaestro-0.24.0}/pyproject.toml +1 -1
- {experimaestro-0.23.0 → experimaestro-0.24.0}/requirements.txt +3 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/__init__.py +3 -3
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/__main__.py +2 -2
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/objects.py +167 -129
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/objects.pyi +2 -1
- experimaestro-0.24.0/src/experimaestro/core/serializers.py +52 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/huggingface.py +2 -2
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_identifier.py +33 -6
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_instance.py +18 -15
- experimaestro-0.24.0/src/experimaestro/tests/test_outputs.py +50 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_progress.py +7 -9
- experimaestro-0.24.0/src/experimaestro/tests/test_serializers.py +54 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/jobs.py +2 -2
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/version.py +2 -2
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/PKG-INFO +16 -1
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/SOURCES.txt +2 -1
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/requires.txt +2 -0
- experimaestro-0.23.0/src/experimaestro/tests/test_outputs.py +0 -88
- experimaestro-0.23.0/src/experimaestro/tests/test_serialization.py +0 -45
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.circleci/config.yml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.flake8 +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/release.yaml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/workflows/pytest.yml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.github/workflows/python-publish.yml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.gitignore +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.gitmodules +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.pre-commit-config.yaml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.prettierignore +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/.readthedocs.yml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/LICENSE +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/MANIFEST.in +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/README.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/.gitignore +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/.nolluprc.js +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/CHANGELOG.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/README.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/package-lock.json +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/package.json +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/postcss.config.js +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/favicon.ico +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/index.html +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/login.html +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/public/manifest.json +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/App.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Experiments.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Services.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/TaskDetail.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/TaskJobs.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/Tasks.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/client.ts +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/clipboard.ts +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/index.css +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/index.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/logo.png +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/logo.pxm +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/reducers.ts +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/store.ts +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/theme/_jobs.scss +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/theme/theme.scss +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/src/ui/messages.tsx +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/tsconfig.json +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/webpack.config.ts +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/app/xp/run.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/changelog.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/cli.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/concepts.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/configuration.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/connectors/index.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/documenting.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/config.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/overview.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/experiments/plan.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/faq.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/index.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/jupyter.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/launchers/index.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/requirements.txt +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/serialization.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/docs/tutorial.md +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/mkdocs.yml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/pytest.ini +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/scripts/longtask.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/setup.cfg +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/setup.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/annotations.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/checkers.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/click.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/commandline.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/compat.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/local.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/connectors/ssh.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/arguments.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/context.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/core/types.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/filter.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/generators.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/ipc.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/base.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/parser.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/registry.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launcherfinder/specs.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/direct.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/oar.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/launchers/slurm.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/locking.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/annotations.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/base.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/metaloader.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mkdocs/style.css +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/mypy.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/notifications.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/rpyc.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/run.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/base.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/dependencies.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/environment.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/services.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scheduler/workspace.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/scriptbuilder.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/server/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/settings.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/sphinx/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/sphinx/static/experimaestro.css +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/taskglobals.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/conftest.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/bin/executable.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/test_local.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/connectors/utils.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/definitions_types.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/sacct +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/sbatch +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/bin/test.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/common.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/config_slurm/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/config_slurm/launchers.yaml +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/test_local.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/launchers/test_slurm.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/restart.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/restart_main.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/scripts/notifyandwait.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/scripts/waitforfile.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/task_tokens.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/all.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/foreign.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/tasks/subparams.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_checkers.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_findlauncher.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_forward.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_objects.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_param.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_snippets.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_ssh.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tags.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tasks.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_tokens.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_types.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/test_validation.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/token_reschedule.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tests/utils.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tokens.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/diff.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/tools/jobs.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/typingutils.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/__init__.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/asyncio.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/jupyter.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/resources.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/settings.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/utils/yaml.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro/xpmutils.py +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/dependency_links.txt +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/entry_points.txt +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/not-zip-safe +0 -0
- {experimaestro-0.23.0 → experimaestro-0.24.0}/src/experimaestro.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
|
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
|
-
##
|
|
108
|
+
## Wrapper object
|
|
71
109
|
|
|
72
|
-
Calling submit returns a `
|
|
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 `
|
|
112
|
+
accessing an attribute wraps it into another `ConfigWrapper` object.
|
|
75
113
|
|
|
76
|
-
`
|
|
114
|
+
`ConfigWrapper` objects have two specific methods and variables:
|
|
77
115
|
|
|
78
|
-
- `__xpm__`, a `
|
|
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 `
|
|
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
|
|
@@ -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
|
-
|
|
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
|
|
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,
|
|
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():
|