inklet 4.0.0.dev7__tar.gz → 4.0.0.dev9__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 (987) hide show
  1. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/.github/workflows/publish.yml +2 -2
  2. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/CHANGELOG.md +30 -0
  3. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/PKG-INFO +6 -6
  4. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/README.md +5 -5
  5. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/api.md +1 -1
  6. inklet-4.0.0.dev9/docs/assets/guides/layout-editor-gestures.png +0 -0
  7. inklet-4.0.0.dev9/docs/assets/guides/layout-editor.png +0 -0
  8. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/compatibility.md +1 -1
  9. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/composition-recipes.md +7 -4
  10. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/development-preview.md +50 -11
  11. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/installation.md +3 -3
  12. inklet-4.0.0.dev9/docs/layout-editor.md +170 -0
  13. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/layout-overrides.md +11 -6
  14. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/roadmap.md +7 -3
  15. inklet-4.0.0.dev9/examples/layout_editor.py +19 -0
  16. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/mkdocs.yml +1 -0
  17. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/pyproject.toml +1 -1
  18. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/__init__.py +1 -1
  19. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/composition.py +23 -6
  20. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/layout_overrides.py +12 -5
  21. inklet-4.0.0.dev9/src/inklet/experimental/layout_editor/__init__.py +275 -0
  22. inklet-4.0.0.dev9/src/inklet/experimental/layout_editor/gestures.js +63 -0
  23. inklet-4.0.0.dev9/src/inklet/experimental/layout_editor/page.html +48 -0
  24. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_docs_site.py +1 -1
  25. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_guides.py +1 -1
  26. inklet-4.0.0.dev9/tests/test_layout_editor.py +176 -0
  27. inklet-4.0.0.dev9/tests/test_layout_gestures.py +146 -0
  28. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/check_wheel.py +8 -0
  29. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_gallery.json +11 -0
  30. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/.gitattributes +0 -0
  31. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/.github/workflows/checks.yml +0 -0
  32. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/.gitignore +0 -0
  33. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/.readthedocs.yaml +0 -0
  34. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/CONTRACT.md +0 -0
  35. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/CONTRIBUTING.md +0 -0
  36. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/LICENSE +0 -0
  37. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/THIRD_PARTY_NOTICES.md +0 -0
  38. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/brand/inklet-icon.svg +0 -0
  39. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/brand/inklet-logo-dark.svg +0 -0
  40. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/brand/inklet-logo-mono.svg +0 -0
  41. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/brand/inklet-logo.svg +0 -0
  42. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/brand/inklet-wordmark.svg +0 -0
  43. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/examples/quickstart.pdf +0 -0
  44. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/examples/quickstart.png +0 -0
  45. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/examples/quickstart.svg +0 -0
  46. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/axes-and-scales-1.png +0 -0
  47. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/calibrated-volumes-3.png +0 -0
  48. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/channels-and-contours-1.png +0 -0
  49. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/composition-recipes-narrow.png +0 -0
  50. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/composition-recipes.html +0 -0
  51. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/composition-recipes.png +0 -0
  52. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-anchor.png +0 -0
  53. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-annotation.png +0 -0
  54. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
  55. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-branch.png +0 -0
  56. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-broken-axis.png +0 -0
  57. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-callout.png +0 -0
  58. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-clipping.png +0 -0
  59. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-creases.png +0 -0
  60. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-custom-key.png +0 -0
  61. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-cutout.png +0 -0
  62. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-dates.png +0 -0
  63. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-dense.png +0 -0
  64. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-elbows.png +0 -0
  65. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
  66. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-facets.png +0 -0
  67. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-fit-graph.png +0 -0
  68. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-flow-width.png +0 -0
  69. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-formula.png +0 -0
  70. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-graph.png +0 -0
  71. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-halo.png +0 -0
  72. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-heatmap.png +0 -0
  73. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-hole.png +0 -0
  74. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-inline-type.png +0 -0
  75. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-inset.png +0 -0
  76. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-labels.png +0 -0
  77. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-layers.png +0 -0
  78. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-letters.png +0 -0
  79. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-list.png +0 -0
  80. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-matrix.png +0 -0
  81. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-page-grid.png +0 -0
  82. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-polar.png +0 -0
  83. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-protein.png +0 -0
  84. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-routes.png +0 -0
  85. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
  86. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-scene.png +0 -0
  87. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-series-key.png +0 -0
  88. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-span.png +0 -0
  89. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
  90. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-swarm.png +0 -0
  91. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-text-path.png +0 -0
  92. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-toon.png +0 -0
  93. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-twin-axis.png +0 -0
  94. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
  95. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-violin.png +0 -0
  96. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
  97. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/data-1.png +0 -0
  98. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/data-3.png +0 -0
  99. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/dense-data-1.png +0 -0
  100. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/diagram-components-1.png +0 -0
  101. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/diagrams-1.png +0 -0
  102. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/layout-3.png +0 -0
  103. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/layout-restored.html +0 -0
  104. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/layout-restored.png +0 -0
  105. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/layout-revised.png +0 -0
  106. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/oblique-sections-2.png +0 -0
  107. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plot-composition-narrow.png +0 -0
  108. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plot-composition.html +0 -0
  109. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plot-composition.png +0 -0
  110. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plot-quality-after.png +0 -0
  111. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plot-quality-before.png +0 -0
  112. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-band.png +0 -0
  113. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-bars.png +0 -0
  114. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-boxplot.png +0 -0
  115. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-errorbars.png +0 -0
  116. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-fill-between.png +0 -0
  117. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-fill.png +0 -0
  118. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-grouped-bars.png +0 -0
  119. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-hist.png +0 -0
  120. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-horizontal-bars.png +0 -0
  121. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-line-errors.png +0 -0
  122. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-line.png +0 -0
  123. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-markers.png +0 -0
  124. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-matrix.png +0 -0
  125. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-polar-curve.png +0 -0
  126. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-rose.png +0 -0
  127. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-scatter.png +0 -0
  128. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-series.png +0 -0
  129. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-stackarea.png +0 -0
  130. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-stacked-bars.png +0 -0
  131. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-step.png +0 -0
  132. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-swarm.png +0 -0
  133. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plots-violin.png +0 -0
  134. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plotting-1.png +0 -0
  135. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/plotting-2.png +0 -0
  136. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/publication-plots-1.png +0 -0
  137. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/publication-plots-2.png +0 -0
  138. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/publication-plots-3.png +0 -0
  139. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/publication-plots-4.png +0 -0
  140. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/slabs-and-regions-1.png +0 -0
  141. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/three-images-1.png +0 -0
  142. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/guides/three-images-2.png +0 -0
  143. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/biology.json +0 -0
  144. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/clipping-after.json +0 -0
  145. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/clipping-before.json +0 -0
  146. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/clipping-caption.tex +0 -0
  147. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/clipping-lines-after.json +0 -0
  148. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/clipping-lines-before.json +0 -0
  149. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/comparison.json +0 -0
  150. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-marker-shapes-caption.tex +0 -0
  151. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-marker-shapes.html +0 -0
  152. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-markers-display.json +0 -0
  153. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-markers-hardware.json +0 -0
  154. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-scene-viewer.html +0 -0
  155. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-viewer-display.json +0 -0
  156. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-viewer-export.json +0 -0
  157. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compiled-viewer-study.json +0 -0
  158. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compositing-after.json +0 -0
  159. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compositing-before.json +0 -0
  160. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/compositing-caption.tex +0 -0
  161. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/dense-scatter-caption.tex +0 -0
  162. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/diagram-after.json +0 -0
  163. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/diagram-before.json +0 -0
  164. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
  165. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/engine-after.json +0 -0
  166. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/engine-before.json +0 -0
  167. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/engine-review-caption.tex +0 -0
  168. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/fluorescence-biology.json +0 -0
  169. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/general-plots-caption.tex +0 -0
  170. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/general-plots.json +0 -0
  171. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/hatch-after.json +0 -0
  172. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/hatch-before.json +0 -0
  173. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/hatch-caption.tex +0 -0
  174. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
  175. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/label-intensities-native.csv +0 -0
  176. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/label-intensities.json +0 -0
  177. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/lines-after.json +0 -0
  178. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/lines-before.json +0 -0
  179. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/marker-batches.json +0 -0
  180. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/marker-index-after.json +0 -0
  181. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/marker-index-before.json +0 -0
  182. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/marker-index-browser-after.json +0 -0
  183. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/marker-index-browser-before.json +0 -0
  184. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/oblique-biology.json +0 -0
  185. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
  186. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/real-biology.json +0 -0
  187. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/render-scene-caption.tex +0 -0
  188. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/revision.json +0 -0
  189. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/scenes-after.json +0 -0
  190. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/scenes-before.json +0 -0
  191. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/slab-biology.json +0 -0
  192. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/study.json +0 -0
  193. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-culling-after.json +0 -0
  194. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-culling-before.json +0 -0
  195. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-culling-gpu-after.json +0 -0
  196. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-culling-gpu-before.json +0 -0
  197. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-redraw-after.json +0 -0
  198. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-redraw-before.json +0 -0
  199. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-redraw-display.json +0 -0
  200. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-redraw-profile.json +0 -0
  201. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-window-after.json +0 -0
  202. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-window-before.json +0 -0
  203. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/research-preview/viewer-window-display.json +0 -0
  204. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/after.json +0 -0
  205. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/before.json +0 -0
  206. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/browser-quality.json +0 -0
  207. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/browser-scatter.html +0 -0
  208. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/browser-scatter.png +0 -0
  209. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/browser-study.json +0 -0
  210. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
  211. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/contours-streamlines-masked.png +0 -0
  212. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/contours-streamlines.html +0 -0
  213. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/contours-streamlines.png +0 -0
  214. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/engineering-report-170mm.png +0 -0
  215. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/engineering-report.html +0 -0
  216. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/engineering-report.png +0 -0
  217. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/faceted-operations.html +0 -0
  218. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/faceted-operations.png +0 -0
  219. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/linked-dashboard.html +0 -0
  220. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/linked-dashboard.png +0 -0
  221. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/linked-selection.html +0 -0
  222. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/linked-selection.png +0 -0
  223. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/mesh-fields-170mm.png +0 -0
  224. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/mesh-fields.html +0 -0
  225. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/mesh-fields.png +0 -0
  226. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/region-shapes.html +0 -0
  227. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/region-shapes.png +0 -0
  228. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/regional-analysis.html +0 -0
  229. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/regional-analysis.png +0 -0
  230. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/regional-report-160mm.png +0 -0
  231. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/regional-report.html +0 -0
  232. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/regional-report.png +0 -0
  233. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/scientific-report-170mm.png +0 -0
  234. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/scientific-report.html +0 -0
  235. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/scientific-report.png +0 -0
  236. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/statistical-views.html +0 -0
  237. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/statistical-views.png +0 -0
  238. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/table-inputs.html +0 -0
  239. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/table-inputs.png +0 -0
  240. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/time-series.html +0 -0
  241. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/time-series.png +0 -0
  242. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/transport-map.html +0 -0
  243. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/transport-map.png +0 -0
  244. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/visual-overrides.png +0 -0
  245. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population-2019.html +0 -0
  246. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population-2019.json +0 -0
  247. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population-2019.png +0 -0
  248. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population-revisions.html +0 -0
  249. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population-revisions.png +0 -0
  250. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population.html +0 -0
  251. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/assets/v4/world-population.png +0 -0
  252. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/axes-and-scales.md +0 -0
  253. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/bars-and-areas.md +0 -0
  254. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/biology-panels.md +0 -0
  255. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/blender-scenes.md +0 -0
  256. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/brand.md +0 -0
  257. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/browser-rendering.md +0 -0
  258. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/calibrated-volumes.md +0 -0
  259. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/channels-and-contours.md +0 -0
  260. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/cli.md +0 -0
  261. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/clipping.md +0 -0
  262. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/compiled-scenes.md +0 -0
  263. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/compiled-viewer.md +0 -0
  264. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/complex-scene.md +0 -0
  265. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/compositing.md +0 -0
  266. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/concepts.md +0 -0
  267. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/contours-streamlines.md +0 -0
  268. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/cookbook.md +0 -0
  269. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/data-revisions.md +0 -0
  270. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/data.md +0 -0
  271. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/dense-data.md +0 -0
  272. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/design/browser-backends.md +0 -0
  273. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/design/page_grid.md +0 -0
  274. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/design/v2.md +0 -0
  275. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/design/v4.md +0 -0
  276. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/diagram-components.md +0 -0
  277. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/diagram-engine.md +0 -0
  278. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/diagrams.md +0 -0
  279. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/distributions.md +0 -0
  280. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/engineering-report.md +0 -0
  281. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/example-library.md +0 -0
  282. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/examples.md +0 -0
  283. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/export-review.md +0 -0
  284. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/fluorescence-biology.md +0 -0
  285. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/general-plots.md +0 -0
  286. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/geographic-features.md +0 -0
  287. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/hatching.md +0 -0
  288. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/index.md +0 -0
  289. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/interactive-documents.md +0 -0
  290. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/javascripts/inklet.js +0 -0
  291. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/label-intensities.md +0 -0
  292. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/label-measurements.md +0 -0
  293. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/layout.md +0 -0
  294. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/lines-and-points.md +0 -0
  295. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/linked-facets.md +0 -0
  296. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/linked-maps.md +0 -0
  297. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/linked-plots.md +0 -0
  298. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/marker-batches.md +0 -0
  299. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/marker-culling.md +0 -0
  300. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/matrices.md +0 -0
  301. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/mesh-fields.md +0 -0
  302. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/microscopy-tiff.md +0 -0
  303. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/migration.md +0 -0
  304. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/oblique-biology.md +0 -0
  305. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/oblique-sections.md +0 -0
  306. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/plot-quality.md +0 -0
  307. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/plot-recipes.md +0 -0
  308. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/plot-types.md +0 -0
  309. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/plotting-engine.md +0 -0
  310. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/plotting.md +0 -0
  311. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/polar-plots.md +0 -0
  312. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/presets.md +0 -0
  313. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/publication-plots.md +0 -0
  314. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/quickstart.md +0 -0
  315. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/real-biology.md +0 -0
  316. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/architecture-sketch.md +0 -0
  317. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/architecture.md +0 -0
  318. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/attractor.md +0 -0
  319. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/helix.md +0 -0
  320. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/interference.md +0 -0
  321. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/lattice.md +0 -0
  322. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/photonics.md +0 -0
  323. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/recipes/wave-packets.md +0 -0
  324. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/regional-report.md +0 -0
  325. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/release-checks.md +0 -0
  326. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/render-jobs.md +0 -0
  327. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/rendering-engine.md +0 -0
  328. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/research-preview.md +0 -0
  329. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/research-revision.md +0 -0
  330. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/research-study.md +0 -0
  331. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/scene-annotations.md +0 -0
  332. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/scene-paths.md +0 -0
  333. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/scene-templates.md +0 -0
  334. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/scientific-report.md +0 -0
  335. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/showcase.md +0 -0
  336. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/slab-biology.md +0 -0
  337. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/slabs-and-regions.md +0 -0
  338. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/statistical-views.md +0 -0
  339. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/stress20.md +0 -0
  340. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/stylesheets/code.css +0 -0
  341. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/stylesheets/inklet.css +0 -0
  342. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/table-inputs.md +0 -0
  343. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/three-images.md +0 -0
  344. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/time-series.md +0 -0
  345. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/troubleshooting.md +0 -0
  346. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/uncertainty.md +0 -0
  347. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/v2.5.md +0 -0
  348. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/v2.md +0 -0
  349. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/v3.md +0 -0
  350. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/v4-foundations.md +0 -0
  351. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/visual-editing.md +0 -0
  352. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/docs/world-map.md +0 -0
  353. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/README.md +0 -0
  354. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/cells3d.lock.json +0 -0
  355. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/data.py +0 -0
  356. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/fluorescence.py +0 -0
  357. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/organelle.lock.json +0 -0
  358. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology/requirements.txt +0 -0
  359. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/biology_panels.py +0 -0
  360. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/blender/complex_lab_scene.py +0 -0
  361. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/blender/lab_scene.py +0 -0
  362. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/blender/occlusion_scene.py +0 -0
  363. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/blender/organelle_scene.py +0 -0
  364. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/blender/research_lab_views.py +0 -0
  365. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/broken_axis.py +0 -0
  366. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/clipping_review.py +0 -0
  367. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/compiled_marker_shapes.py +0 -0
  368. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/compiled_scene_viewer.py +0 -0
  369. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/compositing_review.py +0 -0
  370. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/composition_recipes.py +0 -0
  371. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/data/general-plots/benchmark.csv +0 -0
  372. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/data/general-plots/learning.csv +0 -0
  373. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/data/general-plots/revenue.csv +0 -0
  374. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/data/general-plots/sensor.csv +0 -0
  375. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/dense_scatter_review.py +0 -0
  376. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/diagram_review.py +0 -0
  377. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/engine_review.py +0 -0
  378. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/feature_flow.py +0 -0
  379. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/fluorescence_biology.py +0 -0
  380. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/gallery.py +0 -0
  381. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/general_plots.py +0 -0
  382. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/graph.py +0 -0
  383. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/hatch_review.py +0 -0
  384. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/hello_figure.py +0 -0
  385. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/label_intensities.py +0 -0
  386. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/oblique_biology.py +0 -0
  387. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/panels.py +0 -0
  388. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/plot_composition.py +0 -0
  389. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/plot_engine_review.py +0 -0
  390. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/plot_quality_review.py +0 -0
  391. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/polar.py +0 -0
  392. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/preset_formats.py +0 -0
  393. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/presets.py +0 -0
  394. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/real_biology.py +0 -0
  395. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/render_scene_review.py +0 -0
  396. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/render_smoke.py +0 -0
  397. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/research_figure_planner.py +0 -0
  398. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/research_planner_study.py +0 -0
  399. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/research_revision.py +0 -0
  400. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/showcase/README.md +0 -0
  401. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/showcase/assets.lock.json +0 -0
  402. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/showcase/blender_scenes.py +0 -0
  403. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/showcase/figures.py +0 -0
  404. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/slab_biology.py +0 -0
  405. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/state_machine.py +0 -0
  406. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/stress20.py +0 -0
  407. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v25_document.py +0 -0
  408. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v2_cases.py +0 -0
  409. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v2_document.py +0 -0
  410. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_complex_scene.py +0 -0
  411. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_render_jobs.py +0 -0
  412. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_rendering.py +0 -0
  413. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_scene_annotations.py +0 -0
  414. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_scene_passes.py +0 -0
  415. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_scene_paths.py +0 -0
  416. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v3_scene_templates.py +0 -0
  417. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/README.md +0 -0
  418. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/browser_scatter.py +0 -0
  419. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/contours_streamlines.py +0 -0
  420. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/data/world-countries.geojson +0 -0
  421. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/data/world-map-source.json +0 -0
  422. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/data/world-population.csv +0 -0
  423. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/engineering_report.py +0 -0
  424. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/faceted_operations.py +0 -0
  425. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/assembly.json +0 -0
  426. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/manifest.json +0 -0
  427. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/measurement.json +0 -0
  428. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/region-shapes.geojson +0 -0
  429. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/regions.csv +0 -0
  430. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/regions.geojson +0 -0
  431. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/fixtures/transport.geojson +0 -0
  432. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/linked_dashboard.py +0 -0
  433. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/linked_selection.html +0 -0
  434. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/linked_selection.py +0 -0
  435. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/mesh_fields.py +0 -0
  436. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/region_shapes.py +0 -0
  437. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/regional_analysis.py +0 -0
  438. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/regional_report.py +0 -0
  439. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/scientific_report.py +0 -0
  440. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/statistical_views.py +0 -0
  441. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/table_inputs.py +0 -0
  442. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/time_series.py +0 -0
  443. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/transport_map.py +0 -0
  444. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/examples/v4/world_population.py +0 -0
  445. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/annot.py +0 -0
  446. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/bio3d.py +0 -0
  447. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/cartoon.py +0 -0
  448. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/chem_data.py +0 -0
  449. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/chem_fingerprints.py +0 -0
  450. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/data/1m17-kinase.pdb +0 -0
  451. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/data/README.md +0 -0
  452. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/drug_discovery.py +0 -0
  453. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/mouse_brain_data.py +0 -0
  454. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/neural_activity.py +0 -0
  455. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/pdbfile.py +0 -0
  456. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/showcase_part.py +0 -0
  457. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/showcase_process.py +0 -0
  458. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/showcase_season.py +0 -0
  459. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/structure.py +0 -0
  460. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/structure_data.py +0 -0
  461. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/target.py +0 -0
  462. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/figures/trial.py +0 -0
  463. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/README.md +0 -0
  464. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/biology-panels.png +0 -0
  465. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/chem_fingerprints.png +0 -0
  466. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/clipping-review.png +0 -0
  467. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compiled-marker-shapes.png +0 -0
  468. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compiled-scene-viewer.png +0 -0
  469. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compiled-viewer-culling.png +0 -0
  470. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compiled-viewer-deep-zoom.png +0 -0
  471. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compositing-pdf-after.png +0 -0
  472. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compositing-pdf-before.png +0 -0
  473. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/compositing-review.png +0 -0
  474. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/dense-scatter-review.png +0 -0
  475. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/diagram-labels-after.png +0 -0
  476. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/diagram-labels-before.png +0 -0
  477. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/diagram-review.png +0 -0
  478. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/engine-review.png +0 -0
  479. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/engine-transparency-after.png +0 -0
  480. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/engine-transparency-before.png +0 -0
  481. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/flow.png +0 -0
  482. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/fluorescence-biology.png +0 -0
  483. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/general-plots-before.png +0 -0
  484. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/general-plots.png +0 -0
  485. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/hatch-pdf-after.png +0 -0
  486. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/hatch-pdf-before.png +0 -0
  487. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/hatch-review.png +0 -0
  488. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/hatch-svg-before.png +0 -0
  489. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/label-intensities.png +0 -0
  490. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/oblique-biology.png +0 -0
  491. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/part.png +0 -0
  492. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/plot-axis-after.png +0 -0
  493. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/plot-axis-before.png +0 -0
  494. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/plot-engine-review.png +0 -0
  495. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/plots.png +0 -0
  496. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/polar.png +0 -0
  497. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/preset-formats.png +0 -0
  498. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/presets.png +0 -0
  499. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/process.png +0 -0
  500. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/real-biology.png +0 -0
  501. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/render-scene-data.png +0 -0
  502. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/render-scene-initial.png +0 -0
  503. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/render-scene-review.png +0 -0
  504. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/research-crossing-revision.png +0 -0
  505. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/research-figure-planner.png +0 -0
  506. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/research-planner-study.png +0 -0
  507. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/research-revision.png +0 -0
  508. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/season.png +0 -0
  509. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-architecture-sketch.png +0 -0
  510. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-architecture.png +0 -0
  511. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-attractor.png +0 -0
  512. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-helix.png +0 -0
  513. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-interference.png +0 -0
  514. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-lattice.png +0 -0
  515. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-photonics.png +0 -0
  516. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/showcase-wave-packets.png +0 -0
  517. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/slab-biology.png +0 -0
  518. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/stress20.png +0 -0
  519. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/structure.png +0 -0
  520. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-complex-scene.png +0 -0
  521. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-render-jobs.png +0 -0
  522. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-rendering.png +0 -0
  523. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-scene-annotations.png +0 -0
  524. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-scene-passes.png +0 -0
  525. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-scene-paths.png +0 -0
  526. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/gallery/v3-scene-templates.png +0 -0
  527. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/requirements-ci.txt +0 -0
  528. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/requirements-docs.txt +0 -0
  529. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/requirements-tables.txt +0 -0
  530. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/scripts/bench_svg.py +0 -0
  531. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/scripts/rasterise.sh +0 -0
  532. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/scripts/sanity_typeset.py +0 -0
  533. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/__main__.py +0 -0
  534. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/__init__.py +0 -0
  535. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/asset.py +0 -0
  536. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/cache.py +0 -0
  537. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/cutout.py +0 -0
  538. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/deps.py +0 -0
  539. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/harmonise.py +0 -0
  540. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/lineart.py +0 -0
  541. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/mask.py +0 -0
  542. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/provenance.py +0 -0
  543. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/raster.py +0 -0
  544. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/sidecar.py +0 -0
  545. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/assets/silhouette.py +0 -0
  546. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/cli.py +0 -0
  547. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/components.py +0 -0
  548. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/__init__.py +0 -0
  549. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/batch.py +0 -0
  550. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/diagram.py +0 -0
  551. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/envelope.py +0 -0
  552. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/geom.py +0 -0
  553. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/prims.py +0 -0
  554. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/style.py +0 -0
  555. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/trace.py +0 -0
  556. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/core/units.py +0 -0
  557. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/__init__.py +0 -0
  558. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/abut.py +0 -0
  559. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/break_rules.py +0 -0
  560. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/color.py +0 -0
  561. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/cross.py +0 -0
  562. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/image.py +0 -0
  563. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/key_rules.py +0 -0
  564. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/link_rules.py +0 -0
  565. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/path_rules.py +0 -0
  566. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/plot_rules.py +0 -0
  567. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/report.py +0 -0
  568. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/rules.py +0 -0
  569. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/diagnostics/three_rules.py +0 -0
  570. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/__init__.py +0 -0
  571. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/compiler.py +0 -0
  572. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/data.py +0 -0
  573. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/data_io.py +0 -0
  574. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/module.py +0 -0
  575. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/presets.py +0 -0
  576. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/publication.py +0 -0
  577. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/document/spec.py +0 -0
  578. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/__init__.py +0 -0
  579. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/annotate.py +0 -0
  580. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/bezier_clip.py +0 -0
  581. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/clip.py +0 -0
  582. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/coords.py +0 -0
  583. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/path.py +0 -0
  584. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/place.py +0 -0
  585. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/draw/shapes.py +0 -0
  586. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/__init__.py +0 -0
  587. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/_table_adapters.py +0 -0
  588. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/__init__.py +0 -0
  589. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/compiled.js +0 -0
  590. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/compiled.py +0 -0
  591. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/drawings.py +0 -0
  592. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/editor.html +0 -0
  593. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/editor.js +0 -0
  594. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/fields.py +0 -0
  595. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/geography.py +0 -0
  596. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/grid.py +0 -0
  597. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/images.py +0 -0
  598. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/overrides.py +0 -0
  599. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/page.html +0 -0
  600. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/regions.py +0 -0
  601. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/runtime.js +0 -0
  602. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/series.py +0 -0
  603. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/browser/timeaxis.py +0 -0
  604. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/channels.py +0 -0
  605. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/contours.py +0 -0
  606. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/engineering.py +0 -0
  607. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/fields.py +0 -0
  608. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/figure_planner.py +0 -0
  609. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/grid.py +0 -0
  610. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/measurement.py +0 -0
  611. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/measurements.py +0 -0
  612. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/planner_geometry.py +0 -0
  613. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/regions.py +0 -0
  614. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/scene_viewer/__init__.py +0 -0
  615. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/scene_viewer/controls.js +0 -0
  616. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/scene_viewer/page.html +0 -0
  617. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/scene_viewer/runtime.js +0 -0
  618. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/scene_viewer/spatial.js +0 -0
  619. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/sections.py +0 -0
  620. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/selection.py +0 -0
  621. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/slabs.py +0 -0
  622. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/temporal.py +0 -0
  623. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/tiff.py +0 -0
  624. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/experimental/volume.py +0 -0
  625. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/figure.py +0 -0
  626. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/__init__.py +0 -0
  627. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/fit.py +0 -0
  628. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/flow.py +0 -0
  629. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/graph.py +0 -0
  630. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/graph_force.py +0 -0
  631. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/graph_layered.py +0 -0
  632. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/graph_tree.py +0 -0
  633. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/labels.py +0 -0
  634. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/layout/sankey.py +0 -0
  635. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/links/__init__.py +0 -0
  636. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/links/curves.py +0 -0
  637. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/links/link.py +0 -0
  638. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/__init__.py +0 -0
  639. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/axis.py +0 -0
  640. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/breaks.py +0 -0
  641. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/categories.py +0 -0
  642. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/facets.py +0 -0
  643. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/inset.py +0 -0
  644. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/key.py +0 -0
  645. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/marks.py +0 -0
  646. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/notes.py +0 -0
  647. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/panel.py +0 -0
  648. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/png.py +0 -0
  649. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/polar.py +0 -0
  650. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/ramp.py +0 -0
  651. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/raster.py +0 -0
  652. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/ribbon.py +0 -0
  653. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/scale.py +0 -0
  654. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/scatter_batch.py +0 -0
  655. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/scatter_raster.py +0 -0
  656. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/series.py +0 -0
  657. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/simplify.py +0 -0
  658. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/plot/timescale.py +0 -0
  659. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/__init__.py +0 -0
  660. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/analysis.py +0 -0
  661. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/bounds.py +0 -0
  662. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/brushes.py +0 -0
  663. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/bundle.py +0 -0
  664. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/composite.py +0 -0
  665. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/fontembed.py +0 -0
  666. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/glyphs.py +0 -0
  667. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/hatching.py +0 -0
  668. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/outline.py +0 -0
  669. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/paint.py +0 -0
  670. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/pathdata.py +0 -0
  671. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/pdf.py +0 -0
  672. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/pdftext.py +0 -0
  673. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/preview.py +0 -0
  674. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/raster.py +0 -0
  675. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/resources.py +0 -0
  676. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/review.py +0 -0
  677. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/revision.py +0 -0
  678. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/scene.py +0 -0
  679. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/render/svg.py +0 -0
  680. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/themes/__init__.py +0 -0
  681. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/themes/color.py +0 -0
  682. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/themes/palettes.py +0 -0
  683. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/themes/theme.py +0 -0
  684. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/__init__.py +0 -0
  685. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/api.py +0 -0
  686. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/backend.py +0 -0
  687. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/__init__.py +0 -0
  688. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/device_worker.py +0 -0
  689. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/discover.py +0 -0
  690. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/lineart.py +0 -0
  691. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/options.py +0 -0
  692. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/scene_worker.py +0 -0
  693. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/script.py +0 -0
  694. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/svgread.py +0 -0
  695. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/template_worker.py +0 -0
  696. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender/tracing.py +0 -0
  697. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/blender_backend.py +0 -0
  698. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/camera.py +0 -0
  699. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/deps.py +0 -0
  700. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/depth.py +0 -0
  701. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/devices.py +0 -0
  702. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/drill.py +0 -0
  703. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/edges.py +0 -0
  704. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/hlr.py +0 -0
  705. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/linalg.py +0 -0
  706. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/mesh.py +0 -0
  707. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/occlude.py +0 -0
  708. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/order.py +0 -0
  709. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/parse.py +0 -0
  710. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/place.py +0 -0
  711. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/protein.py +0 -0
  712. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/quality.py +0 -0
  713. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/render_jobs.py +0 -0
  714. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/scene_annotations.py +0 -0
  715. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/scene_pass.py +0 -0
  716. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/scene_projection.py +0 -0
  717. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/scenes.py +0 -0
  718. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/shade.py +0 -0
  719. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/solids.py +0 -0
  720. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/templates.json +0 -0
  721. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/three/templates.py +0 -0
  722. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/__init__.py +0 -0
  723. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/fonts.py +0 -0
  724. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/markup.py +0 -0
  725. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/onpath.py +0 -0
  726. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/outline.py +0 -0
  727. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/src/inklet/typeset/shaping.py +0 -0
  728. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/assets/mouse.inklet.json +0 -0
  729. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/assets/mouse.png +0 -0
  730. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/dense_graph.py +0 -0
  731. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/draw_probe.py +0 -0
  732. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/assets/sem.png +0 -0
  733. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/assets/tem.png +0 -0
  734. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/cell.py +0 -0
  735. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/common.py +0 -0
  736. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/data.py +0 -0
  737. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/imaging.py +0 -0
  738. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/kinetics.py +0 -0
  739. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/micrograph.py +0 -0
  740. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro/system.py +0 -0
  741. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/electro_figure.py +0 -0
  742. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/fidelity.py +0 -0
  743. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/flow.py +0 -0
  744. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/hard_figure.py +0 -0
  745. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/label_storm.py +0 -0
  746. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/mega_figure.py +0 -0
  747. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/meshes/README.md +0 -0
  748. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/meshes/brain-lh.obj +0 -0
  749. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/meshes/spot.obj +0 -0
  750. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/panels/apparatus.py +0 -0
  751. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/panels/graphs.py +0 -0
  752. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/panels/relations.py +0 -0
  753. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/panels/responses.py +0 -0
  754. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/panels/sections.py +0 -0
  755. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/probes.py +0 -0
  756. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/stress/three_figure.py +0 -0
  757. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_alignment_contract.py +0 -0
  758. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_annotate.py +0 -0
  759. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_annotate_letters.py +0 -0
  760. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_assets.py +0 -0
  761. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_assets_provenance.py +0 -0
  762. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_biology_source.py +0 -0
  763. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_blend_scene.py +0 -0
  764. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_compiled.py +0 -0
  765. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_facets.py +0 -0
  766. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_figure.py +0 -0
  767. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_geography.py +0 -0
  768. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_overrides.py +0 -0
  769. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_regions.py +0 -0
  770. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_revision.py +0 -0
  771. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_scatter.py +0 -0
  772. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_series.py +0 -0
  773. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_statistics.py +0 -0
  774. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_switching.py +0 -0
  775. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_browser_time.py +0 -0
  776. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_categories.py +0 -0
  777. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_channels_contours.py +0 -0
  778. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_chem_figure.py +0 -0
  779. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_cli.py +0 -0
  780. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_clip_engine.py +0 -0
  781. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_components.py +0 -0
  782. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_compositing_engine.py +0 -0
  783. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_composition_recipes.py +0 -0
  784. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_contrast_and_labels.py +0 -0
  785. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_cookbook.py +0 -0
  786. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_core.py +0 -0
  787. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_core_amendments.py +0 -0
  788. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_csv_input.py +0 -0
  789. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics.py +0 -0
  790. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_api.py +0 -0
  791. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_artwork.py +0 -0
  792. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_break_distorts.py +0 -0
  793. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_crossing.py +0 -0
  794. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_image_contrast.py +0 -0
  795. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_ink.py +0 -0
  796. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_keys.py +0 -0
  797. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_links.py +0 -0
  798. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_paths.py +0 -0
  799. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagnostics_plot_box.py +0 -0
  800. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_diagram_engine.py +0 -0
  801. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_docs.py +0 -0
  802. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_document.py +0 -0
  803. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_document_data.py +0 -0
  804. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_document_v25.py +0 -0
  805. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_draw_clip.py +0 -0
  806. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_draw_path.py +0 -0
  807. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_draw_place.py +0 -0
  808. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_draw_shapes.py +0 -0
  809. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_engine_layout.py +0 -0
  810. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_engine_rendering.py +0 -0
  811. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_engine_scatter.py +0 -0
  812. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_engineering_report.py +0 -0
  813. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_export_bundle.py +0 -0
  814. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_figure.py +0 -0
  815. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_figure_planner.py +0 -0
  816. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_fit.py +0 -0
  817. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_grid_fields.py +0 -0
  818. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_hatch_engine.py +0 -0
  819. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_label_measurements.py +0 -0
  820. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout.py +0 -0
  821. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout_graph.py +0 -0
  822. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout_graph_fit.py +0 -0
  823. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout_origin.py +0 -0
  824. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout_overrides.py +0 -0
  825. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_layout_sankey.py +0 -0
  826. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_links.py +0 -0
  827. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_links_avoid.py +0 -0
  828. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_links_shapes.py +0 -0
  829. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_marker_batches.py +0 -0
  830. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_mesh_fields.py +0 -0
  831. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_microscopy_tiff.py +0 -0
  832. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_neural_activity.py +0 -0
  833. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_output_contract.py +0 -0
  834. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_paint_program.py +0 -0
  835. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_place_labels.py +0 -0
  836. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_axis.py +0 -0
  837. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_broken_axis.py +0 -0
  838. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_clip.py +0 -0
  839. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_engine.py +0 -0
  840. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_facets.py +0 -0
  841. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_inset.py +0 -0
  842. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_key.py +0 -0
  843. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_labels.py +0 -0
  844. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_legend.py +0 -0
  845. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_marks.py +0 -0
  846. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_notes.py +0 -0
  847. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_polar.py +0 -0
  848. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_publication.py +0 -0
  849. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_quality_review.py +0 -0
  850. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_raster.py +0 -0
  851. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_recipes.py +0 -0
  852. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_ribbon.py +0 -0
  853. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_scale.py +0 -0
  854. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_swarm.py +0 -0
  855. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_plot_time.py +0 -0
  856. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_presets.py +0 -0
  857. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_publication_limits.py +0 -0
  858. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_regional_report.py +0 -0
  859. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_release_adversarial.py +0 -0
  860. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_devices.py +0 -0
  861. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_embed.py +0 -0
  862. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_glyphs.py +0 -0
  863. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_jobs.py +0 -0
  864. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_outline.py +0 -0
  865. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_pdf.py +0 -0
  866. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_pdf_text.py +0 -0
  867. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_quality.py +0 -0
  868. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_scene.py +0 -0
  869. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_style_fields.py +0 -0
  870. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_svg_perf.py +0 -0
  871. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_render_v3.py +0 -0
  872. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_review_v25.py +0 -0
  873. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_round4_plot.py +0 -0
  874. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_routing_avoid.py +0 -0
  875. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scatter_rendering.py +0 -0
  876. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_annotations.py +0 -0
  877. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_culling.py +0 -0
  878. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_pass.py +0 -0
  879. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_projection.py +0 -0
  880. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_templates.py +0 -0
  881. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scene_viewer.py +0 -0
  882. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_scientific_report.py +0 -0
  883. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_sections.py +0 -0
  884. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_shared_plot_margins.py +0 -0
  885. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_showcase_library.py +0 -0
  886. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_showcase_round3.py +0 -0
  887. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_slabs_regions.py +0 -0
  888. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_structure_figure.py +0 -0
  889. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_svg.py +0 -0
  890. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_table_adapters.py +0 -0
  891. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_target_pose.py +0 -0
  892. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_temporal_adapters.py +0 -0
  893. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_text_markup.py +0 -0
  894. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_text_on_path.py +0 -0
  895. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_theme_font_style.py +0 -0
  896. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_themes.py +0 -0
  897. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_anchor_pin.py +0 -0
  898. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_api.py +0 -0
  899. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_backend_blender.py +0 -0
  900. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_blender.py +0 -0
  901. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_depth_order.py +0 -0
  902. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_drill.py +0 -0
  903. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_hlr.py +0 -0
  904. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_mesh.py +0 -0
  905. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_order_vector.py +0 -0
  906. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_overlay.py +0 -0
  907. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_parse.py +0 -0
  908. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_patches.py +0 -0
  909. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_place.py +0 -0
  910. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_protein.py +0 -0
  911. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_ridges.py +0 -0
  912. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_sort.py +0 -0
  913. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_sort_budget.py +0 -0
  914. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_three_view.py +0 -0
  915. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_typeset.py +0 -0
  916. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_v4_selection.py +0 -0
  917. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_volume.py +0 -0
  918. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_watch_review.py +0 -0
  919. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/test_world_map_example.py +0 -0
  920. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/README.md +0 -0
  921. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/categories-pdf.png +0 -0
  922. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/categories-svg.png +0 -0
  923. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/components-pdf.png +0 -0
  924. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/components-svg.png +0 -0
  925. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/dense-pdf.png +0 -0
  926. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/dense-svg.png +0 -0
  927. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/fonts.json +0 -0
  928. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/inset-pdf.png +0 -0
  929. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/inset-svg.png +0 -0
  930. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/markers-pdf.png +0 -0
  931. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/markers-svg.png +0 -0
  932. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/renderers.json +0 -0
  933. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/type-opacity-pdf.png +0 -0
  934. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/type-opacity-svg.png +0 -0
  935. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
  936. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
  937. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-dense-pdf.png +0 -0
  938. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-dense-svg.png +0 -0
  939. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
  940. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
  941. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
  942. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
  943. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
  944. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
  945. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
  946. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v2-workflow-svg.png +0 -0
  947. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v25-document-pdf.png +0 -0
  948. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/baseline/v25-document-svg.png +0 -0
  949. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/fixtures.py +0 -0
  950. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tests/visual/v2-budgets.json +0 -0
  951. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_batches.py +0 -0
  952. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_clipping.py +0 -0
  953. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_diagrams.py +0 -0
  954. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_engine.py +0 -0
  955. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_lines.py +0 -0
  956. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_marker_index.mjs +0 -0
  957. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_scene_culling.js +0 -0
  958. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_scene_gpu.js +0 -0
  959. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_scene_redraw.js +0 -0
  960. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_scene_viewer.js +0 -0
  961. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_scene_zoom.js +0 -0
  962. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_v2.py +0 -0
  963. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/benchmark_v4.py +0 -0
  964. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/browser_study.js +0 -0
  965. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/check_render_wheel.py +0 -0
  966. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/dock_ligand.py +0 -0
  967. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_previews.json +0 -0
  968. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_previews.py +0 -0
  969. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_site.py +0 -0
  970. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/404.html +0 -0
  971. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/card.html +0 -0
  972. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/gallery.html +0 -0
  973. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/home.html +0 -0
  974. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/main.html +0 -0
  975. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/docs_theme/plot-gallery.html +0 -0
  976. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/gen_api.py +0 -0
  977. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/make_culling_review.py +0 -0
  978. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/plot_catalog.json +0 -0
  979. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/prepare_world_map.py +0 -0
  980. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/preset_gallery.py +0 -0
  981. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/profile_scene_redraw.js +0 -0
  982. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/showcase_gallery.py +0 -0
  983. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/stress20.py +0 -0
  984. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/strip_pdb.py +0 -0
  985. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/v3_showcase.py +0 -0
  986. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/v4-budgets.json +0 -0
  987. {inklet-4.0.0.dev7 → inklet-4.0.0.dev9}/tools/visual_check.py +0 -0
