hpc-runner 0.2.0__tar.gz → 0.2.1__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.2.0 → hpc_runner-0.2.1}/PKG-INFO +1 -1
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/_version.py +2 -2
- hpc_runner-0.2.0/tests/test_schedulers/test_sge_xml_submit_time.py +0 -49
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.github/workflows/ci.yml +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.github/workflows/publish.yml +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.gitignore +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/CLAUDE.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/README.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/SPEC.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/defaults/config.toml +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/HPC_MONITOR_TUI_PLAN.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/TEXTUAL_STYLING_COOKBOOK.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/cli-redesign-spec.md +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/pyproject.toml +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/sourceme +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/cancel.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/config.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/main.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/monitor.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/run.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/status.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/config.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/descriptors.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/exceptions.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job_array.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job_info.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/resources.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/result.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/types.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/py.typed +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/base.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/detection.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/scheduler.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/templates/job.sh.j2 +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/args.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/parser.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/scheduler.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/templates/batch.sh.j2 +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/templates/interactive.sh.j2 +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/templates/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/templates/engine.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/app.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/detail_panel.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/filter_bar.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/filter_popup.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/job_table.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/providers/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/providers/jobs.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/confirm.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/job_details.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/log_viewer.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/snapshot.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/styles/monitor.tcss +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/dependency.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/pipeline.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/conftest.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_cli/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_cli/test_run.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_config.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_job.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_resources.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_detection.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_local.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_sge.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_app_snapshot.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_detail_panel.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_job_table.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_workflow/__init__.py +0 -0
- {hpc_runner-0.2.0 → hpc_runner-0.2.1}/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.2.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 2,
|
|
31
|
+
__version__ = version = '0.2.1'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 2, 1)
|
|
33
33
|
|
|
34
34
|
__commit_id__ = commit_id = None
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"""Tests for SGE qstat -j -xml parsing."""
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
import xml.etree.ElementTree as ET
|
|
5
|
-
|
|
6
|
-
from hpc_runner.schedulers.sge.scheduler import SGEScheduler
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def _strip_namespaces(root: ET.Element) -> None:
|
|
10
|
-
"""Strip namespaces so ElementTree can match tag names directly."""
|
|
11
|
-
for elem in root.iter():
|
|
12
|
-
if isinstance(elem.tag, str) and "}" in elem.tag:
|
|
13
|
-
elem.tag = elem.tag.split("}", 1)[1]
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def _find_expected_submit_time(xml_text: str) -> int | None:
|
|
17
|
-
"""Extract expected submit time using ElementTree."""
|
|
18
|
-
try:
|
|
19
|
-
root = ET.fromstring(xml_text)
|
|
20
|
-
except ET.ParseError:
|
|
21
|
-
return None
|
|
22
|
-
_strip_namespaces(root)
|
|
23
|
-
submit_text = root.findtext(".//JB_submission_time")
|
|
24
|
-
if not submit_text:
|
|
25
|
-
return None
|
|
26
|
-
try:
|
|
27
|
-
return int(submit_text)
|
|
28
|
-
except ValueError:
|
|
29
|
-
return None
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
def test_qstat_j_xml_submit_time_from_repo_samples() -> None:
|
|
33
|
-
"""Parse repo XML samples and ensure submit_time is extracted."""
|
|
34
|
-
scheduler = SGEScheduler()
|
|
35
|
-
xml_files = sorted(Path(".").glob("*.xml"))
|
|
36
|
-
assert xml_files, "No XML files found in repo root for SGE tests."
|
|
37
|
-
|
|
38
|
-
missing = []
|
|
39
|
-
for path in xml_files:
|
|
40
|
-
xml_text = path.read_text(errors="ignore")
|
|
41
|
-
expected = _find_expected_submit_time(xml_text)
|
|
42
|
-
if expected is None:
|
|
43
|
-
continue
|
|
44
|
-
parsed = scheduler._parse_qstat_j_xml(xml_text)
|
|
45
|
-
actual = parsed.get("submit_time")
|
|
46
|
-
if actual != expected:
|
|
47
|
-
missing.append((path.name, expected, actual))
|
|
48
|
-
|
|
49
|
-
assert not missing, f"Missing or mismatched submit_time: {missing}"
|
|
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.2.0 → hpc_runner-0.2.1}/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
|
|
File without changes
|