diff options
-rw-r--r-- | oslo_utils/reflection.py | 21 | ||||
-rw-r--r-- | oslo_utils/tests/test_reflection.py | 7 |
2 files changed, 13 insertions, 15 deletions
diff --git a/oslo_utils/reflection.py b/oslo_utils/reflection.py index f8ef3b1..8b9b535 100644 --- a/oslo_utils/reflection.py +++ b/oslo_utils/reflection.py @@ -68,21 +68,12 @@ def get_class_name(obj, fully_qualified=True): pass else: if built_in: - try: - return obj.__qualname__ - except AttributeError: - return obj.__name__ - pieces = [] - try: - pieces.append(obj.__qualname__) - except AttributeError: - pieces.append(obj.__name__) - if fully_qualified: - try: - pieces.insert(0, obj.__module__) - except AttributeError: - pass - return '.'.join(pieces) + return obj.__name__ + + if fully_qualified and hasattr(obj, '__module__'): + return '%s.%s' % (obj.__module__, obj.__name__) + else: + return obj.__name__ def get_all_class_names(obj, up_to=object): diff --git a/oslo_utils/tests/test_reflection.py b/oslo_utils/tests/test_reflection.py index f9c7e2f..b63ef8b 100644 --- a/oslo_utils/tests/test_reflection.py +++ b/oslo_utils/tests/test_reflection.py @@ -306,6 +306,13 @@ class GetClassNameTest(test_base.BaseTestCase): name = reflection.get_class_name(Class) self.assertEqual('.'.join((__name__, 'Class')), name) + def test_qualified_class(self): + class QualifiedClass(object): + pass + + name = reflection.get_class_name(QualifiedClass) + self.assertEqual('.'.join((__name__, 'QualifiedClass')), name) + def test_instance(self): name = reflection.get_class_name(Class()) self.assertEqual('.'.join((__name__, 'Class')), name) |