# pulldown-cmark-py
An easy-to-use, configurable Python wrapper around
[pulldown-cmark](https://github.com/pulldown-cmark/pulldown-cmark).
## Installation
```bash
uv add pulldown-cmark
```
## Usage
`pulldown-cmark-py` provides just one function.
```python
def render(markdown: list[str], options: Options | None = None) -> list[str]: ...
```
The `Options` class configures callbacks and CommonMark extensions; see
`help(Options)` for details.
```python
class Options:
tables: bool
footnotes: bool
strikethrough: bool
tasklists: bool
smart_punctuation: bool
heading_attributes: bool
yaml_style_metadata_blocks: bool
pluses_delimited_metadata_blocks: bool
old_footnotes: bool
gfm: bool
definition_list: bool
superscript: bool
subscript: bool
wikilinks: bool
math: Callable[[str, bool], str] | None
code: Callable[[str, str | None], str] | None
```
Simple callback examples are given below.
```python
from latex2mathml.converter import convert
from pygments import highlight
from pygments.formatters import HtmlFormatter
from pygments.lexers import get_lexer_by_name, guess_lexer
def math_callback(buffer: str, display: bool) -> str:
return convert(buffer, "display" if display else "inline")
def code_callback(buffer: str, language: str | None) -> str:
lexer = get_lexer_by_name(language) if language else guess_lexer(buffer)
return highlight(buffer, lexer, HtmlFormatter())
```
Raw data
{
"_id": null,
"home_page": "https://git.sr.ht/~orchid/pulldown-cmark-py",
"name": "pulldown-cmark",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.13",
"maintainer_email": null,
"keywords": "markdown",
"author": "Mohamad Makki <moe.m.makki@gmail.com>",
"author_email": "Mohamad Makki <moe.m.makki@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/fb/53/c7b626e4cdad8f0416b2ff82325a1c7a9f60d390992aa1956a5f87f20ed1/pulldown_cmark-0.1.1.tar.gz",
"platform": null,
"description": "# pulldown-cmark-py\n\nAn easy-to-use, configurable Python wrapper around\n[pulldown-cmark](https://github.com/pulldown-cmark/pulldown-cmark).\n\n## Installation\n\n```bash\nuv add pulldown-cmark\n```\n\n## Usage\n\n`pulldown-cmark-py` provides just one function.\n\n```python\ndef render(markdown: list[str], options: Options | None = None) -> list[str]: ...\n```\n\nThe `Options` class configures callbacks and CommonMark extensions; see\n`help(Options)` for details.\n\n```python\nclass Options:\n tables: bool\n footnotes: bool\n strikethrough: bool\n tasklists: bool\n smart_punctuation: bool\n heading_attributes: bool\n yaml_style_metadata_blocks: bool\n pluses_delimited_metadata_blocks: bool\n old_footnotes: bool\n gfm: bool\n definition_list: bool\n superscript: bool\n subscript: bool\n wikilinks: bool\n math: Callable[[str, bool], str] | None\n code: Callable[[str, str | None], str] | None\n```\n\nSimple callback examples are given below.\n\n```python\nfrom latex2mathml.converter import convert\nfrom pygments import highlight\nfrom pygments.formatters import HtmlFormatter\nfrom pygments.lexers import get_lexer_by_name, guess_lexer\n\ndef math_callback(buffer: str, display: bool) -> str:\n return convert(buffer, \"display\" if display else \"inline\")\n\ndef code_callback(buffer: str, language: str | None) -> str:\n lexer = get_lexer_by_name(language) if language else guess_lexer(buffer)\n return highlight(buffer, lexer, HtmlFormatter())\n```\n\n",
"bugtrack_url": null,
"license": "0BSD",
"summary": "A Python interface to pulldown-cmark.",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://git.sr.ht/~orchid/pulldown-cmark-py",
"Source Code": "https://git.sr.ht/~orchid/pulldown-cmark-py"
},
"split_keywords": [
"markdown"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c6f8d5230773ada0687ac7266555749043388c4658dc44e384931c99c5edb77f",
"md5": "947640b4b66c4b67a5b8cdc4e5d54198",
"sha256": "de4b77bd84483bc1a27e3f77fc7a9eae94af2d65521ffb9a6b00fa76f6dfc150"
},
"downloads": -1,
"filename": "pulldown_cmark-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"has_sig": false,
"md5_digest": "947640b4b66c4b67a5b8cdc4e5d54198",
"packagetype": "bdist_wheel",
"python_version": "cp313",
"requires_python": ">=3.13",
"size": 413227,
"upload_time": "2025-07-25T03:21:16",
"upload_time_iso_8601": "2025-07-25T03:21:16.804825Z",
"url": "https://files.pythonhosted.org/packages/c6/f8/d5230773ada0687ac7266555749043388c4658dc44e384931c99c5edb77f/pulldown_cmark-0.1.1-cp313-cp313-macosx_11_0_arm64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "fb53c7b626e4cdad8f0416b2ff82325a1c7a9f60d390992aa1956a5f87f20ed1",
"md5": "d8ec844da790048be630280e9a70a6df",
"sha256": "98c93af9bc995baae5f05bcdfb1c669ec1ae30938cbaca450b9969e5bfbcc4ac"
},
"downloads": -1,
"filename": "pulldown_cmark-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "d8ec844da790048be630280e9a70a6df",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.13",
"size": 16502,
"upload_time": "2025-07-25T03:21:19",
"upload_time_iso_8601": "2025-07-25T03:21:19.230783Z",
"url": "https://files.pythonhosted.org/packages/fb/53/c7b626e4cdad8f0416b2ff82325a1c7a9f60d390992aa1956a5f87f20ed1/pulldown_cmark-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-25 03:21:19",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pulldown-cmark"
}