inklet 4.0.0.dev2__tar.gz → 4.0.0.dev4__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 (958) hide show
  1. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/.github/workflows/checks.yml +5 -0
  2. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/.github/workflows/publish.yml +2 -2
  3. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/CHANGELOG.md +119 -0
  4. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/PKG-INFO +6 -9
  5. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/README.md +5 -8
  6. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/api.md +21 -4
  7. inklet-4.0.0.dev4/docs/assets/guides/plots-band.png +0 -0
  8. inklet-4.0.0.dev4/docs/assets/guides/plots-bars.png +0 -0
  9. inklet-4.0.0.dev4/docs/assets/guides/plots-boxplot.png +0 -0
  10. inklet-4.0.0.dev4/docs/assets/guides/plots-errorbars.png +0 -0
  11. inklet-4.0.0.dev4/docs/assets/guides/plots-fill-between.png +0 -0
  12. inklet-4.0.0.dev4/docs/assets/guides/plots-fill.png +0 -0
  13. inklet-4.0.0.dev4/docs/assets/guides/plots-grouped-bars.png +0 -0
  14. inklet-4.0.0.dev4/docs/assets/guides/plots-hist.png +0 -0
  15. inklet-4.0.0.dev4/docs/assets/guides/plots-horizontal-bars.png +0 -0
  16. inklet-4.0.0.dev4/docs/assets/guides/plots-line-errors.png +0 -0
  17. inklet-4.0.0.dev4/docs/assets/guides/plots-line.png +0 -0
  18. inklet-4.0.0.dev4/docs/assets/guides/plots-markers.png +0 -0
  19. inklet-4.0.0.dev4/docs/assets/guides/plots-matrix.png +0 -0
  20. inklet-4.0.0.dev4/docs/assets/guides/plots-polar-curve.png +0 -0
  21. inklet-4.0.0.dev4/docs/assets/guides/plots-rose.png +0 -0
  22. inklet-4.0.0.dev4/docs/assets/guides/plots-scatter.png +0 -0
  23. inklet-4.0.0.dev4/docs/assets/guides/plots-series.png +0 -0
  24. inklet-4.0.0.dev4/docs/assets/guides/plots-stackarea.png +0 -0
  25. inklet-4.0.0.dev4/docs/assets/guides/plots-stacked-bars.png +0 -0
  26. inklet-4.0.0.dev4/docs/assets/guides/plots-step.png +0 -0
  27. inklet-4.0.0.dev4/docs/assets/guides/plots-swarm.png +0 -0
  28. inklet-4.0.0.dev4/docs/assets/guides/plots-violin.png +0 -0
  29. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-marker-shapes-caption.tex +1 -0
  30. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-marker-shapes.html +331 -0
  31. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-markers-display.json +13 -0
  32. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-markers-hardware.json +178 -0
  33. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-scene-viewer.html +331 -0
  34. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-viewer-display.json +12 -0
  35. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-viewer-export.json +12 -0
  36. inklet-4.0.0.dev4/docs/assets/research-preview/compiled-viewer-study.json +194 -0
  37. inklet-4.0.0.dev4/docs/assets/research-preview/dense-scatter-caption.tex +1 -0
  38. inklet-4.0.0.dev4/docs/assets/research-preview/marker-batches.json +144 -0
  39. inklet-4.0.0.dev4/docs/assets/research-preview/marker-index-after.json +231 -0
  40. inklet-4.0.0.dev4/docs/assets/research-preview/marker-index-before.json +231 -0
  41. inklet-4.0.0.dev4/docs/assets/research-preview/marker-index-browser-after.json +1693 -0
  42. inklet-4.0.0.dev4/docs/assets/research-preview/marker-index-browser-before.json +1693 -0
  43. inklet-4.0.0.dev4/docs/assets/research-preview/render-scene-caption.tex +1 -0
  44. inklet-4.0.0.dev4/docs/assets/research-preview/scenes-after.json +207 -0
  45. inklet-4.0.0.dev4/docs/assets/research-preview/scenes-before.json +207 -0
  46. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-culling-after.json +1649 -0
  47. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-culling-before.json +1429 -0
  48. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-culling-gpu-after.json +83 -0
  49. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-culling-gpu-before.json +78 -0
  50. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-redraw-after.json +885 -0
  51. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-redraw-before.json +789 -0
  52. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-redraw-display.json +12 -0
  53. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-redraw-profile.json +383 -0
  54. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-window-after.json +6275 -0
  55. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-window-before.json +3895 -0
  56. inklet-4.0.0.dev4/docs/assets/research-preview/viewer-window-display.json +12 -0
  57. inklet-4.0.0.dev4/docs/assets/v4/visual-overrides.png +0 -0
  58. inklet-4.0.0.dev4/docs/bars-and-areas.md +164 -0
  59. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/browser-rendering.md +4 -0
  60. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/compatibility.md +1 -1
  61. inklet-4.0.0.dev4/docs/compiled-scenes.md +151 -0
  62. inklet-4.0.0.dev4/docs/compiled-viewer.md +302 -0
  63. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/design/v4.md +12 -0
  64. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/development-preview.md +35 -10
  65. inklet-4.0.0.dev4/docs/distributions.md +104 -0
  66. inklet-4.0.0.dev4/docs/index.md +27 -0
  67. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/installation.md +3 -3
  68. inklet-4.0.0.dev4/docs/interactive-documents.md +52 -0
  69. inklet-4.0.0.dev4/docs/lines-and-points.md +97 -0
  70. inklet-4.0.0.dev4/docs/marker-batches.md +132 -0
  71. inklet-4.0.0.dev4/docs/marker-culling.md +174 -0
  72. inklet-4.0.0.dev4/docs/matrices.md +38 -0
  73. inklet-4.0.0.dev4/docs/plot-types.md +14 -0
  74. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/plotting.md +7 -13
  75. inklet-4.0.0.dev4/docs/polar-plots.md +77 -0
  76. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/publication-plots.md +3 -2
  77. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/regional-report.md +42 -0
  78. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/rendering-engine.md +5 -0
  79. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/roadmap.md +6 -0
  80. inklet-4.0.0.dev4/docs/uncertainty.md +104 -0
  81. inklet-4.0.0.dev4/docs/visual-editing.md +104 -0
  82. inklet-4.0.0.dev4/examples/compiled_marker_shapes.py +44 -0
  83. inklet-4.0.0.dev4/examples/compiled_scene_viewer.py +18 -0
  84. inklet-4.0.0.dev4/examples/dense_scatter_review.py +72 -0
  85. inklet-4.0.0.dev4/examples/render_scene_review.py +91 -0
  86. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/regional_report.py +19 -2
  87. inklet-4.0.0.dev4/gallery/compiled-marker-shapes.png +0 -0
  88. inklet-4.0.0.dev4/gallery/compiled-scene-viewer.png +0 -0
  89. inklet-4.0.0.dev4/gallery/compiled-viewer-culling.png +0 -0
  90. inklet-4.0.0.dev4/gallery/compiled-viewer-deep-zoom.png +0 -0
  91. inklet-4.0.0.dev4/gallery/dense-scatter-review.png +0 -0
  92. inklet-4.0.0.dev4/gallery/polar.png +0 -0
  93. inklet-4.0.0.dev4/gallery/render-scene-data.png +0 -0
  94. inklet-4.0.0.dev4/gallery/render-scene-initial.png +0 -0
  95. inklet-4.0.0.dev4/gallery/render-scene-review.png +0 -0
  96. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/mkdocs.yml +62 -47
  97. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/pyproject.toml +1 -1
  98. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/__init__.py +3 -2
  99. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/__init__.py +2 -1
  100. inklet-4.0.0.dev4/src/inklet/core/batch.py +93 -0
  101. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/key_rules.py +15 -5
  102. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/rules.py +71 -11
  103. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/compiler.py +17 -3
  104. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/clip.py +46 -1
  105. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/__init__.py +61 -7
  106. inklet-4.0.0.dev4/src/inklet/experimental/browser/compiled.js +53 -0
  107. inklet-4.0.0.dev4/src/inklet/experimental/browser/compiled.py +64 -0
  108. inklet-4.0.0.dev4/src/inklet/experimental/browser/editor.html +13 -0
  109. inklet-4.0.0.dev4/src/inklet/experimental/browser/editor.js +135 -0
  110. inklet-4.0.0.dev4/src/inklet/experimental/browser/overrides.py +96 -0
  111. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/page.html +1 -0
  112. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/runtime.js +33 -18
  113. inklet-4.0.0.dev4/src/inklet/experimental/scene_viewer/__init__.py +119 -0
  114. inklet-4.0.0.dev4/src/inklet/experimental/scene_viewer/controls.js +14 -0
  115. inklet-4.0.0.dev4/src/inklet/experimental/scene_viewer/page.html +4 -0
  116. inklet-4.0.0.dev4/src/inklet/experimental/scene_viewer/runtime.js +279 -0
  117. inklet-4.0.0.dev4/src/inklet/experimental/scene_viewer/spatial.js +52 -0
  118. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/figure.py +13 -3
  119. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/marks.py +7 -0
  120. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/panel.py +5 -1
  121. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/polar.py +16 -2
  122. inklet-4.0.0.dev4/src/inklet/plot/scatter_batch.py +27 -0
  123. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/__init__.py +2 -1
  124. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/analysis.py +19 -14
  125. inklet-4.0.0.dev4/src/inklet/render/bounds.py +67 -0
  126. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/pdf.py +43 -48
  127. inklet-4.0.0.dev4/src/inklet/render/scene.py +312 -0
  128. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/svg.py +68 -48
  129. inklet-4.0.0.dev4/tests/test_browser_compiled.py +150 -0
  130. inklet-4.0.0.dev4/tests/test_browser_overrides.py +142 -0
  131. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_switching.py +4 -3
  132. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_compositing_engine.py +8 -7
  133. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_docs_site.py +38 -2
  134. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_guides.py +2 -1
  135. inklet-4.0.0.dev4/tests/test_marker_batches.py +173 -0
  136. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_polar.py +33 -0
  137. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_embed.py +4 -7
  138. inklet-4.0.0.dev4/tests/test_render_scene.py +199 -0
  139. inklet-4.0.0.dev4/tests/test_scene_culling.py +120 -0
  140. inklet-4.0.0.dev4/tests/test_scene_viewer.py +325 -0
  141. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_svg.py +4 -5
  142. inklet-4.0.0.dev4/tools/benchmark_batches.py +59 -0
  143. inklet-4.0.0.dev4/tools/benchmark_marker_index.mjs +26 -0
  144. inklet-4.0.0.dev4/tools/benchmark_scene_culling.js +20 -0
  145. inklet-4.0.0.dev4/tools/benchmark_scene_gpu.js +28 -0
  146. inklet-4.0.0.dev4/tools/benchmark_scene_redraw.js +21 -0
  147. inklet-4.0.0.dev4/tools/benchmark_scene_viewer.js +20 -0
  148. inklet-4.0.0.dev4/tools/benchmark_scene_zoom.js +17 -0
  149. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/check_wheel.py +14 -0
  150. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_previews.json +154 -7
  151. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_previews.py +9 -0
  152. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_site.py +1 -0
  153. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_theme/home.html +1 -1
  154. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_theme/main.html +1 -1
  155. inklet-4.0.0.dev4/tools/docs_theme/plot-gallery.html +5 -0
  156. inklet-4.0.0.dev4/tools/make_culling_review.py +33 -0
  157. inklet-4.0.0.dev4/tools/plot_catalog.json +314 -0
  158. inklet-4.0.0.dev4/tools/profile_scene_redraw.js +13 -0
  159. inklet-4.0.0.dev2/docs/assets/guides/plot-types-1.png +0 -0
  160. inklet-4.0.0.dev2/docs/index.md +0 -67
  161. inklet-4.0.0.dev2/docs/plot-types.md +0 -55
  162. inklet-4.0.0.dev2/gallery/polar.png +0 -0
  163. inklet-4.0.0.dev2/src/inklet/render/bounds.py +0 -58
  164. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/.gitattributes +0 -0
  165. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/.gitignore +0 -0
  166. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/.readthedocs.yaml +0 -0
  167. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/CONTRACT.md +0 -0
  168. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/CONTRIBUTING.md +0 -0
  169. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/LICENSE +0 -0
  170. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/THIRD_PARTY_NOTICES.md +0 -0
  171. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/brand/inklet-icon.svg +0 -0
  172. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/brand/inklet-logo-dark.svg +0 -0
  173. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/brand/inklet-logo-mono.svg +0 -0
  174. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/brand/inklet-logo.svg +0 -0
  175. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/brand/inklet-wordmark.svg +0 -0
  176. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/examples/quickstart.pdf +0 -0
  177. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/examples/quickstart.png +0 -0
  178. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/examples/quickstart.svg +0 -0
  179. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/axes-and-scales-1.png +0 -0
  180. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/calibrated-volumes-3.png +0 -0
  181. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/channels-and-contours-1.png +0 -0
  182. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-anchor.png +0 -0
  183. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-annotation.png +0 -0
  184. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
  185. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-branch.png +0 -0
  186. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-broken-axis.png +0 -0
  187. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-callout.png +0 -0
  188. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-clipping.png +0 -0
  189. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-creases.png +0 -0
  190. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-custom-key.png +0 -0
  191. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-cutout.png +0 -0
  192. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-dates.png +0 -0
  193. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-dense.png +0 -0
  194. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-elbows.png +0 -0
  195. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
  196. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-facets.png +0 -0
  197. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-fit-graph.png +0 -0
  198. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-flow-width.png +0 -0
  199. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-formula.png +0 -0
  200. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-graph.png +0 -0
  201. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-halo.png +0 -0
  202. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-heatmap.png +0 -0
  203. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-hole.png +0 -0
  204. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-inline-type.png +0 -0
  205. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-inset.png +0 -0
  206. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-labels.png +0 -0
  207. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-layers.png +0 -0
  208. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-letters.png +0 -0
  209. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-list.png +0 -0
  210. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-matrix.png +0 -0
  211. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-page-grid.png +0 -0
  212. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-polar.png +0 -0
  213. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-protein.png +0 -0
  214. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-routes.png +0 -0
  215. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
  216. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-scene.png +0 -0
  217. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-series-key.png +0 -0
  218. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-span.png +0 -0
  219. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
  220. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-swarm.png +0 -0
  221. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-text-path.png +0 -0
  222. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-toon.png +0 -0
  223. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-twin-axis.png +0 -0
  224. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
  225. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-violin.png +0 -0
  226. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
  227. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/data-1.png +0 -0
  228. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/data-3.png +0 -0
  229. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/dense-data-1.png +0 -0
  230. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/diagram-components-1.png +0 -0
  231. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/diagrams-1.png +0 -0
  232. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/layout-3.png +0 -0
  233. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/oblique-sections-2.png +0 -0
  234. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/plot-quality-after.png +0 -0
  235. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/plot-quality-before.png +0 -0
  236. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/plotting-1.png +0 -0
  237. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/plotting-2.png +0 -0
  238. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/publication-plots-1.png +0 -0
  239. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/publication-plots-2.png +0 -0
  240. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/publication-plots-3.png +0 -0
  241. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/publication-plots-4.png +0 -0
  242. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/slabs-and-regions-1.png +0 -0
  243. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/three-images-1.png +0 -0
  244. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/guides/three-images-2.png +0 -0
  245. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/biology.json +0 -0
  246. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/clipping-after.json +0 -0
  247. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/clipping-before.json +0 -0
  248. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/clipping-caption.tex +0 -0
  249. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/clipping-lines-after.json +0 -0
  250. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/clipping-lines-before.json +0 -0
  251. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/comparison.json +0 -0
  252. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/compositing-after.json +0 -0
  253. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/compositing-before.json +0 -0
  254. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/compositing-caption.tex +0 -0
  255. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/diagram-after.json +0 -0
  256. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/diagram-before.json +0 -0
  257. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
  258. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/engine-after.json +0 -0
  259. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/engine-before.json +0 -0
  260. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/engine-review-caption.tex +0 -0
  261. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/fluorescence-biology.json +0 -0
  262. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/general-plots-caption.tex +0 -0
  263. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/general-plots.json +0 -0
  264. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/hatch-after.json +0 -0
  265. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/hatch-before.json +0 -0
  266. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/hatch-caption.tex +0 -0
  267. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
  268. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/label-intensities-native.csv +0 -0
  269. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/label-intensities.json +0 -0
  270. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/lines-after.json +0 -0
  271. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/lines-before.json +0 -0
  272. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/oblique-biology.json +0 -0
  273. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
  274. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/real-biology.json +0 -0
  275. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/revision.json +0 -0
  276. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/slab-biology.json +0 -0
  277. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/research-preview/study.json +0 -0
  278. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/after.json +0 -0
  279. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/before.json +0 -0
  280. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/browser-quality.json +0 -0
  281. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/browser-scatter.html +0 -0
  282. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/browser-scatter.png +0 -0
  283. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/browser-study.json +0 -0
  284. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
  285. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/contours-streamlines-masked.png +0 -0
  286. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/contours-streamlines.html +0 -0
  287. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/contours-streamlines.png +0 -0
  288. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/engineering-report-170mm.png +0 -0
  289. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/engineering-report.html +0 -0
  290. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/engineering-report.png +0 -0
  291. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/faceted-operations.html +0 -0
  292. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/faceted-operations.png +0 -0
  293. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/linked-dashboard.html +0 -0
  294. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/linked-dashboard.png +0 -0
  295. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/linked-selection.html +0 -0
  296. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/linked-selection.png +0 -0
  297. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/mesh-fields-170mm.png +0 -0
  298. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/mesh-fields.html +0 -0
  299. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/mesh-fields.png +0 -0
  300. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/region-shapes.html +0 -0
  301. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/region-shapes.png +0 -0
  302. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/regional-analysis.html +0 -0
  303. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/regional-analysis.png +0 -0
  304. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/regional-report-160mm.png +0 -0
  305. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/regional-report.html +0 -0
  306. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/regional-report.png +0 -0
  307. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/scientific-report-170mm.png +0 -0
  308. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/scientific-report.html +0 -0
  309. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/scientific-report.png +0 -0
  310. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/statistical-views.html +0 -0
  311. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/statistical-views.png +0 -0
  312. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/table-inputs.html +0 -0
  313. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/table-inputs.png +0 -0
  314. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/time-series.html +0 -0
  315. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/time-series.png +0 -0
  316. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population-2019.html +0 -0
  317. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population-2019.json +0 -0
  318. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population-2019.png +0 -0
  319. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population-revisions.html +0 -0
  320. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population-revisions.png +0 -0
  321. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population.html +0 -0
  322. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/assets/v4/world-population.png +0 -0
  323. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/axes-and-scales.md +0 -0
  324. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/biology-panels.md +0 -0
  325. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/blender-scenes.md +0 -0
  326. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/brand.md +0 -0
  327. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/calibrated-volumes.md +0 -0
  328. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/channels-and-contours.md +0 -0
  329. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/cli.md +0 -0
  330. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/clipping.md +0 -0
  331. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/complex-scene.md +0 -0
  332. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/compositing.md +0 -0
  333. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/concepts.md +0 -0
  334. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/contours-streamlines.md +0 -0
  335. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/cookbook.md +0 -0
  336. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/data-revisions.md +0 -0
  337. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/data.md +0 -0
  338. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/dense-data.md +0 -0
  339. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/design/browser-backends.md +0 -0
  340. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/design/page_grid.md +0 -0
  341. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/design/v2.md +0 -0
  342. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/diagram-components.md +0 -0
  343. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/diagram-engine.md +0 -0
  344. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/diagrams.md +0 -0
  345. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/engineering-report.md +0 -0
  346. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/example-library.md +0 -0
  347. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/examples.md +0 -0
  348. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/export-review.md +0 -0
  349. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/fluorescence-biology.md +0 -0
  350. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/general-plots.md +0 -0
  351. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/hatching.md +0 -0
  352. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/javascripts/inklet.js +0 -0
  353. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/label-intensities.md +0 -0
  354. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/label-measurements.md +0 -0
  355. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/layout.md +0 -0
  356. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/linked-facets.md +0 -0
  357. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/linked-maps.md +0 -0
  358. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/linked-plots.md +0 -0
  359. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/mesh-fields.md +0 -0
  360. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/microscopy-tiff.md +0 -0
  361. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/migration.md +0 -0
  362. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/oblique-biology.md +0 -0
  363. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/oblique-sections.md +0 -0
  364. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/plot-quality.md +0 -0
  365. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/plotting-engine.md +0 -0
  366. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/presets.md +0 -0
  367. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/quickstart.md +0 -0
  368. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/real-biology.md +0 -0
  369. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/architecture-sketch.md +0 -0
  370. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/architecture.md +0 -0
  371. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/attractor.md +0 -0
  372. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/helix.md +0 -0
  373. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/interference.md +0 -0
  374. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/lattice.md +0 -0
  375. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/photonics.md +0 -0
  376. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/recipes/wave-packets.md +0 -0
  377. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/release-checks.md +0 -0
  378. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/render-jobs.md +0 -0
  379. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/research-preview.md +0 -0
  380. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/research-revision.md +0 -0
  381. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/research-study.md +0 -0
  382. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/scene-annotations.md +0 -0
  383. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/scene-paths.md +0 -0
  384. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/scene-templates.md +0 -0
  385. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/scientific-report.md +0 -0
  386. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/showcase.md +0 -0
  387. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/slab-biology.md +0 -0
  388. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/slabs-and-regions.md +0 -0
  389. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/statistical-views.md +0 -0
  390. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/stress20.md +0 -0
  391. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/stylesheets/code.css +0 -0
  392. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/stylesheets/inklet.css +0 -0
  393. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/table-inputs.md +0 -0
  394. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/three-images.md +0 -0
  395. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/time-series.md +0 -0
  396. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/troubleshooting.md +0 -0
  397. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/v2.5.md +0 -0
  398. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/v2.md +0 -0
  399. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/v3.md +0 -0
  400. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/v4-foundations.md +0 -0
  401. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/docs/world-map.md +0 -0
  402. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/README.md +0 -0
  403. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/cells3d.lock.json +0 -0
  404. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/data.py +0 -0
  405. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/fluorescence.py +0 -0
  406. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/organelle.lock.json +0 -0
  407. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology/requirements.txt +0 -0
  408. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/biology_panels.py +0 -0
  409. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/blender/complex_lab_scene.py +0 -0
  410. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/blender/lab_scene.py +0 -0
  411. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/blender/occlusion_scene.py +0 -0
  412. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/blender/organelle_scene.py +0 -0
  413. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/blender/research_lab_views.py +0 -0
  414. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/broken_axis.py +0 -0
  415. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/clipping_review.py +0 -0
  416. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/compositing_review.py +0 -0
  417. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/data/general-plots/benchmark.csv +0 -0
  418. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/data/general-plots/learning.csv +0 -0
  419. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/data/general-plots/revenue.csv +0 -0
  420. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/data/general-plots/sensor.csv +0 -0
  421. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/diagram_review.py +0 -0
  422. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/engine_review.py +0 -0
  423. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/feature_flow.py +0 -0
  424. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/fluorescence_biology.py +0 -0
  425. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/gallery.py +0 -0
  426. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/general_plots.py +0 -0
  427. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/graph.py +0 -0
  428. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/hatch_review.py +0 -0
  429. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/hello_figure.py +0 -0
  430. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/label_intensities.py +0 -0
  431. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/oblique_biology.py +0 -0
  432. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/panels.py +0 -0
  433. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/plot_engine_review.py +0 -0
  434. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/plot_quality_review.py +0 -0
  435. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/polar.py +0 -0
  436. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/preset_formats.py +0 -0
  437. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/presets.py +0 -0
  438. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/real_biology.py +0 -0
  439. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/render_smoke.py +0 -0
  440. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/research_figure_planner.py +0 -0
  441. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/research_planner_study.py +0 -0
  442. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/research_revision.py +0 -0
  443. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/showcase/README.md +0 -0
  444. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/showcase/assets.lock.json +0 -0
  445. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/showcase/blender_scenes.py +0 -0
  446. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/showcase/figures.py +0 -0
  447. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/slab_biology.py +0 -0
  448. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/state_machine.py +0 -0
  449. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/stress20.py +0 -0
  450. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v25_document.py +0 -0
  451. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v2_cases.py +0 -0
  452. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v2_document.py +0 -0
  453. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_complex_scene.py +0 -0
  454. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_render_jobs.py +0 -0
  455. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_rendering.py +0 -0
  456. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_scene_annotations.py +0 -0
  457. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_scene_passes.py +0 -0
  458. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_scene_paths.py +0 -0
  459. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v3_scene_templates.py +0 -0
  460. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/README.md +0 -0
  461. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/browser_scatter.py +0 -0
  462. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/contours_streamlines.py +0 -0
  463. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/data/world-countries.geojson +0 -0
  464. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/data/world-map-source.json +0 -0
  465. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/data/world-population.csv +0 -0
  466. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/engineering_report.py +0 -0
  467. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/faceted_operations.py +0 -0
  468. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/assembly.json +0 -0
  469. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/manifest.json +0 -0
  470. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/measurement.json +0 -0
  471. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/region-shapes.geojson +0 -0
  472. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/regions.csv +0 -0
  473. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/fixtures/regions.geojson +0 -0
  474. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/linked_dashboard.py +0 -0
  475. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/linked_selection.html +0 -0
  476. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/linked_selection.py +0 -0
  477. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/mesh_fields.py +0 -0
  478. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/region_shapes.py +0 -0
  479. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/regional_analysis.py +0 -0
  480. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/scientific_report.py +0 -0
  481. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/statistical_views.py +0 -0
  482. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/table_inputs.py +0 -0
  483. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/time_series.py +0 -0
  484. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/examples/v4/world_population.py +0 -0
  485. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/annot.py +0 -0
  486. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/bio3d.py +0 -0
  487. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/cartoon.py +0 -0
  488. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/chem_data.py +0 -0
  489. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/chem_fingerprints.py +0 -0
  490. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/data/1m17-kinase.pdb +0 -0
  491. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/data/README.md +0 -0
  492. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/drug_discovery.py +0 -0
  493. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/mouse_brain_data.py +0 -0
  494. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/neural_activity.py +0 -0
  495. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/pdbfile.py +0 -0
  496. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/showcase_part.py +0 -0
  497. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/showcase_process.py +0 -0
  498. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/showcase_season.py +0 -0
  499. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/structure.py +0 -0
  500. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/structure_data.py +0 -0
  501. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/target.py +0 -0
  502. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/figures/trial.py +0 -0
  503. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/README.md +0 -0
  504. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/biology-panels.png +0 -0
  505. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/chem_fingerprints.png +0 -0
  506. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/clipping-review.png +0 -0
  507. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/compositing-pdf-after.png +0 -0
  508. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/compositing-pdf-before.png +0 -0
  509. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/compositing-review.png +0 -0
  510. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/diagram-labels-after.png +0 -0
  511. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/diagram-labels-before.png +0 -0
  512. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/diagram-review.png +0 -0
  513. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/engine-review.png +0 -0
  514. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/engine-transparency-after.png +0 -0
  515. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/engine-transparency-before.png +0 -0
  516. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/flow.png +0 -0
  517. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/fluorescence-biology.png +0 -0
  518. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/general-plots-before.png +0 -0
  519. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/general-plots.png +0 -0
  520. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/hatch-pdf-after.png +0 -0
  521. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/hatch-pdf-before.png +0 -0
  522. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/hatch-review.png +0 -0
  523. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/hatch-svg-before.png +0 -0
  524. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/label-intensities.png +0 -0
  525. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/oblique-biology.png +0 -0
  526. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/part.png +0 -0
  527. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/plot-axis-after.png +0 -0
  528. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/plot-axis-before.png +0 -0
  529. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/plot-engine-review.png +0 -0
  530. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/plots.png +0 -0
  531. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/preset-formats.png +0 -0
  532. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/presets.png +0 -0
  533. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/process.png +0 -0
  534. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/real-biology.png +0 -0
  535. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/research-crossing-revision.png +0 -0
  536. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/research-figure-planner.png +0 -0
  537. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/research-planner-study.png +0 -0
  538. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/research-revision.png +0 -0
  539. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/season.png +0 -0
  540. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-architecture-sketch.png +0 -0
  541. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-architecture.png +0 -0
  542. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-attractor.png +0 -0
  543. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-helix.png +0 -0
  544. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-interference.png +0 -0
  545. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-lattice.png +0 -0
  546. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-photonics.png +0 -0
  547. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/showcase-wave-packets.png +0 -0
  548. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/slab-biology.png +0 -0
  549. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/stress20.png +0 -0
  550. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/structure.png +0 -0
  551. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-complex-scene.png +0 -0
  552. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-render-jobs.png +0 -0
  553. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-rendering.png +0 -0
  554. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-scene-annotations.png +0 -0
  555. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-scene-passes.png +0 -0
  556. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-scene-paths.png +0 -0
  557. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/gallery/v3-scene-templates.png +0 -0
  558. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/requirements-ci.txt +0 -0
  559. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/requirements-docs.txt +0 -0
  560. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/requirements-tables.txt +0 -0
  561. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/scripts/bench_svg.py +0 -0
  562. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/scripts/rasterise.sh +0 -0
  563. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/scripts/sanity_typeset.py +0 -0
  564. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/__main__.py +0 -0
  565. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/__init__.py +0 -0
  566. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/asset.py +0 -0
  567. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/cache.py +0 -0
  568. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/cutout.py +0 -0
  569. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/deps.py +0 -0
  570. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/harmonise.py +0 -0
  571. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/lineart.py +0 -0
  572. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/mask.py +0 -0
  573. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/provenance.py +0 -0
  574. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/raster.py +0 -0
  575. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/sidecar.py +0 -0
  576. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/assets/silhouette.py +0 -0
  577. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/cli.py +0 -0
  578. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/components.py +0 -0
  579. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/diagram.py +0 -0
  580. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/envelope.py +0 -0
  581. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/geom.py +0 -0
  582. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/prims.py +0 -0
  583. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/style.py +0 -0
  584. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/trace.py +0 -0
  585. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/core/units.py +0 -0
  586. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/__init__.py +0 -0
  587. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/abut.py +0 -0
  588. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/break_rules.py +0 -0
  589. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/color.py +0 -0
  590. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/cross.py +0 -0
  591. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/image.py +0 -0
  592. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/link_rules.py +0 -0
  593. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/path_rules.py +0 -0
  594. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/plot_rules.py +0 -0
  595. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/report.py +0 -0
  596. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/diagnostics/three_rules.py +0 -0
  597. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/__init__.py +0 -0
  598. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/composition.py +0 -0
  599. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/data.py +0 -0
  600. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/data_io.py +0 -0
  601. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/module.py +0 -0
  602. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/presets.py +0 -0
  603. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/publication.py +0 -0
  604. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/document/spec.py +0 -0
  605. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/__init__.py +0 -0
  606. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/annotate.py +0 -0
  607. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/bezier_clip.py +0 -0
  608. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/coords.py +0 -0
  609. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/path.py +0 -0
  610. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/place.py +0 -0
  611. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/draw/shapes.py +0 -0
  612. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/__init__.py +0 -0
  613. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/_table_adapters.py +0 -0
  614. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/drawings.py +0 -0
  615. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/fields.py +0 -0
  616. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/grid.py +0 -0
  617. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/images.py +0 -0
  618. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/regions.py +0 -0
  619. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/series.py +0 -0
  620. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/browser/timeaxis.py +0 -0
  621. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/channels.py +0 -0
  622. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/contours.py +0 -0
  623. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/engineering.py +0 -0
  624. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/fields.py +0 -0
  625. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/figure_planner.py +0 -0
  626. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/grid.py +0 -0
  627. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/measurement.py +0 -0
  628. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/measurements.py +0 -0
  629. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/planner_geometry.py +0 -0
  630. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/regions.py +0 -0
  631. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/sections.py +0 -0
  632. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/selection.py +0 -0
  633. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/slabs.py +0 -0
  634. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/temporal.py +0 -0
  635. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/tiff.py +0 -0
  636. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/experimental/volume.py +0 -0
  637. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/__init__.py +0 -0
  638. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/fit.py +0 -0
  639. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/flow.py +0 -0
  640. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/graph.py +0 -0
  641. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/graph_force.py +0 -0
  642. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/graph_layered.py +0 -0
  643. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/graph_tree.py +0 -0
  644. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/labels.py +0 -0
  645. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/layout/sankey.py +0 -0
  646. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/links/__init__.py +0 -0
  647. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/links/curves.py +0 -0
  648. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/links/link.py +0 -0
  649. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/__init__.py +0 -0
  650. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/axis.py +0 -0
  651. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/breaks.py +0 -0
  652. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/categories.py +0 -0
  653. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/facets.py +0 -0
  654. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/inset.py +0 -0
  655. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/key.py +0 -0
  656. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/notes.py +0 -0
  657. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/png.py +0 -0
  658. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/ramp.py +0 -0
  659. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/raster.py +0 -0
  660. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/ribbon.py +0 -0
  661. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/scale.py +0 -0
  662. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/scatter_raster.py +0 -0
  663. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/series.py +0 -0
  664. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/simplify.py +0 -0
  665. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/plot/timescale.py +0 -0
  666. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/brushes.py +0 -0
  667. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/bundle.py +0 -0
  668. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/composite.py +0 -0
  669. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/fontembed.py +0 -0
  670. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/glyphs.py +0 -0
  671. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/hatching.py +0 -0
  672. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/outline.py +0 -0
  673. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/paint.py +0 -0
  674. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/pathdata.py +0 -0
  675. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/pdftext.py +0 -0
  676. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/preview.py +0 -0
  677. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/raster.py +0 -0
  678. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/resources.py +0 -0
  679. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/review.py +0 -0
  680. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/render/revision.py +0 -0
  681. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/themes/__init__.py +0 -0
  682. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/themes/color.py +0 -0
  683. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/themes/palettes.py +0 -0
  684. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/themes/theme.py +0 -0
  685. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/__init__.py +0 -0
  686. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/api.py +0 -0
  687. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/backend.py +0 -0
  688. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/__init__.py +0 -0
  689. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/device_worker.py +0 -0
  690. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/discover.py +0 -0
  691. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/lineart.py +0 -0
  692. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/options.py +0 -0
  693. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/scene_worker.py +0 -0
  694. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/script.py +0 -0
  695. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/svgread.py +0 -0
  696. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/template_worker.py +0 -0
  697. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender/tracing.py +0 -0
  698. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/blender_backend.py +0 -0
  699. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/camera.py +0 -0
  700. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/deps.py +0 -0
  701. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/depth.py +0 -0
  702. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/devices.py +0 -0
  703. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/drill.py +0 -0
  704. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/edges.py +0 -0
  705. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/hlr.py +0 -0
  706. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/linalg.py +0 -0
  707. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/mesh.py +0 -0
  708. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/occlude.py +0 -0
  709. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/order.py +0 -0
  710. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/parse.py +0 -0
  711. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/place.py +0 -0
  712. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/protein.py +0 -0
  713. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/quality.py +0 -0
  714. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/render_jobs.py +0 -0
  715. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/scene_annotations.py +0 -0
  716. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/scene_pass.py +0 -0
  717. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/scene_projection.py +0 -0
  718. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/scenes.py +0 -0
  719. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/shade.py +0 -0
  720. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/solids.py +0 -0
  721. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/templates.json +0 -0
  722. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/three/templates.py +0 -0
  723. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/__init__.py +0 -0
  724. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/fonts.py +0 -0
  725. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/markup.py +0 -0
  726. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/onpath.py +0 -0
  727. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/outline.py +0 -0
  728. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/src/inklet/typeset/shaping.py +0 -0
  729. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/assets/mouse.inklet.json +0 -0
  730. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/assets/mouse.png +0 -0
  731. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/dense_graph.py +0 -0
  732. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/draw_probe.py +0 -0
  733. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/assets/sem.png +0 -0
  734. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/assets/tem.png +0 -0
  735. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/cell.py +0 -0
  736. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/common.py +0 -0
  737. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/data.py +0 -0
  738. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/imaging.py +0 -0
  739. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/kinetics.py +0 -0
  740. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/micrograph.py +0 -0
  741. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro/system.py +0 -0
  742. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/electro_figure.py +0 -0
  743. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/fidelity.py +0 -0
  744. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/flow.py +0 -0
  745. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/hard_figure.py +0 -0
  746. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/label_storm.py +0 -0
  747. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/mega_figure.py +0 -0
  748. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/meshes/README.md +0 -0
  749. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/meshes/brain-lh.obj +0 -0
  750. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/meshes/spot.obj +0 -0
  751. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/panels/apparatus.py +0 -0
  752. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/panels/graphs.py +0 -0
  753. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/panels/relations.py +0 -0
  754. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/panels/responses.py +0 -0
  755. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/panels/sections.py +0 -0
  756. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/probes.py +0 -0
  757. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/stress/three_figure.py +0 -0
  758. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_alignment_contract.py +0 -0
  759. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_annotate.py +0 -0
  760. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_annotate_letters.py +0 -0
  761. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_assets.py +0 -0
  762. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_assets_provenance.py +0 -0
  763. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_biology_source.py +0 -0
  764. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_blend_scene.py +0 -0
  765. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_facets.py +0 -0
  766. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_figure.py +0 -0
  767. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_regions.py +0 -0
  768. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_revision.py +0 -0
  769. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_scatter.py +0 -0
  770. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_series.py +0 -0
  771. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_statistics.py +0 -0
  772. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_browser_time.py +0 -0
  773. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_categories.py +0 -0
  774. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_channels_contours.py +0 -0
  775. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_chem_figure.py +0 -0
  776. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_cli.py +0 -0
  777. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_clip_engine.py +0 -0
  778. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_components.py +0 -0
  779. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_contrast_and_labels.py +0 -0
  780. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_cookbook.py +0 -0
  781. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_core.py +0 -0
  782. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_core_amendments.py +0 -0
  783. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_csv_input.py +0 -0
  784. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics.py +0 -0
  785. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_api.py +0 -0
  786. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_artwork.py +0 -0
  787. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_break_distorts.py +0 -0
  788. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_crossing.py +0 -0
  789. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_image_contrast.py +0 -0
  790. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_ink.py +0 -0
  791. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_keys.py +0 -0
  792. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_links.py +0 -0
  793. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_paths.py +0 -0
  794. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagnostics_plot_box.py +0 -0
  795. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_diagram_engine.py +0 -0
  796. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_docs.py +0 -0
  797. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_document.py +0 -0
  798. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_document_data.py +0 -0
  799. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_document_v25.py +0 -0
  800. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_draw_clip.py +0 -0
  801. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_draw_path.py +0 -0
  802. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_draw_place.py +0 -0
  803. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_draw_shapes.py +0 -0
  804. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_engine_layout.py +0 -0
  805. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_engine_rendering.py +0 -0
  806. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_engine_scatter.py +0 -0
  807. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_engineering_report.py +0 -0
  808. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_export_bundle.py +0 -0
  809. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_figure.py +0 -0
  810. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_figure_planner.py +0 -0
  811. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_fit.py +0 -0
  812. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_grid_fields.py +0 -0
  813. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_hatch_engine.py +0 -0
  814. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_label_measurements.py +0 -0
  815. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_layout.py +0 -0
  816. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_layout_graph.py +0 -0
  817. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_layout_graph_fit.py +0 -0
  818. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_layout_origin.py +0 -0
  819. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_layout_sankey.py +0 -0
  820. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_links.py +0 -0
  821. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_links_avoid.py +0 -0
  822. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_links_shapes.py +0 -0
  823. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_mesh_fields.py +0 -0
  824. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_microscopy_tiff.py +0 -0
  825. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_neural_activity.py +0 -0
  826. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_output_contract.py +0 -0
  827. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_paint_program.py +0 -0
  828. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_place_labels.py +0 -0
  829. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_axis.py +0 -0
  830. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_broken_axis.py +0 -0
  831. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_clip.py +0 -0
  832. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_engine.py +0 -0
  833. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_facets.py +0 -0
  834. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_inset.py +0 -0
  835. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_key.py +0 -0
  836. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_labels.py +0 -0
  837. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_legend.py +0 -0
  838. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_marks.py +0 -0
  839. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_notes.py +0 -0
  840. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_publication.py +0 -0
  841. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_quality_review.py +0 -0
  842. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_raster.py +0 -0
  843. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_ribbon.py +0 -0
  844. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_scale.py +0 -0
  845. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_swarm.py +0 -0
  846. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_plot_time.py +0 -0
  847. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_presets.py +0 -0
  848. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_publication_limits.py +0 -0
  849. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_regional_report.py +0 -0
  850. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_release_adversarial.py +0 -0
  851. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_devices.py +0 -0
  852. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_glyphs.py +0 -0
  853. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_jobs.py +0 -0
  854. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_outline.py +0 -0
  855. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_pdf.py +0 -0
  856. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_pdf_text.py +0 -0
  857. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_quality.py +0 -0
  858. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_style_fields.py +0 -0
  859. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_svg_perf.py +0 -0
  860. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_render_v3.py +0 -0
  861. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_review_v25.py +0 -0
  862. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_round4_plot.py +0 -0
  863. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_routing_avoid.py +0 -0
  864. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scatter_rendering.py +0 -0
  865. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scene_annotations.py +0 -0
  866. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scene_pass.py +0 -0
  867. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scene_projection.py +0 -0
  868. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scene_templates.py +0 -0
  869. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_scientific_report.py +0 -0
  870. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_sections.py +0 -0
  871. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_shared_plot_margins.py +0 -0
  872. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_showcase_library.py +0 -0
  873. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_showcase_round3.py +0 -0
  874. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_slabs_regions.py +0 -0
  875. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_structure_figure.py +0 -0
  876. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_table_adapters.py +0 -0
  877. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_target_pose.py +0 -0
  878. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_temporal_adapters.py +0 -0
  879. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_text_markup.py +0 -0
  880. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_text_on_path.py +0 -0
  881. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_theme_font_style.py +0 -0
  882. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_themes.py +0 -0
  883. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_anchor_pin.py +0 -0
  884. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_api.py +0 -0
  885. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_backend_blender.py +0 -0
  886. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_blender.py +0 -0
  887. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_depth_order.py +0 -0
  888. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_drill.py +0 -0
  889. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_hlr.py +0 -0
  890. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_mesh.py +0 -0
  891. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_order_vector.py +0 -0
  892. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_overlay.py +0 -0
  893. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_parse.py +0 -0
  894. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_patches.py +0 -0
  895. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_place.py +0 -0
  896. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_protein.py +0 -0
  897. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_ridges.py +0 -0
  898. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_sort.py +0 -0
  899. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_sort_budget.py +0 -0
  900. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_three_view.py +0 -0
  901. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_typeset.py +0 -0
  902. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_v4_selection.py +0 -0
  903. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_volume.py +0 -0
  904. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_watch_review.py +0 -0
  905. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/test_world_map_example.py +0 -0
  906. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/README.md +0 -0
  907. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/categories-pdf.png +0 -0
  908. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/categories-svg.png +0 -0
  909. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/components-pdf.png +0 -0
  910. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/components-svg.png +0 -0
  911. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/dense-pdf.png +0 -0
  912. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/dense-svg.png +0 -0
  913. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/fonts.json +0 -0
  914. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/inset-pdf.png +0 -0
  915. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/inset-svg.png +0 -0
  916. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/markers-pdf.png +0 -0
  917. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/markers-svg.png +0 -0
  918. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/renderers.json +0 -0
  919. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/type-opacity-pdf.png +0 -0
  920. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/type-opacity-svg.png +0 -0
  921. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
  922. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
  923. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-dense-pdf.png +0 -0
  924. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-dense-svg.png +0 -0
  925. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
  926. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
  927. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
  928. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
  929. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
  930. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
  931. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
  932. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v2-workflow-svg.png +0 -0
  933. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v25-document-pdf.png +0 -0
  934. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/baseline/v25-document-svg.png +0 -0
  935. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/fixtures.py +0 -0
  936. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tests/visual/v2-budgets.json +0 -0
  937. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_clipping.py +0 -0
  938. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_diagrams.py +0 -0
  939. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_engine.py +0 -0
  940. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_lines.py +0 -0
  941. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_v2.py +0 -0
  942. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/benchmark_v4.py +0 -0
  943. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/browser_study.js +0 -0
  944. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/check_render_wheel.py +0 -0
  945. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/dock_ligand.py +0 -0
  946. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_gallery.json +0 -0
  947. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_theme/404.html +0 -0
  948. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_theme/card.html +0 -0
  949. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/docs_theme/gallery.html +0 -0
  950. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/gen_api.py +0 -0
  951. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/prepare_world_map.py +0 -0
  952. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/preset_gallery.py +0 -0
  953. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/showcase_gallery.py +0 -0
  954. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/stress20.py +0 -0
  955. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/strip_pdb.py +0 -0
  956. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/v3_showcase.py +0 -0
  957. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/v4-budgets.json +0 -0
  958. {inklet-4.0.0.dev2 → inklet-4.0.0.dev4}/tools/visual_check.py +0 -0
