diff --git a/CHANGES b/CHANGES index bcad80274be..8720eb3b881 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,8 @@ Features added Bugs fixed ---------- +* #8883: autodoc: AttributeError is raised on assigning __annotations__ on + read-only class * #8884: html: minified js stemmers not included in the distributed package * #8880: viewcode: ExtensionError is raised on incremental build after unparsable python module found diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py index dc413b5c284..3ae6dff758c 100644 --- a/sphinx/ext/autodoc/__init__.py +++ b/sphinx/ext/autodoc/__init__.py @@ -1394,7 +1394,7 @@ def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: params[0] = params[0].replace(annotation=typ) try: func.__signature__ = sig.replace(parameters=params) # type: ignore - except TypeError: + except (AttributeError, TypeError): # failed to update signature (ex. built-in or extension types) return @@ -2177,7 +2177,7 @@ def annotate_to_first_argument(self, func: Callable, typ: Type) -> None: params[1] = params[1].replace(annotation=typ) try: func.__signature__ = sig.replace(parameters=params) # type: ignore - except TypeError: + except (AttributeError, TypeError): # failed to update signature (ex. built-in or extension types) return @@ -2443,7 +2443,7 @@ def update_annotations(self, parent: Any) -> None: annotations[attrname] = annotation except (AttributeError, PycodeError): pass - except TypeError: + except (AttributeError, TypeError): # Failed to set __annotations__ (built-in, extensions, etc.) pass