Gaudi Framework, version v21r9

Home   Generated: 3 May 2010

ConfigurableDb Namespace Reference


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


Function Documentation

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 ):


Variable Documentation

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.

default name for CfgDb instance

Definition at line 89 of file ConfigurableDb.py.

Definition at line 82 of file ConfigurableDb.py.

tuple ConfigurableDb::log = logging.getLogger( 'ConfigurableDb' )

Definition at line 16 of file ConfigurableDb.py.


Generated at Mon May 3 12:28:14 2010 for Gaudi Framework, version v21r9 by Doxygen version 1.5.6 written by Dimitri van Heesch, © 1997-2004