CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Properties | Private Member Functions | Private Attributes
Config.Process Class Reference
Inheritance diagram for Config.Process:

Public Member Functions

def __delattr__
 
def __init__
 
def __setattr__
 
def __setstate__
 
def add_
 
def aliases_
 
def analyzerNames
 
def analyzers_
 
def dumpConfig
 
def dumpPython
 
def endpaths_
 
def es_prefers_
 
def es_producers_
 
def es_sources_
 
def extend
 
def fillProcessDesc
 
def filterNames
 
def filters_
 
def globalReplace
 
def load
 
def looper_
 
def name_
 
def outputModules_
 
def pathNames
 
def paths_
 
def prefer
 
def producerNames
 
def producers_
 
def prune
 
def psets_
 
def schedule_
 
def sequences_
 
def services_
 
def setLooper_
 
def setName_
 
def setPartialSchedule_
 
def setSchedule_
 
def setSource_
 
def setStrict
 
def setSubProcess_
 
def source_
 
def subProcess_
 
def validate
 
def vpsets_
 

Properties

 aliases = property(aliases_,doc="dictionary containing the aliases for the process")
 
 analyzers = property(analyzers_,doc="dictionary containing the analyzers for the process")
 
 endpaths = property(endpaths_,doc="dictionary containing the endpaths for the process")
 
 es_prefers = property(es_prefers_,doc="dictionary containing the es_prefers for the process")
 
 es_producers = property(es_producers_,doc="dictionary containing the es_producers for the process")
 
 es_sources = property(es_sources_,doc="dictionary containing the es_sources for the process")
 
 filters = property(filters_, doc="dictionary containing the filters for the process")
 
 looper = property(looper_,setLooper_,doc='the main looper or None if not set')
 
 outputModules = property(outputModules_,doc="dictionary containing the output_modules for the process")
 
 paths = property(paths_,doc="dictionary containing the paths for the process")
 
 process = property(name_,setName_, doc="name of the process")
 
 producers = property(producers_,doc="dictionary containing the producers for the process")
 
 psets = property(psets_,doc="dictionary containing the PSets for the process")
 
 schedule = property(schedule_,setSchedule_,doc='the schedule or None if not set')
 
 sequences = property(sequences_,doc="dictionary containing the sequences for the process")
 
 services = property(services_,doc="dictionary containing the services for the process")
 
 source = property(source_,setSource_,doc='the main source or None if not set')
 
 subProcess = property(subProcess_,setSubProcess_,doc='the SubProcess or None if not set')
 
 vpsets = property(vpsets_,doc="dictionary containing the PSets for the process")
 

Private Member Functions

def __findFirstSequenceUsingModule
 
def __setObjectLabel
 
def _dumpConfigESPrefers
 
def _dumpConfigNamedList
 
def _dumpConfigOptionallyNamedList
 
def _dumpConfigUnnamedList
 
def _dumpPython
 
def _dumpPythonList
 
def _findPreferred
 
def _insertInto
 
def _insertManyInto
 
def _insertOneInto
 
def _insertPaths
 
def _okToPlace
 
def _place
 
def _placeAlias
 
def _placeAnalyzer
 
def _placeEndPath
 
def _placeESPrefer
 
def _placeESProducer
 
def _placeESSource
 
def _placeFilter
 
def _placeLooper
 
def _placeOutputModule
 
def _placePath
 
def _placeProducer
 
def _placePSet
 
def _placeSequence
 
def _placeService
 
def _placeSource
 
def _placeSubProcess
 
def _placeVPSet
 
def _pruneModules
 
def _replaceInSequences
 
def _sequencesInDependencyOrder
 
def _validateSequence
 

Private Attributes

 __isStrict
 
 __processPSet
 
 __thelist
 

Detailed Description

Root class for a CMS configuration process

Definition at line 100 of file Config.py.

Constructor & Destructor Documentation

def Config.Process.__init__ (   self,
  name 
)
The argument 'name' will be the name applied to this Process

Definition at line 102 of file Config.py.

Referenced by Config.Process.fillProcessDesc().

103  def __init__(self,name):
104  """The argument 'name' will be the name applied to this Process"""
105  self.__dict__['_Process__name'] = name
106  if not name.isalnum():
107  raise RuntimeError("Error: The process name is an empty string or contains non-alphanumeric characters")
108  self.__dict__['_Process__filters'] = {}
109  self.__dict__['_Process__producers'] = {}
110  self.__dict__['_Process__source'] = None
111  self.__dict__['_Process__looper'] = None
112  self.__dict__['_Process__subProcess'] = None
113  self.__dict__['_Process__schedule'] = None
114  self.__dict__['_Process__analyzers'] = {}
115  self.__dict__['_Process__outputmodules'] = {}
116  self.__dict__['_Process__paths'] = DictTypes.SortedKeysDict() # have to keep the order
117  self.__dict__['_Process__endpaths'] = DictTypes.SortedKeysDict() # of definition
118  self.__dict__['_Process__sequences'] = {}
119  self.__dict__['_Process__services'] = {}
120  self.__dict__['_Process__essources'] = {}
121  self.__dict__['_Process__esproducers'] = {}
122  self.__dict__['_Process__esprefers'] = {}
123  self.__dict__['_Process__aliases'] = {}
124  self.__dict__['_Process__psets']={}
125  self.__dict__['_Process__vpsets']={}
126  self.__dict__['_cloneToObjectDict'] = {}
127  # policy switch to avoid object overwriting during extend/load
128  self.__dict__['_Process__InExtendCall'] = False
129  self.__dict__['_Process__partialschedules'] = {}
130  self.__isStrict = False
def __init__
Definition: Config.py:102

Member Function Documentation

def Config.Process.__delattr__ (   self,
  name 
)

Definition at line 384 of file Config.py.

Referenced by Config.Process.__setattr__().

385  def __delattr__(self,name):
386  if not hasattr(self,name):
387  raise KeyError('process does not know about '+name)
388  elif name.startswith('_Process__'):
389  raise ValueError('this attribute cannot be deleted')
390  else:
391  # we have to remove it from all dictionaries/registries
392  dicts = [item for item in self.__dict__.values() if (type(item)==dict or type(item)==DictTypes.SortedKeysDict)]
393  for reg in dicts:
394  if reg.has_key(name): del reg[name]
395  # if it was a labelable object, the label needs to be removed
396  obj = getattr(self,name)
397  if isinstance(obj,_Labelable):
398  getattr(self,name).setLabel(None)
399  # now remove it from the process itself
400  try:
401  del self.__dict__[name]
402  except:
403  pass
def __delattr__
Definition: Config.py:384
def Config.Process.__findFirstSequenceUsingModule (   self,
  seqs,
  mod 
)
private
Given a container of sequences, find the first sequence containing mod
and return the sequence. If no sequence is found, return None

Definition at line 373 of file Config.py.

References list().

Referenced by Config.Process.__setattr__().

374  def __findFirstSequenceUsingModule(self,seqs,mod):
375  """Given a container of sequences, find the first sequence containing mod
376  and return the sequence. If no sequence is found, return None"""
377  from FWCore.ParameterSet.SequenceTypes import ModuleNodeVisitor
378  for sequenceable in seqs.itervalues():
379  l = list()
380  v = ModuleNodeVisitor(l)
381  sequenceable.visit(v)
382  if mod in l:
383  return sequenceable
return None
def __findFirstSequenceUsingModule
Definition: Config.py:373
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
def Config.Process.__setattr__ (   self,
  name,
  value 
)

Definition at line 295 of file Config.py.

References Config.Process.__delattr__(), Config.Process.__findFirstSequenceUsingModule(), Config.Process.__isStrict, Config.Process.__setObjectLabel(), Config.Process._okToPlace(), Config.Process._replaceInSequences(), Config.Process.add_(), Config.Process.endpaths, Config.Process.paths, and Config.Process.sequences.

Referenced by Config.Process._findPreferred(), and Config.Process.extend().

