From ce96cfbfb606bcfc6b5b655d8debc1fcc53ab296 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 5 Jun 2010 18:10:42 +0200 Subject: [PATCH] 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. --- sphinx/application.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sphinx/application.py b/sphinx/application.py index b5ba514c3..3ffd86c26 100644 --- a/sphinx/application.py +++ b/sphinx/application.py @@ -18,7 +18,7 @@ from os import path 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 @@ -368,16 +368,16 @@ class Sphinx(object): 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 content or arguments or options: - raise ExtensionError('when adding directive classes, no ' - 'additional arguments may be given') - return obj - else: + 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 def add_directive(self, name, obj, content=None, arguments=None, **options): directives.register_directive(