inklet 4.0.0.dev9__tar.gz → 4.0.0.dev11__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 (994) hide show
  1. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/.github/workflows/publish.yml +2 -2
  2. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/CHANGELOG.md +32 -0
  3. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/PKG-INFO +6 -6
  4. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/README.md +5 -5
  5. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/api.md +2 -2
  6. inklet-4.0.0.dev11/docs/assets/guides/layout-editor-labels.png +0 -0
  7. inklet-4.0.0.dev11/docs/assets/guides/layout-editor-styles.png +0 -0
  8. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/development-preview.md +49 -10
  9. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/layout-editor.md +97 -6
  10. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/layout-overrides.md +43 -9
  11. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/roadmap.md +7 -2
  12. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/layout_editor.py +1 -0
  13. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/pyproject.toml +1 -1
  14. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/__init__.py +1 -1
  15. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/composition.py +8 -3
  16. inklet-4.0.0.dev11/src/inklet/document/label_overrides.py +91 -0
  17. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/layout_overrides.py +41 -7
  18. inklet-4.0.0.dev11/src/inklet/document/style_overrides.py +108 -0
  19. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/layout_editor/__init__.py +16 -10
  20. inklet-4.0.0.dev11/src/inklet/experimental/layout_editor/page.html +80 -0
  21. inklet-4.0.0.dev11/tests/test_label_overrides.py +187 -0
  22. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_gestures.py +2 -2
  23. inklet-4.0.0.dev11/tests/test_style_overrides.py +191 -0
  24. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/check_wheel.py +10 -1
  25. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_gallery.json +3 -3
  26. inklet-4.0.0.dev9/src/inklet/experimental/layout_editor/page.html +0 -48
  27. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/.gitattributes +0 -0
  28. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/.github/workflows/checks.yml +0 -0
  29. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/.gitignore +0 -0
  30. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/.readthedocs.yaml +0 -0
  31. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/CONTRACT.md +0 -0
  32. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/CONTRIBUTING.md +0 -0
  33. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/LICENSE +0 -0
  34. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/THIRD_PARTY_NOTICES.md +0 -0
  35. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/brand/inklet-icon.svg +0 -0
  36. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/brand/inklet-logo-dark.svg +0 -0
  37. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/brand/inklet-logo-mono.svg +0 -0
  38. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/brand/inklet-logo.svg +0 -0
  39. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/brand/inklet-wordmark.svg +0 -0
  40. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/examples/quickstart.pdf +0 -0
  41. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/examples/quickstart.png +0 -0
  42. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/examples/quickstart.svg +0 -0
  43. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/axes-and-scales-1.png +0 -0
  44. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/calibrated-volumes-3.png +0 -0
  45. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/channels-and-contours-1.png +0 -0
  46. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/composition-recipes-narrow.png +0 -0
  47. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/composition-recipes.html +0 -0
  48. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/composition-recipes.png +0 -0
  49. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-anchor.png +0 -0
  50. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-annotation.png +0 -0
  51. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
  52. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-branch.png +0 -0
  53. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-broken-axis.png +0 -0
  54. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-callout.png +0 -0
  55. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-clipping.png +0 -0
  56. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-creases.png +0 -0
  57. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-custom-key.png +0 -0
  58. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-cutout.png +0 -0
  59. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-dates.png +0 -0
  60. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-dense.png +0 -0
  61. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-elbows.png +0 -0
  62. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
  63. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-facets.png +0 -0
  64. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-fit-graph.png +0 -0
  65. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-flow-width.png +0 -0
  66. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-formula.png +0 -0
  67. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-graph.png +0 -0
  68. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-halo.png +0 -0
  69. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-heatmap.png +0 -0
  70. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-hole.png +0 -0
  71. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-inline-type.png +0 -0
  72. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-inset.png +0 -0
  73. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-labels.png +0 -0
  74. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-layers.png +0 -0
  75. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-letters.png +0 -0
  76. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-list.png +0 -0
  77. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-matrix.png +0 -0
  78. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-page-grid.png +0 -0
  79. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-polar.png +0 -0
  80. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-protein.png +0 -0
  81. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-routes.png +0 -0
  82. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
  83. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-scene.png +0 -0
  84. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-series-key.png +0 -0
  85. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-span.png +0 -0
  86. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
  87. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-swarm.png +0 -0
  88. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-text-path.png +0 -0
  89. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-toon.png +0 -0
  90. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-twin-axis.png +0 -0
  91. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
  92. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-violin.png +0 -0
  93. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
  94. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/data-1.png +0 -0
  95. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/data-3.png +0 -0
  96. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/dense-data-1.png +0 -0
  97. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/diagram-components-1.png +0 -0
  98. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/diagrams-1.png +0 -0
  99. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-3.png +0 -0
  100. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-editor-gestures.png +0 -0
  101. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-editor.png +0 -0
  102. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-restored.html +0 -0
  103. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-restored.png +0 -0
  104. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/layout-revised.png +0 -0
  105. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/oblique-sections-2.png +0 -0
  106. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plot-composition-narrow.png +0 -0
  107. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plot-composition.html +0 -0
  108. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plot-composition.png +0 -0
  109. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plot-quality-after.png +0 -0
  110. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plot-quality-before.png +0 -0
  111. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-band.png +0 -0
  112. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-bars.png +0 -0
  113. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-boxplot.png +0 -0
  114. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-errorbars.png +0 -0
  115. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-fill-between.png +0 -0
  116. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-fill.png +0 -0
  117. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-grouped-bars.png +0 -0
  118. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-hist.png +0 -0
  119. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-horizontal-bars.png +0 -0
  120. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-line-errors.png +0 -0
  121. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-line.png +0 -0
  122. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-markers.png +0 -0
  123. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-matrix.png +0 -0
  124. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-polar-curve.png +0 -0
  125. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-rose.png +0 -0
  126. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-scatter.png +0 -0
  127. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-series.png +0 -0
  128. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-stackarea.png +0 -0
  129. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-stacked-bars.png +0 -0
  130. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-step.png +0 -0
  131. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-swarm.png +0 -0
  132. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plots-violin.png +0 -0
  133. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plotting-1.png +0 -0
  134. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/plotting-2.png +0 -0
  135. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/publication-plots-1.png +0 -0
  136. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/publication-plots-2.png +0 -0
  137. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/publication-plots-3.png +0 -0
  138. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/publication-plots-4.png +0 -0
  139. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/slabs-and-regions-1.png +0 -0
  140. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/three-images-1.png +0 -0
  141. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/guides/three-images-2.png +0 -0
  142. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/biology.json +0 -0
  143. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/clipping-after.json +0 -0
  144. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/clipping-before.json +0 -0
  145. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/clipping-caption.tex +0 -0
  146. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/clipping-lines-after.json +0 -0
  147. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/clipping-lines-before.json +0 -0
  148. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/comparison.json +0 -0
  149. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-marker-shapes-caption.tex +0 -0
  150. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-marker-shapes.html +0 -0
  151. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-markers-display.json +0 -0
  152. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-markers-hardware.json +0 -0
  153. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-scene-viewer.html +0 -0
  154. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-viewer-display.json +0 -0
  155. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-viewer-export.json +0 -0
  156. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compiled-viewer-study.json +0 -0
  157. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compositing-after.json +0 -0
  158. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compositing-before.json +0 -0
  159. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/compositing-caption.tex +0 -0
  160. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/dense-scatter-caption.tex +0 -0
  161. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/diagram-after.json +0 -0
  162. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/diagram-before.json +0 -0
  163. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
  164. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/engine-after.json +0 -0
  165. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/engine-before.json +0 -0
  166. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/engine-review-caption.tex +0 -0
  167. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/fluorescence-biology.json +0 -0
  168. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/general-plots-caption.tex +0 -0
  169. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/general-plots.json +0 -0
  170. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/hatch-after.json +0 -0
  171. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/hatch-before.json +0 -0
  172. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/hatch-caption.tex +0 -0
  173. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
  174. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/label-intensities-native.csv +0 -0
  175. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/label-intensities.json +0 -0
  176. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/lines-after.json +0 -0
  177. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/lines-before.json +0 -0
  178. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/marker-batches.json +0 -0
  179. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/marker-index-after.json +0 -0
  180. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/marker-index-before.json +0 -0
  181. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/marker-index-browser-after.json +0 -0
  182. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/marker-index-browser-before.json +0 -0
  183. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/oblique-biology.json +0 -0
  184. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
  185. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/real-biology.json +0 -0
  186. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/render-scene-caption.tex +0 -0
  187. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/revision.json +0 -0
  188. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/scenes-after.json +0 -0
  189. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/scenes-before.json +0 -0
  190. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/slab-biology.json +0 -0
  191. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/study.json +0 -0
  192. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-culling-after.json +0 -0
  193. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-culling-before.json +0 -0
  194. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-culling-gpu-after.json +0 -0
  195. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-culling-gpu-before.json +0 -0
  196. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-redraw-after.json +0 -0
  197. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-redraw-before.json +0 -0
  198. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-redraw-display.json +0 -0
  199. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-redraw-profile.json +0 -0
  200. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-window-after.json +0 -0
  201. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-window-before.json +0 -0
  202. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/research-preview/viewer-window-display.json +0 -0
  203. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/after.json +0 -0
  204. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/before.json +0 -0
  205. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/browser-quality.json +0 -0
  206. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/browser-scatter.html +0 -0
  207. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/browser-scatter.png +0 -0
  208. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/browser-study.json +0 -0
  209. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
  210. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/contours-streamlines-masked.png +0 -0
  211. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/contours-streamlines.html +0 -0
  212. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/contours-streamlines.png +0 -0
  213. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/engineering-report-170mm.png +0 -0
  214. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/engineering-report.html +0 -0
  215. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/engineering-report.png +0 -0
  216. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/faceted-operations.html +0 -0
  217. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/faceted-operations.png +0 -0
  218. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/linked-dashboard.html +0 -0
  219. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/linked-dashboard.png +0 -0
  220. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/linked-selection.html +0 -0
  221. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/linked-selection.png +0 -0
  222. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/mesh-fields-170mm.png +0 -0
  223. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/mesh-fields.html +0 -0
  224. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/mesh-fields.png +0 -0
  225. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/region-shapes.html +0 -0
  226. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/region-shapes.png +0 -0
  227. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/regional-analysis.html +0 -0
  228. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/regional-analysis.png +0 -0
  229. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/regional-report-160mm.png +0 -0
  230. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/regional-report.html +0 -0
  231. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/regional-report.png +0 -0
  232. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/scientific-report-170mm.png +0 -0
  233. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/scientific-report.html +0 -0
  234. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/scientific-report.png +0 -0
  235. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/statistical-views.html +0 -0
  236. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/statistical-views.png +0 -0
  237. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/table-inputs.html +0 -0
  238. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/table-inputs.png +0 -0
  239. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/time-series.html +0 -0
  240. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/time-series.png +0 -0
  241. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/transport-map.html +0 -0
  242. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/transport-map.png +0 -0
  243. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/visual-overrides.png +0 -0
  244. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population-2019.html +0 -0
  245. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population-2019.json +0 -0
  246. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population-2019.png +0 -0
  247. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population-revisions.html +0 -0
  248. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population-revisions.png +0 -0
  249. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population.html +0 -0
  250. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/assets/v4/world-population.png +0 -0
  251. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/axes-and-scales.md +0 -0
  252. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/bars-and-areas.md +0 -0
  253. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/biology-panels.md +0 -0
  254. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/blender-scenes.md +0 -0
  255. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/brand.md +0 -0
  256. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/browser-rendering.md +0 -0
  257. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/calibrated-volumes.md +0 -0
  258. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/channels-and-contours.md +0 -0
  259. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/cli.md +0 -0
  260. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/clipping.md +0 -0
  261. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/compatibility.md +0 -0
  262. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/compiled-scenes.md +0 -0
  263. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/compiled-viewer.md +0 -0
  264. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/complex-scene.md +0 -0
  265. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/compositing.md +0 -0
  266. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/composition-recipes.md +0 -0
  267. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/concepts.md +0 -0
  268. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/contours-streamlines.md +0 -0
  269. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/cookbook.md +0 -0
  270. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/data-revisions.md +0 -0
  271. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/data.md +0 -0
  272. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/dense-data.md +0 -0
  273. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/design/browser-backends.md +0 -0
  274. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/design/page_grid.md +0 -0
  275. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/design/v2.md +0 -0
  276. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/design/v4.md +0 -0
  277. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/diagram-components.md +0 -0
  278. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/diagram-engine.md +0 -0
  279. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/diagrams.md +0 -0
  280. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/distributions.md +0 -0
  281. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/engineering-report.md +0 -0
  282. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/example-library.md +0 -0
  283. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/examples.md +0 -0
  284. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/export-review.md +0 -0
  285. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/fluorescence-biology.md +0 -0
  286. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/general-plots.md +0 -0
  287. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/geographic-features.md +0 -0
  288. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/hatching.md +0 -0
  289. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/index.md +0 -0
  290. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/installation.md +0 -0
  291. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/interactive-documents.md +0 -0
  292. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/javascripts/inklet.js +0 -0
  293. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/label-intensities.md +0 -0
  294. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/label-measurements.md +0 -0
  295. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/layout.md +0 -0
  296. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/lines-and-points.md +0 -0
  297. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/linked-facets.md +0 -0
  298. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/linked-maps.md +0 -0
  299. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/linked-plots.md +0 -0
  300. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/marker-batches.md +0 -0
  301. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/marker-culling.md +0 -0
  302. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/matrices.md +0 -0
  303. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/mesh-fields.md +0 -0
  304. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/microscopy-tiff.md +0 -0
  305. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/migration.md +0 -0
  306. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/oblique-biology.md +0 -0
  307. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/oblique-sections.md +0 -0
  308. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/plot-quality.md +0 -0
  309. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/plot-recipes.md +0 -0
  310. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/plot-types.md +0 -0
  311. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/plotting-engine.md +0 -0
  312. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/plotting.md +0 -0
  313. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/polar-plots.md +0 -0
  314. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/presets.md +0 -0
  315. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/publication-plots.md +0 -0
  316. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/quickstart.md +0 -0
  317. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/real-biology.md +0 -0
  318. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/architecture-sketch.md +0 -0
  319. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/architecture.md +0 -0
  320. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/attractor.md +0 -0
  321. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/helix.md +0 -0
  322. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/interference.md +0 -0
  323. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/lattice.md +0 -0
  324. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/photonics.md +0 -0
  325. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/recipes/wave-packets.md +0 -0
  326. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/regional-report.md +0 -0
  327. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/release-checks.md +0 -0
  328. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/render-jobs.md +0 -0
  329. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/rendering-engine.md +0 -0
  330. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/research-preview.md +0 -0
  331. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/research-revision.md +0 -0
  332. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/research-study.md +0 -0
  333. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/scene-annotations.md +0 -0
  334. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/scene-paths.md +0 -0
  335. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/scene-templates.md +0 -0
  336. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/scientific-report.md +0 -0
  337. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/showcase.md +0 -0
  338. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/slab-biology.md +0 -0
  339. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/slabs-and-regions.md +0 -0
  340. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/statistical-views.md +0 -0
  341. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/stress20.md +0 -0
  342. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/stylesheets/code.css +0 -0
  343. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/stylesheets/inklet.css +0 -0
  344. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/table-inputs.md +0 -0
  345. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/three-images.md +0 -0
  346. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/time-series.md +0 -0
  347. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/troubleshooting.md +0 -0
  348. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/uncertainty.md +0 -0
  349. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/v2.5.md +0 -0
  350. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/v2.md +0 -0
  351. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/v3.md +0 -0
  352. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/v4-foundations.md +0 -0
  353. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/visual-editing.md +0 -0
  354. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/docs/world-map.md +0 -0
  355. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/README.md +0 -0
  356. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/cells3d.lock.json +0 -0
  357. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/data.py +0 -0
  358. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/fluorescence.py +0 -0
  359. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/organelle.lock.json +0 -0
  360. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology/requirements.txt +0 -0
  361. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/biology_panels.py +0 -0
  362. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/blender/complex_lab_scene.py +0 -0
  363. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/blender/lab_scene.py +0 -0
  364. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/blender/occlusion_scene.py +0 -0
  365. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/blender/organelle_scene.py +0 -0
  366. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/blender/research_lab_views.py +0 -0
  367. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/broken_axis.py +0 -0
  368. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/clipping_review.py +0 -0
  369. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/compiled_marker_shapes.py +0 -0
  370. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/compiled_scene_viewer.py +0 -0
  371. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/compositing_review.py +0 -0
  372. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/composition_recipes.py +0 -0
  373. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/data/general-plots/benchmark.csv +0 -0
  374. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/data/general-plots/learning.csv +0 -0
  375. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/data/general-plots/revenue.csv +0 -0
  376. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/data/general-plots/sensor.csv +0 -0
  377. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/dense_scatter_review.py +0 -0
  378. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/diagram_review.py +0 -0
  379. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/engine_review.py +0 -0
  380. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/feature_flow.py +0 -0
  381. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/fluorescence_biology.py +0 -0
  382. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/gallery.py +0 -0
  383. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/general_plots.py +0 -0
  384. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/graph.py +0 -0
  385. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/hatch_review.py +0 -0
  386. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/hello_figure.py +0 -0
  387. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/label_intensities.py +0 -0
  388. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/oblique_biology.py +0 -0
  389. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/panels.py +0 -0
  390. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/plot_composition.py +0 -0
  391. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/plot_engine_review.py +0 -0
  392. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/plot_quality_review.py +0 -0
  393. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/polar.py +0 -0
  394. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/preset_formats.py +0 -0
  395. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/presets.py +0 -0
  396. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/real_biology.py +0 -0
  397. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/render_scene_review.py +0 -0
  398. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/render_smoke.py +0 -0
  399. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/research_figure_planner.py +0 -0
  400. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/research_planner_study.py +0 -0
  401. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/research_revision.py +0 -0
  402. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/showcase/README.md +0 -0
  403. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/showcase/assets.lock.json +0 -0
  404. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/showcase/blender_scenes.py +0 -0
  405. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/showcase/figures.py +0 -0
  406. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/slab_biology.py +0 -0
  407. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/state_machine.py +0 -0
  408. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/stress20.py +0 -0
  409. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v25_document.py +0 -0
  410. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v2_cases.py +0 -0
  411. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v2_document.py +0 -0
  412. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_complex_scene.py +0 -0
  413. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_render_jobs.py +0 -0
  414. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_rendering.py +0 -0
  415. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_scene_annotations.py +0 -0
  416. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_scene_passes.py +0 -0
  417. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_scene_paths.py +0 -0
  418. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v3_scene_templates.py +0 -0
  419. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/README.md +0 -0
  420. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/browser_scatter.py +0 -0
  421. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/contours_streamlines.py +0 -0
  422. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/data/world-countries.geojson +0 -0
  423. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/data/world-map-source.json +0 -0
  424. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/data/world-population.csv +0 -0
  425. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/engineering_report.py +0 -0
  426. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/faceted_operations.py +0 -0
  427. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/assembly.json +0 -0
  428. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/manifest.json +0 -0
  429. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/measurement.json +0 -0
  430. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/region-shapes.geojson +0 -0
  431. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/regions.csv +0 -0
  432. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/regions.geojson +0 -0
  433. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/fixtures/transport.geojson +0 -0
  434. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/linked_dashboard.py +0 -0
  435. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/linked_selection.html +0 -0
  436. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/linked_selection.py +0 -0
  437. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/mesh_fields.py +0 -0
  438. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/region_shapes.py +0 -0
  439. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/regional_analysis.py +0 -0
  440. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/regional_report.py +0 -0
  441. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/scientific_report.py +0 -0
  442. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/statistical_views.py +0 -0
  443. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/table_inputs.py +0 -0
  444. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/time_series.py +0 -0
  445. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/transport_map.py +0 -0
  446. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/examples/v4/world_population.py +0 -0
  447. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/annot.py +0 -0
  448. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/bio3d.py +0 -0
  449. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/cartoon.py +0 -0
  450. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/chem_data.py +0 -0
  451. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/chem_fingerprints.py +0 -0
  452. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/data/1m17-kinase.pdb +0 -0
  453. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/data/README.md +0 -0
  454. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/drug_discovery.py +0 -0
  455. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/mouse_brain_data.py +0 -0
  456. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/neural_activity.py +0 -0
  457. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/pdbfile.py +0 -0
  458. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/showcase_part.py +0 -0
  459. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/showcase_process.py +0 -0
  460. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/showcase_season.py +0 -0
  461. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/structure.py +0 -0
  462. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/structure_data.py +0 -0
  463. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/target.py +0 -0
  464. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/figures/trial.py +0 -0
  465. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/README.md +0 -0
  466. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/biology-panels.png +0 -0
  467. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/chem_fingerprints.png +0 -0
  468. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/clipping-review.png +0 -0
  469. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compiled-marker-shapes.png +0 -0
  470. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compiled-scene-viewer.png +0 -0
  471. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compiled-viewer-culling.png +0 -0
  472. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compiled-viewer-deep-zoom.png +0 -0
  473. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compositing-pdf-after.png +0 -0
  474. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compositing-pdf-before.png +0 -0
  475. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/compositing-review.png +0 -0
  476. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/dense-scatter-review.png +0 -0
  477. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/diagram-labels-after.png +0 -0
  478. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/diagram-labels-before.png +0 -0
  479. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/diagram-review.png +0 -0
  480. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/engine-review.png +0 -0
  481. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/engine-transparency-after.png +0 -0
  482. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/engine-transparency-before.png +0 -0
  483. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/flow.png +0 -0
  484. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/fluorescence-biology.png +0 -0
  485. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/general-plots-before.png +0 -0
  486. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/general-plots.png +0 -0
  487. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/hatch-pdf-after.png +0 -0
  488. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/hatch-pdf-before.png +0 -0
  489. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/hatch-review.png +0 -0
  490. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/hatch-svg-before.png +0 -0
  491. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/label-intensities.png +0 -0
  492. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/oblique-biology.png +0 -0
  493. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/part.png +0 -0
  494. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/plot-axis-after.png +0 -0
  495. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/plot-axis-before.png +0 -0
  496. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/plot-engine-review.png +0 -0
  497. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/plots.png +0 -0
  498. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/polar.png +0 -0
  499. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/preset-formats.png +0 -0
  500. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/presets.png +0 -0
  501. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/process.png +0 -0
  502. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/real-biology.png +0 -0
  503. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/render-scene-data.png +0 -0
  504. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/render-scene-initial.png +0 -0
  505. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/render-scene-review.png +0 -0
  506. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/research-crossing-revision.png +0 -0
  507. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/research-figure-planner.png +0 -0
  508. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/research-planner-study.png +0 -0
  509. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/research-revision.png +0 -0
  510. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/season.png +0 -0
  511. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-architecture-sketch.png +0 -0
  512. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-architecture.png +0 -0
  513. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-attractor.png +0 -0
  514. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-helix.png +0 -0
  515. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-interference.png +0 -0
  516. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-lattice.png +0 -0
  517. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-photonics.png +0 -0
  518. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/showcase-wave-packets.png +0 -0
  519. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/slab-biology.png +0 -0
  520. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/stress20.png +0 -0
  521. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/structure.png +0 -0
  522. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-complex-scene.png +0 -0
  523. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-render-jobs.png +0 -0
  524. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-rendering.png +0 -0
  525. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-scene-annotations.png +0 -0
  526. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-scene-passes.png +0 -0
  527. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-scene-paths.png +0 -0
  528. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/gallery/v3-scene-templates.png +0 -0
  529. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/mkdocs.yml +0 -0
  530. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/requirements-ci.txt +0 -0
  531. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/requirements-docs.txt +0 -0
  532. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/requirements-tables.txt +0 -0
  533. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/scripts/bench_svg.py +0 -0
  534. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/scripts/rasterise.sh +0 -0
  535. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/scripts/sanity_typeset.py +0 -0
  536. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/__main__.py +0 -0
  537. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/__init__.py +0 -0
  538. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/asset.py +0 -0
  539. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/cache.py +0 -0
  540. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/cutout.py +0 -0
  541. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/deps.py +0 -0
  542. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/harmonise.py +0 -0
  543. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/lineart.py +0 -0
  544. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/mask.py +0 -0
  545. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/provenance.py +0 -0
  546. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/raster.py +0 -0
  547. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/sidecar.py +0 -0
  548. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/assets/silhouette.py +0 -0
  549. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/cli.py +0 -0
  550. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/components.py +0 -0
  551. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/__init__.py +0 -0
  552. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/batch.py +0 -0
  553. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/diagram.py +0 -0
  554. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/envelope.py +0 -0
  555. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/geom.py +0 -0
  556. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/prims.py +0 -0
  557. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/style.py +0 -0
  558. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/trace.py +0 -0
  559. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/core/units.py +0 -0
  560. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/__init__.py +0 -0
  561. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/abut.py +0 -0
  562. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/break_rules.py +0 -0
  563. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/color.py +0 -0
  564. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/cross.py +0 -0
  565. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/image.py +0 -0
  566. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/key_rules.py +0 -0
  567. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/link_rules.py +0 -0
  568. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/path_rules.py +0 -0
  569. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/plot_rules.py +0 -0
  570. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/report.py +0 -0
  571. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/rules.py +0 -0
  572. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/diagnostics/three_rules.py +0 -0
  573. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/__init__.py +0 -0
  574. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/compiler.py +0 -0
  575. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/data.py +0 -0
  576. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/data_io.py +0 -0
  577. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/module.py +0 -0
  578. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/presets.py +0 -0
  579. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/publication.py +0 -0
  580. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/document/spec.py +0 -0
  581. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/__init__.py +0 -0
  582. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/annotate.py +0 -0
  583. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/bezier_clip.py +0 -0
  584. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/clip.py +0 -0
  585. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/coords.py +0 -0
  586. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/path.py +0 -0
  587. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/place.py +0 -0
  588. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/draw/shapes.py +0 -0
  589. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/__init__.py +0 -0
  590. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/_table_adapters.py +0 -0
  591. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/__init__.py +0 -0
  592. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/compiled.js +0 -0
  593. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/compiled.py +0 -0
  594. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/drawings.py +0 -0
  595. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/editor.html +0 -0
  596. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/editor.js +0 -0
  597. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/fields.py +0 -0
  598. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/geography.py +0 -0
  599. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/grid.py +0 -0
  600. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/images.py +0 -0
  601. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/overrides.py +0 -0
  602. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/page.html +0 -0
  603. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/regions.py +0 -0
  604. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/runtime.js +0 -0
  605. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/series.py +0 -0
  606. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/browser/timeaxis.py +0 -0
  607. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/channels.py +0 -0
  608. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/contours.py +0 -0
  609. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/engineering.py +0 -0
  610. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/fields.py +0 -0
  611. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/figure_planner.py +0 -0
  612. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/grid.py +0 -0
  613. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/layout_editor/gestures.js +0 -0
  614. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/measurement.py +0 -0
  615. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/measurements.py +0 -0
  616. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/planner_geometry.py +0 -0
  617. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/regions.py +0 -0
  618. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/scene_viewer/__init__.py +0 -0
  619. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/scene_viewer/controls.js +0 -0
  620. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/scene_viewer/page.html +0 -0
  621. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/scene_viewer/runtime.js +0 -0
  622. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/scene_viewer/spatial.js +0 -0
  623. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/sections.py +0 -0
  624. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/selection.py +0 -0
  625. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/slabs.py +0 -0
  626. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/temporal.py +0 -0
  627. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/tiff.py +0 -0
  628. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/experimental/volume.py +0 -0
  629. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/figure.py +0 -0
  630. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/__init__.py +0 -0
  631. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/fit.py +0 -0
  632. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/flow.py +0 -0
  633. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/graph.py +0 -0
  634. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/graph_force.py +0 -0
  635. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/graph_layered.py +0 -0
  636. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/graph_tree.py +0 -0
  637. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/labels.py +0 -0
  638. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/layout/sankey.py +0 -0
  639. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/links/__init__.py +0 -0
  640. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/links/curves.py +0 -0
  641. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/links/link.py +0 -0
  642. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/__init__.py +0 -0
  643. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/axis.py +0 -0
  644. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/breaks.py +0 -0
  645. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/categories.py +0 -0
  646. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/facets.py +0 -0
  647. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/inset.py +0 -0
  648. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/key.py +0 -0
  649. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/marks.py +0 -0
  650. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/notes.py +0 -0
  651. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/panel.py +0 -0
  652. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/png.py +0 -0
  653. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/polar.py +0 -0
  654. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/ramp.py +0 -0
  655. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/raster.py +0 -0
  656. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/ribbon.py +0 -0
  657. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/scale.py +0 -0
  658. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/scatter_batch.py +0 -0
  659. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/scatter_raster.py +0 -0
  660. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/series.py +0 -0
  661. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/simplify.py +0 -0
  662. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/plot/timescale.py +0 -0
  663. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/__init__.py +0 -0
  664. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/analysis.py +0 -0
  665. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/bounds.py +0 -0
  666. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/brushes.py +0 -0
  667. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/bundle.py +0 -0
  668. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/composite.py +0 -0
  669. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/fontembed.py +0 -0
  670. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/glyphs.py +0 -0
  671. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/hatching.py +0 -0
  672. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/outline.py +0 -0
  673. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/paint.py +0 -0
  674. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/pathdata.py +0 -0
  675. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/pdf.py +0 -0
  676. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/pdftext.py +0 -0
  677. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/preview.py +0 -0
  678. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/raster.py +0 -0
  679. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/resources.py +0 -0
  680. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/review.py +0 -0
  681. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/revision.py +0 -0
  682. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/scene.py +0 -0
  683. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/render/svg.py +0 -0
  684. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/themes/__init__.py +0 -0
  685. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/themes/color.py +0 -0
  686. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/themes/palettes.py +0 -0
  687. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/themes/theme.py +0 -0
  688. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/__init__.py +0 -0
  689. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/api.py +0 -0
  690. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/backend.py +0 -0
  691. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/__init__.py +0 -0
  692. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/device_worker.py +0 -0
  693. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/discover.py +0 -0
  694. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/lineart.py +0 -0
  695. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/options.py +0 -0
  696. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/scene_worker.py +0 -0
  697. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/script.py +0 -0
  698. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/svgread.py +0 -0
  699. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/template_worker.py +0 -0
  700. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender/tracing.py +0 -0
  701. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/blender_backend.py +0 -0
  702. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/camera.py +0 -0
  703. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/deps.py +0 -0
  704. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/depth.py +0 -0
  705. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/devices.py +0 -0
  706. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/drill.py +0 -0
  707. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/edges.py +0 -0
  708. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/hlr.py +0 -0
  709. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/linalg.py +0 -0
  710. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/mesh.py +0 -0
  711. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/occlude.py +0 -0
  712. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/order.py +0 -0
  713. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/parse.py +0 -0
  714. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/place.py +0 -0
  715. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/protein.py +0 -0
  716. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/quality.py +0 -0
  717. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/render_jobs.py +0 -0
  718. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/scene_annotations.py +0 -0
  719. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/scene_pass.py +0 -0
  720. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/scene_projection.py +0 -0
  721. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/scenes.py +0 -0
  722. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/shade.py +0 -0
  723. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/solids.py +0 -0
  724. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/templates.json +0 -0
  725. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/three/templates.py +0 -0
  726. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/__init__.py +0 -0
  727. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/fonts.py +0 -0
  728. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/markup.py +0 -0
  729. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/onpath.py +0 -0
  730. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/outline.py +0 -0
  731. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/src/inklet/typeset/shaping.py +0 -0
  732. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/assets/mouse.inklet.json +0 -0
  733. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/assets/mouse.png +0 -0
  734. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/dense_graph.py +0 -0
  735. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/draw_probe.py +0 -0
  736. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/assets/sem.png +0 -0
  737. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/assets/tem.png +0 -0
  738. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/cell.py +0 -0
  739. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/common.py +0 -0
  740. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/data.py +0 -0
  741. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/imaging.py +0 -0
  742. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/kinetics.py +0 -0
  743. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/micrograph.py +0 -0
  744. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro/system.py +0 -0
  745. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/electro_figure.py +0 -0
  746. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/fidelity.py +0 -0
  747. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/flow.py +0 -0
  748. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/hard_figure.py +0 -0
  749. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/label_storm.py +0 -0
  750. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/mega_figure.py +0 -0
  751. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/meshes/README.md +0 -0
  752. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/meshes/brain-lh.obj +0 -0
  753. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/meshes/spot.obj +0 -0
  754. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/panels/apparatus.py +0 -0
  755. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/panels/graphs.py +0 -0
  756. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/panels/relations.py +0 -0
  757. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/panels/responses.py +0 -0
  758. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/panels/sections.py +0 -0
  759. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/probes.py +0 -0
  760. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/stress/three_figure.py +0 -0
  761. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_alignment_contract.py +0 -0
  762. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_annotate.py +0 -0
  763. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_annotate_letters.py +0 -0
  764. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_assets.py +0 -0
  765. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_assets_provenance.py +0 -0
  766. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_biology_source.py +0 -0
  767. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_blend_scene.py +0 -0
  768. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_compiled.py +0 -0
  769. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_facets.py +0 -0
  770. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_figure.py +0 -0
  771. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_geography.py +0 -0
  772. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_overrides.py +0 -0
  773. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_regions.py +0 -0
  774. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_revision.py +0 -0
  775. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_scatter.py +0 -0
  776. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_series.py +0 -0
  777. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_statistics.py +0 -0
  778. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_switching.py +0 -0
  779. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_browser_time.py +0 -0
  780. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_categories.py +0 -0
  781. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_channels_contours.py +0 -0
  782. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_chem_figure.py +0 -0
  783. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_cli.py +0 -0
  784. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_clip_engine.py +0 -0
  785. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_components.py +0 -0
  786. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_compositing_engine.py +0 -0
  787. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_composition_recipes.py +0 -0
  788. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_contrast_and_labels.py +0 -0
  789. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_cookbook.py +0 -0
  790. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_core.py +0 -0
  791. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_core_amendments.py +0 -0
  792. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_csv_input.py +0 -0
  793. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics.py +0 -0
  794. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_api.py +0 -0
  795. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_artwork.py +0 -0
  796. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_break_distorts.py +0 -0
  797. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_crossing.py +0 -0
  798. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_image_contrast.py +0 -0
  799. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_ink.py +0 -0
  800. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_keys.py +0 -0
  801. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_links.py +0 -0
  802. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_paths.py +0 -0
  803. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagnostics_plot_box.py +0 -0
  804. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_diagram_engine.py +0 -0
  805. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_docs.py +0 -0
  806. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_docs_site.py +0 -0
  807. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_document.py +0 -0
  808. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_document_data.py +0 -0
  809. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_document_v25.py +0 -0
  810. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_draw_clip.py +0 -0
  811. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_draw_path.py +0 -0
  812. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_draw_place.py +0 -0
  813. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_draw_shapes.py +0 -0
  814. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_engine_layout.py +0 -0
  815. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_engine_rendering.py +0 -0
  816. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_engine_scatter.py +0 -0
  817. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_engineering_report.py +0 -0
  818. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_export_bundle.py +0 -0
  819. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_figure.py +0 -0
  820. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_figure_planner.py +0 -0
  821. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_fit.py +0 -0
  822. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_grid_fields.py +0 -0
  823. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_guides.py +0 -0
  824. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_hatch_engine.py +0 -0
  825. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_label_measurements.py +0 -0
  826. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout.py +0 -0
  827. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_editor.py +0 -0
  828. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_graph.py +0 -0
  829. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_graph_fit.py +0 -0
  830. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_origin.py +0 -0
  831. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_overrides.py +0 -0
  832. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_layout_sankey.py +0 -0
  833. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_links.py +0 -0
  834. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_links_avoid.py +0 -0
  835. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_links_shapes.py +0 -0
  836. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_marker_batches.py +0 -0
  837. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_mesh_fields.py +0 -0
  838. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_microscopy_tiff.py +0 -0
  839. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_neural_activity.py +0 -0
  840. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_output_contract.py +0 -0
  841. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_paint_program.py +0 -0
  842. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_place_labels.py +0 -0
  843. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_axis.py +0 -0
  844. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_broken_axis.py +0 -0
  845. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_clip.py +0 -0
  846. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_engine.py +0 -0
  847. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_facets.py +0 -0
  848. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_inset.py +0 -0
  849. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_key.py +0 -0
  850. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_labels.py +0 -0
  851. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_legend.py +0 -0
  852. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_marks.py +0 -0
  853. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_notes.py +0 -0
  854. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_polar.py +0 -0
  855. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_publication.py +0 -0
  856. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_quality_review.py +0 -0
  857. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_raster.py +0 -0
  858. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_recipes.py +0 -0
  859. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_ribbon.py +0 -0
  860. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_scale.py +0 -0
  861. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_swarm.py +0 -0
  862. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_plot_time.py +0 -0
  863. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_presets.py +0 -0
  864. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_publication_limits.py +0 -0
  865. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_regional_report.py +0 -0
  866. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_release_adversarial.py +0 -0
  867. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_devices.py +0 -0
  868. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_embed.py +0 -0
  869. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_glyphs.py +0 -0
  870. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_jobs.py +0 -0
  871. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_outline.py +0 -0
  872. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_pdf.py +0 -0
  873. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_pdf_text.py +0 -0
  874. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_quality.py +0 -0
  875. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_scene.py +0 -0
  876. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_style_fields.py +0 -0
  877. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_svg_perf.py +0 -0
  878. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_render_v3.py +0 -0
  879. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_review_v25.py +0 -0
  880. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_round4_plot.py +0 -0
  881. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_routing_avoid.py +0 -0
  882. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scatter_rendering.py +0 -0
  883. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_annotations.py +0 -0
  884. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_culling.py +0 -0
  885. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_pass.py +0 -0
  886. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_projection.py +0 -0
  887. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_templates.py +0 -0
  888. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scene_viewer.py +0 -0
  889. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_scientific_report.py +0 -0
  890. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_sections.py +0 -0
  891. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_shared_plot_margins.py +0 -0
  892. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_showcase_library.py +0 -0
  893. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_showcase_round3.py +0 -0
  894. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_slabs_regions.py +0 -0
  895. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_structure_figure.py +0 -0
  896. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_svg.py +0 -0
  897. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_table_adapters.py +0 -0
  898. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_target_pose.py +0 -0
  899. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_temporal_adapters.py +0 -0
  900. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_text_markup.py +0 -0
  901. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_text_on_path.py +0 -0
  902. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_theme_font_style.py +0 -0
  903. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_themes.py +0 -0
  904. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_anchor_pin.py +0 -0
  905. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_api.py +0 -0
  906. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_backend_blender.py +0 -0
  907. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_blender.py +0 -0
  908. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_depth_order.py +0 -0
  909. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_drill.py +0 -0
  910. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_hlr.py +0 -0
  911. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_mesh.py +0 -0
  912. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_order_vector.py +0 -0
  913. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_overlay.py +0 -0
  914. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_parse.py +0 -0
  915. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_patches.py +0 -0
  916. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_place.py +0 -0
  917. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_protein.py +0 -0
  918. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_ridges.py +0 -0
  919. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_sort.py +0 -0
  920. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_sort_budget.py +0 -0
  921. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_three_view.py +0 -0
  922. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_typeset.py +0 -0
  923. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_v4_selection.py +0 -0
  924. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_volume.py +0 -0
  925. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_watch_review.py +0 -0
  926. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/test_world_map_example.py +0 -0
  927. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/README.md +0 -0
  928. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/categories-pdf.png +0 -0
  929. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/categories-svg.png +0 -0
  930. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/components-pdf.png +0 -0
  931. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/components-svg.png +0 -0
  932. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/dense-pdf.png +0 -0
  933. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/dense-svg.png +0 -0
  934. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/fonts.json +0 -0
  935. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/inset-pdf.png +0 -0
  936. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/inset-svg.png +0 -0
  937. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/markers-pdf.png +0 -0
  938. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/markers-svg.png +0 -0
  939. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/renderers.json +0 -0
  940. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/type-opacity-pdf.png +0 -0
  941. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/type-opacity-svg.png +0 -0
  942. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
  943. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
  944. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-dense-pdf.png +0 -0
  945. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-dense-svg.png +0 -0
  946. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
  947. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
  948. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
  949. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
  950. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
  951. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
  952. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
  953. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v2-workflow-svg.png +0 -0
  954. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v25-document-pdf.png +0 -0
  955. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/baseline/v25-document-svg.png +0 -0
  956. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/fixtures.py +0 -0
  957. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tests/visual/v2-budgets.json +0 -0
  958. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_batches.py +0 -0
  959. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_clipping.py +0 -0
  960. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_diagrams.py +0 -0
  961. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_engine.py +0 -0
  962. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_lines.py +0 -0
  963. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_marker_index.mjs +0 -0
  964. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_scene_culling.js +0 -0
  965. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_scene_gpu.js +0 -0
  966. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_scene_redraw.js +0 -0
  967. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_scene_viewer.js +0 -0
  968. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_scene_zoom.js +0 -0
  969. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_v2.py +0 -0
  970. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/benchmark_v4.py +0 -0
  971. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/browser_study.js +0 -0
  972. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/check_render_wheel.py +0 -0
  973. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/dock_ligand.py +0 -0
  974. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_previews.json +0 -0
  975. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_previews.py +0 -0
  976. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_site.py +0 -0
  977. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/404.html +0 -0
  978. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/card.html +0 -0
  979. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/gallery.html +0 -0
  980. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/home.html +0 -0
  981. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/main.html +0 -0
  982. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/docs_theme/plot-gallery.html +0 -0
  983. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/gen_api.py +0 -0
  984. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/make_culling_review.py +0 -0
  985. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/plot_catalog.json +0 -0
  986. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/prepare_world_map.py +0 -0
  987. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/preset_gallery.py +0 -0
  988. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/profile_scene_redraw.js +0 -0
  989. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/showcase_gallery.py +0 -0
  990. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/stress20.py +0 -0
  991. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/strip_pdb.py +0 -0
  992. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/v3_showcase.py +0 -0
  993. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/tools/v4-budgets.json +0 -0
  994. {inklet-4.0.0.dev9 → inklet-4.0.0.dev11}/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.dev9