@@ -70,6 +70,7 @@ jobs:
70
70
  .venv/bin/python examples/v4/time_series.py --output out/v4-time
71
71
  .venv/bin/python examples/v4/statistical_views.py --output out/v4-statistics
72
72
  .venv/bin/python examples/v4/regional_report.py --render --output out/v4-regional-report
73
+ .venv/bin/python examples/v4/regional_report.py --renderer compiled --editor --render --output out/v4-compiled-regional
73
74
  .venv/bin/python examples/v4/engineering_report.py --render --output out/v4-engineering
74
75
  .venv/bin/python examples/v4/scientific_report.py --render --output out/v4-scientific
75
76
  .venv/bin/python examples/v4/mesh_fields.py --render --output out/v4-mesh-fields
@@ -95,6 +96,10 @@ jobs:
95
96
  .venv/bin/python examples/compositing_review.py --output out/compositing-review
96
97
  .venv/bin/python examples/hatch_review.py --output out/hatch-review
97
98
  .venv/bin/python examples/clipping_review.py --output out/clipping-review
99
+ .venv/bin/python examples/render_scene_review.py --output out/render-scene-review
100
+ .venv/bin/python examples/dense_scatter_review.py --output out/dense-scatter-review
101
+ .venv/bin/python examples/compiled_marker_shapes.py --output out/compiled-marker-shapes
102
+ .venv/bin/python examples/compiled_scene_viewer.py --output out/compiled-scene-viewer
98
103
  - name: Diagram routing and label review
