A Python package/CLI to format and lint Python code blocks within Markdown
files.
Specifically designed for Markdown files used with
mkdocs-material
.
md-snakeoil
is built on the awesome ruff
formatter and linter and helps you to keep your Markdown files looking
sharp. 🤙🏽
Use pipx
:
pipx install md-snakeoil
Format and lint Markdown files within a directory (recursively):
snakeoil path/to/directory
That's it! 🚀
Note
If, your using uv
, install it with uv tool install md-snakeoil
The package provides a command-line interface (CLI) using typer
.
snakeoil --help
Usage: snakeoil [OPTIONS] [PATH] COMMAND [ARGS]...
Format and lint Python code blocks in Markdown files.
╭─ Arguments ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ path [PATH] File or directory to format [default: None] │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --line-length INTEGER Maximum line length for the formatted code [default: 79] │
│ --rules TEXT Ruff rules to apply (comma-separated) [default: I,W] │
│ --install-completion Install completion for the current shell. │
│ --show-completion Show completion for the current shell, to copy it or customize the installation. │
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
By default, the line length is set to 79 characters, and the Ruff rules W
and
I
are enabled. You can change these defaults using the --line-length
and
--rules
options.
snakeoil path/to/file.md
snakeoil path/to/directory
This will recursively format and lint the Python code blocks in all Markdown
files within path/to/directory
.