diff --git a/sphinx/directives.py b/sphinx/directives.py index 903c3dadc..498a1bc8c 100644 --- a/sphinx/directives.py +++ b/sphinx/directives.py @@ -133,10 +133,12 @@ def parse_py_signature(signode, sig, desctype, env): if m is None: raise ValueError classname, name, arglist = m.groups() + add_module = True if env.currclass: if classname and classname.startswith(env.currclass): fullname = classname + name classname = classname[len(env.currclass):].lstrip('.') + add_module = False elif classname: fullname = env.currclass + '.' + classname + name else: @@ -148,7 +150,7 @@ def parse_py_signature(signode, sig, desctype, env): signode += addnodes.desc_classname(classname, classname) # exceptions are a special case, since they are documented in the # 'exceptions' module. - elif env.config.add_module_names and \ + elif add_module and env.config.add_module_names and \ env.currmodule and env.currmodule != 'exceptions': nodetext = env.currmodule + '.' signode += addnodes.desc_classname(nodetext, nodetext)