CMS 3D CMS Logo

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__ (self, name)
 
def __init__ (self, name, Mods)
 
def __setattr__ (self, name, value)
 
def __setstate__ (self, pkldict)
 
def add_ (self, value)
 
def addSubProcess (self, mod)
 
def aliases_ (self)
 
def analyzerNames (self)
 
def analyzers_ (self)
 
def dumpConfig (self, options=PrintOptions())
 
def dumpPython (self, options=PrintOptions())
 
def endpaths_ (self)
 
def es_prefers_ (self)
 
def es_producers_ (self)
 
def es_sources_ (self)
 
def extend (self, other, items=())
 
def fillProcessDesc (self, processPSet)
 
def filterNames (self)
 
def filters_ (self)
 
def globalReplace (self, label, new)
 
def isUsingModifier (self, mod)
 
def load (self, moduleName)
 
def looper_ (self)
 
def name_ (self)
 
def outputModules_ (self)
 
def pathNames (self)
 
def paths_ (self)
 
def prefer (self, esmodule, args, kargs)
 
def producerNames (self)
 
def producers_ (self)
 
def prune (self, verbose=False, keepUnresolvedSequencePlaceholders=False)
 
def psets_ (self)
 
def resolve (self, keepUnresolvedSequencePlaceholders=False)
 
def schedule_ (self)
 
def sequences_ (self)
 
def services_ (self)
 
def setLooper_ (self, lpr)
 
def setName_ (self, name)
 
def setPartialSchedule_ (self, sch, label)
 
def setSchedule_ (self, sch)
 
def setSource_ (self, src)
 
def setStrict (self, value)
 
def source_ (self)
 
def subProcesses_ (self)
 
def switchProducerNames (self)
 
def switchProducers_ (self)
 
def tasks_ (self)
 
def validate (self)
 
def vpsets_ (self)
 

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')
 
 subProcesses = property(subProcesses_,doc='the SubProcesses that have been added to the Process')
 
 switchProducers = property(switchProducers_,doc="dictionary containing the SwitchProducers for the process")
 
 tasks = property(tasks_,doc="dictionary containing the tasks for the process")
 
 vpsets = property(vpsets_,doc="dictionary containing the PSets for the process")
 

Private Member Functions

def __findFirstUsingModule (self, seqsOrTasks, mod)
 
def __setObjectLabel (self, object, newLabel)
 
def _delattrFromSetattr (self, name)
 
def _delHelper (self, name)
 
def _dumpConfigESPrefers (self, options)
 
def _dumpConfigNamedList (self, items, typeName, options)
 
def _dumpConfigOptionallyNamedList (self, items, typeName, options)
 
def _dumpConfigUnnamedList (self, items, typeName, options)
 
def _dumpPython (self, d, options)
 
def _dumpPythonList (self, d, options)
 
def _dumpPythonSubProcesses (self, l, options)
 
def _findPreferred (self, esname, d, args, kargs)
 
def _insertInto (self, parameterSet, itemDict)
 
def _insertManyInto (self, parameterSet, label, itemDict, tracked)
 
def _insertOneInto (self, parameterSet, label, item, tracked)
 
def _insertPaths (self, processPSet, nodeVisitor)
 
def _insertSubProcessesInto (self, parameterSet, label, itemList, tracked)
 
def _insertSwitchProducersInto (self, parameterSet, labelModules, labelAliases, itemDict, tracked)
 
def _itemsInDependencyOrder (self, processDictionaryOfItems)
 
def _okToPlace (self, name, mod, d)
 
def _place (self, name, mod, d)
 
def _placeAlias (self, name, mod)
 
def _placeAnalyzer (self, name, mod)
 
def _placeEndPath (self, name, mod)
 
def _placeESPrefer (self, name, mod)
 
def _placeESProducer (self, name, mod)
 
def _placeESSource (self, name, mod)
 
def _placeFilter (self, name, mod)
 
def _placeLooper (self, name, mod)
 
def _placeOutputModule (self, name, mod)
 
def _placePath (self, name, mod)
 
def _placeProducer (self, name, mod)
 
def _placePSet (self, name, mod)
 
def _placeSequence (self, name, mod)
 
def _placeService (self, typeName, mod)
 
def _placeSource (self, name, mod)
 
def _placeSubProcess (self, name, mod)
 
def _placeSwitchProducer (self, name, mod)
 
def _placeTask (self, name, task)
 
def _placeVPSet (self, name, mod)
 
def _pruneModules (self, d, scheduledNames)
 
def _replaceInSchedule (self, label, new)
 
def _replaceInSequences (self, label, new)
 
def _replaceInTasks (self, label, new)
 
def _validateSequence (self, sequence, label)
 
def _validateTask (self, task, label)
 

Private Attributes

 __isStrict
 
 __ppset
 
 __process
 
 __processPSet
 
 __thelist
 

Detailed Description

Root class for a CMS configuration process

Definition at line 101 of file Config.py.

Constructor & Destructor Documentation

def Config.Process.__init__ (   self,
  name,
  Mods 
)
The argument 'name' will be the name applied to this Process
    Can optionally pass as additional arguments cms.Modifier instances
    that will be used to modify the Process as it is built

Definition at line 103 of file Config.py.

Referenced by Config.Process.fillProcessDesc().

103  def __init__(self,name,*Mods):
104  """The argument 'name' will be the name applied to this Process
105  Can optionally pass as additional arguments cms.Modifier instances
106  that will be used to modify the Process as it is built
107  """
108  self.__dict__['_Process__name'] = name
109  if not name.isalnum():
110  raise RuntimeError("Error: The process name is an empty string or contains non-alphanumeric characters")
111  self.__dict__['_Process__filters'] = {}
112  self.__dict__['_Process__producers'] = {}
113  self.__dict__['_Process__switchproducers'] = {}
114  self.__dict__['_Process__source'] = None
115  self.__dict__['_Process__looper'] = None
116  self.__dict__['_Process__subProcesses'] = []
117  self.__dict__['_Process__schedule'] = None
118  self.__dict__['_Process__analyzers'] = {}
119  self.__dict__['_Process__outputmodules'] = {}
120  self.__dict__['_Process__paths'] = DictTypes.SortedKeysDict() # have to keep the order
121  self.__dict__['_Process__endpaths'] = DictTypes.SortedKeysDict() # of definition
122  self.__dict__['_Process__sequences'] = {}
123  self.__dict__['_Process__tasks'] = {}
124  self.__dict__['_Process__services'] = {}
125  self.__dict__['_Process__essources'] = {}
126  self.__dict__['_Process__esproducers'] = {}
127  self.__dict__['_Process__esprefers'] = {}
128  self.__dict__['_Process__aliases'] = {}
129  self.__dict__['_Process__psets']={}
130  self.__dict__['_Process__vpsets']={}
131  self.__dict__['_cloneToObjectDict'] = {}
132  # policy switch to avoid object overwriting during extend/load
133  self.__dict__['_Process__InExtendCall'] = False
134  self.__dict__['_Process__partialschedules'] = {}
135  self.__isStrict = False
136  self.__dict__['_Process__modifiers'] = Mods
137  for m in self.__modifiers:
138  m._setChosen()
139 
def __init__(self, name, Mods)
Definition: Config.py:103

Member Function Documentation

def Config.Process.__delattr__ (   self,
  name 
)

Definition at line 450 of file Config.py.

References Config.Process._delHelper(), Config.Process._replaceInSchedule(), Config.Process._replaceInSequences(), and Config.Process._replaceInTasks().

450  def __delattr__(self,name):
451  self._delHelper(name)
452  obj = getattr(self,name)
453  if not obj is None:
454  if not isinstance(obj, Sequence) and not isinstance(obj, Task):
455  # For modules, ES modules and services we can also remove
456  # the deleted object from Sequences, Paths, EndPaths, and
457  # Tasks. Note that for Sequences and Tasks that cannot be done
458  # reliably as the places where the Sequence or Task was used
459  # might have been expanded so we do not even try. We considered
460  # raising an exception if a Sequences or Task was explicitly
461  # deleted, but did not because when done carefully deletion
462  # is sometimes OK (for example in the prune function where it
463  # has been checked that the deleted Sequence is not used).
464  if obj._isTaskComponent():
465  self._replaceInTasks(name, None)
466  self._replaceInSchedule(name, None)
467  if isinstance(obj, _Sequenceable) or obj._isTaskComponent():
468  self._replaceInSequences(name, None)
469  # now remove it from the process itself
470  try:
471  del self.__dict__[name]
472  except:
473  pass
474 
def __delattr__(self, name)
Definition: Config.py:450
def _replaceInTasks(self, label, new)
Definition: Config.py:871
def _delHelper(self, name)
Definition: Config.py:433
def _replaceInSequences(self, label, new)
Definition: Config.py:862
def _replaceInSchedule(self, label, new)
Definition: Config.py:875
def Config.Process.__findFirstUsingModule (   self,
  seqsOrTasks,
  mod 
)
private
Given a container of sequences or tasks, find the first sequence or task
containing mod and return it. If none is found, return None

Definition at line 420 of file Config.py.

References list().

Referenced by Config.Process.__setattr__().

420  def __findFirstUsingModule(self, seqsOrTasks, mod):
421  """Given a container of sequences or tasks, find the first sequence or task
422  containing mod and return it. If none is found, return None"""
423  from FWCore.ParameterSet.SequenceTypes import ModuleNodeVisitor
424  l = list()
425  for seqOrTask in six.itervalues(seqsOrTasks):
426  l[:] = []
427  v = ModuleNodeVisitor(l)
428  seqOrTask.visit(v)
429  if mod in l:
430  return seqOrTask
431  return None
432 
def __findFirstUsingModule(self, seqsOrTasks, mod)
Definition: Config.py:420
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 320 of file Config.py.

References Config.Process.__findFirstUsingModule(), Config.Process.__isStrict, Config.Process.__setObjectLabel(), Config.Process._delattrFromSetattr(), Config.Process._okToPlace(), Config.Process._replaceInSchedule(), Config.Process._replaceInSequences(), Config.Process._replaceInTasks(), Config.Process.add_(), Config.Process.endpaths, triggerObjects_cff.id, cms::DDSpecPar.paths, Config.Process.paths, Config.Process.sequences, str, and Config.Process.tasks.

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