99
104
  run: |
100
105
  .venv/bin/python tools/benchmark_diagrams.py --repeat 1 --output out/diagram-benchmark.json
@@ -6,7 +6,7 @@ on:
6
6
  tag:
7
7
  description: Published GitHub release tag
8
8
  required: true
9
- default: v4.0.0.dev2
9
+ default: v4.0.0.dev4
10
10
  type: string
11
11
  dry_run:
12
12
  description: Validate release files without uploading to PyPI
@@ -43,7 +43,7 @@ jobs:
43
43
  RELEASE_TAG: ${{ inputs.tag }}
44
44
  run: |
45
45
  [[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+)?$ ]] || {
46
- echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev2' >&2
46
+ echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev4' >&2
47
47
  exit 1
48
48
  }
49
49
  gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
@@ -1,5 +1,124 @@
1
1
  # Changelog
2
2
 
3
+ ## Unreleased
4
+
5
+ ## 4.0.0.dev4 — 2026-09-12
6
+
7
+ Fourth development preview: correct closed polar geometry and make the plot
8
+ documentation visual and easier to navigate. 3.1.0 remains stable.
9
+
10
+ - Fix closed polar curves retracing the angular range and shaded bands crossing
11
+ themselves. Complete the closing arc in sample order and retain both band
12
+ endpoints; refresh polar previews and cover angular units and winding directions.
13
+
14
+ - Reorganize documentation around plotting, interactive documents and microscopy.
15
+ Add a searchable visual plot gallery and six guides with 22 rendered, runnable
16
+ examples; check plot-family coverage, gallery links and guide execution.
17
+
18
+ ## 4.0.0.dev3 — 2026-09-12
19
+
20
+ Third development preview: shared scene execution, dense marker rendering,
21
+ linked compiled reports and the first reproducible plot-style editor. Install
22
+ explicitly with `python -m pip install "inklet==4.0.0.dev3"`; 3.1.0 remains stable.
23
+
24
+ - Add an offline inspector for named plot colours, marker radii and line widths,
25
+ with bounded undo/redo and separate versioned overrides. Preserve compatible
26
+ choices across source revisions and page widths; reject or explicitly report
27
+ orphaned targets. Reproduce edited views through Python SVG/PDF/PNG exports.
28
+ - Prepare style commands atomically, preserve selection and view state, and
29
+ prevent file/command/revision races. Add edited full-report visual comparisons,
30
+ failure cases, browser/Python agreement and installed-wheel checks.
31
+
32
+ - Add opt-in compiled execution to linked browser figures, preserving keyed
33
+ selection, filtering, saved states, revision policies and vector exports.
34
+ Pack contiguous circle runs without reordering paint, retain native SVG for
35
+ other marks, and intersect visibility masks with spatial candidates.
36
+ - Share the compiled viewer runtime with the linked report instead of duplicating
37
+ GPU execution. Retain immutable records during filtering and release surfaces
38
+ on revision replacement. Add a runnable regional report mode, complete-figure
39
+ display comparisons and state/revision/export regressions across backends.
40
+
41
+ - Build ordered marker candidates with a reusable bitmap instead of temporary
42
+ JavaScript result arrays and comparison sorting. Accept fully contained grid
43
+ cells without rechecking each footprint, preserving source paint order and
44
+ independently owned result arrays.
45
+ - Measure 250,000- and million-point index queries and browser submission.
46
+ The million-point zoom query falls from 5.253 to 0.629 ms in the standalone
47
+ study; tiny queries are slightly slower. Retained bitmap storage adds one bit
48
+ per row. Add word-boundary and query-result ownership regressions.
49
+
50
+ - Cull individual packed markers with a shared spatial index of full marker
51
+ footprints. Preserve source order, antialiasing margins and vector exports.
52
+ Canvas paints candidates; WebGL2 fetches immutable records using compact
53
+ row-index uploads. Report candidate counts, uploads and index storage.
54
+ - Add a 250,000-point stress recipe, brute-force and visual fidelity checks,
55
+ and separate submission/GPU timer studies. Canvas window submission improves
56
+ from 88.5 to 10.8 ms in the recorded workload; GPU draw time falls from 0.325
57
+ to 0.042 ms while CPU submission rises from 0.9 to 2.2 ms. Document memory costs.
58
+
59
+ - Size compiled-viewer surfaces around the visible region with a retained pan
60
+ margin; skip painting offscreen layers and reuse their immutable buffers on
61
+ return. Preserve native clipping, marker order and complete vector export.
62
+ - Keep deep-zoom resolution within the existing per-surface pixel limits. In
63
+ the five-panel RTX 5090 study, 8× zoom uses about 3.05 million backing pixels
64
+ instead of 20 million, and median WebGL submission falls from 49.0 to 13.8 ms.
65
+ Add normal/deep-zoom fidelity, visibility and re-entry checks with raw studies.
66
+
67
+ - Retain compiled-viewer backing surfaces across pans and small zoom changes,
68
+ repaint only when resolution changes, and shrink after large zoom-outs.
69
+ Read all SVG transforms before changing canvas dimensions. Preserve the
70
+ existing pixel budgets, native compositing, vector export and error fallback.
71
+ - Report surface paints, resizes, reuse and allocated pixel counts. Add hardware
72
+ before/after profiles and regressions for reuse, resolution growth, shrinking
73
+ and context loss. Warm small-zoom submission falls from 47.8 ms to 0.5 ms in
74
+ the measured five-panel RTX 5090 workload; startup and growth are excluded.
75
+
76
+ - Accelerate filled square, triangle, diamond and star marker batches in the
77
+ compiled-scene viewer. Preserve exact polygon geometry, per-point sizes and
78
+ colours, winding rules, paint order, clipping and vector SVG download.
79
+ - Add a five-panel interactive marker comparison and test complete composited
80
+ screenshots against SVG at two display resolutions, including concave
81
+ polygons. Self-intersections, open, outlined and curved markers stay native.
82
+ - Validate the five-panel viewer on an RTX 5090 Laptop GPU through WSL/D3D12.
83
+ Publish timings and display comparisons; Canvas remains faster for this
84
+ measured workload, so hardware availability is not presented as a speedup.
85
+
86
+ - Add `RenderScene.to_html()` for offline native-scene viewing, with instanced
87
+ WebGL2 circle layers, Canvas fallback and native SVG artwork in paint order.
88
+ Automatic selection avoids recognized software WebGL renderers. Report
89
+ backend decisions, context loss, display limits and buffer uploads.
90
+ - Keep packed source buffers shared and immutable across browser view changes;
91
+ reconstruct vector SVG from 64-bit records, including exact source indices.
92
+ - Add a complete interactive figure, shader/fallback/resource tests and native
93
+ export comparisons. Keyed-row interaction migration and broader GPU geometry
94
+ remain open; hardware performance is not inferred from software WebGL tests.
95
+
96
+ - Store dense vector scatter in immutable 36-byte marker records, preserving
97
+ source order, per-point size/colour, physical strokes and native vector output.
98
+ Series with at least 256 points use batches unless placement anchors or
99
+ broken axes require individual nodes. Dense point handles become batch
100
+ handles; source indices remain inspectable in buffers and SVG elements.
101
+ - Stream batches through SVG/PDF with bounded prototype caches, preserve
102
+ geometric clipping and painted windows, and retain batch geometry on revisions.
103
+ - Check packed palettes against colour keys and inspect individual marker
104
+ footprints for text overlaps, avoiding false collisions over empty cloud space.
105
+ - Add a 38,300-marker four-panel review, native-backend fidelity tests and
106
+ reproducible construction/export/memory measurements, including a separate
107
+ million-point construction test.
108
+
109
+ - Compile a shared native render scene for SVG, PDF and PNG, resolving styles,
110
+ transforms, clipping and compositing once. Retain it across document exports.
111
+ - Reuse unchanged scene nodes and geometry across revisions; share small shapes
112
+ and shaped labels by value, expose invalidation reasons and conservative
113
+ redraw coverage, and report render-compilation work separately from layout.
114
+ - Reject missing image and font resources before native export; SVG no longer
115
+ silently emits broken image links or substitutes an unavailable font file.
116
+ - Snapshot file-backed image bytes so completed figures survive source changes;
117
+ detect updated image inputs on subsequent document compilation and reject
118
+ exports using changed or missing font files.
119
+ - Add a complete six-panel scene/revision review and repeated-export benchmarks.
120
+ Browser/GPU execution and finer layout invalidation remain open.
121
+
3
122
  ## 4.0.0.dev2 — 2026-09-08