9
+ default: v4.0.0.dev11
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.dev9' >&2
46
+ echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev11' >&2
47
47
  exit 1
48
48
  }
49
49
  gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
@@ -2,6 +2,38 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 4.0.0.dev11 — 2026-09-12
6
+
7
+ Eleventh development preview: unified composition layout, labels and appearance.
8
+ 3.1.0 remains the stable release.
9
+
10
+ - Add supported keyed line/marker styles, text/callout appearance and module box
11
+ styles to the local composition editor, using the same Python compiler.
12
+ - Organize controls into Layout, Labels and Styles. Apply changes across sections
13
+ as one atomic edit with shared undo/redo, reset and saved-state reconstruction.
14
+ - Save typed named appearance decisions in schema 0.4, accepting legacy 0.1–0.3
15
+ files. Explicit null style fields remove authored keywords for automatic styling.
16
+ - Preserve data-driven marker sizes and colours; report incompatible style targets
17
+ after source revisions while retaining compatible label/layout edits on discard.
18
+ - Cover combined browser edits, two-width SVG/PDF agreement, inherited styles,
19
+ text remeasurement, live data and alias reconciliation; update illustrated docs.
20
+
21
+ ## 4.0.0.dev10 — 2026-09-12
22
+
23
+ Tenth development preview: reproducible named label and callout editing.
24
+ 3.1.0 remains the stable release.
25
+
26
+ - Edit string module captions, text components, keyed plot titles/text/callouts
27
+ and named composition annotations in the local layout editor.
28
+ - Expose callout text, preferred side, physical clearance and leader visibility;
29
+ remeasure content and dependent connections through the Python compiler.
30
+ - Save typed label identities and changed fields in layout schema 0.3, accepting
31
+ legacy 0.1/0.2 files, undo/redo, independent copies and shared definitions.
32
+ - Report removed or incompatible labels individually; explicit discard preserves
33
+ compatible edits on the same object. Leave unedited source decisions live.
34
+ - Add browser controls, source revision and two-width SVG/PDF roundtrip checks,
35
+ installed-package coverage and an illustrated guide and example.
36
+
5
37
  ## 4.0.0.dev9 — 2026-09-12