320  def __setattr__(self,name,value):
321  # check if the name is well-formed (only _ and alphanumerics are allowed)
322  if not name.replace('_','').isalnum():
323  raise ValueError('The label '+name+' contains forbiden characters')
324 
325  # private variable exempt from all this
326  if name.startswith('_Process__'):
327  self.__dict__[name]=value
328  return
329  if not isinstance(value,_ConfigureComponent):
330  raise TypeError("can only assign labels to an object that inherits from '_ConfigureComponent'\n"
331  +"an instance of "+str(type(value))+" will not work - requested label is "+name)
332  if not isinstance(value,_Labelable) and not isinstance(value,Source) and not isinstance(value,Looper) and not isinstance(value,Schedule):
333  if name == value.type_():
334  # Only Services get handled here
335  self.add_(value)
336  return
337  else:
338  raise TypeError("an instance of "+str(type(value))+" can not be assigned the label '"+name+"'.\n"+
339  "Please either use the label '"+value.type_()+" or use the 'add_' method instead.")
340  #clone the item
341  if self.__isStrict:
342  newValue =value.copy()
343  try:
344  newValue._filename = value._filename
345  except:
346  pass
347  value.setIsFrozen()
348  else:
349  newValue =value
350  if not self._okToPlace(name, value, self.__dict__):
351  newFile='top level config'
352  if hasattr(value,'_filename'):
353  newFile = value._filename
354  oldFile='top level config'
355  oldValue = getattr(self,name)
356  if hasattr(oldValue,'_filename'):
357  oldFile = oldValue._filename
358  msg = "Trying to override definition of process."+name
359  msg += "\n new object defined in: "+newFile
360  msg += "\n existing object defined in: "+oldFile
361  raise ValueError(msg)
362  # remove the old object of the name (if there is one)
363  if hasattr(self,name) and not (getattr(self,name)==newValue):
364  # Complain if items in sequences or tasks from load() statements have
365  # degenerate names, but if the user overwrites a name in the
366  # main config, replace it everywhere
367  if newValue._isTaskComponent():
368  if not self.__InExtendCall:
369  self._replaceInTasks(name, newValue)
370  self._replaceInSchedule(name, newValue)
371  else:
372  if not isinstance(newValue, Task):
373  #should check to see if used in task before complaining
374  newFile='top level config'
375  if hasattr(value,'_filename'):
376  newFile = value._filename
377  oldFile='top level config'
378  oldValue = getattr(self,name)
379  if hasattr(oldValue,'_filename'):
380  oldFile = oldValue._filename
381  msg1 = "Trying to override definition of "+name+" while it is used by the task "
382  msg2 = "\n new object defined in: "+newFile
383  msg2 += "\n existing object defined in: "+oldFile
384  s = self.__findFirstUsingModule(self.tasks,oldValue)
385  if s is not None:
386  raise ValueError(msg1+s.label_()+msg2)
387 
388  if isinstance(newValue, _Sequenceable) or newValue._isTaskComponent():
389  if not self.__InExtendCall:
390  self._replaceInSequences(name, newValue)
391  else:
392  #should check to see if used in sequence before complaining
393  newFile='top level config'
394  if hasattr(value,'_filename'):
395  newFile = value._filename
396  oldFile='top level config'
397  oldValue = getattr(self,name)
398  if hasattr(oldValue,'_filename'):
399  oldFile = oldValue._filename
400  msg1 = "Trying to override definition of "+name+" while it is used by the "
401  msg2 = "\n new object defined in: "+newFile
402  msg2 += "\n existing object defined in: "+oldFile
403  s = self.__findFirstUsingModule(self.sequences,oldValue)
404  if s is not None:
405  raise ValueError(msg1+"sequence "+s.label_()+msg2)
406  s = self.__findFirstUsingModule(self.paths,oldValue)
407  if s is not None:
408  raise ValueError(msg1+"path "+s.label_()+msg2)
409  s = self.__findFirstUsingModule(self.endpaths,oldValue)
410  if s is not None:
411  raise ValueError(msg1+"endpath "+s.label_()+msg2)
412  self._delattrFromSetattr(name)
413  self.__dict__[name]=newValue
414  if isinstance(newValue,_Labelable):
415  self.__setObjectLabel(newValue, name)
416  self._cloneToObjectDict[id(value)] = newValue
417  self._cloneToObjectDict[id(newValue)] = newValue
418  #now put in proper bucket
419  newValue._place(name,self)
def __findFirstUsingModule(self, seqsOrTasks, mod)
Definition: Config.py:420
def _okToPlace(self, name, mod, d)
Definition: Config.py:499
def _replaceInTasks(self, label, new)
Definition: Config.py:871
def __setattr__(self, name, value)
Definition: Config.py:320
def __setObjectLabel(self, object, newLabel)
Definition: Config.py:293
def _replaceInSequences(self, label, new)
Definition: Config.py:862
def add_(self, value)
Definition: Config.py:484
#define str(s)
def _delattrFromSetattr(self, name)
Definition: Config.py:475
def _replaceInSchedule(self, label, new)
Definition: Config.py:875
def Config.Process.__setObjectLabel (   self,
  object,
  newLabel 
)
private

Definition at line 293 of file Config.py.

References triggerObjects_cff.id, and str.

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

293  def __setObjectLabel(self, object, newLabel) :
294  if not object.hasLabel_() :
295  object.setLabel(newLabel)
296  return
297  if newLabel == object.label_() :
298  return
299  if newLabel is None :
300  object.setLabel(None)
301  return
302  if (hasattr(self, object.label_()) and id(getattr(self, object.label_())) == id(object)) :
303  msg100 = "Attempting to change the label of an attribute of the Process\n"
304  msg101 = "Old label = "+object.label_()+" New label = "+newLabel+"\n"
305  msg102 = "Type = "+str(type(object))+"\n"
306  msg103 = "Some possible solutions:\n"
307  msg104 = " 1. Clone modules instead of using simple assignment. Cloning is\n"
308  msg105 = " also preferred for other types when possible.\n"
309  msg106 = " 2. Declare new names starting with an underscore if they are\n"
310  msg107 = " for temporaries you do not want propagated into the Process. The\n"
311  msg108 = " underscore tells \"from x import *\" and process.load not to import\n"
312  msg109 = " the name.\n"
313  msg110 = " 3. Reorganize so the assigment is not necessary. Giving a second\n"
314  msg111 = " name to the same object usually causes confusion and problems.\n"
315  msg112 = " 4. Compose Sequences: newName = cms.Sequence(oldName)\n"
316  raise ValueError(msg100+msg101+msg102+msg103+msg104+msg105+msg106+msg107+msg108+msg109+msg110+msg111+msg112)
317  object.setLabel(None)
318  object.setLabel(newLabel)
319 
def __setObjectLabel(self, object, newLabel)
Definition: Config.py:293
#define str(s)
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 161 of file Config.py.

References triggerObjects_cff.id.

161  def __setstate__(self, pkldict):
162  """
163  Unpickling hook.
164 
165  Since cloneToObjectDict stores a hash of objects by their
166  id() it needs to be updated when unpickling to use the
167  new object id values instantiated during the unpickle.
168 
169  """
170  self.__dict__.update(pkldict)
171  tmpDict = {}
172  for value in self._cloneToObjectDict.values():
173  tmpDict[id(value)] = value
174  self.__dict__['_cloneToObjectDict'] = tmpDict
175 
176 
177 
def __setstate__(self, pkldict)
Definition: Config.py:161
def Config.Process._delattrFromSetattr (   self,
  name 
)
private
Similar to __delattr__ but we need different behavior when called from __setattr__

Definition at line 475 of file Config.py.

References Config.Process._delHelper().

Referenced by Config.Process.__setattr__().

475  def _delattrFromSetattr(self,name):
476  """Similar to __delattr__ but we need different behavior when called from __setattr__"""
477  self._delHelper(name)
478  # now remove it from the process itself
479  try:
480  del self.__dict__[name]
481  except:
482  pass
483 
def _delHelper(self, name)
Definition: Config.py:433
def _delattrFromSetattr(self, name)
Definition: Config.py:475
def Config.Process._delHelper (   self,
  name 
)
private

Definition at line 433 of file Config.py.

Referenced by Config.Process.__delattr__(), and Config.Process._delattrFromSetattr().

433  def _delHelper(self,name):
434  if not hasattr(self,name):
435  raise KeyError('process does not know about '+name)
436  elif name.startswith('_Process__'):
437  raise ValueError('this attribute cannot be deleted')
438 
439  # we have to remove it from all dictionaries/registries
440  dicts = [item for item in self.__dict__.values() if (isinstance(item, dict) or isinstance(item, DictTypes.SortedKeysDict))]
441  for reg in dicts:
442  if name in reg: del reg[name]
443  # if it was a labelable object, the label needs to be removed
444  obj = getattr(self,name)
445  if isinstance(obj,_Labelable):
446  obj.setLabel(None)
447  if isinstance(obj,Service):
448  obj._inProcess = False
449 
def _delHelper(self, name)
Definition: Config.py:433
def Config.Process._dumpConfigESPrefers (   self,
  options 
)
private

Definition at line 733 of file Config.py.

References Config.Process.es_prefers_().

Referenced by Config.Process.dumpConfig().

733  def _dumpConfigESPrefers(self, options):
734  result = ''
735  for item in six.itervalues(self.es_prefers_()):
736  result +=options.indentation()+'es_prefer '+item.targetLabel_()+' = '+item.dumpConfig(options)
737  return result
def _dumpConfigESPrefers(self, options)
Definition: Config.py:733
def es_prefers_(self)
Definition: Config.py:268
def Config.Process._dumpConfigNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 651 of file Config.py.

Referenced by Config.Process.dumpConfig().

651  def _dumpConfigNamedList(self,items,typeName,options):
652  returnValue = ''
653  for name,item in items:
654  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
655  return returnValue
def _dumpConfigNamedList(self, items, typeName, options)
Definition: Config.py:651
def Config.Process._dumpConfigOptionallyNamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 661 of file Config.py.

Referenced by Config.Process.dumpConfig().

661  def _dumpConfigOptionallyNamedList(self,items,typeName,options):
662  returnValue = ''
663  for name,item in items:
664  if name == item.type_():
665  name = ''
666  returnValue +=options.indentation()+typeName+' '+name+' = '+item.dumpConfig(options)
667  return returnValue
def _dumpConfigOptionallyNamedList(self, items, typeName, options)
Definition: Config.py:661
def Config.Process._dumpConfigUnnamedList (   self,
  items,
  typeName,
  options 
)
private

