Skip to main content

ChromaMark for Python — render and build colored blocks, pills, collapsibles, fields, meters and inline diff on top of Markdown, with Jupyter display.

Project description

chromamark (Python)

Render and build ChromaMark from Python — colored blocks, pills, collapsible sections, fields, meters, and inline diff on top of Markdown (CommonMark + GFM). Produces the same HTML as the JS renderer, so the same theme applies, and it displays inline in Jupyter.

Built on markdown-it-py.

Install

pip install chromamark

Render

from chromamark import render, create_renderer

html = render("::: success\nAll good [!ok pass]\n:::")

# or as a markdown-it-py plugin:
from markdown_it import MarkdownIt
from chromamark import chromamark_plugin
md = MarkdownIt("commonmark").use(chromamark_plugin)

Build (fluent, for agent reports)

from chromamark import ChromaDoc

doc = ChromaDoc()
doc.heading("Deploy report")
doc.success("Deploy succeeded", "3/3 replicas healthy")
doc.fields(Region="eastus", Status=doc.pill("ok", "healthy"))
doc.table(["Stage", "Result"], [["unit", doc.pill("pass", "247")]])
print(doc.to_cm())     # ChromaMark source
print(doc.to_html())   # rendered HTML

Jupyter

from chromamark import display_chromamark
display_chromamark("::: success\nRun complete [=success 100%]\n:::")

ChromaDoc also renders itself in notebooks via _repr_html_.

Parity with the JavaScript renderer

chromamark produces byte-identical HTML to @chromamark/renderer for normal content — verified by a differential harness over ~140,000 inputs (every ChromaMark construct, GFM, linkify, and the full SPEC/demo documents all match exactly). Three exotic edge cases differ, all involving unusual whitespace or non-BMP characters; none affect typical agent-generated reports:

  • Non-ASCII whitespace at a block edge (e.g. a leading U+3000 ideographic space): JS markdown-it preserves it (asciiTrim); markdown-it-py strips all Unicode whitespace. Upstream base-engine difference.
  • Six control/format code points inside ChromaMark constructs (U+001C–U+001F, U+0085 NEL, U+FEFF BOM): counted as whitespace by one engine's regex/strip but not the other, which can flip pill/field parsing.
  • Astral-plane (emoji) domain labels in bare links (e.g. 🎉.com): auto-linked by JS linkify-it but not linkify-it-py. BMP and IDN letter hosts match.

Credits

Inline change-tracking syntax is adopted from CriticMarkup (© 2013 Gabe Weatherhead & Erik Hess, Apache-2.0); ChromaMark's parser is an original, independent implementation. See the main README for full credits.

License

Modified MIT License with a SaaS source-availability provision — see LICENSE.md.

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

chromamark-0.1.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

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

chromamark-0.1.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for chromamark-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b1343e7cc32e420715c54d8e3327fa7cf9ed93e897f22626f9d11cdc85e4f0a5
MD5 37a4b0765cbd8658847d346cfbcd6eb0
BLAKE2b-256 fc2bda69c9b045aab1d7f6f0b18db7b8892899a6044a14abdb3ee93c5ef682e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromamark-0.1.1.tar.gz:

Publisher: publish.yml on cjfravel-dev/ChromaMark

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

File details

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

File metadata

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

File hashes

Hashes for chromamark-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 9d1bde0fccd0af529cbdbe338ad1413d00718de18f2d1fe32bdfe583c63b29bf
MD5 8cf1c2dca208dc338c4e9ee6d3783cb4
BLAKE2b-256 4f087e3f84bd01511e191b4e4dc2851d8ce05ea46b91c3727dd319da1e67c355

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromamark-0.1.1-py3-none-any.whl:

Publisher: publish.yml on cjfravel-dev/ChromaMark

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