Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ help:
@echo " clean - Clean generated files"

test:
pytest aes/test_aes_correctness.py qr/test_qr_correctness.py httpclient/test_httpclient_correctness.py dotenv/test_dotenv_correctness.py yaml/test_yaml_correctness.py jsonc/test_jsonc_correctness.py retry/test_retry_correctness.py toon/test_toon_correctness.py tabulate/test_tabulate_correctness.py soup/test_soup_correctness.py prompt/test_prompt_correctness.py validate/test_validate_correctness.py markdown/test_markdown_correctness.py diff/test_diff_correctness.py vcs/test_vcs_correctness.py ansi/test_ansi_correctness.py frontmatter/test_frontmatter_correctness.py cache/test_cache_correctness.py readability/test_readability_correctness.py jsonschema/test_jsonschema_correctness.py png/test_png_correctness.py websocket/test_websocket_correctness.py cdp/test_cdp_correctness.py multipart/test_multipart_correctness.py -v
pytest aes/test_aes_correctness.py qr/test_qr_correctness.py httpclient/test_httpclient_correctness.py dotenv/test_dotenv_correctness.py yaml/test_yaml_correctness.py jsonc/test_jsonc_correctness.py retry/test_retry_correctness.py toon/test_toon_correctness.py toon/test_toon_conformance.py tabulate/test_tabulate_correctness.py soup/test_soup_correctness.py prompt/test_prompt_correctness.py validate/test_validate_correctness.py markdown/test_markdown_correctness.py diff/test_diff_correctness.py vcs/test_vcs_correctness.py ansi/test_ansi_correctness.py frontmatter/test_frontmatter_correctness.py cache/test_cache_correctness.py readability/test_readability_correctness.py jsonschema/test_jsonschema_correctness.py png/test_png_correctness.py websocket/test_websocket_correctness.py cdp/test_cdp_correctness.py multipart/test_multipart_correctness.py -v

test-aes:
pytest aes/test_aes_correctness.py -v
Expand All @@ -92,7 +92,7 @@ test-retry:
pytest retry/test_retry_correctness.py -v

test-toon:
pytest toon/test_toon_correctness.py -v
pytest toon/test_toon_correctness.py toon/test_toon_conformance.py -v

