Browse Source

Use __qualname__ on Py3.3+

Ask Solem 12 years ago
parent
commit
fedc926d15
1 changed files with 11 additions and 4 deletions
  1. 11 4
      celery/utils/imports.py

+ 11 - 4
celery/utils/imports.py

@@ -24,10 +24,17 @@ class NotAPackage(Exception):
     pass
 
 
-def qualname(obj):  # noqa
-    if not hasattr(obj, '__name__') and hasattr(obj, '__class__'):
-        obj = obj.__class__
-    return '%s.%s' % (obj.__module__, obj.__name__)
+if sys.version_info > (3, 3):
+    def qualname(obj):
+        if not hasattr(obj, '__name__') and hasattr(obj, '__class__'):
+            obj = obj.__class__
+        return '.'.join((obj.__module__,
+                         getattr(obj, '__qualname__', None) or obj.__name__))
+else:
+    def qualname(obj):  # noqa
+        if not hasattr(obj, '__name__') and hasattr(obj, '__class__'):
+            obj = obj.__class__
+        return '.'.join((obj.__module__, obj.__name__))
 
 
 def instantiate(name, *args, **kwargs):