Coverage for python/lsst/ctrl/mpexec/quantumGraphExecutor.py : 80%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
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 program is free software: you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation, either version 3 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program. If not, see <http://www.gnu.org/licenses/>.
22__all__ = ["QuantumExecutor", "QuantumGraphExecutor"]
24# -------------------------------
25# Imports of standard modules --
26# -------------------------------
27from abc import ABC, abstractmethod
29# -----------------------------
30# Imports for other modules --
31# -----------------------------
34class QuantumExecutor(ABC):
35 """Class which abstracts execution of a single Quantum.
37 In general implementation should not depend on execution model and
38 execution should always happen in-process. Main reason for existence
39 of this class is to provide do-nothing implementation that can be used
40 in the unit tests.
41 """
43 @abstractmethod
44 def execute(self, taskDef, quantum, butler):
45 """Execute single quantum.
47 Parameters
48 ----------
49 taskDef : `~lsst.pipe.base.TaskDef`
50 Task definition structure.
51 quantum : `~lsst.daf.butler.Quantum`
52 Quantum for this execution.
53 butler : `~lsst.daf.butler.Butler`
54 Data butler instance
56 Returns
57 -------
58 quantum : `Quantum`
59 The quantum actually executed. At present this quantum will
60 contain only unresolved `DatasetRef` instances for output datasets,
61 reflecting the state of the quantum just before it was run (but
62 after any adjustments for predicted but now missing inputs). This
63 may change in the future to include resolved output `DatasetRef`
64 objects.
66 Notes
67 -----
68 Any exception raised by the task or code that wraps task execution is
69 propagated to the caller of this method.
70 """
71 raise NotImplementedError
74class QuantumGraphExecutor(ABC):
75 """Class which abstracts QuantumGraph execution.
77 Any specific execution model is implemented in sub-class by overriding
78 the `execute` method.
79 """
81 @abstractmethod
82 def execute(self, graph, butler):
83 """Execute whole graph.
85 Implementation of this method depends on particular execution model
86 and it has to be provided by a subclass. Execution model determines
87 what happens here; it can be either actual running of the task or,
88 for example, generation of the scripts for delayed batch execution.
90 Parameters
91 ----------
92 graph : `~lsst.pipe.base.QuantumGraph`
93 Execution graph.
94 butler : `~lsst.daf.butler.Butler`
95 Data butler instance
96 """
97 raise NotImplementedError