Skip to main content

Mkdocs plugin for generating Typer CLI docs

Project description

mkdocs-typer2

PyTest Ruff MkDocs Typer UV Python PyPI License Downloads Codecov Issues

A MkDocs plugin that automatically generates beautiful documentation for your Typer CLI applications.

You might be wondering why there are two plugins for Typer. The mkdocs-typer plugin is great, but it hasn't been updated in over a year, and there have been a number of changes to Typer since then. One important change is that Typer now has its own documentation generation system via the typer <module> utils docs command. This plugin simply leverages that system to generate the documentation for your Typer CLIs.

I created this plugin because the original plugin was no longer working for me, and I wanted to have a simple plugin that would work with the latest version of Typer. If the original mkdocs-typer plugin still works for you, there probably isn't a reason to switch. However, if you are looking for a plugin that will work with the latest version of Typer, this plugin is for you!

Features

  • Seamlessly integrates with MkDocs and Material theme
  • Automatically generates CLI documentation from your Typer commands
  • Supports all Typer command features including arguments, options, and help text
  • Easy to configure and use
  • pretty feature for formatting arguments & options as tables
  • engine option to select legacy markdown parsing or native Click walking
  • Global plugin configuration or per-documentation block configuration

How It Works

The plugin can either parse Typer's generated markdown (legacy) or walk the Click command tree directly (native). Both approaches are rendered as Markdown and integrated into your MkDocs site.

The plugin works by:

  1. Registering a Markdown extension that processes special directive blocks
  2. Resolving the command tree (legacy: typer <module> utils docs, native: Click walk)
  3. Formatting arguments and options as lists or tables based on pretty
  4. Integrating the resulting HTML into your MkDocs site

Installation

Install using pip:

pip install mkdocs-typer2

Install using uv:

uv add mkdocs-typer2

Requirements

  • Python 3.10 or higher
  • MkDocs 1.6.1 or higher
  • Typer 0.12.5 or higher
  • Pydantic 2.9.2 or higher

Configuration

Basic Configuration

Add the plugin to your mkdocs.yml file:

plugins:
  - mkdocs-typer2

Pretty Mode

The plugin offers a pretty option that can be set in your mkdocs.yml file to enable table-based formatting for options and arguments:

plugins:
  - mkdocs-typer2:
      pretty: true

Options when :pretty: false:

Options:

  • --name: The name of the project [required]

Options when :pretty: true:

Name Description Required Default
--name The name of the project Yes -

Engine Selection

Use engine to select how the command tree is built:

plugins:
  - mkdocs-typer2:
      engine: native  # or legacy

Usage

Basic Usage

In your Markdown files, use the ::: mkdocs-typer2 directive to generate documentation for your Typer CLI:

::: mkdocs-typer2
    :module: my_module
    :name: mycli

Required Parameters

  • :module: - The module containing your Typer CLI application. This is the installed module, not the directory path. For example, if your app is located in src/my_module/cli.py, your :module: should typically be my_module.cli.

Optional Parameters

  • :name: - The name of the CLI. If left blank, your CLI will simply be named CLI in your documentation.
  • :pretty: - Set to true to enable pretty formatting for this specific documentation block, overriding the global setting.
  • :engine: - legacy parses Typer markdown (deprecated). native walks Click and renders lists or tables based on pretty.

Advanced Usage

Per-Block Pretty Configuration

You can override the global pretty setting for individual documentation blocks:

::: mkdocs-typer2
    :module: my_module.cli
    :name: mycli
    :pretty: true
    :engine: native

Multiple CLI Documentation

You can document multiple CLIs in the same MkDocs site by using multiple directive blocks:

# Main CLI

::: mkdocs-typer2
    :module: my_module.cli
    :name: mycli

# Admin CLI

::: mkdocs-typer2
    :module: my_module.admin
    :name: admin-cli

Example

This repository is a good example of how to use the plugin. We have a simple CLI located in src/mkdocs_typer2/cli/cli.py.

The CLI's documentation is automatically generated using the block level directive in docs/cli.md:

::: mkdocs-typer2
    :module: mkdocs_typer2.cli.cli
    :name: mkdocs-typer2
    :engine: legacy

And the pretty versions in docs/cli-pretty-legacy.md and docs/cli-pretty-native.md:

::: mkdocs-typer2
    :module: mkdocs_typer2.cli.cli
    :name: mkdocs-typer2
    :pretty: true
    :engine: legacy
:::: mkdocs-typer2
    :module: mkdocs_typer2.cli.cli
    :name: mkdocs-typer2
    :pretty: true
    :engine: native

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

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_typer2-0.2.1.tar.gz (29.4 kB view details)

Uploaded Source

Built Distribution

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

mkdocs_typer2-0.2.1-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_typer2-0.2.1.tar.gz.

File metadata

  • Download URL: mkdocs_typer2-0.2.1.tar.gz
  • Upload date:
  • Size: 29.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mkdocs_typer2-0.2.1.tar.gz
Algorithm Hash digest
SHA256 8cf20cc9b29b9f38aeee27d273c28358658acf43b437cb191eede23b359aa966
MD5 4155e83e32381358df801e9f9fcbab50
BLAKE2b-256 a8f87eb008232fd55d0cfa3b3ca49f15b406f7b830ef6b77c9d02582a9b37d22

See more details on using hashes here.

File details

Details for the file mkdocs_typer2-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: mkdocs_typer2-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for mkdocs_typer2-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 688eedc73d3bb0da90619ad99283400df42251af4d412ed17b6bac32df141abd
MD5 2a681e27a5a478795f64b3bdebfdf6b0
BLAKE2b-256 f2a320a5e0b9dfacdbb2663a2339dbe4484c63f3095f13a305de71aac6cf6983

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