File indexing completed on 2024-05-20 22:39:50
0001 import importlib
0002 from FWCore.ParameterSet.ModulesProxy import _ModuleProxy
0003 from FWCore.ParameterSet.Types import _ProxyParameter, _RequiredParameter, _OptionalParameter
0004 import FWCore.ParameterSet.Config as cms
0005
0006
0007 cms.int32.dummyDefault = 999
0008 cms.uint32.dummyDefault = 999
0009 cms.int64.dummyDefault = 999
0010 cms.uint64.dummyDefault = 999
0011 cms.string.dummyDefault="__default__"
0012 cms.double.dummyDefault = 9999
0013 cms.vdouble.dummyDefault = []
0014 cms.vint32.dummyDefault = []
0015 cms.vuint32.dummyDefault = []
0016 cms.vint64.dummyDefault = []
0017 cms.vuint64.dummyDefault=[]
0018 cms.vstring.dummyDefault=[]
0019 cms.bool.dummyDefault = False
0020 cms.PSet.dummyDefault = cms.PSet()
0021 cms.VPSet.dummyDefault = cms.VPSet()
0022 cms.InputTag.dummyDefault = "__dummy__"
0023 cms.VInputTag.dummyDefault = []
0024 cms.ESInputTag.dummyDefault=":__dummy__"
0025 cms.VESInputTag.dummyValue = []
0026 cms.EventID.dummyDefault="0:0:0"
0027 cms.VEventID.dummyDefault =[]
0028 cms.LuminosityBlockID.dummyDefault = "0:0"
0029 cms.VLuminosityBlockID.dummyDefault=[]
0030 cms.EventRange.dummyDefault="0:0"
0031 cms.VEventRange.dummyDefault=[]
0032 cms.LuminosityBlockRange.dummyDefault="0:0"
0033 cms.VLuminosityBlockID.dummyDefault=[]
0034 cms.FileInPath.dummyDefault="__dummy__"
0035
0036
0037
0038 def create_cfis(modName: str, writeRequired, writeOptional):
0039 modules = importlib.import_module(modName+".modules")
0040 for (n,m) in (x for x in modules.__dict__.items() if isinstance(x[1], _ModuleProxy)):
0041 print(modName +'.'+n)
0042 write_cfi(modName+'.'+n, writeRequired, writeOptional)
0043
0044 def write_cfi(pythonModuleName, writeRequired, writeOptional):
0045 parts = pythonModuleName.split('.')
0046 filename = parts[-1][0].lower()+parts[-1][1:]
0047 f = open(filename+"_cfi.py",'x')
0048 f.writelines(["import FWCore.ParameterSet.DummyCfis as dc\n",
0049 "import sys\n",
0050 "dc.create_module('{}', sys.modules[__name__], {}, {})\n".format(pythonModuleName, writeRequired, writeOptional)])
0051 f.close()
0052
0053 def setDefaultInPSet(pset: cms.PSet, writeRequired, writeOptional):
0054 for n in pset.parameterNames_():
0055 setADefault(pset, n, writeRequired, writeOptional)
0056
0057 def setADefault(obj, paramName, writeRequired, writeOptional):
0058 p = getattr(obj, paramName)
0059
0060 if (isinstance(p, _RequiredParameter) and writeRequired) or (isinstance(p, _OptionalParameter) and writeOptional):
0061 p.setValue(p._ProxyParameter__type.dummyDefault)
0062 if isinstance(p, cms.PSet):
0063 setDefaultInPSet(p, writeRequired, writeOptional)
0064 if isinstance(p, cms.VPSet):
0065 for pset in p:
0066 setDefaultInPSet(pset, writeRequired, writeOptional)
0067
0068 def setDefaultsInModule(mod, writeRequired, writeOptional):
0069 for n in mod.parameterNames_():
0070 setADefault(mod, n, writeRequired, writeOptional)
0071 return mod
0072
0073 def create_module(pythonModuleName: str, localPythonModule, writeRequired, writeOptional ):
0074 parts = pythonModuleName.split('.')
0075 pmod = importlib.import_module(pythonModuleName)
0076 setattr(localPythonModule, parts[-1][0].lower()+parts[-1][1:], setDefaultsInModule(getattr(pmod, parts[-1])(), writeRequired, writeOptional ) )
0077
0078
0079
0080
0081 if __name__ == '__main__':
0082 import FWCore.ParameterSet.Config as cms
0083 test = cms.EDAnalyzer("Foo",
0084 a = cms.optional.int32,
0085 b = cms.optional.string,
0086 c = cms.optional.PSet,
0087 d = cms.untracked.PSet(a=cms.int32(1), b= cms.optional.untracked.PSet),
0088 e = cms.required.EventID,
0089 f = cms.optional.LuminosityBlockID,
0090 g = cms.optional.EventRange,
0091 h = cms.optional.LuminosityBlockRange,
0092 j = cms.optional.InputTag,
0093 k = cms.optional.ESInputTag,
0094 l = cms.optional.FileInPath
0095 )
0096 print(test.dumpPython())
0097 setDefaultsInModule(test, True, False)
0098 print(test.dumpPython())
0099