pylearnspec
Python parser and validator for the LearnSpec suite of open standards:
| Format | API |
|---|---|
| LearnMD — instructional content | parse_learn, validate_learn |
| QuizMD — assessments | parse_quiz, validate_quiz |
| FlashMD — flashcards | parse_flash, validate_flash |
| NuggetMD — micro-learning nuggets | parse_nugget, validate_nugget |
| TrackMD — learning paths | parse_track, validate_track |
| DiagramMD — diagrams | parse_diagram, validate_diagram, serialize_diagram |
| AnimMD — step-reveal animations | parse_anim, validate_anim, serialize_anim |
| MediaMD — media catalogues | parse_media, validate_media |
| GlossaryMD — glossaries | parse_glossary, validate_glossary |
| BadgeMD — micro-credentials | parse_badge, validate_badge |
| CertMD — macro-credentials | parse_cert, validate_cert |
| ListenMD — speech-only rendition scripts | parse_listen, validate_listen |
Install
pip install pylearnspec
Quick start
Parse a QuizMD file
from pylearnspec import parse_quiz
with open("my-quiz.quiz.md") as f:
quiz = parse_quiz(f.read())
print(quiz.title)
print(f"{len(quiz.questions)} questions")
for q in quiz.questions:
print(f" Q{q.number} ({q.q_type}): {q.title}")
Parse a LearnMD file
from pylearnspec import parse_learn
with open("my-lesson.learn.md") as f:
lesson = parse_learn(f.read())
print(lesson.title)
for section in lesson.sections:
print(f" {'#' * section.depth} {section.title}")
Validate
from pylearnspec import validate_quiz, validate_learn
# Lenient mode (default)
diagnostics = validate_quiz(content)
# Strict mode (for CI)
diagnostics = validate_quiz(content, strict=True)
for d in diagnostics:
print(f"[{d.level}] {d.message}")
JSON output
Both Quiz and Lesson objects have a .to_dict() method for JSON serialization:
import json
from pylearnspec import parse_quiz
quiz = parse_quiz(content)
print(json.dumps(quiz.to_dict(), indent=2))
Supported features
QuizMD
- Frontmatter (Level 1) and per-question
quizblocks (Level 2) - Question types: MCQ, multi-select, true/false, open answer, match, order
- Per-choice and global feedback (
[!correct],[!incorrect]) !importdirectives- Validation (lenient and strict modes)
LearnMD
- Frontmatter metadata (lang, estimated_time, tags)
- Section hierarchy (## modules, ### lessons)
- Special fenced blocks:
summary,example,note,tip,warning,quiz, etc. - GFM callout detection (
> [!tip],> [!warning], etc.) !importdirectives (.learn.mdand.quiz.md)- Validation (lenient and strict modes)
AnimMD
- Frontmatter (
pace,captions,badges) and thebindintent layer ({node: A},{edge: [A, B]},{label: "text"}) - One
##heading per step; the five verbsshow,hide,draw,focus,pulse - Companion blocks in DiagramMD catalogues (
```anim for:slug), preserved throughparse_diagram/serialize_diagramround-trips (orphans included) - Validation (lenient and strict modes) and deterministic serialization
LearnSpec suite (v0.2)
Every format follows the same shape:
- YAML frontmatter with the universal fields (
langrequired,license,spec_version,created,updated) - Cross-format directives
!import,!ref,!checkpoint(when applicable) — seepylearnspec.common.directives parse_<format>(content)returns a typed dataclass with a.to_dict()methodvalidate_<format>(content, strict=False)returns a list ofDiagnostic(level, message)
Development
pip install -e ".[dev]"
pytest
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pylearnspec-0.15.0.tar.gz
(81.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pylearnspec-0.15.0.tar.gz.
File metadata
- Download URL: pylearnspec-0.15.0.tar.gz
- Upload date:
- Size: 81.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d028892108b55015570366885ccd7a1e8b071f766915d43bcf9cd07ef38a8435
|
|
| MD5 |
209506fefe145bb5a97351aba553bcf0
|
|
| BLAKE2b-256 |
76dcf9362f71acda50064319a2ef79a38618faa09de98582843f8c3a55860b10
|
File details
Details for the file pylearnspec-0.15.0-py3-none-any.whl.
File metadata
- Download URL: pylearnspec-0.15.0-py3-none-any.whl
- Upload date:
- Size: 82.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0278f5fcb752f969d3bdbdc50a7ae7f0d6e310ab12d87e6042a0f33df402a41
|
|
| MD5 |
ec9b7b2b54bf2cc3dc8787109292c1a0
|
|
| BLAKE2b-256 |
229aad048028b16c1495fce138b95842acdedae428362fb847be397112746820
|