Definition at line 656 of file Config.py.

Referenced by Config.Process.dumpConfig().

656  def _dumpConfigUnnamedList(self,items,typeName,options):
657  returnValue = ''
658  for name,item in items:
659  returnValue +=options.indentation()+typeName+' = '+item.dumpConfig(options)
660  return returnValue
def _dumpConfigUnnamedList(self, items, typeName, options)
Definition: Config.py:656
def Config.Process._dumpPython (   self,
  d,
  options 
)
private

Definition at line 824 of file Config.py.

Referenced by Config.Process.dumpPython().

824  def _dumpPython(self, d, options):
825  result = ''
826  for name, value in sorted(six.iteritems(d)):
827  result += value.dumpPythonAs(name,options)+'\n'
828  return result
def _dumpPython(self, d, options)
Definition: Config.py:824
def Config.Process._dumpPythonList (   self,
  d,
  options 
)
private

Definition at line 743 of file Config.py.

Referenced by Config.Process.dumpPython().

743  def _dumpPythonList(self, d, options):
744  returnValue = ''
745  if isinstance(d, DictTypes.SortedKeysDict):
746  for name,item in d.items():
747  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
748  else:
749  for name,item in sorted(d.items()):
750  returnValue +='process.'+name+' = '+item.dumpPython(options)+'\n\n'
751  return returnValue
def _dumpPythonList(self, d, options)
Definition: Config.py:743
def Config.Process._dumpPythonSubProcesses (   self,
  l,
  options 
)
private

Definition at line 738 of file Config.py.

Referenced by Config.Process.dumpPython().

738  def _dumpPythonSubProcesses(self, l, options):
739  returnValue = ''
740  for item in l:
741  returnValue += item.dumpPython(options)+'\n\n'
742  return returnValue
def _dumpPythonSubProcesses(self, l, options)
Definition: Config.py:738
def Config.Process._findPreferred (   self,
  esname,
  d,
  args,
  kargs 
)
private

Definition at line 1165 of file Config.py.

References psClasses.BuildTreeNode.__setattr__(), and Config.Process.__setattr__().

1165  def _findPreferred(self, esname, d,*args,**kargs):
1166  # is esname a name in the dictionary?
1167  if esname in d:
1168  typ = d[esname].type_()
1169  if typ == esname:
1170  self.__setattr__( esname+"_prefer", ESPrefer(typ,*args,**kargs) )
1171  else:
1172  self.__setattr__( esname+"_prefer", ESPrefer(typ, esname,*args,**kargs) )
1173  return True
1174  else:
1175  # maybe it's an unnamed ESModule?
1176  found = False
1177  for name, value in six.iteritems(d):
1178  if value.type_() == esname:
1179  if found:
1180  raise RuntimeError("More than one ES module for "+esname)
1181  found = True
1182  self.__setattr__(esname+"_prefer", ESPrefer(d[esname].type_()) )
1183  return found
1184 
1185 
def _findPreferred(self, esname, d, args, kargs)
Definition: Config.py:1165
def __setattr__(self, name, value)
Definition: Config.py:320
def Config.Process._insertInto (   self,
  parameterSet,
  itemDict 
)
private

Definition at line 886 of file Config.py.

886  def _insertInto(self, parameterSet, itemDict):
887  for name,value in six.iteritems(itemDict):
888  value.insertInto(parameterSet, name)
def _insertInto(self, parameterSet, itemDict)
Definition: Config.py:886
def Config.Process._insertManyInto (   self,
  parameterSet,
  label,
  itemDict,
  tracked 
)
private

Definition at line 896 of file Config.py.

896  def _insertManyInto(self, parameterSet, label, itemDict, tracked):
897  l = []
898  for name,value in six.iteritems(itemDict):
899  value.appendToProcessDescList_(l, name)
900  value.insertInto(parameterSet, name)
901  # alphabetical order is easier to compare with old language
902  l.sort()
903  parameterSet.addVString(tracked, label, l)
def _insertManyInto(self, parameterSet, label, itemDict, tracked)
Definition: Config.py:896
def Config.Process._insertOneInto (   self,
  parameterSet,
  label,
  item,
  tracked 
)
private

Definition at line 889 of file Config.py.

889  def _insertOneInto(self, parameterSet, label, item, tracked):
890  vitems = []
891  if not item == None:
892  newlabel = item.nameInProcessDesc_(label)
893  vitems = [newlabel]
894  item.insertInto(parameterSet, newlabel)
895  parameterSet.addVString(tracked, label, vitems)
def _insertOneInto(self, parameterSet, label, item, tracked)
Definition: Config.py:889
def Config.Process._insertPaths (   self,
  processPSet,
  nodeVisitor 
)
private

Definition at line 927 of file Config.py.

References Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.endpaths_, edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, and edm::EventProcessor.schedule_.

927  def _insertPaths(self, processPSet, nodeVisitor):
928  scheduledPaths = []
929  triggerPaths = []
930  endpaths = []
931  if self.schedule_() == None:
932  # make one from triggerpaths & endpaths
933  for name in self.paths_():
934  scheduledPaths.append(name)
935  triggerPaths.append(name)
936  for name in self.endpaths_():
937  scheduledPaths.append(name)
938  endpaths.append(name)
939  else:
940  for path in self.schedule_():
941  pathname = path.label_()
942  scheduledPaths.append(pathname)
943  if pathname in self.endpaths_():
944  endpaths.append(pathname)
945  else:
946  triggerPaths.append(pathname)
947  for task in self.schedule_()._tasks:
948  task.resolve(self.__dict__)
949  scheduleTaskValidator = ScheduleTaskValidator()
950  task.visit(scheduleTaskValidator)
951  task.visit(nodeVisitor)
952  processPSet.addVString(True, "@end_paths", endpaths)
953  processPSet.addVString(True, "@paths", scheduledPaths)
954  # trigger_paths are a little different
955  p = processPSet.newPSet()
956  p.addVString(True, "@trigger_paths", triggerPaths)
957  processPSet.addPSet(True, "@trigger_paths", p)
958  # add all these paths
959  pathValidator = PathValidator()
960  endpathValidator = EndPathValidator()
961  decoratedList = []
962  lister = DecoratedNodeNameVisitor(decoratedList)
963  pathCompositeVisitor = CompositeVisitor(pathValidator, nodeVisitor, lister)
964  endpathCompositeVisitor = CompositeVisitor(endpathValidator, nodeVisitor, lister)
965  for triggername in triggerPaths:
966  iPath = self.paths_()[triggername]
967  iPath.resolve(self.__dict__)
968  pathValidator.setLabel(triggername)
969  lister.initialize()
970  iPath.visit(pathCompositeVisitor)
971  iPath.insertInto(processPSet, triggername, decoratedList)
972  for endpathname in endpaths:
973  iEndPath = self.endpaths_()[endpathname]
974  iEndPath.resolve(self.__dict__)
975  endpathValidator.setLabel(endpathname)
976  lister.initialize()
977  iEndPath.visit(endpathCompositeVisitor)
978  iEndPath.insertInto(processPSet, endpathname, decoratedList)
979  processPSet.addVString(False, "@filters_on_endpaths", endpathValidator.filtersOnEndpaths)
980 
def _insertPaths(self, processPSet, nodeVisitor)
Definition: Config.py:927
def schedule_(self)
Definition: Config.py:237
def endpaths_(self)
Definition: Config.py:225
def paths_(self)
Definition: Config.py:221
def Config.Process._insertSubProcessesInto (   self,
  parameterSet,
  label,
  itemList,
  tracked 
)
private

Definition at line 914 of file Config.py.

914  def _insertSubProcessesInto(self, parameterSet, label, itemList, tracked):
915  l = []
916  subprocs = []
917  for value in itemList:
918  name = value.getProcessName()
919  newLabel = value.nameInProcessDesc_(name)
920  l.append(newLabel)
921  pset = value.getSubProcessPSet(parameterSet)
922  subprocs.append(pset)
923  # alphabetical order is easier to compare with old language
924  l.sort()
925  parameterSet.addVString(tracked, label, l)
926  parameterSet.addVPSet(False,"subProcesses",subprocs)
def _insertSubProcessesInto(self, parameterSet, label, itemList, tracked)
Definition: Config.py:914
def Config.Process._insertSwitchProducersInto (   self,
  parameterSet,
  labelModules,
  labelAliases,
  itemDict,
  tracked 
)
private

Definition at line 904 of file Config.py.

904  def _insertSwitchProducersInto(self, parameterSet, labelModules, labelAliases, itemDict, tracked):
905  modules = parameterSet.getVString(tracked, labelModules)
906  aliases = parameterSet.getVString(tracked, labelAliases)
907  for name,value in six.iteritems(itemDict):
908  value.appendToProcessDescLists_(modules, aliases, name)
909  value.insertInto(parameterSet, name)
910  modules.sort()
911  aliases.sort()
912  parameterSet.addVString(tracked, labelModules, modules)
913  parameterSet.addVString(tracked, labelAliases, aliases)
def _insertSwitchProducersInto(self, parameterSet, labelModules, labelAliases, itemDict, tracked)
Definition: Config.py:904
def Config.Process._itemsInDependencyOrder (   self,
  processDictionaryOfItems 
)
private

Definition at line 768 of file Config.py.

References cmsPerfStripChart.dict.

Referenced by Config.Process.dumpPython().