296  def __setattr__(self,name,value):
297  # check if the name is well-formed (only _ and alphanumerics are allowed)
298  if not name.replace('_','').isalnum():
299  raise ValueError('The label '+name+' contains forbiden characters')
300 
301  # private variable exempt from all this
302  if name.startswith('_Process__'):
303  self.__dict__[name]=value
304  return
305  if not isinstance(value,_ConfigureComponent):
306  raise TypeError("can only assign labels to an object which inherits from '_ConfigureComponent'\n"
307  +"an instance of "+str(type(value))+" will not work")
308  if not isinstance(value,_Labelable) and not isinstance(value,Source) and not isinstance(value,Looper) and not isinstance(value,Schedule):
309  if name == value.type_():
310  self.add_(value)
311  return
312  else:
313  raise TypeError("an instance of "+str(type(value))+" can not be assigned the label '"+name+"'.\n"+
314  "Please either use the label '"+value.type_()+" or use the 'add_' method instead.")
315  #clone the item
316  if self.__isStrict:
317  newValue =value.copy()
318  try:
319  newValue._filename = value._filename
320  except:
321  pass
322  value.setIsFrozen()
323  else:
324  newValue =value
325  if not self._okToPlace(name, value, self.__dict__):
326  newFile='top level config'
327  if hasattr(value,'_filename'):
328  newFile = value._filename
329  oldFile='top level config'
330  oldValue = getattr(self,name)
331  if hasattr(oldValue,'_filename'):
332  oldFile = oldValue._filename
333  msg = "Trying to override definition of process."+name
334  msg += "\n new object defined in: "+newFile
335  msg += "\n existing object defined in: "+oldFile
336  raise ValueError(msg)
337  # remove the old object of the name (if there is one)
338  if hasattr(self,name) and not (getattr(self,name)==newValue):
339  # Compain if items in sequences from load() statements have
340  # degeneratate names, but if the user overwrites a name in the
341  # main config, replace it everywhere
342  if isinstance(newValue, _Sequenceable):
343  if not self.__InExtendCall:
344  self._replaceInSequences(name, newValue)
345  else:
346  #should check to see if used in sequence before complaining
347  newFile='top level config'
348  if hasattr(value,'_filename'):
349  newFile = value._filename
350  oldFile='top level config'
351  oldValue = getattr(self,name)
352  if hasattr(oldValue,'_filename'):
353  oldFile = oldValue._filename
354  msg1 = "Trying to override definition of "+name+" while it is used by the sequence "
355  msg2 = "\n new object defined in: "+newFile
356  msg2 += "\n existing object defined in: "+oldFile
357  s = self.__findFirstSequenceUsingModule(self.sequences,oldValue)
358  if s is not None:
359  raise ValueError(msg1+s.label_()+msg2)
360  s = self.__findFirstSequenceUsingModule(self.paths,oldValue)
361  if s is not None:
362  raise ValueError(msg1+s.label_()+msg2)
363  s = self.__findFirstSequenceUsingModule(self.endpaths,oldValue)
364  if s is not None:
365  raise ValueError(msg1+s.label_()+msg2)
366  self.__delattr__(name)
367  self.__dict__[name]=newValue
368  if isinstance(newValue,_Labelable):
369  self.__setObjectLabel(newValue, name)
370  self._cloneToObjectDict[id(value)] = newValue
371  self._cloneToObjectDict[id(newValue)] = newValue
372  #now put in proper bucket
newValue._place(name,self)
def __setObjectLabel
Definition: Config.py:268
def _replaceInSequences
Definition: Config.py:714
def __delattr__
Definition: Config.py:384
def _okToPlace
Definition: Config.py:419
def __findFirstSequenceUsingModule
Definition: Config.py:373
def __setattr__
Definition: Config.py:295
def Config.Process.__setObjectLabel (   self,
  object,
  newLabel 
)
private

Definition at line 268 of file Config.py.

Referenced by Config.Process.__setattr__(), Config.Process._place(), and Config.Process.extend().

269  def __setObjectLabel(self, object, newLabel) :
270  if not object.hasLabel_() :
271  object.setLabel(newLabel)
272  return
273  if newLabel == object.label_() :
274  return
275  if newLabel is None :
276  object.setLabel(None)
277  return
278  if (hasattr(self, object.label_()) and id(getattr(self, object.label_())) == id(object)) :
279  msg100 = "Attempting to change the label of an attribute of the Process\n"
280  msg101 = "Old label = "+object.label_()+" New label = "+newLabel+"\n"
281  msg102 = "Type = "+str(type(object))+"\n"
282  msg103 = "Some possible solutions:\n"
283  msg104 = " 1. Clone modules instead of using simple assignment. Cloning is\n"
284  msg105 = " also preferred for other types when possible.\n"
285  msg106 = " 2. Declare new names starting with an underscore if they are\n"
286  msg107 = " for temporaries you do not want propagated into the Process. The\n"
287  msg108 = " underscore tells \"from x import *\" and process.load not to import\n"
288  msg109 = " the name.\n"
289  msg110 = " 3. Reorganize so the assigment is not necessary. Giving a second\n"
290  msg111 = " name to the same object usually causes confusion and problems.\n"
291  msg112 = " 4. Compose Sequences: newName = cms.Sequence(oldName)\n"
292  raise ValueError(msg100+msg101+msg102+msg103+msg104+msg105+msg106+msg107+msg108+msg109+msg110+msg111+msg112)
293  object.setLabel(None)
294  object.setLabel(newLabel)
def __setObjectLabel
Definition: Config.py:268
def Config.Process.__setstate__ (   self,
  pkldict 
)
Unpickling hook.

Since cloneToObjectDict stores a hash of objects by their
id() it needs to be updated when unpickling to use the
new object id values instantiated during the unpickle.

Definition at line 149 of file Config.py.

150  def __setstate__(self, pkldict):
151  """
152  Unpickling hook.
153 
154  Since cloneToObjectDict stores a hash of objects by their
155  id() it needs to be updated when unpickling to use the
156  new object id values instantiated during the unpickle.
157 
158  """
159  self.__dict__.update(pkldict)
160  tmpDict = {}
161  for value in self._cloneToObjectDict.values():
162  tmpDict[id(value)] = value
163  self.__dict__['_cloneToObjectDict'] = tmpDict
164 
165 
def __setstate__
Definition: Config.py:149
def Config.Process._dumpConfigESPrefers (   self,
  options 
)
private

Definition at line 626 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

627  def _dumpConfigESPrefers(self, options):
628  result = ''
629  for item in self.es_prefers_().itervalues():
630  result +=options.indentation()+'es_prefer '+item.targetLabel_()+' = '+item.dumpConfig(options)
return result
def _dumpConfigESPrefers
Definition: Config.py:626
def es_prefers_
Definition: Config.py:251
def Config.Process._dumpConfigNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 548 of file Config.py.

Referenced by Config.Process.dumpConfig().

549  def _dumpConfigNamedList(self,items,typeName,options):
550  returnValue = ''
551  for name,item in items:
552  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigNamedList
Definition: Config.py:548
def Config.Process._dumpConfigOptionallyNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 558 of file Config.py.

Referenced by Config.Process.dumpConfig().

559  def _dumpConfigOptionallyNamedList(self,items,typeName,options):
560  returnValue = ''
561  for name,item in items:
562  if name == item.type_():
563  name = ''
564  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigOptionallyNamedList
Definition: Config.py:558
def Config.Process._dumpConfigUnnamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 553 of file Config.py.

Referenced by Config.Process.dumpConfig().

554  def _dumpConfigUnnamedList(self,items,typeName,options):
555  returnValue = ''
556  for name,item in items:
557  returnValue +=options.indentation()+typeName+' = '+item.dumpConfig(options)
return returnValue
def _dumpConfigUnnamedList
Definition: Config.py:553
def Config.Process._dumpPython (   self,
  d,
  options 
)
private

Definition at line 680 of file Config.py.

Referenced by Config.Process.dumpPython().

681  def _dumpPython(self, d, options):
682  result = ''
683  for name, value in d.iteritems():
684  result += value.dumpPythonAs(name,options)+'\n'
return result
def _dumpPython
Definition: Config.py:680
def Config.Process._dumpPythonList (   self,
  d,
  options 
)
private

Definition at line 631 of file Config.py.

Referenced by Config.Process.dumpPython().

632  def _dumpPythonList(self, d, options):
633  returnValue = ''
634  if isinstance(d, DictTypes.SortedKeysDict):
635  for name,item in d.items():
636  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
637  else:
638  for name,item in sorted(d.items()):
639  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
return returnValue
def _dumpPythonList
Definition: Config.py:631
def Config.Process._findPreferred (   self,
  esname,
  d,
  args,
  kargs 
)
private

Definition at line 919 of file Config.py.

References python.Node.Node.__setattr__(), Config.Process.__setattr__(), and Config.FilteredStream.__setattr__.

