lsst-ctrl-mpexec 29.2025.2100__py3-none-any.whl → 29.2025.3100__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.
Files changed (28) hide show
  1. lsst/ctrl/mpexec/__init__.py +1 -2
  2. lsst/ctrl/mpexec/cli/cmd/commands.py +1 -1
  3. lsst/ctrl/mpexec/cli/script/pre_exec_init_qbb.py +3 -1
  4. lsst/ctrl/mpexec/cli/script/run.py +2 -1
  5. lsst/ctrl/mpexec/cli/script/run_qbb.py +2 -1
  6. lsst/ctrl/mpexec/cmdLineFwk.py +23 -23
  7. lsst/ctrl/mpexec/execFixupDataId.py +9 -101
  8. lsst/ctrl/mpexec/executionGraphFixup.py +12 -37
  9. lsst/ctrl/mpexec/log_capture.py +9 -195
  10. lsst/ctrl/mpexec/mpGraphExecutor.py +60 -696
  11. lsst/ctrl/mpexec/quantumGraphExecutor.py +20 -90
  12. lsst/ctrl/mpexec/reports.py +30 -206
  13. lsst/ctrl/mpexec/separablePipelineExecutor.py +12 -263
  14. lsst/ctrl/mpexec/simple_pipeline_executor.py +11 -453
  15. lsst/ctrl/mpexec/singleQuantumExecutor.py +75 -532
  16. lsst/ctrl/mpexec/taskFactory.py +12 -38
  17. lsst/ctrl/mpexec/version.py +1 -1
  18. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/METADATA +1 -1
  19. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/RECORD +27 -28
  20. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/WHEEL +1 -1
  21. lsst/ctrl/mpexec/dotTools.py +0 -100
  22. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/entry_points.txt +0 -0
  23. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/licenses/COPYRIGHT +0 -0
  24. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/licenses/LICENSE +0 -0
  25. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/licenses/bsd_license.txt +0 -0
  26. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/licenses/gpl-v3.0.txt +0 -0
  27. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/top_level.txt +0 -0
  28. {lsst_ctrl_mpexec-29.2025.2100.dist-info → lsst_ctrl_mpexec-29.2025.3100.dist-info}/zip-safe +0 -0
@@ -25,46 +25,20 @@
25
25
  # You should have received a copy of the GNU General Public License
26
26
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
27
27
 
28
- from __future__ import annotations
28
+ __all__ = ("TaskFactory",)
29
29
 
30
- __all__ = ["TaskFactory"]
30
+ from deprecated.sphinx import deprecated
31
31
 
32
- import logging
33
- from collections.abc import Iterable
34
- from typing import TYPE_CHECKING, Any
32
+ import lsst.pipe.base
35
33
 
36
- from lsst.pipe.base import TaskFactory as BaseTaskFactory
37
- from lsst.pipe.base.pipeline_graph import TaskNode
34
+ # TODO[DM-51962]: Remove this module.
38
35
 
39
- if TYPE_CHECKING:
40
- from lsst.daf.butler import DatasetRef, LimitedButler
41
- from lsst.pipe.base import PipelineTask
42
36
 
43
- _LOG = logging.getLogger(__name__)
44
-
45
-
46
- class TaskFactory(BaseTaskFactory):
47
- """Class instantiating PipelineTasks."""
48
-
49
- def makeTask(
50
- self,
51
- task_node: TaskNode,
52
- /,
53
- butler: LimitedButler,
54
- initInputRefs: Iterable[DatasetRef] | None,
55
- ) -> PipelineTask:
56
- # docstring inherited
57
- config = task_node.config
58
- init_inputs: dict[str, Any] = {}
59
- init_input_refs_by_dataset_type = {}
60
- if initInputRefs is not None:
61
- init_input_refs_by_dataset_type = {ref.datasetType.name: ref for ref in initInputRefs}
62
- task_class = task_node.task_class
63
- if init_input_refs_by_dataset_type:
64
- for read_edge in task_node.init.inputs.values():
65
- init_inputs[read_edge.connection_name] = butler.get(
66
- init_input_refs_by_dataset_type[read_edge.dataset_type_name]
67
- )
68
- # make task instance
69
- task = task_class(config=config, initInputs=init_inputs, name=task_node.label)
70
- return task
37
+ @deprecated(
38
+ "The TaskFactory implementation has moved into its base class in lsst.pipe.base. "
39
+ "This forwarding shim will be removed after v30.",
40
+ version="v30",
41
+ category=FutureWarning,
42
+ )
43
+ class TaskFactory(lsst.pipe.base.TaskFactory): # noqa: D101
44
+ pass
@@ -1,2 +1,2 @@
1
1
  __all__ = ["__version__"]
