Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AliasResolutionError during merge_stubs (preventing mkdocstrings from working) #89

Closed
tlambert03 opened this issue Jun 22, 2022 · 2 comments

Comments

@tlambert03
Copy link
Contributor

tlambert03 commented Jun 22, 2022

Posting here, but I guess it's conceivable that the issue could also be caught and passed in mkdocstrings...

problem

griffe fails on the following simple package:

my_library
├── __init__.py
├── my_module.py
└── my_module.pyi
# my_library/my_module.py
import pathlib

def f() -> pathlib.Path:
    return pathlib.Path()
# my_library/my_module.pyi
import pathlib

def f() -> pathlib.Path: ...
╰─❯ griffe my_library

INFO       Loading package my_library
Traceback (most recent call last):
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/dataclasses.py", line 944, in resolve_target
    resolved = self.modules_collection[self.target_path]
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/mixins.py", line 26, in __getitem__
    return self.members[parts[0]]  # type: ignore[attr-defined]
KeyError: 'pathlib'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/Users/talley/mambaforge/envs/test/bin/griffe", line 8, in <module>
    sys.exit(main())
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/cli.py", line 302, in main
    loader = _load_packages(
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/cli.py", line 128, in _load_packages
    loader.load_module(package)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/loader.py", line 148, in load_module
    top_module = self._load_module(package.name, package.path, submodules=submodules)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/loader.py", line 352, in _load_module
    return self._load_module_path(module_name, module_path, submodules, parent)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/loader.py", line 380, in _load_module_path
    self._load_submodules(module)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/loader.py", line 385, in _load_submodules
    self._load_submodule(module, subparts, subpath)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/loader.py", line 396, in _load_submodule
    member_parent[subparts[-1]] = self._load_module(
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/mixins.py", line 75, in __setitem__
    value = merge_stubs(member, value)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/merger.py", line 92, in merge_stubs
    _merge_module_stubs(module, stubs)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/merger.py", line 20, in _merge_module_stubs
    _merge_stubs_members(module, stubs)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/merger.py", line 60, in _merge_stubs_members
    elif obj_member.is_class:
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/dataclasses.py", line 811, in __getattr__
    attr = getattr(self.target, name)
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/dataclasses.py", line 920, in target
    self.resolve_target()
  File "/Users/talley/mambaforge/envs/test/lib/python3.9/site-packages/griffe/dataclasses.py", line 946, in resolve_target
    raise AliasResolutionError(self.target_path) from error
griffe.exceptions.AliasResolutionError: Could not resolve pathlib

This bug essentially means that I have to erase either my stubs, or my modules, temporarily while building docs with mkdocstrings.

Env:
python 3.9

griffe                     0.20.0
mkdocs                     1.3.0
mkdocs-autorefs            0.4.1
mkdocs-material            8.3.7
mkdocs-material-extensions 1.0.3
mkdocstrings               0.19.0
mkdocstrings-python        0.7.1
@pawamoy
Copy link
Member

pawamoy commented Jun 25, 2022

Thanks! Fixed 🙂

@pawamoy pawamoy closed this as completed Jun 25, 2022
@tlambert03
Copy link
Contributor Author

awesome thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants