mkdocstrings ยท GitHub

I haven't built my docs in a few months and now I'm unable to resolve AliasResolutionErrors for external imports:

  File "../miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1737, in _resolve_target
    raise AliasResolutionError(self) from error
_griffe.exceptions.AliasResolutionError: Could not resolve alias tolvera.utils.torch pointing at torch (in src/tolvera/utils.py:13)

Referencing this import: https://github.com/afhverjuekki/tolvera/blob/main/src/tolvera/utils.py#L13

I have tried every variation of preload_modules, allow_inspection etc and this one won't go away.

Fixed in v1.14.6 ๐Ÿ™‚

View full answer

ignore_when_discovering

LLM hallucination?

You're trying to render docs for this tolvera package right? I'll try running a debug session to investigate ๐Ÿ™‚ Would help if you could share the full traceback.

1 reply

@jarmitage

You're trying to render docs for this tolvera package right? I'll try running a debug session to investigate ๐Ÿ™‚ Would help if you could share the full traceback.

Yes exactly, thanks!

Thanks for quick reply.

Trace with load_external_modules: true

ERROR   -  Error building page 'reference/tolvera/iml.md': Could not resolve
           alias tolvera.utils.torch pointing at torch (in
           src/tolvera/utils.py:13)
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 199, in _get_urls
    return self._primary_url_map[identifier], "primary"
           ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'tolvera.utils.torch.Tensor'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 211, in _get_item_url
    urls, qualifier = self._get_urls(identifier)
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 201, in _get_urls
    return self._secondary_url_map[identifier], "secondary"
           ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'tolvera.utils.torch.Tensor'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1735, in _resolve_target
    resolved = self.modules_collection.get_member(self.target_path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 83, in get_member
    return self.members[parts[0]]  # type: ignore[attr-defined]
           ~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'torch'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/livereload/__init__.py", line 211, in _build_loop
    self.builder()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/serve.py", line 67, in builder
    build(config, serve_url=None if is_clean else serve_url, dirty=is_dirty)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/build.py", line 337, in build
    _build_page(
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/build.py", line 226, in _build_page
    output = config.plugins.on_post_page(output, page=page, config=config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/plugins.py", line 646, in on_post_page
    return self.run_event('post_page', output, page=page, config=config)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/plugins.py", line 566, in run_event
    result = method(item, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 354, in on_post_page
    fixed_output, unmapped = fix_refs(output, url_mapper, _legacy_refs=self.legacy_refs)
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/references.py", line 454, in fix_refs
    html = AUTOREF_RE.sub(fix_ref(url_mapper, unmapped), html)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/references.py", line 409, in inner
    url = _find_url(identifiers, url_mapper)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/references.py", line 370, in _find_url
    return url_mapper(identifier)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 254, in get_item_url
    url = self._get_item_url(identifier, from_url, fallback)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs_autorefs/plugin.py", line 217, in _get_item_url
    new_identifiers = fallback(identifier)
                      ^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocstrings/handlers/base.py", line 613, in get_anchors
    aliases = handler.get_aliases(identifier)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocstrings_handlers/python/handler.py", line 309, in get_aliases
    data = self._modules_collection[identifier]
           ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 62, in __getitem__
    return self.all_members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 62, in __getitem__
    return self.all_members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 62, in __getitem__
    return self.all_members[parts[0]][parts[1:]]  # type: ignore[attr-defined]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 61, in __getitem__
    return self.all_members[parts[0]]  # type: ignore[attr-defined]
           ^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 299, in all_members
    if self.is_class:  # type: ignore[attr-defined]
       ^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1346, in is_class
    return self.final_target.is_class
           ^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1697, in final_target
    target = target.target  # type: ignore[assignment]
             ^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1662, in target
    self.resolve_target()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1729, in resolve_target
    self._resolve_target()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1737, in _resolve_target
    raise AliasResolutionError(self) from error
_griffe.exceptions.AliasResolutionError: Could not resolve alias tolvera.utils.torch pointing at torch (in src/tolvera/utils.py:13)

0 replies

Trace with

  - mkdocstrings:
      handlers:
        python:
          options:
            preload_modules:
              - torch
              - taichi
              - numpy
              - jsons
ERROR   -  Error reading page 'reference/tolvera/context.md': Could not resolve
           alias taichi._lib.core pointing at taichi._lib.utils.ti_python_core
           (in
           /miniconda3/envs/tolvera/lib/python3.11/site-packages/taichi/_lib/__init__.py:1)
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1735, in _resolve_target
    resolved = self.modules_collection.get_member(self.target_path)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/mixins.py", line 84, in get_member
    return self.members[parts[0]].get_member(parts[1:])  # type: ignore[attr-defined]
           ~~~~~~~~~~~~^^^^^^^^^^
KeyError: 'taichi'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/livereload/__init__.py", line 211, in _build_loop
    self.builder()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/serve.py", line 67, in builder
    build(config, serve_url=None if is_clean else serve_url, dirty=is_dirty)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/build.py", line 310, in build
    _populate_page(file.page, config, files, dirty)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/commands/build.py", line 167, in _populate_page
    page.render(config, files)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocs/structure/pages.py", line 285, in render
    self.content = md.convert(self.markdown)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/markdown/core.py", line 357, in convert
    root = self.parser.parseDocument(self.lines).getroot()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/markdown/blockparser.py", line 117, in parseDocument
    self.parseChunk(self.root, '\n'.join(lines))
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/markdown/blockparser.py", line 136, in parseChunk
    self.parseBlocks(parent, text.split('\n\n'))
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/markdown/blockparser.py", line 158, in parseBlocks
    if processor.run(parent, blocks) is not False:
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocstrings/extension.py", line 125, in run
    html, handler, data = self._process_block(identifier, block, heading_level)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocstrings/extension.py", line 188, in _process_block
    data: CollectorItem = handler.collect(identifier, options)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/mkdocstrings_handlers/python/handler.py", line 229, in collect
    loader.load(
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 181, in load
    top_module = self._load_package(package, submodules=submodules)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 508, in _load_package
    top_module = self._load_module(package.name, package.path, submodules=submodules)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 532, in _load_module
    return self._load_module_path(module_name, module_path, submodules=submodules, parent=parent)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 562, in _load_module_path
    self._load_submodules(module)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 567, in _load_submodules
    self._load_submodule(module, subparts, subpath)
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 575, in _load_submodule
    parent_module = self._get_or_create_parent_module(module, subparts, subpath)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/loader.py", line 698, in _get_or_create_parent_module
    parent_namespace = parent_module.is_namespace_package or parent_module.is_namespace_subpackage
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1571, in is_namespace_package
    return cast(Module, self.final_target).is_namespace_package
                        ^^^^^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1697, in final_target
    target = target.target  # type: ignore[assignment]
             ^^^^^^^^^^^^^
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1662, in target
    self.resolve_target()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1729, in resolve_target
    self._resolve_target()
  File "/miniconda3/envs/tolvera/lib/python3.11/site-packages/_griffe/models.py", line 1737, in _resolve_target
    raise AliasResolutionError(self) from error
_griffe.exceptions.AliasResolutionError: Could not resolve alias taichi._lib.core pointing at taichi._lib.utils.ti_python_core (in /miniconda3/envs/tolvera/lib/python3.11/site-packages/taichi/_lib/__init__.py:1)

2 replies

@pawamoy

Thank you!

@pawamoy

Fixed in v1.14.6 ๐Ÿ™‚

Read the original on github.com โ†—