6
38
 
7
39
  Ninth development preview: mouse movement and proportional artwork scaling.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: inklet
3
- Version: 4.0.0.dev9
3
+ Version: 4.0.0.dev11
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.dev9** adds mouse movement and proportional artwork scaling to the
85
- local layout editor. Drag named objects and groups, use corner handles, undo
86
- gestures, and save choices that reproduce through the Python compiler.
84
+ **4.0.0.dev11** connects layout, label and appearance editing in the local
85
+ composition editor. Adjust supported plot, text and module styles alongside
86
+ layout, undo changes together, and save choices that reproduce through Python.
87
87
  ```sh
88
- python -m pip install "inklet==4.0.0.dev9"
88
+ python -m pip install "inklet==4.0.0.dev11"
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.dev9)
93
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev11)
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.dev9** adds mouse movement and proportional artwork scaling to the
35
- local layout editor. Drag named objects and groups, use corner handles, undo
36
- gestures, and save choices that reproduce through the Python compiler.
34
+ **4.0.0.dev11** connects layout, label and appearance editing in the local
35
+ composition editor. Adjust supported plot, text and module styles alongside
36
+ layout, undo changes together, and save choices that reproduce through Python.
37
37
  ```sh
38
- python -m pip install "inklet==4.0.0.dev9"
38
+ python -m pip install "inklet==4.0.0.dev11"
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.dev9)
43
+ [Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev11)
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,
@@ -225,12 +225,12 @@ A figure assembled from named children and measured expressions.
225
225
  * `instantiate(**items)` -- Create an independent recipe, filling required slots and replacing defaults.