768  def _itemsInDependencyOrder(self, processDictionaryOfItems):
769  # The items can be Sequences or Tasks and the input
770  # argument should either be the dictionary of sequences
771  # or the dictionary of tasks from the process.
772 
773  returnValue=DictTypes.SortedKeysDict()
774 
775  # For each item, see what other items it depends upon
776  # For our purpose here, an item depends on the items it contains.
777  dependencies = {}
778  for label,item in six.iteritems(processDictionaryOfItems):
779  containedItems = []
780  if isinstance(item, Task):
781  v = TaskVisitor(containedItems)
782  else:
783  v = SequenceVisitor(containedItems)
784  try:
785  item.visit(v)
786  except RuntimeError:
787  if isinstance(item, Task):
788  raise RuntimeError("Failed in a Task visitor. Probably " \
789  "a circular dependency discovered in Task with label " + label)
790  else:
791  raise RuntimeError("Failed in a Sequence visitor. Probably a " \
792  "circular dependency discovered in Sequence with label " + label)
793  for containedItem in containedItems:
794  # Check for items that both have labels and are not in the process.
795  # This should not normally occur unless someone explicitly assigns a
796  # label without putting the item in the process (which should not ever
797  # be done). We check here because this problem could cause the code
798  # in the 'while' loop below to go into an infinite loop.
799  if containedItem.hasLabel_():
800  testItem = processDictionaryOfItems.get(containedItem.label_())
801  if testItem is None or containedItem != testItem:
802  if isinstance(item, Task):
803  raise RuntimeError("Task has a label, but using its label to get an attribute" \
804  " from the process yields a different object or None\n"+
805  "label = " + containedItem.label_())
806  else:
807  raise RuntimeError("Sequence has a label, but using its label to get an attribute" \
808  " from the process yields a different object or None\n"+
809  "label = " + containedItem.label_())
810  dependencies[label]=[dep.label_() for dep in containedItems if dep.hasLabel_()]
811 
812  # keep looping until we get rid of all dependencies
813  while dependencies:
814  oldDeps = dict(dependencies)
815  for label,deps in six.iteritems(oldDeps):
816  if len(deps)==0:
817  returnValue[label]=processDictionaryOfItems[label]
818  #remove this as a dependency for all other tasks
819  del dependencies[label]
820  for lb2,deps2 in six.iteritems(dependencies):
821  while deps2.count(label):
822  deps2.remove(label)
823  return returnValue
def _itemsInDependencyOrder(self, processDictionaryOfItems)
Definition: Config.py:768
def Config.Process._okToPlace (   self,
  name,
  mod,
  d 
)
private

Definition at line 499 of file Config.py.

References Config.Process.__isStrict.

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

499  def _okToPlace(self, name, mod, d):
500  if not self.__InExtendCall:
501  # if going
502  return True
503  elif not self.__isStrict:
504  return True
505  elif name in d:
506  # if there's an old copy, and the new one
507  # hasn't been modified, we're done. Still
508  # not quite safe if something has been defined twice.
509  # Need to add checks
510  if mod._isModified:
511  if d[name]._isModified:
512  return False
513  else:
514  return True
515  else:
516  return True
517  else:
518  return True
519 
def _okToPlace(self, name, mod, d)
Definition: Config.py:499
def Config.Process._place (   self,
  name,
  mod,
  d 
)
private
def Config.Process._placeAlias (   self,
  name,
  mod 
)
private

Definition at line 564 of file Config.py.

References Config.Process._place().

564  def _placeAlias(self,name,mod):
565  self._place(name, mod, self.__aliases)
def _placeAlias(self, name, mod)
Definition: Config.py:564
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeAnalyzer (   self,
  name,
  mod 
)
private

Definition at line 536 of file Config.py.

References Config.Process._place().

536  def _placeAnalyzer(self,name,mod):
537  self._place(name, mod, self.__analyzers)
def _placeAnalyzer(self, name, mod)
Definition: Config.py:536
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeEndPath (   self,
  name,
  mod 
)
private

Definition at line 545 of file Config.py.

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

