mkdocstrings / python

A Python handler for mkdocstrings.
https://mkdocstrings.github.io/python
ISC License
175 stars 32 forks source link

bug: Docstring Style Local Override Does Not Work #183

Open triley13 opened 1 week ago

triley13 commented 1 week ago

Description of the bug

Local override docstring_style for global configuration doesn't work.

To Reproduce

Declare in mkdocs.yaml:

plugins:
  - mkdocstrings:
      enabled: true
      default_handler: python
      handlers:
        python:
          options:
            docstring_style: google

-->

Inside file.md

::: path.to.module
    options:
      docstring_style: sphinx

Full traceback

Full traceback ```python N/A ```

Expected behavior

Override the default google style with the sphinx style for that one module.

Environment information

Additional context

I am using path: to load the module and I'm using mkdocs-monorepo-plugin.

pawamoy commented 1 week ago

Thanks for the report @triley13 :slightly_smiling_face:

I suppose you expect all objects within path.to.module to be parsed as Sphinx-style, right? Currently we only re-assign the style to the specific object but not its members.

Ideally we would distinguish that a local option was used, and instead of re-assigning a style, we would use the provided local style to parse docstrings. The issue is that we're not able to differentiate a global option from a local one once we're in the render method of the handler :thinking:

pawamoy commented 1 week ago

We can re-assign the style to the object and all its members, but note that Griffe extensions that modify the cached and parsed version of the docstring will probably stop working (because such extensions would be initially parsing and caching the docstring with the global style, not the local one).

WDYT?