lsst-ctrl-bps-htcondor 28.2025.600__tar.gz → 28.2025.800__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 (33) hide show
  1. {lsst_ctrl_bps_htcondor-28.2025.600/python/lsst_ctrl_bps_htcondor.egg-info → lsst_ctrl_bps_htcondor-28.2025.800}/PKG-INFO +1 -1
  2. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/pyproject.toml +13 -0
  3. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/htcondor_service.py +8 -7
  4. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/lssthtc.py +15 -15
  5. lsst_ctrl_bps_htcondor-28.2025.800/python/lsst/ctrl/bps/htcondor/version.py +2 -0
  6. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800/python/lsst_ctrl_bps_htcondor.egg-info}/PKG-INFO +1 -1
  7. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/tests/test_htcondor_service.py +1 -0
  8. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/tests/test_lssthtc.py +1 -0
  9. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/tests/test_provisioner.py +1 -0
  10. lsst_ctrl_bps_htcondor-28.2025.600/python/lsst/ctrl/bps/htcondor/version.py +0 -2
  11. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/COPYRIGHT +0 -0
  12. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/LICENSE +0 -0
  13. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/MANIFEST.in +0 -0
  14. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/README.rst +0 -0
  15. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/bsd_license.txt +0 -0
  16. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/doc/lsst.ctrl.bps.htcondor/CHANGES.rst +0 -0
  17. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/doc/lsst.ctrl.bps.htcondor/index.rst +0 -0
  18. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/doc/lsst.ctrl.bps.htcondor/userguide.rst +0 -0
  19. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/gpl-v3.0.txt +0 -0
  20. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/__init__.py +0 -0
  21. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/etc/__init__.py +0 -0
  22. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/etc/htcondor_defaults.yaml +0 -0
  23. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/final_post.sh +0 -0
  24. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/handlers.py +0 -0
  25. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/htcondor_config.py +0 -0
  26. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst/ctrl/bps/htcondor/provisioner.py +0 -0
  27. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst_ctrl_bps_htcondor.egg-info/SOURCES.txt +0 -0
  28. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst_ctrl_bps_htcondor.egg-info/dependency_links.txt +0 -0
  29. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst_ctrl_bps_htcondor.egg-info/requires.txt +0 -0
  30. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst_ctrl_bps_htcondor.egg-info/top_level.txt +0 -0
  31. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/python/lsst_ctrl_bps_htcondor.egg-info/zip-safe +0 -0
  32. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/setup.cfg +0 -0
  33. {lsst_ctrl_bps_htcondor-28.2025.600 → lsst_ctrl_bps_htcondor-28.2025.800}/tests/test_handlers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: lsst-ctrl-bps-htcondor
3
- Version: 28.2025.600
3
+ Version: 28.2025.800
4
4
  Summary: HTCondor plugin for lsst-ctrl-bps.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License: BSD 3-Clause License
@@ -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.
@@ -39,6 +39,8 @@ from pathlib import Path
39
39
  from typing import Any
40
40
 
41
41
  import htcondor
42
+ from packaging import version
43
+
42
44
  from lsst.ctrl.bps import (
43
45
  BaseWmsService,
44
46
  BaseWmsWorkflow,
@@ -52,7 +54,6 @@ from lsst.ctrl.bps import (
52
54
  from lsst.ctrl.bps.bps_utils import chdir, create_count_summary
53
55
  from lsst.daf.butler import Config
54
56
  from lsst.utils.timer import time_this
55
- from packaging import version
56
57
 
57
58
  from .htcondor_config import HTC_DEFAULTS_URI
58
59
  from .lssthtc import (
@@ -372,7 +373,7 @@ class HTCondorService(BaseWmsService):
372
373
 
373
374
  # Prune child jobs where DAG job is in queue (i.e., aren't orphans).
374
375
  job_ids = []
375
- for schedd_name, job_info in results.items():
376
+ for job_info in results.values():
376
377
  for job_id, job_ad in job_info.items():
377
378
  _LOG.debug("job_id=%s DAGManJobId=%s", job_id, job_ad.get("DAGManJobId", "None"))
378
379
  if "DAGManJobId" not in job_ad:
@@ -759,7 +760,7 @@ def _translate_job_cmds(cached_vals, generic_workflow, gwjob):
759
760
  jobcmds["retry_until"] = f"{gwjob.retry_unless_exit}"
760
761
  elif isinstance(gwjob.retry_unless_exit, list):
761
762
  jobcmds["retry_until"] = (
762
- f'member(ExitCode, {{{",".join([str(x) for x in gwjob.retry_unless_exit])}}})'
763
+ f"member(ExitCode, {{{','.join([str(x) for x in gwjob.retry_unless_exit])}}})"
763
764
  )
764
765
  else:
765
766
  raise ValueError("retryUnlessExit must be an integer or a list of integers.")
@@ -2133,11 +2134,11 @@ def _gather_site_values(config, compute_site):
2133
2134
 
2134
2135
  key = f".site.{compute_site}.profile.condor"
2135
2136
  if key in config:
2136
- for key, val in config[key].items():
2137
- if key.startswith("+"):
2138
- site_values["attrs"][key[1:]] = val
2137
+ for subkey, val in config[key].items():
2138
+ if subkey.startswith("+"):
2139
+ site_values["attrs"][subkey[1:]] = val
2139
2140
  else:
2140
- site_values["profile"][key] = val
2141
+ site_values["profile"][subkey] = val
2141
2142
 
2142
2143
  return site_values
2143
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
- "HTCJob",
42
- "HTCDag",
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
- "condor_history",
56
- "condor_q",
57
- "condor_search",
58
- "condor_status",
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'FINAL {self.graph["final_job"].name}:', file=fh)
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):
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "28.2025.800"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: lsst-ctrl-bps-htcondor
3
- Version: 28.2025.600
3
+ Version: 28.2025.800
4
4
  Summary: HTCondor plugin for lsst-ctrl-bps.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License: BSD 3-Clause License
@@ -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 (
@@ -34,6 +34,7 @@ import unittest
34
34
  from shutil import copy2
35
35
 
36
36
  import htcondor
37
+
37
38
  from lsst.ctrl.bps.htcondor import lssthtc
38
39
  from lsst.utils.tests import temporaryDirectory
39
40
 
@@ -25,6 +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
  """Unit tests for Provisioner class."""
28
+
28
29
  import logging
29
30
  import os
30
31
  import tempfile
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "28.2025.600"