lsst-ctrl-bps 30.0.1rc1__tar.gz → 30.2026.300__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 (73) hide show
  1. {lsst_ctrl_bps-30.0.1rc1/python/lsst_ctrl_bps.egg-info → lsst_ctrl_bps-30.2026.300}/PKG-INFO +3 -3
  2. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/doc/lsst.ctrl.bps/CHANGES.rst +0 -44
  3. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/doc/lsst.ctrl.bps/quickstart.rst +0 -3
  4. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/pyproject.toml +13 -5
  5. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/bps_config.py +4 -4
  6. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/clustered_quantum_graph.py +6 -7
  7. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/construct.py +1 -2
  8. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/generic_workflow.py +4 -4
  9. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/initialize.py +1 -2
  10. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/quantum_clustering_funcs.py +1 -1
  11. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/transform.py +10 -10
  12. lsst_ctrl_bps-30.2026.300/python/lsst/ctrl/bps/version.py +2 -0
  13. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/wms_service.py +5 -5
  14. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300/python/lsst_ctrl_bps.egg-info}/PKG-INFO +3 -3
  15. lsst_ctrl_bps-30.0.1rc1/python/lsst/ctrl/bps/version.py +0 -2
  16. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/COPYRIGHT +0 -0
  17. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/LICENSE +0 -0
  18. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/MANIFEST.in +0 -0
  19. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/README.md +0 -0
  20. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/bsd_license.txt +0 -0
  21. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/doc/lsst.ctrl.bps/index.rst +0 -0
  22. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/gpl-v3.0.txt +0 -0
  23. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/__init__.py +0 -0
  24. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/__init__.py +0 -0
  25. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/__init__.py +0 -0
  26. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/_exceptions.py +0 -0
  27. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/bps_draw.py +0 -0
  28. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/bps_reports.py +0 -0
  29. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/bps_utils.py +0 -0
  30. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cancel.py +0 -0
  31. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/__init__.py +0 -0
  32. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/bps.py +0 -0
  33. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/cmd/__init__.py +0 -0
  34. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/cmd/commands.py +0 -0
  35. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/opt/__init__.py +0 -0
  36. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/opt/arguments.py +0 -0
  37. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/opt/option_groups.py +0 -0
  38. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/cli/opt/options.py +0 -0
  39. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/constants.py +0 -0
  40. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/drivers.py +0 -0
  41. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/etc/bps_defaults.yaml +0 -0
  42. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/ping.py +0 -0
  43. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/pre_transform.py +0 -0
  44. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/prepare.py +0 -0
  45. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/report.py +0 -0
  46. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/restart.py +0 -0
  47. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/status.py +0 -0
  48. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/submit.py +0 -0
  49. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/tests/config_test_utils.py +0 -0
  50. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst/ctrl/bps/tests/gw_test_utils.py +0 -0
  51. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/SOURCES.txt +0 -0
  52. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/dependency_links.txt +0 -0
  53. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/entry_points.txt +0 -0
  54. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/requires.txt +0 -0
  55. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/top_level.txt +0 -0
  56. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/python/lsst_ctrl_bps.egg-info/zip-safe +0 -0
  57. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/setup.cfg +0 -0
  58. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_bps_reports.py +0 -0
  59. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_bps_utils.py +0 -0
  60. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_bpsconfig.py +0 -0
  61. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_cli_commands.py +0 -0
  62. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_clustered_quantum_graph.py +0 -0
  63. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_construct.py +0 -0
  64. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_drivers.py +0 -0
  65. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_generic_workflow.py +0 -0
  66. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_initialize.py +0 -0
  67. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_ping.py +0 -0
  68. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_pre_transform.py +0 -0
  69. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_quantum_clustering_funcs.py +0 -0
  70. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_report.py +0 -0
  71. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_status.py +0 -0
  72. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_transform.py +0 -0
  73. {lsst_ctrl_bps-30.0.1rc1 → lsst_ctrl_bps-30.2026.300}/tests/test_wms_service.py +0 -0
@@ -1,20 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps
3
- Version: 30.0.1rc1
3
+ Version: 30.2026.300
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
7
7
  Project-URL: Homepage, https://github.com/lsst/ctrl_bps