226
226
  * `configure(*, width=None, height=None, unit=None, fit_top=None)` -- Atomically update authored page dimensions or coordinate units.
227
227
  * `place(name, **placement)` -- Edit a child's placement without replacing its content or named links.
228
- * `layout_overrides(reference)` -- Capture changed placements and page fields against a matching reference.
228
+ * `layout_overrides(reference)` -- Capture changed layout, named labels and supported styles against a reference.
229
229
  * `with_layout_overrides(value, *, missing='error')` -- Return an independent edited recipe and a reconciliation report.
230
230
  * `port(name, target)` -- Expose a child's name:anchor as a reusable composition attachment point.
231
231
  * `constrain(value, *, minimum=0, message='composition needs more space')` -- Require an expression to meet a minimum; fail before drawing.
232
232
  * `link(source, target, **options)` -- Route a branch or return between named children (`name:port`).
233
- * `annotate(target, text, **options)` -- Place a measured callout after every child and connection exists.
233
+ * `annotate(target, text, **options)` -- Place a measured callout; a unique name enables saved label editing.
234
234
  * `signature(trail=())`
235
235
  * `render(context, width=None, height=None)`
236
236
 
@@ -1,6 +1,6 @@
1
- # Inklet 4.0.0.dev9
1
+ # Inklet 4.0.0.dev11
2
2
 
