CMS 3D CMS Logo

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

Public Member Functions

def __init__
 
def doIt
 
def enter
 
def leave
 

Static Public Member Functions

def standardizeInputTagFmt
 

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 108 of file helpers.py.

Constructor & Destructor Documentation

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

Member Function Documentation

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

Definition at line 118 of file helpers.py.

References helpers.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly, helpers.MassSearchReplaceAnyInputTagVisitor._paramReplace, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramReplace, helpers.MassSearchReplaceParamVisitor._paramSearch, helpers.MassSearchReplaceAnyInputTagVisitor._paramSearch, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._paramSearch, HTMHTAnalyzer._verbose, helpers.MassSearchReplaceParamVisitor._verbose, helpers.MassSearchReplaceAnyInputTagVisitor._verbose, ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor._verbose, TkCommonModeCalculator.doIt(), MedianCommonModeCalculator.doIt(), TT6CommonModeCalculator.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), ConfigBuilder.ConfigBuilder.MassSearchReplaceProcessNameVisitor.doIt(), and helpers.MassSearchReplaceAnyInputTagVisitor.standardizeInputTagFmt().

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceAnyInputTagVisitor.enter(), and helpers.MassSearchReplaceAnyInputTagVisitor.enter().

119  def doIt(self,pset,base):
120  if isinstance(pset, cms._Parameterizable):
121  for name in pset.parameterNames_():
122  # if I use pset.parameters_().items() I get copies of the parameter values
123  # so I can't modify the nested pset
124  value = getattr(pset,name)
125  type = value.pythonTypeName()
126  if type == 'cms.PSet':
127  self.doIt(value,base+"."+name)
128  elif type == 'cms.VPSet':
129  for (i,ps) in enumerate(value): self.doIt(ps, "%s.%s[%d]"%(base,name,i) )
130  elif type == 'cms.VInputTag':
131  for (i,n) in enumerate(value):
132  # VInputTag can be declared as a list of strings, so ensure that n is formatted correctly
133  n = self.standardizeInputTagFmt(n)
134  if (n == self._paramSearch):
135  if self._verbose:print "Replace %s.%s[%d] %s ==> %s " % (base, name, i, self._paramSearch, self._paramReplace)
136  value[i] = self._paramReplace
137  elif self._moduleLabelOnly and n.moduleLabel == self._paramSearch.moduleLabel:
138  nrep = n; nrep.moduleLabel = self._paramReplace.moduleLabel
139  if self._verbose:print "Replace %s.%s[%d] %s ==> %s " % (base, name, i, n, nrep)
140  value[i] = nrep
141  elif type.endswith('.InputTag'):
142  if value == self._paramSearch:
143  if self._verbose:print "Replace %s.%s %s ==> %s " % (base, name, self._paramSearch, self._paramReplace)
144  from copy import deepcopy
145  if 'untracked' in type:
146  setattr(pset, name, cms.untracked.InputTag(self._paramReplace.getModuleLabel(),
147  self._paramReplace.getProductInstanceLabel(),
148  self._paramReplace.getProcessName()))
149  else:
150  setattr(pset, name, deepcopy(self._paramReplace) )
151  elif self._moduleLabelOnly and value.moduleLabel == self._paramSearch.moduleLabel:
152  from copy import deepcopy
153  repl = deepcopy(getattr(pset, name))
154  repl.moduleLabel = self._paramReplace.moduleLabel
155  setattr(pset, name, repl)
156  if self._verbose:print "Replace %s.%s %s ==> %s " % (base, name, value, repl)
157 
def helpers.MassSearchReplaceAnyInputTagVisitor.enter (   self,
  visitee 
)

Definition at line 165 of file helpers.py.

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

166  def enter(self,visitee):
167  label = ''
168  if (not self._skipLabelTest):
169  try: label = visitee.label_()
170  except AttributeError: label = '<Module not in a Process>'
171  else:
172  label = '<Module label not tested>'
self.doIt(visitee, label)
def helpers.MassSearchReplaceAnyInputTagVisitor.leave (   self,
  visitee 
)

Definition at line 173 of file helpers.py.

174  def leave(self,visitee):
175  pass
176 
#FIXME name is not generic enough now
def helpers.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 159 of file helpers.py.

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), and helpers.MassSearchReplaceAnyInputTagVisitor.doIt().

160  def standardizeInputTagFmt(inputTag):
161  ''' helper function to ensure that the InputTag is defined as cms.InputTag(str) and not as a plain str '''
162  if not isinstance(inputTag, cms.InputTag):
163  return cms.InputTag(inputTag)
164  return inputTag

Member Data Documentation

helpers.MassSearchReplaceAnyInputTagVisitor._moduleLabelOnly
private

Definition at line 116 of file helpers.py.

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), and helpers.MassSearchReplaceAnyInputTagVisitor.doIt().

helpers.MassSearchReplaceAnyInputTagVisitor._moduleName
private

Definition at line 114 of file helpers.py.

helpers.MassSearchReplaceAnyInputTagVisitor._paramReplace
private

Definition at line 113 of file helpers.py.

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), and helpers.MassSearchReplaceAnyInputTagVisitor.doIt().

helpers.MassSearchReplaceAnyInputTagVisitor._paramSearch
private

Definition at line 112 of file helpers.py.

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceParamVisitor.enter(), HiHelperTools.MassSearchParamVisitor.enter(), and helpers.MassSearchParamVisitor.enter().

helpers.MassSearchReplaceAnyInputTagVisitor._skipLabelTest
private

Definition at line 117 of file helpers.py.

Referenced by helpers.MassSearchReplaceAnyInputTagVisitor.enter().

helpers.MassSearchReplaceAnyInputTagVisitor._verbose
private

Definition at line 115 of file helpers.py.

Referenced by HiHelperTools.MassSearchReplaceAnyInputTagVisitor.doIt(), helpers.MassSearchReplaceAnyInputTagVisitor.doIt(), HiHelperTools.MassSearchReplaceParamVisitor.enter(), cmsPerfSuite.PerfSuite.mkCandleDir(), cmsPerfSuite.PerfSuite.optionParse(), cmsPerfSuite.PerfSuite.printFlush(), cmsPerfSuite.PerfSuite.runcmd(), and cmsPerfSuite.PerfSuite.runCmdSet().