diff options
author | Takeshi KOMIYA <i.tkomiya@gmail.com> | 2021-07-25 19:08:53 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-25 19:08:53 +0900 |
commit | 5d8f925e02e6ab339deb8a603a7355d46571c3e4 (patch) | |
tree | f225e6b45059a52b67480af56ae6b9f619b05ab8 | |
parent | 9218ad4adc20297ab3d3591b0513604bf1e35631 (diff) | |
parent | 4f364a30bc6e3df96cf8e1d7dd1a0d2115c30f0b (diff) | |
download | sphinx-git-5d8f925e02e6ab339deb8a603a7355d46571c3e4.tar.gz |
Merge pull request #9493 from tk0miya/9436_autodoc_class_signature
Fix #9436, #9471: autodoc: crashed if autodoc_class_signature = "separated"
-rw-r--r-- | CHANGES | 1 | ||||
-rw-r--r-- | sphinx/ext/autodoc/__init__.py | 7 |
2 files changed, 7 insertions, 1 deletions
@@ -23,6 +23,7 @@ Bugs fixed with the HEAD of 3.10 * #9490: autodoc: Some objects under ``typing`` module are not displayed well with the HEAD of 3.10 +* #9436, #9471: autodoc: crashed if ``autodoc_class_signature = "separated"`` * #9435: linkcheck: Failed to check anchors in github.com Testing diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index 1cecb1f79..70d6ddc16 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -257,6 +257,9 @@ def between(marker: str, what: Sequence[str] = None, keepempty: bool = False, # But we define this class here to keep compatibility (see #4538) class Options(dict): """A dict/attribute hybrid that returns None on nonexisting keys.""" + def copy(self) -> "Options": + return Options(super().copy()) + def __getattr__(self, name: str) -> Any: try: return self[name.replace('_', '-')] @@ -1445,9 +1448,11 @@ class ClassDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # type: super().__init__(*args) if self.config.autodoc_class_signature == 'separated': + self.options = self.options.copy() + # show __init__() method if self.options.special_members is None: - self.options['special-members'] = {'__new__', '__init__'} + self.options['special-members'] = ['__new__', '__init__'] else: self.options.special_members.append('__new__') self.options.special_members.append('__init__') |