lsst-ctrl-bps-htcondor 28.2025.500__tar.gz → 28.2025.700__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.
- {lsst_ctrl_bps_htcondor-28.2025.500/python/lsst_ctrl_bps_htcondor.egg-info → lsst_ctrl_bps_htcondor-28.2025.700}/PKG-INFO +1 -1
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/pyproject.toml +13 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/htcondor_service.py +9 -9
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/lssthtc.py +15 -15
- lsst_ctrl_bps_htcondor-28.2025.700/python/lsst/ctrl/bps/htcondor/version.py +2 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700/python/lsst_ctrl_bps_htcondor.egg-info}/PKG-INFO +1 -1
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/tests/test_htcondor_service.py +1 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/tests/test_lssthtc.py +1 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/tests/test_provisioner.py +1 -0
- lsst_ctrl_bps_htcondor-28.2025.500/python/lsst/ctrl/bps/htcondor/version.py +0 -2
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/COPYRIGHT +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/LICENSE +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/MANIFEST.in +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/README.rst +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/bsd_license.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/doc/lsst.ctrl.bps.htcondor/CHANGES.rst +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/doc/lsst.ctrl.bps.htcondor/index.rst +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/doc/lsst.ctrl.bps.htcondor/userguide.rst +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/gpl-v3.0.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/__init__.py +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/etc/__init__.py +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/etc/htcondor_defaults.yaml +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/final_post.sh +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/handlers.py +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/htcondor_config.py +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst/ctrl/bps/htcondor/provisioner.py +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst_ctrl_bps_htcondor.egg-info/SOURCES.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst_ctrl_bps_htcondor.egg-info/dependency_links.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst_ctrl_bps_htcondor.egg-info/requires.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst_ctrl_bps_htcondor.egg-info/top_level.txt +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/python/lsst_ctrl_bps_htcondor.egg-info/zip-safe +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/setup.cfg +0 -0
- {lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/tests/test_handlers.py +0 -0
|
@@ -96,6 +96,7 @@ target-version = ["py311"]
|
|
|
96
96
|
[tool.isort]
|
|
97
97
|
profile = "black"
|
|
98
98
|
line_length = 110
|
|
99
|
+
known_first_party = ["lsst"]
|
|
99
100
|
|
|
100
101
|
[tool.lsst_versions]
|
|
101
102
|
write_to = "python/lsst/ctrl/bps/htcondor/version.py"
|
|
@@ -145,6 +146,9 @@ select = [
|
|
|
145
146
|
"D", # pydocstyle
|
|
146
147
|
"UP", # pyupgrade
|
|
147
148
|
"C4",
|
|
149
|
+
"I", # isort
|
|
150
|
+
"RUF022", # sort __all__
|
|
151
|
+
"B", # bugbear
|
|
148
152
|
]
|
|
149
153
|
extend-select = [
|
|
150
154
|
"RUF100", # Warn about unused noqa
|
|
@@ -156,6 +160,15 @@ max-doc-length = 79
|
|
|
156
160
|
[tool.ruff.lint.pydocstyle]
|
|
157
161
|
convention = "numpy"
|
|
158
162
|
|
|
163
|
+
[tool.ruff.lint.isort]
|
|
164
|
+
known-first-party = ["lsst"]
|
|
165
|
+
# Without this ruff introspection comes to the wrong conclusion.
|
|
166
|
+
known-third-party = ["htcondor"]
|
|
167
|
+
|
|
168
|
+
[tool.ruff.format]
|
|
169
|
+
docstring-code-format = true
|
|
170
|
+
docstring-code-line-length = 79
|
|
171
|
+
|
|
159
172
|
[tool.numpydoc_validation]
|
|
160
173
|
checks = [
|
|
161
174
|
"all", # All except the rules listed below.
|
|
@@ -25,8 +25,7 @@
|
|
|
25
25
|
# You should have received a copy of the GNU General Public License
|
|
26
26
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
27
27
|
|
|
28
|
-
"""Interface between generic workflow to HTCondor workflow system.
|
|
29
|
-
"""
|
|
28
|
+
"""Interface between generic workflow to HTCondor workflow system."""
|
|
30
29
|
|
|
31
30
|
__all__ = ["HTCondorService", "HTCondorWorkflow"]
|
|
32
31
|
|
|
@@ -40,6 +39,8 @@ from pathlib import Path
|
|
|
40
39
|
from typing import Any
|
|
41
40
|
|
|
42
41
|
import htcondor
|
|
42
|
+
from packaging import version
|
|
43
|
+
|
|
43
44
|
from lsst.ctrl.bps import (
|
|
44
45
|
BaseWmsService,
|
|
45
46
|
BaseWmsWorkflow,
|
|
@@ -53,7 +54,6 @@ from lsst.ctrl.bps import (
|
|
|
53
54
|
from lsst.ctrl.bps.bps_utils import chdir, create_count_summary
|
|
54
55
|
from lsst.daf.butler import Config
|
|
55
56
|
from lsst.utils.timer import time_this
|
|
56
|
-
from packaging import version
|
|
57
57
|
|
|
58
58
|
from .htcondor_config import HTC_DEFAULTS_URI
|
|
59
59
|
from .lssthtc import (
|
|
@@ -373,7 +373,7 @@ class HTCondorService(BaseWmsService):
|
|
|
373
373
|
|
|
374
374
|
# Prune child jobs where DAG job is in queue (i.e., aren't orphans).
|
|
375
375
|
job_ids = []
|
|
376
|
-
for
|
|
376
|
+
for job_info in results.values():
|
|
377
377
|
for job_id, job_ad in job_info.items():
|
|
378
378
|
_LOG.debug("job_id=%s DAGManJobId=%s", job_id, job_ad.get("DAGManJobId", "None"))
|
|
379
379
|
if "DAGManJobId" not in job_ad:
|
|
@@ -760,7 +760,7 @@ def _translate_job_cmds(cached_vals, generic_workflow, gwjob):
|
|
|
760
760
|
jobcmds["retry_until"] = f"{gwjob.retry_unless_exit}"
|
|
761
761
|
elif isinstance(gwjob.retry_unless_exit, list):
|
|
762
762
|
jobcmds["retry_until"] = (
|
|
763
|
-
f
|
|
763
|
+
f"member(ExitCode, {{{','.join([str(x) for x in gwjob.retry_unless_exit])}}})"
|
|
764
764
|
)
|
|
765
765
|
else:
|
|
766
766
|
raise ValueError("retryUnlessExit must be an integer or a list of integers.")
|
|
@@ -2134,11 +2134,11 @@ def _gather_site_values(config, compute_site):
|
|
|
2134
2134
|
|
|
2135
2135
|
key = f".site.{compute_site}.profile.condor"
|
|
2136
2136
|
if key in config:
|
|
2137
|
-
for
|
|
2138
|
-
if
|
|
2139
|
-
site_values["attrs"][
|
|
2137
|
+
for subkey, val in config[key].items():
|
|
2138
|
+
if subkey.startswith("+"):
|
|
2139
|
+
site_values["attrs"][subkey[1:]] = val
|
|
2140
2140
|
else:
|
|
2141
|
-
site_values["profile"][
|
|
2141
|
+
site_values["profile"][subkey] = val
|
|
2142
2142
|
|
|
2143
2143
|
return site_values
|
|
2144
2144
|
|
|
@@ -34,38 +34,38 @@ level. LSST workflows are more complicated.
|
|
|
34
34
|
"""
|
|
35
35
|
|
|
36
36
|
__all__ = [
|
|
37
|
+
"MISSING_ID",
|
|
37
38
|
"DagStatus",
|
|
39
|
+
"HTCDag",
|
|
40
|
+
"HTCJob",
|
|
38
41
|
"JobStatus",
|
|
39
42
|
"NodeStatus",
|
|
40
43
|
"RestrictedDict",
|
|
41
|
-
"
|
|
42
|
-
"
|
|
44
|
+
"condor_history",
|
|
45
|
+
"condor_q",
|
|
46
|
+
"condor_search",
|
|
47
|
+
"condor_status",
|
|
43
48
|
"htc_backup_files",
|
|
44
49
|
"htc_check_dagman_output",
|
|
45
50
|
"htc_create_submit_from_cmd",
|
|
46
51
|
"htc_create_submit_from_dag",
|
|
47
52
|
"htc_create_submit_from_file",
|
|
48
53
|
"htc_escape",
|
|
49
|
-
"htc_write_attribs",
|
|
50
|
-
"htc_write_condor_file",
|
|
51
54
|
"htc_query_history",
|
|
52
55
|
"htc_query_present",
|
|
53
|
-
"htc_version",
|
|
54
56
|
"htc_submit_dag",
|
|
55
|
-
"
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"update_job_info",
|
|
60
|
-
"MISSING_ID",
|
|
61
|
-
"summary_from_dag",
|
|
57
|
+
"htc_version",
|
|
58
|
+
"htc_write_attribs",
|
|
59
|
+
"htc_write_condor_file",
|
|
60
|
+
"pegasus_name_to_label",
|
|
62
61
|
"read_dag_info",
|
|
63
62
|
"read_dag_log",
|
|
64
63
|
"read_dag_nodes_log",
|
|
65
64
|
"read_dag_status",
|
|
66
65
|
"read_node_status",
|
|
66
|
+
"summary_from_dag",
|
|
67
|
+
"update_job_info",
|
|
67
68
|
"write_dag_info",
|
|
68
|
-
"pegasus_name_to_label",
|
|
69
69
|
]
|
|
70
70
|
|
|
71
71
|
|
|
@@ -688,7 +688,7 @@ def htc_create_submit_from_file(submit_file):
|
|
|
688
688
|
for line in fh:
|
|
689
689
|
line = line.strip()
|
|
690
690
|
if not line.startswith("#") and not line == "queue":
|
|
691
|
-
(key, val) = re.split(r"\s*=\s*", line, 1)
|
|
691
|
+
(key, val) = re.split(r"\s*=\s*", line, maxsplit=1)
|
|
692
692
|
descriptors[key] = val
|
|
693
693
|
|
|
694
694
|
# Avoid UserWarning: the line 'copy_to_spool = False' was
|
|
@@ -1028,7 +1028,7 @@ class HTCDag(networkx.DiGraph):
|
|
|
1028
1028
|
for edge in self.edges():
|
|
1029
1029
|
print(f"PARENT {edge[0]} CHILD {edge[1]}", file=fh)
|
|
1030
1030
|
if self.graph["final_job"]:
|
|
1031
|
-
print(f
|
|
1031
|
+
print(f"FINAL {self.graph['final_job'].name}:", file=fh)
|
|
1032
1032
|
self.graph["final_job"].dump(fh)
|
|
1033
1033
|
|
|
1034
1034
|
def write_dot(self, filename):
|
|
@@ -34,6 +34,7 @@ from pathlib import Path
|
|
|
34
34
|
from shutil import copy2
|
|
35
35
|
|
|
36
36
|
import htcondor
|
|
37
|
+
|
|
37
38
|
from lsst.ctrl.bps import BpsConfig, GenericWorkflowExec, GenericWorkflowJob, WmsStates
|
|
38
39
|
from lsst.ctrl.bps.htcondor.htcondor_config import HTC_DEFAULTS_URI
|
|
39
40
|
from lsst.ctrl.bps.htcondor.htcondor_service import (
|
|
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
|
{lsst_ctrl_bps_htcondor-28.2025.500 → lsst_ctrl_bps_htcondor-28.2025.700}/tests/test_handlers.py
RENAMED
|
File without changes
|