4
123
 
5
124
  Second development preview. Install explicitly with
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: inklet
3
- Version: 4.0.0.dev2
3
+ Version: 4.0.0.dev4
4
4
  Summary: Scientific figures with live data, measured layout, and consistent vector exports.
5
5
  Project-URL: Repository, https://github.com/Mapika/inklet
6
6
  Project-URL: Documentation, https://inklet.readthedocs.io/en/latest/
@@ -81,19 +81,16 @@ their signatures and report schemas may change.
81
81
 
82
82
  ## 4.0 development preview
83
83
 
84
- **4.0.0.dev2** adds curve-preserving clipping, painted windows, improved PDF
85
- compositing and hatching, alongside offline linked charts, maps, calibrated images, mesh fields,
86
- contours and streamlines, with saved selections and reproducible exports.
87
- It also includes date/UTC axes, facets, pandas/Polars adapters and shared
88
- plotting-quality improvements.
89
-
84
+ **4.0.0.dev4** fixes closed polar curves and shaded bands, and adds a visual
85
+ plot gallery with 22 runnable examples. It retains shared compiled rendering,
86
+ offline viewing, linked reports, and reproducible plot editing with undo/redo.
90
87
  ```sh
91
- python -m pip install "inklet==4.0.0.dev2"
88
+ python -m pip install "inklet==4.0.0.dev4"
92
89
  ```
