lsst-ctrl-mpexec 29.2025.4300__tar.gz → 29.2025.4500__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 (70) hide show
  1. {lsst_ctrl_mpexec-29.2025.4300/python/lsst_ctrl_mpexec.egg-info → lsst_ctrl_mpexec-29.2025.4500}/PKG-INFO +3 -3
  2. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/pyproject.toml +3 -4
  3. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/butler_factory.py +1 -1
  4. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/cmd/commands.py +1 -1
  5. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/opt/optionGroups.py +32 -8
  6. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/utils.py +1 -1
  7. lsst_ctrl_mpexec-29.2025.4500/python/lsst/ctrl/mpexec/version.py +2 -0
  8. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500/python/lsst_ctrl_mpexec.egg-info}/PKG-INFO +3 -3
  9. lsst_ctrl_mpexec-29.2025.4300/python/lsst/ctrl/mpexec/version.py +0 -2
  10. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/COPYRIGHT +0 -0
  11. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/LICENSE +0 -0
  12. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/MANIFEST.in +0 -0
  13. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/README.rst +0 -0
  14. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/bsd_license.txt +0 -0
  15. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/doc/lsst.ctrl.mpexec/CHANGES.rst +0 -0
  16. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/doc/lsst.ctrl.mpexec/configuring-pipetask-tasks.rst +0 -0
  17. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/doc/lsst.ctrl.mpexec/index.rst +0 -0
  18. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/doc/lsst.ctrl.mpexec/pipetask.rst +0 -0
  19. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/gpl-v3.0.txt +0 -0
  20. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/__init__.py +0 -0
  21. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/__init__.py +0 -0
  22. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/__init__.py +0 -0
  23. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/_pipeline_graph_factory.py +0 -0
  24. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/__init__.py +0 -0
  25. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/cmd/__init__.py +0 -0
  26. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/opt/__init__.py +0 -0
  27. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/opt/arguments.py +0 -0
  28. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/opt/options.py +0 -0
  29. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/pipetask.py +0 -0
  30. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/__init__.py +0 -0
  31. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/build.py +0 -0
  32. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/cleanup.py +0 -0
  33. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/confirmable.py +0 -0
  34. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/pre_exec_init_qbb.py +0 -0
  35. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/purge.py +0 -0
  36. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/qgraph.py +0 -0
  37. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/report.py +0 -0
  38. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/run.py +0 -0
  39. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/run_qbb.py +0 -0
  40. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/cli/script/update_graph_run.py +0 -0
  41. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/execFixupDataId.py +0 -0
  42. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/executionGraphFixup.py +0 -0
  43. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/log_capture.py +0 -0
  44. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/mpGraphExecutor.py +0 -0
  45. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/preExecInit.py +0 -0
  46. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/py.typed +0 -0
  47. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/quantumGraphExecutor.py +0 -0
  48. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/reports.py +0 -0
  49. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/separablePipelineExecutor.py +0 -0
  50. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/showInfo.py +0 -0
  51. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/simple_pipeline_executor.py +0 -0
  52. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/singleQuantumExecutor.py +0 -0
  53. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/taskFactory.py +0 -0
  54. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst/ctrl/mpexec/util.py +0 -0
  55. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/SOURCES.txt +0 -0
  56. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/dependency_links.txt +0 -0
  57. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/entry_points.txt +0 -0
  58. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/requires.txt +0 -0
  59. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/top_level.txt +0 -0
  60. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/python/lsst_ctrl_mpexec.egg-info/zip-safe +0 -0
  61. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/setup.cfg +0 -0
  62. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_build.py +0 -0
  63. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_cliCmdCleanup.py +0 -0
  64. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_cliCmdPurge.py +0 -0
  65. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_cliCmdReport.py +0 -0
  66. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_cliCmdUpdateGraphRun.py +0 -0
  67. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_cliUtils.py +0 -0
  68. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_preExecInit.py +0 -0
  69. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_qgraph.py +0 -0
  70. {lsst_ctrl_mpexec-29.2025.4300 → lsst_ctrl_mpexec-29.2025.4500}/tests/test_run.py +0 -0
@@ -1,18 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-mpexec
3
- Version: 29.2025.4300
3
+ Version: 29.2025.4500
4
4
  Summary: Pipeline execution infrastructure for the Rubin Observatory LSST Science Pipelines.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
- License: BSD 3-Clause License
6
+ License-Expression: BSD-3-Clause OR GPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/lsst/ctrl_mpexec
8
8
  Keywords: lsst
9
9
  Classifier: Intended Audience :: Science/Research
10
- Classifier: License :: OSI Approved :: BSD License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
13
12
  Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Topic :: Scientific/Engineering :: Astronomy
17
17
  Requires-Python: >=3.11.0
18
18
  Description-Content-Type: text/x-rst
