Skip to main content

MkDocs plugin to generate Sphinx-compatible objects.inv for intersphinx cross-referencing

Project description

MkDocs Intersphinx Generator Plugin

A MkDocs plugin that generates Sphinx-compatible objects.inv files for intersphinx cross-referencing.

Features

  • Page-level references via YAML frontmatter
  • Header-level references via HTML comments
  • Generates Sphinx-compatible objects.inv files

Installation

Development Installation

From the plugin directory:

pip install -e .

Or with development dependencies:

pip install -e ".[dev]"

Usage

1. Configure the Plugin

Add to your mkdocs.yml:

plugins:
  - search
  - intersphinx:
      enabled: true
      project: "My Project"
      version: "latest"

2. Add References to Your Pages

Page-Level References (YAML Frontmatter)

---
ref: my-page-reference
title: My Page Title
---

# My Page

Content here...

Header-Level References (HTML Comments)

# My Page

<!-- ref:important-section -->
## Important Section

This section can be referenced by other projects.

<!-- ref:another-topic -->
### Another Topic

More content...

3. Build Your Site

mkdocs build

The plugin will generate site/objects.inv containing all references.

Configuration Options

Option Type Default Description
enabled bool true Enable/disable the plugin
project str site_name Project name for the inventory
version str "latest" Project version
output str "objects.inv" Output filename
domain str "std" Sphinx domain for entries
page_role str "doc" Role for page references
header_role str "label" Role for header references
verbose bool false Enable verbose logging

Using Generated Inventory

From Sphinx Projects

In your Sphinx conf.py:

intersphinx_mapping = {
    'myproject': ('https://example.com/docs/', None),
}

Reference in reStructuredText:

See :doc:`myproject:my-page-reference`
See :ref:`myproject:important-section`

From MkDocs with mkdocstrings

In your mkdocs.yml:

plugins:
  - mkdocstrings:
      handlers:
        python:
          import:
            - https://example.com/docs/objects.inv

Development

Running Tests

pytest

Test Coverage

pytest --cov=mkdocs_intersphinx --cov-report=html

How It Works

  1. Parse Phase (on_page_markdown): Extract HTML ref comments and parse headers
  2. Collection Phase (on_page_content): Collect inventory entries with actual anchor IDs from TOC
  3. Generation Phase (on_post_build): Create and write objects.inv file using sphobjinv

Reference Naming Guidelines

  • Use lowercase letters, numbers, hyphens, and underscores only
  • Use hyphens to separate words (e.g., thread-safety-levels)
  • Make names descriptive but concise
  • Ensure names are unique across your documentation

Examples

See the tests/ directory for example usage.

License

MIT

Contributing

Contributions welcome! Please open an issue or pull request.

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

mkdocs_intersphinx-0.1.1.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

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

mkdocs_intersphinx-0.1.1-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_intersphinx-0.1.1.tar.gz.

File metadata

  • Download URL: mkdocs_intersphinx-0.1.1.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.31.0

File hashes

Hashes for mkdocs_intersphinx-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7af436724c9d026ae4ea7377d0bfc3e604c1abf4beee13cd91a8eb584c4faae7
MD5 2d3a26ed9d2cb4c260cda6c5c72e4db7
BLAKE2b-256 0b1aba78f1f5a98c3df82a048b5d459f0d6f993fe9feb99d592de92ffd2d10e3

See more details on using hashes here.

File details

Details for the file mkdocs_intersphinx-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_intersphinx-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f29eda479a996bf0bb125b8c8a3b6205c55e0afcc41b0d8067e0e775000d5d75
MD5 53f8e94e9de72c4595aa9588b0122d94
BLAKE2b-256 a660d83687a520a23a2e38f6f11b216c7540613aa66d0f115f72b88aea6ca4b4

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