lsst-ctrl-bps 29.2025.4700__py3-none-any.whl → 30.0.0__py3-none-any.whl

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/drivers.py CHANGED
@@ -55,6 +55,7 @@ from lsst.utils.timer import time_this
55
55
  from lsst.utils.usage import get_peak_mem_usage
56
56
 
57
57
  from . import BPS_DEFAULTS, BPS_SEARCH_ORDER, DEFAULT_MEM_FMT, DEFAULT_MEM_UNIT, BpsConfig
58
+ from .bps_reports import compile_code_summary, compile_job_summary
58
59
  from .bps_utils import _dump_env_info, _dump_pkg_info, _make_id_link
59
60
  from .cancel import cancel
60
61
  from .construct import construct
@@ -68,7 +69,7 @@ from .initialize import (
68
69
  from .ping import ping
69
70
  from .pre_transform import acquire_quantum_graph, cluster_quanta
70
71
  from .prepare import prepare
71
- from .report import BPS_POSTPROCESSORS, display_report, retrieve_report
72
+ from .report import display_report, retrieve_report
72
73
  from .restart import restart
73
74
  from .status import status
74
75
  from .submit import submit
@@ -400,20 +401,31 @@ def restart_driver(wms_service, run_id):
400
401
  print("Restart failed: Unknown error")
401
402
 
402
403
 
403
- def report_driver(wms_service, run_id, user, hist_days, pass_thru, is_global=False, return_exit_codes=False):
404
- """Print out summary of jobs submitted for execution.
404
+ def report_driver(
405
+ wms_service: str | None = None,
406
+ run_id: str | None = None,
407
+ user: str | None = None,
408
+ hist_days: float = 0.0,
409
+ pass_thru: str | None = None,
410
+ is_global: bool = False,
411
+ return_exit_codes: bool = False,
412
+ ):
413
+ """Print out the summary of jobs submitted for execution.
405
414
 
406
415
  Parameters
407
416
  ----------
408
- wms_service : `str`
417
+ wms_service : `str`, optional
409
418
  Name of the class.
410
- run_id : `str`
419
+ run_id : `str`, optional
411
420
  A run id the report will be restricted to.
412
- user : `str`
421
+ user : `str`, optional
413
422
  A user the report will be restricted to.
414
- hist_days : `float`
415
- Number of days.
416
- pass_thru : `str`
423
+ hist_days : `float`, optional
424
+ Number of past days to consider while preparing the report. By default,
425
+ only the currently running workflows are included in the report.
426
+ If the report is restricted to a single run (i.e., ``run_id`` is set),
427
+ the history search will be limited by default to two past days.
428
+ pass_thru : `str`, optional
417
429
  A string to pass directly to the WMS service class.
418
430
  is_global : `bool`, optional
419
431
  If set, all available job queues will be queried for job information.
@@ -430,17 +442,19 @@ def report_driver(wms_service, run_id, user, hist_days, pass_thru, is_global=Fal
430
442
  Only applicable in the context of a WMS with associated
431
443
  handlers to return exit codes from jobs.
432
444
  """
433
- if wms_service is None:
445
+ if not wms_service:
434
446
  default_config = BpsConfig(BPS_DEFAULTS)
435
447
  wms_service = os.environ.get("BPS_WMS_SERVICE_CLASS", default_config["wmsServiceClass"])
436
448
 
437
- # When reporting on single run:
438
- # * increase history until better mechanism for handling completed jobs is
439
- # available.
449
+ # When reporting on a single run:
450
+ # * increase history until a better mechanism for handling completed jobs
451
+ # is available.
440
452
  # * massage the retrieved reports using BPS report postprocessors.
441
453
  if run_id:
442
454
  hist_days = max(hist_days, 2)
443
- postprocessors = BPS_POSTPROCESSORS
455
+ postprocessors = [compile_job_summary]
456
+ if return_exit_codes:
457
+ postprocessors.append(compile_code_summary)
444
458
  else:
445
459
  postprocessors = None
446
460
 
@@ -332,6 +332,18 @@ class GenericWorkflow(DiGraph):
332
332
  self.run_id = None
333
333
  self._final: GenericWorkflowJob | GenericWorkflow | None = None
334
334
 
335
+ # Starting from ver. 3.6 of NetworkX, the DiGraph class defines its custom
336
+ # __new__ method that explicitly defines arguments it accepts. As a result,
337
+ # we need to override it to let our subclass use different ones.
338
+ #
339
+ # Notes
340
+ # -----
341
+ # Most likely overriding __new__ in this manner will prevent us from using
342
+ # different graph backends with our subclass. However, since we are not
343
+ # using any backends, this should not be a problem at the moment.
344
+ def __new__(cls, *args, **kwargs) -> "GenericWorkflow":
345
+ return object.__new__(cls)
346
+
335
347
  @property
336
348
  def name(self) -> str:
337
349
  """Retrieve name of generic workflow.
lsst/ctrl/bps/report.py CHANGED
@@ -31,7 +31,7 @@ Note: Expectations are that future reporting effort will revolve around LSST
31
31
  oriented database tables.
32
32
  """
33
33
 
34
- __all__ = ["BPS_POSTPROCESSORS", "display_report", "retrieve_report"]
34
+ __all__ = ["display_report", "retrieve_report"]
35
35
 
36
36
  import logging
37
37
  import sys
@@ -40,20 +40,9 @@ from typing import TextIO
40
40
 
41
41
  from lsst.utils import doImportType
42
42
 
43
- from .bps_reports import (
44
- DetailedRunReport,
45
- ExitCodesReport,
46
- SummaryRunReport,
47
- compile_code_summary,
48
- compile_job_summary,
49
- )
43
+ from .bps_reports import DetailedRunReport, ExitCodesReport, SummaryRunReport
50
44
  from .wms_service import BaseWmsService, WmsRunReport, WmsStates
51
45
 
52
- BPS_POSTPROCESSORS = (compile_job_summary, compile_code_summary)
53
- """Postprocessors for massaging run reports
54
- (`tuple` [`Callable` [[`WmsRunReport`], None]).
55
- """
56
-
57
46
  _LOG = logging.getLogger(__name__)
58
47
 
59
48
 
@@ -167,7 +156,7 @@ def retrieve_report(
167
156
  pass_thru: str | None = None,
168
157
  is_global: bool = False,
169
158
  return_exit_codes: bool = False,
170
- postprocessors: Sequence[Callable[[WmsRunReport], None]] | None = None,
159
+ postprocessors: Sequence[Callable[[WmsRunReport], list[str]]] | None = None,
171
160
  ) -> tuple[list[WmsRunReport], list[str]]:
172
161
  """Retrieve summary of jobs submitted for execution.
173
162
 
lsst/ctrl/bps/version.py CHANGED
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "29.2025.4700"
2
+ __version__ = "30.0.0"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps
3
- Version: 29.2025.4700
3
+ Version: 30.0.0
4
4
  Summary: Pluggable execution of workflow graphs from Rubin pipelines.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
6
  License-Expression: BSD-3-Clause OR GPL-3.0-or-later
@@ -10,19 +10,19 @@ lsst/ctrl/bps/cancel.py,sha256=mAdBi-oUpepyo-1MCqx_I34dbm6cqT0VJu3d2-y9T2Y,3317
10
10
  lsst/ctrl/bps/clustered_quantum_graph.py,sha256=vpsjyzIr6e5as6rkRphrleY8q2I_8xXE3BawLGCtTlo,18167
11
11
  lsst/ctrl/bps/constants.py,sha256=dsnsNMqwU6Xl_ln6nQ0PmxsghlbBY9mLJWf2rlzYayQ,1733
12
12
  lsst/ctrl/bps/construct.py,sha256=o-JhTF_eehRiIxy3xe2UgBISyKNBg-kduthGiqfa50g,8100
13
- lsst/ctrl/bps/drivers.py,sha256=sgBIWw76WkErmtseveNzo19lHn6zJ0TcY-M9abpJ1Oo,22606
14
- lsst/ctrl/bps/generic_workflow.py,sha256=BwEFBudncziHTZaTTknOQroY_a-33mGf-mq9PzxH8G0,53720
13
+ lsst/ctrl/bps/drivers.py,sha256=TKFEzg00ju7E_XeaXKtQWLVyZWzfwr-g5qu5twix5fI,23212
14
+ lsst/ctrl/bps/generic_workflow.py,sha256=wqLzvFlYccXMb7HQ12dryCKCnPaswwmBmFEh6T0alzk,54299
15
15
  lsst/ctrl/bps/initialize.py,sha256=DCQwB9ZSo_36Ncs8jMJwxKZcYCu46jjww6rzyiuMFKY,7554
16
16
  lsst/ctrl/bps/ping.py,sha256=orwTZUNFtlexMYFcNWW_48jaa7Jo1oK4_eb_HuC-p5E,2235
17
17
  lsst/ctrl/bps/pre_transform.py,sha256=uxhSiG-_NyX175nL7d1dvOmLprdbN_gxaWr7X7nzhXE,10931
18
18
  lsst/ctrl/bps/prepare.py,sha256=Fa2OEQIo4Pa8R5WmRo0PvJgXWNjynRijATvu1x80qlw,3129
19
19
  lsst/ctrl/bps/quantum_clustering_funcs.py,sha256=UuVHtwsoSIUJnAPyoIGX46TzoZRD6gIzgNrPFPaq3G8,32143
20
- lsst/ctrl/bps/report.py,sha256=x31EMNr8w968_1XGkLfpqDsQLRDdXHUw31ZqYBdp6WY,9010
20
+ lsst/ctrl/bps/report.py,sha256=h6LuOUdsqGiKRzge-oPX3RUD32Pen2IpmQRU9EsXuYY,8763
21
21
  lsst/ctrl/bps/restart.py,sha256=yVwxeviLiehyIfPmwU-H3tJ9ou7OWZZcrNf8PMxjr8o,2298
22
22
  lsst/ctrl/bps/status.py,sha256=Lrt0cAqROv77B8UvYXGimCa4cDHBD1N0K2Xx7oS6fXk,3362
23
23
  lsst/ctrl/bps/submit.py,sha256=Ev-yhcoZwtBPIo5bRt_4XFJRtgQBd8JHUurEfn01HpU,2880
24
24
  lsst/ctrl/bps/transform.py,sha256=y_78yBO17T4oBJ-3tCKtMwcgaT45XrLxwtEEr1vUIMQ,34687
25
- lsst/ctrl/bps/version.py,sha256=xCUcvtDm7ffryaF3_oc2AhBXCqIFOubJb8jOIg_6D6E,55
25
+ lsst/ctrl/bps/version.py,sha256=--s7nTlXrHcUGZfOJGTF8_DCdIUv7QPWWD7as9kq0iY,49
26
26
  lsst/ctrl/bps/wms_service.py,sha256=l3T6i1MG72dhHY0KXMUlBjWUpCLOfaySs7o2W8oCwhs,18891
27
27
  lsst/ctrl/bps/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  lsst/ctrl/bps/cli/bps.py,sha256=CHfAL-U4mSi-FqeGKtmkX5nI5H9gkRre4XEWNVdeMRk,2559
@@ -35,13 +35,13 @@ lsst/ctrl/bps/cli/opt/options.py,sha256=pZQpjJ2Vrx6kYJGs5vVERBMFstPocwBXHffxkWkm
35
35
  lsst/ctrl/bps/etc/bps_defaults.yaml,sha256=6NNym1z1lF3FhVE2y6e0bixHPA6OISuPpaBVd83Va1A,4932
36
36
  lsst/ctrl/bps/tests/config_test_utils.py,sha256=WM8Vrigk4OO0TBoL1A73a6hLhf2a6-ACD20fROJ0U7A,3537
37
37
  lsst/ctrl/bps/tests/gw_test_utils.py,sha256=zVVQqzwSiQgPgk9TnqDzgR7uDnaTMeuBLYKA8vOp5RI,22452
38
- lsst_ctrl_bps-29.2025.4700.dist-info/licenses/COPYRIGHT,sha256=Lc6NoAEFQ65v_SmtS9NwfHTOuSUtC2Umbjv5zyowiQM,61
39
- lsst_ctrl_bps-29.2025.4700.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
40
- lsst_ctrl_bps-29.2025.4700.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
41
- lsst_ctrl_bps-29.2025.4700.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
42
- lsst_ctrl_bps-29.2025.4700.dist-info/METADATA,sha256=FlQjxLXMvGC_TgWuQI6JKRJgDk_4sbgkfdappaeYL4E,2213
43
- lsst_ctrl_bps-29.2025.4700.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
44
- lsst_ctrl_bps-29.2025.4700.dist-info/entry_points.txt,sha256=d6FhN79h7s9frdBI7YkScsGEInwpGGub49pAjXWbIbI,51
45
- lsst_ctrl_bps-29.2025.4700.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
46
- lsst_ctrl_bps-29.2025.4700.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
47
- lsst_ctrl_bps-29.2025.4700.dist-info/RECORD,,
38
+ lsst_ctrl_bps-30.0.0.dist-info/licenses/COPYRIGHT,sha256=Lc6NoAEFQ65v_SmtS9NwfHTOuSUtC2Umbjv5zyowiQM,61
39
+ lsst_ctrl_bps-30.0.0.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
40
+ lsst_ctrl_bps-30.0.0.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
41
+ lsst_ctrl_bps-30.0.0.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
42
+ lsst_ctrl_bps-30.0.0.dist-info/METADATA,sha256=CCUdXWdBFqij8nrtHRt4e04DTjUvxtmLXWDTqB_c5go,2207
43
+ lsst_ctrl_bps-30.0.0.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
44
+ lsst_ctrl_bps-30.0.0.dist-info/entry_points.txt,sha256=d6FhN79h7s9frdBI7YkScsGEInwpGGub49pAjXWbIbI,51
45
+ lsst_ctrl_bps-30.0.0.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
46
+ lsst_ctrl_bps-30.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
47
+ lsst_ctrl_bps-30.0.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5