summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oslo_utils/reflection.py21
-rw-r--r--oslo_utils/tests/test_reflection.py7
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)