8
- Project-URL: Source, https://github.com/lsst/ctrl_bps
9
8
  Keywords: lsst
10
9
  Classifier: Intended Audience :: Science/Research
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Topic :: Scientific/Engineering :: Astronomy
17
- Requires-Python: >=3.12.0
17
+ Requires-Python: >=3.11.0
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: COPYRIGHT
20
20
  License-File: LICENSE
@@ -1,47 +1,3 @@
1
- lsst-ctrl-bps v30.0.1 (2026-02-03)
2
- ==================================
3
-
4
- Dropped Python 3.11.
5
- Tested with Python 3.14.
6
-
7
- Other Changes and Additions
8
- ---------------------------
9
-
10
- - - Bumped minimum Python version to 3.12.
11
- - Dropped ``black`` and ``isort`` sections from ``pyproject.toml``.
12
- - Switched documentation build to use ``sphinxutils``. (`DM-54006 <https://rubinobs.atlassian.net/browse/DM-54006>`_)
13
-
14
-
15
- lsst-ctrl-bps v30.0.0 (2026-01-16)
16
- ==================================
17
-
18
- New Features
19
- ------------
20
-
21
- - Added support for transferring input files to the execution site and bringing the produced output files back to the submit site when using ``bps submitcmd``. (`DM-48479 <https://rubinobs.atlassian.net/browse/DM-48479>`_)
22
- - Added ``bpsGenerateConfig`` and ``bpsEval`` to run functions to produce config values. ``bpsGenerateConfig`` is used when inserting or updating one or more key/value pairs. ``bpsEval`` is for replacing part of a string value. (`DM-50616 <https://rubinobs.atlassian.net/browse/DM-50616>`_)
23
-
24
- Bug Fixes
25
- ---------
26
-
27
- - Fixed bug where the ``return_exit_codes`` command line value was not passed to the plugin's report function. While it was correctly used when displaying the report, not having the value didn't allow the plugin to optimize its report function. (`DM-52791 <https://rubinobs.atlassian.net/browse/DM-52791>`_)
28
-
29
- Performance Enhancement
30
- -----------------------
31
-
32
- - Switched the default ``finalJob`` implementation to the new ``aggregate-graph`` command, which makes use of multiple cores much more effectively than ``transfer-from-graph``. (`DM-52360 <https://rubinobs.atlassian.net/browse/DM-52360>`_)
33
-
34
-
35
- Other Changes and Additions
36
- ---------------------------
37
-
38
- - Removed exit code 1 from the default for ``finalJob``\ 's ``retryUnlessExit`` as the majority of these are related to system issues which could be transient. (`DM-51313 <https://rubinobs.atlassian.net/browse/DM-51313>`_)
39
- - Modified the BPS report driver so it compiles exit code summary only when necessary, i.e., when ``--return-exit-codes`` option was used with ``bps report``. (`DM-52898 <https://rubinobs.atlassian.net/browse/DM-52898>`_)
40
- - Added a custom __new__ method to the GenericWorkflow class so **ctrl_bps** can work when using NetworkX 3.6. (`DM-53492 <https://rubinobs.atlassian.net/browse/DM-53492>`_)
41
- - Made the BPS reporting mechanism a bit more robust. If the BPS plugin does not explicitly includes jobs labels for which there are no failures in the run's exit code summary, it will try to use the run's job summary to do that. (`DM-51261 <https://rubinobs.atlassian.net/browse/DM-51261>`_)
42
- - Used the new ``PredictedQuantumGraph`` class internally and default to the new QG file format via the "``.qg``" extension. (`DM-52339 <https://rubinobs.atlassian.net/browse/DM-52339>`_)
43
-
44
-
45
1
  lsst-ctrl-bps v29.1.0 (2025-06-13)
46
2
  ==================================
47
3
 
@@ -1,6 +1,3 @@
1
- User Guide
2
- ==========
3
-
4
1
  Overview
5
2
  --------
6
3
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "lsst-ctrl-bps"
7
- requires-python = ">=3.12.0"
7
+ requires-python = ">=3.11.0"
8
8
  description = "Pluggable execution of workflow graphs from Rubin pipelines."
9
9
  license = "BSD-3-Clause OR GPL-3.0-or-later"
10
10
  license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