93
90
 
94
91
  [Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
95
92
  [4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
96
- [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev2)
93
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev4)
97
94
 
98
95
  This is an opt-in development release. Experimental APIs and saved-state schemas
99
96
  may change; 3.1.0 remains the stable release. General browser editing,
@@ -31,19 +31,16 @@ their signatures and report schemas may change.
31
31
 
32
32
  ## 4.0 development preview
33
33
 
34
- **4.0.0.dev2** adds curve-preserving clipping, painted windows, improved PDF
35
- compositing and hatching, alongside offline linked charts, maps, calibrated images, mesh fields,
36
- contours and streamlines, with saved selections and reproducible exports.
37
- It also includes date/UTC axes, facets, pandas/Polars adapters and shared
38
- plotting-quality improvements.
39
-
34
+ **4.0.0.dev4** fixes closed polar curves and shaded bands, and adds a visual
35
+ plot gallery with 22 runnable examples. It retains shared compiled rendering,
36
+ offline viewing, linked reports, and reproducible plot editing with undo/redo.
40
37
  ```sh
41
- python -m pip install "inklet==4.0.0.dev2"
38
+ python -m pip install "inklet==4.0.0.dev4"
42
39
  ```
43
40
 
44
41
  [Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
45
42
  [4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
46
- [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev2)
43
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev4)
47
44
 
48
45
  This is an opt-in development release. Experimental APIs and saved-state schemas
49
46
  may change; 3.1.0 remains the stable release. General browser editing,
@@ -18,6 +18,23 @@ took before layout still resolves inside the finished figure.
18
18
 
19
19
  Declared format support; no renderer is selected implicitly.
20
20
 
21
+ #### `class RenderScene(root: 'SceneNode', bbox: 'Rect', stats: 'Mapping', changes: 'tuple[SceneChange, ...]', _nodes: 'Mapping', _resources: 'Mapping', _images: 'Mapping', _fonts: 'Mapping') -> None`
22
+
23
+ A compiled native scene shared by SVG, PDF and PNG exports.
24
+
25
+ * `walk()`
26
+ * `validate_fonts()`
27
+ * `sources_current()` -- Check external inputs when a document considers reusing a snapshot.
28
+ * `to_svg(**options)`
29
+ * `to_pdf(**options)`
30
+ * `to_png(**options)`
31
+ * `to_html(*, title='Inklet figure', backend='auto', **options)` -- Offline experimental viewer; WebGL2 filled markers, Canvas fallback, SVG art.
32
+ * `damage_bounds(previous: 'RenderScene')` -- Conservative old/new ink union for changed placements, in page mm.
33
+
34
+ #### `compile_scene(root: 'Diagram | RenderScene', *, previous: 'RenderScene | None' = None) -> 'RenderScene'`
35
+
36
+ Resolve a drawing for all native backends, reusing an optional revision.
37
+
21
38
  #### `blend(node, mode='multiply')`
22
39
 
23
40
  Blend an isolated group with the artwork behind it, natively in SVG/PDF.
@@ -1023,19 +1040,19 @@ One actionable finding. `where` is figure-space, in millimetres.
1023
1040
 
1024
1041
  Compact report. Returns a single string with no trailing newline.
1025
1042
 
1026
- #### `to_svg(root: 'Diagram', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'str'`
1043
+ #### `to_svg(root: 'Diagram | RenderScene', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'str'`
1027
1044
 
1028
1045
  Render a diagram tree to a self-contained SVG document.
1029
1046
 
1030
- #### `save_svg(root: 'Diagram', path: 'str', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'None'`
1047
+ #### `save_svg(root: 'Diagram | RenderScene', path: 'str', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'None'`
1031
1048
 
1032
1049
  Write `root` to `path` as SVG. `to_svg` is the same thing as a string.
1033
1050
 
1034
- #### `to_pdf(root: 'Diagram | Sequence[Diagram]', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compress: 'bool' = True, text: 'str' = 'outline') -> 'bytes'`
1051
+ #### `to_pdf(root: 'Diagram | RenderScene | Sequence[Diagram | RenderScene]', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compress: 'bool' = True, text: 'str' = 'outline') -> 'bytes'`
1035
1052
 
1036
1053
  Render one diagram tree, or a sequence of them, to a PDF document.
1037
1054
 
1038
- #### `save_pdf(root: 'Diagram | Sequence[Diagram]', path: 'str | Path', **kwargs) -> 'None'`
1055
+ #### `save_pdf(root: 'Diagram | RenderScene | Sequence[Diagram | RenderScene]', path: 'str | Path', **kwargs) -> 'None'`
1039
1056
 
1040
1057
  Write `root` to `path` as PDF. `to_pdf` is the same thing as bytes.
1041
1058
 
@@ -0,0 +1 @@
1
+ \caption{Five filled marker shapes with simulated observations. Each panel contains 2,500 points with varying sizes and two overlapping colour groups. The browser uses packed WebGL2 or Canvas layers; SVG and PDF retain vector markers. Marker order, transparency and panel clipping are shared by all modes. MIT, Mark Marosi.}