jarvisplot 2.1.10__tar.gz → 2.1.11__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 (379) hide show
  1. jarvisplot-2.1.11/CHANGELOG.md +61 -0
  2. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/README.md +1 -1
  3. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/PKG-INFO +84 -27
  4. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/SOURCES.txt +9 -59
  5. jarvisplot-2.1.11/MANIFEST.in +36 -0
  6. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/PKG-INFO +84 -27
  7. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/README.md +83 -26
  8. jarvisplot-2.1.11/VERSION +1 -0
  9. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/config_runtime.py +6 -3
  10. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/corr_layout.py +13 -6
  11. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/corr_layout_diamond.py +3 -1
  12. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/corrplot_runtime.py +29 -12
  13. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/figure.py +17 -0
  14. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/forest_runtime.py +28 -23
  15. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/agent_io.py +1 -1
  16. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cache_registry.py +17 -1
  17. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/args.json +12 -2
  18. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/corrplot/diamond.json +0 -1
  19. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/corrplot/matrix.json +0 -1
  20. jarvisplot-2.1.11/jarvisplot/cards/fonts/default.json +14 -0
  21. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/core_runtime.py +62 -4
  22. jarvisplot-2.1.11/jarvisplot/font_runtime.py +232 -0
  23. jarvisplot-2.1.11/jarvisplot/fonts.py +309 -0
  24. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/forest_contract.py +22 -7
  25. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/forest_text.py +16 -4
  26. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/legend_cards.py +8 -0
  27. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/agent-output.yaml +1 -1
  28. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/agent-readme.yaml +20 -1
  29. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/cache.yaml +2 -1
  30. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/cli-map.yaml +5 -2
  31. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/debug-overlay.yaml +1 -1
  32. jarvisplot-2.1.11/jarvisplot/manual_cards/fonts.yaml +156 -0
  33. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/legend.yaml +1 -1
  34. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/manifest.yaml +4 -0
  35. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/style-axes.yaml +1 -1
  36. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/workflow.yaml +1 -1
  37. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/__init__.py +3 -1
  38. jarvisplot-2.1.11/jarvisplot/verbs/fonts.py +240 -0
  39. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/pyproject.toml +24 -1
  40. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_cache_registry.py +32 -0
  41. jarvisplot-2.1.11/tests/test_font_runtime.py +227 -0
  42. jarvisplot-2.1.11/tests/test_fonts.py +139 -0
  43. jarvisplot-2.1.11/tests/test_fonts_cli.py +183 -0
  44. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_forest.py +10 -6
  45. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_legend_cards.py +3 -1
  46. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_release_contract.py +13 -3
  47. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_schema_catalog.py +2 -1
  48. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tools/check_release.py +5 -10
  49. jarvisplot-2.1.10/MANIFEST.in +0 -4
  50. jarvisplot-2.1.10/VERSION +0 -1
  51. jarvisplot-2.1.10/docs/README.md +0 -45
  52. jarvisplot-2.1.10/docs/archive/JARVIS_PLOT_CODE_REVIEW_2026-03-04.md +0 -130
  53. jarvisplot-2.1.10/docs/archive/README.md +0 -15
  54. jarvisplot-2.1.10/docs/context/CODEX_JARVIS_PLOT_STYLE.md +0 -154
  55. jarvisplot-2.1.10/docs/context/CODE_MAP_JARVIS_PLOT.md +0 -216
  56. jarvisplot-2.1.10/docs/context/JARVIS_PLOT_CONTEXT.md +0 -234
  57. jarvisplot-2.1.10/docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md +0 -200
  58. jarvisplot-2.1.10/docs/context/README.md +0 -49
  59. jarvisplot-2.1.10/docs/design/ARCHITECTURE_OVERVIEW.md +0 -127
  60. jarvisplot-2.1.10/docs/design/DATAFLOW_ARCHITECTURE.md +0 -183
  61. jarvisplot-2.1.10/docs/design/LAYOUT_ENGINE_DESIGN.md +0 -59
  62. jarvisplot-2.1.10/docs/design/PROFILE_SYSTEM_DESIGN.md +0 -80
  63. jarvisplot-2.1.10/docs/design/README.md +0 -22
  64. jarvisplot-2.1.10/docs/design/STYLE_SYSTEM_DESIGN.md +0 -55
  65. jarvisplot-2.1.10/docs/design/YAML_DESIGN.md +0 -2230
  66. jarvisplot-2.1.10/docs/dev/AGENT_CLI_CLOSURE_AUDIT_2026-08-07.md +0 -206
  67. jarvisplot-2.1.10/docs/dev/AGENT_CLI_FULL_REVIEW_2026-08-06.md +0 -518
  68. jarvisplot-2.1.10/docs/dev/AGENT_OUTPUT_YAML_DESIGN.md +0 -408
  69. jarvisplot-2.1.10/docs/dev/CONTRIBUTION_GUIDE.md +0 -160
  70. jarvisplot-2.1.10/docs/dev/DEVELOPER_RULES.md +0 -130
  71. jarvisplot-2.1.10/docs/dev/MAN_CLI.md +0 -472
  72. jarvisplot-2.1.10/docs/dev/MEMORY_OPTIMIZATION_GUIDE.md +0 -132
  73. jarvisplot-2.1.10/docs/dev/MEMTRACE_SYSTEM.md +0 -159
  74. jarvisplot-2.1.10/docs/dev/README.md +0 -21
  75. jarvisplot-2.1.10/docs/dev/YAML_HUMAN_AI_OCCAM_REVIEW.md +0 -278
  76. jarvisplot-2.1.10/docs/release/README.md +0 -29
  77. jarvisplot-2.1.10/docs/release/RELEASE_PLAYBOOK.md +0 -27
  78. jarvisplot-2.1.10/docs/release/releases/README.md +0 -21
  79. jarvisplot-2.1.10/docs/release/releases/v1.2.6.md +0 -61
  80. jarvisplot-2.1.10/docs/release/releases/v2.1.10.md +0 -49
  81. jarvisplot-2.1.10/docs/release/releases/v2.1.6.md +0 -58
  82. jarvisplot-2.1.10/docs/release/releases/v2.1.9.md +0 -91
  83. jarvisplot-2.1.10/docs/roadmap/IMPLEMENTATION_ROADMAP.md +0 -192
  84. jarvisplot-2.1.10/docs/roadmap/README.md +0 -21
  85. jarvisplot-2.1.10/docs/roadmap/V2_AGENT_CLI_SURFACE.md +0 -489
  86. jarvisplot-2.1.10/docs/roadmap/V2_DEV_LEDGER.md +0 -772
  87. jarvisplot-2.1.10/docs/roadmap/V2_YAML_AGENT_ERGONOMICS.md +0 -339
  88. jarvisplot-2.1.10/docs/roadmap/soft-cooking-wilkinson.md +0 -385
  89. jarvisplot-2.1.10/docs/specs/AGENT_DATA_API.md +0 -207
  90. jarvisplot-2.1.10/docs/specs/CORRELATION_DIAMOND.md +0 -486
  91. jarvisplot-2.1.10/docs/specs/CORRELATION_MATRIX.md +0 -320
  92. jarvisplot-2.1.10/docs/specs/DYNESTY_RUNPLOT.md +0 -120
  93. jarvisplot-2.1.10/docs/specs/FOREST.md +0 -183
  94. jarvisplot-2.1.10/docs/specs/INTERP_2D.md +0 -176
  95. jarvisplot-2.1.10/docs/specs/LAYER_TYPE_REGISTRY.md +0 -35
  96. jarvisplot-2.1.10/docs/specs/LEGEND.md +0 -223
  97. jarvisplot-2.1.10/docs/specs/PDF_CDF_1D.md +0 -190
  98. jarvisplot-2.1.10/docs/specs/POSTERIOR_DENSITY.md +0 -174
  99. jarvisplot-2.1.10/docs/specs/PROFILE_SCHEMA.md +0 -88
  100. jarvisplot-2.1.10/docs/specs/README.md +0 -30
  101. jarvisplot-2.1.10/docs/specs/SCENE_JSON_SCHEMA.md +0 -706
  102. jarvisplot-2.1.10/docs/specs/STYLE_SCHEMA.md +0 -222
  103. jarvisplot-2.1.10/docs/specs/TRANSFORMS.md +0 -248
  104. jarvisplot-2.1.10/docs/templates/README.md +0 -14
  105. jarvisplot-2.1.10/docs/templates/profile.example.json +0 -16
  106. jarvisplot-2.1.10/docs/templates/scene.example.json +0 -76
  107. jarvisplot-2.1.10/docs/templates/style.example.json +0 -28
  108. jarvisplot-2.1.10/tests/test_docs_status_labels.py +0 -57
  109. jarvisplot-2.1.10/tests/test_template_json.py +0 -26
  110. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/box.yaml +0 -0
  111. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/box.csv +0 -0
  112. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/forest-points.csv +0 -0
  113. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/forest-rows.csv +0 -0
  114. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/interval.csv +0 -0
  115. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/points.csv +0 -0
  116. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/summary-intervals.csv +0 -0
  117. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/summary-labels.csv +0 -0
  118. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/summary-points.csv +0 -0
  119. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/data/summary-rows.csv +0 -0
  120. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/interval.yaml +0 -0
  121. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/intervals-only.yaml +0 -0
  122. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/multi-interval.yaml +0 -0
  123. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/real-demo-debug.yaml +0 -0
  124. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/Example/forest/real-demo.yaml +0 -0
  125. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/dependency_links.txt +0 -0
  126. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/entry_points.txt +0 -0
  127. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/requires.txt +0 -0
  128. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/JarvisPLOT.egg-info/top_level.txt +0 -0
  129. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/__init__.py +0 -0
  130. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/adapters_rect.py +0 -0
  131. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/adapters_ternary.py +0 -0
  132. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/adaptive_cdf_runtime.py +0 -0
  133. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/bin_stat_runtime.py +0 -0
  134. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/cards/std_axes_adapter_config.json +0 -0
  135. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/colorbar_runtime.py +0 -0
  136. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/corr_order.py +0 -0
  137. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/correlation_runtime.py +0 -0
  138. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/data_pipelines.py +0 -0
  139. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/debug_config.py +0 -0
  140. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/density_cell_runtime.py +0 -0
  141. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/design_runtime.py +0 -0
  142. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/distribution_1d_runtime.py +0 -0
  143. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/dynesty_runtime.py +0 -0
  144. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/figure_types.py +0 -0
  145. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/forest_debug.py +0 -0
  146. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/forest_legend.py +0 -0
  147. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/helper.py +0 -0
  148. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/interp_2d_runtime.py +0 -0
  149. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/interp_natural_neighbor.py +0 -0
  150. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/interp_natural_neighbor_exact.py +0 -0
  151. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/layer_runtime.py +0 -0
  152. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/layout_runtime.py +0 -0
  153. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/legend_runtime.py +0 -0
  154. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/method_registry.py +0 -0
  155. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/posterior_density_runtime.py +0 -0
  156. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/posterior_hpd.py +0 -0
  157. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/posterior_mesh.py +0 -0
  158. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/preprocessor.py +0 -0
  159. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/preprocessor_runtime.py +0 -0
  160. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/profile_runtime.py +0 -0
  161. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/significance_runtime.py +0 -0
  162. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/Figure/style_runtime.py +0 -0
  163. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/__init__.py +0 -0
  164. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/agent_digest.py +0 -0
  165. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cache_store.py +0 -0
  166. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/capabilities.py +0 -0
  167. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/1x1/ternary.json +0 -0
  168. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/dynesty_runplot.json +0 -0
  169. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/rect.json +0 -0
  170. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/rect5x1.json +0 -0
  171. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/rect_cmap.json +0 -0
  172. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/rect_marginal.json +0 -0
  173. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/rectratio.json +0 -0
  174. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/ternary.json +0 -0
  175. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/2x1/ternary_cmap.json +0 -0
  176. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/4x1/rect.json +0 -0
  177. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/4x1/rect_cmap.json +0 -0
  178. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/4x1/ternary.json +0 -0
  179. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/a4paper/4x1/ternary_cmap.json +0 -0
  180. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/colors/colormaps.json +0 -0
  181. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/default/output.json +0 -0
  182. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/flowchart/default.json +0 -0
  183. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/forest/swiss_column.json +0 -0
  184. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/gambit/1x1/ternary.json +0 -0
  185. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/gambit/2x1/rect_cmap.json +0 -0
  186. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/gambit/2x1/ternary.json +0 -0
  187. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/gambit/2x1/ternary_cmap.json +0 -0
  188. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/JarvisHEP.png +0 -0
  189. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/JarvisHEP.png +0 -0
  190. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/calculator.png +0 -0
  191. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/inputfile.png +0 -0
  192. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/opera.png +0 -0
  193. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/outputfile.png +0 -0
  194. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/flowchart/sampler.png +0 -0
  195. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/gambit.png +0 -0
  196. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/icons/gambit_small.png +0 -0
  197. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/legends/compact/legend-card.json +0 -0
  198. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/legends/default/legend-card.json +0 -0
  199. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/legends/paper/legend-card.json +0 -0
  200. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/legends/presentation/legend-card.json +0 -0
  201. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cards/style_preference.json +0 -0
  202. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cli.py +0 -0
  203. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/cli_help.py +0 -0
  204. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/client.py +0 -0
  205. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/column_demand.py +0 -0
  206. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/column_probe.py +0 -0
  207. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/config.py +0 -0
  208. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/config_address.py +0 -0
  209. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/core.py +0 -0
  210. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/core_assets.py +0 -0
  211. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_access.py +0 -0
  212. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_generation_contracts.py +0 -0
  213. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_loader.py +0 -0
  214. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_loader_hdf5.py +0 -0
  215. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_loader_runtime.py +0 -0
  216. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/data_loader_summary.py +0 -0
  217. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/dataset_types.py +0 -0
  218. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/diagnostic_guidance.py +0 -0
  219. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/diagnostics.py +0 -0
  220. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/distribution_1d_config.py +0 -0
  221. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/dryrun_runtime.py +0 -0
  222. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/expr_names.py +0 -0
  223. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/fix_apply.py +0 -0
  224. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/flowchart.py +0 -0
  225. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/generated_data.py +0 -0
  226. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/inner_func.py +0 -0
  227. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/man_catalog.py +0 -0
  228. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/man_methods.py +0 -0
  229. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/man_render_agent.py +0 -0
  230. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/man_render_human.py +0 -0
  231. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/man_transforms.py +0 -0
  232. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/data-columns.yaml +0 -0
  233. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/diagnostics.yaml +0 -0
  234. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/dryrun-viz.yaml +0 -0
  235. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/field-interp.yaml +0 -0
  236. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/generated-data.yaml +0 -0
  237. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/layer-method.yaml +0 -0
  238. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/method_notes.yaml +0 -0
  239. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/type-correlation-matrix.yaml +0 -0
  240. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/type-forest.yaml +0 -0
  241. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/type-posterior-2d.yaml +0 -0
  242. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/type-profile-2d.yaml +0 -0
  243. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/validate.yaml +0 -0
  244. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/manual_cards/yaml-root.yaml +0 -0
  245. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/memtrace.py +0 -0
  246. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/method_contracts.py +0 -0
  247. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/render_health.py +0 -0
  248. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/common.json +0 -0
  249. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/dataset.json +0 -0
  250. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/distribution-1d.json +0 -0
  251. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/figure.json +0 -0
  252. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/generated-data.json +0 -0
  253. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/layer.json +0 -0
  254. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/legend-card.json +0 -0
  255. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/legend.json +0 -0
  256. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/core/transform.json +0 -0
  257. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/manifest.json +0 -0
  258. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/bar.json +0 -0
  259. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/barh.json +0 -0
  260. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/contour.json +0 -0
  261. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/contourf.json +0 -0
  262. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/corrplot.json +0 -0
  263. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/dynesty_runplot.json +0 -0
  264. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/errorbar.json +0 -0
  265. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/fill.json +0 -0
  266. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/fill_between.json +0 -0
  267. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/fill_betweenx.json +0 -0
  268. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/hist.json +0 -0
  269. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/hist2d.json +0 -0
  270. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/imshow.json +0 -0
  271. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/jpcontour.json +0 -0
  272. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/jpcontourf.json +0 -0
  273. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/jpfield.json +0 -0
  274. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/pcolor.json +0 -0
  275. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/pcolormesh.json +0 -0
  276. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/plot.json +0 -0
  277. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/quiver.json +0 -0
  278. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/scatter.json +0 -0
  279. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/stairs.json +0 -0
  280. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/step.json +0 -0
  281. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/tricontour.json +0 -0
  282. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/tricontourf.json +0 -0
  283. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/tripcolor.json +0 -0
  284. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/tripcolor_axes.json +0 -0
  285. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/triplot.json +0 -0
  286. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/voronoi.json +0 -0
  287. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/methods/voronoif.json +0 -0
  288. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/plot-config.json +0 -0
  289. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema/types/forest.json +0 -0
  290. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema_catalog.py +0 -0
  291. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/schema_diagnostics.py +0 -0
  292. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/templates_catalog.py +0 -0
  293. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/transform_contracts.py +0 -0
  294. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/__init__.py +0 -0
  295. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/cmaps.py +0 -0
  296. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/dataframes.py +0 -0
  297. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/expression.py +0 -0
  298. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/interpolator.py +0 -0
  299. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/utils/pathing.py +0 -0
  300. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/validation.py +0 -0
  301. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/cache.py +0 -0
  302. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/cap.py +0 -0
  303. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/config_cmd.py +0 -0
  304. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/data.py +0 -0
  305. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/doctor.py +0 -0
  306. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/dryrun.py +0 -0
  307. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/explain.py +0 -0
  308. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/man.py +0 -0
  309. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/suggest.py +0 -0
  310. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/template.py +0 -0
  311. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/verbs/validate.py +0 -0
  312. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/version.py +0 -0
  313. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/jarvisplot/yaml_io.py +0 -0
  314. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/setup.cfg +0 -0
  315. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_adaptive_cdf.py +0 -0
  316. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_add_column.py +0 -0
  317. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_agent_digest.py +0 -0
  318. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_agent_envelope.py +0 -0
  319. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_axis_title.py +0 -0
  320. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_cache_cleanup.py +0 -0
  321. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_capabilities.py +0 -0
  322. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_card_debug_shape.py +0 -0
  323. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_cli_help.py +0 -0
  324. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_cli_verbs.py +0 -0
  325. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_cmaps.py +0 -0
  326. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_column_existence.py +0 -0
  327. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_column_pruning.py +0 -0
  328. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_config_addressing.py +0 -0
  329. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_config_edit.py +0 -0
  330. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_config_expand.py +0 -0
  331. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_correlation_runtime.py +0 -0
  332. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_corrplot.py +0 -0
  333. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_data_access.py +0 -0
  334. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_data_describe.py +0 -0
  335. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_data_head_eval.py +0 -0
  336. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_data_loader_contracts.py +0 -0
  337. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_data_pipelines.py +0 -0
  338. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_debug_config.py +0 -0
  339. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_debug_switches.py +0 -0
  340. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_debug_yaml_override.py +0 -0
  341. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_density_cell_transform.py +0 -0
  342. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_design_runtime.py +0 -0
  343. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_diagnostic_guidance.py +0 -0
  344. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_distribution_1d_transform.py +0 -0
  345. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_doctor_partial.py +0 -0
  346. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_examples_validate.py +0 -0
  347. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_explain.py +0 -0
  348. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_expression_semantics.py +0 -0
  349. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_figure_contracts.py +0 -0
  350. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_figure_type_expander.py +0 -0
  351. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_fix_application.py +0 -0
  352. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_flowchart_renderer.py +0 -0
  353. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_forest_examples.py +0 -0
  354. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_forest_text.py +0 -0
  355. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_generated_data.py +0 -0
  356. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_imshow_adapter.py +0 -0
  357. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_interp_2d_transform.py +0 -0
  358. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_interp_natural_neighbor.py +0 -0
  359. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_interpolator_contracts.py +0 -0
  360. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_jpcontour_methods.py +0 -0
  361. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_layer_legend.py +0 -0
  362. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_legend_runtime.py +0 -0
  363. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_man_cli.py +0 -0
  364. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_method_contracts.py +0 -0
  365. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_parse_data_metadata.py +0 -0
  366. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_pathing_contracts.py +0 -0
  367. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_posterior_hpd.py +0 -0
  368. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_profile_runtime.py +0 -0
  369. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_render_health.py +0 -0
  370. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_render_lifecycle.py +0 -0
  371. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_row_ledger.py +0 -0
  372. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_savefig_provenance.py +0 -0
  373. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_suggest.py +0 -0
  374. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_suggest_axes.py +0 -0
  375. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_template_catalog.py +0 -0
  376. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_ternary_debug.py +0 -0
  377. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_transform_contracts.py +0 -0
  378. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_validate_no_matplotlib.py +0 -0
  379. {jarvisplot-2.1.10 → jarvisplot-2.1.11}/tests/test_version.py +0 -0