920  def _findPreferred(self, esname, d,*args,**kargs):
921  # is esname a name in the dictionary?
922  if esname in d:
923  typ = d[esname].type_()
924  if typ == esname:
925  self.__setattr__( esname+"_prefer", ESPrefer(typ,*args,**kargs) )
926  else:
927  self.__setattr__( esname+"_prefer", ESPrefer(typ, esname,*args,**kargs) )
928  return True
929  else:
930  # maybe it's an unnamed ESModule?
931  found = False
932  for name, value in d.iteritems():
933  if value.type_() == esname:
934  if found:
935  raise RuntimeError("More than one ES module for "+esname)
936  found = True
937  self.__setattr__(esname+"_prefer", ESPrefer(d[esname].type_()) )
938  return found
def _findPreferred
Definition: Config.py:919
def __setattr__
Definition: Config.py:295
def Config.Process._insertInto (   self,
  parameterSet,
  itemDict 
)
private

Definition at line 729 of file Config.py.

730  def _insertInto(self, parameterSet, itemDict):
731  for name,value in itemDict.iteritems():
value.insertInto(parameterSet, name)
def _insertInto
Definition: Config.py:729
def Config.Process._insertManyInto (   self,
  parameterSet,
  label,
  itemDict,
  tracked 
)
private

Definition at line 739 of file Config.py.

740  def _insertManyInto(self, parameterSet, label, itemDict, tracked):
741  l = []
742  for name,value in itemDict.iteritems():
743  newLabel = value.nameInProcessDesc_(name)
744  l.append(newLabel)
745  value.insertInto(parameterSet, name)
746  # alphabetical order is easier to compare with old language
747  l.sort()
parameterSet.addVString(tracked, label, l)
def _insertManyInto
Definition: Config.py:739
def Config.Process._insertOneInto (   self,
  parameterSet,
  label,
  item,
  tracked 
)
private

Definition at line 732 of file Config.py.

733  def _insertOneInto(self, parameterSet, label, item, tracked):
734  vitems = []
735  if not item == None:
736  newlabel = item.nameInProcessDesc_(label)
737  vitems = [newlabel]
738  item.insertInto(parameterSet, newlabel)
parameterSet.addVString(tracked, label, vitems)
def _insertOneInto
Definition: Config.py:732
def Config.Process._insertPaths (   self,
  processPSet 
)
private

Definition at line 748 of file Config.py.

References Config.Process.endpaths_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, Config.Process.schedule_(), edm::SubProcess.schedule_, edm::EventProcessor.schedule_, and cmsPerfHarvest.visit().

749  def _insertPaths(self, processPSet):
750  scheduledPaths = []
751  triggerPaths = []
752  endpaths = []
753  if self.schedule_() == None:
754  # make one from triggerpaths & endpaths
755  for name,value in self.paths_().iteritems():
756  scheduledPaths.append(name)
757  triggerPaths.append(name)
758  for name,value in self.endpaths_().iteritems():
759  scheduledPaths.append(name)
760  endpaths.append(name)
761  else:
762  for path in self.schedule_():
763  pathname = path.label_()
764  scheduledPaths.append(pathname)
765  if self.endpaths_().has_key(pathname):
766  endpaths.append(pathname)
767  else:
768  triggerPaths.append(pathname)
769  processPSet.addVString(True, "@end_paths", endpaths)
770  processPSet.addVString(True, "@paths", scheduledPaths)
771  # trigger_paths are a little different
772  p = processPSet.newPSet()
773  p.addVString(True, "@trigger_paths", triggerPaths)
774  processPSet.addPSet(True, "@trigger_paths", p)
775  # add all these paths
776  pathValidator = PathValidator()
777  endpathValidator = EndPathValidator()
778  for triggername in triggerPaths:
779  #self.paths_()[triggername].insertInto(processPSet, triggername, self.sequences_())
780  pathValidator.setLabel(triggername)
781  self.paths_()[triggername].visit(pathValidator)
782  self.paths_()[triggername].insertInto(processPSet, triggername, self.__dict__)
783  for endpathname in endpaths:
784  #self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.sequences_())
785  endpathValidator.setLabel(endpathname)
786  self.endpaths_()[endpathname].visit(endpathValidator)
787  self.endpaths_()[endpathname].insertInto(processPSet, endpathname, self.__dict__)
788  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
def _insertPaths
Definition: Config.py:748
def visit
Retrieve data from a perf suite output (sub) directory, only examines TimeSize at the moment...
def schedule_
Definition: Config.py:219
def endpaths_
Definition: Config.py:211
def Config.Process._okToPlace (   self,
  name,
  mod,
  d 
)
private

Definition at line 419 of file Config.py.

References Config.Process.__isStrict.

Referenced by Config.Process.__setattr__(), and Config.Process._place().

420  def _okToPlace(self, name, mod, d):
421  if not self.__InExtendCall:
422  # if going
423  return True
424  elif not self.__isStrict:
425  return True
426  elif name in d:
427  # if there's an old copy, and the new one
428  # hasn't been modified, we're done. Still
429  # not quite safe if something has been defined twice.
430  # Need to add checks
431  if mod._isModified:
432  if d[name]._isModified:
433  return False
434  else:
435  return True
436  else:
437  return True
438  else:
439  return True
def _okToPlace
Definition: Config.py:419
def Config.Process._place (   self,
  name,
  mod,
  d 
)
private

Definition at line 440 of file Config.py.

References Config.Process.__isStrict, Config.Process.__setObjectLabel(), and Config.Process._okToPlace().

Referenced by Config.Process._placeAlias(), Config.Process._placeAnalyzer(), Config.Process._placeEndPath(), Config.Process._placeESPrefer(), Config.Process._placeESProducer(), Config.Process._placeESSource(), Config.Process._placeFilter(), Config.Process._placeOutputModule(), Config.Process._placePath(), Config.Process._placeProducer(), Config.Process._placePSet(), Config.Process._placeSequence(), Config.Process._placeService(), Config.Process._placeVPSet(), and Config.Process.setPartialSchedule_().

441  def _place(self, name, mod, d):
442  if self._okToPlace(name, mod, d):
443  if self.__isStrict and isinstance(mod, _ModuleSequenceType):
444  d[name] = mod._postProcessFixup(self._cloneToObjectDict)
445  else:
446  d[name] = mod
447  if isinstance(mod,_Labelable):
self.__setObjectLabel(mod, name)
def __setObjectLabel
Definition: Config.py:268
def _okToPlace
Definition: Config.py:419
def Config.Process._placeAlias (   self,
  name,
  mod 
)
private

Definition at line 479 of file Config.py.

References Config.Process._place().

480  def _placeAlias(self,name,mod):
self._place(name, mod, self.__aliases)
def _placeAlias
Definition: Config.py:479
def Config.Process._placeAnalyzer (   self,
  name,
  mod 
)
private

Definition at line 454 of file Config.py.

References Config.Process._place().

455  def _placeAnalyzer(self,name,mod):
self._place(name, mod, self.__analyzers)
def _placeAnalyzer
Definition: Config.py:454
def Config.Process._placeEndPath (   self,
  name,
  mod 
)
private

Definition at line 463 of file Config.py.

References Config.Process._place(), Config.Process._validateSequence(), and ExceptionHandling.format_outerframe().

