Skip to content
quickinfo
Esc
↑↓navigate↵open⌘Jpreview
On this page

Set up MkDocs

Add quickinfo hovers to an MkDocs site with mkdocstrings.

On MkDocs with mkdocstrings, the symbol data comes from the site itself. mkdocstrings writes objects.inv, an inventory of every documented object with its kind and anchor. The quickinfo build command reads it, takes signatures, docstring summaries, and base classes from the API pages, and writes the data files with the hover script beside them.

Configure MkDocs

Load the script, and have Pygments mark each code block’s language:

extra_javascript:
  - path: quickinfo/quickinfo.js
    defer: true

markdown_extensions:
  - pymdownx.highlight:
      pygments_lang_class: true
  - pymdownx.superfences

pygments_lang_class adds a language-python class to each block. Without it, MkDocs code blocks carry no language marker and stay unannotated.

Build the data

Run quickinfo build on the site output after each MkDocs build:

mkdocs build
npx quickinfo build site

The command writes names.json, info.json, and quickinfo.js to site/quickinfo/. The script finds its data next to itself, so it needs no options. Reference links in the data are relative, so the output works under any deploy path.

What gets annotated

Python code blocks resolve against the snippet’s imports and bindings, as symbol resolution describes. Cross-references such as [Path][pathlib.Path] take their symbol from the link target, and inline code resolves by name. Type names in API signatures resolve too. Links in the navigation and table of contents stay plain. Tooltips follow Material’s light and dark palette.

For example, a guide page with this block, on a site that documents a Python library, gets a hover on every API name. Hover them here:

import zipfile
from pathlib import Path

bundle = Path("bundle.zip")
with zipfile.ZipFile(bundle) as archive:
    print(archive.namelist())

mkdocs serve builds without the data. Run npx quickinfo build site --out docs/quickinfo once to put the files in the docs directory, which mkdocs serve copies to quickinfo/ on every rebuild. The command writes reference links for that served location; pass --served-at when the folder is served somewhere else.

Last updated on

Was this page helpful?