From 19300544cb31f6ad6be5828d041022d7bf917668 Mon Sep 17 00:00:00 2001 From: Wang Yuzhi Date: Wed, 9 Dec 2020 11:28:32 +0800 Subject: [PATCH] fix: Ignore errors parsing c-extension modules --- src/pytkdocs/loader.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pytkdocs/loader.py b/src/pytkdocs/loader.py index 9f4f31f..191d01d 100644 --- a/src/pytkdocs/loader.py +++ b/src/pytkdocs/loader.py @@ -380,7 +380,7 @@ def get_module_documentation(self, node: ObjectNode, select_members=None) -> Mod except OSError as error: try: code = Path(node.file_path).read_text() - except OSError: + except (OSError, UnicodeDecodeError): self.errors.append(f"Couldn't read source for '{path}': {error}") source = None else: @@ -441,8 +441,11 @@ def get_class_documentation(self, node: ObjectNode, select_members=None) -> Clas merge(attributes_data, get_class_attributes(parent_class)) context: Dict[str, Any] = {"attributes": attributes_data} if "__init__" in class_.__dict__: - attributes_data.update(get_instance_attributes(class_.__init__)) - context["signature"] = inspect.signature(class_.__init__) + try: + attributes_data.update(get_instance_attributes(class_.__init__)) + context["signature"] = inspect.signature(class_.__init__) + except (TypeError, ValueError): + pass root_object.parse_docstring(self.docstring_parser, attributes=attributes_data) if select_members is False: