Skip to main content

Tweaks for `mkdocstrings[python]`

Project description

Hippogriffe

This is a set of tweaks on top of the MkDocs + mkdocstrings[python] + griffe documentation stack. In particular, we:

  • Add [source] links to GitHub to each top-level class or function.
  • Pretty-format type annotations:
    • Fixes unions/generics/etc. to display as e.g. int | str rather than just Union, or tuple[int, str] rather than just tuple.
    • Respects your public API: if a type is declared in your documentation as ::: yourlib.Foo then its usage in type annotations will match: some_fn(foo: yourlib.Foo).
  • Show base classes inline after the class.
  • Drops the -> None return annotation from __init__ methods.
  • Attributes display as [attr] somelib.someattr instead of [attr] somelib.someattr = some_value [module]. (I don't find usually-long default values to be useful documentation, nor the 'module' tag to be informative.)
Before After
old new

Installation

pip install hippogriffe

Requires MkDocs 1.6.1+ and mkdocstrings[python] 0.28.3+

Usage

In mkdocs.yml:

...

plugins:
    - hippogriffe
    - mkdocstrings:
        ...

Configuration

Hippogriffe supports the following configuration options:

plugins:
    - hippogriffe:
        show_bases: true/false
        show_source_links: all/toplevel/none
        extra_public_objects:
            - foo.SomeClass
            - bar.subpackage.some_function

show_bases:

If false then base classes will not be displayed alongside a class. Defaults to true.

show_source_links:

Sets which objects will have links to their location in the repository (as configured via the usual MkDocs repo_url). If all then all objects will have links. If toplevel then just ::: somelib.value will have links, but their members will not. If none then no links will be added. Defaults to toplevel.

extra_public_objects:

Pretty-formatting of type annotations is done strictly: every annotation must be part of the known public API, else an error will be raised. The public API is defined as the combination of:

  • Everything you document using ::: yourlib.Foo, and all of their members.
  • Anything from the standard library.
  • All objects belonging to any of extra_public_objects.

For example,

plugins:
    - hippogriffe:
        extra_public_objects:
            - jax.Array
            - torch.Tensor

List each object under whatever public path somelib.Foo that you would like it to be displayed under (and from which it must be accessilbe), not whatever private path somelib._internal.foo.Foo it is defined at.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hippogriffe-0.2.0.tar.gz (13.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hippogriffe-0.2.0-py3-none-any.whl (19.4 kB view details)

Uploaded Python 3

File details

Details for the file hippogriffe-0.2.0.tar.gz.

File metadata

  • Download URL: hippogriffe-0.2.0.tar.gz
  • Upload date:
  • Size: 13.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for hippogriffe-0.2.0.tar.gz
Algorithm Hash digest
SHA256 dbbdcb0d51ae70aa86a3b515e03c0a3db5176fc88211682cb97a2c290ac8abd3
MD5 1d0a6e2a06422d9c5903d2f8bbfa397c
BLAKE2b-256 cc9e5b25e513e3a307698e99594f5d5b6d3cdd13c9831d7cbfb27aaeac51be2a

See more details on using hashes here.

File details

Details for the file hippogriffe-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: hippogriffe-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 19.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for hippogriffe-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 08340e6e533c4392e8a58e03ec84d8982b857bc39e45c25e146d260893b1ceac
MD5 eadc185d138d1aa0e244e7a7d3d8ef75
BLAKE2b-256 986e5f2b3273fd8411c8e6755094a9d983cc9d77866f312068363680eb789156

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page