@@ -6,7 +6,7 @@ on:
6
6
  tag:
7
7
  description: Published GitHub release tag
8
8
  required: true
9
- default: v4.0.0.dev7
9
+ default: v4.0.0.dev9
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.dev7' >&2
46
+ echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev9' >&2
47
47
  exit 1
48
48
  }
49
49
  gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
@@ -2,6 +2,36 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.0.0.dev9 — 2026-09-12
6
+
7
+ Ninth development preview: mouse movement and proportional artwork scaling.
8
+ 3.1.0 remains the stable release.
9
+
10
+ - Add click/drag selection and movement, corner scale handles, containing-group
11
+ selection, keyboard nudges and cancellable pointer gestures to LayoutEditor.
12
+ - Map gestures through nested physical coordinate units and scales. Preserve
13
+ measured positions with folded offsets and keep the opposite scale corner fixed.
14
+ - Add explicit Composition child scale, preserving registered ports and scaling
15
+ complete artwork. Width/height fitting retains its separate layout semantics.
16
+ - Save scale in composition-layout schema 0.2; continue loading schema 0.1 files.
17
+ - Cover geometry, ports, all four corners, undo/reopen, nested transforms,
18
+ invalid gestures and browser/Python export agreement; update the editor guide.
19
+
20
+ ## 4.0.0.dev8 — 2026-09-12
21
+
22
+ Eighth development preview: local browser layout editing with Python compilation.
23
+ 3.1.0 remains the stable release.
24
+
25
+ - Add experimental LayoutEditor with a loopback browser inspector for named
26
+ composition placements and dimensions, using the real Python compiler for
27
+ previews and matching SVG/PDF exports.
28
+ - Add atomic edit/load/reset commands, bounded undo/redo, saved dev7 layout JSON,
29
+ and explicit source refresh with removed-target reconciliation.
30
+ - Preserve the last successful preview/history after errors, reject stale
31
+ revisions and exports, and keep shared nested definitions consistent.
32
+ - Add a runnable mixed-content editor, an illustrated guide, browser/HTTP tests,
33
+ concurrent-client checks and core-only installed-package coverage.
34
+
5
35
  ## 4.0.0.dev7 — 2026-09-12
