Skip to content

bug: regression on windows since 1.7.4 #116

@AntoineD

Description

@AntoineD

Description of the bug

On windows, since version 1.7.4, the path to custom extension (docs/_docstring_inheritance.py:DocstringInheritance in below reproducer) defined in mkdocs.yml is not well handled.

To Reproduce

This can be reproduced on this project's tree : https://gitlab.com/gemseo/dev/gemseo-fmu/-/tree/develop

pip install tox
tox -e doc

Full traceback

Full traceback
ERROR   -  Error reading page 'reference/gemseo_fmu/index.md': Extension module 'C' could not be found
Traceback (most recent call last):
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\griffe\extensions\base.py", line 427, in _load_extension
    ext_object = dynamic_import(import_path)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\griffe\importer.py", line 61, in dynamic_import
    module = import_module(module_path)
  File "C:\Python39\lib\importlib\__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'C'

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

Traceback (most recent call last):
  File "C:\Python39\lib\runpy.py", line 197, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Python39\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\Scripts\mkdocs.EXE\__main__.py", line 7, in <module>
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\click\core.py", line 1157, in __call__
    return self.main(*args, **kwargs)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\click\core.py", line 1078, in main
    rv = self.invoke(ctx)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\click\core.py", line 1688, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\click\core.py", line 1434, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\click\core.py", line 783, in invoke
    return __callback(*args, **kwargs)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocs\__main__.py", line 286, in build_command
    build.build(cfg, dirty=not clean)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocs\commands\build.py", line 322, in build
    _populate_page(file.page, config, files, dirty)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocs\commands\build.py", line 175, in _populate_page
    page.render(config, files)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocs\structure\pages.py", line 271, in render
    self.content = md.convert(self.markdown)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\markdown\core.py", line 357, in convert
    root = self.parser.parseDocument(self.lines).getroot()
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\markdown\blockparser.py", line 117, in parseDocument
    self.parseChunk(self.root, '\n'.join(lines))
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\markdown\blockparser.py", line 136, in parseChunk
    self.parseBlocks(parent, text.split('\n\n'))
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\markdown\blockparser.py", line 158, in parseBlocks
    if processor.run(parent, blocks) is not False:
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocstrings\extension.py", line 124, in run
    html, handler, data = self._process_block(identifier, block, heading_level)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocstrings\extension.py", line 206, in _process_block
    data: CollectorItem = handler.collect(identifier, options)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\mkdocstrings_handlers\python\handler.py", line 270, in collect
    extensions=load_extensions(extensions),
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\griffe\extensions\base.py", line 467, in load_extensions
    ext = _load_extension(extension)
  File "C:\Users\XXX\gemseo-fmu\gemseo-fmu\.tox\doc\lib\site-packages\griffe\extensions\base.py", line 429, in _load_extension
    raise ExtensionNotLoadedError(f"Extension module '{import_path}' could not be found") from error
griffe.exceptions.ExtensionNotLoadedError: Extension module 'C' could not be found

Expected behavior

No error like on linux.

Environment information

$ python -m mkdocstrings_handlers.python.debug
- __System__: Windows-10-10.0.17763-SP0
- __Python__: cpython 3.9.13
- __Environment variables__:
- __Installed packages__:
  - `mkdocs` v1.5.3
  - `mkdocstrings` v0.24.0
  - `mkdocstrings-python` v1.7.4
  - `griffe` v0.38.0

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions