OVAPortableText 0.2.0__tar.gz → 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/CHANGELOG.md +25 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/PKG-INFO +1 -1
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/API_REFERENCE.md +8 -7
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/PROTOCOL_ALIGNMENT.md +4 -4
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/QUICKSTART.md +2 -2
- ovaportabletext-0.3.0/docs/protocol/v1.2.md +4036 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/pyproject.toml +1 -1
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/__init__.py +10 -1
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/block_objects.py +4 -4
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/document.py +25 -3
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/helpers.py +55 -3
- ovaportabletext-0.3.0/src/ova_portable_text/py.typed +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/registry.py +45 -5
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/resolver.py +8 -4
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/section.py +33 -6
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/validator.py +87 -3
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/version.py +1 -1
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_minimal_report.py +1 -1
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_v11_grid_cell_image.py +31 -4
- ovaportabletext-0.3.0/tests/test_v12_section_and_doughnut.py +61 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/.gitignore +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/LICENSE +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/README.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/EXAMPLES.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/PUBLISHING_CHECKLIST.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/REAL_WORLD_RECIPES.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/TEST_MATRIX.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/USER_TESTING_CHECKLIST.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/VALIDATION_AND_RESOLVER.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/native/portable_text_basics.md +0 -0
- /ovaportabletext-0.2.0/src/ova_portable_text/py.typed → /ovaportabletext-0.3.0/docs/protocol/test +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/protocol/v1.0.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/docs/protocol/v1.1.md +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/builder_numbering_roundtrip_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/extended_registries_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/full_report_workflow_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/grid_table_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/image_sources_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/inline_objects_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/marks_and_lists_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/minimal_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/patent_valuation_style_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/references_and_marks_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/registry_blocks_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/sample_outputs/generate_patent_report_sample_1.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/sample_outputs/patent_report_sample_1.json +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/save_and_load_json_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/v11_layout_and_cell_image_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/validation_context_demo.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/examples/validation_report.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/base.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/content.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/exceptions.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/inline.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/numbering.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/text.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/src/ova_portable_text/theme.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_blocks_and_registry.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_builder_roundtrip_and_theme.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_content_flow_helpers.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_document_validation_error_rendering.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_examples_smoke.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_extended_registries_and_resolver.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_file_io_roundtrip.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_image_asset_sources.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_inline_objects.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_mark_validation.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_marks_and_lists.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_numbering.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_pie_chart_parallel_arrays.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_resolver_debug_summary.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_resolver_semantic_figure_alias.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_roundtrip_and_runtime_version.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_section_batch_helpers.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_strict_ids.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_style_validation.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_table_dataset_validation.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_v11_image_block_optional_id.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_v11_table_layout.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_v11_theme_layout.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_validation_context_output.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_validation_failures.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_validation_report_python_alias.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_validation_success.py +0 -0
- {ovaportabletext-0.2.0 → ovaportabletext-0.3.0}/tests/test_validator_extended_rules.py +0 -0
|
@@ -4,6 +4,31 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.3.0] - 2026-04-08
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
* aligned the package with `report.v1.2`
|
|
12
|
+
* added `DoughnutChartDataset` and `doughnut_chart_dataset(...)`
|
|
13
|
+
* added section-level models and helpers for `sectionRole`, `navigation`, `pagination`, and `presentation`
|
|
14
|
+
* added support for `_type="chart"` inside `GridTableCell.blocks`
|
|
15
|
+
* added validation coverage for doughnut constraints, grid-cell chart refs, and `presentation.titleBlockStyle`
|
|
16
|
+
* added tests covering v1.2 doughnut datasets, section fields, and grid-cell charts
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
|
|
20
|
+
* default `schemaVersion` is now `report.v1.2`
|
|
21
|
+
* `ChartBlock.id`, `TableBlock.id`, `MathBlock.id`, and `CalloutBlock.id` are now optional to match the protocol's instance-layer rules
|
|
22
|
+
* `Section`, `Document.new_section(...)`, and `section(...)` now accept v1.2 section fields
|
|
23
|
+
* chart / table / math helper functions now accept optional instance ids
|
|
24
|
+
* public exports and packaging metadata now reflect `v0.3.0` / `report.v1.2`
|
|
25
|
+
|
|
26
|
+
### Fixed
|
|
27
|
+
|
|
28
|
+
* fixed the protocol mismatch where grid-cell chart blocks were still rejected by the Python models and validator
|
|
29
|
+
* fixed the resolver mismatch where optional chart / table / math / callout instance ids could break target indexing
|
|
30
|
+
* fixed the validation gap where grid-cell `chartRef` values were not resolved
|
|
31
|
+
|
|
7
32
|
## [0.2.0] - 2026-04-01
|
|
8
33
|
|
|
9
34
|
### Added
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# API Reference / API 参考
|
|
2
2
|
|
|
3
|
-
This page is a practical map of the public API in OVAPortableText `v0.
|
|
4
|
-
本文档是 OVAPortableText `v0.
|
|
3
|
+
This page is a practical map of the public API in OVAPortableText `v0.3.0`, aligned to `report.v1.2`.
|
|
4
|
+
本文档是 OVAPortableText `v0.3.0` 的实用 API 地图,对齐 `report.v1.2`。
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -17,7 +17,7 @@ This page is a practical map of the public API in OVAPortableText `v0.2.0`, alig
|
|
|
17
17
|
|
|
18
18
|
Default schema version:
|
|
19
19
|
|
|
20
|
-
- `Document.schemaVersion == "report.v1.
|
|
20
|
+
- `Document.schemaVersion == "report.v1.2"`
|
|
21
21
|
|
|
22
22
|
Common arguments / 常用参数:
|
|
23
23
|
|
|
@@ -46,11 +46,12 @@ Body block objects / 正文块对象:
|
|
|
46
46
|
- `MathBlock`
|
|
47
47
|
- `CalloutBlock`
|
|
48
48
|
|
|
49
|
-
Important v1.
|
|
49
|
+
Important v1.2 note / v1.2 重点:
|
|
50
50
|
|
|
51
|
-
- `ImageBlock(imageRef="...")`
|
|
52
|
-
- `
|
|
53
|
-
- `
|
|
51
|
+
- `ImageBlock(imageRef="...")` remains valid
|
|
52
|
+
- `ChartBlock(chartRef="...")`, `TableBlock(tableRef="...")`, and `MathBlock(latex="...")` may now omit instance `id`
|
|
53
|
+
- `Section` now supports `sectionRole`, `navigation`, `pagination`, and `presentation`
|
|
54
|
+
- `GridTableCell.blocks[]` now supports `_type="chart"` in addition to `_type="block"` and `_type="image"`
|
|
54
55
|
|
|
55
56
|
---
|
|
56
57
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Protocol Alignment / 协议对齐说明
|
|
2
2
|
|
|
3
|
-
This page explains how OVAPortableText 0.
|
|
4
|
-
本文档说明 OVAPortableText 0.
|
|
3
|
+
This page explains how OVAPortableText 0.3.0 aligns with the current Report Profile v1.2 protocol maintained in this repository.
|
|
4
|
+
本文档说明 OVAPortableText 0.3.0 与当前仓库内维护的 Report Profile v1.2 正式协议之间的对齐关系。
|
|
5
5
|
|
|
6
6
|
---
|
|
7
7
|
|
|
@@ -20,8 +20,8 @@ The package aligns to this top-level shape:
|
|
|
20
20
|
- `glossary`
|
|
21
21
|
- `sections`
|
|
22
22
|
|
|
23
|
-
`schemaVersion` defaults to `report.v1.
|
|
24
|
-
`schemaVersion` 默认值为 `report.v1.
|
|
23
|
+
`schemaVersion` defaults to `report.v1.2`.
|
|
24
|
+
`schemaVersion` 默认值为 `report.v1.2`。
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
@@ -50,8 +50,8 @@ What happens here / 这里发生了什么:
|
|
|
50
50
|
|
|
51
51
|
## 3. Add registry-backed content / 添加引用型内容
|
|
52
52
|
|
|
53
|
-
The protocol separates top-level registries from body instances. In `report.v1.
|
|
54
|
-
协议把“顶层 registry”与“正文实例”分开处理。在 `report.v1.
|
|
53
|
+
The protocol separates top-level registries from body instances. In `report.v1.2`, image / chart / table / math instances may omit instance `id` where the protocol allows it, text blocks can carry `layout`, sections can carry `sectionRole / navigation / pagination / presentation`, and grid cells can now contain charts.
|
|
54
|
+
协议把“顶层 registry”与“正文实例”分开处理。在 `report.v1.2` 中,协议允许的图片 / 图表 / 表格 / 公式实例都可以省略实例 `id`,文本块可携带 `layout`,section 可携带 `sectionRole / navigation / pagination / presentation`,grid 单元格现在还可以放图表。
|
|
55
55
|
|
|
56
56
|
### Example / 示例
|
|
57
57
|
|