hpc-runner 0.1.1__py3-none-any.whl → 0.2.1__py3-none-any.whl

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 (43) hide show
  1. hpc_runner/_version.py +2 -2
  2. hpc_runner/cli/cancel.py +1 -1
  3. hpc_runner/cli/config.py +2 -2
  4. hpc_runner/cli/main.py +17 -13
  5. hpc_runner/cli/monitor.py +30 -0
  6. hpc_runner/cli/run.py +223 -67
  7. hpc_runner/cli/status.py +6 -5
  8. hpc_runner/core/__init__.py +30 -0
  9. hpc_runner/core/descriptors.py +87 -33
  10. hpc_runner/core/exceptions.py +9 -0
  11. hpc_runner/core/job.py +272 -93
  12. hpc_runner/core/job_info.py +104 -0
  13. hpc_runner/core/result.py +4 -0
  14. hpc_runner/schedulers/base.py +148 -30
  15. hpc_runner/schedulers/detection.py +22 -4
  16. hpc_runner/schedulers/local/scheduler.py +119 -2
  17. hpc_runner/schedulers/sge/args.py +161 -94
  18. hpc_runner/schedulers/sge/parser.py +106 -13
  19. hpc_runner/schedulers/sge/scheduler.py +727 -171
  20. hpc_runner/schedulers/sge/templates/batch.sh.j2 +82 -0
  21. hpc_runner/schedulers/sge/templates/interactive.sh.j2 +78 -0
  22. hpc_runner/tui/__init__.py +5 -0
  23. hpc_runner/tui/app.py +436 -0
  24. hpc_runner/tui/components/__init__.py +17 -0
  25. hpc_runner/tui/components/detail_panel.py +187 -0
  26. hpc_runner/tui/components/filter_bar.py +174 -0
  27. hpc_runner/tui/components/filter_popup.py +345 -0
  28. hpc_runner/tui/components/job_table.py +260 -0
  29. hpc_runner/tui/providers/__init__.py +5 -0
  30. hpc_runner/tui/providers/jobs.py +197 -0
  31. hpc_runner/tui/screens/__init__.py +7 -0
  32. hpc_runner/tui/screens/confirm.py +67 -0
  33. hpc_runner/tui/screens/job_details.py +210 -0
  34. hpc_runner/tui/screens/log_viewer.py +170 -0
  35. hpc_runner/tui/snapshot.py +153 -0
  36. hpc_runner/tui/styles/monitor.tcss +567 -0
  37. hpc_runner-0.2.1.dist-info/METADATA +285 -0
  38. hpc_runner-0.2.1.dist-info/RECORD +56 -0
  39. hpc_runner/schedulers/sge/templates/job.sh.j2 +0 -39
  40. hpc_runner-0.1.1.dist-info/METADATA +0 -46
  41. hpc_runner-0.1.1.dist-info/RECORD +0 -38
  42. {hpc_runner-0.1.1.dist-info → hpc_runner-0.2.1.dist-info}/WHEEL +0 -0
  43. {hpc_runner-0.1.1.dist-info → hpc_runner-0.2.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,285 @@
1
+ Metadata-Version: 2.4
2
+ Name: hpc-runner
3
+ Version: 0.2.1
4
+ Summary: Unified HPC job submission across multiple schedulers
5
+ Project-URL: Homepage, https://github.com/sjalloq/hpc-runner
6
+ Project-URL: Repository, https://github.com/sjalloq/hpc-runner
7
+ Author: Shareef Jalloq
8
+ License-Expression: MIT
9
+ Keywords: cluster,hpc,job-submission,pbs,sge,slurm
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Console
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Operating System :: POSIX :: Linux
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Programming Language :: Python :: 3.10
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: System :: Clustering
21
+ Classifier: Topic :: System :: Distributed Computing
22
+ Requires-Python: >=3.10
23
+ Requires-Dist: jinja2>=3.0
24
+ Requires-Dist: rich-click>=1.7
25
+ Requires-Dist: textual>=6.11
26
+ Requires-Dist: tomli>=2.0; python_version < '3.11'
27
+ Provides-Extra: all
28
+ Requires-Dist: build; extra == 'all'
29
+ Requires-Dist: hatch-vcs; extra == 'all'
30
+ Requires-Dist: mypy; extra == 'all'
31
+ Requires-Dist: pytest-cov; extra == 'all'
32
+ Requires-Dist: pytest>=7.0; extra == 'all'
33
+ Requires-Dist: ruff; extra == 'all'
34
+ Requires-Dist: twine; extra == 'all'
35
+ Provides-Extra: dev
36
+ Requires-Dist: build; extra == 'dev'
37
+ Requires-Dist: hatch-vcs; extra == 'dev'
38
+ Requires-Dist: mypy; extra == 'dev'
39
+ Requires-Dist: pytest-cov; extra == 'dev'
40
+ Requires-Dist: pytest>=7.0; extra == 'dev'
41
+ Requires-Dist: ruff; extra == 'dev'
42
+ Requires-Dist: twine; extra == 'dev'
43
+ Description-Content-Type: text/markdown
44
+
45
+ # hpc-runner
46
+
47
+ **Unified HPC job submission across multiple schedulers**
48
+
49
+ Write your jobs once, run them on any cluster - SGE, Slurm, PBS, or locally for testing.
50
+
51
+ ## Features
52
+
53
+ - **Unified CLI** - Same commands work across SGE, Slurm, PBS
54
+ - **Python API** - Programmatic job submission with dependencies and pipelines
55
+ - **Auto-detection** - Automatically finds your cluster's scheduler
56
+ - **Interactive TUI** - Monitor jobs with a terminal dashboard
57
+ - **Job Dependencies** - Chain jobs with afterok, afterany, afternotok
58
+ - **Array Jobs** - Batch processing with throttling support
59
+ - **Virtual Environment Handling** - Automatic venv activation on compute nodes
60
+ - **Module Integration** - Load environment modules in job scripts
61
+ - **Dry-run Mode** - Preview generated scripts before submission
62
+
63
+ ## Installation
64
+
65
+ ```bash
66
+ pip install hpc-runner
67
+ ```
68
+
69
+ Or with uv:
70
+
71
+ ```bash
72
+ uv pip install hpc-runner
73
+ ```
74
+
75
+ ## Quick Start
76
+
77
+ ### CLI
78
+
79
+ ```bash
80
+ # Basic job submission
81
+ hpc run python train.py
82
+
83
+ # With resources
84
+ hpc run --cpu 4 --mem 16G --time 4:00:00 "python train.py"
85
+
86
+ # GPU job
87
+ hpc run --queue gpu --cpu 4 --mem 32G "python train.py --epochs 100"
88
+
89
+ # Preview without submitting
90
+ hpc run --dry-run --cpu 8 "make -j8"
91
+
92
+ # Interactive session
93
+ hpc run --interactive bash
94
+
95
+ # Array job
96
+ hpc run --array 1-100 "python process.py --task-id \$SGE_TASK_ID"
97
+
98
+ # Wait for completion
99
+ hpc run --wait python long_job.py
100
+ ```
101
+
102
+ ### Python API
103
+
104
+ ```python
105
+ from hpc_runner import Job
106
+
107
+ # Create and submit a job
108
+ job = Job(
109
+ command="python train.py",
110
+ cpu=4,
111
+ mem="16G",
112
+ time="4:00:00",
113
+ queue="gpu",
114
+ )
115
+ result = job.submit()
116
+
117
+ # Wait for completion
118
+ status = result.wait()
119
+ print(f"Exit code: {result.returncode}")
120
+
121
+ # Read output
122
+ print(result.read_stdout())
123
+ ```
124
+
125
+ ### Job Dependencies
126
+
127
+ ```python
128
+ from hpc_runner import Job
129
+
130
+ # First job
131
+ preprocess = Job(command="python preprocess.py", cpu=8, mem="32G")
132
+ result1 = preprocess.submit()
133
+
134
+ # Second job runs after first succeeds
135
+ train = Job(command="python train.py", cpu=4, mem="48G", queue="gpu")
136
+ train.after(result1, type="afterok")
137
+ result2 = train.submit()
138
+ ```
139
+
140
+ ### Pipelines
141
+
142
+ ```python
143
+ from hpc_runner import Pipeline
144
+
145
+ with Pipeline("ml_workflow") as p:
146
+ p.add("python preprocess.py", name="preprocess", cpu=8)
147
+ p.add("python train.py", name="train", depends_on=["preprocess"], queue="gpu")
148
+ p.add("python evaluate.py", name="evaluate", depends_on=["train"])
149
+
150
+ results = p.submit()
151
+ p.wait()
152
+ ```
153
+
154
+ ## Scheduler Support
155
+
156
+ | Scheduler | Status | Notes |
157
+ |-----------|--------|-------|
158
+ | SGE | Fully implemented | qsub, qstat, qdel, qrsh |
159
+ | Local | Fully implemented | Run as subprocess (for testing) |
160
+ | Slurm | Planned | sbatch, squeue, scancel |
161
+ | PBS | Planned | qsub, qstat, qdel |
162
+
163
+ ### Auto-detection Priority
164
+
165
+ 1. `HPC_SCHEDULER` environment variable
166
+ 2. SGE (`SGE_ROOT` or `qstat` available)
167
+ 3. Slurm (`sbatch` available)
168
+ 4. PBS (`qsub` with PBS)
169
+ 5. Local fallback
170
+
171
+ ## Configuration
172
+
173
+ hpc-runner uses TOML configuration files. Location priority:
174
+
175
+ 1. `--config /path/to/config.toml`
176
+ 2. `./hpc-tools.toml`
177
+ 3. `./pyproject.toml` under `[tool.hpc-tools]`
178
+ 4. Git repository root `hpc-tools.toml`
179
+ 5. `~/.config/hpc-tools/config.toml`
180
+ 6. Package defaults
181
+
182
+ ### Example Configuration
183
+
184
+ ```toml
185
+ [defaults]
186
+ cpu = 1
187
+ mem = "4G"
188
+ time = "1:00:00"
189
+ inherit_env = true
190
+
191
+ [schedulers.sge]
192
+ parallel_environment = "smp"
193
+ memory_resource = "mem_free"
194
+ purge_modules = true
195
+
196
+ [types.gpu]
197
+ queue = "gpu"
198
+ resources = [{name = "gpu", value = 1}]
199
+
200
+ [types.interactive]
201
+ queue = "interactive"
202
+ time = "8:00:00"
203
+ ```
204
+
205
+ Use named job types:
206
+
207
+ ```bash
208
+ hpc run --job-type gpu "python train.py"
209
+ ```
210
+
211
+ ## TUI Monitor
212
+
213
+ Launch the interactive job monitor:
214
+
215
+ ```bash
216
+ hpc monitor
217
+ ```
218
+
219
+ Key bindings:
220
+ - `q` - Quit
221
+ - `r` - Refresh
222
+ - `u` - Toggle user filter (my jobs / all)
223
+ - `/` - Search
224
+ - `Enter` - View job details
225
+ - `Tab` - Switch tabs
226
+
227
+ ## CLI Reference
228
+
229
+ ```
230
+ hpc run [OPTIONS] COMMAND
231
+
232
+ Options:
233
+ --job-name TEXT Job name
234
+ --cpu INTEGER Number of CPUs
235
+ --mem TEXT Memory (e.g., 16G, 4096M)
236
+ --time TEXT Time limit (e.g., 4:00:00)
237
+ --queue TEXT Queue/partition name
238
+ --directory PATH Working directory
239
+ --module TEXT Module to load (repeatable)
240
+ --array TEXT Array spec (e.g., 1-100, 1-100%5)
241
+ --depend TEXT Job dependencies
242
+ --inherit-env Inherit environment (default: true)
243
+ --no-inherit-env Don't inherit environment
244
+ --interactive Run interactively (qrsh/srun)
245
+ --local Run locally (no scheduler)
246
+ --dry-run Show script without submitting
247
+ --wait Wait for completion
248
+ --keep-script Keep job script for debugging
249
+ -h, --help Show help
250
+
251
+ Other commands:
252
+ hpc status [JOB_ID] Check job status
253
+ hpc cancel JOB_ID Cancel a job
254
+ hpc monitor Interactive TUI
255
+ hpc config show Show active configuration
256
+ ```
257
+
258
+ ## Development
259
+
260
+ ```bash
261
+ # Setup environment
262
+ source sourceme
263
+ source sourceme --clean # Clean rebuild
264
+
265
+ # Run tests
266
+ pytest
267
+ pytest -v
268
+ pytest -k "test_job"
269
+
270
+ # Type checking
271
+ mypy src/hpc_runner
272
+
273
+ # Linting
274
+ ruff check src/hpc_runner
275
+ ruff format src/hpc_runner
276
+ ```
277
+
278
+ ## Documentation
279
+
280
+ - [Programmatic API Reference](docs/programmatic_api.md)
281
+ - [TUI Styling Guide](docs/TEXTUAL_STYLING_COOKBOOK.md)
282
+
283
+ ## License
284
+
285
+ MIT License - see LICENSE file for details.
@@ -0,0 +1,56 @@
1
+ hpc_runner/__init__.py,sha256=1xnewzCt8FVqseOG5PRmLbiMz0I8V8_TrTyIjW0Q8_A,1414
2
+ hpc_runner/_version.py,sha256=vYqoJTG51NOUmYyL0xt8asRK8vUT4lGAdal_EZ59mvw,704
3
+ hpc_runner/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
+ hpc_runner/cli/__init__.py,sha256=SkyeG7kzxbBGgO9fU96VvHjMjLaSdGI3KFVcqeUAYtg,25
5
+ hpc_runner/cli/cancel.py,sha256=8qRkPjlSGs6OGs7-_ilwpUlWpGQe7ch8aB_rEWiiLAI,901
6
+ hpc_runner/cli/config.py,sha256=dxNNOyuUyzuk9UUUaELp5WkhHrkZnXGi7zQkJdUl4YA,2920
7
+ hpc_runner/cli/main.py,sha256=Did1C3P0Cz7VjuR_a4a0dgHD9u_an_kxaBLNcMWYHR4,2061
8
+ hpc_runner/cli/monitor.py,sha256=aqr39IqwEUz_eczDLMw1dyfs_Gz6mtqKM2eMHI80f4g,698
9
+ hpc_runner/cli/run.py,sha256=fGK0gwIiQdUl0i2aC5FnwSs9MmuKF6ZZFgg7pn2NitU,9646
10
+ hpc_runner/cli/status.py,sha256=LMKvfIiR2U-r8kZOLw1L1-Xfli0mCtX-sSqI6_gy0i0,1957
11
+ hpc_runner/core/__init__.py,sha256=C6R3f_AWv5KOfZ3p2iJiht2B2r1LC62atHWntz51o9c,643
12
+ hpc_runner/core/config.py,sha256=UTbJnIveShGAS_YtS_tRT8H-_Jzq1qGidg3qSQZL6_Q,5184
13
+ hpc_runner/core/descriptors.py,sha256=xaoK3-YbVUcBdeumaY4JZ9noq-d5fqglIwZQqsWvYzU,3307
14
+ hpc_runner/core/exceptions.py,sha256=Z5JIzbpznCCx-wT4uZtHtwxstKZGIAxMubCJV64QzOc,889
15
+ hpc_runner/core/job.py,sha256=N_7HpDzxJipbJU0nVHOoYuaVAGjEXfMzgxJ9ve54mok,11052
16
+ hpc_runner/core/job_array.py,sha256=7VHoZHRzN5JvzWZ_e5pAMeTrNB7-OZw06A8548oK8_c,1595
17
+ hpc_runner/core/job_info.py,sha256=QE4iHH3uqYp4KdvZmBtfFUUaZfmPLkrF6LtlK4RuSJM,2858
18
+ hpc_runner/core/resources.py,sha256=ng1biVsXgGy6AWG50I50aC4LWB1pd60qFLpj5FjIpQc,1275
19
+ hpc_runner/core/result.py,sha256=UGw6ZRmdGI4oVD5ENzrSK72Igx7QNo-OJX9hLVyldp8,4914
20
+ hpc_runner/core/types.py,sha256=a6Yq7vhcpBwgA_hGZwGXiZgCy8wG87FIXBT3LN5qHw8,251
21
+ hpc_runner/schedulers/__init__.py,sha256=v55_DYgiigiFjXJhI7_XFtvxHoyDFWOntWRB9-HWMrM,1623
22
+ hpc_runner/schedulers/base.py,sha256=vhugT9lFrSZb8BMDO_x-h4nSF2oLg2nOvd347g3qfUY,6223
23
+ hpc_runner/schedulers/detection.py,sha256=b5_qdyroMQsvIf_DYY_RDoje6ozKLA3RS-fWWNR9qUU,1467
24
+ hpc_runner/schedulers/local/__init__.py,sha256=bM0RT5SBxs7TsGDUeUi--Z_vlVt9dgokJcftX92VE58,147
25
+ hpc_runner/schedulers/local/scheduler.py,sha256=tTq_5uZEIYCjK3PmPjI_iBAPijwUlTmSaLNoy4_AB5c,13310
26
+ hpc_runner/schedulers/local/templates/job.sh.j2,sha256=pv_R20o5G3LU-DIEIC7gpt7fYIZJmzkrIQEwmVkUWUI,522
27
+ hpc_runner/schedulers/sge/__init__.py,sha256=aR_jJD-YA0HOYPaBwW_CEwi3PASXY2x9sOfmrj6-cjM,144
28
+ hpc_runner/schedulers/sge/args.py,sha256=LBRj4UUDJ5jR8tEoCVF4ivjEKjqDI6LMvFsFzTgtOwk,6553
29
+ hpc_runner/schedulers/sge/parser.py,sha256=P6bG7II2icqSrnzgxGanPITV12X1zMvWYV04L6RIH2c,8381
30
+ hpc_runner/schedulers/sge/scheduler.py,sha256=-vz58MQzaJD97TqE4KfrnR3drLhQgHy8bpjpNwpHt2s,31998
31
+ hpc_runner/schedulers/sge/templates/batch.sh.j2,sha256=au-Hr7o55J1SutLLlpcTBJhRvQYHM4d9bSHk95u3nv4,1696
32
+ hpc_runner/schedulers/sge/templates/interactive.sh.j2,sha256=CY_hcmWoK8EuBNHmP7_lrfMf_i5BjZn8YY9Fi4ousZI,1622
33
+ hpc_runner/templates/__init__.py,sha256=kiaaYBS4QXfGie83SS0rfmZtlbyRUkGkR_yw04oExNQ,137
34
+ hpc_runner/templates/engine.py,sha256=XDW9C51rz9O2rcB3mpjVHQ0qkeG4386gXa8fwaDYsxs,1393
35
+ hpc_runner/tui/__init__.py,sha256=xuet6Iz1ZL6Ys5h95DMcuiapZNo8QA-sFU3R0NflbgE,136
36
+ hpc_runner/tui/app.py,sha256=rsiA2ViNGkfo6pWf2lvVRM3LVM1MunLB8CcNMLHRzso,16466
37
+ hpc_runner/tui/snapshot.py,sha256=sAcxdGaKsFXQMByPip-o1YwFaU-MLf_jGwDlZvEYTxY,5194
38
+ hpc_runner/tui/components/__init__.py,sha256=cS1VT2uhaWDq18-FvT9Hje_Uev7pI8WGFgWVNERfJMQ,303
39
+ hpc_runner/tui/components/detail_panel.py,sha256=3sRxO8J6ceBUctKm-LSF_aujIa63TEdWZJt2v08ae28,6983
40
+ hpc_runner/tui/components/filter_bar.py,sha256=v3YqUnieTzipJCaUHsVIcXc1VwTM3TorYBW-H6Ai5vo,4965
41
+ hpc_runner/tui/components/filter_popup.py,sha256=_car5ic8SS32183XWvbvVX8q1paNoX2Un-Ohy3z2vwo,10428
42
+ hpc_runner/tui/components/job_table.py,sha256=3gqYey0L9i2WInKl7Hknh31_E_PEPSKdFvVwSsG7uuY,9444
43
+ hpc_runner/tui/providers/__init__.py,sha256=iLzT7HR2ETSf6MxDw64yVn99kiHqzEDOHqNU7XLAEME,100
44
+ hpc_runner/tui/providers/jobs.py,sha256=YjhufHvBJu6QICIZLs5FhFBAcQMEyEhw-heSzYxYwvo,6340
45
+ hpc_runner/tui/screens/__init__.py,sha256=EoyZZGr_fruzDuDXtsKXyY5QhHbEFVbm820eiRtciBc,221
46
+ hpc_runner/tui/screens/confirm.py,sha256=ZBjrqcIk6f_5KGLzsSCfewZdyERnR0x2W2A34KYlkbI,2101
47
+ hpc_runner/tui/screens/job_details.py,sha256=B7KiZunhfM7QW3xVvmEBQnOB5CQfxYpH9Td0JC6M29A,7488
48
+ hpc_runner/tui/screens/log_viewer.py,sha256=II6B2Vj4KY-nx1wWWq_5K2gsmi6dSyQm-suaEzauEcM,5888
49
+ hpc_runner/tui/styles/monitor.tcss,sha256=-XJ_mF02AlaEuX81N6tkYKhKYDcBKYTDKXejJO5efkI,11349
50
+ hpc_runner/workflow/__init__.py,sha256=Y5h7wfnlWcav_f2USZaP6r5m7I5KFam8eEJGo4UqJ0w,221
51
+ hpc_runner/workflow/dependency.py,sha256=PjhgCurnlfcKYO_arlUDLCKOpwqq324l09Sj0v-iwOU,639
52
+ hpc_runner/workflow/pipeline.py,sha256=MYV95Kp-5m2YVxYDk_zIYUsyt31ctl7jnVA10F2OJgg,5540
53
+ hpc_runner-0.2.1.dist-info/METADATA,sha256=llf8Y-8fTDy3v0JfLXeBQkR7sG2Wjvs5cxh3xTAewEM,7015
54
+ hpc_runner-0.2.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
55
+ hpc_runner-0.2.1.dist-info/entry_points.txt,sha256=Ou3LsalLkY9mNOrUwyCDN8Q4PekM1K5h52hAU6fADk8,48
56
+ hpc_runner-0.2.1.dist-info/RECORD,,
@@ -1,39 +0,0 @@
1
- #!/bin/bash
2
- # Generated by hpc-tools (SGE scheduler)
3
-
4
- {% for directive in directives %}
5
- {{ directive }}
6
- {% endfor %}
7
-
8
- # Exit on error
9
- set -e
10
-
11
- # Source module system if available
12
- if [ -f /etc/profile.d/modules.sh ]; then
13
- . /etc/profile.d/modules.sh
14
- elif [ -f /usr/share/Modules/init/bash ]; then
15
- . /usr/share/Modules/init/bash
16
- fi
17
-
18
- {% if job.modules_path %}
19
- # Additional module paths
20
- {% for path in job.modules_path %}
21
- module use {{ path }}
22
- {% endfor %}
23
- {% endif %}
24
-
25
- {% if job.modules %}
26
- # Load modules
27
- {% for mod in job.modules %}
28
- module load {{ mod }}
29
- {% endfor %}
30
- {% endif %}
31
-
32
- {% if job.workdir %}
33
- # Change to working directory
34
- cd {{ job.workdir }}
35
- {% endif %}
36
-
37
- # Execute command
38
- {{ job.command }}
39
- exit $?
@@ -1,46 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: hpc-runner
3
- Version: 0.1.1
4
- Summary: Unified HPC job submission across multiple schedulers
5
- Project-URL: Homepage, https://github.com/sjalloq/hpc-runner
6
- Project-URL: Repository, https://github.com/sjalloq/hpc-runner
7
- Author: Shareef Jalloq
8
- License-Expression: MIT
9
- Keywords: cluster,hpc,job-submission,pbs,sge,slurm
10
- Classifier: Development Status :: 3 - Alpha
11
- Classifier: Environment :: Console
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Intended Audience :: Science/Research
14
- Classifier: License :: OSI Approved :: MIT License
15
- Classifier: Operating System :: POSIX :: Linux
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Programming Language :: Python :: 3.10
18
- Classifier: Programming Language :: Python :: 3.11
19
- Classifier: Programming Language :: Python :: 3.12
20
- Classifier: Topic :: System :: Clustering
21
- Classifier: Topic :: System :: Distributed Computing
22
- Requires-Python: >=3.10
23
- Requires-Dist: jinja2>=3.0
24
- Requires-Dist: rich-click>=1.7
25
- Requires-Dist: tomli>=2.0; python_version < '3.11'
26
- Provides-Extra: all
27
- Requires-Dist: build; extra == 'all'
28
- Requires-Dist: hatch-vcs; extra == 'all'
29
- Requires-Dist: mypy; extra == 'all'
30
- Requires-Dist: pytest-cov; extra == 'all'
31
- Requires-Dist: pytest>=7.0; extra == 'all'
32
- Requires-Dist: ruff; extra == 'all'
33
- Requires-Dist: twine; extra == 'all'
34
- Provides-Extra: dev
35
- Requires-Dist: build; extra == 'dev'
36
- Requires-Dist: hatch-vcs; extra == 'dev'
37
- Requires-Dist: mypy; extra == 'dev'
38
- Requires-Dist: pytest-cov; extra == 'dev'
39
- Requires-Dist: pytest>=7.0; extra == 'dev'
40
- Requires-Dist: ruff; extra == 'dev'
41
- Requires-Dist: twine; extra == 'dev'
42
- Description-Content-Type: text/markdown
43
-
44
- # hpc-tools
45
-
46
- A collection of tools aimed at abstracting the intricacies of HPC job schedulers from the user. Having writen tools like this in every job I've had, I thought it about time to write one to rule them all. With some help from my mate Claude.
@@ -1,38 +0,0 @@
1
- hpc_runner/__init__.py,sha256=1xnewzCt8FVqseOG5PRmLbiMz0I8V8_TrTyIjW0Q8_A,1414
2
- hpc_runner/_version.py,sha256=m8HxkqoKGw_wAJtc4ZokpJKNLXqp4zwnNhbnfDtro7w,704
3
- hpc_runner/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- hpc_runner/cli/__init__.py,sha256=SkyeG7kzxbBGgO9fU96VvHjMjLaSdGI3KFVcqeUAYtg,25
5
- hpc_runner/cli/cancel.py,sha256=__Ftt1Em3Z2n3DRGRtI24lZWmwB6PAmTk5S_m9Sbyk0,913
6
- hpc_runner/cli/config.py,sha256=CtOhCS9Rabho2cHY0kqV-MMMCUNrz9l_a3KTZBgH77I,2929
7
- hpc_runner/cli/main.py,sha256=_afdoXkzb_0nTy9gZyQnUc3lQpWSm4s8jfFTIuJKU5c,1728
8
- hpc_runner/cli/run.py,sha256=DWJaHrvTqw5wLxECpAFHNmCSGzYtYdqcwIIYdJMc32E,4457
9
- hpc_runner/cli/status.py,sha256=4HFjXmmvU55pjMmGRAuoEk2PxIR8vZXiynV2IAeLBLU,1978
10
- hpc_runner/core/__init__.py,sha256=euMbzZ7GCDlU3rcYW2NwTINgphwWab1j7WXWK0qaxjs,50
11
- hpc_runner/core/config.py,sha256=UTbJnIveShGAS_YtS_tRT8H-_Jzq1qGidg3qSQZL6_Q,5184
12
- hpc_runner/core/descriptors.py,sha256=jVi59YwdpiOi-i6gDgVC7MZmXE7wlzID9r3y32-yrBs,1820
13
- hpc_runner/core/exceptions.py,sha256=SofeFRW6-KmR55HqsGCke2tgmGlKxqigzxL9ZS6CLJQ,590
14
- hpc_runner/core/job.py,sha256=ba5iB_kV_zZ6cPKAvTAYR3JhYmrtH6H-kAziLL8NCiQ,5058
15
- hpc_runner/core/job_array.py,sha256=7VHoZHRzN5JvzWZ_e5pAMeTrNB7-OZw06A8548oK8_c,1595
16
- hpc_runner/core/resources.py,sha256=ng1biVsXgGy6AWG50I50aC4LWB1pd60qFLpj5FjIpQc,1275
17
- hpc_runner/core/result.py,sha256=f1RSpfXUxkc3No3EkgWAckHMa0OiVfgdNvbUAbzPjbg,4701
18
- hpc_runner/core/types.py,sha256=a6Yq7vhcpBwgA_hGZwGXiZgCy8wG87FIXBT3LN5qHw8,251
19
- hpc_runner/schedulers/__init__.py,sha256=v55_DYgiigiFjXJhI7_XFtvxHoyDFWOntWRB9-HWMrM,1623
20
- hpc_runner/schedulers/base.py,sha256=HOKLKR6xzZqknV72O47_jdAbf4vDL5-TfeL67L5uDo8,2272
21
- hpc_runner/schedulers/detection.py,sha256=Xx-oGSycsho4Y_VH8AB7j1IN3ak8AdjK4pvxJjCDYaE,873
22
- hpc_runner/schedulers/local/__init__.py,sha256=bM0RT5SBxs7TsGDUeUi--Z_vlVt9dgokJcftX92VE58,147
23
- hpc_runner/schedulers/local/scheduler.py,sha256=tvSyakrGrKUCS1vjnp94iN2AgQItnLv5OlAS-C5lv7U,8942
24
- hpc_runner/schedulers/local/templates/job.sh.j2,sha256=pv_R20o5G3LU-DIEIC7gpt7fYIZJmzkrIQEwmVkUWUI,522
25
- hpc_runner/schedulers/sge/__init__.py,sha256=aR_jJD-YA0HOYPaBwW_CEwi3PASXY2x9sOfmrj6-cjM,144
26
- hpc_runner/schedulers/sge/args.py,sha256=WX7ndhZ7_fYmdHPCW9fFzX297SGUuPouOqrUnm5uFk4,4286
27
- hpc_runner/schedulers/sge/parser.py,sha256=qQnkVPXqVNO8CstZ-ZzFN4R9Te23kgTWGGznmiAC4II,5119
28
- hpc_runner/schedulers/sge/scheduler.py,sha256=HpG1C9p4BEMO_Lr9WvvR6-IDbKT9UxoAKFjwXXFEFJ0,10683
29
- hpc_runner/schedulers/sge/templates/job.sh.j2,sha256=MQBciPCjdm5tTWLCikpoNAqtEr-Et7C-NY-Oa0unvos,715
30
- hpc_runner/templates/__init__.py,sha256=kiaaYBS4QXfGie83SS0rfmZtlbyRUkGkR_yw04oExNQ,137
31
- hpc_runner/templates/engine.py,sha256=XDW9C51rz9O2rcB3mpjVHQ0qkeG4386gXa8fwaDYsxs,1393
32
- hpc_runner/workflow/__init__.py,sha256=Y5h7wfnlWcav_f2USZaP6r5m7I5KFam8eEJGo4UqJ0w,221
33
- hpc_runner/workflow/dependency.py,sha256=PjhgCurnlfcKYO_arlUDLCKOpwqq324l09Sj0v-iwOU,639
34
- hpc_runner/workflow/pipeline.py,sha256=MYV95Kp-5m2YVxYDk_zIYUsyt31ctl7jnVA10F2OJgg,5540
35
- hpc_runner-0.1.1.dist-info/METADATA,sha256=fgg-u9jTGySLbrlWTu8NlqUVA6za0dZRPz3dGnsb54E,1919
36
- hpc_runner-0.1.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
37
- hpc_runner-0.1.1.dist-info/entry_points.txt,sha256=Ou3LsalLkY9mNOrUwyCDN8Q4PekM1K5h52hAU6fADk8,48
38
- hpc_runner-0.1.1.dist-info/RECORD,,