3
- The ninth 4.0 development release includes the linked plotting, mapping,
3
+ The eleventh 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.dev9"
11
+ python -m pip install "inklet==4.0.0.dev11"
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.dev9"
22
+ python -m pip install "inklet[render,pandas,polars]==4.0.0.dev11"
23
23
  # Add calibrated volumes and TIFF workflows when needed:
24
- python -m pip install "inklet[volume,render]==4.0.0.dev9"
24
+ python -m pip install "inklet[volume,render]==4.0.0.dev11"
25
25
  ```
26
26
 
27
27
  The core preview needs no browser server, NumPy, pandas, Polars or Blender.
@@ -29,7 +29,46 @@ Opening the generated HTML requires a browser. PNG/PDF exports from browser
29
29
  figures use separate Chrome/Chromium and Pillow; native Diagram exports retain
30
30
  their existing requirements. See [installation](installation.md).
31
31
 
32
- ## Mouse movement and scaling in dev9
32
+ ## Unified composition authoring in dev11
33
+
34
+ The [composition editor](layout-editor.md#edit-appearance-alongside-layout) now
35
+ combines Layout, Labels and Styles sections. Pending changes across sections
36
+ compile together as one undo step, with one saved file and matching SVG/PDF
37
+ exports. Supported appearance controls cover keyed lines and markers, text and
38
+ callouts, and module boxes. Text sizes remeasure dependent layout and ports.
39
+
40
+ ![Named plot styles in the composition editor](assets/guides/layout-editor-styles.png)
41
+
42
+ Only constant marker colours and diameters are editable; data-driven fields
43
+ remain attached to their sources. A source revision that changes an edited
44
+ constant into a data mapping reports an incompatible style target. Explicit
45
+ discard retains compatible layout and labels on the same object.
46
+
47
+ Schema 0.4 adds typed named style decisions and explicit removal of style
48
+ keywords. Schemas 0.1, 0.2 and 0.3 still load. The separate linked-table editor
49
+ keeps its own format; arbitrary paint editing and general cross-content object
50
+ relationships remain open.
51
+
52
+ ## Named labels and callouts retained from dev10
53
+
54
+ The [local layout editor](layout-editor.md#edit-labels-and-callouts) now edits
55
+ string module captions, text components, keyed plot titles/text/callouts and
56
+ named composition annotations. Callouts expose preferred side, physical
57
+ clearance and leader visibility. Text changes remeasure content and update
58
+ dependent layout and connections through Python.
59
+
60
+ Saved choices contain explicit label keys and kinds. Reordering instructions
61
+ preserves identity; removing a key or changing its kind reports an incompatible
62
+ label. Explicit discard retains compatible edits on the same object. Shared
63
+ definitions share text decisions, while unedited source fields remain live.
64
+
65
+ ![Named callout controls and the compiled figure](assets/guides/layout-editor-labels.png)
66
+
67
+ Dev10 introduced layout schema 0.3 for labels; schemas 0.1 and 0.2 still load. Undo/redo,
68
+ reopening and matching SVG/PDF export include text edits. Axis labels, individual
69
+ callout dragging, camera editing and general object relationships remain open.
70
+
71
+ ## Mouse movement and scaling retained from dev9
33
72
 
34
73
  The [layout editor](layout-editor.md) now supports direct mouse movement and
35
74
  proportional corner scaling of named objects and groups. Alt-click selects a
@@ -44,7 +83,7 @@ retain their separate typography-preserving layout behavior.
44
83
 
45
84
  ![Mouse selection and proportional scaling in the local editor](assets/guides/layout-editor-gestures.png)
46
85
 
47
- New layout files use schema 0.2 for explicit artwork scale. Dev7/dev8 schema 0.1
86
+ Dev9 introduced schema 0.2 for explicit artwork scale. Dev7/dev8 schema 0.1
48
87
  files still load. Named composition objects are editable; individual plot marks,
49
88
  axis labels, connector segments and camera parameters remain outside this scope.
50
89
 
@@ -63,8 +102,8 @@ remain consistent across repeated edits and resets.
63
102
 
64
103
  ![The local browser layout inspector](assets/guides/layout-editor.png)
65
104
 
66
- This inspector requires its local Python session. It covers composition layout;
67
- label content, individual plot marks and cameras remain separate work.
105
+ This inspector requires its local Python session. Named label editing is added
106
+ in dev10; individual plot marks and cameras remain separate work.
68
107
  The existing standalone viewers and linked-plot appearance editor retain their
69
108
  current scope.
70
109
 
@@ -181,7 +220,7 @@ The wheel contains the library. To obtain recipes and fixtures, use the matching
181
220
  release checkout or source archive:
182
221
 
183
222
  ```sh
