Clone this repo:
  1. 9331f4d 🔧 Remove optional dependency on the unmaintained `commonmark` package (#427) by Chris Sewell · 3 weeks ago main
  2. b639ae4 🔧 Include tests/ and tox.ini in the sdist (#426) by Chris Sewell · 3 weeks ago
  3. f1f765f ✨ Add `--enable-tables` to the CLI, and fix interactive-mode line joining (#425) by Chris Sewell · 3 weeks ago
  4. 60a8dc4 🔧 Update pre-commit hooks (ruff 0.16.6, mypy 2.3.1) (#424) by Chris Sewell · 3 weeks ago
  5. e39c4de 📚 DOCS: Document renderer constructor differences (#421) by user01010111 · 3 weeks ago

markdown-it-py

Github-CI Coverage Status PyPI Conda PyPI - Downloads

Markdown parser done right.

This is a Python port of markdown-it, and some of its associated plugins. For more details see: https://markdown-it-py.readthedocs.io.

For details on markdown-it itself, see:

See also: markdown-it-pyrs for an experimental Rust binding, for even more speed!

Installation

PIP

pip install markdown-it-py[plugins]

or with extras

pip install markdown-it-py[linkify,plugins]

Conda

conda install -c conda-forge markdown-it-py

or with extras

conda install -c conda-forge markdown-it-py linkify-it-py mdit-py-plugins

Usage

Python API Usage

Render markdown to HTML with markdown-it-py and a custom configuration with and without plugins and features:

from markdown_it import MarkdownIt
from mdit_py_plugins.front_matter import front_matter_plugin
from mdit_py_plugins.footnote import footnote_plugin

md = (
    MarkdownIt("commonmark", {"breaks": True, "html": True})
    .use(front_matter_plugin)
    .use(footnote_plugin)
    .enable("table")
)
text = """
---
a: 1
---

a | b
- | -
1 | 2

A footnote [^1]

[^1]: some details
"""
tokens = md.parse(text)
html_text = md.render(text)

## To export the html to a file, uncomment the lines below:
# from pathlib import Path
# Path("output.html").write_text(html_text)

Command-line Usage

Render markdown to HTML with markdown-it-py from the command-line:

usage: markdown-it [-h] [-v] [--stdin] [--enable-tables] [filenames ...]

Parse one or more markdown files, convert each to HTML, and print to stdout

positional arguments:
  filenames        specify an optional list of files to convert

options:
  -h, --help       show this help message and exit
  -v, --version    show program's version number and exit
  --stdin          read Markdown from standard input
  --enable-tables  enable table parsing

Interactive:

  $ markdown-it
  markdown-it-py [version 0.0.0] (interactive)
  Type Ctrl-D to complete input, or Ctrl-C to exit.
  >>> # Example
  ... > markdown *input*
  ...
  <h1>Example</h1>
  <blockquote>
  <p>markdown <em>input</em></p>
  </blockquote>

Batch:

  $ markdown-it README.md README.footer.md > index.html

Tables are disabled by default, as in CommonMark. Use --enable-tables with any input mode to enable them:

markdown-it --enable-tables README.md > index.html
markdown-it --enable-tables --stdin < README.md > index.html
markdown-it --enable-tables

References / Thanks

Big thanks to the authors of markdown-it:

Also John MacFarlane for his work on the CommonMark spec and reference implementations.