CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
MassReplace.MassSearchReplaceAnyInputTagVisitor Class Reference
Inheritance diagram for MassReplace.MassSearchReplaceAnyInputTagVisitor:

Public Member Functions

def __init__ (self, paramSearch, paramReplace, verbose=False, moduleLabelOnly=False, skipLabelTest=False)
 
def doIt (self, pset, base)
 
def enter (self, visitee)
 
def leave (self, visitee)
 

Static Public Member Functions

def standardizeInputTagFmt (inputTag)
 

Private Attributes

 _moduleLabelOnly
 
 _moduleName
 
 _paramReplace
 
 _paramSearch
 
 _skipLabelTest
 
 _verbose
 

Detailed Description

Visitor that travels within a cms.Sequence, looks for a parameter and replace its value
   It will climb down within PSets, VPSets and VInputTags to find its target

Definition at line 4 of file MassReplace.py.

Constructor & Destructor Documentation

def MassReplace.MassSearchReplaceAnyInputTagVisitor.__init__ (   self,
  paramSearch,
  paramReplace,
  verbose = False,
  moduleLabelOnly = False,
  skipLabelTest = False 
)

Definition at line 7 of file MassReplace.py.

7  def __init__(self,paramSearch,paramReplace,verbose=False,moduleLabelOnly=False,skipLabelTest=False):
8  self._paramSearch = self.standardizeInputTagFmt(paramSearch)
9  self._paramReplace = self.standardizeInputTagFmt(paramReplace)
10  self._moduleName = ''
11  self._verbose=verbose
12  self._moduleLabelOnly=moduleLabelOnly
13  self._skipLabelTest=skipLabelTest
def __init__(self, paramSearch, paramReplace, verbose=False, moduleLabelOnly=False, skipLabelTest=False)
Definition: MassReplace.py:7

Member Function Documentation

def MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt (   self,
  pset,
  base 
)

Definition at line 14 of file MassReplace.py.

References MassReplace.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly, MassReplace.MassSearchReplaceAnyInputTagVisitor._paramReplace, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramReplace, MassReplace.MassSearchReplaceAnyInputTagVisitor._paramSearch, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramSearch, MassReplace.MassSearchReplaceAnyInputTagVisitor._verbose, uploads.output._verbose, uploads.uploader._verbose, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._verbose, MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt(), TkCommonModeCalculator.doIt(), MedianCommonModeCalculator.doIt(), TT6CommonModeCalculator.doIt(), ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor.doIt(), edm.print(), and MassReplace.MassSearchReplaceAnyInputTagVisitor.standardizeInputTagFmt().

Referenced by MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt(), and MassReplace.MassSearchReplaceAnyInputTagVisitor.enter().

14  def doIt(self,pset,base):
15  if isinstance(pset, cms._Parameterizable):
16  for name in pset.parameterNames_():
17  # if I use pset.parameters_().items() I get copies of the parameter values
18  # so I can't modify the nested pset
19  value = getattr(pset,name)
20  type = value.pythonTypeName()
21  if type == 'cms.PSet':
22  self.doIt(value,base+"."+name)
23  elif type == 'cms.VPSet':
24  for (i,ps) in enumerate(value): self.doIt(ps, "%s.%s[%d]"%(base,name,i) )
25  elif type == 'cms.VInputTag':
26  for (i,n) in enumerate(value):
27  # VInputTag can be declared as a list of strings, so ensure that n is formatted correctly
28  n = self.standardizeInputTagFmt(n)
29  if (n == self._paramSearch):
30  if self._verbose:print("Replace %s.%s[%d] %s ==> %s " % (base, name, i, self._paramSearch, self._paramReplace))
31  value[i] = self._paramReplace
32  elif self._moduleLabelOnly and n.moduleLabel == self._paramSearch.moduleLabel:
33  nrep = n; nrep.moduleLabel = self._paramReplace.moduleLabel
34  if self._verbose:print("Replace %s.%s[%d] %s ==> %s " % (base, name, i, n, nrep))
35  value[i] = nrep
36  elif type.endswith('.InputTag'):
37  if value == self._paramSearch:
38  if self._verbose:print("Replace %s.%s %s ==> %s " % (base, name, self._paramSearch, self._paramReplace))
39  from copy import deepcopy
40  if 'untracked' in type:
41  setattr(pset, name, cms.untracked.InputTag(self._paramReplace.getModuleLabel(),
42  self._paramReplace.getProductInstanceLabel(),
43  self._paramReplace.getProcessName()))
44  else:
45  setattr(pset, name, deepcopy(self._paramReplace) )
46  elif self._moduleLabelOnly and value.moduleLabel == self._paramSearch.moduleLabel:
47  from copy import deepcopy
48  repl = deepcopy(getattr(pset, name))
49  repl.moduleLabel = self._paramReplace.moduleLabel
50  setattr(pset, name, repl)
51  if self._verbose:print("Replace %s.%s %s ==> %s " % (base, name, value, repl))
52 
53 
S & print(S &os, JobReport::InputFile const &f)
Definition: JobReport.cc:66
def MassReplace.MassSearchReplaceAnyInputTagVisitor.enter (   self,
  visitee 
)

Definition at line 61 of file MassReplace.py.

References MassReplace.MassSearchReplaceAnyInputTagVisitor._skipLabelTest, MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt(), TkCommonModeCalculator.doIt(), MedianCommonModeCalculator.doIt(), TT6CommonModeCalculator.doIt(), and ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor.doIt().

61  def enter(self,visitee):
62  label = ''
63  if (not self._skipLabelTest):
64  if hasattr(visitee,"hasLabel_") and visitee.hasLabel_():
65  label = visitee.label_()
66  else: label = '<Module not in a Process>'
67  else:
68  label = '<Module label not tested>'
69  self.doIt(visitee, label)
def MassReplace.MassSearchReplaceAnyInputTagVisitor.leave (   self,
  visitee 
)

Definition at line 70 of file MassReplace.py.

70  def leave(self,visitee):
71  pass
72 
def MassReplace.MassSearchReplaceAnyInputTagVisitor.standardizeInputTagFmt (   inputTag)
static
helper function to ensure that the InputTag is defined as cms.InputTag(str) and not as a plain str 

Definition at line 55 of file MassReplace.py.

Referenced by MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt().

55  def standardizeInputTagFmt(inputTag):
56  ''' helper function to ensure that the InputTag is defined as cms.InputTag(str) and not as a plain str '''
57  if not isinstance(inputTag, cms.InputTag):
58  return cms.InputTag(inputTag)
59  return inputTag
60 

Member Data Documentation

MassReplace.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly
private

Definition at line 12 of file MassReplace.py.

Referenced by MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt().

MassReplace.MassSearchReplaceAnyInputTagVisitor._moduleName
private

Definition at line 10 of file MassReplace.py.

MassReplace.MassSearchReplaceAnyInputTagVisitor._paramReplace
private

Definition at line 9 of file MassReplace.py.

Referenced by MassReplace.MassSearchReplaceAnyInputTagVisitor.doIt().

MassReplace.MassSearchReplaceAnyInputTagVisitor._paramSearch
private
MassReplace.MassSearchReplaceAnyInputTagVisitor._skipLabelTest
private
MassReplace.MassSearchReplaceAnyInputTagVisitor._verbose
private