@@ -16,6 +16,7 @@ classifiers = [
16
16
  "Intended Audience :: Science/Research",
17
17
  "Operating System :: OS Independent",
18
18
  "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3.11",
19
20
  "Programming Language :: Python :: 3.12",
20
21
  "Programming Language :: Python :: 3.13",
21
22
  "Programming Language :: Python :: 3.14",
@@ -37,9 +38,8 @@ dynamic = ["version"]
37
38
 
38
39
  [project.urls]
39
40
  "Homepage" = "https://github.com/lsst/ctrl_bps"
40
- "Source" = "https://github.com/lsst/ctrl_bps"
41
-
42
41
  [project.optional-dependencies]
42
+
43
43
  test = [
44
44
  "pytest >= 3.2",
45
45
  "pytest-openfiles >= 0.5.0"
@@ -98,6 +98,15 @@ bps = "lsst.ctrl.bps.cli.bps:main"
98
98
  name = "An API Removal or Deprecation"
99
99
  showcontent = true
100
100
 
101
+ [tool.black]
102
+ line-length = 110
103
+ target-version = ["py311"]
104
+
105
+ [tool.isort]
106
+ profile = "black"
107
+ line_length = 110
108
+ known_first_party = ["lsst"]
109
+
101
110
  [tool.lsst_versions]
102
111
  write_to = "python/lsst/ctrl/bps/version.py"
103
112
 
@@ -125,7 +134,7 @@ exclude_lines = [
125
134
 
126
135
  [tool.ruff]
127
136
  line-length = 110
128
- target-version = "py312"
137
+ target-version = "py311"
129
138
  exclude = [
130
139
  "__init__.py",
131
140
  ]
@@ -191,7 +200,6 @@ checks = [
191
200
  "RT01", # Unfortunately our @property trigger this.
192
201
  "RT02", # Does not want named return value. DM style says we do.
193
202
  "SS05", # pydocstyle is better at finding infinitive verb.
194
- "RT03", # Temporarily disable for sphinx empty returns.
195
203
  ]
196
204
  exclude = [
197
205
  '^test_.*', # Do not test docstrings in test code.
@@ -87,7 +87,7 @@ class BpsConfig(Config):
87
87
  afterwards. WMS settings takes precedence over provided defaults.
88
88
  wms_service_class_fqn : `str`, optional
89
89
  Fully qualified name of the WMS service class to use to get plugin's
90
- specific default settings. If `None` (default), the WMS service
90
+ specific default settings. If ``None`` (default), the WMS service
91
91
  class provided by
92
92
 
93
93
  1. ``other`` config,
@@ -197,7 +197,7 @@ class BpsConfig(Config):
197
197
  ----------
198
198
  key : `str`
199
199
  Key to look for in config.
200
- default : `~typing.Any`, optional
200
+ default : Any, optional
201
201
  Default value to return if the key is not in the config.
202
202
 
203
203
  Returns
@@ -256,7 +256,7 @@ class BpsConfig(Config):
256
256
  ----------
257
257
  key : `str`
258
258
  Key to look for in config.
259
- opt : `dict` [`str`, `~typing.Any`], optional
259
+ opt : `dict` [`str`, `Any`], optional
260
260
  Options dictionary to use while searching. All are optional.
261
261
 
262
262
  ``"curvals"``
@@ -264,7 +264,7 @@ class BpsConfig(Config):
264
264
  (curr_<sectname>) or variable replacements.
265
265
  (`dict`, optional)
266
266
  ``"default"``
267
- Value to return if not found. (`~typing.Any`, optional)
267
+ Value to return if not found. (`Any`, optional)
268
268
  ``"replaceEnvVars"``
269
269
  If search result is string, whether to replace environment
270
270
  variables inside it with special placeholder (<ENV:name>).
@@ -61,7 +61,7 @@ class QuantaCluster:
61
61
  be unique within ClusteredQuantumGraph.
62
62
  label : `str`
63
63
  Value used to group clusters.
64
- tags : `dict` [`str`, `~typing.Any`], optional
64
+ tags : `dict` [`str`, `Any`], optional
65
65
  Arbitrary key/value pairs for the cluster.
66
66
 
67
67
  Raises
@@ -248,8 +248,7 @@ class ClusteredQuantumGraph:
248
248
 
249
249
  Parameters
250
250
  ----------
251
- clusters_for_adding : `QuantaCluster` or \
252
- `~collections.abc.Iterable` [`QuantaCluster`]
251
+ clusters_for_adding : `QuantaCluster` or `Iterable` [`QuantaCluster`]
253
252
  The cluster to be added to the ClusteredQuantumGraph.
254
253
  """
255
254
  for cluster in ensure_iterable(clusters_for_adding):
@@ -312,7 +311,7 @@ class ClusteredQuantumGraph:
312
311
 
313
312
  Returns
314
313
  -------
315
- names : `~collections.abc.Iterator` [`str`]
314
+ names : `Iterator` [`str`]
316
315
  Iterator over names of clusters.
317
316
  """
318
317
  return self._cluster_graph.nodes()
@@ -322,7 +321,7 @@ class ClusteredQuantumGraph:
322
321
 
323
322
  Returns
324
323
  -------
325
- clusters : `~collections.abc.Iterator` [`lsst.ctrl.bps.QuantaCluster`]
324
+ clusters : `Iterator` [`lsst.ctrl.bps.QuantaCluster`]
326
325
  Iterator over clusters in topological order.
327
326
  """
328
327
  return map(self.get_cluster, topological_sort(self._cluster_graph))
@@ -338,7 +337,7 @@ class ClusteredQuantumGraph:
338
337
 
339
338
  Returns
340
339
  -------
341
- clusters : `~collections.abc.Iterator` [`lsst.ctrl.bps.QuantaCluster`]
340
+ clusters : `Iterator` [`lsst.ctrl.bps.QuantaCluster`]
342
341
  Iterator over successors of given cluster.
343
342
  """
344
343
  return map(self.get_cluster, self._cluster_graph.successors(name))
@@ -354,7 +353,7 @@ class ClusteredQuantumGraph:
354
353
 
355
354
  Returns
356
355
  -------
357
- clusters : `~collections.abc.Iterator` [`lsst.ctrl.bps.QuantaCluster`]
356
+ clusters : `Iterator` [`lsst.ctrl.bps.QuantaCluster`]
358
357
  Iterator over predecessors of given cluster.
359
358
  """
360
359
  return map(self.get_cluster, self._cluster_graph.predecessors(name))
@@ -181,8 +181,7 @@ def create_job_files(
181
181
  The mapping between file keys and file paths.
182
182
  prefix : `str` | `pathlib.Path`
183
183
  The root directory to which the files will be written.
184
- path_creator : `~collections.abc.Callable` \
185
- [[`pathlib.Path`, `pathlib.Path`], `pathlib.Path`]
184
+ path_creator : `Callable` [[`Path`, `Path`], `Path`]
186
185
  File category that determines actions that need to be taken during
187
186
  file creation.
188
187
 
@@ -428,7 +428,7 @@ class GenericWorkflow(DiGraph):
428
428
  ----------
429
429
  data : `bool`, optional
430
430
  Whether to return the file data as well as the file object name
431
- (The default is `False`).
431
+ (The default is False).
432
432
  transfer_only : `bool`, optional
433
433
  Whether to only return files for which a workflow management system
434
434
  would be responsible for transferring.
@@ -490,7 +490,7 @@ class GenericWorkflow(DiGraph):
490
490
  ----------
491
491
  node_for_adding : `lsst.ctrl.bps.GenericWorkflowJob`
492
492
  Job to be added to generic workflow.
493
- **attr : `~typing.Any`
493
+ **attr
494
494
  Needed to match original networkx function, but not used.
495
495
  """
496
496
  self.add_job(node_for_adding)
@@ -524,7 +524,7 @@ class GenericWorkflow(DiGraph):
524
524
  ebunch_to_add : Iterable [`tuple` [`str`, `str`]]
525
525
  Iterable of job name pairs between which a dependency should be
526
526
  saved.
527
- **attr : `~typing.Any`
527
+ **attr : keyword arguments, optional
528
528
  Data can be assigned using keyword arguments (not currently used).
529
529
  """
530
530
  for edge_to_add in ebunch_to_add:
@@ -539,7 +539,7 @@ class GenericWorkflow(DiGraph):
539
539
  Name of parent job.
540
540
  v_of_edge : `str`
541
541
  Name of child job.
542
- **attr
542
+ **attr : keyword arguments, optional
543
543
  Attributes to save with edge.
544
544
  """
545
545
  if u_of_edge not in self:
@@ -58,8 +58,7 @@ def init_submission(
58
58
  ----------
59
59
  config_file : `str`
60
60
  Name of the configuration file.
61
- validators : `~collections.abc.Iterable` \
62
- [`~collections.abc.Callable` [[`BpsConfig`], `None`]], optional
61
+ validators : `Iterable[Callable[[BpsConfig], None]]`, optional
63
62
  A list of functions performing checks on the given configuration.
64
63
  Each function should take a single argument, a BpsConfig object, and
65
64
  raise if the check fails. By default, no checks are performed.
@@ -789,7 +789,7 @@ def get_cluster_name_from_info(
789
789
  -------
790
790
  cluster_name : `str`
791
791
  Name of the cluster in which to add the given node.
792
- info : dict [`str`, `~typing.Any`]
792
+ info : dict [`str`, `Any`]
793
793
  Information needed if creating a new node.
794
794
  """
795
795
  # Gather info for cluster name template into a dictionary.
@@ -210,7 +210,7 @@ def _enhance_command(config, generic_workflow, gwjob, cached_job_values):
210
210
  gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
211
211
  Generic workflow job to which the updated executable, arguments,
212
212
  and values should be saved.
213
- cached_job_values : `dict` [`str`, dict[`str`, `~typing.Any`]]
213
+ cached_job_values : `dict` [`str`, dict[`str`, `Any`]]
214
214
  Cached values common across jobs with same label. Updated if values
215
215
  aren't already saved for given gwjob's label.
216
216
  """
@@ -286,7 +286,7 @@ def _fill_arguments(use_shared, generic_workflow, arguments, cmdvals):
286
286
  Generic workflow containing the job.
287
287
  arguments : `str`
288
288
  String containing placeholders.
289
- cmdvals : `dict` [`str`, `~typing.Any`]
289
+ cmdvals : `dict` [`str`, `Any`]
290
290
  Any command line values that can be used to replace placeholders.
291
291
 
292
292
  Returns
@@ -365,14 +365,14 @@ def _get_job_values(config, search_opt, cmd_line_key):
365
365
  ----------
366
366
  config : `lsst.ctrl.bps.BpsConfig`
367
367
  Bps configuration.
368
- search_opt : `dict` [`str`, `~typing.Any`]
368
+ search_opt : `dict` [`str`, `Any`]
369
369
  Search options to be used when searching config.
370
370
  cmd_line_key : `str` or None
371
371
  Which command line key to search for (e.g., "runQuantumCommand").
372
372
 
373
373
  Returns
374
374
  -------
375
- job_values : `dict` [ `str`, `~typing.Any` ]`
375
+ job_values : `dict` [ `str`, `Any` ]`
376
376
  A mapping between job attributes and their values.
377
377
  """
378
378
  _LOG.debug("cmd_line_key=%s, search_opt=%s", cmd_line_key, search_opt)
@@ -443,7 +443,7 @@ def _handle_job_values(quantum_job_values, gwjob, attributes=_ATTRS_ALL):
443
443
  Job values for running single Quantum.
444
444
  gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
445
445
  Generic workflow job in which to store the universal values.
446
- attributes : `~collections.abc.Iterable` [`str`], optional
446
+ attributes : `Iterable` [`str`], optional
447
447
  Job attributes to be set in the job following different rules.
448
448
  The default value is _ATTRS_ALL.
449
449
  """
@@ -463,7 +463,7 @@ def _handle_job_values_universal(quantum_job_values, gwjob, attributes=_ATTRS_UN
463
463
  Job values for running single Quantum.
464
464
  gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
465
465
  Generic workflow job in which to store the universal values.
466
- attributes : `~collections.abc.Iterable` [`str`], optional
466
+ attributes : `Iterable` [`str`], optional
467
467
  Job attributes to be set in the job following different rules.
468
468
  The default value is _ATTRS_UNIVERSAL.
469
469
  """
@@ -502,11 +502,11 @@ def _handle_job_values_max(quantum_job_values, gwjob, attributes=_ATTRS_MAX):
502
502
 
503
503
  Parameters
504
504
  ----------
505
- quantum_job_values : `dict` [`str`, `~typing.Any`]
505
+ quantum_job_values : `dict` [`str`, `Any`]
506
506
  Job values for running single Quantum.
507
507
  gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
508
508
  Generic workflow job in which to store the aggregate values.
509
- attributes : `~collections.abc.Iterable` [`str`], optional
509
+ attributes : `Iterable` [`str`], optional
510
510
  Job attributes to be set in the job following different rules.
511
511
  The default value is _ATTR_MAX.
512
512
  """
@@ -547,11 +547,11 @@ def _handle_job_values_sum(quantum_job_values, gwjob, attributes=_ATTRS_SUM):
547
547
 
548
548
  Parameters
549
549
  ----------
550
- quantum_job_values : `dict` [`str`, `~typing.Any`]
550
+ quantum_job_values : `dict` [`str`, `Any`]
551
551
  Job values for running single Quantum.
552
552
  gwjob : `lsst.ctrl.bps.GenericWorkflowJob`
553
553
  Generic workflow job in which to store the aggregate values.
554
- attributes : `~collections.abc.Iterable` [`str`], optional
554
+ attributes : `Iterable` [`str`], optional
555
555
  Job attributes to be set in the job following different rules.
556
556
  The default value is _ATTRS_SUM.
557
557
  """
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "30.2026.300"
@@ -121,14 +121,14 @@ class WmsSpecificInfo:
121
121
 
122
122
  Returns
123
123
  -------
124
- context : `dict` [`str`, `~typing.Any`]
124
+ context : `dict` [`str`, `Any`]
125
125
  A copy of the dictionary representing the mapping between
126
126
  *every* template variable and its value.
127
127
 
128
128
  Notes
129
129
  -----
130
130
  The property returns a *shallow* copy of the dictionary representing
131
- the context as the intended purpose of the `WmsSpecificInfo` is to
131
+ the context as the intended purpose of the ``WmsSpecificInfo`` is to
132
132
  pass a small number of brief messages from WMS to BPS reporting
133
133
  subsystem. Hence, it is assumed that the dictionary will only contain
134
134
  immutable objects (e.g. strings, numbers).
@@ -157,7 +157,7 @@ class WmsSpecificInfo:
157
157
  ----------
158
158
  template : `str`
159
159
  A message template.
160
- context : `dict` [`str`, `~typing.Any`], optional
160
+ context : `dict` [`str`, `Any`], optional
161
161
  A mapping between template variables and their values.
162
162
  **kwargs
163
163
  Additional keyword arguments.
@@ -296,7 +296,7 @@ class BaseWmsService:
296
296
  -----
297
297
  This property is currently being used in ``BpsConfig.__init__()``.
298
298
  As long as that's the case it cannot be changed to return
299
- a `BpsConfig` instance.
299
+ a ``BpsConfig`` instance.
300
300
  """
301
301
  return None
302
302
 
@@ -386,7 +386,7 @@ class BaseWmsService:
386
386
 
387
387
  Returns
388
388
  -------
389
- job_ids : `list` [`~typing.Any`]
389
+ job_ids : `list` [`Any`]
390
390
  Only job ids to be used by cancel and other functions. Typically
391
391
  this means top-level jobs (i.e., not children jobs).
392
392
  """
@@ -1,20 +1,20 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-bps
3
- Version: 30.0.1rc1
3
+ Version: 30.2026.300
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
7
7
  Project-URL: Homepage, https://github.com/lsst/ctrl_bps
8
- Project-URL: Source, https://github.com/lsst/ctrl_bps
9
8
  Keywords: lsst
10
9
  Classifier: Intended Audience :: Science/Research
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3.11
13
13
  Classifier: Programming Language :: Python :: 3.12
14
14
  Classifier: Programming Language :: Python :: 3.13
15
15
  Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Topic :: Scientific/Engineering :: Astronomy
17
- Requires-Python: >=3.12.0
17
+ Requires-Python: >=3.11.0
18
18
  Description-Content-Type: text/markdown
19
19
  License-File: COPYRIGHT
20
20
  License-File: LICENSE
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "30.0.1rc1"