Implement importutils.try_import.
Adds a new (simple) importutils.try_import function which can return a module name or a default (by default this is None). This should help clean up some of our try: import foo except... blocks in modules. This commit also drops the dependency on python-extras which is no longer needed. Fixes LP Bug #1099501. Change-Id: I8591f79983bdad67a50d1aaae6dce8428dfce084
This commit is contained in:
parent
d74668fbed
commit
33b12d3c18
@ -57,3 +57,11 @@ def import_module(import_str):
|
||||
"""Import a module."""
|
||||
__import__(import_str)
|
||||
return sys.modules[import_str]
|
||||
|
||||
|
||||
def try_import(import_str, default=None):
|
||||
"""Try to import a module and if it fails return default."""
|
||||
try:
|
||||
return import_module(import_str)
|
||||
except ImportError:
|
||||
return default
|
||||
|
@ -27,17 +27,17 @@ import sys
|
||||
import time
|
||||
|
||||
import eventlet
|
||||
import extras
|
||||
import logging as std_logging
|
||||
|
||||
from openstack.common import cfg
|
||||
from openstack.common import eventlet_backdoor
|
||||
from openstack.common.gettextutils import _
|
||||
from openstack.common import importutils
|
||||
from openstack.common import log as logging
|
||||
from openstack.common import threadgroup
|
||||
|
||||
|
||||
rpc = extras.try_import('openstack.common.rpc')
|
||||
rpc = importutils.try_import('openstack.common.rpc')
|
||||
CONF = cfg.CONF
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
|
@ -109,3 +109,11 @@ class ImportUtilsTest(unittest.TestCase):
|
||||
dt = importutils.import_object('datetime.datetime', 2012, 4, 5)
|
||||
self.assertTrue(isinstance(dt, sys.modules['datetime'].datetime))
|
||||
self.assertEqual(dt, datetime.datetime(2012, 4, 5))
|
||||
|
||||
def test_try_import(self):
|
||||
dt = importutils.try_import('datetime')
|
||||
self.assertEqual(sys.modules['datetime'], dt)
|
||||
|
||||
def test_try_import_returns_default(self):
|
||||
foo = importutils.try_import('foo.bar')
|
||||
self.assertEqual(None, foo)
|
||||
|
@ -1,7 +1,6 @@
|
||||
PasteDeploy==1.5.0
|
||||
WebOb==1.2.3
|
||||
eventlet
|
||||
extras
|
||||
greenlet>=0.3.1
|
||||
lxml
|
||||
routes==1.12.3
|
||||
|
Loading…
Reference in New Issue
Block a user