184
- git clone --branch v4.0.0.dev9 https://github.com/Mapika/inklet.git
223
+ git clone --branch v4.0.0.dev11 https://github.com/Mapika/inklet.git
185
224
  cd inklet
186
225
  python -m pip install -e '.[render]'
187
226
  python examples/v4/regional_report.py --renderer compiled --editor --output out/regional
@@ -1,6 +1,6 @@
1
1
  # Local layout editor
2
2
 
3
- Available since **4.0.0.dev8**, with mouse gestures in **4.0.0.dev9**, under `inklet.experimental.layout_editor`. Adjust
3
+ Available since **4.0.0.dev8**, with mouse gestures in **4.0.0.dev9**, named label editing in **4.0.0.dev10**, and unified style controls in **4.0.0.dev11**, under `inklet.experimental.layout_editor`. Adjust
4
4
  named placements and dimensions in a browser while Python recompiles the
5
5
  actual composition. The preview and downloaded SVG/PDF come from the same
6
6
  compiled figure, including plots, nested diagrams and native 3D content.
@@ -75,10 +75,101 @@ marks, ticks, axis labels and connector segments remain part of their owning
75
75
  plot or diagram. Scaling and movement do not remove authored constraints or
76
76
  top-fitting behavior; dependent content can reflow when the compiler rebuilds.
77
77
 
