hpc-runner 0.3.1__tar.gz → 0.3.2__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.
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/.github/workflows/ci.yml +3 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/PKG-INFO +1 -1
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/_version.py +2 -2
- hpc_runner-0.3.2/tests/modulefiles/dummy_lib/2.5 +4 -0
- hpc_runner-0.3.2/tests/modulefiles/dummy_tool/1.0 +4 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_schedulers/test_local.py +67 -1
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/.github/workflows/docs.yml +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/.github/workflows/publish.yml +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/.gitignore +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/.pre-commit-config.yaml +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/CLAUDE.md +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/README.md +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/defaults/config.toml +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/HPC_MONITOR_TUI_PLAN.md +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/Makefile +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/TEXTUAL_STYLING_COOKBOOK.md +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/_static/.gitkeep +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/_templates/.gitkeep +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/cli.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/conf.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/configuration.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/getting_started.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/index.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/programmatic_api.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/docs/source/sge.rst +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/pyproject.toml +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/sourceme +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/cancel.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/config.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/main.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/monitor.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/run.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/status.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/cli/submit.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/config.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/descriptors.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/exceptions.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/job.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/job_array.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/job_info.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/resources.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/result.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/core/types.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/py.typed +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/base.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/detection.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/local/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/local/scheduler.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/local/templates/job.sh.j2 +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/args.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/parser.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/scheduler.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/templates/batch.sh.j2 +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/templates/interactive.sh.j2 +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/templates/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/templates/engine.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/app.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/components/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/components/detail_panel.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/components/filter_bar.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/components/filter_popup.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/components/job_table.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/providers/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/providers/jobs.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/screens/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/screens/confirm.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/screens/job_details.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/screens/log_viewer.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/snapshot.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/tui/styles/monitor.tcss +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/workflow/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/workflow/dependency.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/workflow/pipeline.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/conftest.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_cli/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_cli/test_run.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_core/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_core/test_config.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_core/test_job.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_core/test_resources.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_schedulers/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_schedulers/test_detection.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_schedulers/test_sge.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_tui/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_tui/test_app_snapshot.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_tui/test_detail_panel.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_tui/test_job_table.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_workflow/__init__.py +0 -0
- {hpc_runner-0.3.1 → hpc_runner-0.3.2}/tests/test_workflow/test_pipeline.py +0 -0
|
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
|
|
|
28
28
|
commit_id: COMMIT_ID
|
|
29
29
|
__commit_id__: COMMIT_ID
|
|
30
30
|
|
|
31
|
-
__version__ = version = '0.3.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 3,
|
|
31
|
+
__version__ = version = '0.3.2'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 3, 2)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Tests for local scheduler."""
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import shutil
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
6
|
import pytest
|
|
@@ -9,6 +9,15 @@ from hpc_runner.core.job import Job
|
|
|
9
9
|
from hpc_runner.core.result import JobStatus
|
|
10
10
|
from hpc_runner.schedulers.local import LocalScheduler
|
|
11
11
|
|
|
12
|
+
MODULEFILES_DIR = str(Path(__file__).parent.parent / "modulefiles")
|
|
13
|
+
|
|
14
|
+
has_modules = (
|
|
15
|
+
shutil.which("modulecmd") is not None
|
|
16
|
+
or Path("/usr/share/Modules/init/bash").exists()
|
|
17
|
+
or Path("/etc/profile.d/modules.sh").exists()
|
|
18
|
+
)
|
|
19
|
+
requires_modules = pytest.mark.skipif(not has_modules, reason="Environment Modules not installed")
|
|
20
|
+
|
|
12
21
|
|
|
13
22
|
class TestLocalScheduler:
|
|
14
23
|
"""Tests for LocalScheduler."""
|
|
@@ -151,3 +160,60 @@ class TestLocalScheduler:
|
|
|
151
160
|
assert "module use /opt/modulefiles" in script
|
|
152
161
|
assert "module load python/3.11" in script
|
|
153
162
|
assert "module load gcc/12.2" in script
|
|
163
|
+
|
|
164
|
+
@requires_modules
|
|
165
|
+
def test_module_loading(self, temp_dir):
|
|
166
|
+
"""Test that a module is actually loaded and sets env vars."""
|
|
167
|
+
scheduler = LocalScheduler()
|
|
168
|
+
job = Job(
|
|
169
|
+
command="echo $DUMMY_TOOL_LOADED",
|
|
170
|
+
modules=["dummy_tool/1.0"],
|
|
171
|
+
modules_path=[MODULEFILES_DIR],
|
|
172
|
+
workdir=temp_dir,
|
|
173
|
+
stdout="out.log",
|
|
174
|
+
)
|
|
175
|
+
|
|
176
|
+
result = scheduler.submit(job, interactive=True)
|
|
177
|
+
|
|
178
|
+
assert result.returncode == 0
|
|
179
|
+
stdout_path = scheduler.get_output_path(result.job_id, "stdout")
|
|
180
|
+
content = stdout_path.read_text().strip()
|
|
181
|
+
assert content == "true"
|
|
182
|
+
|
|
183
|
+
@requires_modules
|
|
184
|
+
def test_multiple_modules(self, temp_dir):
|
|
185
|
+
"""Test loading multiple modules sets all env vars."""
|
|
186
|
+
scheduler = LocalScheduler()
|
|
187
|
+
job = Job(
|
|
188
|
+
command="echo $DUMMY_TOOL_LOADED $DUMMY_LIB_LOADED",
|
|
189
|
+
modules=["dummy_tool/1.0", "dummy_lib/2.5"],
|
|
190
|
+
modules_path=[MODULEFILES_DIR],
|
|
191
|
+
workdir=temp_dir,
|
|
192
|
+
stdout="out.log",
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
result = scheduler.submit(job, interactive=True)
|
|
196
|
+
|
|
197
|
+
assert result.returncode == 0
|
|
198
|
+
stdout_path = scheduler.get_output_path(result.job_id, "stdout")
|
|
199
|
+
content = stdout_path.read_text().strip()
|
|
200
|
+
assert content == "true true"
|
|
201
|
+
|
|
202
|
+
@requires_modules
|
|
203
|
+
def test_module_sets_env_var(self, temp_dir):
|
|
204
|
+
"""Test that module sets specific version string in environment."""
|
|
205
|
+
scheduler = LocalScheduler()
|
|
206
|
+
job = Job(
|
|
207
|
+
command="echo $DUMMY_TOOL_VERSION",
|
|
208
|
+
modules=["dummy_tool/1.0"],
|
|
209
|
+
modules_path=[MODULEFILES_DIR],
|
|
210
|
+
workdir=temp_dir,
|
|
211
|
+
stdout="out.log",
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
result = scheduler.submit(job, interactive=True)
|
|
215
|
+
|
|
216
|
+
assert result.returncode == 0
|
|
217
|
+
stdout_path = scheduler.get_output_path(result.job_id, "stdout")
|
|
218
|
+
content = stdout_path.read_text().strip()
|
|
219
|
+
assert content == "1.0"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hpc_runner-0.3.1 → hpc_runner-0.3.2}/src/hpc_runner/schedulers/sge/templates/interactive.sh.j2
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|