dh-cli 0.1.9__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 (36) hide show
  1. dh_cli-0.1.9/.gitignore +228 -0
  2. dh_cli-0.1.9/LICENSE +119 -0
  3. dh_cli-0.1.9/PKG-INFO +175 -0
  4. dh_cli-0.1.9/README.md +39 -0
  5. dh_cli-0.1.9/pyproject.toml +30 -0
  6. dh_cli-0.1.9/src/dh_cli/__init__.py +1 -0
  7. dh_cli-0.1.9/src/dh_cli/batch/__init__.py +94 -0
  8. dh_cli-0.1.9/src/dh_cli/batch/aws_batch.py +459 -0
  9. dh_cli-0.1.9/src/dh_cli/batch/commands/__init__.py +25 -0
  10. dh_cli-0.1.9/src/dh_cli/batch/commands/boltz.py +421 -0
  11. dh_cli-0.1.9/src/dh_cli/batch/commands/cancel.py +164 -0
  12. dh_cli-0.1.9/src/dh_cli/batch/commands/clean.py +189 -0
  13. dh_cli-0.1.9/src/dh_cli/batch/commands/embed_t5.py +401 -0
  14. dh_cli-0.1.9/src/dh_cli/batch/commands/finalize.py +393 -0
  15. dh_cli-0.1.9/src/dh_cli/batch/commands/list_jobs.py +128 -0
  16. dh_cli-0.1.9/src/dh_cli/batch/commands/local.py +112 -0
  17. dh_cli-0.1.9/src/dh_cli/batch/commands/logs.py +146 -0
  18. dh_cli-0.1.9/src/dh_cli/batch/commands/retry.py +288 -0
  19. dh_cli-0.1.9/src/dh_cli/batch/commands/status.py +400 -0
  20. dh_cli-0.1.9/src/dh_cli/batch/commands/submit.py +220 -0
  21. dh_cli-0.1.9/src/dh_cli/batch/commands/train.py +734 -0
  22. dh_cli-0.1.9/src/dh_cli/batch/job_id.py +151 -0
  23. dh_cli-0.1.9/src/dh_cli/batch/manifest.py +301 -0
  24. dh_cli-0.1.9/src/dh_cli/cloud_commands.py +1137 -0
  25. dh_cli-0.1.9/src/dh_cli/codeartifact.py +292 -0
  26. dh_cli-0.1.9/src/dh_cli/engines_studios/__init__.py +6 -0
  27. dh_cli-0.1.9/src/dh_cli/engines_studios/api_client.py +350 -0
  28. dh_cli-0.1.9/src/dh_cli/engines_studios/auth.py +144 -0
  29. dh_cli-0.1.9/src/dh_cli/engines_studios/engine_commands.py +1102 -0
  30. dh_cli-0.1.9/src/dh_cli/engines_studios/progress.py +260 -0
  31. dh_cli-0.1.9/src/dh_cli/engines_studios/ssh_config.py +105 -0
  32. dh_cli-0.1.9/src/dh_cli/engines_studios/studio_commands.py +849 -0
  33. dh_cli-0.1.9/src/dh_cli/github_commands.py +289 -0
  34. dh_cli-0.1.9/src/dh_cli/main.py +156 -0
  35. dh_cli-0.1.9/src/dh_cli/utility_commands.py +254 -0
  36. dh_cli-0.1.9/src/dh_cli/warehouse.py +189 -0