@@ -0,0 +1,61 @@
1
+ # Changelog
2
+
3
+ Release history of the `JarvisPLOT` distribution (import package `jarvisplot`,
4
+ CLI `jplot`). Design documents, specifications and the roadmap live in
5
+ [Jarvis-Books `Docs/Jarvis-PLOT/`](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/README.md).
6
+
7
+ ## 2.1.11 — 2026-10-18
8
+
9
+ - Exclude maintainer release helpers, local configuration, credentials, and
10
+ generated files from distribution archives.
11
+
12
+ - `./jprel X.Y.Z` now completes PyPI upload, local editable install, Git tag,
13
+ and GitHub release. `--dry` checks inputs without changing the checkout.
14
+ - Remove private research cards and scripts under `bin/` from version control
15
+ and distribution archives; public examples remain under `Example/`.
16
+ - Cache cleanup removes empty registered cache directories whose marker is
17
+ missing, while retaining unmarked directories containing files.
18
+ - Font card: `jplot fonts show|list|resolve|check|set|reset` and
19
+ `jplot man fonts`. Normal YAML rendering applies the bundled role card
20
+ (Helvetica sans, STIXGeneral serif, STIX MathText); explicit YAML fonts and
21
+ sizes take precedence. Personal overrides live in
22
+ `~/.jarvis/plot-fonts.json` (`JARVIS_HOME` overrides the directory).
23
+ - When Helvetica is absent, the first installed of Arial, Liberation Sans,
24
+ Nimbus Sans and DejaVu Sans is used; `check` and `resolve` report the actual
25
+ font and the substitution reason.
26
+ - Cut descriptions take their MathText font from the font card by default.
27
+ - Documentation moved to Jarvis-Books; the repository keeps only `README.md`,
28
+ `CHANGELOG.md` and the example READMEs. The source distribution ships
29
+ `CHANGELOG.md` instead of a `docs/` tree, and `tools/check_release.py` checks
30
+ the latest `CHANGELOG.md` entry instead of the old release-note files.
31
+
32
+ ## 2.1.10 — 2026-10-13
33
+
34
+ - Native forest figures read multi-interval CSV sources and mappings,
35
+ intervals-only rows, box/scatter coexistence and literal CSV value
36
+ annotations. Values are plotted as supplied, never computed.
37
+ - Explicit shared x ticks, independent of grid divisions.
38
+ - MathText needs `math: true`; formula fonts are STIX by default with DejaVu
39
+ Sans as an alternative, selected separately for legends and cut
40
+ descriptions. Header notes, paragraphs and formulas are preserved, and
41
+ layout uses the actual font, glyph and annotation bounds.
42
+ - TTC faces keep their weight and slant; an explicit font size governs
43
+ measurement.
44
+ - CLI, manuals, render reports and image metadata read the version from
45
+ `jarvisplot/version.py`. SVG output carries Dublin Core metadata; export
46
+ retries only on a backend's unsupported-metadata error and reports drawing
47
+ and I/O failures.
48
+ - Packaged AI README (`jplot man agent-readme --json`), schema, manual and
49
+ example updates.
50
+ - `tools/check_release.py` source, tag and wheel gates; the sdist includes the
51
+ native forest examples; CI runs Linux Python 3.10–3.13 and macOS 3.13.
52
+
53
+ Existing forest YAML needs no migration. Custom export metadata must use keys
54
+ the selected backend supports; invalid SVG keys are now reported.
55
+
56
+ ## Earlier releases
57
+
58
+ See the [PyPI release history](https://pypi.org/project/JarvisPLOT/#history)
59
+ and [GitHub Releases](https://github.com/Pengxuan-Zhu-Phys/Jarvis-PLOT/releases).
60
+ Earlier release notes are archived in Jarvis-Books
61
+ `Docs/archive/Jarvis-PLOT/2026-10-17/docs/release/`.
@@ -54,7 +54,7 @@ The normal chart shows a shared top numerical axis and continuous vertical grid;
54
54
  The default canvas is white, with no row shading, numbered metadata or legend heading. Point legend markers and their labels are left aligned using compact keys.
55
55
 
56
56
  For a study previously using `jarvis_forest_preview`, install the formal project in the same
57
- Python environment (`python -m pip install -e /Users/p.zhu/Jarvis-Workshop/Jarvis-PLOT`),
57
+ Python environment (`python -m pip install -e .` from the Jarvis-PLOT repository root),
58
58
  remove its preview path from the shell/launcher PYTHONPATH, and call the formal `jplot` on
59
59
  the existing YAML. The native interface accepts the established `intervals`, annotation,
60
60
  MathText, header_note and geometry keys; no task-specific names or data conversion are needed.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: JarvisPLOT
3
- Version: 2.1.10
3
+ Version: 2.1.11
4
4
  Summary: Jarvis-PLOT: YAML-driven plotting engine
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -27,8 +27,8 @@ but it can also be used as a **standalone scientific plotting tool**.
27
27
 
28
28
  It provides a simple command-line interface (CLI) to generate publication-quality figures from YAML configuration files, with most layout and style decisions handled by predefined profiles and style cards.
29
29
 
30
- Current source candidate: **2.1.10** (`jplot -v` reports the installed version).
31
- Local release review does not publish or tag a release; see [release notes](docs/release/releases/v2.1.10.md).
30
+ Current source candidate: **2.1.11** (`jplot -v` reports the installed version).
31
+ Release history: [CHANGELOG.md](CHANGELOG.md). Design documents and specifications: [Jarvis-Books `Docs/Jarvis-PLOT/`](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/README.md).
32
32
 
33
33
  ---
34
34
 
@@ -110,6 +110,39 @@ jplot doctor plot.yaml # validate + dryrun in one pass
110
110
 
111
111
  Every one of these takes `--json`.
112
112
 
113
+ ### Default fonts
114
+
115
+ The bundled font card recommends **Helvetica** for sans text and **STIXGeneral**
116
+ for serif text, with **STIX** MathText formulas. Normal YAML rendering applies
117
+ the card automatically; explicit YAML fonts and sizes take precedence.
118
+ When Helvetica is absent, Jarvis-PLOT selects the first installed similar family:
119
+ Arial, Liberation Sans, Nimbus Sans, then DejaVu Sans. `check` and `resolve`
120
+ report the actual font and substitution reason.
121
+
122
+ ```bash
123
+ jplot fonts # role card: title, labels, ticks, legend, text, annotations, caption
124
+ jplot fonts show title --json # current defaults for one role
125
+ jplot fonts show --recommended --json
126
+ jplot fonts list --filter Helvetica --json
127
+ jplot fonts list --refresh --json # rescan after installing fonts
128
+ jplot fonts resolve Helvetica --weight bold --json
129
+ jplot fonts check --json # actual installed faces used by the card
130
+ jplot fonts set roles.title.family sans
131
+ jplot fonts set roles.legend.family serif
132
+ jplot fonts set roles.title.size_pt 9
133
+ jplot fonts set roles.title.size_pt null # inherit the plot style's size
134
+ jplot fonts reset roles.title.size_pt
135
+ jplot fonts reset # remove all personal overrides
136
+ jplot man fonts --json
137
+ ```
138
+
139
+ Personal overrides persist in `~/.jarvis/plot-fonts.json` (`JARVIS_HOME` overrides
140
+ the directory). Queries never create that file. `size_pt: null` preserves the
141
+ plot style's canvas-specific size; `recommended_size_pt` is drafting advice.
142
+ Font discovery uses Matplotlib's cached system and bundled font index, while
143
+ TTC face selection preserves the requested weight and slant. `$...$` uses
144
+ MathText; an external LaTeX compiler has its own font configuration.
145
+
113
146
  ### Design-Reference Overlay
114
147
 
115
148
  Set `debug: true` on a figure and Jarvis-PLOT draws a dimension overlay on top
@@ -127,7 +160,7 @@ Figures:
127
160
 
128
161
  The style card's `Debug` block decides what the annotations look like and which
129
162
  of them appear; a per-figure `debug:` mapping overrides the card for that figure
130
- only. See `jplot man debug-overlay` and `docs/specs/STYLE_SCHEMA.md`.
163
+ only. See `jplot man debug-overlay` and [STYLE_SCHEMA.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/STYLE_SCHEMA.md).
131
164
 
132
165
  > `Figures[].debug` is not the `jplot --debug` flag — the flag only raises the
133
166
  > log level.
@@ -152,6 +185,9 @@ TTY** — piping is enough.
152
185
 
153
186
  The loop `jplot man` prints is:
154
187
 
188
+ Before drafting, inspect `jplot fonts show --json` and `jplot fonts check --json`
189
+ for the typography defaults and actual installed font choices.
190
+
155
191
  1. `jplot data describe <file> --json` — column names from the real file. Never
156
192
  invent one; a wrong name is a hard error, not a warning.
157
193
  2. `jplot cap methods|styles|cmaps|funcs|transforms|types --json` — the legal
@@ -175,13 +211,13 @@ with the same object regroup automatically using card templates such as
175
211
  single-component object. `frame.<axes>.legend` owns card selection, `order`,
176
212
  `ncols`, position and spacing. JSON cards provide
177
213
  reusable defaults, and YAML can override them. See
178
- [the legend contract](docs/specs/LEGEND.md) and the
214
+ [the legend contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/LEGEND.md) and the
179
215
  [self-contained example](Example/compact_legend.yaml).
180
216
 
181
217
  For continuous one-dimensional distributions from raw samples, use `PDF1D`
182
218
  (CDF plus PDF) or `CDF1D` in a data transform. `coordinates.x` owns `expr`,
183
219
  `lim`, and `grid`; optional `repeat` computes independent batch means and
184
- standard deviations. See [the contract](docs/specs/PDF_CDF_1D.md) and the
220
+ standard deviations. See [the contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/PDF_CDF_1D.md) and the
185
221
  [runnable example](Example/pdf_cdf_1d.yaml).
186
222
  Reconstruction defaults to adaptive true CDF anchors and `monotone_c2`
187
223
  interpolation (C2 CDF / C1 PDF). Set `anchors: all` and `interpolation: pchip`
@@ -192,7 +228,7 @@ Two things worth knowing before trusting a config:
192
228
  - `jplot validate` checks shape and contracts and never touches the data;
193
229
  `jplot dryrun` loads the data and reports the row ledger and JP-VIZ render
194
230
  health. Passing the first says nothing about the second.
195
- - `docs/specs/AGENT_DATA_API.md` describes a *different*, still-frozen bridge
231
+ - [AGENT_DATA_API.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/AGENT_DATA_API.md) describes a *different*, still-frozen bridge
196
232
  (a numeric digest channel for Jarvis-Agent). The surface above is what ships
197
233
  today.
198
234
 
@@ -249,24 +285,26 @@ multiple directory trees; overlapping selections are deduplicated. Use
249
285
  All cache subcommands accept `--json` and use the existing CLI envelope and
250
286
  exit codes (0 success/partial, 1 failure, 2 usage). Non-TTY stdout defaults to
251
287
  JSON; human results go to stderr. Active caches are skipped (`ok: null` when
252
- the remaining operation succeeds), and records for missing paths are pruned
253
- during cleanup. Only marked Jarvis-PLOT components are removed; source data,
288
+ the remaining operation succeeds), and records for missing paths or unmarked
289
+ `.cache` directories containing only empty Jarvis-PLOT component directories
290
+ are pruned during cleanup. Only marked
291
+ Jarvis-PLOT components are removed; source data,
254
292
  plots, and unrelated `.cache` content are retained. Failed deletions retain
255
- their registry entries. Scanning adopts legacy caches only when the four
293
+ their registry entries; nonempty unmarked directories remain invalid and are
294
+ not deleted. Scanning adopts legacy caches only when the four
256
295
  pipeline directories and a compatible `manifest.json` identify them; old
257
296
  unmarked twin-only directories need a new `dryrun --with-data` run to register.
258
297
  An explicitly supplied `--out-dir` is an export directory and is not registered.
259
298
  Concurrent registry writes use a lock and atomic replacement. Registration
260
299
  failures warn without preventing rendering.
261
300
 
262
- ### Example: SUSYRun2 Ternary Plots
301
+ ### Example: Ternary Layouts
263
302
 
264
303
  ```bash
265
- jplot ./bin/SUSYRun2_EWMSSM.yaml
266
- jplot ./bin/SUSYRun2_GEWMSSM.yaml
304
+ jplot ./Example/gambit_2x1.yaml
267
305
  ```
268
306
 
269
- > **Note:** The data file paths inside the YAML files must be updated to match your local setup.
307
+ This layout reference uses bundled style cards and renders without external data.
270
308
 
271
309
  ### Example: Dynesty Runplot
272
310
 
@@ -288,7 +326,7 @@ Figures:
288
326
  - dynesty_runplot
289
327
  ```
290
328
 
291
- See `docs/specs/DYNESTY_RUNPLOT.md` for the default axes, KDE, scatter overlay,
329
+ See [DYNESTY_RUNPLOT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/DYNESTY_RUNPLOT.md) for the default axes, KDE, scatter overlay,
292
330
  and evidence summary behavior.
293
331
 
294
332
  ---
@@ -330,19 +368,19 @@ and evidence summary behavior.
330
368
  ### Documentation
331
369
  [https://pengxuan-zhu-phys.github.io/Jarvis-Docs/](https://pengxuan-zhu-phys.github.io/Jarvis-Docs/)
332
370
 
333
- ### Repository Docs
371
+ ### Project Docs
334
372
 
335
- Tracked project docs live in `docs/`.
373
+ This repository keeps only `README.md` and `CHANGELOG.md`. Design documents,
374
+ specifications and the roadmap live in Jarvis-Books:
336
375
 
337
- - `docs/README.md` - repo doc index
338
- - `docs/context/JARVIS_PLOT_CONTEXT.md` - primary Codex-facing boundary doc
339
- - `docs/context/CODE_MAP_JARVIS_PLOT.md` - concrete code owner map
340
- - `docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md` - runtime execution contract
341
- - `docs/roadmap/IMPLEMENTATION_ROADMAP.md` - active backlog and future work list
342
- - `docs/specs/AGENT_DATA_API.md` - planned numeric agent bridge (spec only, frozen — not the shipped CLI agent surface above)
343
- - `docs/specs/STYLE_SCHEMA.md` - style card contract, including the `Debug` overlay block
344
- - `docs/dev/DEVELOPER_RULES.md` - current pipeline and cache rules
345
- - `docs/dev/MEMORY_OPTIMIZATION_GUIDE.md` - narrow-table memory notes
376
+ - [Doc index](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/README.md)
377
+ - [JARVIS_PLOT_CONTEXT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/JARVIS_PLOT_CONTEXT.md) - project boundary; read before changing code
378
+ - [CODE_MAP_JARVIS_PLOT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/CODE_MAP_JARVIS_PLOT.md) - code owner map
379
+ - [JARVIS_PLOT_FRAMEWORK_LOGIC.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md) - runtime execution contract
380
+ - [IMPLEMENTATION_ROADMAP.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/roadmap/IMPLEMENTATION_ROADMAP.md) - open work
381
+ - [RELEASING.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/release/RELEASING.md) - versioning, `tools/check_release.py` and CI verification
382
+ - [STYLE_SCHEMA.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/STYLE_SCHEMA.md) - style card contract, including the `Debug` overlay block
383
+ - [DEVELOPER_RULES.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/dev/DEVELOPER_RULES.md) - pipeline and cache rules
346
384
 
347
385
  Read the context docs and roadmap before changing parsing, transforms, rendering, or layout-related behavior.
348
386
 
@@ -352,6 +390,25 @@ Read the context docs and roadmap before changing parsing, transforms, rendering
352
390
 
353
391
  MIT License
354
392
 
355
- Create a continuous forest figure with `type: forest`, a generic row table, optional points and multiple supplied intervals per row. Native YAML supports class-specific interval lanes, CSV value annotations, explicit `x.ticks`, opt-in MathText, header notes and a shared-format legend. The default Swiss-column card uses 82.5 mm width and 5.5 mm row pitch; every row shares one numerical x domain. See [the forest contract](docs/specs/FOREST.md), [native examples](Example/forest/README.md), or `jplot man forest --json`.
393
+ Create a continuous forest figure with `type: forest`, a generic row table, optional points and multiple supplied intervals per row. Native YAML supports class-specific interval lanes, CSV value annotations, explicit `x.ticks`, opt-in MathText, header notes and a shared-format legend. The default Swiss-column card uses 82.5 mm width and 5.5 mm row pitch; every row shares one numerical x domain. See [the forest contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/FOREST.md), [native examples](Example/forest/README.md), or `jplot man forest --json`.
356
394
 
357
395
  AI agents: start with `jplot man agent-readme --json` for the official-package YAML workflow and missing-feature reporting instructions. Feature requests include the installed version from `jplot --version`; the CLI does not send email automatically.
396
+
397
+ ## Releasing
398
+
399
+ `jprel` is a maintainer-local script, excluded from Git and distribution archives.
400
+
401
+ Record changes in `CHANGELOG.md`, then run from this checkout (replace the
402
+ example version with the intended release):
403
+
404
+ ```bash
405
+ ./jprel 2.1.11 --dry
406
+ ./jprel 2.1.11
407
+ ```
408
+
409
+ `--dry` performs read-only source and release-note checks. The normal command
410
+ requires a clean Git checkout, builds and checks the wheel and sdist, uploads
411
+ to PyPI, refreshes the local version with `python3 -m pip install -e .`, and
412
+ verifies the installed version. Only then does it commit the version, push the
413
+ `vX.Y.Z` tag, and create a GitHub release with changelog notes. Configure Twine
414
+ and `gh` authentication before publishing.
@@ -1,3 +1,4 @@
1
+ CHANGELOG.md
1
2
  MANIFEST.in
2
3
  README.md
3
4
  VERSION
@@ -24,63 +25,6 @@ JarvisPLOT.egg-info/dependency_links.txt
24
25
  JarvisPLOT.egg-info/entry_points.txt
25
26
  JarvisPLOT.egg-info/requires.txt
26
27
  JarvisPLOT.egg-info/top_level.txt
27
- docs/README.md
28
- docs/archive/JARVIS_PLOT_CODE_REVIEW_2026-03-04.md
29
- docs/archive/README.md
30
- docs/context/CODEX_JARVIS_PLOT_STYLE.md
31
- docs/context/CODE_MAP_JARVIS_PLOT.md
32
- docs/context/JARVIS_PLOT_CONTEXT.md
33
- docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md
34
- docs/context/README.md
35
- docs/design/ARCHITECTURE_OVERVIEW.md
36
- docs/design/DATAFLOW_ARCHITECTURE.md
37
- docs/design/LAYOUT_ENGINE_DESIGN.md
38
- docs/design/PROFILE_SYSTEM_DESIGN.md
39
- docs/design/README.md
40
- docs/design/STYLE_SYSTEM_DESIGN.md
41
- docs/design/YAML_DESIGN.md
42
- docs/dev/AGENT_CLI_CLOSURE_AUDIT_2026-08-07.md
43
- docs/dev/AGENT_CLI_FULL_REVIEW_2026-08-06.md
44
- docs/dev/AGENT_OUTPUT_YAML_DESIGN.md
45
- docs/dev/CONTRIBUTION_GUIDE.md
46
- docs/dev/DEVELOPER_RULES.md
47
- docs/dev/MAN_CLI.md
48
- docs/dev/MEMORY_OPTIMIZATION_GUIDE.md
49
- docs/dev/MEMTRACE_SYSTEM.md
50
- docs/dev/README.md
51
- docs/dev/YAML_HUMAN_AI_OCCAM_REVIEW.md
52
- docs/release/README.md
53
- docs/release/RELEASE_PLAYBOOK.md
54
- docs/release/releases/README.md
55
- docs/release/releases/v1.2.6.md
56
- docs/release/releases/v2.1.10.md
57
- docs/release/releases/v2.1.6.md
58
- docs/release/releases/v2.1.9.md
59
- docs/roadmap/IMPLEMENTATION_ROADMAP.md
60
- docs/roadmap/README.md
61
- docs/roadmap/V2_AGENT_CLI_SURFACE.md
62
- docs/roadmap/V2_DEV_LEDGER.md
63
- docs/roadmap/V2_YAML_AGENT_ERGONOMICS.md
64
- docs/roadmap/soft-cooking-wilkinson.md
65
- docs/specs/AGENT_DATA_API.md
66
- docs/specs/CORRELATION_DIAMOND.md
67
- docs/specs/CORRELATION_MATRIX.md
68
- docs/specs/DYNESTY_RUNPLOT.md
69
- docs/specs/FOREST.md
70
- docs/specs/INTERP_2D.md
71
- docs/specs/LAYER_TYPE_REGISTRY.md
72
- docs/specs/LEGEND.md
73
- docs/specs/PDF_CDF_1D.md
74
- docs/specs/POSTERIOR_DENSITY.md
75
- docs/specs/PROFILE_SCHEMA.md
76
- docs/specs/README.md
77
- docs/specs/SCENE_JSON_SCHEMA.md
78
- docs/specs/STYLE_SCHEMA.md
79
- docs/specs/TRANSFORMS.md
80
- docs/templates/README.md
81
- docs/templates/profile.example.json
82
- docs/templates/scene.example.json
83
- docs/templates/style.example.json
84
28
  jarvisplot/__init__.py
85
29
  jarvisplot/agent_digest.py
86
30
  jarvisplot/agent_io.py
@@ -111,6 +55,8 @@ jarvisplot/dryrun_runtime.py
111
55
  jarvisplot/expr_names.py
112
56
  jarvisplot/fix_apply.py
113
57
  jarvisplot/flowchart.py
58
+ jarvisplot/font_runtime.py
59
+ jarvisplot/fonts.py
114
60
  jarvisplot/forest_contract.py
115
61
  jarvisplot/forest_text.py
116
62
  jarvisplot/generated_data.py
@@ -191,6 +137,7 @@ jarvisplot/cards/corrplot/diamond.json
191
137
  jarvisplot/cards/corrplot/matrix.json
192
138
  jarvisplot/cards/default/output.json
193
139
  jarvisplot/cards/flowchart/default.json
140
+ jarvisplot/cards/fonts/default.json
194
141
  jarvisplot/cards/forest/swiss_column.json
195
142
  jarvisplot/cards/gambit/1x1/ternary.json
196
143
  jarvisplot/cards/gambit/2x1/rect_cmap.json
@@ -218,6 +165,7 @@ jarvisplot/manual_cards/debug-overlay.yaml
218
165
  jarvisplot/manual_cards/diagnostics.yaml
219
166
  jarvisplot/manual_cards/dryrun-viz.yaml
220
167
  jarvisplot/manual_cards/field-interp.yaml
168
+ jarvisplot/manual_cards/fonts.yaml
221
169
  jarvisplot/manual_cards/generated-data.yaml
222
170
  jarvisplot/manual_cards/layer-method.yaml
223
171
  jarvisplot/manual_cards/legend.yaml
@@ -287,6 +235,7 @@ jarvisplot/verbs/data.py
287
235
  jarvisplot/verbs/doctor.py
288
236
  jarvisplot/verbs/dryrun.py
289
237
  jarvisplot/verbs/explain.py
238
+ jarvisplot/verbs/fonts.py
290
239
  jarvisplot/verbs/man.py
291
240
  jarvisplot/verbs/suggest.py
292
241
  jarvisplot/verbs/template.py
@@ -322,7 +271,6 @@ tests/test_density_cell_transform.py
322
271
  tests/test_design_runtime.py
323
272
  tests/test_diagnostic_guidance.py
324
273
  tests/test_distribution_1d_transform.py
325
- tests/test_docs_status_labels.py
326
274
  tests/test_doctor_partial.py
327
275
  tests/test_examples_validate.py
328
276
  tests/test_explain.py
@@ -331,6 +279,9 @@ tests/test_figure_contracts.py
331
279
  tests/test_figure_type_expander.py
332
280
  tests/test_fix_application.py
333
281
  tests/test_flowchart_renderer.py
282
+ tests/test_font_runtime.py
283
+ tests/test_fonts.py
284
+ tests/test_fonts_cli.py
334
285
  tests/test_forest.py
335
286
  tests/test_forest_examples.py
336
287
  tests/test_forest_text.py
@@ -358,7 +309,6 @@ tests/test_schema_catalog.py
358
309
  tests/test_suggest.py
359
310
  tests/test_suggest_axes.py
360
311
  tests/test_template_catalog.py
361
- tests/test_template_json.py
362
312
  tests/test_ternary_debug.py
363
313
  tests/test_transform_contracts.py
364
314
  tests/test_validate_no_matplotlib.py
@@ -0,0 +1,36 @@
1
+ include VERSION
2
+ include tools/check_release.py
3
+ include CHANGELOG.md
4
+ recursive-include Example/forest *.yaml *.csv *.md
5
+
6
+ # Git ignores do not control source distributions.
7
+ exclude jprel
8
+ prune docs
9
+ prune .github
10
+ prune .claude
11
+ prune .codex
12
+ prune .agents
13
+ prune .cursor
14
+ prune .idea
15
+ prune .vscode
16
+ prune .aws
17
+ prune .ssh
18
+ prune .twine
19
+ prune .pypi
20
+ prune .venv
21
+ prune venv
22
+ prune env
23
+ prune .cache
24
+ prune .pytest_cache
25
+ prune .ruff_cache
26
+ prune .mypy_cache
27
+ prune .tox
28
+ prune .nox
29
+ prune .ipynb_checkpoints
30
+ global-exclude .DS_Store *.py[cod] .env .env.* .envrc .pypirc .pypirc.* .twinerc .pypi-token* .mcp.json release.env twine.env *.code-workspace *.swp *.swo *~ *.bak *.tmp
31
+ prune bin
32
+ prune Workshop
33
+ prune Example/plots
34
+ prune Example/.cache
35
+ prune Example/forest/plots
36
+ prune Example/forest/.cache
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: JarvisPLOT
3
- Version: 2.1.10
3
+ Version: 2.1.11
4
4
  Summary: Jarvis-PLOT: YAML-driven plotting engine
5
5
  Requires-Python: >=3.10
6
6
  Description-Content-Type: text/markdown
@@ -27,8 +27,8 @@ but it can also be used as a **standalone scientific plotting tool**.
27
27
 
28
28
  It provides a simple command-line interface (CLI) to generate publication-quality figures from YAML configuration files, with most layout and style decisions handled by predefined profiles and style cards.
29
29
 
30
- Current source candidate: **2.1.10** (`jplot -v` reports the installed version).
31
- Local release review does not publish or tag a release; see [release notes](docs/release/releases/v2.1.10.md).
30
+ Current source candidate: **2.1.11** (`jplot -v` reports the installed version).
31
+ Release history: [CHANGELOG.md](CHANGELOG.md). Design documents and specifications: [Jarvis-Books `Docs/Jarvis-PLOT/`](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/README.md).
32
32
 
33
33
  ---
34
34
 
@@ -110,6 +110,39 @@ jplot doctor plot.yaml # validate + dryrun in one pass
110
110
 
111
111
  Every one of these takes `--json`.
112
112
 
113
+ ### Default fonts
114
+
115
+ The bundled font card recommends **Helvetica** for sans text and **STIXGeneral**
116
+ for serif text, with **STIX** MathText formulas. Normal YAML rendering applies
117
+ the card automatically; explicit YAML fonts and sizes take precedence.
118
+ When Helvetica is absent, Jarvis-PLOT selects the first installed similar family:
119
+ Arial, Liberation Sans, Nimbus Sans, then DejaVu Sans. `check` and `resolve`
120
+ report the actual font and substitution reason.
121
+
122
+ ```bash
123
+ jplot fonts # role card: title, labels, ticks, legend, text, annotations, caption
124
+ jplot fonts show title --json # current defaults for one role
125
+ jplot fonts show --recommended --json
126
+ jplot fonts list --filter Helvetica --json
127
+ jplot fonts list --refresh --json # rescan after installing fonts
128
+ jplot fonts resolve Helvetica --weight bold --json
129
+ jplot fonts check --json # actual installed faces used by the card
130
+ jplot fonts set roles.title.family sans
131
+ jplot fonts set roles.legend.family serif
132
+ jplot fonts set roles.title.size_pt 9
133
+ jplot fonts set roles.title.size_pt null # inherit the plot style's size
134
+ jplot fonts reset roles.title.size_pt
135
+ jplot fonts reset # remove all personal overrides
136
+ jplot man fonts --json
137
+ ```
138
+
139
+ Personal overrides persist in `~/.jarvis/plot-fonts.json` (`JARVIS_HOME` overrides
140
+ the directory). Queries never create that file. `size_pt: null` preserves the
141
+ plot style's canvas-specific size; `recommended_size_pt` is drafting advice.
142
+ Font discovery uses Matplotlib's cached system and bundled font index, while
143
+ TTC face selection preserves the requested weight and slant. `$...$` uses
144
+ MathText; an external LaTeX compiler has its own font configuration.
145
+
113
146
  ### Design-Reference Overlay
114
147
 
115
148
  Set `debug: true` on a figure and Jarvis-PLOT draws a dimension overlay on top
@@ -127,7 +160,7 @@ Figures:
127
160
 
128
161
  The style card's `Debug` block decides what the annotations look like and which
129
162
  of them appear; a per-figure `debug:` mapping overrides the card for that figure
130
- only. See `jplot man debug-overlay` and `docs/specs/STYLE_SCHEMA.md`.
163
+ only. See `jplot man debug-overlay` and [STYLE_SCHEMA.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/STYLE_SCHEMA.md).
131
164
 
132
165
  > `Figures[].debug` is not the `jplot --debug` flag — the flag only raises the
133
166
  > log level.
@@ -152,6 +185,9 @@ TTY** — piping is enough.
152
185
 
153
186
  The loop `jplot man` prints is:
154
187
 
188
+ Before drafting, inspect `jplot fonts show --json` and `jplot fonts check --json`
189
+ for the typography defaults and actual installed font choices.
190
+
155
191
  1. `jplot data describe <file> --json` — column names from the real file. Never
156
192
  invent one; a wrong name is a hard error, not a warning.
157
193
  2. `jplot cap methods|styles|cmaps|funcs|transforms|types --json` — the legal
@@ -175,13 +211,13 @@ with the same object regroup automatically using card templates such as
175
211
  single-component object. `frame.<axes>.legend` owns card selection, `order`,
176
212
  `ncols`, position and spacing. JSON cards provide
177
213
  reusable defaults, and YAML can override them. See
178
- [the legend contract](docs/specs/LEGEND.md) and the
214
+ [the legend contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/LEGEND.md) and the
179
215
  [self-contained example](Example/compact_legend.yaml).
180
216
 
181
217
  For continuous one-dimensional distributions from raw samples, use `PDF1D`
182
218
  (CDF plus PDF) or `CDF1D` in a data transform. `coordinates.x` owns `expr`,
183
219
  `lim`, and `grid`; optional `repeat` computes independent batch means and
184
- standard deviations. See [the contract](docs/specs/PDF_CDF_1D.md) and the
220
+ standard deviations. See [the contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/PDF_CDF_1D.md) and the
185
221
  [runnable example](Example/pdf_cdf_1d.yaml).
186
222
  Reconstruction defaults to adaptive true CDF anchors and `monotone_c2`
187
223
  interpolation (C2 CDF / C1 PDF). Set `anchors: all` and `interpolation: pchip`
@@ -192,7 +228,7 @@ Two things worth knowing before trusting a config:
192
228
  - `jplot validate` checks shape and contracts and never touches the data;
193
229
  `jplot dryrun` loads the data and reports the row ledger and JP-VIZ render
194
230
  health. Passing the first says nothing about the second.
195
- - `docs/specs/AGENT_DATA_API.md` describes a *different*, still-frozen bridge
231
+ - [AGENT_DATA_API.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/AGENT_DATA_API.md) describes a *different*, still-frozen bridge
196
232
  (a numeric digest channel for Jarvis-Agent). The surface above is what ships
197
233
  today.
198
234
 
@@ -249,24 +285,26 @@ multiple directory trees; overlapping selections are deduplicated. Use
249
285
  All cache subcommands accept `--json` and use the existing CLI envelope and
250
286
  exit codes (0 success/partial, 1 failure, 2 usage). Non-TTY stdout defaults to
251
287
  JSON; human results go to stderr. Active caches are skipped (`ok: null` when
252
- the remaining operation succeeds), and records for missing paths are pruned
253
- during cleanup. Only marked Jarvis-PLOT components are removed; source data,
288
+ the remaining operation succeeds), and records for missing paths or unmarked
289
+ `.cache` directories containing only empty Jarvis-PLOT component directories
290
+ are pruned during cleanup. Only marked
291
+ Jarvis-PLOT components are removed; source data,
254
292
  plots, and unrelated `.cache` content are retained. Failed deletions retain
255
- their registry entries. Scanning adopts legacy caches only when the four
293
+ their registry entries; nonempty unmarked directories remain invalid and are
294
+ not deleted. Scanning adopts legacy caches only when the four
256
295
  pipeline directories and a compatible `manifest.json` identify them; old
257
296
  unmarked twin-only directories need a new `dryrun --with-data` run to register.
258
297
  An explicitly supplied `--out-dir` is an export directory and is not registered.
259
298
  Concurrent registry writes use a lock and atomic replacement. Registration
260
299
  failures warn without preventing rendering.
261
300
 
262
- ### Example: SUSYRun2 Ternary Plots
301
+ ### Example: Ternary Layouts
263
302
 
264
303
  ```bash
265
- jplot ./bin/SUSYRun2_EWMSSM.yaml
266
- jplot ./bin/SUSYRun2_GEWMSSM.yaml
304
+ jplot ./Example/gambit_2x1.yaml
267
305
  ```
268
306
 
269
- > **Note:** The data file paths inside the YAML files must be updated to match your local setup.
307
+ This layout reference uses bundled style cards and renders without external data.
270
308
 
271
309
  ### Example: Dynesty Runplot
272
310
 
@@ -288,7 +326,7 @@ Figures:
288
326
  - dynesty_runplot
289
327
  ```
290
328
 
291
- See `docs/specs/DYNESTY_RUNPLOT.md` for the default axes, KDE, scatter overlay,
329
+ See [DYNESTY_RUNPLOT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/DYNESTY_RUNPLOT.md) for the default axes, KDE, scatter overlay,
292
330
  and evidence summary behavior.
293
331
 
294
332
  ---
@@ -330,19 +368,19 @@ and evidence summary behavior.
330
368
  ### Documentation
331
369
  [https://pengxuan-zhu-phys.github.io/Jarvis-Docs/](https://pengxuan-zhu-phys.github.io/Jarvis-Docs/)
332
370
 
333
- ### Repository Docs
371
+ ### Project Docs
334
372
 
335
- Tracked project docs live in `docs/`.
373
+ This repository keeps only `README.md` and `CHANGELOG.md`. Design documents,
374
+ specifications and the roadmap live in Jarvis-Books:
336
375
 
337
- - `docs/README.md` - repo doc index
338
- - `docs/context/JARVIS_PLOT_CONTEXT.md` - primary Codex-facing boundary doc
339
- - `docs/context/CODE_MAP_JARVIS_PLOT.md` - concrete code owner map
340
- - `docs/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md` - runtime execution contract
341
- - `docs/roadmap/IMPLEMENTATION_ROADMAP.md` - active backlog and future work list
342
- - `docs/specs/AGENT_DATA_API.md` - planned numeric agent bridge (spec only, frozen — not the shipped CLI agent surface above)
343
- - `docs/specs/STYLE_SCHEMA.md` - style card contract, including the `Debug` overlay block
344
- - `docs/dev/DEVELOPER_RULES.md` - current pipeline and cache rules
345
- - `docs/dev/MEMORY_OPTIMIZATION_GUIDE.md` - narrow-table memory notes
376
+ - [Doc index](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/README.md)
377
+ - [JARVIS_PLOT_CONTEXT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/JARVIS_PLOT_CONTEXT.md) - project boundary; read before changing code
378
+ - [CODE_MAP_JARVIS_PLOT.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/CODE_MAP_JARVIS_PLOT.md) - code owner map
379
+ - [JARVIS_PLOT_FRAMEWORK_LOGIC.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/context/JARVIS_PLOT_FRAMEWORK_LOGIC.md) - runtime execution contract
380
+ - [IMPLEMENTATION_ROADMAP.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/roadmap/IMPLEMENTATION_ROADMAP.md) - open work
381
+ - [RELEASING.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/release/RELEASING.md) - versioning, `tools/check_release.py` and CI verification
382
+ - [STYLE_SCHEMA.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/STYLE_SCHEMA.md) - style card contract, including the `Debug` overlay block
383
+ - [DEVELOPER_RULES.md](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/dev/DEVELOPER_RULES.md) - pipeline and cache rules
346
384
 
347
385
  Read the context docs and roadmap before changing parsing, transforms, rendering, or layout-related behavior.
348
386
 
@@ -352,6 +390,25 @@ Read the context docs and roadmap before changing parsing, transforms, rendering
352
390
 
353
391
  MIT License
354
392
 
355
- Create a continuous forest figure with `type: forest`, a generic row table, optional points and multiple supplied intervals per row. Native YAML supports class-specific interval lanes, CSV value annotations, explicit `x.ticks`, opt-in MathText, header notes and a shared-format legend. The default Swiss-column card uses 82.5 mm width and 5.5 mm row pitch; every row shares one numerical x domain. See [the forest contract](docs/specs/FOREST.md), [native examples](Example/forest/README.md), or `jplot man forest --json`.
393
+ Create a continuous forest figure with `type: forest`, a generic row table, optional points and multiple supplied intervals per row. Native YAML supports class-specific interval lanes, CSV value annotations, explicit `x.ticks`, opt-in MathText, header notes and a shared-format legend. The default Swiss-column card uses 82.5 mm width and 5.5 mm row pitch; every row shares one numerical x domain. See [the forest contract](https://github.com/Pengxuan-Zhu-Phys/Jarvis-Books/blob/main/Docs/Jarvis-PLOT/specs/FOREST.md), [native examples](Example/forest/README.md), or `jplot man forest --json`.
356
394
 
357
395
  AI agents: start with `jplot man agent-readme --json` for the official-package YAML workflow and missing-feature reporting instructions. Feature requests include the installed version from `jplot --version`; the CLI does not send email automatically.
396
+
397
+ ## Releasing
398
+
399
+ `jprel` is a maintainer-local script, excluded from Git and distribution archives.
400
+
401
+ Record changes in `CHANGELOG.md`, then run from this checkout (replace the
402
+ example version with the intended release):
403
+
404
+ ```bash
405
+ ./jprel 2.1.11 --dry
406
+ ./jprel 2.1.11
407
+ ```
408
+
409
+ `--dry` performs read-only source and release-note checks. The normal command
410
+ requires a clean Git checkout, builds and checks the wheel and sdist, uploads
411
+ to PyPI, refreshes the local version with `python3 -m pip install -e .`, and
412
+ verifies the installed version. Only then does it commit the version, push the
413
+ `vX.Y.Z` tag, and create a GitHub release with changelog notes. Configure Twine
414
+ and `gh` authentication before publishing.