464  def _placeEndPath(self,name,mod):
465  self._validateSequence(mod, name)
466  try:
467  self._place(name, mod, self.__endpaths)
468  except ModuleCloneError, msg:
469  context = format_outerframe(4)
raise Exception("%sThe module %s in endpath %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence
Definition: Config.py:640
def _placeEndPath
Definition: Config.py:463
def Config.Process._placeESPrefer (   self,
  name,
  mod 
)
private

Definition at line 475 of file Config.py.

References Config.Process._place().

476  def _placeESPrefer(self,name,mod):
self._place(name, mod, self.__esprefers)
def _placeESPrefer
Definition: Config.py:475
def Config.Process._placeESProducer (   self,
  name,
  mod 
)
private

Definition at line 473 of file Config.py.

References Config.Process._place().

474  def _placeESProducer(self,name,mod):
self._place(name, mod, self.__esproducers)
def _placeESProducer
Definition: Config.py:473
def Config.Process._placeESSource (   self,
  name,
  mod 
)
private

Definition at line 477 of file Config.py.

References Config.Process._place().

478  def _placeESSource(self,name,mod):
self._place(name, mod, self.__essources)
def _placeESSource
Definition: Config.py:477
def Config.Process._placeFilter (   self,
  name,
  mod 
)
private

Definition at line 452 of file Config.py.

References Config.Process._place().

453  def _placeFilter(self,name,mod):
self._place(name, mod, self.__filters)
def _placeFilter
Definition: Config.py:452
def Config.Process._placeLooper (   self,
  name,
  mod 
)
private

Definition at line 493 of file Config.py.

Referenced by Config.Process.setLooper_().

494  def _placeLooper(self,name,mod):
495  if name != 'looper':
496  raise ValueError("The label '"+name+"' can not be used for a Looper. Only 'looper' is allowed.")
497  self.__dict__['_Process__looper'] = mod
self.__dict__[mod.type_()] = mod
def _placeLooper
Definition: Config.py:493
def Config.Process._placeOutputModule (   self,
  name,
  mod 
)
private

Definition at line 448 of file Config.py.

References Config.Process._place().

449  def _placeOutputModule(self,name,mod):
self._place(name, mod, self.__outputmodules)
def _placeOutputModule
Definition: Config.py:448
def Config.Process._placePath (   self,
  name,
  mod 
)
private

Definition at line 456 of file Config.py.

References Config.Process._place(), Config.Process._validateSequence(), and ExceptionHandling.format_outerframe().

457  def _placePath(self,name,mod):
458  self._validateSequence(mod, name)
459  try:
460  self._place(name, mod, self.__paths)
461  except ModuleCloneError, msg:
462  context = format_outerframe(4)
raise Exception("%sThe module %s in path %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence
Definition: Config.py:640
def _placePath
Definition: Config.py:456
def Config.Process._placeProducer (   self,
  name,
  mod 
)
private

Definition at line 450 of file Config.py.

References Config.Process._place().

451  def _placeProducer(self,name,mod):
self._place(name, mod, self.__producers)
def _placeProducer
Definition: Config.py:450
def Config.Process._placePSet (   self,
  name,
  mod 
)
private

Definition at line 481 of file Config.py.

References Config.Process._place().

482  def _placePSet(self,name,mod):
self._place(name, mod, self.__psets)
def _placePSet
Definition: Config.py:481
def Config.Process._placeSequence (   self,
  name,
  mod 
)
private

Definition at line 470 of file Config.py.

References Config.Process._place(), and Config.Process._validateSequence().

471  def _placeSequence(self,name,mod):
472  self._validateSequence(mod, name)
self._place(name, mod, self.__sequences)
def _validateSequence
Definition: Config.py:640
def _placeSequence
Definition: Config.py:470
def Config.Process._placeService (   self,
  typeName,
  mod 
)
private

Definition at line 503 of file Config.py.

References Config.Process._place().

504  def _placeService(self,typeName,mod):
505  self._place(typeName, mod, self.__services)
self.__dict__[typeName]=mod
def _placeService
Definition: Config.py:503
def Config.Process._placeSource (   self,
  name,
  mod 
)
private
Allow the source to be referenced by 'source' or by type name

Definition at line 485 of file Config.py.

Referenced by Config.Process.setSource_().

486  def _placeSource(self,name,mod):
487  """Allow the source to be referenced by 'source' or by type name"""
488  if name != 'source':
489  raise ValueError("The label '"+name+"' can not be used for a Source. Only 'source' is allowed.")
490  if self.__dict__['_Process__source'] is not None :
491  del self.__dict__[self.__dict__['_Process__source'].type_()]
492  self.__dict__['_Process__source'] = mod
self.__dict__[mod.type_()] = mod
def _placeSource
Definition: Config.py:485
def Config.Process._placeSubProcess (   self,
  name,
  mod 
)
private

Definition at line 498 of file Config.py.

Referenced by Config.Process.setSubProcess_().

499  def _placeSubProcess(self,name,mod):
500  if name != 'subProcess':
501  raise ValueError("The label '"+name+"' can not be used for a SubProcess. Only 'subProcess' is allowed.")
502  self.__dict__['_Process__subProcess'] = mod
self.__dict__[mod.type_()] = mod
def _placeSubProcess
Definition: Config.py:498
def Config.Process._placeVPSet (   self,
  name,
  mod 
)
private

Definition at line 483 of file Config.py.

References Config.Process._place().

484  def _placeVPSet(self,name,mod):
self._place(name, mod, self.__vpsets)
def _placeVPSet
Definition: Config.py:483
def Config.Process._pruneModules (   self,
  d,
  scheduledNames 
)
private

Definition at line 842 of file Config.py.

Referenced by Config.Process.prune().

843  def _pruneModules(self, d, scheduledNames):
844  moduleNames = set(d.keys())
845  junk = moduleNames - scheduledNames
846  for name in junk:
847  delattr(self, name)
848  return junk
def _pruneModules
Definition: Config.py:842
def Config.Process._replaceInSequences (   self,
  label,
  new 
)
private

Definition at line 714 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.globalReplace().

715  def _replaceInSequences(self, label, new):
716  old = getattr(self,label)
717  #TODO - replace by iterator concatenation
718  for sequenceable in self.sequences.itervalues():
719  sequenceable.replace(old,new)
720  for sequenceable in self.paths.itervalues():
721  sequenceable.replace(old,new)
722  for sequenceable in self.endpaths.itervalues():
sequenceable.replace(old,new)
def _replaceInSequences
Definition: Config.py:714
def Config.Process._sequencesInDependencyOrder (   self)
private

Definition at line 648 of file Config.py.

References python.multivaluedict.dict, join(), and Config.Process.sequences.

Referenced by Config.Process.dumpPython().

649  def _sequencesInDependencyOrder(self):
650  #for each sequence, see what other sequences it depends upon
651  returnValue=DictTypes.SortedKeysDict()
652  dependencies = {}
653  for label,seq in self.sequences.iteritems():
654  d = []
655  v = SequenceVisitor(d)
656  seq.visit(v)
657  dependencies[label]=[dep.label_() for dep in d if dep.hasLabel_()]
658  resolvedDependencies=True
659  #keep looping until we can no longer get rid of all dependencies
660  # if that happens it means we have circular dependencies
661  iterCount = 0
662  while resolvedDependencies:
663  iterCount += 1
664  resolvedDependencies = (0 != len(dependencies))
665  oldDeps = dict(dependencies)
666  for label,deps in oldDeps.iteritems():
667  # don't try too hard
668  if len(deps)==0 or iterCount > 100:
669  iterCount = 0
670  resolvedDependencies=True
671  returnValue[label]=self.sequences[label]
672  #remove this as a dependency for all other sequences
673  del dependencies[label]
674  for lb2,deps2 in dependencies.iteritems():
675  while deps2.count(label):
676  deps2.remove(label)
677  if len(dependencies):
678  raise RuntimeError("circular sequence dependency discovered \n"+
679  ",".join([label for label,junk in dependencies.iteritems()]))
return returnValue
def _sequencesInDependencyOrder
Definition: Config.py:648
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def Config.Process._validateSequence (   self,
  sequence,
  label 
)
private

Definition at line 640 of file Config.py.

Referenced by Config.Process._placeEndPath(), Config.Process._placePath(), and Config.Process._placeSequence().

641  def _validateSequence(self, sequence, label):
642  # See if every module has been inserted into the process
643  try:
644  l = set()
645  nameVisitor = NodeNameVisitor(l)
646  sequence.visit(nameVisitor)
647  except:
raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence
Definition: Config.py:640
def Config.Process.add_ (   self,
  value 
)
Allows addition of components which do not have to have a label, e.g. Services

Definition at line 404 of file Config.py.

References Config.Process.__isStrict.

Referenced by Config.Process.__setattr__(), and Config.Process.extend().

405  def add_(self,value):
406  """Allows addition of components which do not have to have a label, e.g. Services"""
407  if not isinstance(value,_ConfigureComponent):
408  raise TypeError
409  if not isinstance(value,_Unlabelable):
410  raise TypeError
411  #clone the item
412  #clone the item
413  if self.__isStrict:
414  newValue =value.copy()
415  value.setIsFrozen()
416  else:
417  newValue =value
418  newValue._place('',self)
def Config.Process.aliases_ (   self)
returns a dict of the aliases that have been added to the Process

Definition at line 255 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

256  def aliases_(self):
257  """returns a dict of the aliases that have been added to the Process"""
return DictTypes.FixedKeysDict(self.__aliases)
def aliases_
Definition: Config.py:255
def Config.Process.analyzerNames (   self)
Returns a string containing all the EDAnalyzer labels separated by a blank

Definition at line 139 of file Config.py.

References HLTMuonValidator.analyzers_, HLTMuonOfflineAnalyzer.analyzers_, Config.Process.analyzers_(), join(), and relativeConstraints.keys.

140  def analyzerNames(self):
141  """Returns a string containing all the EDAnalyzer labels separated by a blank"""
return ' '.join(self.analyzers_().keys())
def analyzers_
Definition: Config.py:199
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def analyzerNames
Definition: Config.py:139
def Config.Process.analyzers_ (   self)
returns a dict of the analyzers which have been added to the Process

Definition at line 199 of file Config.py.

Referenced by Config.Process.analyzerNames(), Config.Process.dumpConfig(), Config.Process.dumpPython(), and Config.Process.prune().

200  def analyzers_(self):
201  """returns a dict of the analyzers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__analyzers)
def analyzers_
Definition: Config.py:199
def Config.Process.dumpConfig (   self,
  options = PrintOptions() 
)
return a string containing the equivalent process defined using the old configuration language

Definition at line 565 of file Config.py.

References dataset.Dataset.__name, Config.Process._dumpConfigESPrefers(), Config.Process._dumpConfigNamedList(), Config.Process._dumpConfigOptionallyNamedList(), Config.Process._dumpConfigUnnamedList(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, HLTMuonOfflineAnalyzer.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, FourVectorHLTOnline::PathInfo.filters_, FourVectorHLTOffline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.schedule, Config.Process.sequences_(), edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DQWorkerClient.source_(), jsoncollector::DataPoint.source_, SiStripFedCablingBuilderFromDb.source_, sistrip::SpyEventMatcher.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, Config.Process.subProcess_(), edm::SubProcess.subProcess_, and edm::EventProcessor.subProcess_.

Referenced by Types.SecSource.configValue().

566  def dumpConfig(self, options=PrintOptions()):
567  """return a string containing the equivalent process defined using the old configuration language"""
568  config = "process "+self.__name+" = {\n"
569  options.indent()
570  if self.source_():
571  config += options.indentation()+"source = "+self.source_().dumpConfig(options)
572  if self.looper_():
573  config += options.indentation()+"looper = "+self.looper_().dumpConfig(options)
574  if self.subProcess_():
575  config += options.indentation()+"subProcess = "+self.subProcess_().dumpConfig(options)
576 
577  config+=self._dumpConfigNamedList(self.producers_().iteritems(),
578  'module',
579  options)
580  config+=self._dumpConfigNamedList(self.filters_().iteritems(),
581  'module',
582  options)
583  config+=self._dumpConfigNamedList(self.analyzers_().iteritems(),
584  'module',
585  options)
586  config+=self._dumpConfigNamedList(self.outputModules_().iteritems(),
587  'module',
588  options)
589  config+=self._dumpConfigNamedList(self.sequences_().iteritems(),
590  'sequence',
591  options)
592  config+=self._dumpConfigNamedList(self.paths_().iteritems(),
593  'path',
594  options)
595  config+=self._dumpConfigNamedList(self.endpaths_().iteritems(),
596  'endpath',
597  options)
598  config+=self._dumpConfigUnnamedList(self.services_().iteritems(),
599  'service',
600  options)
601  config+=self._dumpConfigNamedList(self.aliases_().iteritems(),
602  'alias',
603  options)
604  config+=self._dumpConfigOptionallyNamedList(
605  self.es_producers_().iteritems(),
606  'es_module',
607  options)
608  config+=self._dumpConfigOptionallyNamedList(
609  self.es_sources_().iteritems(),
610  'es_source',
611  options)
612  config += self._dumpConfigESPrefers(options)
613  for name,item in self.psets.iteritems():
614  config +=options.indentation()+item.configTypeName()+' '+name+' = '+item.configValue(options)
615  for name,item in self.vpsets.iteritems():
616  config +=options.indentation()+'VPSet '+name+' = '+item.configValue(options)
617  if self.schedule:
618  pathNames = [p.label_() for p in self.schedule]
619  config +=options.indentation()+'schedule = {'+','.join(pathNames)+'}\n'
620 
621 # config+=self._dumpConfigNamedList(self.vpsets.iteritems(),
622 # 'VPSet',
623 # options)
624  config += "}\n"
625  options.unindent()
return config
def es_sources_
Definition: Config.py:247
def subProcess_
Definition: Config.py:193
def _dumpConfigUnnamedList
Definition: Config.py:553
def es_producers_
Definition: Config.py:243
def aliases_
Definition: Config.py:255
def _dumpConfigESPrefers
Definition: Config.py:626
def _dumpConfigOptionallyNamedList
Definition: Config.py:558
def filters_
Definition: Config.py:166
def outputModules_
Definition: Config.py:203
def producers_
Definition: Config.py:177
def analyzers_
Definition: Config.py:199
def dumpConfig
Definition: Config.py:565
def services_
Definition: Config.py:239
def sequences_
Definition: Config.py:215
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _dumpConfigNamedList
Definition: Config.py:548
def endpaths_
Definition: Config.py:211
def Config.Process.dumpPython (   self,
  options = PrintOptions() 
)
return a string containing the equivalent process defined using python

Definition at line 685 of file Config.py.

References dataset.Dataset.__name, Config.Process._dumpPython(), Config.Process._dumpPythonList(), Config.Process._sequencesInDependencyOrder(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, HLTMuonOfflineAnalyzer.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), Config.Process.es_prefers_(), Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, FourVectorHLTOnline::PathInfo.filters_, FourVectorHLTOffline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), pf2pat::EventHypothesis.producers_, Config.Process.producers_(), CmsswTask.CmsswTask.psets, Config.Process.psets, Config.Process.schedule, edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DQWorkerClient.source_(), jsoncollector::DataPoint.source_, SiStripFedCablingBuilderFromDb.source_, sistrip::SpyEventMatcher.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, Config.Process.subProcess_(), edm::SubProcess.subProcess_, edm::EventProcessor.subProcess_, and Config.Process.vpsets.

Referenced by Mixins._Parameterizable.__addParameter(), Mixins._ParameterTypeBase.__repr__(), Mixins._Parameterizable.__repr__(), Mixins._ValidatingParameterListBase.__repr__(), Types.VPSet.__repr__(), and Mixins._Parameterizable.__setattr__().

686  def dumpPython(self, options=PrintOptions()):
687  """return a string containing the equivalent process defined using python"""
688  result = "import FWCore.ParameterSet.Config as cms\n\n"
689  result += "process = cms.Process(\""+self.__name+"\")\n\n"
690  if self.source_():
691  result += "process.source = "+self.source_().dumpPython(options)
692  if self.looper_():
693  result += "process.looper = "+self.looper_().dumpPython()
694  if self.subProcess_():
695  result += self.subProcess_().dumpPython(options)
696  result+=self._dumpPythonList(self.producers_(), options)
697  result+=self._dumpPythonList(self.filters_() , options)
698  result+=self._dumpPythonList(self.analyzers_(), options)
699  result+=self._dumpPythonList(self.outputModules_(), options)
700  result+=self._dumpPythonList(self._sequencesInDependencyOrder(), options)
701  result+=self._dumpPythonList(self.paths_(), options)
702  result+=self._dumpPythonList(self.endpaths_(), options)
703  result+=self._dumpPythonList(self.services_(), options)
704  result+=self._dumpPythonList(self.es_producers_(), options)
705  result+=self._dumpPythonList(self.es_sources_(), options)
706  result+=self._dumpPython(self.es_prefers_(), options)
707  result+=self._dumpPythonList(self.aliases_(), options)
708  result+=self._dumpPythonList(self.psets, options)
709  result+=self._dumpPythonList(self.vpsets, options)
710  if self.schedule:
711  pathNames = ['process.'+p.label_() for p in self.schedule]
712  result +='process.schedule = cms.Schedule(*[ ' + ', '.join(pathNames) + ' ])\n'
713 
return result
def es_sources_
Definition: Config.py:247
def subProcess_
Definition: Config.py:193
def es_producers_
Definition: Config.py:243
def aliases_
Definition: Config.py:255
def filters_
Definition: Config.py:166
def dumpPython
Definition: Config.py:685
def es_prefers_
Definition: Config.py:251
def _sequencesInDependencyOrder
Definition: Config.py:648
def outputModules_
Definition: Config.py:203
def producers_
Definition: Config.py:177
def analyzers_
Definition: Config.py:199
def services_
Definition: Config.py:239
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _dumpPythonList
Definition: Config.py:631
def _dumpPython
Definition: Config.py:680
def endpaths_
Definition: Config.py:211
def Config.Process.endpaths_ (   self)
returns a dict of the endpaths which have been added to the Process

Definition at line 211 of file Config.py.

Referenced by Config.Process._insertPaths(), Config.Process.dumpConfig(), and Config.Process.dumpPython().

212  def endpaths_(self):
213  """returns a dict of the endpaths which have been added to the Process"""
return DictTypes.SortedAndFixedKeysDict(self.__endpaths)
def endpaths_
Definition: Config.py:211
def Config.Process.es_prefers_ (   self)
returns a dict of the es_prefers which have been added to the Process

Definition at line 251 of file Config.py.

Referenced by Config.Process._dumpConfigESPrefers(), and Config.Process.dumpPython().

252  def es_prefers_(self):
253  """returns a dict of the es_prefers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esprefers)
def es_prefers_
Definition: Config.py:251
def Config.Process.es_producers_ (   self)
returns a dict of the esproducers which have been added to the Process

Definition at line 243 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

244  def es_producers_(self):
245  """returns a dict of the esproducers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__esproducers)
def es_producers_
Definition: Config.py:243
def Config.Process.es_sources_ (   self)
returns a the es_sources which have been added to the Process

Definition at line 247 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

248  def es_sources_(self):
249  """returns a the es_sources which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__essources)
def es_sources_
Definition: Config.py:247
def Config.Process.extend (   self,
  other,
  items = () 
)
Look in other and find types which we can use