545  def _placeEndPath(self,name,mod):
546  self._validateSequence(mod, name)
547  try:
548  self._place(name, mod, self.__endpaths)
549  except ModuleCloneError as msg:
550  context = format_outerframe(4)
551  raise Exception("%sThe module %s in endpath %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence(self, sequence, label)
Definition: Config.py:752
def _placeEndPath(self, name, mod)
Definition: Config.py:545
def format_outerframe(number)
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeESPrefer (   self,
  name,
  mod 
)
private

Definition at line 557 of file Config.py.

References Config.Process._place().

557  def _placeESPrefer(self,name,mod):
558  self._place(name, mod, self.__esprefers)
def _placeESPrefer(self, name, mod)
Definition: Config.py:557
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeESProducer (   self,
  name,
  mod 
)
private

Definition at line 555 of file Config.py.

References Config.Process._place().

555  def _placeESProducer(self,name,mod):
556  self._place(name, mod, self.__esproducers)
def _placeESProducer(self, name, mod)
Definition: Config.py:555
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeESSource (   self,
  name,
  mod 
)
private

Definition at line 559 of file Config.py.

References Config.Process._place().

559  def _placeESSource(self,name,mod):
560  self._place(name, mod, self.__essources)
def _placeESSource(self, name, mod)
Definition: Config.py:559
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeFilter (   self,
  name,
  mod 
)
private

Definition at line 534 of file Config.py.

References Config.Process._place().

534  def _placeFilter(self,name,mod):
535  self._place(name, mod, self.__filters)
def _placeFilter(self, name, mod)
Definition: Config.py:534
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeLooper (   self,
  name,
  mod 
)
private

Definition at line 578 of file Config.py.

Referenced by Config.Process.setLooper_().

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

Definition at line 528 of file Config.py.

References Config.Process._place().

528  def _placeOutputModule(self,name,mod):
529  self._place(name, mod, self.__outputmodules)
def _placeOutputModule(self, name, mod)
Definition: Config.py:528
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placePath (   self,
  name,
  mod 
)
private

Definition at line 538 of file Config.py.

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

538  def _placePath(self,name,mod):
539  self._validateSequence(mod, name)
540  try:
541  self._place(name, mod, self.__paths)
542  except ModuleCloneError as msg:
543  context = format_outerframe(4)
544  raise Exception("%sThe module %s in path %s is unknown to the process %s." %(context, msg, name, self._Process__name))
def _validateSequence(self, sequence, label)
Definition: Config.py:752
def _placePath(self, name, mod)
Definition: Config.py:538
def format_outerframe(number)
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeProducer (   self,
  name,
  mod 
)
private

Definition at line 530 of file Config.py.

References Config.Process._place().

530  def _placeProducer(self,name,mod):
531  self._place(name, mod, self.__producers)
def _placeProducer(self, name, mod)
Definition: Config.py:530
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placePSet (   self,
  name,
  mod 
)
private

Definition at line 566 of file Config.py.

References Config.Process._place().

566  def _placePSet(self,name,mod):
567  self._place(name, mod, self.__psets)
def _placePSet(self, name, mod)
Definition: Config.py:566
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeSequence (   self,
  name,
  mod 
)
private

Definition at line 552 of file Config.py.

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

552  def _placeSequence(self,name,mod):
553  self._validateSequence(mod, name)
554  self._place(name, mod, self.__sequences)
def _placeSequence(self, name, mod)
Definition: Config.py:552
def _validateSequence(self, sequence, label)
Definition: Config.py:752
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeService (   self,
  typeName,
  mod 
)
private

Definition at line 588 of file Config.py.

References Config.Process._place().

588  def _placeService(self,typeName,mod):
589  self._place(typeName, mod, self.__services)
590  if typeName in self.__dict__:
591  self.__dict__[typeName]._inProcess = False
592  self.__dict__[typeName]=mod
def _placeService(self, typeName, mod)
Definition: Config.py:588
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeSource (   self,
  name,
  mod 
)
private
Allow the source to be referenced by 'source' or by type name

Definition at line 570 of file Config.py.

Referenced by Config.Process.setSource_().

570  def _placeSource(self,name,mod):
571  """Allow the source to be referenced by 'source' or by type name"""
572  if name != 'source':
573  raise ValueError("The label '"+name+"' can not be used for a Source. Only 'source' is allowed.")
574  if self.__dict__['_Process__source'] is not None :
575  del self.__dict__[self.__dict__['_Process__source'].type_()]
576  self.__dict__['_Process__source'] = mod
577  self.__dict__[mod.type_()] = mod
def _placeSource(self, name, mod)
Definition: Config.py:570
def Config.Process._placeSubProcess (   self,
  name,
  mod 
)
private

Definition at line 583 of file Config.py.

583  def _placeSubProcess(self,name,mod):
584  self.__dict__['_Process__subProcess'] = mod
585  self.__dict__[mod.type_()] = mod
def _placeSubProcess(self, name, mod)
Definition: Config.py:583
def Config.Process._placeSwitchProducer (   self,
  name,
  mod 
)
private

Definition at line 532 of file Config.py.

References Config.Process._place().

532  def _placeSwitchProducer(self,name,mod):
533  self._place(name, mod, self.__switchproducers)
def _placeSwitchProducer(self, name, mod)
Definition: Config.py:532
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeTask (   self,
  name,
  task 
)
private

Definition at line 561 of file Config.py.

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

561  def _placeTask(self,name,task):
562  self._validateTask(task, name)
563  self._place(name, task, self.__tasks)
def _validateTask(self, task, label)
Definition: Config.py:760
def _placeTask(self, name, task)
Definition: Config.py:561
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process._placeVPSet (   self,
  name,
  mod 
)
private

Definition at line 568 of file Config.py.

References Config.Process._place().

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

Definition at line 1043 of file Config.py.

Referenced by Config.Process.prune().

1043  def _pruneModules(self, d, scheduledNames):
1044  moduleNames = set(d.keys())
1045  junk = moduleNames - scheduledNames
1046  for name in junk:
1047  delattr(self, name)
1048  return junk
1049 
def _pruneModules(self, d, scheduledNames)
Definition: Config.py:1043
def Config.Process._replaceInSchedule (   self,
  label,
  new 
)
private

Definition at line 875 of file Config.py.

References EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, and edm::EventProcessor.schedule_.

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

875  def _replaceInSchedule(self, label, new):
876  if self.schedule_() == None:
877  return
878  old = getattr(self,label)
879  for task in self.schedule_()._tasks:
880  task.replace(old, new)
def schedule_(self)
Definition: Config.py:237
def _replaceInSchedule(self, label, new)
Definition: Config.py:875
def Config.Process._replaceInSequences (   self,
  label,
  new 
)
private

Definition at line 862 of file Config.py.

References Config.Process.endpaths, cms::DDSpecPar.paths, Config.Process.paths, and Config.Process.sequences.

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

862  def _replaceInSequences(self, label, new):
863  old = getattr(self,label)
864  #TODO - replace by iterator concatenation
865  for sequenceable in six.itervalues(self.sequences):
866  sequenceable.replace(old,new)
867  for sequenceable in six.itervalues(self.paths):
868  sequenceable.replace(old,new)
869  for sequenceable in six.itervalues(self.endpaths):
870  sequenceable.replace(old,new)
def _replaceInSequences(self, label, new)
Definition: Config.py:862
def Config.Process._replaceInTasks (   self,
  label,
  new 
)
private

Definition at line 871 of file Config.py.

References Config.Process.tasks.

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

871  def _replaceInTasks(self, label, new):
872  old = getattr(self,label)
873  for task in six.itervalues(self.tasks):
874  task.replace(old, new)
def _replaceInTasks(self, label, new)
Definition: Config.py:871
def Config.Process._validateSequence (   self,
  sequence,
  label 
)
private

Definition at line 752 of file Config.py.

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

752  def _validateSequence(self, sequence, label):
753  # See if every module has been inserted into the process
754  try:
755  l = set()
756  visitor = NodeNameVisitor(l)
757  sequence.visit(visitor)
758  except:
759  raise RuntimeError("An entry in sequence "+label + ' has no label')
def _validateSequence(self, sequence, label)
Definition: Config.py:752
def Config.Process._validateTask (   self,
  task,
  label 
)
private

Definition at line 760 of file Config.py.

Referenced by Config.Process._placeTask().

760  def _validateTask(self, task, label):
761  # See if every module and service has been inserted into the process
762  try:
763  l = set()
764  visitor = NodeNameVisitor(l)
765  task.visit(visitor)
766  except:
767  raise RuntimeError("An entry in task " + label + ' has not been attached to the process')
def _validateTask(self, task, label)
Definition: Config.py:760
def Config.Process.add_ (   self,
  value 
)
Allows addition of components that do not have to have a label, e.g. Services

Definition at line 484 of file Config.py.

References Config.Process.__isStrict.

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

484  def add_(self,value):
485  """Allows addition of components that do not have to have a label, e.g. Services"""
486  if not isinstance(value,_ConfigureComponent):
487  raise TypeError
488  if not isinstance(value,_Unlabelable):
489  raise TypeError
490  #clone the item
491  #clone the item
492  if self.__isStrict:
493  newValue =value.copy()
494  value.setIsFrozen()
495  else:
496  newValue =value
497  newValue._place('',self)
498 
def add_(self, value)
Definition: Config.py:484
def Config.Process.addSubProcess (   self,
  mod 
)

Definition at line 586 of file Config.py.

586  def addSubProcess(self,mod):
587  self.__subProcesses.append(mod)
def addSubProcess(self, mod)
Definition: Config.py:586
def Config.Process.aliases_ (   self)
returns a dict of the aliases that have been added to the Process

Definition at line 272 of file Config.py.

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

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

Definition at line 151 of file Config.py.

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

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

Definition at line 213 of file Config.py.

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

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

Definition at line 668 of file Config.py.

References dataset.Dataset.__name, genericValidation.ValidationWithPlotsSummaryBase.SummaryItem.__name, Config.Process._dumpConfigESPrefers(), Config.Process._dumpConfigNamedList(), Config.Process._dumpConfigOptionallyNamedList(), Config.Process._dumpConfigUnnamedList(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.endpaths_, Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, cms::DDFilteredView.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.psets, ConfigBuilder.ConfigBuilder.schedule, Config.Process.schedule, Config.Process.sequences_(), edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, ProcessCallGraph.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, edm::InputSource::LumiSourceSentry.source_, edm::InputSource::RunSourceSentry.source_, Config.Process.subProcesses_(), edm::SubProcess.subProcesses_, edm::EventProcessor.subProcesses_, Config.Process.switchProducers_(), and Config.Process.vpsets.

Referenced by Types.SecSource.configValue().

668  def dumpConfig(self, options=PrintOptions()):
669  """return a string containing the equivalent process defined using the old configuration language"""
670  config = "process "+self.__name+" = {\n"
671  options.indent()
672  if self.source_():
673  config += options.indentation()+"source = "+self.source_().dumpConfig(options)
674  if self.looper_():
675  config += options.indentation()+"looper = "+self.looper_().dumpConfig(options)
676 
677  config+=self._dumpConfigNamedList(self.subProcesses_(),
678  'subProcess',
679  options)
680  config+=self._dumpConfigNamedList(six.iteritems(self.producers_()),
681  'module',
682  options)
683  config+=self._dumpConfigNamedList(six.iteritems(self.switchProducers_()),
684  'module',
685  options)
686  config+=self._dumpConfigNamedList(six.iteritems(self.filters_()),
687  'module',
688  options)
689  config+=self._dumpConfigNamedList(six.iteritems(self.analyzers_()),
690  'module',
691  options)
692  config+=self._dumpConfigNamedList(six.iteritems(self.outputModules_()),
693  'module',
694  options)
695  config+=self._dumpConfigNamedList(six.iteritems(self.sequences_()),
696  'sequence',
697  options)
698  config+=self._dumpConfigNamedList(six.iteritems(self.paths_()),
699  'path',
700  options)
701  config+=self._dumpConfigNamedList(six.iteritems(self.endpaths_()),
702  'endpath',
703  options)
704  config+=self._dumpConfigUnnamedList(six.iteritems(self.services_()),
705  'service',
706  options)
707  config+=self._dumpConfigNamedList(six.iteritems(self.aliases_()),
708  'alias',
709  options)
710  config+=self._dumpConfigOptionallyNamedList(
711  six.iteritems(self.es_producers_()),
712  'es_module',
713  options)
714  config+=self._dumpConfigOptionallyNamedList(
715  six.iteritems(self.es_sources_()),
716  'es_source',
717  options)
718  config += self._dumpConfigESPrefers(options)
719  for name,item in six.iteritems(self.psets):
720  config +=options.indentation()+item.configTypeName()+' '+name+' = '+item.configValue(options)
721  for name,item in six.iteritems(self.vpsets):
722  config +=options.indentation()+'VPSet '+name+' = '+item.configValue(options)
723  if self.schedule:
724  pathNames = [p.label_() for p in self.schedule]
725  config +=options.indentation()+'schedule = {'+','.join(pathNames)+'}\n'
726 
727 # config+=self._dumpConfigNamedList(six.iteritems(self.vpsets),
728 # 'VPSet',
729 # options)
730  config += "}\n"
731  options.unindent()
732  return config
def _dumpConfigOptionallyNamedList(self, items, typeName, options)
Definition: Config.py:661
def _dumpConfigUnnamedList(self, items, typeName, options)
Definition: Config.py:656
def subProcesses_(self)
Definition: Config.py:209
def es_producers_(self)
Definition: Config.py:260
def producers_(self)
Definition: Config.py:189
def es_sources_(self)
Definition: Config.py:264
def source_(self)
Definition: Config.py:197
def _dumpConfigESPrefers(self, options)
Definition: Config.py:733
def endpaths_(self)
Definition: Config.py:225
def sequences_(self)
Definition: Config.py:229
def looper_(self)
Definition: Config.py:203
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def filters_(self)
Definition: Config.py:178
def analyzers_(self)
Definition: Config.py:213
def _dumpConfigNamedList(self, items, typeName, options)
Definition: Config.py:651
def dumpConfig(self, options=PrintOptions())
Definition: Config.py:668
def switchProducers_(self)
Definition: Config.py:193
def paths_(self)
Definition: Config.py:221
def outputModules_(self)
Definition: Config.py:217
def services_(self)
Definition: Config.py:256
def aliases_(self)
Definition: Config.py:272
def Config.Process.dumpPython (   self,
  options = PrintOptions() 
)
return a string containing the equivalent process defined using python

Definition at line 829 of file Config.py.

References dataset.Dataset.__name, genericValidation.ValidationWithPlotsSummaryBase.SummaryItem.__name, Config.Process._dumpPython(), Config.Process._dumpPythonList(), Config.Process._dumpPythonSubProcesses(), Config.Process._itemsInDependencyOrder(), Config.Process.aliases_(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths_(), FastTimerService::PlotsPerProcess.endpaths_, Config.Process.es_prefers_(), Config.Process.es_producers_(), Config.Process.es_sources_(), pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, cms::DDFilteredView.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), Config.Process.looper_(), edm::EventProcessor.looper_, Config.Process.outputModules_(), edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), FastTimerService::PlotsPerProcess.paths_, pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Config.Process.psets, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, edm::EventProcessor.schedule_, Config.Process.sequences, edm::ProcessDesc.services_, Config.Process.services_(), ecaldqm::DBWriterWorker.source_, SiStripFedCablingBuilderFromDb.source_, jsoncollector::DataPoint.source_, sistrip::SpyEventMatcher.source_, ProcessCallGraph.source_, Config.Process.source_(), edm::InputSource::EventSourceSentry.source_, edm::InputSource::LumiSourceSentry.source_, edm::InputSource::RunSourceSentry.source_, Config.Process.subProcesses_(), edm::SubProcess.subProcesses_, edm::EventProcessor.subProcesses_, Config.Process.switchProducers_(), Config.Process.tasks, and Config.Process.vpsets.

Referenced by Mixins._Parameterizable.__addParameter(), Modules.SwitchProducer.__addParameter(), Mixins._ParameterTypeBase.__repr__(), Mixins._Parameterizable.__repr__(), Mixins._ValidatingParameterListBase.__repr__(), Types.VPSet.__repr__(), Mixins._Parameterizable.__setattr__(), Modules.SwitchProducer.__setattr__(), and SequenceTypes.Schedule.__str__().

829  def dumpPython(self, options=PrintOptions()):
830  """return a string containing the equivalent process defined using python"""
831  specialImportRegistry._reset()
832  header = "import FWCore.ParameterSet.Config as cms"
833  result = "process = cms.Process(\""+self.__name+"\")\n\n"
834  if self.source_():
835  result += "process.source = "+self.source_().dumpPython(options)
836  if self.looper_():
837  result += "process.looper = "+self.looper_().dumpPython()
838  result+=self._dumpPythonList(self.psets, options)
839  result+=self._dumpPythonList(self.vpsets, options)
840  result+=self._dumpPythonSubProcesses(self.subProcesses_(), options)
841  result+=self._dumpPythonList(self.producers_(), options)
842  result+=self._dumpPythonList(self.switchProducers_(), options)
843  result+=self._dumpPythonList(self.filters_() , options)
844  result+=self._dumpPythonList(self.analyzers_(), options)
845  result+=self._dumpPythonList(self.outputModules_(), options)
846  result+=self._dumpPythonList(self.services_(), options)
847  result+=self._dumpPythonList(self.es_producers_(), options)
848  result+=self._dumpPythonList(self.es_sources_(), options)
849  result+=self._dumpPython(self.es_prefers_(), options)
850  result+=self._dumpPythonList(self._itemsInDependencyOrder(self.tasks), options)
851  result+=self._dumpPythonList(self._itemsInDependencyOrder(self.sequences), options)
852  result+=self._dumpPythonList(self.paths_(), options)
853  result+=self._dumpPythonList(self.endpaths_(), options)
854  result+=self._dumpPythonList(self.aliases_(), options)
855  if not self.schedule_() == None:
856  result += 'process.schedule = ' + self.schedule.dumpPython(options)
857  imports = specialImportRegistry.getSpecialImports()
858  if len(imports) > 0:
859  header += "\n" + "\n".join(imports)
860  header += "\n\n"
861  return header+result
def subProcesses_(self)
Definition: Config.py:209
def es_producers_(self)
Definition: Config.py:260
def producers_(self)
Definition: Config.py:189
def es_sources_(self)
Definition: Config.py:264
def _itemsInDependencyOrder(self, processDictionaryOfItems)
Definition: Config.py:768
def source_(self)
Definition: Config.py:197
def schedule_(self)
Definition: Config.py:237
def endpaths_(self)
Definition: Config.py:225
def _dumpPythonSubProcesses(self, l, options)
Definition: Config.py:738
def looper_(self)
Definition: Config.py:203
def es_prefers_(self)
Definition: Config.py:268
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def filters_(self)
Definition: Config.py:178
def dumpPython(self, options=PrintOptions())
Definition: Config.py:829
def analyzers_(self)
Definition: Config.py:213
def switchProducers_(self)
Definition: Config.py:193
def _dumpPythonList(self, d, options)
Definition: Config.py:743
def paths_(self)
Definition: Config.py:221
def outputModules_(self)
Definition: Config.py:217
def services_(self)
Definition: Config.py:256
def _dumpPython(self, d, options)
Definition: Config.py:824
def aliases_(self)
Definition: Config.py:272
def Config.Process.endpaths_ (   self)
returns a dict of the endpaths that have been added to the Process

Definition at line 225 of file Config.py.

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

225  def endpaths_(self):
226  """returns a dict of the endpaths that have been added to the Process"""
227  return DictTypes.SortedAndFixedKeysDict(self.__endpaths)
def endpaths_(self)
Definition: Config.py:225
def Config.Process.es_prefers_ (   self)
returns a dict of the es_prefers that have been added to the Process

Definition at line 268 of file Config.py.

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

268  def es_prefers_(self):
269  """returns a dict of the es_prefers that have been added to the Process"""
270  return DictTypes.FixedKeysDict(self.__esprefers)
def es_prefers_(self)
Definition: Config.py:268
def Config.Process.es_producers_ (   self)
returns a dict of the esproducers that have been added to the Process

Definition at line 260 of file Config.py.

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

260  def es_producers_(self):
261  """returns a dict of the esproducers that have been added to the Process"""
262  return DictTypes.FixedKeysDict(self.__esproducers)
def es_producers_(self)
Definition: Config.py:260
def Config.Process.es_sources_ (   self)
returns a the es_sources that have been added to the Process

Definition at line 264 of file Config.py.

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

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

Definition at line 597 of file Config.py.

References psClasses.BuildTreeNode.__setattr__(), Config.Process.__setattr__(), Config.Process.__setObjectLabel(), Config.Process.add_(), cmsPerfStripChart.dict, dir, svgfig.SVG.extend(), Config.Process.extend(), and triggerObjects_cff.id.

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

597  def extend(self,other,items=()):
598  """Look in other and find types that we can use"""
599  # enable explicit check to avoid overwriting of existing objects
600  self.__dict__['_Process__InExtendCall'] = True
601 
602  seqs = dict()
603  tasksToAttach = dict()
604  mods = []
605  for name in dir(other):
606  #'from XX import *' ignores these, and so should we.
607  if name.startswith('_'):
608  continue
609  item = getattr(other,name)
610  if name == "source" or name == "looper":
611  # In these cases 'item' could be None if the specific object was not defined
612  if item is not None:
613  self.__setattr__(name,item)
614  elif isinstance(item,_ModuleSequenceType):
615  seqs[name]=item
616  elif isinstance(item,Task):
617  tasksToAttach[name] = item
618  elif isinstance(item,_Labelable):
619  self.__setattr__(name,item)
620  if not item.hasLabel_() :
621  item.setLabel(name)
622  elif isinstance(item,Schedule):
623  self.__setattr__(name,item)
624  elif isinstance(item,_Unlabelable):
625  self.add_(item)
626  elif isinstance(item,ProcessModifier):
627  mods.append(item)
628  elif isinstance(item,ProcessFragment):
629  self.extend(item)
630 
631  #now create a sequence that uses the newly made items
632  for name,seq in six.iteritems(seqs):
633  if id(seq) not in self._cloneToObjectDict:
634  self.__setattr__(name,seq)
635  else:
636  newSeq = self._cloneToObjectDict[id(seq)]
637  self.__dict__[name]=newSeq
638  self.__setObjectLabel(newSeq, name)
639  #now put in proper bucket
640  newSeq._place(name,self)
641 
642  for name, task in six.iteritems(tasksToAttach):
643  self.__setattr__(name, task)
644 
645  #apply modifiers now that all names have been added
646  for item in mods:
647  item.apply(self)
648 
649  self.__dict__['_Process__InExtendCall'] = False
650 
def extend(self, other, items=())
Definition: Config.py:597
def __setattr__(self, name, value)
Definition: Config.py:320
def __setObjectLabel(self, object, newLabel)
Definition: Config.py:293
def add_(self, value)
Definition: Config.py:484
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 1050 of file Config.py.

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

1050  def fillProcessDesc(self, processPSet):
1051  """Used by the framework to convert python to C++ objects"""
1052  class ServiceInjectorAdaptor(object):
1053  def __init__(self,ppset,thelist):
1054  self.__thelist = thelist
1055  self.__processPSet = ppset
1056  def addService(self,pset):
1057  self.__thelist.append(pset)
1058  def newPSet(self):
1059  return self.__processPSet.newPSet()
1060  #This adaptor is used to 'add' the method 'getTopPSet_'
1061  # to the ProcessDesc and PythonParameterSet C++ classes.
1062  # This method is needed for the PSet refToPSet_ functionality.
1063  class TopLevelPSetAcessorAdaptor(object):
1064  def __init__(self,ppset,process):
1065  self.__ppset = ppset
1066  self.__process = process
1067  def __getattr__(self,attr):
1068  return getattr(self.__ppset,attr)
1069  def getTopPSet_(self,label):
1070  return getattr(self.__process,label)
1071  def newPSet(self):
1072  return TopLevelPSetAcessorAdaptor(self.__ppset.newPSet(),self.__process)
1073  def addPSet(self,tracked,name,ppset):
1074  return self.__ppset.addPSet(tracked,name,self.__extractPSet(ppset))
1075  def addVPSet(self,tracked,name,vpset):
1076  return self.__ppset.addVPSet(tracked,name,[self.__extractPSet(x) for x in vpset])
1077  def __extractPSet(self,pset):
1078  if isinstance(pset,TopLevelPSetAcessorAdaptor):
1079  return pset.__ppset
1080  return pset
1081 
1082  self.validate()
1083  processPSet.addString(True, "@process_name", self.name_())
1084  all_modules = self.producers_().copy()
1085  all_modules.update(self.filters_())
1086  all_modules.update(self.analyzers_())
1087  all_modules.update(self.outputModules_())
1088  adaptor = TopLevelPSetAcessorAdaptor(processPSet,self)
1089  self._insertInto(adaptor, self.psets_())
1090  self._insertInto(adaptor, self.vpsets_())
1091  self._insertOneInto(adaptor, "@all_sources", self.source_(), True)
1092  self._insertOneInto(adaptor, "@all_loopers", self.looper_(), True)
1093  self._insertSubProcessesInto(adaptor, "@all_subprocesses", self.subProcesses_(), False)
1094  self._insertManyInto(adaptor, "@all_esprefers", self.es_prefers_(), True)
1095  self._insertManyInto(adaptor, "@all_aliases", self.aliases_(), True)
1096  # This will visit all the paths and endpaths that are scheduled to run,
1097  # as well as the Tasks associated to them and the schedule. It remembers
1098  # the modules, ESSources, ESProducers, and services it visits.
1099  nodeVisitor = NodeVisitor()
1100  self._insertPaths(adaptor, nodeVisitor)
1101  all_modules_onTasksOrScheduled = { key:value for key, value in six.iteritems(all_modules) if value in nodeVisitor.modules }
1102  self._insertManyInto(adaptor, "@all_modules", all_modules_onTasksOrScheduled, True)
1103  all_switches = self.switchProducers_().copy()
1104  all_switches_onTasksOrScheduled = {key:value for key, value in six.iteritems(all_switches) if value in nodeVisitor.modules }
1105  self._insertSwitchProducersInto(adaptor, "@all_modules", "@all_aliases", all_switches_onTasksOrScheduled, True)
1106  # Same as nodeVisitor except this one visits all the Tasks attached
1107  # to the process.
1108  processNodeVisitor = NodeVisitor()
1109  for pTask in six.itervalues(self.tasks):
1110  pTask.visit(processNodeVisitor)
1111  esProducersToEnable = {}
1112  for esProducerName, esProducer in six.iteritems(self.es_producers_()):
1113  if esProducer in nodeVisitor.esProducers or not (esProducer in processNodeVisitor.esProducers):
1114  esProducersToEnable[esProducerName] = esProducer
1115  self._insertManyInto(adaptor, "@all_esmodules", esProducersToEnable, True)
1116  esSourcesToEnable = {}
1117  for esSourceName, esSource in six.iteritems(self.es_sources_()):
1118  if esSource in nodeVisitor.esSources or not (esSource in processNodeVisitor.esSources):
1119  esSourcesToEnable[esSourceName] = esSource
1120  self._insertManyInto(adaptor, "@all_essources", esSourcesToEnable, True)
1121  #handle services differently
1122  services = []
1123  for serviceName, serviceObject in six.iteritems(self.services_()):
1124  if serviceObject in nodeVisitor.services or not (serviceObject in processNodeVisitor.services):
1125  serviceObject.insertInto(ServiceInjectorAdaptor(adaptor,services))
1126  adaptor.addVPSet(False,"services",services)
1127  return processPSet
1128 
def subProcesses_(self)
Definition: Config.py:209
def vpsets_(self)
Definition: Config.py:280
def copy(args, dbName)
def _insertPaths(self, processPSet, nodeVisitor)
Definition: Config.py:927
def es_producers_(self)
Definition: Config.py:260
def producers_(self)
Definition: Config.py:189
def _insertOneInto(self, parameterSet, label, item, tracked)
Definition: Config.py:889
def es_sources_(self)
Definition: Config.py:264
def __init__(self, name, Mods)
Definition: Config.py:103
def source_(self)
Definition: Config.py:197
def psets_(self)
Definition: Config.py:276
def _insertSubProcessesInto(self, parameterSet, label, itemList, tracked)
Definition: Config.py:914
def validate(self)
Definition: Config.py:1129
def _insertSwitchProducersInto(self, parameterSet, labelModules, labelAliases, itemDict, tracked)
Definition: Config.py:904
def looper_(self)
Definition: Config.py:203
def es_prefers_(self)
Definition: Config.py:268
def filters_(self)
Definition: Config.py:178
def analyzers_(self)
Definition: Config.py:213
def _insertManyInto(self, parameterSet, label, itemDict, tracked)
Definition: Config.py:896
def switchProducers_(self)
Definition: Config.py:193
def name_(self)
Definition: Config.py:182
def outputModules_(self)
Definition: Config.py:217
def _insertInto(self, parameterSet, itemDict)
Definition: Config.py:886
def services_(self)
Definition: Config.py:256
def fillProcessDesc(self, processPSet)
Definition: Config.py:1050
def aliases_(self)
Definition: Config.py:272
def Config.Process.filterNames (   self)
Returns a string containing all the EDFilter labels separated by a blank

Definition at line 154 of file Config.py.

References pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, cms::DDFilteredView.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), and relativeConstraints.keys.

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