@@ -6,19 +6,20 @@ build-backend = "setuptools.build_meta"
6
6
  name = "lsst-ctrl-mpexec"
7
7
  requires-python = ">=3.11.0"
8
8
  description = "Pipeline execution infrastructure for the Rubin Observatory LSST Science Pipelines."
9
- license = {text = "BSD 3-Clause License"}
9
+ license = "BSD-3-Clause OR GPL-3.0-or-later"
10
+ license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
10
11
  readme = "README.rst"
11
12
  authors = [
12
13
  {name="Rubin Observatory Data Management", email="dm-admin@lists.lsst.org"},
13
14
  ]
14
15
  classifiers = [
15
16
  "Intended Audience :: Science/Research",
16
- "License :: OSI Approved :: BSD License",
17
17
  "Operating System :: OS Independent",
18
18
  "Programming Language :: Python :: 3",
19
19
  "Programming Language :: Python :: 3.11",
20
20
  "Programming Language :: Python :: 3.12",
21
21
  "Programming Language :: Python :: 3.13",
22
+ "Programming Language :: Python :: 3.14",
22
23
  "Topic :: Scientific/Engineering :: Astronomy",
23
24
  ]
24
25
  keywords = ["lsst"]
@@ -47,7 +48,6 @@ where = ["python"]
47
48
 
48
49
  [tool.setuptools]
49
50
  zip-safe = true
50
- license-files = ["COPYRIGHT", "LICENSE", "bsd_license.txt", "gpl-v3.0.txt"]
51
51
 
52
52
  [tool.setuptools.package-data]
53
53
  "lsst.ctrl.mpexec" = ["py.typed"]
@@ -109,7 +109,6 @@ known_first_party = ["lsst"]
109
109
  write_to = "python/lsst/ctrl/mpexec/version.py"
110
110
 
111
111
  [tool.pytest.ini_options]
112
- open_files_ignore = ["*.ttf", "gen3.sqlite3"]
113
112
 
114
113
  [tool.pydocstyle]
115
114
  convention = "numpy"
@@ -583,7 +583,7 @@ class ButlerFactory:
583
583
  # collection from its chain collection first.
584
584
  with butler.transaction():
585
585
  butler.collections.redefine_chain(self.output.name, chain_definition)
586
- butler.removeRuns([replaced], unstore=True)
586
+ butler.removeRuns([replaced])
587
587
  elif prune_replaced is not None:
588
588
  raise NotImplementedError(f"Unsupported --prune-replaced option '{prune_replaced}'.")
589
589
  if not self.output.exists:
@@ -141,7 +141,7 @@ concurrency = multiprocessing
141
141
  @click.command(cls=PipetaskCommand, epilog=epilog)
142
142
  @click.pass_context
143
143
  @ctrlMpExecOpts.show_option()
144
- @ctrlMpExecOpts.pipeline_build_options()
144
+ @ctrlMpExecOpts.pipeline_build_options(skip_butler_config=True)
145
145
  @ctrlMpExecOpts.qgraph_options()
146
146
  @ctrlMpExecOpts.butler_options()
147
147
  @option_section(sectionText="")
