Browse Source

Fix for Py3.3 __qualname__. Closes #1356

Ask Solem 12 years ago
parent
commit
fc33c2cdd6
1 changed files with 5 additions and 3 deletions
  1. 5 3
      celery/utils/imports.py

+ 5 - 3
celery/utils/imports.py

@@ -28,15 +28,17 @@ class NotAPackage(Exception):
 if sys.version_info >= (3, 3):  # pragma: no cover
 
     def qualname(obj):
-        return obj.__qualname__
+        if not hasattr(obj, '__name__') and hasattr(obj, '__class__'):
+            return qualname(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__'):
             return qualname(obj.__class__)
-
-        return '%s.%s' % (obj.__module__, obj.__name__)
+        return '.'.join((obj.__module__, obj.__name__))
 
 
 def instantiate(name, *args, **kwargs):