OVAPortableText 0.3.0__tar.gz → 0.5.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.3.0 → ovaportabletext-0.5.0}/.gitignore +16 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/CHANGELOG.md +44 -1
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/PKG-INFO +6 -4
- ovaportabletext-0.5.0/PROTOCOL.md +5637 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/README.md +4 -2
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/API_REFERENCE.md +37 -4
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/PROTOCOL_ALIGNMENT.md +30 -21
- ovaportabletext-0.5.0/docs/PYTHON_V14.md +90 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/QUICKSTART.md +6 -2
- ovaportabletext-0.5.0/docs/protocol/v1.3.md +5010 -0
- ovaportabletext-0.5.0/docs/protocol/v1.4-draft-example.json +673 -0
- ovaportabletext-0.5.0/docs/protocol/v1.4-draft.md +779 -0
- ovaportabletext-0.5.0/docs/protocol/v1.4-example.json +822 -0
- ovaportabletext-0.5.0/docs/protocol/v1.4-freeze.md +71 -0
- ovaportabletext-0.5.0/docs/protocol/v1.4.md +5637 -0
- ovaportabletext-0.5.0/examples/v13_charts_demo.py +100 -0
- ovaportabletext-0.5.0/examples/v14_report.py +88 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/pyproject.toml +5 -1
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/__init__.py +67 -2
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/block_objects.py +11 -2
- ovaportabletext-0.5.0/src/ova_portable_text/chart_features.py +263 -0
- ovaportabletext-0.5.0/src/ova_portable_text/chart_helpers.py +351 -0
- ovaportabletext-0.5.0/src/ova_portable_text/chart_semantics.py +372 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/content.py +14 -2
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/document.py +56 -6
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/exceptions.py +12 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/helpers.py +458 -10
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/numbering.py +6 -2
- ovaportabletext-0.5.0/src/ova_portable_text/protocol_version.py +64 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/registry.py +357 -3
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/resolver.py +4 -2
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/section.py +14 -1
- ovaportabletext-0.5.0/src/ova_portable_text/v14_validation.py +191 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/validator.py +177 -2
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/version.py +1 -1
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_minimal_report.py +1 -1
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_v12_section_and_doughnut.py +2 -2
- ovaportabletext-0.5.0/tests/test_v13_charts.py +233 -0
- ovaportabletext-0.5.0/tests/test_v14_charts.py +569 -0
- ovaportabletext-0.5.0/tests/test_v14_malformed_payloads.py +73 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/LICENSE +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/EXAMPLES.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/PUBLISHING_CHECKLIST.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/REAL_WORLD_RECIPES.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/TEST_MATRIX.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/USER_TESTING_CHECKLIST.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/VALIDATION_AND_RESOLVER.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/native/portable_text_basics.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/protocol/test +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/protocol/v1.0.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/protocol/v1.1.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/docs/protocol/v1.2.md +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/builder_numbering_roundtrip_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/extended_registries_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/full_report_workflow_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/grid_table_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/image_sources_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/inline_objects_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/marks_and_lists_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/minimal_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/patent_valuation_style_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/references_and_marks_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/registry_blocks_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/sample_outputs/generate_patent_report_sample_1.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/sample_outputs/patent_report_sample_1.json +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/save_and_load_json_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/v11_layout_and_cell_image_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/validation_context_demo.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/examples/validation_report.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/base.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/inline.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/py.typed +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/text.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/src/ova_portable_text/theme.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_blocks_and_registry.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_builder_roundtrip_and_theme.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_content_flow_helpers.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_document_validation_error_rendering.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_examples_smoke.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_extended_registries_and_resolver.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_file_io_roundtrip.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_image_asset_sources.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_inline_objects.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_mark_validation.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_marks_and_lists.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_numbering.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_pie_chart_parallel_arrays.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_resolver_debug_summary.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_resolver_semantic_figure_alias.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_roundtrip_and_runtime_version.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_section_batch_helpers.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_strict_ids.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_style_validation.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_table_dataset_validation.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_v11_grid_cell_image.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_v11_image_block_optional_id.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_v11_table_layout.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_v11_theme_layout.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_validation_context_output.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_validation_failures.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_validation_report_python_alias.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_validation_success.py +0 -0
- {ovaportabletext-0.3.0 → ovaportabletext-0.5.0}/tests/test_validator_extended_rules.py +0 -0
|
@@ -114,6 +114,9 @@ Thumbs.db
|
|
|
114
114
|
# =========================
|
|
115
115
|
docs/_build/
|
|
116
116
|
|
|
117
|
+
# Local report design references
|
|
118
|
+
/docs/startup_report_example/
|
|
119
|
+
|
|
117
120
|
# =========================
|
|
118
121
|
# Temporary files
|
|
119
122
|
# =========================
|
|
@@ -145,3 +148,16 @@ temp/
|
|
|
145
148
|
*.tgz
|
|
146
149
|
*.bz2
|
|
147
150
|
*.rar
|
|
151
|
+
|
|
152
|
+
# =========================
|
|
153
|
+
# Node / frontend workspace
|
|
154
|
+
# =========================
|
|
155
|
+
node_modules/
|
|
156
|
+
**/node_modules/
|
|
157
|
+
.vite/
|
|
158
|
+
**/.vite/
|
|
159
|
+
coverage/
|
|
160
|
+
**/coverage/
|
|
161
|
+
*.tsbuildinfo
|
|
162
|
+
editor/.tools/
|
|
163
|
+
editor/**/dist/
|
|
@@ -2,7 +2,50 @@
|
|
|
2
2
|
|
|
3
3
|
**All notable changes to this project will be documented in this file.** ** **本项目的重要变更会记录在此文件中。
|
|
4
4
|
|
|
5
|
-
## [
|
|
5
|
+
## [0.5.0] - 2026-09-21
|
|
6
|
+
|
|
7
|
+
### Protocol
|
|
8
|
+
|
|
9
|
+
* froze the `report.v1.4` contract in `PROTOCOL.md` and `docs/protocol/v1.4.md`
|
|
10
|
+
* defined five new chart types, shared chart semantics, and the `figure` composition block
|
|
11
|
+
* added a complete generic v1.4 JSON example and a protocol freeze record
|
|
12
|
+
|
|
13
|
+
### Python SDK
|
|
14
|
+
|
|
15
|
+
* added timeline, stage_progress, flow, funnel and range models and authoring helpers
|
|
16
|
+
* added data roles/basis, numeric domains/ticks, annotations, percent bars and doughnut center content
|
|
17
|
+
* added figure composition with grid dependencies, shared figure numbering and adjacent captions
|
|
18
|
+
* added strict known-chart dispatch, chart semantic diagnostics and raw-payload validation
|
|
19
|
+
* report malformed chart containers and discriminators as structured validation errors instead of internal exceptions
|
|
20
|
+
* preserved historical v1.3 custom chart types without implicit migration; new features require v1.4
|
|
21
|
+
* changed the default schema to `report.v1.4`; explicit v1.3 authoring remains available
|
|
22
|
+
* added v1.4 regression coverage, a runnable report example and migration/API guidance
|
|
23
|
+
* excluded local report design materials from Git and distribution artifacts
|
|
24
|
+
|
|
25
|
+
This package produces JSON; downstream rendering requires separate implementation and acceptance.
|
|
26
|
+
|
|
27
|
+
## [0.4.0] - 2026-05-14
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
* aligned the package with `report.v1.3`
|
|
32
|
+
* added typed chart models for `bar`, `line`, and `matrix_bubble` datasets
|
|
33
|
+
* added shared `ChartAxis`, `ChartCategory`, `MatrixBubbleCategory`, and `SizeMetric` models
|
|
34
|
+
* added chart helper functions for bar, horizontal bar, line, and matrix bubble datasets
|
|
35
|
+
* added validation coverage for v1.3 chart category references, series keys, and matrix bubble size values
|
|
36
|
+
* added tests covering v1.3 schema defaults, `pie.slices[].colorHint`, bar variants, line points, and matrix bubble output
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
|
|
40
|
+
* default `schemaVersion` is now `report.v1.3`
|
|
41
|
+
* package metadata and public version now reflect `v0.4.0` / `report.v1.3`
|
|
42
|
+
* `datasets.charts` now has first-class Python models for all v1.3 formal chart types while keeping the generic chart fallback
|
|
43
|
+
|
|
44
|
+
### Fixed
|
|
45
|
+
|
|
46
|
+
* preserved `pie.slices[].colorHint` while avoiding new visual-style fields for v1.3 chart types
|
|
47
|
+
* normalized legacy `sizeMetric.valueUnit` input to `sizeMetric.unit` without emitting `valueUnit` in new matrix-bubble output
|
|
48
|
+
* avoided any `chartType = "bubble"` helper for v1.3; classification bubble charts now use `chartType = "matrix_bubble"`
|
|
6
49
|
|
|
7
50
|
## [0.3.0] - 2026-04-08
|
|
8
51
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: OVAPortableText
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Python builder for generating OVAPortableText / Report Profile v1 JSON documents
|
|
5
5
|
Author: FENG QU
|
|
6
6
|
License-Expression: MIT
|
|
@@ -23,8 +23,10 @@ Description-Content-Type: text/markdown
|
|
|
23
23
|
|
|
24
24
|
# OVAPortableText
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
> Python **0.5.0** 已实现 [`report.v1.4`](PROTOCOL.md) 的生成、读取和校验,默认新建 v1.4 文档并兼容读取 v1.3。新增五种图表、共享图表语义和组合 `figure`。见 [新版使用指南](docs/PYTHON_V14.md) 与 [完整 Python 示例](examples/v14_report.py)。渲染效果由下游渲染器独立验收。
|
|
27
|
+
|
|
28
|
+
**OVAPortableText** is a Python authoring package for building JSON documents that conform to the **OVA Report Profile v1.4** protocol.
|
|
29
|
+
**OVAPortableText** 是一个 Python 端的协议生成包,用于创建符合 **OVA Report Profile v1.4** 协议的 JSON 文档。
|
|
28
30
|
|
|
29
31
|
It is **not** a PDF renderer. Its job is to help Python code produce a typed, validated, protocol-aligned document payload that can be handed off to a downstream renderer.
|
|
30
32
|
它**不是** PDF 渲染器。它的职责是帮助 Python 代码以强类型、可校验、可维护的方式生成协议 JSON,再交给下游渲染器处理。
|