@@ -54,9 +54,15 @@ instrumentOptionHelp = (
54
54
  class pipeline_build_options(OptionGroup): # noqa: N801
55
55
  """Decorator to add options to the command function for building a
56
56
  pipeline.
57
+
58
+ Parameters
59
+ ----------
60
+ skip_butler_config : `bool`, optional
61
+ If `True` the butler configuration option will not be included and will
62
+ be assumed to be added explicitly elsewhere.
57
63
  """
58
64
 
59
- def __init__(self) -> None:
65
+ def __init__(self, skip_butler_config: bool = False) -> None:
60
66
  self.decorators = [
61
67
  option_section(sectionText="Pipeline build options:"),
62
68
  ctrlMpExecOpts.pipeline_option(),
@@ -76,8 +82,9 @@ class pipeline_build_options(OptionGroup): # noqa: N801
76
82
  ctrlMpExecOpts.pipeline_dot_option(),
77
83
  ctrlMpExecOpts.pipeline_mermaid_option(),
78
84
  pipeBaseOpts.instrument_option(help=instrumentOptionHelp, metavar="instrument", multiple=True),
79
- ctrlMpExecOpts.butler_config_option(required=False),
80
85
  ]
86
+ if not skip_butler_config:
87
+ self.decorators.append(ctrlMpExecOpts.butler_config_option(required=False))
81
88
 
82
89
 
83
90
  class coverage_options(OptionGroup): # noqa: N801
@@ -95,9 +102,23 @@ class coverage_options(OptionGroup): # noqa: N801
95
102
  class qgraph_options(OptionGroup): # noqa: N801
96
103
  """Decorator to add options to a command function for creating a quantum
97
104
  graph.
105
+
106
+ Parameters
107
+ ----------
108
+ skip_coverage : `bool`, optional
109
+ If `True` the coverage configuration options will not be included and
110
+ will be assumed to be added explicitly elsewhere.
111
+ skip_clobber : `bool`, optional
112
+ If `True` the clobber configuration option will not be included and
113
+ will be assumed to be added explicitly elsewhere.
114
+ skip_summary : `bool`, optional
115
+ If `True` the summary configuration option will not be included and
116
+ will be assumed to be added explicitly elsewhere.
98
117
  """
99
118
 
100
- def __init__(self) -> None:
119
+ def __init__(
120
+ self, skip_coverage: bool = False, skip_clobber: bool = False, skip_summary: bool = False
121
+ ) -> None:
101
122
  self.decorators = [
102
123
  option_section(sectionText="Quantum graph building options:"),
103
124
  ctrlMpExecOpts.qgraph_option(),
@@ -106,18 +127,21 @@ class qgraph_options(OptionGroup): # noqa: N801
106
127
  ctrlMpExecOpts.qgraph_datastore_records_option(),
107
128
  ctrlMpExecOpts.skip_existing_in_option(),
108
129
  ctrlMpExecOpts.skip_existing_option(),
109
- ctrlMpExecOpts.clobber_outputs_option(),
110
130
  ctrlMpExecOpts.save_qgraph_option(),
111
131
  ctrlMpExecOpts.qgraph_dot_option(),
112
132
  ctrlMpExecOpts.qgraph_mermaid_option(),
113
- ctrlMpExecOpts.summary_option(),
114
133
  ctrlMpExecOpts.dataset_query_constraint(),
115
134
  ctrlMpExecOpts.data_id_table_option(),
116
135
  ctrlMpExecOpts.mock_option(),
117
136
  ctrlMpExecOpts.mock_failure_option(),
118
137
  ctrlMpExecOpts.unmocked_dataset_types_option(),
119
- coverage_options(),
120
138
  ]
139
+ if not skip_clobber:
140
+ self.decorators.append(ctrlMpExecOpts.clobber_outputs_option())
141
+ if not skip_summary:
142
+ self.decorators.append(ctrlMpExecOpts.summary_option())
143
+ if not skip_coverage:
144
+ self.decorators.append(coverage_options())
121
145
 
122
146
 
123
147
  class butler_options(OptionGroup): # noqa: N801
@@ -187,8 +211,8 @@ class run_options(OptionGroup): # noqa: N801
187
211
  click.pass_context,
188
212
  ctrlMpExecOpts.debug_option(),
189
213
  ctrlMpExecOpts.show_option(),
190
- pipeline_build_options(),
191
- qgraph_options(),
214
+ pipeline_build_options(skip_butler_config=True),
215
+ qgraph_options(skip_coverage=True, skip_clobber=True, skip_summary=True),
192
216
  butler_options(),
193
217
  execution_options(),
194
218
  meta_info_options(),
@@ -227,7 +227,7 @@ def summarize_quantum_graph(qg: BaseQuantumGraph) -> int:
227
227
  Parameters
228
228
  ----------
229
229
  qg : `lsst.pipe.base.quantum_graph.BaseQuantumGraph`
230
- Quantum graph object
230
+ Quantum graph object.
231
231
 
232
232
  Returns
233
233
  -------
@@ -0,0 +1,2 @@
1
+ __all__ = ["__version__"]
2
+ __version__ = "29.2025.4500"
@@ -1,18 +1,18 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-mpexec
3
- Version: 29.2025.4300
3
+ Version: 29.2025.4500
4
4
  Summary: Pipeline execution infrastructure for the Rubin Observatory LSST Science Pipelines.
5
5
  Author-email: Rubin Observatory Data Management <dm-admin@lists.lsst.org>
6
- License: BSD 3-Clause License
6
+ License-Expression: BSD-3-Clause OR GPL-3.0-or-later
7
7
  Project-URL: Homepage, https://github.com/lsst/ctrl_mpexec
8
8
  Keywords: lsst
9
9
  Classifier: Intended Audience :: Science/Research
10
- Classifier: License :: OSI Approved :: BSD License
11
10
  Classifier: Operating System :: OS Independent
12
11
  Classifier: Programming Language :: Python :: 3
13
12
  Classifier: Programming Language :: Python :: 3.11
14
13
  Classifier: Programming Language :: Python :: 3.12
15
14
  Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
16
  Classifier: Topic :: Scientific/Engineering :: Astronomy
17
17
  Requires-Python: >=3.11.0
18
18
  Description-Content-Type: text/x-rst
@@ -1,2 +0,0 @@
1
- __all__ = ["__version__"]
2
- __version__ = "29.2025.4300"