Definition at line 510 of file Config.py.

References python.Node.Node.__setattr__(), Config.Process.__setattr__(), Config.FilteredStream.__setattr__, Config.Process.__setObjectLabel(), Config.Process.add_(), python.multivaluedict.dict, and dir.

Referenced by relval_steps.WF.__init__(), Config.Process.load(), and Mixins._ValidatingParameterListBase.setValue().

511  def extend(self,other,items=()):
512  """Look in other and find types which we can use"""
513  # enable explicit check to avoid overwriting of existing objects
514  self.__dict__['_Process__InExtendCall'] = True
515 
516  seqs = dict()
517  for name in dir(other):
518  #'from XX import *' ignores these, and so should we.
519  if name.startswith('_'):
520  continue
521  item = getattr(other,name)
522  if name == "source" or name == "looper" or name == "subProcess":
523  self.__setattr__(name,item)
524  elif isinstance(item,_ModuleSequenceType):
525  seqs[name]=item
526  elif isinstance(item,_Labelable):
527  self.__setattr__(name,item)
528  if not item.hasLabel_() :
529  item.setLabel(name)
530  elif isinstance(item,Schedule):
531  self.__setattr__(name,item)
532  elif isinstance(item,_Unlabelable):
533  self.add_(item)
534 
535  #now create a sequence which uses the newly made items
536  for name in seqs.iterkeys():
537  seq = seqs[name]
538  #newSeq = seq.copy()
539  #
540  if id(seq) not in self._cloneToObjectDict:
541  self.__setattr__(name,seq)
542  else:
543  newSeq = self._cloneToObjectDict[id(seq)]
544  self.__dict__[name]=newSeq
545  self.__setObjectLabel(newSeq, name)
546  #now put in proper bucket
547  newSeq._place(name,self)
self.__dict__['_Process__InExtendCall'] = False
def __setObjectLabel
Definition: Config.py:268
def __setattr__
Definition: Config.py:295
dbl *** dir
Definition: mlp_gen.cc:35
def Config.Process.fillProcessDesc (   self,
  processPSet 
)
Used by the framework to convert python to C++ objects

