Python implementation of Linked Markdown, packaged for PyPI.
Status: All 26 conformance tests passing.
from linked_markdown.extract import extract
from linked_markdown.errors import (
LinkedMarkdownError,
LMD_NO_FRONTMATTER,
LMD_INVALID_FRONTMATTER,
)
result = extract(markdown)
# => ExtractResult(front_matter="...", body="...", attrs={...})Parses frontmatter from a Linked Markdown document. Supports YAML (---, ---yaml, = yaml =), JSON (---, ---json, = json =), and TOML (---toml, +++, = toml =) formats.
- Strips UTF-8 BOM and normalizes CRLF to LF before parsing.
- Returns
front_matterwith a trailing newline for non-empty frontmatter. front_matteris""for empty frontmatter (---\n---).bodyhas leading newlines stripped.
Thrown for all error conditions. Has a .code property:
| Code | When |
|---|---|
LMD_NO_FRONTMATTER |
No frontmatter delimiters found |
LMD_INVALID_FRONTMATTER |
Unknown marker, unparseable content, non-object attrs, or no closing delimiter |
try:
extract(markdown)
except LinkedMarkdownError as e:
if e.code == LMD_NO_FRONTMATTER:
...git submodule update --init --recursive
uv sync
uv run pytest