1 from SequenceTypes
import *
2 from Modules
import OutputModule, EDProducer, EDFilter, EDAnalyzer, Service, ESProducer, ESSource, _Module
3 from Mixins
import _Labelable
12 if isinstance(visitee, _Labelable):
13 if not visitee.hasLabel_():
14 raise ValueError(
"A task associated with the Schedule contains a module of type '"+visitee.type_()+
"'\nwhich has no assigned label.")
15 elif isinstance(visitee, Service):
16 if not visitee._inProcess:
17 raise ValueError(
"A task associated with the Schedule contains a service of type '"+visitee.type_()+
"'\nwhich is not attached to the process.")
28 if isinstance(visitee,OutputModule):
29 raise ValueError(
"Path "+self.
__label+
"cannot contain an OutputModule, '"+visitee.type_()+
"', with label '"+visitee.label_()+
"'")
31 if isinstance(visitee, _Labelable):
32 if not visitee.hasLabel_():
33 raise ValueError(
"Path "+self.
__label+
"contains a module of type '"+visitee.type_()+
"' which has no assigned label.")
34 elif isinstance(visitee, Service):
35 if not visitee._inProcess:
36 raise ValueError(
"Path "+self.
__label+
"contains a service of type '"+visitee.type_()+
"' which is not attached to the process.\n")
42 _presetFilters = [
"TriggerResultsFilter",
"HLTPrescaler"]
51 if isinstance(visitee, _Labelable):
52 if not visitee.hasLabel_():
53 raise ValueError(
"EndPath "+self.
__label+
"contains a module of type '"+visitee.type_()+
"' which has\nno assigned label.")
54 elif isinstance(visitee, Service):
55 if not visitee._inProcess:
56 raise ValueError(
"EndPath "+self.
__label+
"contains a service of type '"+visitee.type_()+
"' which is not attached to the process.\n")
57 if isinstance(visitee, Task):
61 if isinstance(visitee,EDFilter):
62 if (visitee.type_()
in self._presetFilters):
64 self.filtersOnEndpaths.append(visitee.type_())
67 if isinstance(visitee, Task):
71 """Form sets of all modules, ESProducers, ESSources and Services in visited objects. Can be used 72 to visit Paths, EndPaths, Sequences or Tasks. Includes in sets objects on sub-Sequences and sub-Tasks""" 80 if isinstance(visitee, _Module):
81 self.modules.add(visitee)
82 elif isinstance(visitee, ESProducer):
83 self.esProducers.add(visitee)
84 elif isinstance(visitee, ESSource):
85 self.esSources.add(visitee)
86 elif isinstance(visitee, Service):
87 self.services.add(visitee)
92 """ Combines 3 different visitor classes in 1 so we only have to visit all the paths and endpaths once""" 93 def __init__(self, validator, node, decorated):
98 self._validator.enter(visitee)
99 self._node.enter(visitee)
100 self._decorated.enter(visitee)
102 self._validator.leave(visitee)
105 self._decorated.leave(visitee)
108 """Fill a list with the names of Event module types in a sequence. The names are determined 109 by using globals() to lookup the variable names assigned to the modules. This 110 allows the determination of the labels before the modules have been attached to a Process.""" 112 self.
_moduleToName = { v[1]:v[0]
for v
in six.iteritems(globals_)
if isinstance(v[1],_Module) }
115 if isinstance(node,_Module):
120 if __name__==
"__main__":
126 def testValidators(self):
132 producer.setLabel(
"producer")
133 analyzer.setLabel(
"analyzer")
134 output.setLabel(
"output")
135 filter.setLabel(
"filter")
140 p3 =
Path(s1+unlabeled)
141 ep1 =
EndPath(producer+output+analyzer)
147 p1.visit(pathValidator)
148 self.assertRaises(ValueError, p2.visit, pathValidator)
149 self.assertRaises(ValueError, p3.visit, pathValidator)
150 ep1.visit(endpathValidator)
151 ep2.visit(endpathValidator)
152 ep3.visit(endpathValidator)
153 self.assertRaises(ValueError, ep4.visit, endpathValidator)
def __init__(self, validator, node, decorated)
def setLabel(self, label)
def __init__(self, globals_, l)
def setLabel(self, label)