Definition at line 849 of file Config.py.

References Config.Process.__init__(), and dbtoconf.object.

850  def fillProcessDesc(self, processPSet):
851  """Used by the framework to convert python to C++ objects"""
852  class ServiceInjectorAdaptor(object):
853  def __init__(self,ppset,thelist):
854  self.__thelist = thelist
855  self.__processPSet = ppset
856  def addService(self,pset):
857  self.__thelist.append(pset)
858  def newPSet(self):
859  return self.__processPSet.newPSet()
860  self.validate()
861  processPSet.addString(True, "@process_name", self.name_())
862  all_modules = self.producers_().copy()
863  all_modules.update(self.filters_())
864  all_modules.update(self.analyzers_())
865  all_modules.update(self.outputModules_())
866  self._insertInto(processPSet, self.psets_())
867  self._insertInto(processPSet, self.vpsets_())
868  self._insertManyInto(processPSet, "@all_modules", all_modules, True)
869  self._insertOneInto(processPSet, "@all_sources", self.source_(), True)
870  self._insertOneInto(processPSet, "@all_loopers", self.looper_(), True)
871  self._insertOneInto(processPSet, "@all_subprocesses", self.subProcess_(), False)
872  self._insertManyInto(processPSet, "@all_esmodules", self.es_producers_(), True)
873  self._insertManyInto(processPSet, "@all_essources", self.es_sources_(), True)
874  self._insertManyInto(processPSet, "@all_esprefers", self.es_prefers_(), True)
875  self._insertManyInto(processPSet, "@all_aliases", self.aliases_(), True)
876  self._insertPaths(processPSet)
877  #handle services differently
878  services = []
879  for n in self.services_():
880  getattr(self,n).insertInto(ServiceInjectorAdaptor(processPSet,services))
881  processPSet.addVPSet(False,"services",services)
882  return processPSet
def es_sources_
Definition: Config.py:247
def subProcess_
Definition: Config.py:193
def _insertManyInto
Definition: Config.py:739
def es_producers_
Definition: Config.py:243
def aliases_
Definition: Config.py:255
def filters_
Definition: Config.py:166
def es_prefers_
Definition: Config.py:251
def _insertPaths
Definition: Config.py:748
def outputModules_
Definition: Config.py:203
def producers_
Definition: Config.py:177
def fillProcessDesc
Definition: Config.py:849
def __init__
Definition: Config.py:102
def _insertInto
Definition: Config.py:729
def analyzers_
Definition: Config.py:199
def services_
Definition: Config.py:239
def validate
Definition: Config.py:883
def _insertOneInto
Definition: Config.py:732
list object
Definition: dbtoconf.py:77
def Config.Process.filterNames (   self)
Returns a string containing all the EDFilter labels separated by a blank

Definition at line 142 of file Config.py.

References pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, FourVectorHLTOnline::PathInfo.filters_, FourVectorHLTOffline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), and relativeConstraints.keys.

143  def filterNames(self):
144  """Returns a string containing all the EDFilter labels separated by a blank"""
return ' '.join(self.filters_().keys())
def filterNames
Definition: Config.py:142
def filters_
Definition: Config.py:166
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def Config.Process.filters_ (   self)
returns a dict of the filters which have been added to the Process

Definition at line 166 of file Config.py.

Referenced by Config.Process.dumpConfig(), Config.Process.dumpPython(), Config.Process.filterNames(), and Config.Process.prune().

167  def filters_(self):
168  """returns a dict of the filters which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__filters)
def filters_
Definition: Config.py:166
def Config.Process.globalReplace (   self,
  label,
  new 
)
Replace the item with label 'label' by object 'new' in the process and all sequences/paths

Definition at line 723 of file Config.py.

References Config.Process._replaceInSequences().

724  def globalReplace(self,label,new):
725  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths"""
726  if not hasattr(self,label):
727  raise LookupError("process has no item of label "+label)
728  self._replaceInSequences(label, new)
setattr(self,label,new)
def _replaceInSequences
Definition: Config.py:714
def globalReplace
Definition: Config.py:723
def Config.Process.load (   self,
  moduleName 
)

Definition at line 506 of file Config.py.

References ora::ContainerSchema.extend(), python.seqvaluedict.seqdict.extend(), svgfig.SVG.extend(), and Config.Process.extend().

507  def load(self, moduleName):
508  moduleName = moduleName.replace("/",".")
509  module = __import__(moduleName)
self.extend(sys.modules[moduleName])
def Config.Process.looper_ (   self)
returns the looper which has been added to the Process or None if none have been added

Definition at line 187 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

188  def looper_(self):
189  """returns the looper which has been added to the Process or None if none have been added"""
return self.__looper
def Config.Process.name_ (   self)

Definition at line 170 of file Config.py.

References dataset.Dataset.__name.

171  def name_(self):
return self.__name
def Config.Process.outputModules_ (   self)
returns a dict of the output modules which have been added to the Process

Definition at line 203 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

204  def outputModules_(self):
205  """returns a dict of the output modules which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__outputmodules)
def outputModules_
Definition: Config.py:203
def Config.Process.pathNames (   self)
Returns a string containing all the Path names separated by a blank

Definition at line 145 of file Config.py.

References join(), relativeConstraints.keys, edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, GraphPath< N, E >.paths_, pat::TriggerEvent.paths_, edm::EventSelector.paths_, HLTPerformanceInfo.paths_, and Config.Process.paths_().

146  def pathNames(self):
147  """Returns a string containing all the Path names separated by a blank"""
148  return ' '.join(self.paths_().keys())
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def pathNames
Definition: Config.py:145
def Config.Process.paths_ (   self)
returns a dict of the paths which have been added to the Process

Definition at line 207 of file Config.py.

Referenced by Config.Process._insertPaths(), Config.Process.dumpConfig(), Config.Process.dumpPython(), and Config.Process.pathNames().

208  def paths_(self):
209  """returns a dict of the paths which have been added to the Process"""
return DictTypes.SortedAndFixedKeysDict(self.__paths)
def Config.Process.prefer (   self,
  esmodule,
  args,
  kargs 
)
Prefer this ES source or producer.  The argument can
   either be an object label, e.g.,
     process.prefer(process.juicerProducer) (not supported yet)
   or a name of an ESSource or ESProducer
     process.prefer("juicer")
   or a type of unnamed ESSource or ESProducer
     process.prefer("JuicerProducer")
   In addition, you can pass as a labelled arguments the name of the Record you wish to
   prefer where the type passed is a cms.vstring and that vstring can contain the
   name of the C++ types in the Record which are being preferred, e.g.,
      #prefer all data in record 'OrangeRecord' from 'juicer'
      process.prefer("juicer", OrangeRecord=cms.vstring())
   or
      #prefer only "Orange" data in "OrangeRecord" from "juicer"
      process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
   or
      #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
      ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))

Definition at line 890 of file Config.py.

891  def prefer(self, esmodule,*args,**kargs):
892  """Prefer this ES source or producer. The argument can
893  either be an object label, e.g.,
894  process.prefer(process.juicerProducer) (not supported yet)
895  or a name of an ESSource or ESProducer
896  process.prefer("juicer")
897  or a type of unnamed ESSource or ESProducer
898  process.prefer("JuicerProducer")
899  In addition, you can pass as a labelled arguments the name of the Record you wish to
900  prefer where the type passed is a cms.vstring and that vstring can contain the
901  name of the C++ types in the Record which are being preferred, e.g.,
902  #prefer all data in record 'OrangeRecord' from 'juicer'
903  process.prefer("juicer", OrangeRecord=cms.vstring())
904  or
905  #prefer only "Orange" data in "OrangeRecord" from "juicer"
906  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
907  or
908  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
909  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
910  """
911  # see if this refers to a named ESProducer
912  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
913  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
914  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
915  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
916  pass
917  else:
918  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
def es_sources_
Definition: Config.py:247
def _findPreferred
Definition: Config.py:919
def es_producers_
Definition: Config.py:243
def Config.Process.producerNames (   self)
Returns a string containing all the EDProducer labels separated by a blank

Definition at line 136 of file Config.py.

References join(), relativeConstraints.keys, pf2pat::EventHypothesis.producers_, and Config.Process.producers_().

137  def producerNames(self):
138  """Returns a string containing all the EDProducer labels separated by a blank"""
return ' '.join(self.producers_().keys())
def producers_
Definition: Config.py:177
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def producerNames
Definition: Config.py:136
def Config.Process.producers_ (   self)
returns a dict of the producers which have been added to the Process

Definition at line 177 of file Config.py.

Referenced by Config.Process.dumpConfig(), Config.Process.dumpPython(), Config.Process.producerNames(), and Config.Process.prune().

178  def producers_(self):
179  """returns a dict of the producers which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__producers)
def producers_
Definition: Config.py:177
def Config.Process.prune (   self,
  verbose = False 
)
Remove clutter from the process which we think is unnecessary:
tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
not in the schedule will also be removed, along with an modules and sequences used only by
those removed Paths and EndPaths.

Definition at line 789 of file Config.py.

References Config.Process._pruneModules(), HLTMuonValidator.analyzers_, HLTMuonOfflineAnalyzer.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths, pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, FilterOR.filters_, Config.Process.filters_(), Selection< C, Selector, StoreContainer >.filters_, Selections.filters_, FourVectorHLTOnline::PathInfo.filters_, FourVectorHLTOffline::PathInfo.filters_, TrigResRateMon::PathInfo.filters_, join(), list(), Config.Process.paths, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.psets_(), edm::ModuleChanger.schedule_, EcalDQMonitorTask.schedule_, edm::ScheduleInfo.schedule_, Config.Process.schedule_(), edm::SubProcess.schedule_, edm::EventProcessor.schedule_, and Config.Process.vpsets_().

Referenced by dirstructure.Directory.prune().

790  def prune(self,verbose=False):
791  """ Remove clutter from the process which we think is unnecessary:
792  tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
793  not in the schedule will also be removed, along with an modules and sequences used only by
794  those removed Paths and EndPaths."""
795  for name in self.psets_():
796  if getattr(self,name).isTracked():
797  delattr(self, name)
798  for name in self.vpsets_():
799  delattr(self, name)
800  #first we need to resolve any SequencePlaceholders being used
801  for x in self.paths.itervalues():
802  x.resolve(self.__dict__)
803  for x in self.endpaths.itervalues():
804  x.resolve(self.__dict__)
805  usedModules = set()
806  unneededPaths = set()
807  if self.schedule_():
808  usedModules=set(self.schedule_().moduleNames())
809  #get rid of unused paths
810  schedNames = set(( x.label_() for x in self.schedule_()))
811  names = set(self.paths)
812  names.update(set(self.endpaths))
813  unneededPaths = names - schedNames
814  for n in unneededPaths:
815  delattr(self,n)
816  else:
817  pths = list(self.paths.itervalues())
818  pths.extend(self.endpaths.itervalues())
819  temp = Schedule(*pths)
820  usedModules=set(temp.moduleNames())
821  unneededModules = self._pruneModules(self.producers_(), usedModules)
822  unneededModules.update(self._pruneModules(self.filters_(), usedModules))
823  unneededModules.update(self._pruneModules(self.analyzers_(), usedModules))
824  #remove sequences that do not appear in remaining paths and endpaths
825  seqs = list()
826  sv = SequenceVisitor(seqs)
827  for p in self.paths.itervalues():
828  p.visit(sv)
829  for p in self.endpaths.itervalues():
830  p.visit(sv)
831  keepSeqSet = set(( s for s in seqs if s.hasLabel_()))
832  availableSeqs = set(self.sequences.itervalues())
833  unneededSeqs = availableSeqs-keepSeqSet
834  unneededSeqLabels = []
835  for s in unneededSeqs:
836  unneededSeqLabels.append(s.label_())
837  delattr(self,s.label_())
838  if verbose:
839  print "prune removed the following:"
840  print " modules:"+",".join(unneededModules)
841  print " sequences:"+",".join(unneededSeqLabels)
print " paths/endpaths:"+",".join(unneededPaths)
def filters_
Definition: Config.py:166
def producers_
Definition: Config.py:177
def analyzers_
Definition: Config.py:199
def schedule_
Definition: Config.py:219
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def _pruneModules
Definition: Config.py:842
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run
def Config.Process.psets_ (   self)
returns a dict of the PSets which have been added to the Process

Definition at line 259 of file Config.py.

Referenced by Config.Process.prune().

260  def psets_(self):
261  """returns a dict of the PSets which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__psets)
def Config.Process.schedule_ (   self)
returns the schedule which has been added to the Process or None if none have been added

Definition at line 219 of file Config.py.

Referenced by Config.Process._insertPaths(), and Config.Process.prune().

220  def schedule_(self):
221  """returns the schedule which has been added to the Process or None if none have been added"""
return self.__schedule
def schedule_
Definition: Config.py:219
def Config.Process.sequences_ (   self)
returns a dict of the sequences which have been added to the Process

Definition at line 215 of file Config.py.

Referenced by Config.Process.dumpConfig().

216  def sequences_(self):
217  """returns a dict of the sequences which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__sequences)
def sequences_
Definition: Config.py:215
def Config.Process.services_ (   self)
returns a dict of the services which have been added to the Process