Definition at line 178 of file Config.py.

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

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

Definition at line 881 of file Config.py.

881  def globalReplace(self,label,new):
882  """ Replace the item with label 'label' by object 'new' in the process and all sequences/paths/tasks"""
883  if not hasattr(self,label):
884  raise LookupError("process has no item of label "+label)
885  setattr(self,label,new)
def globalReplace(self, label, new)
Definition: Config.py:881
def Config.Process.isUsingModifier (   self,
  mod 
)
returns True if the Modifier is in used by this Process

Definition at line 285 of file Config.py.

285  def isUsingModifier(self,mod):
286  """returns True if the Modifier is in used by this Process"""
287  if mod._isChosen():
288  for m in self.__modifiers:
289  if m._isOrContains(mod):
290  return True
291  return False
292 
def isUsingModifier(self, mod)
Definition: Config.py:285
def Config.Process.load (   self,
  moduleName 
)

Definition at line 593 of file Config.py.

References svgfig.SVG.extend(), and Config.Process.extend().

593  def load(self, moduleName):
594  moduleName = moduleName.replace("/",".")
595  module = __import__(moduleName)
596  self.extend(sys.modules[moduleName])
def load(self, moduleName)
Definition: Config.py:593
def extend(self, other, items=())
Definition: Config.py:597
def Config.Process.looper_ (   self)
returns the looper that has been added to the Process or None if none have been added

