CMS 3D CMS Logo

crabConfigParser.py
Go to the documentation of this file.
1 ## @package CrabConfigParser
2 # This module extends the python configparser to create crab3 config files
3 #
4 # This module extends the python configparser to create crab3 config files.
5 
6 
7 from ConfigParser import *
8 
9 ## The CrabConfigParser class
10 #
11 # This class extends the python ConfigParser class and adds functions to
12 # output crab3 config files
14 
15  ## The constructor.
16  def __init__(self):
17  ConfigParser.__init__(self)
18  self.optionxform = str
19  ## Write CrabConfigParser object to file
20  # @type self: CrabConfigParser
21  # @param self: The object pointer.
22  # @type filename: string
23  # @param filename The name of the output crab3 config file.
24  def writeCrabConfig(self,filename):
25  sections = self.sections()
26  fixedsections = ['General','JobType','Data','Site','User','Debug']
27  outlines = []
28  # Add inital header for crab config file
29  outlines.append('from WMCore.Configuration import Configuration \n')
30  outlines.append('config = Configuration()')
31  # we will first add the main crab3 config sections in the given order
32  for fixedsection in fixedsections:
33  if fixedsection in sections:
34  outlines.extend(self.getSectionLines(fixedsection))
35  sections.remove(fixedsection)
36  # add additional sections (may be added in future crab3 versions ?)
37  for section in sections:
38  outlines.extend(self.getSectionLines(section))
39  #print filename
40  with open(filename,'wb') as outfile:
41  outfile.write('\n'.join(outlines) + '\n')
42  ## Helper function to retrieve crab config output lines for one section
43  # @type self: CrabConfigParser
44  # @param self:The object pointer.
45  # @type section: string
46  # @param section:The section name.
47  # @rtype: list of strings
48  # @return: Lines for one section in crab3 config file
49  def getSectionLines(self,section):
50  sectionLines = []
51  sectionLines.append('\nconfig.section_("%s")'%section)
52  configItems = self.items(section)
53  for configItem in configItems:
54  if not isinstance(configItem[1], str):
55  sectionLines.append('config.%s.%s = %s'%(section,configItem[0],configItem[1]))
56  elif "True" in configItem[1] or "False" in configItem[1]:
57  sectionLines.append('config.%s.%s = %s'%(section,configItem[0],configItem[1]))
58  else:
59  parsed = False
60  if configItem[0]=="runRange" :
61  sectionLines.append('config.%s.%s = \'%s\''%(section,configItem[0],configItem[1]))
62  parsed = True
63  if not parsed:
64  try:
65  sectionLines.append('config.%s.%s = %d'%(section,configItem[0],int(configItem[1])))
66  parsed = True
67  except:
68  pass
69  if not parsed:
70  try:
71  sectionLines.append('config.%s.%s = %.2f'%(section,configItem[0],float(configItem[1])))
72  parsed = True
73  except:
74  pass
75  if not parsed:
76  if isinstance(configItem[1], list):
77  sectionLines.append('config.%s.%s = %s'%(section,configItem[0],str(configItem[1])))
78  parsed = True
79  if not parsed:
80  sectionLines.append('config.%s.%s = \'%s\''%(section,configItem[0],configItem[1]))
81 
82  return sectionLines
def writeCrabConfig(self, filename)
Write CrabConfigParser object to file self: CrabConfigParser.
def getSectionLines(self, section)
Helper function to retrieve crab config output lines for one section self: CrabConfigParser.
static std::string join(char **cmd)
Definition: RemoteFile.cc:17
def __init__(self)
The constructor.
The CrabConfigParser class.
#define str(s)