export only try_import in __all__
bp graduate-oslo-utils Change-Id: I63533746d0f4a45aa9f21d235c0353300c8af4cb
This commit is contained in:
@@ -21,7 +21,7 @@ import sys
|
|||||||
import traceback
|
import traceback
|
||||||
|
|
||||||
|
|
||||||
def import_class(import_str):
|
def _import_class(import_str):
|
||||||
"""Returns a class from a string including module and class."""
|
"""Returns a class from a string including module and class."""
|
||||||
mod_str, _sep, class_str = import_str.rpartition('.')
|
mod_str, _sep, class_str = import_str.rpartition('.')
|
||||||
__import__(mod_str)
|
__import__(mod_str)
|
||||||
@@ -33,12 +33,12 @@ def import_class(import_str):
|
|||||||
traceback.format_exception(*sys.exc_info())))
|
traceback.format_exception(*sys.exc_info())))
|
||||||
|
|
||||||
|
|
||||||
def import_object(import_str, *args, **kwargs):
|
def _import_object(import_str, *args, **kwargs):
|
||||||
"""Import a class and return an instance of it."""
|
"""Import a class and return an instance of it."""
|
||||||
return import_class(import_str)(*args, **kwargs)
|
return _import_class(import_str)(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def import_object_ns(name_space, import_str, *args, **kwargs):
|
def _import_object_ns(name_space, import_str, *args, **kwargs):
|
||||||
"""Tries to import object from default namespace.
|
"""Tries to import object from default namespace.
|
||||||
|
|
||||||
Imports a class and return an instance of it, first by trying
|
Imports a class and return an instance of it, first by trying
|
||||||
@@ -47,27 +47,27 @@ def import_object_ns(name_space, import_str, *args, **kwargs):
|
|||||||
"""
|
"""
|
||||||
import_value = "%s.%s" % (name_space, import_str)
|
import_value = "%s.%s" % (name_space, import_str)
|
||||||
try:
|
try:
|
||||||
return import_class(import_value)(*args, **kwargs)
|
return _import_class(import_value)(*args, **kwargs)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return import_class(import_str)(*args, **kwargs)
|
return _import_class(import_str)(*args, **kwargs)
|
||||||
|
|
||||||
|
|
||||||
def import_module(import_str):
|
def _import_module(import_str):
|
||||||
"""Import a module."""
|
"""Import a module."""
|
||||||
__import__(import_str)
|
__import__(import_str)
|
||||||
return sys.modules[import_str]
|
return sys.modules[import_str]
|
||||||
|
|
||||||
|
|
||||||
def import_versioned_module(version, submodule=None):
|
def _import_versioned_module(version, submodule=None):
|
||||||
module = 'oslo.v%s' % version
|
module = 'oslo.v%s' % version
|
||||||
if submodule:
|
if submodule:
|
||||||
module = '.'.join((module, submodule))
|
module = '.'.join((module, submodule))
|
||||||
return import_module(module)
|
return _import_module(module)
|
||||||
|
|
||||||
|
|
||||||
def try_import(import_str, default=None):
|
def try_import(import_str, default=None):
|
||||||
"""Try to import a module and if it fails return default."""
|
"""Try to import a module and if it fails return default."""
|
||||||
try:
|
try:
|
||||||
return import_module(import_str)
|
return _import_module(import_str)
|
||||||
except ImportError:
|
except ImportError:
|
||||||
return default
|
return default
|
||||||
|
|||||||
@@ -27,85 +27,85 @@ class ImportUtilsTest(test_base.BaseTestCase):
|
|||||||
# __import__ is the devil. Right now we just make
|
# __import__ is the devil. Right now we just make
|
||||||
# sure we can import something from the stdlib
|
# sure we can import something from the stdlib
|
||||||
def test_import_class(self):
|
def test_import_class(self):
|
||||||
dt = importutils.import_class('datetime.datetime')
|
dt = importutils._import_class('datetime.datetime')
|
||||||
self.assertEqual(sys.modules['datetime'].datetime, dt)
|
self.assertEqual(sys.modules['datetime'].datetime, dt)
|
||||||
|
|
||||||
def test_import_bad_class(self):
|
def test_import_bad_class(self):
|
||||||
self.assertRaises(ImportError, importutils.import_class,
|
self.assertRaises(ImportError, importutils._import_class,
|
||||||
'lol.u_mad.brah')
|
'lol.u_mad.brah')
|
||||||
|
|
||||||
def test_import_module(self):
|
def test_import_module(self):
|
||||||
dt = importutils.import_module('datetime')
|
dt = importutils._import_module('datetime')
|
||||||
self.assertEqual(sys.modules['datetime'], dt)
|
self.assertEqual(sys.modules['datetime'], dt)
|
||||||
|
|
||||||
def test_import_object_optional_arg_not_present(self):
|
def test_import_object_optional_arg_not_present(self):
|
||||||
obj = importutils.import_object('tests.fake.FakeDriver')
|
obj = importutils._import_object('tests.fake.FakeDriver')
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_optional_arg_present(self):
|
def test_import_object_optional_arg_present(self):
|
||||||
obj = importutils.import_object('tests.fake.FakeDriver',
|
obj = importutils._import_object('tests.fake.FakeDriver',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_required_arg_not_present(self):
|
def test_import_object_required_arg_not_present(self):
|
||||||
# arg 1 isn't optional here
|
# arg 1 isn't optional here
|
||||||
self.assertRaises(TypeError, importutils.import_object,
|
self.assertRaises(TypeError, importutils._import_object,
|
||||||
'tests.fake.FakeDriver2')
|
'tests.fake.FakeDriver2')
|
||||||
|
|
||||||
def test_import_object_required_arg_present(self):
|
def test_import_object_required_arg_present(self):
|
||||||
obj = importutils.import_object('tests.fake.FakeDriver2',
|
obj = importutils._import_object('tests.fake.FakeDriver2',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
||||||
|
|
||||||
# namespace tests
|
# namespace tests
|
||||||
def test_import_object_ns_optional_arg_not_present(self):
|
def test_import_object_ns_optional_arg_not_present(self):
|
||||||
obj = importutils.import_object_ns('tests', 'fake.FakeDriver')
|
obj = importutils._import_object_ns('tests', 'fake.FakeDriver')
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_ns_optional_arg_present(self):
|
def test_import_object_ns_optional_arg_present(self):
|
||||||
obj = importutils.import_object_ns('tests', 'fake.FakeDriver',
|
obj = importutils._import_object_ns('tests', 'fake.FakeDriver',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_ns_required_arg_not_present(self):
|
def test_import_object_ns_required_arg_not_present(self):
|
||||||
# arg 1 isn't optional here
|
# arg 1 isn't optional here
|
||||||
self.assertRaises(TypeError, importutils.import_object_ns,
|
self.assertRaises(TypeError, importutils._import_object_ns,
|
||||||
'tests', 'fake.FakeDriver2')
|
'tests', 'fake.FakeDriver2')
|
||||||
|
|
||||||
def test_import_object_ns_required_arg_present(self):
|
def test_import_object_ns_required_arg_present(self):
|
||||||
obj = importutils.import_object_ns('tests', 'fake.FakeDriver2',
|
obj = importutils._import_object_ns('tests', 'fake.FakeDriver2',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
||||||
|
|
||||||
# namespace tests
|
# namespace tests
|
||||||
def test_import_object_ns_full_optional_arg_not_present(self):
|
def test_import_object_ns_full_optional_arg_not_present(self):
|
||||||
obj = importutils.import_object_ns('tests2',
|
obj = importutils._import_object_ns('tests2',
|
||||||
'tests.fake.FakeDriver')
|
'tests.fake.FakeDriver')
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_ns_full_optional_arg_present(self):
|
def test_import_object_ns_full_optional_arg_present(self):
|
||||||
obj = importutils.import_object_ns('tests2',
|
obj = importutils._import_object_ns('tests2',
|
||||||
'tests.fake.FakeDriver',
|
'tests.fake.FakeDriver',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver')
|
||||||
|
|
||||||
def test_import_object_ns_full_required_arg_not_present(self):
|
def test_import_object_ns_full_required_arg_not_present(self):
|
||||||
# arg 1 isn't optional here
|
# arg 1 isn't optional here
|
||||||
self.assertRaises(TypeError, importutils.import_object_ns,
|
self.assertRaises(TypeError, importutils._import_object_ns,
|
||||||
'tests2', 'tests.fake.FakeDriver2')
|
'tests2', 'tests.fake.FakeDriver2')
|
||||||
|
|
||||||
def test_import_object_ns_full_required_arg_present(self):
|
def test_import_object_ns_full_required_arg_present(self):
|
||||||
obj = importutils.import_object_ns('tests2',
|
obj = importutils._import_object_ns('tests2',
|
||||||
'tests.fake.FakeDriver2',
|
'tests.fake.FakeDriver2',
|
||||||
first_arg=False)
|
first_arg=False)
|
||||||
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
self.assertEqual(obj.__class__.__name__, 'FakeDriver2')
|
||||||
|
|
||||||
def test_import_object(self):
|
def test_import_object(self):
|
||||||
dt = importutils.import_object('datetime.time')
|
dt = importutils._import_object('datetime.time')
|
||||||
self.assertTrue(isinstance(dt, sys.modules['datetime'].time))
|
self.assertTrue(isinstance(dt, sys.modules['datetime'].time))
|
||||||
|
|
||||||
def test_import_object_with_args(self):
|
def test_import_object_with_args(self):
|
||||||
dt = importutils.import_object('datetime.datetime', 2012, 4, 5)
|
dt = importutils._import_object('datetime.datetime', 2012, 4, 5)
|
||||||
self.assertTrue(isinstance(dt, sys.modules['datetime'].datetime))
|
self.assertTrue(isinstance(dt, sys.modules['datetime'].datetime))
|
||||||
self.assertEqual(dt, datetime.datetime(2012, 4, 5))
|
self.assertEqual(dt, datetime.datetime(2012, 4, 5))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user