Skip to main content

A Python interface for markdown-it.rs, using Rust for blazingly fast Markdown parsing ⚡️

Project description

markdown-it-pyrs

PyPI

markdown-it-pyrs icon

Currently in Beta, feedback welcome!

A Python interface for markdown-it.rs (and plugins), using Rust for blazingly fast Markdown parsing ⚡️

The goal of this project is to provide a fast, safe, extensible, and easy-to-use Markdown parser for Python. It is complimentary to markdown-it-py, which is a pure Python implementation of markdown-it, and here we aim to follow as close as possible the API for that package.

If you care primarily about speed, this is the library for you. For example, benchmarking the two libraries when parsing the CommonMark Spec file, markdown-it-pyrs is 20x faster than markdown-it-py.

Name (time, ms) Min Max Mean Rounds
markdown-it-pyrs 5.217 7.969 5.968 85
markdown-it-py 122.696 143.246 131.431 7

The drawback is that the library vendors compiled Rust code, and so:

  1. Parser plugins cannot currently be written in Python and added dynamically to the parser.
  2. It can be more difficult to integrate into environments like pyiodide and py-script (but maybe not for long: https://discuss.python.org/t/support-wasm-wheels-on-pypi/21924/3).

Usage

First install the package:

pip install markdown-it-pyrs

Then use it like you would markdown-it-py:

from markdown_it_pyrs import MarkdownIt

md = MarkdownIt("commonmark").enable("table")
md.render("# Hello, world!")
# '<h1>Hello, world!</h1>\n'

markdown-it.rs does not generate a token stream, but instead directly generates a Node tree. This is similar to the markdown-it-py's SyntaxTreeNode class, although the API is not identical. (source mapping is also provided by byte-offset, rather than line only)

md = (
  MarkdownIt("commonmark")
  .enable("table")
  .enable_many(["linkify", "strikethrough"])
)
node = md.tree("# Hello, world!")
print(node.walk())
# [Node(root), Node(heading), Node(text)]
print(node.pretty(srcmap=True, meta=True))
# <root srcmap="0:15">
#   <heading srcmap="0:15">
#     level: 1
#     <text srcmap="2:15">
#       content: Hello, world!

Note: Attributes of the Node class, such as Node.attrs, return a copy of the underlying data, and so mutating it will not affect what is stored on the node, e.g.

from markdown_it_pyrs import Node
node = Node("name")
# don't do this!
node.attrs["key"] = "value"
print(node.attrs) # {}
# do this instead (Python 3.9+)
node.attrs = node.attrs | {"key": "value"}
print(node.attrs) # {"key": "value"}
# Node.children is only a shallow copy though, so this is fine
child = Node("child")
node.children = [child]
node.children[0].name = "other"
print(child.name) # "other"

Command Line Interface

A CLI is also provided, which can be used like this:

echo "# Hello, world!" | markdown-it-pyrs html -
# <h1>Hello, world!</h1>
echo "# Hello, world!" | markdown-it-pyrs ast -
# <root>
#   <heading>
#     <text>

Replace - with a filename to read from a file, and see markdown-it-pyrs --help for more options, including initial configuration and enabling plugins.

Initial Configuration

Initialising MarkdownIt("zero") will not enable any plugins, and so you can add only the ones you need.

Use MarkdownIt("commonmark") to enable all the CommonMark plugins.

Use MarkdownIt("gfm") to enable all the CommonMark plugins, plus the GitHub Flavoured Markdown plugins.

Plugins

All syntax rules in markdown-it.rs are implemented as plugins. Plugins can be added to the parser by calling enable or enable_many with the name of the plugin. The following plugins are currently supported:

CommonMark Blocks:

  • blockquote: Block quotes with >
  • code: Indented code blocks
  • fence: Backtick code blocks
  • heading: # ATX headings
  • hr: --- horizontal rules
  • lheading: --- underline setext headings
  • list: * unordered lists and 1. ordered lists
  • paragraph: Paragraphs
  • reference: Link reference definitions [id]: src "title"

CommonMark Inlines:

  • autolink: <http://example.com>
  • backticks: `code`
  • emphasis: _emphasis_, *emphasis*, **strong**, __strong__
  • entity: &amp;
  • escape: backslash escaping \
  • image: ![alt](src "title")
  • link: [text](src "title"), [text][id], [text]
  • newline: hard line breaks
  • html_block: HTML blocks
  • html_inline: HTML inline

GitHub Flavoured Markdown (https://github.github.com/gfm):

  • table:

    | foo | bar |
    | --- | --- |
    | baz | bim |
    
  • strikethrough: ~~strikethrough~~

  • tasklist: - [x] tasklist item

  • autolink_ext: Extended autolink detection with "bare URLs" like https://example.com and www.example.com

  • tagfilter: HTML tag filtering, e.g. <script> tags are removed

Others:

  • sourcepos: Add source mapping to rendered HTML, looks like this: <stuff data-sourcepos="1:1-2:3">, i.e. line:col-line:col
  • replacements: Typographic replacements, like -- to
  • smartquotes: Smart quotes, like " to
  • linkify: Automatically linkify URLs with https://crates.io/crates/linkify (note currently this only matches URLs with a scheme, e.g. https://example.com)
  • heading_anchors: Add heading anchors, with defaults like GitHub
  • front_matter: YAML front matter
  • footnote: Pandoc-style footnotes (see https://pandoc.org/MANUAL.html#footnotes)
  • deflist: Definition lists (see https://pandoc.org/MANUAL.html#definition-lists)

Development

I'm quite new to Rust, so if you see something that could be improved, issues and PRs are welcome!

PyO3 and Maturin are used to build the Python package, by wrapping markdown-it.rs in a Python module.

pre-commit is used to run code formatting and linting checks, and tox is used to run tests.

TODO

Improvements:

  • Allow to override options:

    • lang_prefix: Prefix for language classes on fenced code blocks
    • quotes: Quote characters, for smart quotes
  • Add plugins: ...

  • Allow options for plugins:

    • heading anchors
    • tasklist checkboxes to be disabled
    • footnotes with options to turn on/off inline/collect/backrefs

Open issue upstream:

  • no text_join rule (to join adjacent text and text_special tokens)
  • heading_anchors plugin does not allow for e.g. GitHub format where non-uniqueness is resolved by appending -1, -2, etc, and also removal of image text
  • Capture reference nodes in AST
  • disable rules
  • better "cross-language" AST representation
  • differing behaviour of linkify and normalize_url/commonmark_extras test failures
  • quote characters for smart-quotes and lang_prefix for fence should both be variable at run-time? (currently they both must be compiled)
  • fix docstring in examples/ferris/block_rule.rs::FerrisBlockScanner::run, which currently describes the JS API not the new rust one
  • Capture "piece-wise" source maps for nested content, e.g. for when the source is split over multiple lines and nested in another block (could get inline here https://github.com/rlidwka/markdown-it.rs/blob/6f906b38c8ffc3cc651e67b448b3655b7d0debb3/src/parser/inline/mod.rs#L115)
  • easier way to get root.ext items in core rules; it seems at present you have to swap memory and reswap at the end of the rule, see e.g. the InlineParserRule
  • allow test_rules_at_line to parse what the calling rule is, so that other rules can decide whether to interrupt based on the calling rule (in the check function), I think this would then allow behaviour similar to what alt did (possibly needed for footnote definition parsing)
    • In general though, where back-compatibility is not required, I agree with djot goal 7, i.e. that block elements should not be allowed to interrupt other block elements without a newline
  • The possibility to return multiple (sequential) nodes from an InlineRule.run, e.g. ((node1, length1), (node2, length2), ...)
    • This would be similar to docutils
  • In the Node walk methods, allow the function to return something to indicate whether to continue walking the children of the node
  • is there a way to use a match statement, to match a Node against a NodeValue implementation? (rather than if/else for Node.cast)
  • Rule priority as an integer (similar to RST transform priority)
    • Currently can only specify before or after another rule or all rules
    • Can feel a little unclear for plugins, when to use attrs and when to add fields to node value.

Maintenance:

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

markdown_it_pyrs-0.4.0.tar.gz (111.6 kB view details)

Uploaded Source

Built Distributions

markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded PyPy manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ x86-64

markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.5 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ppc64le

markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.3 MB view details)

Uploaded PyPy manylinux: glibc 2.17+ ARMv7l

markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded PyPy manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-cp312-none-win_amd64.whl (992.6 kB view details)

Uploaded CPython 3.12 Windows x86-64

markdown_it_pyrs-0.4.0-cp312-none-win32.whl (937.6 kB view details)

Uploaded CPython 3.12 Windows x86

markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.5 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ppc64le

markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARMv7l

markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ ARM64

markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded CPython 3.12 manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

markdown_it_pyrs-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12 macOS 10.12+ x86-64

markdown_it_pyrs-0.4.0-cp311-none-win_amd64.whl (992.6 kB view details)

Uploaded CPython 3.11 Windows x86-64

markdown_it_pyrs-0.4.0-cp311-none-win32.whl (937.7 kB view details)

Uploaded CPython 3.11 Windows x86

markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.5 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ppc64le

markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARMv7l

markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ ARM64

markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

markdown_it_pyrs-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11 macOS 10.12+ x86-64

markdown_it_pyrs-0.4.0-cp310-none-win_amd64.whl (992.6 kB view details)

Uploaded CPython 3.10 Windows x86-64

markdown_it_pyrs-0.4.0-cp310-none-win32.whl (937.7 kB view details)

Uploaded CPython 3.10 Windows x86

markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.5 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ppc64le

markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARMv7l

markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ ARM64

markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

markdown_it_pyrs-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10 macOS 10.12+ x86-64

markdown_it_pyrs-0.4.0-cp39-none-win_amd64.whl (992.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

markdown_it_pyrs-0.4.0-cp39-none-win32.whl (937.8 kB view details)

Uploaded CPython 3.9 Windows x86

markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (1.5 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ppc64le

markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (1.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARMv7l

markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ ARM64

markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl (1.4 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.5+ i686

markdown_it_pyrs-0.4.0-cp39-cp39-macosx_11_0_arm64.whl (1.1 MB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

markdown_it_pyrs-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9 macOS 10.12+ x86-64

File details

Details for the file markdown_it_pyrs-0.4.0.tar.gz.

File metadata

  • Download URL: markdown_it_pyrs-0.4.0.tar.gz
  • Upload date:
  • Size: 111.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.7.4

File hashes

Hashes for markdown_it_pyrs-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fa98efe22ab78de494ee66bbdae8c20a40ccb4137c835197db2a5ee56797c929
MD5 b145205e569c1daa9a900770f6965f4d
BLAKE2b-256 f61b6f48b6da3594f1d383dcbd6e2eb1f3a39466807d8f6af607b522b2d912ed

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b5c1a1534086a0ab8ae426954b3ee34339e2cac8e23fa1164f3a9ee363994a86
MD5 f86b2919de1585dfc29d19390e6b26ae
BLAKE2b-256 42abdc93249df43063272af48aef41db4fbfe7f2924e9b533c81c013045d369c

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 6ec2d3e0890c35fc46cd6d8f45ddfac83a348c198d0fb0de3a1a5900200a9da6
MD5 6ed58d7030a97a3db361214094c3f395
BLAKE2b-256 b65190a60ed30ec6c22c617bdd5850d4178ec3048b1ec0c67975dc2700b5ca03

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 74e1e647264d6e98af5790b1c13bb8c38a9fd3907d66e63eb0e75c811c4c4ecd
MD5 fb2b9e09d4affe1c6fe302401c261c43
BLAKE2b-256 89b5874b8a266b968fd4759fa3677a2678adb1e80f9f27c3231ffb338a406aa9

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2b812665dd080a778a56f40fbda6b5267328ada9bb4dd8bd9f9e23862d8ba2c9
MD5 8eb1cf04ed560bffb4722266e9dac9bc
BLAKE2b-256 49ed0acd76e5e12d22ea3f1f041944b04804733164df30d69e37adb0f4ac672e

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 74edeff5006574f1be21b524068a571e6fb73c63be2aa987cb38560f6d341827
MD5 481a3f7981f3de54220644f1ebdd043b
BLAKE2b-256 8dd6e7cf225319a509f91503993121a6141559051aac6a713185376d711aead0

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c9a020c734a67c29702435c5139c520280d58ebea0c5465c29f24328a796de94
MD5 2bf1350cefc18937cda304513fedbf6d
BLAKE2b-256 385dc1f9473d4ba35f48dd3dac510778bc040e5476cb213a81ad833d53f0ffea

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 2df1c9296512a5230c46b1cca3c2dd0a214c07921257582f49f32399cdbdbe69
MD5 dc71fe6cafe9eec329421fae6dd5a675
BLAKE2b-256 463acd6a080c8fd92117030599dc1798d79f56f030a6a90da124b53af6e1f52e

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 91a77a14a9016d340c53bd0f603387f541520cc78ab395b5bc076bead115f512
MD5 bf2dadd3649bb2e1d7170f6ae6e76361
BLAKE2b-256 b5f96d73bd6385c323eb5fab02b372fd89aebc41721d2d3ccd50ea6a75dd0a7e

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1de186d604ff19f8eb9b7878fa1d31e59e3f6847c14357963203e6dcab8ab474
MD5 643cd9ef127b547d97f595da541cb6d3
BLAKE2b-256 77df84a0ea975dc7f2bd00815508dc61619786efa65db342c840eaf4ceb5bd5a

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 23efb10a5861d243e7697c9c9121bda95c044592359baa68e0617b44dde0a9ff
MD5 31f659880e040fb27bae221304689701
BLAKE2b-256 19dc4821c4dc8f3a5835e080b11af4656a931136cd2c4886a89e4deed0f630c8

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-none-win_amd64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-none-win_amd64.whl
Algorithm Hash digest
SHA256 61f18e088ac1724002a987ebaf40d15f62e1ffee1856fd9e7979a2388bc50d6f
MD5 2a5a0386fa10c4befd3b9b4cda6475ac
BLAKE2b-256 a2aae3bd55552ad44c572a90fafdd327c2663e6d6484b41ec2e8f4461ff4e558

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-none-win32.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-none-win32.whl
Algorithm Hash digest
SHA256 084a81a507ab6a23aa851c8f4e159aa5c66d2422bc735462677ec949c106a293
MD5 0e1491bab367edb010f706f101663fdd
BLAKE2b-256 d6bd452a547ea3fd7cd402d78dbd625be22cc1440d543340e79c71df25169af5

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 65ec562dce235ba6c6adc59f1a488ba4c4836bf42cf8a92009f664f64d43687c
MD5 30a4740d1847dc7f70c6f0736a2f1fba
BLAKE2b-256 b7da4d3a6532219a70fbbd14839f609ba47efb5ac154eb7f109494bb5bb64401

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 00260290b296122ae9653038432c3a9123b7c73cc2c162418318fdecc20ff7bf
MD5 9e089dccd57340d2961a71a8f2552457
BLAKE2b-256 d616b74a6a48c780e65b49b769e77348dfffcdc478b8eaa8383c93694a127ec5

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 85f2267a664c6b0d3b15747153c16265c798c064d4861de9699eb94ce7d507b4
MD5 b0c5fd090e7a5d1da6a3a491e9e8df1f
BLAKE2b-256 6f19fe870c54d3de0dd8df20d8637e6d90cfd5afa94c3f635e6411b3ec93cf1a

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f30dfc0cee263b6d9dc3698c3097a1f86373205214a02e21ecea80653c5d241f
MD5 17dcb7867d89fd2a77a3b788e57f0e16
BLAKE2b-256 ab4edb290d4779777b189a071e4914fe5d7b9d9201fe4244faf2e29e5d8ab8d7

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 4a4d3a3a15501e4d78f1969a6be9105efebe75f515d5975f871a59a31723e324
MD5 bcaf60f42a3a79efc4ad92c3d47d92d7
BLAKE2b-256 9ae90f4ce3447dfedaaa2c91b56e58a3848dee1df86674d8b7176c695a28ceb2

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 635f029ccaae6f8c171b8faae9788b92eac53ca2db7f3ca7ceac97b5a903620d
MD5 b7a6a2f2899b93fab9ad19d82b7fd16d
BLAKE2b-256 2240efd636886a7f3d2f0d8cd0b54eefca63e4b62880eaf0ea273eebd8aee498

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c8b3a044d51e324410ba613afd56117cfef097aee147a83ccef2e34455559194
MD5 4e4d9f0e77fd5d0be3905397114a85ac
BLAKE2b-256 f4187957ab1e045fafad7ced3082e38790db0169e8e919964a108688101103cd

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-none-win_amd64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-none-win_amd64.whl
Algorithm Hash digest
SHA256 6d4e8efd43114723166a9f21c6e20f5cf53dcf1a0ec361d2ad8e9c8725d71544
MD5 b0899c9ab359ccfb7c4fa291d5fc2840
BLAKE2b-256 0d0f97ab05d7bf3ef4e6ccee9aed4fc17a4aebe3c808b5e20f549848770579de

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-none-win32.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-none-win32.whl
Algorithm Hash digest
SHA256 9e410d11ea3193bea55c022a42aa893915414d392646c7d08f3d5dd549c30756
MD5 e955c60e9ef785fa1eb07033761d8def
BLAKE2b-256 b1aefc2ef99aed46b649f108d63f159d1200591bb99b43ad6b3334e83950f590

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3beb803bf5bbed0251a04701a2e36f5969e2bb7266d114058c3ca2c790e88627
MD5 696bdbf96620725e3a87870b7a883ee8
BLAKE2b-256 d0073604ad875ae2c11ce6762179b2badd51b3a33de08d36cd98d66922b014c0

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 677447268fc59d9a542e93222fea17741694b2034c47286e505c5ef99a9b1cd7
MD5 ce1362a69adc38933bce8be6a37f646d
BLAKE2b-256 64be2341e9caddf21dfc3ac8252c5a5439c1f80b3cd4304fbcb8b1238b1302ca

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 0db96a578b9f4e82acf5b360840b1f16e682d290cabb443ac5268ce2a0df8292
MD5 d20b6fa222ffee9eef3f28fe46ea936e
BLAKE2b-256 f8988cf5215d6b261f96769f3be8233851f4a1593ba7db3cc0df650866487e57

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad4003923fce992d75fe3384c49261b506d35fc6b7fd6e6a4dd7bf58ba38342f
MD5 66b55cf2a3a35074c4138da4fa20470f
BLAKE2b-256 d2fe895f56dec25218ea123c3b3898a6880d9b60f1caa472b9db9b0048a1430b

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 202f18f1d57084eea47d170094bed2f2593c30f7e2c0c56b3bc949e4fb128c06
MD5 bda0a7c26b06e2ff07d2a38ab52fa8d3
BLAKE2b-256 6a2ffbdf5c5b63b0ddd9f50d8aca3326e60e2f42ba69176273cb37979b511332

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e1e3df88fff9de2ef5264777e4548b301c32c56047eb3dd00ff51de4da45e97a
MD5 e7b9cbaed5bd084096634f63a0214836
BLAKE2b-256 d032ef47f1d1d720d51ea6755ec8a96c39036499bb74e7d85bdd06499868170c

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8ea69ae2a6a44ca4195c60fbb7b7ab6aa1a257c7a99a05c1b67810942509af42
MD5 efdd0ed97841703bf6326f34ea2c61fc
BLAKE2b-256 877d374c1f459dd3a731df7f011c8c6edc9afcbc502106844ec683be95a5e336

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-none-win_amd64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-none-win_amd64.whl
Algorithm Hash digest
SHA256 11944a402d82536276c33a8737269fa3e6ed595d2bef7f2362db5d84566cb183
MD5 eb37aaf8c34b226f8ba11ce93e68530a
BLAKE2b-256 fd96e478b986526391b4b3a6d114fc70dad9716dc686659c5a36bb0f7c2ffcd1

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-none-win32.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-none-win32.whl
Algorithm Hash digest
SHA256 484d2f1ba17a5e1d4bccee24b1c40e28448e1024bf0a277d0a2611b338efaac4
MD5 609a6260438ff3955cd70ed9c5ab1dbe
BLAKE2b-256 c01fd85967b53343042cb5575a6f31556ab12c8c96b20b3db229dc36d9b06d17

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 dbb79efb66dba0b5010e63beadfc5d80e8e1708dd55dd38b5ca0c80105759984
MD5 101ce4b62d243db9b62980b65e301df4
BLAKE2b-256 5f9e567b95417077b72880a2bde96b2887a80b7762ee3625530f52ac90051160

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 290d3eb3803f8a66972a768fb6b2e8cbdde8007e521056e67248af7679a6a968
MD5 82869d3c681f3fe31acb1dbd24495cc4
BLAKE2b-256 df9bdb3819a5c817252e3acc0f0287a09f5306201cbdddccd017664e5eee0f29

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 6e8eda0cee1c959e26afff566602b311112b3321c2be5f3bc5fe94b59db0897a
MD5 b0efb7c88f4cff66520f90e0b196244e
BLAKE2b-256 e0a402b2d6f692990be70e3377cc8f3e2a69d3727a7a622a1366f36a3978fe9f

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 96829fb086f0cf65dc60b5b6259c1fdd0cb738442480d07520db15638db45fbc
MD5 f55e23fac802e07b167797c449d5d1d5
BLAKE2b-256 3c30d6a7daa1be5e450058be3692aca1f6884aa1eca03082b59cd4c661c4919b

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 80d3e3dc601920343e2d0a3f4a77d07cf87453fc974455d6b1baec7e9d5446db
MD5 50bcc60340cf5e075af17606c5321c98
BLAKE2b-256 04167f8d930b009e5b1ec804760d75f06a1b27d903e6ebd265224317d8f3877e

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9614f584e5749b1eabb5960b567f2e3711b6f551f75a5f186f95c8dd2ceee102
MD5 20c747d2a459a76af8cea63dbbc46335
BLAKE2b-256 49bc06e40b858f77df346c24ff506865798370a0b08026d8694303438755720c

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5262f9b385705e12ca9060b772ad9262532d1e824d06333cc34f284e723c96a0
MD5 b001d01db3e5f5399c8656678206c555
BLAKE2b-256 5abcfdcb18ee0ea281c2ed4cf0b4e65fb257f86793626e40010ff1c73d2a7dd9

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-none-win_amd64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-none-win_amd64.whl
Algorithm Hash digest
SHA256 356337723aaee69437378ec6bbf80e1530c5b3d923ad4792113244db33ef1dbc
MD5 c76458e0da6631c72f43abe6c3a5127a
BLAKE2b-256 52b78352579b9fbc2e4a08716034fde87a6f011d73f70b4bf1488871221f699a

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-none-win32.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-none-win32.whl
Algorithm Hash digest
SHA256 c7aa18b8310a3aaba17d2e5e335aa5f426e8e8f9435838df7d9998e9020b77a3
MD5 3e0e4a8d53f03ed64349c2d01d4576ca
BLAKE2b-256 afd644c93d5c91dd73f073479b637c50478c0dfbf6a645a3f571a6a34be8bea6

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1611154717e27953e921cf07525101808f2396da6666e688b3a120fe71486103
MD5 f6b94736bcb853b9269d4277f9da81eb
BLAKE2b-256 e85901b1c5c7a710d4c3e193c4cad85a722e85fa7877414e80813455884c9697

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
Algorithm Hash digest
SHA256 a5315efb5472f6191fb4ce594612ff05b1ea8f3f9defc34941e3c614b9959976
MD5 e438f93688efc57fbabcc408435404e5
BLAKE2b-256 bd92ee9533ce670ae1fa37bc5347254a2804b2fb5a5ef27647c3d2d30d025264

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Algorithm Hash digest
SHA256 c2088a6d86d3dd335de9ae362cacb93506ec528f1c4945dc89511afcde0dcfb3
MD5 19e0f04f14e89187bbcd4b6a536cdfc8
BLAKE2b-256 d14d09e01dba93e84a1c66d270273cb0146d54e8288fa74e4da5a09e89441260

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4754d10abb5dd1619714a31319c0fcce46467bdb8116a90d911609e83bc94e75
MD5 759ec039e46606f8ceb25f40c74dfc27
BLAKE2b-256 ccd999f9bbc0d7a1cc0c896365a6f68f8d52582bf5f8b560f4c509059baf41db

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.whl
Algorithm Hash digest
SHA256 a67674abff5e553b549fbbbc9bd40d8b235636230f89c6255eaef34c4e3a1f5e
MD5 3bb62aa275ac5c49fb7a23b2a3420b7a
BLAKE2b-256 799b73677300d7fd9f239185539267b168af51a72aabcc3226ffac835e97e494

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 93af3234f073b1830b7768a47cbbb62c78c19083e784f3f20ae76f7ef72d24df
MD5 4aa68b7b5b559955f0ec5888bf2e71fc
BLAKE2b-256 9918e30e71c702e4839204dac3b655f03aed1f171a28287134b724a4956d56ed

See more details on using hashes here.

File details

Details for the file markdown_it_pyrs-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for markdown_it_pyrs-0.4.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 004050ade6a42a69f2bdb5faf6b743a08e08aaf3cd3bc8ae1f5c5fb118b50eeb
MD5 4fd2c5bf720502daef5e50fc40dfff34
BLAKE2b-256 27f6dd9f6e36577e25dcb1ee736d787fff9ddaa3d3005713a293c4f85cc45b34

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page