2
- __version__ = "29.2025.2100"
2
+ __version__ = "29.2025.3100"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lsst-ctrl-mpexec
3
- Version: 29.2025.2100
3
+ Version: 29.2025.3100
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
6
  License: BSD 3-Clause License
@@ -1,29 +1,28 @@
1
1
  lsst/__init__.py,sha256=aXdEOZVrBQISQi6XPS9s1NhBjIJaIwNNxCFRiGchRAw,1369
2
2
  lsst/ctrl/__init__.py,sha256=aXdEOZVrBQISQi6XPS9s1NhBjIJaIwNNxCFRiGchRAw,1369
3
- lsst/ctrl/mpexec/__init__.py,sha256=c2mK9--wemp2AEa81CSMkrqaIjJ1_iOs_M-O8CHJxB4,1757
3
+ lsst/ctrl/mpexec/__init__.py,sha256=XOMrfYiBPZoiaxWTlzN-seJu258x42U1GdR_ti9jLMk,1733
4
4
  lsst/ctrl/mpexec/_pipeline_graph_factory.py,sha256=suzWUn9YGn0CTA_3N1Wd-sUo7TFxuo_6VZ2nO0CJ5a8,3552
5
- lsst/ctrl/mpexec/cmdLineFwk.py,sha256=hrjDfsaBO0oTqliksQgZywyN2uVY7E7DLZzUSvAOA4Y,43759
6
- lsst/ctrl/mpexec/dotTools.py,sha256=nx31DC7NkQM766sC97lPQMI22snVaWS7USFMFVLChqk,3421
7
- lsst/ctrl/mpexec/execFixupDataId.py,sha256=MUirmuoQiWj7C7wQ23QGkgMqx_5_CP4_UMV6h_gVfxk,5056
8
- lsst/ctrl/mpexec/executionGraphFixup.py,sha256=1z4P4YmtLTMPoMxmFiOnzljLcP9B5V1SCG9haqR_TyI,2830
9
- lsst/ctrl/mpexec/log_capture.py,sha256=97s0mkM30hkf4eEKPzri74Rkp7OxQTxsgTnBgVmn3yM,9411
10
- lsst/ctrl/mpexec/mpGraphExecutor.py,sha256=TQahVw6DSWO8uCkp2NEOsAMOK-xCZ1JA-9R3Azyrt3Y,31685
5
+ lsst/ctrl/mpexec/cmdLineFwk.py,sha256=V2s6yKW-00FSGa7IDZwwu60LXDlKvTBbyfetA1QF8D8,43872
6
+ lsst/ctrl/mpexec/execFixupDataId.py,sha256=26eFIrZ-I5oTGoBzO35WH2UtwYIPe5aX37IHE9OfAa0,1633
7
+ lsst/ctrl/mpexec/executionGraphFixup.py,sha256=hpkU0cCRcz80c-YQS1eU5G4riRTSUfOfPjCehTkWTMA,1776
8
+ lsst/ctrl/mpexec/log_capture.py,sha256=Y8ExKqrpyboBoi6giY9dlL4OyCrZn-c_6EB8Oh_z6dc,1605
9
+ lsst/ctrl/mpexec/mpGraphExecutor.py,sha256=RvmnS-PNSf3GkTnnjWyXsLkjq8wTGXXUtKXbxZndv2k,4864
11
10
  lsst/ctrl/mpexec/preExecInit.py,sha256=e9C853k5EPD_9QSRDmyhv7fCgMnsSiqbsUUjiUCISPM,8733
12
11
  lsst/ctrl/mpexec/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- lsst/ctrl/mpexec/quantumGraphExecutor.py,sha256=DV0j_CNjS8CNMR-kiVIWj1vyzLKZzi4wilc_r0z2L0Q,4386
