Mercurial > enso_core
view enso/providers.py @ 66:141bbbb81397 default tip
Modified TODO file in light of recent changes.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Sun, 02 Mar 2008 19:28:27 -0600 |
parents | d3c0220c5895 |
children |
line wrap: on
line source
# TODO: Add documentation for this module. import logging import enso.config _interfaces = {} _providers = [] def _initDefaultProviders(): for moduleName in enso.config.PROVIDERS: try: # Import the module; most of this code was taken from the # Python Library Reference documentation for __import__(). module = __import__( moduleName, {}, {}, [], 0 ) components = moduleName.split( "." ) for component in components[1:]: module = getattr( module, component ) _providers.append( module ) logging.info( "Added provider %s." % moduleName ) except ImportError: logging.info( "Skipping provider %s." % moduleName ) def getInterface( name ): if not _providers: _initDefaultProviders() if name not in _interfaces: for provider in _providers: interface = provider.provideInterface( name ) if interface: logging.info( "Obtained interface '%s' from provider '%s'." % (name, provider.__name__) ) _interfaces[name] = interface break if name in _interfaces: return _interfaces[name] else: raise ProviderNotFoundError( name ) class ProviderNotFoundError( Exception ): pass