@@ -0,0 +1,228 @@
1
+ ##### Specific to Dayhoff #####
2
+
3
+ # Pixi (managed by pixi.toml)
4
+ .pixi/
5
+ pixi.lock
6
+
7
+ # Folders for heavy things
8
+ /data/**
9
+ !/data/**/
10
+ !/data/**/.gitkeep
11
+
12
+ /models/**
13
+ !/models/**/
14
+ !/models/**/.gitkeep
15
+
16
+ /scratch/**
17
+ !/scratch/**/
18
+ !/scratch/**/.gitkeep
19
+
20
+ **/wandb/**
21
+ !**/wandb/**/.gitkeep
22
+
23
+ **/artifacts/**
24
+ !**/artifacts/**/.gitkeep
25
+
26
+ **/lightning_logs/**
27
+ !**/lightning_logs/**/.gitkeep
28
+
29
+ # nohup output
30
+ **/nohup.out
31
+
32
+ # Files with sensitive information
33
+ key.json
34
+ .env.secret
35
+ workerbee.json
36
+ key_github_actions.json
37
+
38
+ # Always track DVC files, even in ignored folders
39
+ !*.dvc
40
+
41
+ # Except in the folder scratch/
42
+ scratch/**/*.dvc
43
+
44
+ # Dagster records
45
+ pipelines/.dagster/**
46
+
47
+ .vscode/settings.json
48
+ .venv_studio/
49
+ .venv_workstation/
50
+ .mac_uv_project/
51
+ .aws_uv_project/
52
+ .workstation_uv_project/
53
+ constraints.txt
54
+ .deps_installed_workstation
55
+ pyproject.aws.toml.bak
56
+
57
+
58
+
59
+
60
+ ##### Boilerplate not specific to Dayhoff #####
61
+
62
+ # Garbage Mac files
63
+ .DS_Store
64
+
65
+ # Byte-compiled / optimized / DLL files
66
+ __pycache__/
67
+ *.py[cod]
68
+ *$py.class
69
+ *.pyc
70
+
71
+ # C extensions
72
+ *.so
73
+
74
+ # Distribution / packaging
75
+ .Python
76
+ build/
77
+ develop-eggs/
78
+ dist/
79
+ downloads/
80
+ eggs/
81
+ .eggs/
82
+ lib/
83
+ lib64/
84
+ parts/
85
+ sdist/
86
+ var/
87
+ wheels/
88
+ share/python-wheels/
89
+ *.egg-info/
90
+ .installed.cfg
91
+ *.egg
92
+ MANIFEST
93
+
94
+ # PyInstaller
95
+ # Usually these files are written by a python script from a template
96
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
97
+ *.manifest
98
+ *.spec
99
+
100
+ # Installer logs
101
+ pip-log.txt
102
+ pip-delete-this-directory.txt
103
+
104
+ # Unit test / coverage reports
105
+ htmlcov/
106
+ .tox/
107
+ .nox/
108
+ .coverage
109
+ .coverage.*
110
+ .cache
111
+ nosetests.xml
112
+ coverage.xml
113
+ *.cover
114
+ *.py,cover
115
+ .hypothesis/
116
+ .pytest_cache/
117
+ cover/
118
+
119
+ # Translations
120
+ *.mo
121
+ *.pot
122
+
123
+ # Django stuff:
124
+ *.log
125
+ local_settings.py
126
+ db.sqlite3
127
+ db.sqlite3-journal
128
+
129
+ # Flask stuff:
130
+ instance/
131
+ .webassets-cache
132
+
133
+ # Scrapy stuff:
134
+ .scrapy
135
+
136
+ # Sphinx documentation
137
+ docs/_build/
138
+
139
+ # PyBuilder
140
+ .pybuilder/
141
+ target/
142
+
143
+ # Jupyter Notebook
144
+ .ipynb_checkpoints
145
+
146
+ # IPython
147
+ profile_default/
148
+ ipython_config.py
149
+
150
+ # pyenv
151
+ # For a library or package, you might want to ignore these files since the code is
152
+ # intended to run in multiple environments; otherwise, check them in:
153
+ # .python-version
154
+
155
+ # pipenv
156
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
157
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
158
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
159
+ # install all needed dependencies.
160
+ Pipfile
161
+ Pipfile.lock
162
+
163
+ # poetry
164
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
165
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
166
+ # commonly ignored for libraries.
167
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
168
+ # poetry.lock
169
+ # pyproject.toml
170
+
171
+ # pdm
172
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
173
+ #pdm.lock
174
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
175
+ # in version control.
176
+ # https://pdm.fming.dev/#use-with-ide
177
+ .pdm.toml
178
+
179
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
180
+ __pypackages__/
181
+
182
+ # Celery stuff
183
+ celerybeat-schedule
184
+ celerybeat.pid
185
+
186
+ # SageMath parsed files
187
+ *.sage.py
188
+
189
+ # Environments
190
+ .env
191
+ .venv
192
+ env/
193
+ venv/
194
+ ENV/
195
+ env.bak/
196
+ venv.bak/
197
+
198
+ # Spyder project settings
199
+ .spyderproject
200
+ .spyproject
201
+
202
+ # Rope project settings
203
+ .ropeproject
204
+
205
+ # mkdocs documentation
206
+ /site
207
+
208
+ # mypy
209
+ .mypy_cache/
210
+ .dmypy.json
211
+ dmypy.json
212
+
213
+ # Pyre type checker
214
+ .pyre/
215
+
216
+ # pytype static type analyzer
217
+ .pytype/
218
+
219
+ # Cython debug symbols
220
+ cython_debug/
221
+
222
+ # PyCharm
223
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
224
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
225
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
226
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
227
+ #.idea/
228
+
dh_cli-0.1.9/LICENSE ADDED
@@ -0,0 +1,119 @@
1
+ # PolyForm Noncommercial License 1.0.0
2
+
3
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
4
+
5
+ ## Acceptance
6
+
7
+ In order to get any license under these terms, you must agree to them as
8
+ both strict obligations and conditions to all your licenses.
9
+
10
+ ## Copyright License
11
+
12
+ The licensor grants you a copyright license for the software to do
13
+ everything you might do with the software that would otherwise infringe
14
+ the licensor's copyright in it for any permitted purpose. However, you
15
+ may only distribute the software according to Distribution License and
16
+ make changes or new works based on the software according to Changes and
17
+ New Works License.
18
+
19
+ ## Distribution License
20
+
21
+ The licensor grants you an additional copyright license to distribute
22
+ copies of the software. Your license to distribute covers distributing
23
+ the software with changes and new works permitted by Changes and New
24
+ Works License.
25
+
26
+ ## Notices
27
+
28
+ You must ensure that anyone who gets a copy of any part of the software
29
+ from you also gets a copy of these terms or the URL for them above, as
30
+ well as copies of any plain-text lines beginning with `Required Notice:`
31
+ that the licensor provided with the software. For example:
32
+
33
+ > Required Notice: Copyright Dayhoff Labs (https://dayhofflabs.com)
34
+
35
+ ## Changes and New Works License
36
+
37
+ The licensor grants you an additional copyright license to make changes
38
+ and new works based on the software for any permitted purpose.
39
+
40
+ ## Patent License
41
+
42
+ The licensor grants you a patent license for the software that covers
43
+ patent claims the licensor can license, or becomes able to license, that
44
+ you would infringe by using the software.
45
+
46
+ ## Noncommercial Purposes
47
+
48
+ Any noncommercial purpose is a permitted purpose.
49
+
50
+ ## Personal Uses
51
+
52
+ Personal use for research, experiment, and testing for the benefit of
53
+ public knowledge, personal study, private entertainment, hobby projects,
54
+ amateur pursuits, or religious observance, without any anticipated
55
+ commercial application, is use for a permitted purpose.
56
+
57
+ ## Noncommercial Organizations
58
+
59
+ Use by any charitable organization, educational institution, public
60
+ research organization, public safety or health organization,
61
+ environmental protection organization, or government institution is use
62
+ for a permitted purpose regardless of the source of funding or
63
+ obligations resulting from the funding.
64
+
65
+ ## Fair Use
66
+
67
+ You may have "fair use" rights for the software under the law. These
68
+ terms do not limit them.
69
+
70
+ ## No Other Rights
71
+
72
+ These terms do not allow you to sublicense or transfer any of your
73
+ licenses to anyone else, or prevent the licensor from granting licenses
74
+ to anyone else. These terms do not imply any other licenses.
75
+
76
+ ## Patent Defense
77
+
78
+ If you make any written claim that the software infringes or contributes
79
+ to infringement of any patent, your patent license for the software
80
+ granted under these terms ends immediately. If your company makes such a
81
+ claim, your patent license ends immediately for work on behalf of your
82
+ company.
83
+
84
+ ## Violations
85
+
86
+ The first time you are notified in writing that you have violated any of
87
+ these terms, or done anything with the software not covered by your
88
+ licenses, your licenses can nonetheless continue if you come into full
89
+ compliance with these terms, and take practical steps to correct past
90
+ violations, within 32 days of receiving notice. Otherwise, all your
91
+ licenses end immediately.
92
+
93
+ ## No Liability
94
+
95
+ As far as the law allows, the software comes as is, without any warranty
96
+ or condition, and the licensor will not be liable to you for any damages
97
+ arising out of these terms or the use or nature of the software, under
98
+ any kind of legal claim.
99
+
100
+ ## Definitions
101
+
102
+ The **licensor** is the individual or entity offering these terms, and
103
+ the **software** is the software the licensor makes available under
104
+ these terms.
105
+
106
+ **You** refers to the individual or entity agreeing to these terms.
107
+
108
+ **Your company** is any legal entity, sole proprietorship, or other kind
109
+ of organization that you work for, plus all organizations that have
110
+ control over, are under the control of, or are under common control with
111
+ that organization. **Control** means ownership of substantially all the
112
+ assets of an entity, or the power to direct its management and policies
113
+ by vote, contract, or otherwise. Control can be direct or indirect.
114
+
115
+ **Your licenses** are all the licenses granted to you for the software
116
+ under these terms.
117
+
118
+ **Use** means anything you do with the software requiring one of your
119
+ licenses.
dh_cli-0.1.9/PKG-INFO ADDED
@@ -0,0 +1,175 @@
1
+ Metadata-Version: 2.4
2
+ Name: dh-cli
3
+ Version: 0.1.9
4
+ Summary: Dayhoff Labs developer CLI
5
+ Author-email: Dayhoff Labs <dev@dayhofflabs.com>
6
+ License: # PolyForm Noncommercial License 1.0.0
7
+
8
+ <https://polyformproject.org/licenses/noncommercial/1.0.0>
9
+
10
+ ## Acceptance
11
+
12
+ In order to get any license under these terms, you must agree to them as
13
+ both strict obligations and conditions to all your licenses.
14
+
15
+ ## Copyright License
16
+
17
+ The licensor grants you a copyright license for the software to do
18
+ everything you might do with the software that would otherwise infringe
19
+ the licensor's copyright in it for any permitted purpose. However, you
20
+ may only distribute the software according to Distribution License and
21
+ make changes or new works based on the software according to Changes and
22
+ New Works License.
23
+
24
+ ## Distribution License
25
+
26
+ The licensor grants you an additional copyright license to distribute
27
+ copies of the software. Your license to distribute covers distributing
28
+ the software with changes and new works permitted by Changes and New
29
+ Works License.
30
+
31
+ ## Notices
32
+
33
+ You must ensure that anyone who gets a copy of any part of the software
34
+ from you also gets a copy of these terms or the URL for them above, as
35
+ well as copies of any plain-text lines beginning with `Required Notice:`
36
+ that the licensor provided with the software. For example:
37
+
38
+ > Required Notice: Copyright Dayhoff Labs (https://dayhofflabs.com)
39
+
40
+ ## Changes and New Works License
41
+
42
+ The licensor grants you an additional copyright license to make changes
43
+ and new works based on the software for any permitted purpose.
44
+
45
+ ## Patent License
46
+
47
+ The licensor grants you a patent license for the software that covers
48
+ patent claims the licensor can license, or becomes able to license, that
49
+ you would infringe by using the software.
50
+
51
+ ## Noncommercial Purposes
52
+
53
+ Any noncommercial purpose is a permitted purpose.
54
+
55
+ ## Personal Uses
56
+
57
+ Personal use for research, experiment, and testing for the benefit of
58
+ public knowledge, personal study, private entertainment, hobby projects,
59
+ amateur pursuits, or religious observance, without any anticipated
60
+ commercial application, is use for a permitted purpose.
61
+
62
+ ## Noncommercial Organizations
63
+
64
+ Use by any charitable organization, educational institution, public
65
+ research organization, public safety or health organization,
66
+ environmental protection organization, or government institution is use
67
+ for a permitted purpose regardless of the source of funding or
68
+ obligations resulting from the funding.
69
+
70
+ ## Fair Use
71
+
72
+ You may have "fair use" rights for the software under the law. These
73
+ terms do not limit them.
74
+
75
+ ## No Other Rights
76
+
77
+ These terms do not allow you to sublicense or transfer any of your
78
+ licenses to anyone else, or prevent the licensor from granting licenses
79
+ to anyone else. These terms do not imply any other licenses.
80
+
81
+ ## Patent Defense
82
+
83
+ If you make any written claim that the software infringes or contributes
84
+ to infringement of any patent, your patent license for the software
85
+ granted under these terms ends immediately. If your company makes such a
86
+ claim, your patent license ends immediately for work on behalf of your
87
+ company.
88
+
89
+ ## Violations
90
+
91
+ The first time you are notified in writing that you have violated any of
92
+ these terms, or done anything with the software not covered by your
93
+ licenses, your licenses can nonetheless continue if you come into full
94
+ compliance with these terms, and take practical steps to correct past
95
+ violations, within 32 days of receiving notice. Otherwise, all your
96
+ licenses end immediately.
97
+
98
+ ## No Liability
99
+
100
+ As far as the law allows, the software comes as is, without any warranty
101
+ or condition, and the licensor will not be liable to you for any damages
102
+ arising out of these terms or the use or nature of the software, under
103
+ any kind of legal claim.
104
+
105
+ ## Definitions
106
+
107
+ The **licensor** is the individual or entity offering these terms, and
108
+ the **software** is the software the licensor makes available under
109
+ these terms.
110
+
111
+ **You** refers to the individual or entity agreeing to these terms.
112
+
113
+ **Your company** is any legal entity, sole proprietorship, or other kind
114
+ of organization that you work for, plus all organizations that have
115
+ control over, are under the control of, or are under common control with
116
+ that organization. **Control** means ownership of substantially all the
117
+ assets of an entity, or the power to direct its management and policies
118
+ by vote, contract, or otherwise. Control can be direct or indirect.
119
+
120
+ **Your licenses** are all the licenses granted to you for the software
121
+ under these terms.
122
+
123
+ **Use** means anything you do with the software requiring one of your
124
+ licenses.
125
+ License-File: LICENSE
126
+ Requires-Python: >=3.11
127
+ Requires-Dist: boto3>=1.36.0
128
+ Requires-Dist: click>=8.0.0
129
+ Requires-Dist: pydantic>=2.0.0
130
+ Requires-Dist: pyyaml>=6.0
131
+ Requires-Dist: questionary>=2.0.1
132
+ Requires-Dist: requests>=2.31.0
133
+ Requires-Dist: toml>=0.10
134
+ Requires-Dist: typer>=0.9.0
135
+ Description-Content-Type: text/markdown
136
+
137
+ # dh-cli
138
+
139
+ Developer CLI for [Dayhoff Labs](https://dayhofflabs.com).
140
+
141
+ ## Installation
142
+
143
+ ```bash
144
+ pip install dh-cli
145
+ ```
146
+
147
+ ## Usage
148
+
149
+ ```bash
150
+ dh --help
151
+ dh --version
152
+ ```
153
+
154
+ ## Commands
155
+
156
+ | Command | Description |
157
+ |---------|-------------|
158
+ | `dh engine` | Manage compute engines |
159
+ | `dh studio` | Manage development studios |
160
+ | `dh batch` | Submit and monitor batch jobs |
161
+ | `dh aws` | AWS SSO authentication |
162
+ | `dh gcp` | GCP authentication |
163
+ | `dh gh` | GitHub authentication |
164
+ | `dh wget` | Download from data warehouse |
165
+ | `dh wheel` | Build and publish packages |
166
+ | `dh clean` | Delete local git branches |
167
+
168
+ ## Requirements
169
+
170
+ - Python >= 3.11
171
+ - AWS credentials (for most commands)
172
+
173
+ ## License
174
+
175
+ [PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0)
dh_cli-0.1.9/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # dh-cli
2
+
3
+ Developer CLI for [Dayhoff Labs](https://dayhofflabs.com).
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ pip install dh-cli
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ dh --help
15
+ dh --version
16
+ ```
17
+
18
+ ## Commands
19
+
20
+ | Command | Description |
21
+ |---------|-------------|
22
+ | `dh engine` | Manage compute engines |
23
+ | `dh studio` | Manage development studios |
24
+ | `dh batch` | Submit and monitor batch jobs |
25
+ | `dh aws` | AWS SSO authentication |
26
+ | `dh gcp` | GCP authentication |
27
+ | `dh gh` | GitHub authentication |
28
+ | `dh wget` | Download from data warehouse |
29
+ | `dh wheel` | Build and publish packages |
30
+ | `dh clean` | Delete local git branches |
31
+
32
+ ## Requirements
33
+
34
+ - Python >= 3.11
35
+ - AWS credentials (for most commands)
36
+
37
+ ## License
38
+
39
+ [PolyForm Noncommercial 1.0.0](https://polyformproject.org/licenses/noncommercial/1.0.0)
@@ -0,0 +1,30 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "dh-cli"
7
+ version = "0.1.9"
8
+ description = "Dayhoff Labs developer CLI"
9
+ requires-python = ">=3.11"
10
+ readme = "README.md"
11
+ license = {file = "LICENSE"}
12
+ authors = [
13
+ {name = "Dayhoff Labs", email = "dev@dayhofflabs.com"},
14
+ ]
15
+ dependencies = [
16
+ "boto3>=1.36.0",
17
+ "click>=8.0.0",
18
+ "pydantic>=2.0.0",
19
+ "pyyaml>=6.0",
20
+ "questionary>=2.0.1",
21
+ "requests>=2.31.0",
22
+ "toml>=0.10",
23
+ "typer>=0.9.0",
24
+ ]
25
+
26
+ [project.scripts]
27
+ dh = "dh_cli.main:app"
28
+
29
+ [tool.hatch.build.targets.wheel]
30
+ packages = ["src/dh_cli"]
@@ -0,0 +1 @@
1
+ """Dayhoff Labs developer CLI (dh command)."""
@@ -0,0 +1,94 @@
1
+ """Batch job management CLI for AWS Batch.
2
+
3
+ This module provides a Click-based CLI for submitting and managing batch jobs
4
+ on AWS Batch, with support for:
5
+ - High-level pipelines (embed-t5, boltz)
6
+ - Generic job submission
7
+ - Job lifecycle management (status, logs, cancel, retry, finalize)
8
+ - Local debugging and shell access
9
+ """
10
+
11
+ import click
12
+
13
+ from .commands.boltz import boltz
14
+ from .commands.cancel import cancel
15
+ from .commands.clean import clean
16
+ from .commands.embed_t5 import embed_t5
17
+ from .commands.finalize import finalize
18
+ from .commands.list_jobs import list_jobs
19
+ from .commands.local import local
20
+ from .commands.logs import logs
21
+ from .commands.retry import retry
22
+ from .commands.status import status
23
+ from .commands.submit import submit
24
+ from .commands.train import train
25
+
26
+
27
+ @click.group()
28
+ def batch_cli():
29
+ """Manage batch jobs on AWS Batch.
30
+
31
+ \b
32
+ Job Management:
33
+ submit Submit a custom job from config file
34
+ status Show job status
35
+ cancel Cancel a running job
36
+ logs View job logs
37
+ retry Retry failed chunks
38
+ finalize Combine results and clean up
39
+ local Run a chunk locally for debugging
40
+ list List recent jobs
41
+ clean Remove old completed job directories
42
+
43
+ \b
44
+ Embedding Pipelines:
45
+ embed-t5 Generate T5 protein embeddings
46
+
47
+ \b
48
+ Structure Prediction:
49
+ boltz Predict protein structures with Boltz
50
+
51
+ \b
52
+ ML Training:
53
+ train Submit hatchery ML training jobs
54
+
55
+ \b
56
+ Examples:
57
+ # Submit an embedding job
58
+ dh batch embed-t5 /primordial/proteins.fasta --workers 50
59
+
60
+ # Submit a structure prediction job
61
+ dh batch boltz /primordial/complexes/ --workers 100
62
+
63
+ # Check job status
64
+ dh batch status dma-embed-20260109-a3f2
65
+
66
+ # View logs for a failed chunk
67
+ dh batch logs dma-embed-20260109-a3f2 --index 27
68
+
69
+ # Retry failed chunks
70
+ dh batch retry dma-embed-20260109-a3f2
71
+
72
+ # Finalize and combine results
73
+ dh batch finalize dma-embed-20260109-a3f2 --output /primordial/embeddings.h5
74
+ """
75
+ pass
76
+
77
+
78
+ # Register job management commands
79
+ batch_cli.add_command(submit)
80
+ batch_cli.add_command(status)
81
+ batch_cli.add_command(cancel)
82
+ batch_cli.add_command(logs)
83
+ batch_cli.add_command(retry)
84
+ batch_cli.add_command(finalize)
85
+ batch_cli.add_command(local)
86
+ batch_cli.add_command(list_jobs, name="list")
87
+ batch_cli.add_command(clean)
88
+
89
+ # Register pipeline commands
90
+ batch_cli.add_command(embed_t5, name="embed-t5")
91
+ batch_cli.add_command(boltz)
92
+ batch_cli.add_command(train)
93
+
94
+ __all__ = ["batch_cli"]