14
- lsst/ctrl/mpexec/reports.py,sha256=zxZOkJWhTFdl4eJTOYsM-58tqRbbyF5-cQ-zF-zIR9Y,7677
15
- lsst/ctrl/mpexec/separablePipelineExecutor.py,sha256=6QvZ9EFHoqXwYjHbcNe9wWMssFbAg2I9mNpjFnTSiM0,12074
12
+ lsst/ctrl/mpexec/quantumGraphExecutor.py,sha256=7LCoqsmNSWUJ1ph1bfgrVrpk5Ug5ArzniFkqcxgjfhI,2106
13
+ lsst/ctrl/mpexec/reports.py,sha256=EvHjW9wdjfN1lj4DQH634oJ9zv3wYKySvJ_UtFDtNHY,2460
14
+ lsst/ctrl/mpexec/separablePipelineExecutor.py,sha256=yHymF9jSthVCl_230TzRqQrcAmohSgR7Me8YAbMazM8,1818
16
15
  lsst/ctrl/mpexec/showInfo.py,sha256=elrWQ8QPusZguLqYhvmMjYaNmoJgWpQDr3uQ0QhB1HI,16407
17
- lsst/ctrl/mpexec/simple_pipeline_executor.py,sha256=scqQ1MDS6FcZvFTwxtCkmTSg0zJmKIfah91lawr7Dhc,20454
18
- lsst/ctrl/mpexec/singleQuantumExecutor.py,sha256=sYYdUe6gKRZELFMVHxQLS5ZnBcrKJpxKnXFwchn-7Z8,29023
19
- lsst/ctrl/mpexec/taskFactory.py,sha256=c4xj8cR_Ts5uzzGovh87ZKdVeeXy5E3lIjCwJnDuOqg,2720
16
+ lsst/ctrl/mpexec/simple_pipeline_executor.py,sha256=aVWgOds0ILCTzXdrWy0KFyjcIuqw6cNq8alAJeZd8AE,1797
17
+ lsst/ctrl/mpexec/singleQuantumExecutor.py,sha256=Y6ufL6y5PuQ6-x8sFu_m2moCIA3JvOf6Gb9PotXeTno,8649
18
+ lsst/ctrl/mpexec/taskFactory.py,sha256=0TdCM-le7CXhobVbWPTqcq9sOrGceUY6mmkzzWhi0dM,1707
20
19
  lsst/ctrl/mpexec/util.py,sha256=y2Rw5PL40_EuLtVxiqSVX0JfPV4IrFl1LfOMUWx2u30,4236
21
- lsst/ctrl/mpexec/version.py,sha256=czd5myijXlfzN1l1OFP7x6hn5ASHoE02wXhI32IqLec,55
20
+ lsst/ctrl/mpexec/version.py,sha256=ieqM-HeyuKM3_4zduaocPJMVYG02uci4CjCfGX5PncI,55
22
21
  lsst/ctrl/mpexec/cli/__init__.py,sha256=6dpDHNBzyicVpFi1fsaiYVbYEMeoL57IHKkPaej24gs,1301
23
22
  lsst/ctrl/mpexec/cli/pipetask.py,sha256=4HnhX9dCizCihVbpHVJX5WXO9TEli9oL6wA-tPh1_vA,2209
24
23
  lsst/ctrl/mpexec/cli/utils.py,sha256=5iOrlj5jJTWtZS0BMLsuiCGAvxbfrjd1MSyXxBthWcc,6503
25
24
  lsst/ctrl/mpexec/cli/cmd/__init__.py,sha256=nRmwwW5d55gAEkyE7NpSK8mxa56HcfEta2r-Y9I07F8,1661
26
- lsst/ctrl/mpexec/cli/cmd/commands.py,sha256=hb4o2xaGRcImIv4FzHw7ABOdqTJWmlB07EWL8layVlM,17856
25
+ lsst/ctrl/mpexec/cli/cmd/commands.py,sha256=SiBEQ2vhPprFUMgmbIfk78x0WA5iT0FYr8f5rfKpw2k,17870
27
26
  lsst/ctrl/mpexec/cli/opt/__init__.py,sha256=IzUInuJj9igiaNcEqMx0adelgJtQC5_XMYnaiizBn0A,1378
28
27
  lsst/ctrl/mpexec/cli/opt/arguments.py,sha256=vjUw0ZN_4HStp-_3ne6AT5S_eH7sly3OVfL07tgrJnY,1572
29
28
  lsst/ctrl/mpexec/cli/opt/optionGroups.py,sha256=qtpwlgfvEzAs0CNav7t9ylywWBavoeWlZfYhRQEuZTw,8132
