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