Skip to main content

Markdown pet project

Project description

Montmark

A lightweight, fast, pure-Python Markdown parser

Small. Walkable. Full of shortcuts. Sketched on a Parisian hill.

Introduction

Montmark turns Markdown into HTML. It is more than 90% compliant with CommonMark specification.

WORK IN PROGRESS! This is ALPHA quality software. Do not use it in production!

Plan

  • Continue ongoing updates progressively improving CommonMark compliance toward to near 100%
  • Add support for GitHub tables
  • Add streaming mode for low-memory processing of very large files
  • Optimize

Installation

As a package from PyPI

pip install montmark

As a standalone file

file montmark.py can be downloaded from GitHub or extracted from the PyPI package and used as a standalone script or module.

CLI

One of these for package:

montmark FILE
python3 -m montmark FILE

For standalone script:

python3 montmark.py FILE

the FILE argument may be a file path or - for standard input (stdin).

API

>>> import montmark
>>> html_string = montmark.convert(markdown_string)

Preliminary benchmark

Done with bench script and syntax.md sample from Mistletoe, on a 14th gen Intel Core i5 running Ubuntu 24.04

Parser Execution Time (s) Throughput (MB/s)
montmark 0.0.6 4.85 5.73
markdown_it 4.2.0 5.61 4.95
mistune 3.2.1 6.53 4.25
mistletoe 1.5.1 7.30 3.81
marko 2.2.3 23.30 1.19

CommonMark compliance

Section OK Total % OK Discrepancies
Tabs 10 11 90% 9
Backslash escapes 13 13 100%
Entity and numeric character references 17 17 100%
Precedence 1 1 100%
Thematic breaks 18 19 94% 61
ATX headings 18 18 100%
Setext headings 26 27 96% 91
Indented code blocks 11 12 91% 109
Fenced code blocks 29 29 100%
HTML blocks 38 44 86% 148,174,175,187,190,191
Link reference definitions 23 27 85% 201,208,209,210
Paragraphs 8 8 100%
Blank lines 1 1 100%
Block quotes 21 25 84% 235,237,238,252
List items 47 48 97% 300
Lists 22 26 84% 312,313,319,326
Inlines 1 1 100%
Code spans 22 22 100%
Emphasis and strong emphasis 126 132 95% 412,430,445,461,469,470
Links 79 90 87% 520,523,533,541,545,546,556,559,568,569,571
Images 17 22 77% 574,575,587,590,593
Autolinks 18 19 94% 610
Raw HTML 16 20 80% 616,619,629,632
Hard line breaks 14 15 93% 644
Soft line breaks 2 2 100%
Textual content 3 3 100%
ALL 601 652 92%

Open-Source, not Open-Contribution yet

Montmark is MIT licensed but is currently closed to contributions.

Personal note: this is a pet projet of mine and my time is limited. First I need to focus on my roadmap (new features and refactoring) and then I will happily accept contributions when everything is a little more stabilised.

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

montmark-0.0.6.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

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

montmark-0.0.6-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file montmark-0.0.6.tar.gz.

File metadata

  • Download URL: montmark-0.0.6.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for montmark-0.0.6.tar.gz
Algorithm Hash digest
SHA256 e5466ba46b126c91a1f7ff3851aa6818777a5f09ddce51247e90252d70b1142d
MD5 7e654631f2ce25f73cad6c8055042b2f
BLAKE2b-256 6b7a670c7712040aa692adcbc1f4065f0aace25ab3e7b6508f2d40cc87e2c6eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for montmark-0.0.6.tar.gz:

Publisher: python-publish.yml on desgeeko/montmark

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file montmark-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: montmark-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for montmark-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 b72f1544d02853a76d892231ba8a4e9fb512d9de9fbc9c83729aa9ab2bfec5d9
MD5 4a73ff9a2890a4fe7c04f4d914e8b94b
BLAKE2b-256 a4e1972496925bf2409fc0b0694822afadec359d4d0cb270faa40f1bd8003f7e

See more details on using hashes here.

Provenance

The following attestation bundles were made for montmark-0.0.6-py3-none-any.whl:

Publisher: python-publish.yml on desgeeko/montmark

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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