78
+ ## Edit labels and callouts
79
+
80
+ ![Editing a named plot callout with text, side, clearance and leader controls](assets/guides/layout-editor-labels.png)
81
+
82
+ Select a composition child, choose **Labels** in **Edit**, then change its fields and choose **Apply
83
+ changes**. The editor supports text components created with `component(i.text,
84
+ ...)`, string module captions, and plot `title`, `text` and `annotate`
85
+ instructions with an explicit string `key`. For composition callouts, supply a
86
+ unique `name` and select the composition that owns the callout.
87
+
88
+ ```python
89
+ recipe['chart'].annotate(1, 2, 'Reference observation', key='observation', side='s', clear=4)
90
+ recipe.annotate('caption', 'Measured response', name='response-note', side='e', clear=3)
91
+ editor.command('refresh')
92
+ editor.command('edit', {
93
+ 'path': '/chart',
94
+ 'labels': {'observation': {'kind': 'plot-annotate', 'text': 'Reviewed observation', 'side': 'sw'}},
95
+ })
96
+ ```
97
+
98
+ Callouts expose their preferred compass side, clearance in physical millimetres,
99
+ and leader visibility. Automatic placement can choose another side to avoid
100
+ conflicts. Plot clearance can be left blank to use its automatic value. This
101
+ increment edits callout content and placement preferences; it does not add free
102
+ mouse dragging of individual callouts or axis-label editing.
103
+
104
+ A label's identity is its composition path, explicit key and kind. For example,
105
+ `/chart` plus `observation` identifies a plot annotation even when its instruction
106
+ moves in the recipe. Replacing that key with a different instruction kind is an
107
+ incompatible target. A removed or incompatible label is reported as
108
+ `/chart#observation`; explicit discard drops that label's edits while retaining
109
+ compatible placement and label edits on the same chart. Renaming a path or key
110
+ changes its identity. Reusing the same key and kind declares the same label.
111
+
112
+ Text changes are measured by the Python compiler: longer module captions can
113
+ move dependent modules and reroute their connections. Unedited labels, data
114
+ coordinates, styling and other source choices remain live. Shared definitions
115
+ share label edits; use an independent recipe copy for independent captions.
116
+ Undo/redo, reset, saved JSON and SVG/PDF exports include the label edits.
117
+
118
+ ## Edit appearance alongside layout
119
+
120
+ ![Named line and marker styles edited in the composition inspector](assets/guides/layout-editor-styles.png)
121
+
122
+ Choose **Styles** in **Edit**. Layout, Labels and Styles retain their pending
123
+ changes when switching sections; **Apply changes** compiles them together as
124
+ one undo step. Selecting another content target discards unapplied fields.
125
+
126
+ | Named content | Available appearance controls |
127
+ | --- | --- |
128
+ | Keyed plot `line` instructions | Stroke colour, physical line width, opacity |
129
+ | Keyed plot `scatter` instructions | Constant colour and diameter, opacity |
130
+ | Text components and string module captions | Fill colour and physical text size |
131
+ | Module boxes | Fill, stroke colour and physical line width |
132
+ | Keyed plot `text`/`annotate` and named composition callouts | Fill colour and physical text size |
133
+
134
+ Colours accept the colour parser's hex, RGB and named CSS forms; `none` also
135
+ works for fill and stroke. Opacity ranges from 0 to 1. Widths use millimetres;
136
+ marker size is **diameter**, and text size must be positive. Blank style fields
137
+ remove an explicit keyword and use the renderer's automatic/preset behaviour.
138
+ That removal is saved as JSON `null`. **Reset target** instead restores the
139
+ current source's layout, labels and styles together. Parent artwork scaling
140
+ still scales the resulting text and strokes.
141
+
142
+ ```python
143
+ editor.command('edit', {
144
+ 'path': '/caption',
145
+ 'placement': {'x': 18},
146
+ 'labels': {'label': {'kind': 'module-label', 'text': 'Reviewed response'}},
147
+ 'styles': {
148
+ 'text': {'kind': 'module-text', 'size': 4, 'fill': '#203e53'},
149
+ 'box': {'kind': 'module-box', 'fill': '#e9f0f4', 'stroke_width': 0.4},
150
+ },
151
+ })
152
+ ```
153
+
154
+ Larger text is remeasured, so connected modules and dependent layout update.
155
+ Style edits retain live data, named instruction keys and unedited source choices.
156
+ Data-driven marker colour/diameter controls are omitted, including ramped
157
+ colours. If a source revision turns an edited constant into a data mapping,
158
+ the saved style is reported as incompatible, such as `/chart#style:samples`.
159
+ Explicit discard removes that style target's edits while preserving compatible
160
+ labels and placements on the chart.
161
+
162
+ Styles use the same named path, key and kind contracts as labels. New saved
163
+ files use schema 0.4; 0.1, 0.2 and 0.3 files still load. This unifies authoring
164
+ within the composition editor. The separate [linked-table style inspector](visual-editing.md)
165
+ retains its own source-bound format; its files are not interchangeable. Plot
166
+ titles, axes, bars, arbitrary factories, gradients and camera/material settings
167
+ are outside this style-control subset.
168
+
78
169
  ## Edit and review
79
170
 
80
- Choose a named path in **Content**, enter the fields you want to change, then
81
- select **Apply layout**. Other fields retain their definitions.
171
+ Choose a named path in **Content** and a section in **Edit**, enter the fields you want to change, then
172
+ select **Apply changes**. Other fields retain their definitions.
82
173
 
83
174
  - Child placement fields are X, Y, anchor, width, height and uniform scale. Numbers use the
84
175
  containing composition's coordinate unit. For plots, width and height describe
@@ -98,7 +189,7 @@ preview, saved choices and undo history remain available. The inspector does
98
189
  not automatically resolve overlap or add constraints: author the required
99
190
  measured relationships and minimum sizes in the Python recipe.
100
191
 
101
- **Undo** and **Redo** retain up to 100 successful layout edits. A new edit after
192
+ **Undo** and **Redo** retain up to 100 successful authoring edits. A new edit after
102
193
  undo starts a new history branch. Shared nested definitions remain shared:
103
194
  editing or resetting one occurrence affects the same definition wherever it
104
195
  appears. Distinct placements of that shared content remain independently editable.
@@ -107,8 +198,8 @@ appears. Distinct placements of that shared content remain independently editabl
107
198
 
108
199
  **Save layout** downloads the versioned JSON described in
109
200
  [saved layout choices](layout-overrides.md). **Open layout choices** loads that
110
- same format. The file contains changed placements and dimensions, not the
111
- source content, styles, assets or undo history. Keep it alongside the recipe.
201
+ same format. The file contains changed layout, label and supported style fields.
202
+ Other source content, assets and undo history stay outside the file. Keep it alongside the recipe.
112
203
 
113
204
  **Download SVG** and **Download PDF** export the successful preview revision.
114
205
  If another editor tab changes the session first, stale commands and export
@@ -1,6 +1,6 @@
1
1
  # Save and restore layout choices
2
2
 
3
- Available since **4.0.0.dev7**; uniform artwork scale is added in **dev9**. Save placement and dimension edits separately from
3
+ Available since **4.0.0.dev7**; uniform artwork scale is added in **dev9**, named text and callout decisions in **dev10**, and supported appearance fields in **dev11**. Save placement and dimension edits separately from
4
4
  a [composition recipe](composition-recipes.md), then restore those choices
5
5
  when its data, labels or content change. The saved JSON records only differences
6
6
  from a reference recipe. Unedited source decisions remain in control.
@@ -21,7 +21,7 @@ Python APIs below or the [local inspector](layout-editor.md) in dev8. This forma
21
21
 
22
22
  Keep a reference recipe, copy it, then edit placements. The reference and edited
23
23
  recipe must have the same named composition structure when capturing changes.
24
- Content and styles can differ; they are not serialized into the layout file.
24
+ Supported named label differences are captured too. Supported named style differences are captured too; other content is not serialized into the layout file.
25
25
 