@@ -32,20 +31,20 @@ lsst/ctrl/mpexec/cli/script/__init__.py,sha256=eCuF4FAI5D3pl05IMJj7TCkZq-hireua2
32
31
  lsst/ctrl/mpexec/cli/script/build.py,sha256=Ff_8ffBmxuJi45x7-rUb-f0axucagYs6rNvBowwVmq0,6149
33
32
  lsst/ctrl/mpexec/cli/script/cleanup.py,sha256=D7W-azf4mNJcIWhbU5uCRCi94mkb8-Q2ksRFblQGrUw,4990
34
33
  lsst/ctrl/mpexec/cli/script/confirmable.py,sha256=Bo1GSTZQn44d_TRj6N3YfpYcZiuHEYoz26WZQwMyb4A,3918
35
- lsst/ctrl/mpexec/cli/script/pre_exec_init_qbb.py,sha256=DGNseiavrI1VxR_o6vCelbPvr9kCQZzroZHHSQe-RTE,2479
34
+ lsst/ctrl/mpexec/cli/script/pre_exec_init_qbb.py,sha256=uaJKPoETTzlCveYX1ux8vdRieIsUSGQDvOh8HQ8HZuY,2506
36
35
  lsst/ctrl/mpexec/cli/script/purge.py,sha256=gYwSsZfTBP6oDcDp_YdqQEKGvAStvsj5hwNw42S8ptE,10637
37
36
  lsst/ctrl/mpexec/cli/script/qgraph.py,sha256=ncjbtJ7AMp-Obo524HAC2E4Hnqyk1Aji4mJPAZUGMDM,10048
38
37
  lsst/ctrl/mpexec/cli/script/report.py,sha256=ItJitmYmWIDjj7PxRtP4qXLx-z5FAU6nSfI2gx0GS5k,12800
39
- lsst/ctrl/mpexec/cli/script/run.py,sha256=22g7vBhGDGsFSQq7CtruTf-bivo3t53decBAV0wAg1g,9767
40
- lsst/ctrl/mpexec/cli/script/run_qbb.py,sha256=v05gQvngvKCWvFkRifQoUoPnGnkQ57ZBGWaNVFnmCB8,5528
38
+ lsst/ctrl/mpexec/cli/script/run.py,sha256=fi7weGOMYae9gQ9PLbWG-_1l_vSaAg-aucRn_aqp38Q,9793
39
+ lsst/ctrl/mpexec/cli/script/run_qbb.py,sha256=5wFxv1kWk4VP7OrwtpCX96mMXWDi0zd1Zo21y-Iki_E,5554
41
40
  lsst/ctrl/mpexec/cli/script/update_graph_run.py,sha256=v_EdOaD6jR_vSlgm_5-pwUjoNEFMrAuYFM1xIaHVU3Q,2597