6
36
 
7
37
  Seventh development preview: reproducible composition layout choices.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: inklet
3
- Version: 4.0.0.dev7
3
+ Version: 4.0.0.dev9
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,16 +81,16 @@ their signatures and report schemas may change.
81
81
 
82
82
  ## 4.0 development preview
83
83
 
84
- **4.0.0.dev7** adds saved layout choices for reusable compositions. Restore
85
- named placements and measured dimensions after data, label or content changes,
86
- with explicit reports for removed targets and independently editable recipes.
84
+ **4.0.0.dev9** adds mouse movement and proportional artwork scaling to the
85
+ local layout editor. Drag named objects and groups, use corner handles, undo
86
+ gestures, and save choices that reproduce through the Python compiler.
87
87
  ```sh
88
- python -m pip install "inklet==4.0.0.dev7"
88
+ python -m pip install "inklet==4.0.0.dev9"
89
89
  ```
90
90
 
91
91
  [Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
92
92
  [4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
93
- [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev7)
93
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev9)
94
94
 
95
95
  This is an opt-in development release. Experimental APIs and saved-state schemas
96
96
  may change; 3.1.0 remains the stable release. General browser editing,
@@ -31,16 +31,16 @@ their signatures and report schemas may change.
31
31
 
32
32
  ## 4.0 development preview
33
33
 
34
- **4.0.0.dev7** adds saved layout choices for reusable compositions. Restore
35
- named placements and measured dimensions after data, label or content changes,
36
- with explicit reports for removed targets and independently editable recipes.
34
+ **4.0.0.dev9** adds mouse movement and proportional artwork scaling to the
35
+ local layout editor. Drag named objects and groups, use corner handles, undo
36
+ gestures, and save choices that reproduce through the Python compiler.
37
37
  ```sh
38
- python -m pip install "inklet==4.0.0.dev7"
38
+ python -m pip install "inklet==4.0.0.dev9"
39
39
  ```
40
40
 
41
41
  [Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
42
42
  [4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
43
- [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev7)
43
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev9)
44
44
 
45
45
  This is an opt-in development release. Experimental APIs and saved-state schemas
46
46
  may change; 3.1.0 remains the stable release. General browser editing,
@@ -218,7 +218,7 @@ A figure assembled from named children and measured expressions.
218
218
 
219
219
  * `measure(name, dimension='width')` -- Reference a child's measured width or height, in composition units.
220
220
  * `point(name, anchor='center')` -- Reference a placed child's compass point or registered port.
221
- * `add(name, item, *, x=0, y=0, anchor=None, width=None, height=None)`
221
+ * `add(name, item, *, x=0, y=0, anchor=None, width=None, height=None, scale=1)`
222
222
  * `replace(name, item)` -- Replace a child while preserving its placement and dependent references.
223
223
  * `slot(name, **placement)` -- Declare a required content input with the same placement options as add().
224
224
  * `copy()` -- Copy nested compositions, plots, modules and component instructions.
@@ -48,7 +48,7 @@ Blender. Scene creation and rendering run Blender in a separate process.
48
48
  ### Development-preview table adapters
49
49
 
50
50
  The [pandas and Polars adapters](table-inputs.md) are included in the experimental
51
- [4.0.0.dev7 preview](development-preview.md), not in stable 3.1.0. Their `pandas` and `polars` extras are separate
51
+ [4.0.0.dev9 preview](development-preview.md), not in stable 3.1.0. Their `pandas` and `polars` extras are separate
52
52
  from core dependencies. The adapter CI jobs use Linux/Python 3.12 with pandas
53
53
  2.2.0 / Polars 1.0.0 and the versions pinned in `requirements-tables.txt`.
54
54
  Both paths check scalar/identity contracts and saved-state SVG reconstruction.
@@ -15,7 +15,7 @@ illustrative data and generated geometry.
15
15
 
16
16
  [Open the standalone figure viewer](assets/guides/composition-recipes.html).
17
17
  The viewer supports exploration; these placement and content edits are made
18
- in Python. Browser layout editing remains on the [roadmap](roadmap.md).
18
+ in Python or through the [local layout inspector](layout-editor.md) in dev8.
19
19
 
20
20
  ## Declare inputs and defaults
21
21
 
@@ -86,7 +86,9 @@ assert before.to_svg() == old_svg
86
86
  assert doc.compile() is after
87
87
  ```
88
88
 
89
- `place()` changes only placement fields: `x`, `y`, `anchor`, `width`, `height`.
89
+ `place()` changes placement fields: `x`, `y`, `anchor`, `width`, `height` and
90
+ `scale`. Explicit `scale` (dev9) uniformly scales complete artwork, including
91
+ text and strokes; it is separate from fitting a plot to a new width/height.
90
92
  Set `anchor`, `width` or `height` to `None` to restore their unspecified behavior.
91
93
  `replace()` replaces content and keeps its placement and named relationships.
92
94
  Dimension updates through `configure()` validate before mutation; expressions,
@@ -132,8 +134,9 @@ needs. The complete example rejects widths below 140 mm.
132
134
  Run `python examples/composition_recipes.py --render` from the checkout to
133
135
  produce the SVG/PDF/PNG comparisons, standalone HTML viewers, revised-data
134
136
  exports and build statistics in `out/composition-recipes/`. PNG requires the
135
- render extras. This is a Python recipe API; serialized project templates,
136
- asset manifests and browser layout overrides remain separate upcoming work.
137
+ render extras. This is a Python recipe API; serialized project templates
138
+ and asset manifests remain separate upcoming work. Saved layout choices and
139
+ the [local inspector](layout-editor.md) build on these recipes.
137
140
 
138
141
  In dev7, [save and restore layout choices](layout-overrides.md) separately from
139
142
  the recipe, preserving measured expressions and reporting removed targets.
@@ -1,6 +1,6 @@
1
- # Inklet 4.0.0.dev7
1
+ # Inklet 4.0.0.dev9
2
2
 
3
- The seventh 4.0 development release includes the linked plotting, mapping,
3
+ The ninth 4.0 development release includes the linked plotting, mapping,
4
4
  engineering and scientific workflows developed since 3.1.0. It is an installable
5
5
  snapshot for trying real examples and reporting problems. **3.1.0 remains the
6
6
  stable release.** The [4.0 roadmap](roadmap.md) still has open work.
@@ -8,7 +8,7 @@ stable release.** The [4.0 roadmap](roadmap.md) still has open work.
8
8
  ```sh
9
9
  python -m venv .venv
10
10
  source .venv/bin/activate
11
- python -m pip install "inklet==4.0.0.dev7"
11
+ python -m pip install "inklet==4.0.0.dev9"
12
12
  ```
13
13
 
14
14
  On Windows PowerShell, activate with `.venv\Scripts\Activate.ps1` instead.
@@ -19,9 +19,9 @@ stable releases; see its [installation documentation](https://pip.pypa.io/en/sta
19
19
  Optional extras can be installed with the same pin:
20
20
 
21
21
  ```sh
22
- python -m pip install "inklet[render,pandas,polars]==4.0.0.dev7"
22
+ python -m pip install "inklet[render,pandas,polars]==4.0.0.dev9"
23
23
  # Add calibrated volumes and TIFF workflows when needed:
24
- python -m pip install "inklet[volume,render]==4.0.0.dev7"
24
+ python -m pip install "inklet[volume,render]==4.0.0.dev9"
25
25
  ```
26
26
 
27
27
  The core preview needs no browser server, NumPy, pandas, Polars or Blender.
@@ -29,7 +29,46 @@ Opening the generated HTML requires a browser. PNG/PDF exports from browser
29
29
  figures use separate Chrome/Chromium and Pillow; native Diagram exports retain
30
30
  their existing requirements. See [installation](installation.md).
31
31
 
32
- ## Saved layout choices in dev7
32
+ ## Mouse movement and scaling in dev9
33
+
34
+ The [layout editor](layout-editor.md) now supports direct mouse movement and
35
+ proportional corner scaling of named objects and groups. Alt-click selects a
36
+ containing group, arrow keys nudge, and Escape cancels. A drag shows an outline;
37
+ release compiles the actual figure and updates dependent links.
38
+
39
+ Moves preserve measured positions by adding offsets. Scaling keeps the opposite
40
+ corner fixed, including inside scaled groups with different coordinate units.
41
+ Each completed edit participates in undo/redo and saved-layout reconstruction.
42
+ Uniform artwork scaling includes text and strokes; plot width/height controls
43
+ retain their separate typography-preserving layout behavior.
44
+
45
+ ![Mouse selection and proportional scaling in the local editor](assets/guides/layout-editor-gestures.png)
46
+
47
+ New layout files use schema 0.2 for explicit artwork scale. Dev7/dev8 schema 0.1
48
+ files still load. Named composition objects are editable; individual plot marks,
49
+ axis labels, connector segments and camera parameters remain outside this scope.
50
+
51
+ ## Local layout inspector retained from dev8
52
+
53
+ The [local layout editor](layout-editor.md) turns saved composition choices into
54
+ a browser workflow. Edit named placements and dimensions, preview the actual
55
+ Python-compiled figure, undo/redo changes, reopen layout JSON and download
56
+ matching SVG/PDF exports. The source recipe remains unchanged.
57
+
58
+ Failed edits retain the last successful preview and history. Explicit source
59
+ refresh reapplies choices after data/content changes, reports removed targets
60
+ and clears history. Revision checks prevent stale tabs from overwriting newer
61
+ edits or silently exporting a different preview. Shared nested definitions
62
+ remain consistent across repeated edits and resets.
63
+
64
+ ![The local browser layout inspector](assets/guides/layout-editor.png)
65
+
66
+ This inspector requires its local Python session. It covers composition layout;
67
+ label content, individual plot marks and cameras remain separate work.
68
+ The existing standalone viewers and linked-plot appearance editor retain their
69
+ current scope.
70
+
71
+ ## Saved layout choices retained from dev7
33
72
 
34
73
  [Layout overrides](layout-overrides.md) capture changed placements and page
35
74
  settings separately from the Python recipe. Versioned JSON uses named paths,
@@ -44,8 +83,8 @@ after measurements, geometry and labels change.
44
83
 
45
84
  ![Saved layout applied to revised content](assets/guides/layout-revised.png)
46
85
 
47
- These are Python authoring APIs. Browser layout editing, label/camera overrides,
48
- shared selection relationships and asset manifests remain open roadmap work.
86
+ The saved format covers layout decisions. Label/camera overrides, broader
87
+ selection relationships and asset manifests remain open roadmap work.
49
88
 
50
89
  ## Reusable compositions retained from dev6
51
90
 
@@ -63,8 +102,8 @@ cache invalidation and guide execution are covered by regression checks.
63
102
 
64
103
  ![A reusable report combining a live plot, 3D and a nested workflow](assets/guides/composition-recipes.png)
65
104
 
66
- Serialized project templates, asset manifests and browser layout editing remain
67
- open roadmap items. This release develops the shared Python composition API.
105
+ Serialized project templates and asset manifests remain open roadmap items.
106
+ The local inspector above builds on this shared Python composition API.
68
107
 
69
108
  ## Shared plotting and composition retained from dev5
70
109
 
@@ -142,7 +181,7 @@ The wheel contains the library. To obtain recipes and fixtures, use the matching
142
181
  release checkout or source archive:
143
182
 
144
183
  ```sh
145
- git clone --branch v4.0.0.dev7 https://github.com/Mapika/inklet.git
184
+ git clone --branch v4.0.0.dev9 https://github.com/Mapika/inklet.git
146
185
  cd inklet
147
186
  python -m pip install -e '.[render]'
148
187
  python examples/v4/regional_report.py --renderer compiled --editor --output out/regional
@@ -3,7 +3,7 @@
3
3
  Inklet requires Python 3.11 or later and an installed TrueType/OpenType font.
4
4
  The core Python dependencies are HarfBuzz bindings and fontTools.
5
5
 
6
- This page covers stable **Inklet 3.1** and the opt-in **4.0.0.dev7 preview**. See the
6
+ This page covers stable **Inklet 3.1** and the opt-in **4.0.0.dev9 preview**. See the
7
7
  [compatibility matrix](compatibility.md) for tested platforms and Blender versions.
8
8
 
9
9
  ## From PyPI
@@ -24,9 +24,9 @@ Activate the environment or prefix commands with `.venv/bin/` on Linux/macOS.
24
24
  ## 4.0 development preview
25
25
 
26
26
  ```sh
27
- python -m pip install "inklet==4.0.0.dev7"
27
+ python -m pip install "inklet==4.0.0.dev9"
28
28
  # Optional rendering and DataFrame adapters:
29
- python -m pip install "inklet[render,pandas,polars]==4.0.0.dev7"
29
+ python -m pip install "inklet[render,pandas,polars]==4.0.0.dev9"
30
30
  ```
31
31
 
32
32
  Use a separate virtual environment when trying the preview. Experimental APIs
@@ -0,0 +1,170 @@
1
+ # Local layout editor
2
+
3
+ Available since **4.0.0.dev8**, with mouse gestures in **4.0.0.dev9**, under `inklet.experimental.layout_editor`. Adjust
4
+ named placements and dimensions in a browser while Python recompiles the
5
+ actual composition. The preview and downloaded SVG/PDF come from the same
6
+ compiled figure, including plots, nested diagrams and native 3D content.
7
+
8
+ ![Mouse selection and proportional scaling handles on a native 3D object](assets/guides/layout-editor-gestures.png)
9
+
10
+ The [complete example](../examples/layout_editor.py) opens the reusable report
11
+ from [composition recipes](composition-recipes.md). From the checkout, run:
12
+
13
+ ```sh
14
+ python examples/layout_editor.py
15
+ ```
16
+
17
+ Open the local URL printed in the terminal. Keep that Python process running;
18
+ press Ctrl+C to stop it. This is a local editor, not a standalone HTML editing
19
+ file. Ordinary [figure viewers](compiled-viewer.md) remain available for
20
+ sharing a finished document without a Python process.
21
+
22
+ ## Start with your composition
23
+
24
+ ```python
25
+ import inklet as i
26
+ from inklet.experimental.layout_editor import LayoutEditor
27
+
28
+ recipe = i.composition(120, 75)
29
+ recipe.add('chart', i.plot_spec(x=(0, 2), y=(0, 4)).line([(0, 1), (1, 2), (2, 3)]).axes(),
30
+ x=13, y=8, anchor='area-nw', width=recipe.page_width - 26, height=30)
31
+ recipe.add('caption', i.module('Response'), x=13, y=55)
32
+ editor = LayoutEditor(recipe).start()
33
+ print(editor.url)
34
+ ```
35
+
36
+ In a notebook or interactive Python session, leave the editor running while you
37
+ open its URL. It listens only on the local computer. `start(port=...)` can
38
+ request a particular port; the default chooses an available one. The editor
39
+ retains the supplied recipe as its live source and edits independent copies.
40
+ It does not rewrite Python or modify the source recipe.
41
+
42
+ Pass `preset='scientific.general'` or another preset name to compile under that
43
+ preset. By default, the containing document follows the composition's physical
44
+ width and height, including its coordinate unit. Optional `width=` and
45
+ `height=` arguments fix the containing document's dimensions in millimetres;
46
+ those dimensions remain authoritative when the authored page size changes.
47
+
48
+ ## Move and scale with the mouse
49
+
50
+ Click a named object in the preview and drag it to move. Corner handles scale
51
+ its complete artwork proportionally, keeping the opposite corner fixed. This
52
+ works for plots, modules, text, images, native 3D components and nested
53
+ compositions. A dashed outline follows the pointer; release to compile the
54
+ result and update dependent links. Escape or a cancelled pointer gesture leaves
55
+ the figure unchanged. A simple click selects without making an edit.
56
+
57
+ Use Alt-click to select a containing group, or choose its path in **Content**.
58
+ Drag a selected group's outline to move the group. With the canvas focused,
59
+ arrow keys move the selected object by 1 mm in figure space; Shift changes that
60
+ to 10 mm. Mouse and pointer gestures use the same coordinates even inside
61
+ scaled groups or compositions with different coordinate units.
62
+
63
+ Each completed edit is one undo step. Movements add offsets to measured
64
+ positions instead of discarding their relationships. Repeated offsets are
65
+ combined, so a long editing session does not grow ever-deeper expressions.
66
+ Saved layout files retain movement and scaling for Python reconstruction.
67
+
68
+ **Scaling artwork also scales its text and strokes.** To resize a plot's data
69
+ region while retaining physical typography, use the width/height controls
70
+ below. The **Uniform scale** field gives an exact artwork scale factor; Reset
71
+ target restores the original factor and placement.
72
+
73
+ The selectable units are named composition children and groups. Individual
74
+ marks, ticks, axis labels and connector segments remain part of their owning
75
+ plot or diagram. Scaling and movement do not remove authored constraints or
76
+ top-fitting behavior; dependent content can reflow when the compiler rebuilds.
77
+
78
+ ## Edit and review
79
+
80
+ Choose a named path in **Content**, enter the fields you want to change, then
81
+ select **Apply layout**. Other fields retain their definitions.
82
+
83
+ - Child placement fields are X, Y, anchor, width, height and uniform scale. Numbers use the
84
+ containing composition's coordinate unit. For plots, width and height describe
85
+ the data region; changing them does not scale text or strokes.
86
+ - A field marked **Measured** still follows its layout expression. Entering a
87
+ number replaces that expression with a fixed value. **Reset target** restores
88
+ that target's source layout, including its measured expressions.
89
+ - Blank child width or height means to use the authored content size. A blank
90
+ anchor preserves the local coordinate frame. Composition size fields must
91
+ remain positive.
92
+ - Nested compositions also expose their authored dimensions, coordinate unit
93
+ and top-fitting option. Registered ports and measured links reflow when the
94
+ compiler rebuilds.
95
+
96
+ Failed layouts show an error beside the Apply controls. The last successful
97
+ preview, saved choices and undo history remain available. The inspector does
98
+ not automatically resolve overlap or add constraints: author the required
99
+ measured relationships and minimum sizes in the Python recipe.
100
+
101
+ **Undo** and **Redo** retain up to 100 successful layout edits. A new edit after
102
+ undo starts a new history branch. Shared nested definitions remain shared:
103
+ editing or resetting one occurrence affects the same definition wherever it
104
+ appears. Distinct placements of that shared content remain independently editable.
105
+
106
+ ## Save, reopen and export
107
+
108
+ **Save layout** downloads the versioned JSON described in
109
+ [saved layout choices](layout-overrides.md). **Open layout choices** loads that
110
+ same format. The file contains changed placements and dimensions, not the
111
+ source content, styles, assets or undo history. Keep it alongside the recipe.
112
+
113
+ **Download SVG** and **Download PDF** export the successful preview revision.
114
+ If another editor tab changes the session first, stale commands and export
115
+ links are rejected. Use **Reload editor** to obtain the current shared state.
116
+
117
+ The same operations are available in Python:
118
+
119
+ ```python
120
+ import json
121
+ from pathlib import Path
122
+
123
+ editor.command('edit', {'path': '/chart', 'placement': {'height': 35}})
124
+ editor.command('gesture', {'path': '/chart', 'dx': 2, 'dy': 1})
125
+ Path('layout-overrides.json').write_text(json.dumps(editor.overrides(), indent=2))
126
+ editor.figure.save('edited.svg', 'edited.pdf')
127
+ restored, report = recipe.with_layout_overrides(editor.overrides())
128
+ assert report['orphaned_targets'] == []
129
+ ```
130
+
131
+ `editor.figure` is the last successful compiled snapshot and supports the normal
132
+ [export APIs](export-review.md), including PNG when render dependencies are
133
+ installed. `overrides()` and `snapshot()` return independently owned data.
134
+ Programmatic `command()` accepts `gesture`, `edit`, `reset`, `load`, `undo`,
135
+ `redo` and `refresh`; an optional `revision=` rejects stale callers. A gesture
136
+ uses figure-space `dx`/`dy` in millimetres. Optional `factor` and `corner`
137
+ (`nw`, `ne`, `sw`, `se`) scale from the opposite corner.
138
+
139
+ ## Refresh changed source content
140
+
141
+ After updating a Dataset, module label or supplied component in the original
142
+ Python recipe, choose **Refresh source**. The editor reapplies saved layout
143
+ choices, recompiles and clears undo history. It does not watch or rerun Python
144
+ source files. Use a live Python session for source edits, or restart the example
145
+ and reopen its saved layout file after changing its script.
146
+
147
+ Removed named targets or measured references are reported as errors. The
148
+ **Refresh and discard removed targets** button appears after such a failure;
149
+ it explicitly discards incompatible entries and reports their paths. The last
150
+ successful figure remains visible until a refresh succeeds. Loading an
151
+ incompatible file also fails rather than silently dropping choices; reconcile
152
+ it explicitly through the Python [override API](layout-overrides.md) if needed.
153
+
154
+ ```python
155
+ recipe['caption'].configure('Updated source label')
156
+ editor.command('refresh')
157
+ assert not editor.snapshot()['undo']
158
+ editor.close()
159
+ ```
160
+
161
+ Closing the editor stops its server. Its compiled figure and saved choices
162
+ remain accessible in Python. The `with LayoutEditor(recipe) as editor:` form
163
+ starts and closes the server automatically; keep that context alive during
164
+ browser use.
165
+
166
+ The inspector edits named composition layout and artwork scale. Label content,
167
+ individual plot marks, camera controls, and file watching are not part of this interface.
168
+ The separate [linked-plot appearance editor](visual-editing.md) retains its
169
+ existing scope. Broader authoring and identity work remains on the
170
+ [4.0 roadmap](roadmap.md).
@@ -1,6 +1,6 @@
1
1
  # Save and restore layout choices
2
2
 
3
- Available in **4.0.0.dev7**. Save placement and dimension edits separately from
3
+ Available since **4.0.0.dev7**; uniform artwork scale is added in **dev9**. Save placement and dimension edits separately from
4
4
  a [composition recipe](composition-recipes.md), then restore those choices
5
5
  when its data, labels or content change. The saved JSON records only differences
6
6
  from a reference recipe. Unedited source decisions remain in control.
@@ -13,8 +13,8 @@ the edited SVG at both 180 and 150 mm. The [complete example](../examples/compos
13
13
  uses live illustrative data and generated geometry.
14
14
 
15
15
  [Open the restored figure viewer](assets/guides/layout-restored.html).
16
- The viewer supports zoom, pan and vector export; layout editing is currently
17
- through Python. This format is separate from the experimental linked-table
16
+ The viewer supports zoom, pan and vector export. Edit layouts through the
17
+ Python APIs below or the [local inspector](layout-editor.md) in dev8. This format is separate from the experimental linked-table
18
18
  [plot-style overrides](visual-editing.md).
19
19
 
20
20
  ## Capture changes against a reference
@@ -41,7 +41,7 @@ Path('layout.json').write_text(json.dumps(state, indent=2, allow_nan=False))
41
41
  ```
42
42
 
43
43
  `layout_overrides(reference)` captures changed `x`, `y`, `anchor`, `width` and
44
- `height` fields on children, plus `width`, `height`, `unit` and `fit_top` on
44
+ `height` and uniform `scale` fields on children, plus `width`, `height`, `unit` and `fit_top` on
45
45
  compositions. It visits nested compositions through their named children.
46
46
  Measured expressions remain expressions, so page resizing and dependent
47
47
  content measurements still work after reopening.
@@ -123,8 +123,10 @@ of 32 operations. Malformed files, nonfinite numbers, invalid properties and
123
123
  contradictory edits to a shared nested definition are rejected, including when
124
124
  `missing='drop'` is used.
125
125
 
126
- The schema identifier is `inklet.composition-layout/0.1`. Unknown schemas are
127
- rejected. The file is a JSON object with `schema` and `targets`; each target has
126
+ New files use `inklet.composition-layout/0.2`, which adds a positive uniform
127
+ artwork scale. The loader also accepts `inklet.composition-layout/0.1` files
128
+ from dev7/dev8; those cannot contain scale fields. Unknown schemas are rejected.
129
+ Upgrade older readers before opening a new 0.2 file. The file is a JSON object with `schema` and `targets`; each target has
128
130
  changed `placement` and/or `page` fields. It is a development-preview format,
129
131
  not a general Python object serializer or an asset manifest.
130
132
 
@@ -137,3 +139,6 @@ a revised module label. Run
137
139
  `python examples/composition_recipes.py --render --saved-layout` to generate
138
140
  the comparison files, `layout-overrides.json` and `layout-reconciliation.json`
139
141
  in `out/composition-recipes/`. PNG generation requires the render extras.
142
+
143
+ In dev8, the [local layout editor](layout-editor.md) provides browser controls,
144
+ undo/redo and Python-compiled previews using this saved format.
@@ -56,9 +56,13 @@ content inputs, independent instances, placement edits and nested attachment
56
56
  points in dev6, exercised by plots, diagrams and native 3D at two widths.
57
57
  Dev7 adds [saved layout overrides](layout-overrides.md) keyed by named paths,
58
58
  with measured expressions, independent restoration and explicit orphan reports.
59
- Serialized project templates, asset manifests, shared selection relationships
60
- and browser layout editing remain open. Subsequent work should connect these
61
- Python authoring contracts to direct editing and cross-content identity.
59
+ Dev8 adds a [local layout inspector](layout-editor.md) backed by Python
60
+ compilation, with saved choices, undo/redo and explicit source refresh.
61
+ Dev9 adds mouse movement, proportional artwork scaling and keyboard nudges
62
+ for named composition children, with preserved measured positions and saved
63
+ choices. Serialized project templates, asset manifests, shared selection
64
+ relationships, label/camera editing and finer-grained manipulation remain open. Subsequent work
65
+ should extend authoring and cross-content identity beyond this bounded inspector.
62
66
 
63
67
  ## Who this should serve
64
68
 
@@ -0,0 +1,19 @@
1
+ """Edit a mixed plot, diagram and native-3D composition in a local browser."""
2
+ import argparse
3
+ import threading
4
+ from composition_recipes import make_reports
5
+ from inklet.experimental.layout_editor import LayoutEditor
6
+
7
+
8
+ def main():
9
+ parser=argparse.ArgumentParser(description=__doc__)
10
+ parser.add_argument('--port',type=int,default=0,help='Local port; 0 chooses an available port')
11
+ args=parser.parse_args()
12
+ reports,_=make_reports()
13
+ with LayoutEditor(reports[0],preset='scientific.general').start(port=args.port) as editor:
14
+ print(f'Open {editor.url} — press Ctrl+C to stop.',flush=True)
15
+ try:threading.Event().wait()
16
+ except KeyboardInterrupt:pass
17
+
18
+
19
+ if __name__=='__main__':main()
@@ -64,6 +64,7 @@ nav:
64
64
  - Panel layout: layout.md
65
65
  - Reusable compositions: composition-recipes.md
66
66
  - Save layout choices: layout-overrides.md
67
+ - Local layout editor: layout-editor.md
67
68
  - Presets and styling: presets.md
68
69
  - Review and export: export-review.md
69
70
  - Interactive documents (preview):
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "inklet"
3
- version = "4.0.0.dev7"
3
+ version = "4.0.0.dev9"
4
4
  description = "Scientific figures with live data, measured layout, and consistent vector exports."
5
5
  readme = "README.md"
6
6
  authors = [{name = "Mark Marosi"}]
@@ -470,4 +470,4 @@ __all__ = [
470
470
  "mm", "pt", "COLUMN_SINGLE", "COLUMN_DOUBLE",
471
471
  ]
472
472
 
473
- __version__ = "4.0.0.dev7"
473
+ __version__ = "4.0.0.dev9"