Definition at line 203 of file Config.py.

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

203  def looper_(self):
204  """returns the looper that has been added to the Process or None if none have been added"""
205  return self.__looper
def looper_(self)
Definition: Config.py:203
def Config.Process.name_ (   self)

Definition at line 182 of file Config.py.

References dataset.Dataset.__name, and genericValidation.ValidationWithPlotsSummaryBase.SummaryItem.__name.

182  def name_(self):
183  return self.__name
def name_(self)
Definition: Config.py:182
def Config.Process.outputModules_ (   self)
returns a dict of the output modules that have been added to the Process

Definition at line 217 of file Config.py.

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

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

Definition at line 157 of file Config.py.

References join(), relativeConstraints.keys, edm::MainParameterSet.paths_, edm::HLTGlobalStatus.paths_, heppy::TriggerBitChecker.paths_, edm::PathsAndConsumesOfModules.paths_, ProcessCallGraph::ProcessType.paths_, pat::TriggerEvent.paths_, HLTPerformanceInfo.paths_, Config.Process.paths_(), and FastTimerService::PlotsPerProcess.paths_.

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

Definition at line 221 of file Config.py.

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

221  def paths_(self):
222  """returns a dict of the paths that have been added to the Process"""
223  return DictTypes.SortedAndFixedKeysDict(self.__paths)
def paths_(self)
Definition: Config.py:221
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 that 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 1136 of file Config.py.

1136  def prefer(self, esmodule,*args,**kargs):
1137  """Prefer this ES source or producer. The argument can
1138  either be an object label, e.g.,
1139  process.prefer(process.juicerProducer) (not supported yet)
1140  or a name of an ESSource or ESProducer
1141  process.prefer("juicer")
1142  or a type of unnamed ESSource or ESProducer
1143  process.prefer("JuicerProducer")
1144  In addition, you can pass as a labelled arguments the name of the Record you wish to
1145  prefer where the type passed is a cms.vstring and that vstring can contain the
1146  name of the C++ types in the Record that are being preferred, e.g.,
1147  #prefer all data in record 'OrangeRecord' from 'juicer'
1148  process.prefer("juicer", OrangeRecord=cms.vstring())
1149  or
1150  #prefer only "Orange" data in "OrangeRecord" from "juicer"
1151  process.prefer("juicer", OrangeRecord=cms.vstring("Orange"))
1152  or
1153  #prefer only "Orange" data with label "ExtraPulp" in "OrangeRecord" from "juicer"
1154  ESPrefer("ESJuicerProd", OrangeRecord=cms.vstring("Orange/ExtraPulp"))
1155  """
1156  # see if this refers to a named ESProducer
1157  if isinstance(esmodule, ESSource) or isinstance(esmodule, ESProducer):
1158  raise RuntimeError("Syntax of process.prefer(process.esmodule) not supported yet")
1159  elif self._findPreferred(esmodule, self.es_producers_(),*args,**kargs) or \
1160  self._findPreferred(esmodule, self.es_sources_(),*args,**kargs):
1161  pass
1162  else:
1163  raise RuntimeError("Cannot resolve prefer for "+repr(esmodule))
1164 
def es_producers_(self)
Definition: Config.py:260
def _findPreferred(self, esname, d, args, kargs)
Definition: Config.py:1165
def es_sources_(self)
Definition: Config.py:264
def prefer(self, esmodule, args, kargs)
Definition: Config.py:1136
def Config.Process.producerNames (   self)
Returns a string containing all the EDProducer labels separated by a blank

Definition at line 145 of file Config.py.

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

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

Definition at line 189 of file Config.py.

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

189  def producers_(self):
190  """returns a dict of the producers that have been added to the Process"""
191  return DictTypes.FixedKeysDict(self.__producers)
def producers_(self)
Definition: Config.py:189
def Config.Process.prune (   self,
  verbose = False,
  keepUnresolvedSequencePlaceholders = False 
)
Remove clutter from the process that 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 990 of file Config.py.

References Config.Process._pruneModules(), HLTMuonValidator.analyzers_, Config.Process.analyzers_(), Config.Process.endpaths, pat::eventhypothesis::AndFilter.filters_, pat::eventhypothesis::OrFilter.filters_, pat::TriggerEvent.filters_, TrigObjTnPHistColl::FilterSelector::FilterSet.filters_, cms::DDFilteredView.filters_, FilterOR.filters_, Config.Process.filters_(), FilterSelection.filters_, FilterSelections.filters_, join(), list(), cms::DDSpecPar.paths, Config.Process.paths, edm.print(), pf2pat::EventHypothesis.producers_, Config.Process.producers_(), Json::Path.resolve(), Config.Process.resolve(), EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, edm::EventProcessor.schedule_, Config.Process.sequences, Config.Process.switchProducers_(), and Config.Process.vpsets_().

Referenced by dirstructure.Directory.prune().

990  def prune(self,verbose=False,keepUnresolvedSequencePlaceholders=False):
991  """ Remove clutter from the process that we think is unnecessary:
992  tracked PSets, VPSets and unused modules and sequences. If a Schedule has been set, then Paths and EndPaths
993  not in the schedule will also be removed, along with an modules and sequences used only by
994  those removed Paths and EndPaths."""
995 # need to update this to only prune psets not on refToPSets
996 # but for now, remove the delattr
997 # for name in self.psets_():
998 # if getattr(self,name).isTracked():
999 # delattr(self, name)
1000  for name in self.vpsets_():
1001  delattr(self, name)
1002  #first we need to resolve any SequencePlaceholders being used
1003  self.resolve(keepUnresolvedSequencePlaceholders)
1004  usedModules = set()
1005  unneededPaths = set()
1006  if self.schedule_():
1007  usedModules=set(self.schedule_().moduleNames())
1008  #get rid of unused paths
1009  schedNames = set(( x.label_() for x in self.schedule_()))
1010  names = set(self.paths)
1011  names.update(set(self.endpaths))
1012  unneededPaths = names - schedNames
1013  for n in unneededPaths:
1014  delattr(self,n)
1015  else:
1016  pths = list(six.itervalues(self.paths))
1017  pths.extend(six.itervalues(self.endpaths))
1018  temp = Schedule(*pths)
1019  usedModules=set(temp.moduleNames())
1020  unneededModules = self._pruneModules(self.producers_(), usedModules)
1021  unneededModules.update(self._pruneModules(self.switchProducers_(), usedModules))
1022  unneededModules.update(self._pruneModules(self.filters_(), usedModules))
1023  unneededModules.update(self._pruneModules(self.analyzers_(), usedModules))
1024  #remove sequences that do not appear in remaining paths and endpaths
1025  seqs = list()
1026  sv = SequenceVisitor(seqs)
1027  for p in six.itervalues(self.paths):
1028  p.visit(sv)
1029  for p in six.itervalues(self.endpaths):
1030  p.visit(sv)
1031  keepSeqSet = set(( s for s in seqs if s.hasLabel_()))
1032  availableSeqs = set(six.itervalues(self.sequences))
1033  unneededSeqs = availableSeqs-keepSeqSet
1034  unneededSeqLabels = []
1035  for s in unneededSeqs:
1036  unneededSeqLabels.append(s.label_())
1037  delattr(self,s.label_())
1038  if verbose:
1039  print("prune removed the following:")
1040  print(" modules:"+",".join(unneededModules))
1041  print(" sequences:"+",".join(unneededSeqLabels))
1042  print(" paths/endpaths:"+",".join(unneededPaths))
def _pruneModules(self, d, scheduledNames)
Definition: Config.py:1043
def vpsets_(self)
Definition: Config.py:280
def producers_(self)
Definition: Config.py:189
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def schedule_(self)
Definition: Config.py:237
def resolve(self, keepUnresolvedSequencePlaceholders=False)
Definition: Config.py:981
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def filters_(self)
Definition: Config.py:178
def analyzers_(self)
Definition: Config.py:213
def switchProducers_(self)
Definition: Config.py:193
def prune(self, verbose=False, keepUnresolvedSequencePlaceholders=False)
Definition: Config.py:990
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 that have been added to the Process