test-tabulate:
pytest tabulate/test_tabulate_correctness.py -v
Expand Down
8 changes: 4 additions & 4 deletions manifest.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"version": "1",
"generated": "2026-10-13T14:02:54.189221+00:00",
"generated": "2026-10-13T14:21:10.664330+00:00",
"modules": {
"a2a": {
"description": "A2A (Agent-to-Agent Protocol) - Zero-dependency Python implementation",
Expand Down Expand Up @@ -450,7 +450,7 @@
"deps": [],
"tier": "medium",
"category": "text",
"last_updated": "2026-10-13T08:52:48-05:00",
"last_updated": "2026-10-13T08:58:26-05:00",
"content_hash": "9bf6a53f5f834d9a9da0ab4cb288d7fa99eba16032e9b7b9c7840f3619fe3e4c"
},
"sparse_search": {
Expand Down Expand Up @@ -520,12 +520,12 @@
"files": [
"toon/toon.py"
],
"version": "0.4.0",
"version": "0.5.0",
"deps": [],
"tier": "simple",
"category": "serialization",
"last_updated": "2026-10-13T04:26:42-05:00",
"content_hash": "eb50841613ba78418f214f6f14b128e46ff0b1c2ea5a0c679b8b65cf83ae3afb"
"content_hash": "8971f3ad494e69f5c886d33e546f885e9760026fe8fce76e1906faffac80caa9"
},
"useragent": {
"description": "Lightweight User-Agent generator for Chrome/Edge with Client Hints",
Expand Down
225 changes: 225 additions & 0 deletions toon/conformance_baseline.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
{
"spec_version": "4.4",
"upstream_commit": "d09c3d33e37389345a74bd96981eb96dd9be6c5e",
"case_counts": {
"decode": 404,
"encode": 160
},
"passing_total": 350,
"failing": [
"decode/arrays-nested[12]",
"decode/arrays-nested[20]",
"decode/arrays-nested[24]",
"decode/arrays-nested[4]",
"decode/arrays-primitive[15]",
"decode/arrays-tabular[14]",
"decode/arrays-tabular[18]",
"decode/arrays-tabular[19]",
"decode/blank-lines[12]",
"decode/blank-lines[13]",
"decode/blank-lines[15]",
"decode/blank-lines[16]",
"decode/blank-lines[17]",
"decode/blank-lines[18]",
"decode/blank-lines[21]",
"decode/blank-lines[22]",
"decode/blank-lines[2]",
"decode/blank-lines[9]",
"decode/comments[0]",
"decode/comments[11]",
"decode/comments[1]",
"decode/comments[2]",
"decode/comments[3]",
"decode/comments[4]",
"decode/comments[5]",
"decode/comments[6]",
"decode/comments[7]",
"decode/comments[8]",
"decode/comments[9]",
"decode/delimiters[23]",
"decode/delimiters[24]",
"decode/indentation-errors[11]",
"decode/indentation-errors[12]",
"decode/indentation-errors[13]",
"decode/indentation-errors[15]",
"decode/indentation-errors[16]",
"decode/indentation-errors[17]",
"decode/indentation-errors[18]",
"decode/indentation-errors[19]",
"decode/indentation-errors[20]",
"decode/indentation-errors[21]",
"decode/indentation-errors[22]",
"decode/indentation-errors[23]",
"decode/indentation-errors[24]",
"decode/indentation-errors[25]",
"decode/indentation-errors[26]",
"decode/indentation-errors[27]",
"decode/indentation-errors[28]",
"decode/indentation-errors[29]",
"decode/indentation-errors[30]",
"decode/indentation-errors[31]",
"decode/indentation-errors[33]",
"decode/indentation-errors[34]",
"decode/numbers[10]",
"decode/numbers[11]",
"decode/numbers[13]",
"decode/numbers[14]",
"decode/numbers[5]",
"decode/objects-keyed[0]",
"decode/objects-keyed[10]",
"decode/objects-keyed[11]",
"decode/objects-keyed[12]",
"decode/objects-keyed[13]",
"decode/objects-keyed[14]",
"decode/objects-keyed[15]",
"decode/objects-keyed[16]",
"decode/objects-keyed[17]",
"decode/objects-keyed[1]",
"decode/objects-keyed[2]",
"decode/objects-keyed[3]",
"decode/objects-keyed[4]",
"decode/objects-keyed[5]",
"decode/objects-keyed[6]",
"decode/objects-keyed[7]",
"decode/objects-keyed[8]",
"decode/objects-keyed[9]",
"decode/objects[10]",
"decode/objects[12]",
"decode/objects[15]",
"decode/objects[16]",
"decode/objects[37]",
"decode/objects[42]",
"decode/objects[47]",
"decode/primitives[6]",
"decode/primitives[7]",
"decode/root-form[10]",
"decode/root-form[12]",
"decode/root-form[2]",
"decode/root-form[3]",
"decode/root-form[6]",
"decode/root-form[7]",
"decode/root-form[9]",
"decode/validation-errors[100]",
"decode/validation-errors[101]",
"decode/validation-errors[11]",
"decode/validation-errors[12]",
"decode/validation-errors[13]",
"decode/validation-errors[14]",
"decode/validation-errors[16]",
"decode/validation-errors[17]",
"decode/validation-errors[18]",
"decode/validation-errors[22]",
"decode/validation-errors[24]",
"decode/validation-errors[25]",
"decode/validation-errors[26]",
"decode/validation-errors[27]",
"decode/validation-errors[28]",
"decode/validation-errors[29]",
"decode/validation-errors[30]",
"decode/validation-errors[31]",
"decode/validation-errors[32]",
"decode/validation-errors[33]",
"decode/validation-errors[35]",
"decode/validation-errors[36]",
"decode/validation-errors[38]",
"decode/validation-errors[39]",
"decode/validation-errors[40]",
"decode/validation-errors[41]",
"decode/validation-errors[42]",
"decode/validation-errors[43]",
"decode/validation-errors[44]",
"decode/validation-errors[45]",
"decode/validation-errors[46]",
"decode/validation-errors[47]",
"decode/validation-errors[48]",
"decode/validation-errors[49]",
"decode/validation-errors[4]",
"decode/validation-errors[50]",
"decode/validation-errors[52]",
"decode/validation-errors[54]",
"decode/validation-errors[55]",
"decode/validation-errors[56]",
"decode/validation-errors[57]",
"decode/validation-errors[58]",
"decode/validation-errors[59]",
"decode/validation-errors[5]",
"decode/validation-errors[60]",
"decode/validation-errors[61]",
"decode/validation-errors[62]",
"decode/validation-errors[63]",
"decode/validation-errors[64]",
"decode/validation-errors[65]",
"decode/validation-errors[66]",
"decode/validation-errors[67]",
"decode/validation-errors[68]",
"decode/validation-errors[6]",
"decode/validation-errors[70]",
"decode/validation-errors[71]",
"decode/validation-errors[72]",
"decode/validation-errors[73]",
"decode/validation-errors[74]",
"decode/validation-errors[75]",
"decode/validation-errors[76]",
"decode/validation-errors[77]",
"decode/validation-errors[78]",
"decode/validation-errors[79]",
"decode/validation-errors[80]",
"decode/validation-errors[82]",
"decode/validation-errors[83]",
"decode/validation-errors[84]",
"decode/validation-errors[85]",
"decode/validation-errors[86]",
"decode/validation-errors[87]",
"decode/validation-errors[90]",
"decode/validation-errors[91]",
"decode/validation-errors[92]",
"decode/validation-errors[93]",
"decode/validation-errors[94]",
"decode/validation-errors[95]",
"decode/validation-errors[96]",
"decode/whitespace[11]",
"decode/whitespace[13]",
"decode/whitespace[14]",
"decode/whitespace[15]",
"decode/whitespace[16]",
"decode/whitespace[17]",
"decode/whitespace[4]",
"decode/whitespace[5]",
"decode/whitespace[6]",
"encode/arrays-nested[10]",
"encode/arrays-nested[11]",
"encode/arrays-nested[12]",
"encode/arrays-objects[10]",
"encode/arrays-objects[2]",
"encode/arrays-objects[3]",
"encode/arrays-objects[4]",
"encode/arrays-primitive[10]",
"encode/arrays-primitive[2]",
"encode/arrays-tabular[5]",
"encode/arrays-tabular[6]",
"encode/delimiters[6]",
"encode/objects-keyed[0]",
"encode/objects-keyed[11]",
"encode/objects-keyed[12]",
"encode/objects-keyed[1]",
"encode/objects-keyed[2]",
"encode/objects-keyed[3]",
"encode/objects-keyed[4]",
"encode/objects-keyed[5]",
"encode/objects-keyed[6]",
"encode/objects[18]",
"encode/objects[20]",
"encode/objects[22]",
"encode/objects[23]",
"encode/objects[28]",
"encode/objects[29]",
"encode/objects[30]",
"encode/primitives[11]",
"encode/primitives[27]",
"encode/primitives[35]",
"encode/primitives[36]",
"encode/primitives[37]",
"encode/primitives[39]",
"encode/whitespace[2]"
]
}
28 changes: 28 additions & 0 deletions toon/fixtures/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# TOON conformance fixtures

`spec/encode/` and `spec/decode/` are the official conformance fixtures of the
TOON specification, copied verbatim.

| | |
|---|---|
| Upstream repository | https://github.com/toon-format/spec |
| Upstream path | `tests/fixtures/{encode,decode}/*.json` |
| Upstream commit | `d09c3d33e37389345a74bd96981eb96dd9be6c5e` (tag `v4.4.0`) |
| Specification version | 4.4 |
| Fixture cases | 160 encode, 404 decode (564 total) |
| Upstream license | MIT (Copyright (c) 2025-PRESENT Johann Schopplich) |

The same files are the copy that `toon-format/toon-python` runs in its own CI
(`tests/fixtures/`, byte-identical at `toon-python@91413d1`). They are vendored
here so the conformance gate runs with the network off and against a fixed
upstream revision instead of a floating clone.

Do not edit these files by hand. To refresh them, copy the two directories from
a newer `toon-format/spec` tag and update the commit hash, version, and counts
in this table and in `toon/conformance_baseline.json`.

Each fixture file is a JSON object with a `version` field (the baseline spec
version), a `category` (`encode` or `decode`), and a `tests` array. Each test
carries `name`, `input`, `expected`, an optional `shouldError` flag, optional
`options` (`delimiter`, `indentSize`, `strict`), and an optional `specSection`
reference used to group failures by section.
Loading
Loading