26
26
  ```python
27
27
  import json
@@ -52,6 +52,39 @@ identity within the recipe hierarchy. Renaming or moving a target changes its
52
52
  identity. Definitions hidden inside component factories or other BuildSpecs
53
53
  are not traversed.
54
54
 
55
+ ## Named label decisions
56
+
57
+ Changed string module captions and text components are captured alongside layout.
58
+ Plot titles, text and annotations require explicit string instruction keys;
59
+ composition annotations require unique names. See the [label editor](layout-editor.md#edit-labels-and-callouts)
60
+ for controls, identity rules and an executable example. Captures compare only
61
+ matching label keys and kinds; they do not serialize added or removed content.
62
+
63
+ A saved label entry includes its kind and only the fields that changed:
64
+
65
+ ```json
66
+ {"schema":"inklet.composition-layout/0.4","targets":{"/caption":{"labels":{"label":{"kind":"module-label","text":"Reviewed response"}}}}}
67
+ ```
68
+
69
+ Readers accept legacy schemas 0.1, 0.2 and 0.3. New captures use 0.4; older readers
70
+ must be upgraded before opening them. Label fields are rejected under older
71
+ schema identifiers. Removed/incompatible labels appear as `path#key` in the
72
+ orphan report. Explicit `missing='drop'` retains compatible edits on that path.
73
+
74
+ ## Named appearance decisions
75
+
76
+ Schema 0.4 adds a `styles` group beside `placement`, `page` and `labels`.
77
+ Each named style contains its `kind` and changed fields. The [appearance guide](layout-editor.md#edit-appearance-alongside-layout)
78
+ lists supported controls, units, data-mapping exclusions and a combined edit.
79
+ A `null` style value removes an explicit keyword; unedited source fields stay
80
+ live. Capturing changes compares compatible named style keys and kinds, not
81
+ arbitrary renderer nodes or paint objects.
82
+
83
+ Source revisions that remove a style key, change its kind or replace a constant
84
+ with a data mapping produce a `path#style:key` orphan. With explicit discard,
85
+ compatible layout and label edits on the same path survive. The separate
86
+ linked-table visual-override format is not converted by this loader.
87
+
55
88
  ## Restore on the current recipe
56
89
 
57
90
  ```python
@@ -85,7 +118,7 @@ updated_figure = render(updated)
85
118
  updated_figure.save('updated.svg')
86
119
  ```
87
120
 
88
- The file stores layout decisions, not content, datasets, labels, plot styles,
121
+ The file stores layout, supported labels and styles, not datasets,
89
122
  links, ports, constraints, factories or camera parameters. Keep the Python
90
123
  recipe and its assets alongside it. The containing document can supply its own
91
124
  render dimensions; restoring authored page dimensions does not override that
@@ -123,12 +156,13 @@ of 32 operations. Malformed files, nonfinite numbers, invalid properties and
123
156
  contradictory edits to a shared nested definition are rejected, including when
124
157
  `missing='drop'` is used.
125
158
 
126
- New files use `inklet.composition-layout/0.2`, which adds a positive uniform
127
- artwork scale. The loader also accepts `inklet.composition-layout/0.1` files
128
- from dev7/dev8; those cannot contain scale fields. Unknown schemas are rejected.
129
- Upgrade older readers before opening a new 0.2 file. The file is a JSON object with `schema` and `targets`; each target has
130
- changed `placement` and/or `page` fields. It is a development-preview format,
131
- not a general Python object serializer or an asset manifest.
159
+ New files use `inklet.composition-layout/0.4`, adding named appearance decisions.
160
+ The loader also accepts 0.1 files from dev7/dev8 (without scale), 0.2 files from
161
+ dev9 (without labels) and 0.3 files from dev10 (without styles). Unknown schemas
162
+ are rejected. Upgrade older readers before opening a 0.4 file. The JSON object
163
+ contains `schema` and `targets`; each target has changed `placement`, `page`,
164
+ `labels` and/or `styles` fields. This development-preview format is not a general
165
+ Python object serializer or an asset manifest.
132
166
 
133
167
  ## Review revised content
134
168
 
@@ -60,8 +60,13 @@ Dev8 adds a [local layout inspector](layout-editor.md) backed by Python
60
60
  compilation, with saved choices, undo/redo and explicit source refresh.
61
61
  Dev9 adds mouse movement, proportional artwork scaling and keyboard nudges
62
62
  for named composition children, with preserved measured positions and saved
63
- choices. Serialized project templates, asset manifests, shared selection
64
- relationships, label/camera editing and finer-grained manipulation remain open. Subsequent work
63
+ choices. Dev10 adds saved named text and callout editing across modules, text
64
+ components, keyed plot instructions and composition annotations, including typed
65
+ identity reconciliation. Dev11 connects supported plot, text and module styles
66
+ to that same layout/label history, saved state and reconciliation workflow,
67
+ with data-driven marker fields protected from constant overrides.
68
+ Serialized project templates, asset manifests, shared selection
69
+ relationships, axis-label/camera editing and finer-grained manipulation remain open. Subsequent work
65
70
  should extend authoring and cross-content identity beyond this bounded inspector.
66
71
 
67
72
  ## Who this should serve
@@ -10,6 +10,7 @@ def main():
10
10
  parser.add_argument('--port',type=int,default=0,help='Local port; 0 chooses an available port')
11
11
  args=parser.parse_args()
12
12
  reports,_=make_reports()
13
+ reports[0]['chart'].annotate(2,3,'Reference observation',key='observation',side='s',clear=4)
13
14
  with LayoutEditor(reports[0],preset='scientific.general').start(port=args.port) as editor:
14
15
  print(f'Open {editor.url} — press Ctrl+C to stop.',flush=True)
15
16
  try:threading.Event().wait()
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "inklet"
3
- version = "4.0.0.dev9"
3
+ version = "4.0.0.dev11"
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.dev9"
473
+ __version__ = "4.0.0.dev11"
@@ -193,10 +193,10 @@ class Composition(BuildSpec):
193
193
  raise KeyError(name)
194
194
 
195
195
  def layout_overrides(self, reference):
196
- """Capture changed placements and page fields against a matching reference.
196
+ """Capture changed layout, named labels and supported styles against a reference.
197
197
 
198
198
  Return JSON-compatible, versioned decisions keyed by named child paths.
199
- Content, styles, data, links and constraints remain in the Python recipe.
199
+ Other content, data, links and constraints remain in Python.
200
200
  """
201
201
  from .layout_overrides import capture
202
202
  return capture(self, reference)
@@ -234,7 +234,12 @@ class Composition(BuildSpec):
234
234
  return self
235
235
 
236
236
  def annotate(self, target, text, **options):
237
- """Place a measured callout after every child and connection exists."""
237
+ """Place a measured callout; a unique name enables saved label editing."""
238
+ name = options.get('name')
239
+ if name is not None:
240
+ if not isinstance(name,str) or not name: raise ValueError('annotation name must be a nonempty string')
241
+ if any(opts.get('name')==name for _,_,opts in self._annotations):
242
+ raise LayoutError(f'duplicate annotation name {name!r}')
238
243
  self._annotations.append((target, text, freeze(options)))
239
244
  return self
240
245
 
@@ -0,0 +1,91 @@
1
+ """Explicit text targets within named recipes; never infer identity from ink."""
2
+ from __future__ import annotations
3
+
4
+ import math
5
+
6
+ from .spec import ComponentSpec, PlotSpec
7
+ from .module import ModuleSpec
8
+
9
+
10
+ def targets(item):
11
+ """Return keyed, typed label controls and internal replacement locations."""
12
+ from .. import text
13
+ from .composition import Composition
14
+ found = {}
15
+
16
+ def add(key, kind, value, location, options=None):
17
+ if not isinstance(key, str) or not key or not isinstance(value, str): return
18
+ if key in found: raise ValueError(f'duplicate editable label key {key!r}')
19
+ fields = dict(kind=kind, text=value)
20
+ if options is not None:
21
+ from ..core import mm
22
+ clear = options.get('clear')
23
+ fields.update(side=options.get('side', 'n'), leader=options.get('leader', True))
24
+ # A measured clearance remains authored until explicitly replaced.
25
+ from .composition import LayoutValue
26
+ if not isinstance(clear, LayoutValue): fields['clear'] = None if clear is None else mm(clear)
27
+ found[key] = (fields, location)
28
+
29
+ if isinstance(item, ModuleSpec): add('label', 'module-label', item.label, ('module',))
30
+ elif isinstance(item, ComponentSpec) and item.factory is text:
31
+ add('text', 'component-text', item.args[0] if item.args else item.kwargs.get('content'), ('component',))
32
+ elif isinstance(item, PlotSpec):
33
+ for index, (key, method, args, options) in enumerate(item._steps):
34
+ if method not in ('title', 'text', 'annotate'): continue
35
+ position = 0 if method == 'title' else 2
36
+ keyword = 'text' if method == 'annotate' else 'content'
37
+ value = args[position] if len(args)>position else options.get(keyword)
38
+ add(key, 'plot-'+method, value, ('plot', index, position, keyword),
39
+ options if method == 'annotate' else None)
40
+ elif isinstance(item, Composition):
41
+ for index, (_, value, options) in enumerate(item._annotations):
42
+ add(options.get('name'), 'composition-annotation', value, ('annotation', index),
43
+ {'clear':2, **options})
44
+ return found
45
+
46
+
47
+ def validate(value):
48
+ if not isinstance(value, dict) or not value: raise ValueError('labels must be a nonempty object')
49
+ result = {}
50
+ for key, fields in value.items():
51
+ if not isinstance(key, str) or not key or not isinstance(fields, dict):
52
+ raise ValueError('labels require nonempty string keys and field objects')
53
+ kind = fields.get('kind')
54
+ allowed = {'kind', 'text'}
55
+ if kind in ('plot-annotate', 'composition-annotation'): allowed |= {'side', 'clear', 'leader'}
56
+ if (kind not in ('module-label','component-text','plot-title','plot-text','plot-annotate','composition-annotation')
57
+ or not set(fields)<=allowed or len(fields)<2):
58
+ raise ValueError('invalid label kind or fields')
59
+ for name, val in fields.items():
60
+ if name=='text' and not isinstance(val, str): raise ValueError('label text must be a string')
61
+ if name=='side' and val not in ('n','ne','e','se','s','sw','w','nw'):
62
+ raise ValueError('invalid annotation side')
63
+ if name=='leader' and type(val) is not bool: raise ValueError('label leader must be a boolean')
64
+ if name=='clear' and not (val is None and kind=='plot-annotate'):
65
+ if type(val) not in (int,float) or not math.isfinite(val) or val<0:
66
+ raise ValueError('label clearance must be finite nonnegative millimetres')
67
+ result[key] = dict(fields)
68
+ return result
69
+
70
+
71
+ def apply(item, edits):
72
+ available = targets(item)
73
+ for key, fields in edits.items():
74
+ current, location = available[key]
75
+ changes = {k:v for k,v in fields.items() if k!='kind'}
76
+ value = changes.pop('text', current['text'])
77
+ if location[0]=='module': item.configure(value)
78
+ elif location[0]=='component':
79
+ if item.args: item.args = (value, *item.args[1:])
80
+ else: item.kwargs['content'] = value
81
+ elif location[0]=='plot':
82
+ _, index, position, keyword = location
83
+ found, method, args, kwargs = item._steps[index]
84
+ args, kwargs = list(args), dict(kwargs)
85
+ if len(args)>position: args[position] = value
86
+ else: kwargs[keyword] = value
87
+ item._steps[index] = (found, method, tuple(args), kwargs | changes)
88
+ else:
89
+ _, index = location
90
+ target, _, options = item._annotations[index]
91
+ item._annotations[index] = (target, value, options | changes)