OVAPortableText 0.4.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.
Files changed (103) hide show
  1. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/.gitignore +16 -0
  2. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/CHANGELOG.md +21 -1
  3. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/PKG-INFO +6 -4
  4. ovaportabletext-0.5.0/PROTOCOL.md +5637 -0
  5. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/README.md +4 -2
  6. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/API_REFERENCE.md +7 -3
  7. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/PROTOCOL_ALIGNMENT.md +30 -21
  8. ovaportabletext-0.5.0/docs/PYTHON_V14.md +90 -0
  9. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/QUICKSTART.md +4 -0
  10. ovaportabletext-0.5.0/docs/protocol/v1.3.md +5010 -0
  11. ovaportabletext-0.5.0/docs/protocol/v1.4-draft-example.json +673 -0
  12. ovaportabletext-0.5.0/docs/protocol/v1.4-draft.md +779 -0
  13. ovaportabletext-0.5.0/docs/protocol/v1.4-example.json +822 -0
  14. ovaportabletext-0.5.0/docs/protocol/v1.4-freeze.md +71 -0
  15. ovaportabletext-0.5.0/docs/protocol/v1.4.md +5637 -0
  16. ovaportabletext-0.5.0/examples/v14_report.py +88 -0
  17. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/pyproject.toml +5 -1
  18. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/__init__.py +40 -2
  19. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/block_objects.py +11 -2
  20. ovaportabletext-0.5.0/src/ova_portable_text/chart_features.py +263 -0
  21. ovaportabletext-0.5.0/src/ova_portable_text/chart_helpers.py +351 -0
  22. ovaportabletext-0.5.0/src/ova_portable_text/chart_semantics.py +372 -0
  23. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/content.py +14 -2
  24. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/document.py +56 -6
  25. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/exceptions.py +12 -0
  26. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/helpers.py +109 -6
  27. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/numbering.py +6 -2
  28. ovaportabletext-0.5.0/src/ova_portable_text/protocol_version.py +64 -0
  29. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/registry.py +140 -17
  30. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/resolver.py +4 -2
  31. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/section.py +14 -1
  32. ovaportabletext-0.5.0/src/ova_portable_text/v14_validation.py +191 -0
  33. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/validator.py +16 -1
  34. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/version.py +1 -1
  35. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_minimal_report.py +1 -1
  36. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v12_section_and_doughnut.py +1 -1
  37. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v13_charts.py +3 -3
  38. ovaportabletext-0.5.0/tests/test_v14_charts.py +569 -0
  39. ovaportabletext-0.5.0/tests/test_v14_malformed_payloads.py +73 -0
  40. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/LICENSE +0 -0
  41. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/EXAMPLES.md +0 -0
  42. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/PUBLISHING_CHECKLIST.md +0 -0
  43. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/REAL_WORLD_RECIPES.md +0 -0
  44. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/TEST_MATRIX.md +0 -0
  45. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/USER_TESTING_CHECKLIST.md +0 -0
  46. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/VALIDATION_AND_RESOLVER.md +0 -0
  47. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/native/portable_text_basics.md +0 -0
  48. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/protocol/test +0 -0
  49. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/protocol/v1.0.md +0 -0
  50. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/protocol/v1.1.md +0 -0
  51. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/docs/protocol/v1.2.md +0 -0
  52. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/builder_numbering_roundtrip_demo.py +0 -0
  53. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/extended_registries_demo.py +0 -0
  54. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/full_report_workflow_demo.py +0 -0
  55. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/grid_table_demo.py +0 -0
  56. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/image_sources_demo.py +0 -0
  57. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/inline_objects_report.py +0 -0
  58. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/marks_and_lists_report.py +0 -0
  59. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/minimal_report.py +0 -0
  60. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/patent_valuation_style_report.py +0 -0
  61. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/references_and_marks_demo.py +0 -0
  62. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/registry_blocks_report.py +0 -0
  63. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/sample_outputs/generate_patent_report_sample_1.py +0 -0
  64. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/sample_outputs/patent_report_sample_1.json +0 -0
  65. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/save_and_load_json_demo.py +0 -0
  66. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/v11_layout_and_cell_image_demo.py +0 -0
  67. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/v13_charts_demo.py +0 -0
  68. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/validation_context_demo.py +0 -0
  69. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/examples/validation_report.py +0 -0
  70. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/base.py +0 -0
  71. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/inline.py +0 -0
  72. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/py.typed +0 -0
  73. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/text.py +0 -0
  74. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/src/ova_portable_text/theme.py +0 -0
  75. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_blocks_and_registry.py +0 -0
  76. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_builder_roundtrip_and_theme.py +0 -0
  77. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_content_flow_helpers.py +0 -0
  78. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_document_validation_error_rendering.py +0 -0
  79. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_examples_smoke.py +0 -0
  80. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_extended_registries_and_resolver.py +0 -0
  81. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_file_io_roundtrip.py +0 -0
  82. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_image_asset_sources.py +0 -0
  83. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_inline_objects.py +0 -0
  84. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_mark_validation.py +0 -0
  85. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_marks_and_lists.py +0 -0
  86. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_numbering.py +0 -0
  87. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_pie_chart_parallel_arrays.py +0 -0
  88. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_resolver_debug_summary.py +0 -0
  89. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_resolver_semantic_figure_alias.py +0 -0
  90. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_roundtrip_and_runtime_version.py +0 -0
  91. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_section_batch_helpers.py +0 -0
  92. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_strict_ids.py +0 -0
  93. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_style_validation.py +0 -0
  94. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_table_dataset_validation.py +0 -0
  95. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v11_grid_cell_image.py +0 -0
  96. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v11_image_block_optional_id.py +0 -0
  97. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v11_table_layout.py +0 -0
  98. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_v11_theme_layout.py +0 -0
  99. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_validation_context_output.py +0 -0
  100. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_validation_failures.py +0 -0
  101. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_validation_report_python_alias.py +0 -0
  102. {ovaportabletext-0.4.0 → ovaportabletext-0.5.0}/tests/test_validation_success.py +0 -0
  103. {ovaportabletext-0.4.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,27 @@
2
2
 
3
3
  **All notable changes to this project will be documented in this file.** ** **本项目的重要变更会记录在此文件中。
4
4
 
5
- ## [Unreleased]
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.
6
26
 
7
27
  ## [0.4.0] - 2026-05-14
8
28
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: OVAPortableText
3
- Version: 0.4.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
- **OVAPortableText** is a Python authoring package for building JSON documents that conform to the **OVA Report Profile v1.0** protocol.
27
- **OVAPortableText** 是一个 Python 端的协议生成包,用于创建符合 **OVA Report Profile v1.0** 协议的 JSON 文档。
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,再交给下游渲染器处理。