diff --git a/src/mkdocstrings_handlers/python/collector.py b/src/mkdocstrings_handlers/python/collector.py index eb1879b..ebddaaa 100644 --- a/src/mkdocstrings_handlers/python/collector.py +++ b/src/mkdocstrings_handlers/python/collector.py @@ -6,10 +6,12 @@ from __future__ import annotations from collections import ChainMap +from contextlib import suppress from griffe.agents.extensions import load_extensions from griffe.collections import LinesCollection, ModulesCollection from griffe.docstrings.parsers import Parser +from griffe.exceptions import AliasResolutionError from griffe.loader import GriffeLoader from mkdocstrings.handlers.base import BaseCollector, CollectionError, CollectorItem from mkdocstrings.loggers import get_logger @@ -85,8 +87,10 @@ def collect(self, identifier: str, config: dict) -> CollectorItem: # noqa: WPS2 except KeyError as error: # noqa: WPS440 raise CollectionError(f"{identifier} could not be found") from error - if not unknown_module and doc_object.docstring is not None: - doc_object.docstring.parser = parser - doc_object.docstring.parser_options = parser_options + if not unknown_module: + with suppress(AliasResolutionError): + if doc_object.docstring is not None: + doc_object.docstring.parser = parser + doc_object.docstring.parser_options = parser_options return doc_object diff --git a/src/mkdocstrings_handlers/python/renderer.py b/src/mkdocstrings_handlers/python/renderer.py index 77f367e..93c9119 100644 --- a/src/mkdocstrings_handlers/python/renderer.py +++ b/src/mkdocstrings_handlers/python/renderer.py @@ -10,6 +10,7 @@ from typing import Any, Sequence from griffe.dataclasses import Alias, Object +from griffe.exceptions import AliasResolutionError from markdown import Markdown from markupsafe import Markup from mkdocstrings.extension import PluginError @@ -127,7 +128,10 @@ def render(self, data: CollectorItem, config: dict) -> str: # noqa: D102 (ignor ) def get_anchors(self, data: CollectorItem) -> list[str]: # noqa: D102 (ignore missing docstring) - return list({data.path, data.canonical_path, *data.aliases}) + try: + return list({data.path, data.canonical_path, *data.aliases}) + except AliasResolutionError: + return [data.path] def update_env(self, md: Markdown, config: dict) -> None: # noqa: D102 (ignore missing docstring) super().update_env(md, config)