Definition at line 239 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

240  def services_(self):
241  """returns a dict of the services which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__services)
def services_
Definition: Config.py:239
def Config.Process.setLooper_ (   self,
  lpr 
)

Definition at line 190 of file Config.py.

References Config.Process._placeLooper().

191  def setLooper_(self,lpr):
self._placeLooper('looper',lpr)
def setLooper_
Definition: Config.py:190
def _placeLooper
Definition: Config.py:493
def Config.Process.setName_ (   self,
  name 
)

Definition at line 172 of file Config.py.

173  def setName_(self,name):
174  if not name.isalnum():
175  raise RuntimeError("Error: The process name is an empty string or contains non-alphanumeric characters")
self.__dict__['_Process__name'] = name
def setName_
Definition: Config.py:172
def Config.Process.setPartialSchedule_ (   self,
  sch,
  label 
)

Definition at line 222 of file Config.py.

References Config.Process._place(), and Config.Process.setSchedule_().

223  def setPartialSchedule_(self,sch,label):
224  if label == "schedule":
225  self.setSchedule_(sch)
226  else:
self._place(label, sch, self.__partialschedules)
def setSchedule_
Definition: Config.py:227
def setPartialSchedule_
Definition: Config.py:222
def Config.Process.setSchedule_ (   self,
  sch 
)

Definition at line 227 of file Config.py.

Referenced by Config.Process.setPartialSchedule_().

228  def setSchedule_(self,sch):
229  # See if every module has been inserted into the process
230  index = 0
231  try:
232  for p in sch:
233  p.label_()
234  index +=1
235  except:
236  raise RuntimeError("The path at index "+str(index)+" in the Schedule was not attached to the process.")
237 
self.__dict__['_Process__schedule'] = sch
def setSchedule_
Definition: Config.py:227
def Config.Process.setSource_ (   self,
  src 
)

Definition at line 184 of file Config.py.

References Config.Process._placeSource().

185  def setSource_(self,src):
self._placeSource('source',src)
def setSource_
Definition: Config.py:184
def _placeSource
Definition: Config.py:485
def Config.Process.setStrict (   self,
  value 
)

Definition at line 131 of file Config.py.

References Config.Process.__isStrict.

132  def setStrict(self, value):
133  self.__isStrict = value
134  _Module.__isStrict__ = True
def setStrict
Definition: Config.py:131
def Config.Process.setSubProcess_ (   self,
  lpr 
)

Definition at line 196 of file Config.py.

References Config.Process._placeSubProcess().

197  def setSubProcess_(self,lpr):
self._placeSubProcess('subProcess',lpr)
def setSubProcess_
Definition: Config.py:196
def _placeSubProcess
Definition: Config.py:498
def Config.Process.source_ (   self)
returns the source which has been added to the Process or None if none have been added

Definition at line 181 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

182  def source_(self):
183  """returns the source which has been added to the Process or None if none have been added"""
return self.__source
def Config.Process.subProcess_ (   self)
returns the sub-process which has been added to the Process or None if none have been added

Definition at line 193 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

194  def subProcess_(self):
195  """returns the sub-process which has been added to the Process or None if none have been added"""
return self.__subProcess
def subProcess_
Definition: Config.py:193
def Config.Process.validate (   self)

Definition at line 883 of file Config.py.

884  def validate(self):
885  # check if there's some input
886  # Breaks too many unit tests for now
887  #if self.source_() == None and self.looper_() == None:
888  # raise RuntimeError("No input source was found for this process")
889  pass
def validate
Definition: Config.py:883
def Config.Process.vpsets_ (   self)
returns a dict of the VPSets which have been added to the Process

Definition at line 263 of file Config.py.

Referenced by Config.Process.prune().

264  def vpsets_(self):
265  """returns a dict of the VPSets which have been added to the Process"""
return DictTypes.FixedKeysDict(self.__vpsets)

Member Data Documentation

Config.Process.__isStrict
private

Definition at line 129 of file Config.py.

Referenced by Config.Process.__setattr__(), Config.Process._okToPlace(), Config.Process._place(), Config.Process.add_(), and Config.Process.setStrict().

Config.Process.__processPSet
private

Definition at line 854 of file Config.py.

Config.Process.__thelist
private

Definition at line 853 of file Config.py.

Property Documentation

Config.Process.aliases = property(aliases_,doc="dictionary containing the aliases for the process")
static

Definition at line 258 of file Config.py.

Config.Process.analyzers = property(analyzers_,doc="dictionary containing the analyzers for the process")
static

Definition at line 202 of file Config.py.

Config.Process.endpaths = property(endpaths_,doc="dictionary containing the endpaths for the process")
static

Definition at line 214 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.prune().

Config.Process.es_prefers = property(es_prefers_,doc="dictionary containing the es_prefers for the process")
static

Definition at line 254 of file Config.py.

Config.Process.es_producers = property(es_producers_,doc="dictionary containing the es_producers for the process")
static

Definition at line 246 of file Config.py.

Config.Process.es_sources = property(es_sources_,doc="dictionary containing the es_sources for the process")
static

Definition at line 250 of file Config.py.

Config.Process.filters = property(filters_, doc="dictionary containing the filters for the process")
static

Definition at line 169 of file Config.py.

Config.Process.looper = property(looper_,setLooper_,doc='the main looper or None if not set')
static

Definition at line 192 of file Config.py.

Config.Process.outputModules = property(outputModules_,doc="dictionary containing the output_modules for the process")
static

Definition at line 206 of file Config.py.

Config.Process.paths = property(paths_,doc="dictionary containing the paths for the process")
static

Definition at line 210 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process.prune().

Config.Process.process = property(name_,setName_, doc="name of the process")
static

Definition at line 176 of file Config.py.

Referenced by ConfigBuilder.ConfigBuilder.addExtraStream(), ConfigBuilder.ConfigBuilder.completeInputCommand(), ConfigBuilder.ConfigBuilder.doNotInlineEventContent(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.dumpPython(), ConfigBuilder.ConfigBuilder.PrintAllModules.leave(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.open(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.outputEventContent(), ConfigBuilder.ConfigBuilder.prepare_FASTSIM(), ConfigBuilder.ConfigBuilder.prepare_HLT(), ConfigBuilder.ConfigBuilder.prepare_LHE(), ConfigBuilder.ConfigBuilder.prepare_VALIDATION(), ConfigBuilder.ConfigBuilder.renameHLTprocessInSequence(), ConfigBuilder.ConfigBuilder.renameInputTagsInSequence(), ConfigBuilder.ConfigBuilder.scheduleSequence(), Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.setProcess(), and Vispa.Plugins.ConfigEditor.ConfigDataAccessor.ConfigDataAccessor.setProperty().

Config.Process.producers = property(producers_,doc="dictionary containing the producers for the process")
static

Definition at line 180 of file Config.py.

Config.Process.psets = property(psets_,doc="dictionary containing the PSets for the process")
static

Definition at line 262 of file Config.py.

Referenced by Config.Process.dumpPython().

Config.Process.schedule = property(schedule_,setSchedule_,doc='the schedule or None if not set')
static

Definition at line 238 of file Config.py.

Referenced by Config.Process.dumpConfig(), and Config.Process.dumpPython().

Config.Process.sequences = property(sequences_,doc="dictionary containing the sequences for the process")
static

Definition at line 218 of file Config.py.

Referenced by Config.Process.__setattr__(), and Config.Process._sequencesInDependencyOrder().

Config.Process.services = property(services_,doc="dictionary containing the services for the process")
static

Definition at line 242 of file Config.py.

Config.Process.source = property(source_,setSource_,doc='the main source or None if not set')
static

Definition at line 186 of file Config.py.

Config.Process.subProcess = property(subProcess_,setSubProcess_,doc='the SubProcess or None if not set')
static

Definition at line 198 of file Config.py.

Config.Process.vpsets = property(vpsets_,doc="dictionary containing the PSets for the process")
static

Definition at line 266 of file Config.py.

Referenced by Config.Process.dumpPython().