|
Gaudi Framework, version v21r9 |
| Home | Generated: 3 May 2010 |
Classes | |
| class | _CfgDb |
| class | _Singleton |
Functions | |
| def | loadConfigurableDb |
| Helper function to load all ConfigurableDb files holding informations. | |
| def | getConfigurable |
Variables | |
| list | __all__ = [ 'CfgDb', 'cfgDb', 'loadConfigurableDb', 'getConfigurable' ] |
| tuple | _transtable = string.maketrans('<>&*,: ().', '__rp__s___') |
| tuple | log = logging.getLogger( 'ConfigurableDb' ) |
| tuple | CfgDb = _Singleton() |
| tuple | cfgDb = CfgDb() |
| default name for CfgDb instance | |
| def ConfigurableDb::getConfigurable | ( | className, | ||
requester = '', |
||||
assumeCxxClass = True | ||||
| ) |
Definition at line 142 of file ConfigurableDb.py.
00142 : 00143 confClass=className 00144 if assumeCxxClass: 00145 # assume className is C++: --> translate to python 00146 confClass = string.translate( confClass, _transtable ) 00147 # see if I have it in my dictionary 00148 confClassInfo = cfgDb.get(confClass) 00149 if not confClassInfo: 00150 confClassInfo = cfgDb.get(confClass) 00151 # get the python module 00152 confMod = confClassInfo and confClassInfo.get('module') 00153 if not confMod: 00154 log.warning( "%s: Class %s not in database", requester, className ) 00155 return None 00156 # load the module 00157 try: 00158 mod = __import__(confMod,globals(),locals(),confClass) 00159 except ImportError: 00160 log.warning( "%s: Module %s not found (needed for configurable %s)", 00161 requester, confMod, className ) 00162 return None 00163 # get the class 00164 try: 00165 confClass = getattr(mod,confClass) 00166 except AttributeError: 00167 log.warning( "%s: Configurable %s not found in module %s", 00168 requester, confClass, confMod ) 00169 return None 00170 # Got it! 00171 log.debug( "%s: Found configurable %s in module %s", 00172 requester, confClass, confMod ) 00173 00174 return confClass return confClass
| def ConfigurableDb::loadConfigurableDb | ( | ) |
Helper function to load all ConfigurableDb files holding informations.
Helper function to load all ConfigurableDb files (modules) holding informations about Configurables
Definition at line 92 of file ConfigurableDb.py.
00092 : 00093 """Helper function to load all ConfigurableDb files (modules) holding 00094 informations about Configurables 00095 """ 00096 import os 00097 import sys 00098 from zipfile import is_zipfile, ZipFile 00099 from glob import glob 00100 from os.path import join as path_join 00101 log.debug( "importing confDb packages..." ) 00102 nFiles = 0 # counter of imported files 00103 for path in sys.path: 00104 log.debug( "walking in [%s]..." % path ) 00105 if not os.path.exists(path): 00106 continue 00107 # speed-up: <project>_merged_confDb.py files are installed as : 00108 # "/some/path/InstallArea/python/<project>_merged_confDb.py 00109 # so why bother wandering in other directories ? 00110 if path.endswith(path_join("InstallArea","python")): 00111 # turn filename syntax into module syntax: remove path+extension and replace / with . (dot) 00112 confDbModules = [ os.path.splitext( f[len(path)+1:] )[0].replace(os.sep,'.') 00113 for f in glob(path_join(path, "*_merged_confDb.py")) 00114 if os.path.isfile(f) ] 00115 elif path.endswith(path_join("InstallArea","python.zip")) and is_zipfile(path): 00116 # turn filename syntax into module syntax: remove path+extension and replace / with . (dot) 00117 confDbModules = [ os.path.splitext(f)[0].replace('/','.') 00118 for f in ZipFile(path).namelist() 00119 if f.endswith("_merged_confDb.py") or f.endswith("_merged_confDb.pyc") ] 00120 else: 00121 continue 00122 for confDbModule in confDbModules: 00123 nFiles += 1 00124 log.debug( "\t-importing [%s]..." % confDbModule ) 00125 try: 00126 mod = __import__( confDbModule ) 00127 except ImportError, err: 00128 log.warning( "Could not import module [%s] !", confDbModule ) 00129 log.warning( "Reason: %s", err ) 00130 pass 00131 else: 00132 # don't need to keep the module 00133 del mod 00134 pass 00135 pass # loop over sys.path 00136 log.debug( "importing confDb packages... [DONE]" ) 00137 nPkgs = len( set([k['package'] for k in cfgDb.values()]) ) 00138 log.debug( "imported %i confDb packages" % nPkgs ) 00139 return nFiles 00140 00141 def getConfigurable( className, requester='', assumeCxxClass=True ):
| list ConfigurableDb::__all__ = [ 'CfgDb', 'cfgDb', 'loadConfigurableDb', 'getConfigurable' ] |
Definition at line 10 of file ConfigurableDb.py.
| tuple ConfigurableDb::_transtable = string.maketrans('<>&*,: ().', '__rp__s___') |
Definition at line 13 of file ConfigurableDb.py.
| tuple ConfigurableDb::cfgDb = CfgDb() |
| tuple ConfigurableDb::CfgDb = _Singleton() |
Definition at line 82 of file ConfigurableDb.py.
| tuple ConfigurableDb::log = logging.getLogger( 'ConfigurableDb' ) |
Definition at line 16 of file ConfigurableDb.py.