42
- lsst_ctrl_mpexec-29.2025.2100.dist-info/licenses/COPYRIGHT,sha256=pGCjnRAnyt02a6_9PLzXQikpvYmvMmK9fCdOKlRSV6k,369
43
- lsst_ctrl_mpexec-29.2025.2100.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
44
- lsst_ctrl_mpexec-29.2025.2100.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
45
- lsst_ctrl_mpexec-29.2025.2100.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
46
- lsst_ctrl_mpexec-29.2025.2100.dist-info/METADATA,sha256=pUwDPGxSs9fes-_mAQ-7wjVuwltKgojwv6FQdsEfVdM,2302
47
- lsst_ctrl_mpexec-29.2025.2100.dist-info/WHEEL,sha256=zaaOINJESkSfm_4HQVc5ssNzHCPXhJm0kEUakpsEHaU,91
48
- lsst_ctrl_mpexec-29.2025.2100.dist-info/entry_points.txt,sha256=aYE38yqZU8qvpLUUkXzgmUxDJYYknEqPxgxYkowrL4s,64
49
- lsst_ctrl_mpexec-29.2025.2100.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
50
- lsst_ctrl_mpexec-29.2025.2100.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
51
- lsst_ctrl_mpexec-29.2025.2100.dist-info/RECORD,,
41
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/licenses/COPYRIGHT,sha256=pGCjnRAnyt02a6_9PLzXQikpvYmvMmK9fCdOKlRSV6k,369
42
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/licenses/LICENSE,sha256=pRExkS03v0MQW-neNfIcaSL6aiAnoLxYgtZoFzQ6zkM,232
43
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/licenses/bsd_license.txt,sha256=7MIcv8QRX9guUtqPSBDMPz2SnZ5swI-xZMqm_VDSfxY,1606
44
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/licenses/gpl-v3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
45
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/METADATA,sha256=KBVkutBsWwyyNpcnFtRm3UYbT1rrwFuZALRRAezASVA,2302
46
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
47
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/entry_points.txt,sha256=aYE38yqZU8qvpLUUkXzgmUxDJYYknEqPxgxYkowrL4s,64
48
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/top_level.txt,sha256=eUWiOuVVm9wwTrnAgiJT6tp6HQHXxIhj2QSZ7NYZH80,5
49
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
50
+ lsst_ctrl_mpexec-29.2025.3100.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.8.0)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,100 +0,0 @@
1
- # This file is part of ctrl_mpexec.
2
- #
3
- # Developed for the LSST Data Management System.
4
- # This product includes software developed by the LSST Project
5
- # (http://www.lsst.org).
6
- # See the COPYRIGHT file at the top-level directory of this distribution
7
- # for details of code ownership.
8
- #
9
- # This software is dual licensed under the GNU General Public License and also
10
- # under a 3-clause BSD license. Recipients may choose which of these licenses
11
- # to use; please see the files gpl-3.0.txt and/or bsd_license.txt,
12
- # respectively. If you choose the GPL option then the following text applies
13
- # (but note that there is still no warranty even if you opt for BSD instead):
14
- #
15
- # This program is free software: you can redistribute it and/or modify
16
- # it under the terms of the GNU General Public License as published by
17
- # the Free Software Foundation, either version 3 of the License, or
18
- # (at your option) any later version.
19
- #
20
- # This program is distributed in the hope that it will be useful,
21
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
22
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23
- # GNU General Public License for more details.
24
- #
25
- # You should have received a copy of the GNU General Public License
26
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
27
-
28
- """Module defining few methods to generate GraphViz diagrams from pipelines
29
- or quantum graphs.
30
- """
31
-
32
- from __future__ import annotations
33
-
34
- __all__ = ["graph2dot", "pipeline2dot"]
35
-
36
- from collections.abc import Iterable
37
- from typing import Any
38
-
39
- from deprecated.sphinx import deprecated
40
-
41
- from lsst.pipe.base import Pipeline, QuantumGraph, TaskDef
42
- from lsst.pipe.base.dot_tools import graph2dot as _graph2dot
43
- from lsst.pipe.base.dot_tools import pipeline2dot as _pipeline2dot
44
-
45
-
46
- @deprecated(
47
- "graph2dot should now be imported from lsst.pipe.base.dot_tools. Will be removed in v29.",
48
- version="v27.0",
49
- category=FutureWarning,
50
- )
51
- def graph2dot(qgraph: QuantumGraph, file: Any) -> None:
52
- """Convert QuantumGraph into GraphViz digraph.
53
-
54
- This method is mostly for documentation/presentation purposes.
55
-
56
- Parameters
57
- ----------
58
- qgraph : `lsst.pipe.base.QuantumGraph`
59
- QuantumGraph instance.
60
- file : `str` or file object
61
- File where GraphViz graph (DOT language) is written, can be a file name
62
- or file object.
63
-
64
- Raises
65
- ------
66
- OSError
67
- Raised if the output file cannot be opened.
68
- ImportError
69
- Raised if the task class cannot be imported.
70
- """
71
- _graph2dot(qgraph, file)
72
-
73
-
74
- @deprecated(
75
- "pipeline2dot should now be imported from lsst.pipe.base.dot_tools. Will be removed in v29.",
76
- version="v27.0",
77
- category=FutureWarning,
78
- )
79
- def pipeline2dot(pipeline: Pipeline | Iterable[TaskDef], file: Any) -> None:
80
- """Convert `~lsst.pipe.base.Pipeline` into GraphViz digraph.
81
-
82
- This method is mostly for documentation/presentation purposes.
83
- Unlike other methods this method does not validate graph consistency.
84
-
85
- Parameters
86
- ----------
87
- pipeline : `lsst.pipe.base.Pipeline`
88
- Pipeline description.
89
- file : `str` or file object
90
- File where GraphViz graph (DOT language) is written, can be a file name
91
- or file object.
92
-
93
- Raises
94
- ------
95
- OSError
96
- Raised if the output file cannot be opened.
97
- ImportError
98
- Raised if the task class cannot be imported.
99
- """
100
- _pipeline2dot(pipeline, file)