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

Shortcuts 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

10 statements  

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/>. 

21 

22__all__ = ["QuantumExecutor", "QuantumGraphExecutor"] 

23 

24# ------------------------------- 

25# Imports of standard modules -- 

26# ------------------------------- 

27from abc import ABC, abstractmethod 

28 

29# ----------------------------- 

30# Imports for other modules -- 

31# ----------------------------- 

32 

33 

34class QuantumExecutor(ABC): 

35 """Class which abstracts execution of a single Quantum. 

36 

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 """ 

42 

43 @abstractmethod 

44 def execute(self, taskDef, quantum, butler): 

45 """Execute single quantum. 

46 

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 

55 

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. 

65 

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 

72 

73 

74class QuantumGraphExecutor(ABC): 

75 """Class which abstracts QuantumGraph execution. 

76 

77 Any specific execution model is implemented in sub-class by overriding 

78 the `execute` method. 

79 """ 

80 

81 @abstractmethod 

82 def execute(self, graph, butler): 

83 """Execute whole graph. 

84 

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. 

89 

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