浏览代码

Use __qualname__ on Py3.3+

Ask Solem 12 年之前
父节点
当前提交
fedc926d15
共有 1 个文件被更改,包括 11 次插入4 次删除
  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):