Definition at line 276 of file Config.py.

276  def psets_(self):
277  """returns a dict of the PSets that have been added to the Process"""
278  return DictTypes.FixedKeysDict(self.__psets)
def psets_(self)
Definition: Config.py:276
def Config.Process.resolve (   self,
  keepUnresolvedSequencePlaceholders = False 
)

Definition at line 981 of file Config.py.

References Config.Process.endpaths, cms::DDSpecPar.paths, Config.Process.paths, EcalDQMonitorTask.schedule_, edm::ModuleChanger.schedule_, edm::ScheduleInfo.schedule_, edm::PathsAndConsumesOfModules.schedule_, Config.Process.schedule_(), edm::test::TestProcessor.schedule_, edm::SubProcess.schedule_, and edm::EventProcessor.schedule_.

Referenced by Config.Process.prune().

981  def resolve(self,keepUnresolvedSequencePlaceholders=False):
982  for x in six.itervalues(self.paths):
983  x.resolve(self.__dict__,keepUnresolvedSequencePlaceholders)
984  for x in six.itervalues(self.endpaths):
985  x.resolve(self.__dict__,keepUnresolvedSequencePlaceholders)
986  if not self.schedule_() == None:
987  for task in self.schedule_()._tasks:
988  task.resolve(self.__dict__,keepUnresolvedSequencePlaceholders)
989 
def schedule_(self)
Definition: Config.py:237
def resolve(self, keepUnresolvedSequencePlaceholders=False)
Definition: Config.py:981
def Config.Process.schedule_ (   self)
returns the schedule that has been added to the Process or None if none have been added

Definition at line 237 of file Config.py.

Referenced by Config.Process._insertPaths(), Config.Process._replaceInSchedule(), Config.Process.dumpPython(), Config.Process.prune(), and Config.Process.resolve().

237  def schedule_(self):
238  """returns the schedule that has been added to the Process or None if none have been added"""
239  return self.__schedule
def schedule_(self)
Definition: Config.py:237
def Config.Process.sequences_ (   self)
returns a dict of the sequences that have been added to the Process

Definition at line 229 of file Config.py.

Referenced by Config.Process.dumpConfig().

229  def sequences_(self):
230  """returns a dict of the sequences that have been added to the Process"""
231  return DictTypes.FixedKeysDict(self.__sequences)
def sequences_(self)
Definition: Config.py:229
def Config.Process.services_ (   self)
returns a dict of the services that have been added to the Process

Definition at line 256 of file Config.py.

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

256  def services_(self):
257  """returns a dict of the services that have been added to the Process"""
258  return DictTypes.FixedKeysDict(self.__services)
def services_(self)
Definition: Config.py:256
def Config.Process.setLooper_ (   self,
  lpr 
)

Definition at line 206 of file Config.py.

References Config.Process._placeLooper().

206  def setLooper_(self,lpr):
207  self._placeLooper('looper',lpr)
def setLooper_(self, lpr)
Definition: Config.py:206
def _placeLooper(self, name, mod)
Definition: Config.py:578
def Config.Process.setName_ (   self,
  name 
)

Definition at line 184 of file Config.py.

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

Definition at line 240 of file Config.py.

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

240  def setPartialSchedule_(self,sch,label):
241  if label == "schedule":
242  self.setSchedule_(sch)
243  else:
244  self._place(label, sch, self.__partialschedules)
def setPartialSchedule_(self, sch, label)
Definition: Config.py:240
def setSchedule_(self, sch)
Definition: Config.py:245
def _place(self, name, mod, d)
Definition: Config.py:520
def Config.Process.setSchedule_ (   self,
  sch 
)

Definition at line 245 of file Config.py.

References str.

Referenced by Config.Process.setPartialSchedule_().

245  def setSchedule_(self,sch):
246  # See if every path and endpath has been inserted into the process
247  index = 0
248  try:
249  for p in sch:
250  p.label_()
251  index +=1
252  except:
253  raise RuntimeError("The path at index "+str(index)+" in the Schedule was not attached to the process.")
254  self.__dict__['_Process__schedule'] = sch
def setSchedule_(self, sch)
Definition: Config.py:245
#define str(s)
def Config.Process.setSource_ (   self,
  src 
)

Definition at line 200 of file Config.py.

References Config.Process._placeSource().

200  def setSource_(self,src):
201  self._placeSource('source',src)
def setSource_(self, src)
Definition: Config.py:200
def _placeSource(self, name, mod)
Definition: Config.py:570
def Config.Process.setStrict (   self,
  value 
)

Definition at line 140 of file Config.py.

References Config.Process.__isStrict.

140  def setStrict(self, value):
141  self.__isStrict = value
142  _Module.__isStrict__ = True
143 
def setStrict(self, value)
Definition: Config.py:140
def Config.Process.source_ (   self)
returns the source that has been added to the Process or None if none have been added

Definition at line 197 of file Config.py.

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

197  def source_(self):
198  """returns the source that has been added to the Process or None if none have been added"""
199  return self.__source
def source_(self)
Definition: Config.py:197
def Config.Process.subProcesses_ (   self)
returns a list of the subProcesses that have been added to the Process

Definition at line 209 of file Config.py.

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

209  def subProcesses_(self):
210  """returns a list of the subProcesses that have been added to the Process"""
211  return self.__subProcesses
def subProcesses_(self)
Definition: Config.py:209
def Config.Process.switchProducerNames (   self)
Returns a string containing all the SwitchProducer labels separated by a blank

Definition at line 148 of file Config.py.

References join(), relativeConstraints.keys, and Config.Process.switchProducers_().

149  """Returns a string containing all the SwitchProducer labels separated by a blank"""
150  return ' '.join(self.switchProducers_().keys())
static std::string join(char **cmd)
Definition: RemoteFile.cc:18
def switchProducerNames(self)
Definition: Config.py:148
def switchProducers_(self)
Definition: Config.py:193
def Config.Process.switchProducers_ (   self)
returns a dict of the SwitchProducers that have been added to the Process

Definition at line 193 of file Config.py.

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

193  def switchProducers_(self):
194  """returns a dict of the SwitchProducers that have been added to the Process"""
195  return DictTypes.FixedKeysDict(self.__switchproducers)
def switchProducers_(self)
Definition: Config.py:193
def Config.Process.tasks_ (   self)
returns a dict of the tasks that have been added to the Process

Definition at line 233 of file Config.py.

233  def tasks_(self):
234  """returns a dict of the tasks that have been added to the Process"""
235  return DictTypes.FixedKeysDict(self.__tasks)
def tasks_(self)
Definition: Config.py:233
def Config.Process.validate (   self)

Definition at line 1129 of file Config.py.

1129  def validate(self):
1130  # check if there's some input
1131  # Breaks too many unit tests for now
1132  #if self.source_() == None and self.looper_() == None:
1133  # raise RuntimeError("No input source was found for this process")
1134  pass
1135 
def validate(self)
Definition: Config.py:1129
def Config.Process.vpsets_ (   self)
returns a dict of the VPSets that have been added to the Process

Definition at line 280 of file Config.py.

Referenced by Config.Process.prune().

280  def vpsets_(self):
281  """returns a dict of the VPSets that have been added to the Process"""
282  return DictTypes.FixedKeysDict(self.__vpsets)
def vpsets_(self)
Definition: Config.py:280

Member Data Documentation

Config.Process.__isStrict
private
Config.Process.__ppset
private

Definition at line 1065 of file Config.py.

Config.Process.__process
private
Config.Process.__processPSet
private

Definition at line 1055 of file Config.py.

Config.Process.__thelist
private

Definition at line 1054 of file Config.py.

Property Documentation

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

Definition at line 275 of file Config.py.

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

Definition at line 216 of file Config.py.

Referenced by looper.Looper.loop(), and looper.Looper.write().

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

Definition at line 271 of file Config.py.

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

Definition at line 263 of file Config.py.

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

Definition at line 267 of file Config.py.

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

Definition at line 181 of file Config.py.

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

Definition at line 208 of file Config.py.

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

Definition at line 220 of file Config.py.

Config.Process.paths = property(paths_,doc="dictionary containing the paths for the process")
static
Config.Process.process = property(name_,setName_, doc="name of the process")
static
Config.Process.producers = property(producers_,doc="dictionary containing the producers for the process")
static

Definition at line 192 of file Config.py.

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

Definition at line 279 of file Config.py.

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

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

Definition at line 255 of file Config.py.

Referenced by Config.Process.dumpConfig().

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

Definition at line 259 of file Config.py.

Referenced by config.Config.__str__().

Config.Process.source = property(source_,setSource_,doc='the main source or None if not set')
static
Config.Process.subProcesses = property(subProcesses_,doc='the SubProcesses that have been added to the Process')
static

Definition at line 212 of file Config.py.

Config.Process.switchProducers = property(switchProducers_,doc="dictionary containing the SwitchProducers for the process")
static

Definition at line 196 of file Config.py.

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

Definition at line 283 of file Config.py.

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