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.
Files changed (84) hide show
  1. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/PKG-INFO +1 -1
  2. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/_version.py +2 -2
  3. hpc_runner-0.2.0/tests/test_schedulers/test_sge_xml_submit_time.py +0 -49
  4. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.github/workflows/ci.yml +0 -0
  5. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.github/workflows/publish.yml +0 -0
  6. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/.gitignore +0 -0
  7. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/CLAUDE.md +0 -0
  8. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/README.md +0 -0
  9. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/SPEC.md +0 -0
  10. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/defaults/config.toml +0 -0
  11. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/HPC_MONITOR_TUI_PLAN.md +0 -0
  12. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/TEXTUAL_STYLING_COOKBOOK.md +0 -0
  13. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/docs/cli-redesign-spec.md +0 -0
  14. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/pyproject.toml +0 -0
  15. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/sourceme +0 -0
  16. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/__init__.py +0 -0
  17. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/__init__.py +0 -0
  18. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/cancel.py +0 -0
  19. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/config.py +0 -0
  20. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/main.py +0 -0
  21. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/monitor.py +0 -0
  22. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/run.py +0 -0
  23. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/cli/status.py +0 -0
  24. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/__init__.py +0 -0
  25. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/config.py +0 -0
  26. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/descriptors.py +0 -0
  27. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/exceptions.py +0 -0
  28. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job.py +0 -0
  29. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job_array.py +0 -0
  30. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/job_info.py +0 -0
  31. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/resources.py +0 -0
  32. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/result.py +0 -0
  33. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/core/types.py +0 -0
  34. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/py.typed +0 -0
  35. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/__init__.py +0 -0
  36. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/base.py +0 -0
  37. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/detection.py +0 -0
  38. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/__init__.py +0 -0
  39. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/scheduler.py +0 -0
  40. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/local/templates/job.sh.j2 +0 -0
  41. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/__init__.py +0 -0
  42. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/args.py +0 -0
  43. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/parser.py +0 -0
  44. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/scheduler.py +0 -0
  45. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/templates/batch.sh.j2 +0 -0
  46. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/schedulers/sge/templates/interactive.sh.j2 +0 -0
  47. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/templates/__init__.py +0 -0
  48. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/templates/engine.py +0 -0
  49. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/__init__.py +0 -0
  50. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/app.py +0 -0
  51. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/__init__.py +0 -0
  52. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/detail_panel.py +0 -0
  53. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/filter_bar.py +0 -0
  54. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/filter_popup.py +0 -0
  55. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/components/job_table.py +0 -0
  56. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/providers/__init__.py +0 -0
  57. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/providers/jobs.py +0 -0
  58. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/__init__.py +0 -0
  59. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/confirm.py +0 -0
  60. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/job_details.py +0 -0
  61. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/screens/log_viewer.py +0 -0
  62. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/snapshot.py +0 -0
  63. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/tui/styles/monitor.tcss +0 -0
  64. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/__init__.py +0 -0
  65. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/dependency.py +0 -0
  66. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/src/hpc_runner/workflow/pipeline.py +0 -0
  67. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/__init__.py +0 -0
  68. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/conftest.py +0 -0
  69. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_cli/__init__.py +0 -0
  70. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_cli/test_run.py +0 -0
  71. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/__init__.py +0 -0
  72. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_config.py +0 -0
  73. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_job.py +0 -0
  74. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_core/test_resources.py +0 -0
  75. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/__init__.py +0 -0
  76. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_detection.py +0 -0
  77. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_local.py +0 -0
  78. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_schedulers/test_sge.py +0 -0
  79. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/__init__.py +0 -0
  80. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_app_snapshot.py +0 -0
  81. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_detail_panel.py +0 -0
  82. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_tui/test_job_table.py +0 -0
  83. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_workflow/__init__.py +0 -0
  84. {hpc_runner-0.2.0 → hpc_runner-0.2.1}/tests/test_workflow/test_pipeline.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hpc-runner
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Unified HPC job submission across multiple schedulers
5
5
  Project-URL: Homepage, https://github.com/sjalloq/hpc-runner
6
6
  Project-URL: Repository, https://github.com/sjalloq/hpc-runner
@@ -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.0'
32
- __version_tuple__ = version_tuple = (0, 2, 0)
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