Skip to main content

Python bindings for Quillmark - format-first Markdown rendering

Project description

Quillmark — Python bindings

Python bindings for Quillmark's format-first Markdown rendering engine.

Maintained by TTQ.

Installation

pip install quillmark

Quick Start

from quillmark import Quillmark, Document, OutputFormat

engine = Quillmark()
quill = engine.quill_from_path("path/to/quill")

markdown = """~~~card-yaml
$quill: my_quill
$kind: main
title: Hello World
~~~

# Hello
"""

parsed = Document.from_markdown(markdown)
result = quill.render(parsed, OutputFormat.PDF)
result.artifacts[0].save("output.pdf")

# Round-trip: mutate, emit, re-parse
parsed.set_field("title", "Updated")
emitted = parsed.to_markdown()
reparsed = Document.from_markdown(emitted)
assert reparsed.payload["title"] == "Updated"

API Overview

Quillmark

engine = Quillmark()
engine.registered_backends()      # ['typst']
quill = engine.quill_from_path("path/to/quill")

Quill

quill = engine.quill_from_path("path")
result = quill.render(parsed, OutputFormat.PDF)
session = quill.open(parsed)
quill.dry_run(parsed)

quill.backend            # "typst"
quill.supports_canvas    # True when the backend supports canvas preview
quill.schema             # structured dict of the quill's document schema
quill.schema_yaml        # same schema rendered as a YAML string
quill.blueprint          # auto-generated annotated Markdown blueprint

RenderSession

Created via quill.open(doc); reuses the compiled snapshot across renders.

session = quill.open(parsed)
session.page_count
session.backend_id            # backend that produced this session
session.supports_canvas
session.warnings              # session-level warnings (e.g. version shims)
session.render(OutputFormat.SVG, [0])  # render a page subset

Document

doc = Document.from_markdown(markdown)
emitted = doc.to_markdown()          # canonical Quillmark Markdown

# Versioned storage DTO — use this to persist a document across a
# process restart or crate upgrade. The wire format is frozen per
# schema version, whereas Markdown syntax evolves.
stored = doc.to_json()               # JSON string carrying a schema version
restored = Document.from_json(stored)
assert restored.to_markdown() == doc.to_markdown()

# Detect "is this content a stored DTO or raw Markdown?" without exceptions.
doc = Document.try_from_json(blob) or Document.from_markdown(blob)

# Schema-version probing for cross-version migrations.
v = Document.schema_version_of(blob)          # raw tag, even for future versions
current = Document.current_schema_version()   # version this build writes

# Cheap structural equality and cloning.
copy = doc.clone()                            # independent handle
assert copy == doc                            # structural compare; warnings ignored

# O(1) card count.
doc.card_count

from_json raises ParseError on malformed JSON or an unknown schema tag. A DTO-reconstructed document has no parse-time warnings.

Development

uv venv
uv pip install -e ".[dev]"
uv run pytest

License

Apache-2.0

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

quillmark-0.82.0.tar.gz (3.2 MB view details)

Uploaded Source

Built Distributions

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

quillmark-0.82.0-cp310-abi3-win_amd64.whl (14.0 MB view details)

Uploaded CPython 3.10+Windows x86-64

quillmark-0.82.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (15.1 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

quillmark-0.82.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (14.7 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

quillmark-0.82.0-cp310-abi3-macosx_11_0_arm64.whl (13.8 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file quillmark-0.82.0.tar.gz.

File metadata

  • Download URL: quillmark-0.82.0.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quillmark-0.82.0.tar.gz
Algorithm Hash digest
SHA256 e3243ceb95bb7c4a5a46d91c89f9ea061f65b88a0ff4db2d9ab3d7d9c541dc92
MD5 d5590db70cdc2292ea8110cd2295c5e0
BLAKE2b-256 f487e048a341dfdba7da0b55eca42100deea3f694dec5ce330523af93656c332

See more details on using hashes here.

Provenance

The following attestation bundles were made for quillmark-0.82.0.tar.gz:

Publisher: release.yml on quillmark-org/quillmark

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

File details

Details for the file quillmark-0.82.0-cp310-abi3-win_amd64.whl.

File metadata

  • Download URL: quillmark-0.82.0-cp310-abi3-win_amd64.whl
  • Upload date:
  • Size: 14.0 MB
  • Tags: CPython 3.10+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for quillmark-0.82.0-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5195aa259e800165fd1bd860e168df0c6b9fada25229d582d8b3c55ede01b813
MD5 eb3c6a8bace46be3412a2b8b14168aa4
BLAKE2b-256 77ee381c4136e27dcd44e2eaac81341c5461be5a0a9581118d68326e3539aa52

See more details on using hashes here.

Provenance

The following attestation bundles were made for quillmark-0.82.0-cp310-abi3-win_amd64.whl:

Publisher: release.yml on quillmark-org/quillmark

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

File details

Details for the file quillmark-0.82.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for quillmark-0.82.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 503ebc5c76b00912108d6e3107054db0d5f57e63572c047194a694d7dc5f654b
MD5 2a0d4fe9b70cf684272833274a625393
BLAKE2b-256 70e77d0333d80e649411178483e0d9d351ca58c612c9e4bcc869619c14fe9f29

See more details on using hashes here.

Provenance

The following attestation bundles were made for quillmark-0.82.0-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on quillmark-org/quillmark

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

File details

Details for the file quillmark-0.82.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for quillmark-0.82.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 42261121ef0587e1dba355bee301707b805a96e3e2bc1276a1dbf5d0c2f77136
MD5 2153502a3dc876a17d021983547394ac
BLAKE2b-256 b6b124a9a4b8f71761ad3661b93eca2aca0069def7d038e5dae17d6deea68736

See more details on using hashes here.

Provenance

The following attestation bundles were made for quillmark-0.82.0-cp310-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on quillmark-org/quillmark

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

File details

Details for the file quillmark-0.82.0-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for quillmark-0.82.0-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8640246bee2e584b26c3c895cfe1a067f963240cef403419e96b2fc4eedded8e
MD5 f9209760011584b38ecb298dafd948c2
BLAKE2b-256 5ee97002b0169ca49756212fd9b2a844d7d8e6710c1add68944cf4d2084c291c

See more details on using hashes here.

Provenance

The following attestation bundles were made for quillmark-0.82.0-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on quillmark-org/quillmark

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