Georg Brandl avatar Georg Brandl committed 9585f5e

Revert logic in _directive_helper: everything that is not a function is a class-style directive.

Fixes issues with extensions registering directive classes not inheriting from Directive.

Comments (0)

Files changed (1)

sphinx/application.py

 from cStringIO import StringIO
 
 from docutils import nodes
-from docutils.parsers.rst import Directive, convert_directive_function, \
+from docutils.parsers.rst import convert_directive_function, \
      directives, roles
 
 import sphinx
                 setattr(translator, 'depart_'+node.__name__, depart)
 
     def _directive_helper(self, obj, content=None, arguments=None, **options):
-        if isinstance(obj, clstypes) and issubclass(obj, Directive):
+        if isinstance(obj, (types.FunctionType, types.MethodType)):
+            obj.content = content
+            obj.arguments = arguments or (0, 0, False)
+            obj.options = options
+            return convert_directive_function(obj)
+        else:
             if content or arguments or options:
                 raise ExtensionError('when adding directive classes, no '
                                      'additional arguments may be given')
             return obj
-        else:
-            obj.content = content
-            obj.arguments = arguments or (0, 0, False)
-            obj.options = options
-            return convert_directive_function(obj)
 
     def add_directive(self, name, obj, content=None, arguments=None, **options):
         directives.register_directive(
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.