inklet 4.0.0.dev8__tar.gz → 4.0.0.dev10__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.
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/.github/workflows/publish.yml +2 -2
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/CHANGELOG.md +31 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/PKG-INFO +6 -6
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/README.md +5 -5
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/api.md +3 -3
- inklet-4.0.0.dev10/docs/assets/guides/layout-editor-gestures.png +0 -0
- inklet-4.0.0.dev10/docs/assets/guides/layout-editor-labels.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/compatibility.md +1 -1
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/composition-recipes.md +3 -1
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/development-preview.md +47 -9
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/installation.md +3 -3
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/layout-editor.md +81 -8
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/layout-overrides.md +29 -7
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/roadmap.md +6 -2
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/layout_editor.py +1 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/pyproject.toml +1 -1
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/__init__.py +1 -1
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/composition.py +31 -9
- inklet-4.0.0.dev10/src/inklet/document/label_overrides.py +91 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/layout_overrides.py +42 -10
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/layout_editor/__init__.py +89 -14
- inklet-4.0.0.dev10/src/inklet/experimental/layout_editor/gestures.js +63 -0
- inklet-4.0.0.dev10/src/inklet/experimental/layout_editor/page.html +65 -0
- inklet-4.0.0.dev10/tests/test_label_overrides.py +187 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_editor.py +1 -1
- inklet-4.0.0.dev10/tests/test_layout_gestures.py +146 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/check_wheel.py +8 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_gallery.json +3 -3
- inklet-4.0.0.dev8/src/inklet/experimental/layout_editor/page.html +0 -46
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/.gitattributes +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/.github/workflows/checks.yml +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/.gitignore +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/.readthedocs.yaml +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/CONTRACT.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/CONTRIBUTING.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/LICENSE +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/THIRD_PARTY_NOTICES.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/brand/inklet-icon.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/brand/inklet-logo-dark.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/brand/inklet-logo-mono.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/brand/inklet-logo.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/brand/inklet-wordmark.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/examples/quickstart.pdf +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/examples/quickstart.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/examples/quickstart.svg +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/axes-and-scales-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/calibrated-volumes-3.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/channels-and-contours-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/composition-recipes-narrow.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/composition-recipes.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/composition-recipes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-anchor.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-annotation.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-branch.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-broken-axis.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-callout.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-clipping.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-creases.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-custom-key.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-cutout.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-dates.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-dense.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-elbows.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-facets.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-fit-graph.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-flow-width.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-formula.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-graph.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-halo.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-heatmap.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-hole.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-inline-type.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-inset.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-labels.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-layers.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-letters.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-list.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-matrix.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-page-grid.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-polar.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-protein.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-routes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-scene.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-series-key.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-span.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-swarm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-text-path.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-toon.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-twin-axis.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-violin.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/data-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/data-3.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/dense-data-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/diagram-components-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/diagrams-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/layout-3.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/layout-editor.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/layout-restored.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/layout-restored.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/layout-revised.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/oblique-sections-2.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plot-composition-narrow.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plot-composition.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plot-composition.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plot-quality-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plot-quality-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-band.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-bars.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-boxplot.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-errorbars.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-fill-between.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-fill.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-grouped-bars.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-hist.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-horizontal-bars.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-line-errors.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-line.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-markers.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-matrix.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-polar-curve.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-rose.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-scatter.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-series.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-stackarea.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-stacked-bars.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-step.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-swarm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plots-violin.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plotting-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/plotting-2.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/publication-plots-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/publication-plots-2.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/publication-plots-3.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/publication-plots-4.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/slabs-and-regions-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/three-images-1.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/guides/three-images-2.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/biology.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/clipping-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/clipping-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/clipping-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/clipping-lines-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/clipping-lines-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/comparison.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-marker-shapes-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-marker-shapes.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-markers-display.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-markers-hardware.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-scene-viewer.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-viewer-display.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-viewer-export.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compiled-viewer-study.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compositing-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compositing-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/compositing-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/dense-scatter-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/diagram-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/diagram-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/engine-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/engine-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/fluorescence-biology.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/general-plots-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/general-plots.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/hatch-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/hatch-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/hatch-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/label-intensities-native.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/label-intensities.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/lines-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/lines-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/marker-batches.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/marker-index-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/marker-index-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/marker-index-browser-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/marker-index-browser-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/oblique-biology.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/real-biology.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/render-scene-caption.tex +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/revision.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/scenes-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/scenes-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/slab-biology.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/study.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-culling-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-culling-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-culling-gpu-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-culling-gpu-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-redraw-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-redraw-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-redraw-display.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-redraw-profile.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-window-after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-window-before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/research-preview/viewer-window-display.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/after.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/before.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/browser-quality.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/browser-scatter.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/browser-scatter.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/browser-study.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/contours-streamlines-masked.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/contours-streamlines.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/contours-streamlines.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/engineering-report-170mm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/engineering-report.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/engineering-report.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/faceted-operations.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/faceted-operations.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/linked-dashboard.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/linked-dashboard.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/linked-selection.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/linked-selection.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/mesh-fields-170mm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/mesh-fields.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/mesh-fields.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/region-shapes.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/region-shapes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/regional-analysis.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/regional-analysis.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/regional-report-160mm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/regional-report.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/regional-report.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/scientific-report-170mm.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/scientific-report.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/scientific-report.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/statistical-views.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/statistical-views.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/table-inputs.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/table-inputs.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/time-series.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/time-series.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/transport-map.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/transport-map.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/visual-overrides.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population-2019.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population-2019.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population-2019.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population-revisions.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population-revisions.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/assets/v4/world-population.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/axes-and-scales.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/bars-and-areas.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/biology-panels.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/blender-scenes.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/brand.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/browser-rendering.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/calibrated-volumes.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/channels-and-contours.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/cli.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/clipping.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/compiled-scenes.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/compiled-viewer.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/complex-scene.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/compositing.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/concepts.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/contours-streamlines.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/cookbook.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/data-revisions.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/data.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/dense-data.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/design/browser-backends.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/design/page_grid.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/design/v2.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/design/v4.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/diagram-components.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/diagram-engine.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/diagrams.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/distributions.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/engineering-report.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/example-library.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/examples.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/export-review.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/fluorescence-biology.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/general-plots.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/geographic-features.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/hatching.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/index.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/interactive-documents.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/javascripts/inklet.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/label-intensities.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/label-measurements.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/layout.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/lines-and-points.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/linked-facets.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/linked-maps.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/linked-plots.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/marker-batches.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/marker-culling.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/matrices.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/mesh-fields.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/microscopy-tiff.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/migration.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/oblique-biology.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/oblique-sections.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/plot-quality.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/plot-recipes.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/plot-types.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/plotting-engine.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/plotting.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/polar-plots.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/presets.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/publication-plots.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/quickstart.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/real-biology.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/architecture-sketch.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/architecture.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/attractor.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/helix.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/interference.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/lattice.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/photonics.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/recipes/wave-packets.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/regional-report.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/release-checks.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/render-jobs.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/rendering-engine.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/research-preview.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/research-revision.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/research-study.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/scene-annotations.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/scene-paths.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/scene-templates.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/scientific-report.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/showcase.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/slab-biology.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/slabs-and-regions.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/statistical-views.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/stress20.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/stylesheets/code.css +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/stylesheets/inklet.css +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/table-inputs.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/three-images.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/time-series.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/troubleshooting.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/uncertainty.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/v2.5.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/v2.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/v3.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/v4-foundations.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/visual-editing.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/docs/world-map.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/cells3d.lock.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/fluorescence.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/organelle.lock.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology/requirements.txt +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/biology_panels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/blender/complex_lab_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/blender/lab_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/blender/occlusion_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/blender/organelle_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/blender/research_lab_views.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/broken_axis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/clipping_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/compiled_marker_shapes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/compiled_scene_viewer.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/compositing_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/composition_recipes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/data/general-plots/benchmark.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/data/general-plots/learning.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/data/general-plots/revenue.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/data/general-plots/sensor.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/dense_scatter_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/diagram_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/engine_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/feature_flow.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/fluorescence_biology.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/gallery.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/general_plots.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/graph.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/hatch_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/hello_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/label_intensities.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/oblique_biology.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/panels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/plot_composition.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/plot_engine_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/plot_quality_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/polar.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/preset_formats.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/presets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/real_biology.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/render_scene_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/render_smoke.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/research_figure_planner.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/research_planner_study.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/research_revision.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/showcase/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/showcase/assets.lock.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/showcase/blender_scenes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/showcase/figures.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/slab_biology.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/state_machine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/stress20.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v25_document.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v2_cases.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v2_document.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_complex_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_render_jobs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_rendering.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_scene_annotations.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_scene_passes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_scene_paths.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v3_scene_templates.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/browser_scatter.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/contours_streamlines.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/data/world-countries.geojson +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/data/world-map-source.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/data/world-population.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/engineering_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/faceted_operations.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/assembly.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/manifest.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/measurement.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/region-shapes.geojson +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/regions.csv +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/regions.geojson +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/fixtures/transport.geojson +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/linked_dashboard.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/linked_selection.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/linked_selection.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/mesh_fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/region_shapes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/regional_analysis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/regional_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/scientific_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/statistical_views.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/table_inputs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/time_series.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/transport_map.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/examples/v4/world_population.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/annot.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/bio3d.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/cartoon.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/chem_data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/chem_fingerprints.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/data/1m17-kinase.pdb +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/data/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/drug_discovery.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/mouse_brain_data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/neural_activity.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/pdbfile.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/showcase_part.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/showcase_process.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/showcase_season.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/structure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/structure_data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/target.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/figures/trial.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/biology-panels.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/chem_fingerprints.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/clipping-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compiled-marker-shapes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compiled-scene-viewer.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compiled-viewer-culling.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compiled-viewer-deep-zoom.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compositing-pdf-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compositing-pdf-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/compositing-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/dense-scatter-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/diagram-labels-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/diagram-labels-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/diagram-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/engine-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/engine-transparency-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/engine-transparency-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/flow.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/fluorescence-biology.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/general-plots-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/general-plots.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/hatch-pdf-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/hatch-pdf-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/hatch-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/hatch-svg-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/label-intensities.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/oblique-biology.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/part.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/plot-axis-after.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/plot-axis-before.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/plot-engine-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/plots.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/polar.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/preset-formats.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/presets.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/process.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/real-biology.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/render-scene-data.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/render-scene-initial.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/render-scene-review.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/research-crossing-revision.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/research-figure-planner.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/research-planner-study.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/research-revision.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/season.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-architecture-sketch.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-architecture.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-attractor.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-helix.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-interference.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-lattice.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-photonics.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/showcase-wave-packets.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/slab-biology.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/stress20.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/structure.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-complex-scene.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-render-jobs.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-rendering.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-scene-annotations.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-scene-passes.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-scene-paths.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/gallery/v3-scene-templates.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/mkdocs.yml +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/requirements-ci.txt +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/requirements-docs.txt +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/requirements-tables.txt +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/scripts/bench_svg.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/scripts/rasterise.sh +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/scripts/sanity_typeset.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/__main__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/asset.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/cache.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/cutout.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/deps.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/harmonise.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/lineart.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/mask.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/provenance.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/raster.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/sidecar.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/assets/silhouette.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/cli.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/components.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/batch.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/diagram.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/envelope.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/geom.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/prims.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/style.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/trace.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/core/units.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/abut.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/break_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/color.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/cross.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/image.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/key_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/link_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/path_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/plot_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/diagnostics/three_rules.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/compiler.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/data_io.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/module.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/presets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/publication.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/document/spec.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/annotate.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/bezier_clip.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/clip.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/coords.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/path.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/place.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/draw/shapes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/_table_adapters.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/compiled.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/compiled.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/drawings.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/editor.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/editor.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/geography.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/grid.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/images.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/overrides.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/page.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/regions.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/runtime.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/series.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/browser/timeaxis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/channels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/contours.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/engineering.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/figure_planner.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/grid.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/measurement.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/measurements.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/planner_geometry.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/regions.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/scene_viewer/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/scene_viewer/controls.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/scene_viewer/page.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/scene_viewer/runtime.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/scene_viewer/spatial.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/sections.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/selection.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/slabs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/temporal.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/tiff.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/experimental/volume.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/fit.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/flow.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/graph.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/graph_force.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/graph_layered.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/graph_tree.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/labels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/layout/sankey.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/links/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/links/curves.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/links/link.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/axis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/breaks.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/categories.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/facets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/inset.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/key.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/marks.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/notes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/panel.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/png.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/polar.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/ramp.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/raster.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/ribbon.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/scale.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/scatter_batch.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/scatter_raster.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/series.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/simplify.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/plot/timescale.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/analysis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/bounds.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/brushes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/bundle.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/composite.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/fontembed.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/glyphs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/hatching.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/outline.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/paint.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/pathdata.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/pdf.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/pdftext.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/preview.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/raster.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/resources.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/revision.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/render/svg.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/themes/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/themes/color.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/themes/palettes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/themes/theme.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/api.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/backend.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/device_worker.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/discover.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/lineart.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/options.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/scene_worker.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/script.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/svgread.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/template_worker.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender/tracing.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/blender_backend.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/camera.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/deps.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/depth.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/devices.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/drill.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/edges.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/hlr.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/linalg.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/mesh.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/occlude.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/order.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/parse.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/place.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/protein.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/quality.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/render_jobs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/scene_annotations.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/scene_pass.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/scene_projection.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/scenes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/shade.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/solids.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/templates.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/three/templates.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/__init__.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/fonts.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/markup.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/onpath.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/outline.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/src/inklet/typeset/shaping.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/assets/mouse.inklet.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/assets/mouse.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/dense_graph.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/draw_probe.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/assets/sem.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/assets/tem.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/cell.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/common.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/imaging.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/kinetics.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/micrograph.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro/system.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/electro_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/fidelity.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/flow.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/hard_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/label_storm.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/mega_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/meshes/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/meshes/brain-lh.obj +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/meshes/spot.obj +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/panels/apparatus.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/panels/graphs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/panels/relations.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/panels/responses.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/panels/sections.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/probes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/stress/three_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_alignment_contract.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_annotate.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_annotate_letters.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_assets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_assets_provenance.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_biology_source.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_blend_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_compiled.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_facets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_geography.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_overrides.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_regions.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_revision.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_scatter.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_series.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_statistics.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_switching.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_browser_time.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_categories.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_channels_contours.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_chem_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_cli.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_clip_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_components.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_compositing_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_composition_recipes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_contrast_and_labels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_cookbook.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_core.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_core_amendments.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_csv_input.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_api.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_artwork.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_break_distorts.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_crossing.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_image_contrast.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_ink.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_keys.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_links.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_paths.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagnostics_plot_box.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_diagram_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_docs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_docs_site.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_document.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_document_data.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_document_v25.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_draw_clip.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_draw_path.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_draw_place.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_draw_shapes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_engine_layout.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_engine_rendering.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_engine_scatter.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_engineering_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_export_bundle.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_figure_planner.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_fit.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_grid_fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_guides.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_hatch_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_label_measurements.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_graph.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_graph_fit.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_origin.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_overrides.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_layout_sankey.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_links.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_links_avoid.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_links_shapes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_marker_batches.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_mesh_fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_microscopy_tiff.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_neural_activity.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_output_contract.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_paint_program.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_place_labels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_axis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_broken_axis.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_clip.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_facets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_inset.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_key.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_labels.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_legend.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_marks.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_notes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_polar.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_publication.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_quality_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_raster.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_recipes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_ribbon.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_scale.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_swarm.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_plot_time.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_presets.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_publication_limits.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_regional_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_release_adversarial.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_devices.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_embed.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_glyphs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_jobs.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_outline.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_pdf.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_pdf_text.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_quality.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_scene.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_style_fields.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_svg_perf.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_render_v3.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_review_v25.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_round4_plot.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_routing_avoid.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scatter_rendering.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_annotations.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_culling.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_pass.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_projection.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_templates.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scene_viewer.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_scientific_report.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_sections.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_shared_plot_margins.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_showcase_library.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_showcase_round3.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_slabs_regions.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_structure_figure.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_svg.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_table_adapters.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_target_pose.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_temporal_adapters.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_text_markup.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_text_on_path.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_theme_font_style.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_themes.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_anchor_pin.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_api.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_backend_blender.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_blender.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_depth_order.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_drill.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_hlr.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_mesh.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_order_vector.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_overlay.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_parse.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_patches.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_place.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_protein.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_ridges.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_sort.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_sort_budget.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_three_view.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_typeset.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_v4_selection.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_volume.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_watch_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/test_world_map_example.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/README.md +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/categories-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/categories-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/components-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/components-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/dense-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/dense-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/fonts.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/inset-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/inset-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/markers-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/markers-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/renderers.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/type-opacity-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/type-opacity-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-dense-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-dense-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v2-workflow-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v25-document-pdf.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/baseline/v25-document-svg.png +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/fixtures.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tests/visual/v2-budgets.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_batches.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_clipping.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_diagrams.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_engine.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_lines.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_marker_index.mjs +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_scene_culling.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_scene_gpu.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_scene_redraw.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_scene_viewer.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_scene_zoom.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_v2.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/benchmark_v4.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/browser_study.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/check_render_wheel.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/dock_ligand.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_previews.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_previews.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_site.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/404.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/card.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/gallery.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/home.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/main.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/docs_theme/plot-gallery.html +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/gen_api.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/make_culling_review.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/plot_catalog.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/prepare_world_map.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/preset_gallery.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/profile_scene_redraw.js +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/showcase_gallery.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/stress20.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/strip_pdb.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/v3_showcase.py +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/tools/v4-budgets.json +0 -0
- {inklet-4.0.0.dev8 → inklet-4.0.0.dev10}/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.
|
|
9
|
+
default: v4.0.0.dev10
|
|
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.
|
|
46
|
+
echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev10' >&2
|
|
47
47
|
exit 1
|
|
48
48
|
}
|
|
49
49
|
gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
|
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 4.0.0.dev10 — 2026-09-12
|
|
6
|
+
|
|
7
|
+
Tenth development preview: reproducible named label and callout editing.
|
|
8
|
+
3.1.0 remains the stable release.
|
|
9
|
+
|
|
10
|
+
- Edit string module captions, text components, keyed plot titles/text/callouts
|
|
11
|
+
and named composition annotations in the local layout editor.
|
|
12
|
+
- Expose callout text, preferred side, physical clearance and leader visibility;
|
|
13
|
+
remeasure content and dependent connections through the Python compiler.
|
|
14
|
+
- Save typed label identities and changed fields in layout schema 0.3, accepting
|
|
15
|
+
legacy 0.1/0.2 files, undo/redo, independent copies and shared definitions.
|
|
16
|
+
- Report removed or incompatible labels individually; explicit discard preserves
|
|
17
|
+
compatible edits on the same object. Leave unedited source decisions live.
|
|
18
|
+
- Add browser controls, source revision and two-width SVG/PDF roundtrip checks,
|
|
19
|
+
installed-package coverage and an illustrated guide and example.
|
|
20
|
+
|
|
21
|
+
## 4.0.0.dev9 — 2026-09-12
|
|
22
|
+
|
|
23
|
+
Ninth development preview: mouse movement and proportional artwork scaling.
|
|
24
|
+
3.1.0 remains the stable release.
|
|
25
|
+
|
|
26
|
+
- Add click/drag selection and movement, corner scale handles, containing-group
|
|
27
|
+
selection, keyboard nudges and cancellable pointer gestures to LayoutEditor.
|
|
28
|
+
- Map gestures through nested physical coordinate units and scales. Preserve
|
|
29
|
+
measured positions with folded offsets and keep the opposite scale corner fixed.
|
|
30
|
+
- Add explicit Composition child scale, preserving registered ports and scaling
|
|
31
|
+
complete artwork. Width/height fitting retains its separate layout semantics.
|
|
32
|
+
- Save scale in composition-layout schema 0.2; continue loading schema 0.1 files.
|
|
33
|
+
- Cover geometry, ports, all four corners, undo/reopen, nested transforms,
|
|
34
|
+
invalid gestures and browser/Python export agreement; update the editor guide.
|
|
35
|
+
|
|
5
36
|
## 4.0.0.dev8 — 2026-09-12
|
|
6
37
|
|
|
7
38
|
Eighth development preview: local browser layout editing with Python compilation.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inklet
|
|
3
|
-
Version: 4.0.0.
|
|
3
|
+
Version: 4.0.0.dev10
|
|
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.
|
|
85
|
-
|
|
86
|
-
|
|
84
|
+
**4.0.0.dev10** adds named label and callout editing to the local layout
|
|
85
|
+
editor. Edit text and callout preferences, move and scale content, undo changes,
|
|
86
|
+
and save choices that reproduce through the Python compiler.
|
|
87
87
|
```sh
|
|
88
|
-
python -m pip install "inklet==4.0.0.
|
|
88
|
+
python -m pip install "inklet==4.0.0.dev10"
|
|
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.
|
|
93
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev10)
|
|
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.
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
**4.0.0.dev10** adds named label and callout editing to the local layout
|
|
35
|
+
editor. Edit text and callout preferences, move and scale content, undo changes,
|
|
36
|
+
and save choices that reproduce through the Python compiler.
|
|
37
37
|
```sh
|
|
38
|
-
python -m pip install "inklet==4.0.0.
|
|
38
|
+
python -m pip install "inklet==4.0.0.dev10"
|
|
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.
|
|
43
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev10)
|
|
44
44
|
|
|
45
45
|
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
46
46
|
may change; 3.1.0 remains the stable release. General browser editing,
|
|
@@ -218,19 +218,19 @@ A figure assembled from named children and measured expressions.
|
|
|
218
218
|
|
|
219
219
|
* `measure(name, dimension='width')` -- Reference a child's measured width or height, in composition units.
|
|
220
220
|
* `point(name, anchor='center')` -- Reference a placed child's compass point or registered port.
|
|
221
|
-
* `add(name, item, *, x=0, y=0, anchor=None, width=None, height=None)`
|
|
221
|
+
* `add(name, item, *, x=0, y=0, anchor=None, width=None, height=None, scale=1)`
|
|
222
222
|
* `replace(name, item)` -- Replace a child while preserving its placement and dependent references.
|
|
223
223
|
* `slot(name, **placement)` -- Declare a required content input with the same placement options as add().
|
|
224
224
|
* `copy()` -- Copy nested compositions, plots, modules and component instructions.
|
|
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
|
|
228
|
+
* `layout_overrides(reference)` -- Capture changed layout and compatible named labels 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
|
|
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
|
|
|
Binary file
|
|
Binary file
|
|
@@ -48,7 +48,7 @@ Blender. Scene creation and rendering run Blender in a separate process.
|
|
|
48
48
|
### Development-preview table adapters
|
|
49
49
|
|
|
50
50
|
The [pandas and Polars adapters](table-inputs.md) are included in the experimental
|
|
51
|
-
[4.0.0.
|
|
51
|
+
[4.0.0.dev9 preview](development-preview.md), not in stable 3.1.0. Their `pandas` and `polars` extras are separate
|
|
52
52
|
from core dependencies. The adapter CI jobs use Linux/Python 3.12 with pandas
|
|
53
53
|
2.2.0 / Polars 1.0.0 and the versions pinned in `requirements-tables.txt`.
|
|
54
54
|
Both paths check scalar/identity contracts and saved-state SVG reconstruction.
|
|
@@ -86,7 +86,9 @@ assert before.to_svg() == old_svg
|
|
|
86
86
|
assert doc.compile() is after
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
-
`place()` changes
|
|
89
|
+
`place()` changes placement fields: `x`, `y`, `anchor`, `width`, `height` and
|
|
90
|
+
`scale`. Explicit `scale` (dev9) uniformly scales complete artwork, including
|
|
91
|
+
text and strokes; it is separate from fitting a plot to a new width/height.
|
|
90
92
|
Set `anchor`, `width` or `height` to `None` to restore their unspecified behavior.
|
|
91
93
|
`replace()` replaces content and keeps its placement and named relationships.
|
|
92
94
|
Dimension updates through `configure()` validate before mutation; expressions,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Inklet 4.0.0.
|
|
1
|
+
# Inklet 4.0.0.dev10
|
|
2
2
|
|
|
3
|
-
The
|
|
3
|
+
The tenth 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.
|
|
11
|
+
python -m pip install "inklet==4.0.0.dev10"
|
|
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.
|
|
22
|
+
python -m pip install "inklet[render,pandas,polars]==4.0.0.dev10"
|
|
23
23
|
# Add calibrated volumes and TIFF workflows when needed:
|
|
24
|
-
python -m pip install "inklet[volume,render]==4.0.0.
|
|
24
|
+
python -m pip install "inklet[volume,render]==4.0.0.dev10"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
The core preview needs no browser server, NumPy, pandas, Polars or Blender.
|
|
@@ -29,7 +29,45 @@ 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
|
-
##
|
|
32
|
+
## Named labels and callouts in dev10
|
|
33
|
+
|
|
34
|
+
The [local layout editor](layout-editor.md#edit-labels-and-callouts) now edits
|
|
35
|
+
string module captions, text components, keyed plot titles/text/callouts and
|
|
36
|
+
named composition annotations. Callouts expose preferred side, physical
|
|
37
|
+
clearance and leader visibility. Text changes remeasure content and update
|
|
38
|
+
dependent layout and connections through Python.
|
|
39
|
+
|
|
40
|
+
Saved choices contain explicit label keys and kinds. Reordering instructions
|
|
41
|
+
preserves identity; removing a key or changing its kind reports an incompatible
|
|
42
|
+
label. Explicit discard retains compatible edits on the same object. Shared
|
|
43
|
+
definitions share text decisions, while unedited source fields remain live.
|
|
44
|
+
|
|
45
|
+

|
|
46
|
+
|
|
47
|
+
New files use layout schema 0.3; schemas 0.1 and 0.2 still load. Undo/redo,
|
|
48
|
+
reopening and matching SVG/PDF export include text edits. Axis labels, individual
|
|
49
|
+
callout dragging, camera editing and general object relationships remain open.
|
|
50
|
+
|
|
51
|
+
## Mouse movement and scaling retained from dev9
|
|
52
|
+
|
|
53
|
+
The [layout editor](layout-editor.md) now supports direct mouse movement and
|
|
54
|
+
proportional corner scaling of named objects and groups. Alt-click selects a
|
|
55
|
+
containing group, arrow keys nudge, and Escape cancels. A drag shows an outline;
|
|
56
|
+
release compiles the actual figure and updates dependent links.
|
|
57
|
+
|
|
58
|
+
Moves preserve measured positions by adding offsets. Scaling keeps the opposite
|
|
59
|
+
corner fixed, including inside scaled groups with different coordinate units.
|
|
60
|
+
Each completed edit participates in undo/redo and saved-layout reconstruction.
|
|
61
|
+
Uniform artwork scaling includes text and strokes; plot width/height controls
|
|
62
|
+
retain their separate typography-preserving layout behavior.
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
66
|
+
Dev9 introduced schema 0.2 for explicit artwork scale. Dev7/dev8 schema 0.1
|
|
67
|
+
files still load. Named composition objects are editable; individual plot marks,
|
|
68
|
+
axis labels, connector segments and camera parameters remain outside this scope.
|
|
69
|
+
|
|
70
|
+
## Local layout inspector retained from dev8
|
|
33
71
|
|
|
34
72
|
The [local layout editor](layout-editor.md) turns saved composition choices into
|
|
35
73
|
a browser workflow. Edit named placements and dimensions, preview the actual
|
|
@@ -44,8 +82,8 @@ remain consistent across repeated edits and resets.
|
|
|
44
82
|
|
|
45
83
|

|
|
46
84
|
|
|
47
|
-
This inspector requires its local Python session.
|
|
48
|
-
|
|
85
|
+
This inspector requires its local Python session. Named label editing is added
|
|
86
|
+
in dev10; individual plot marks and cameras remain separate work.
|
|
49
87
|
The existing standalone viewers and linked-plot appearance editor retain their
|
|
50
88
|
current scope.
|
|
51
89
|
|
|
@@ -162,7 +200,7 @@ The wheel contains the library. To obtain recipes and fixtures, use the matching
|
|
|
162
200
|
release checkout or source archive:
|
|
163
201
|
|
|
164
202
|
```sh
|
|
165
|
-
git clone --branch v4.0.0.
|
|
203
|
+
git clone --branch v4.0.0.dev10 https://github.com/Mapika/inklet.git
|
|
166
204
|
cd inklet
|
|
167
205
|
python -m pip install -e '.[render]'
|
|
168
206
|
python examples/v4/regional_report.py --renderer compiled --editor --output out/regional
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Inklet requires Python 3.11 or later and an installed TrueType/OpenType font.
|
|
4
4
|
The core Python dependencies are HarfBuzz bindings and fontTools.
|
|
5
5
|
|
|
6
|
-
This page covers stable **Inklet 3.1** and the opt-in **4.0.0.
|
|
6
|
+
This page covers stable **Inklet 3.1** and the opt-in **4.0.0.dev9 preview**. See the
|
|
7
7
|
[compatibility matrix](compatibility.md) for tested platforms and Blender versions.
|
|
8
8
|
|
|
9
9
|
## From PyPI
|
|
@@ -24,9 +24,9 @@ Activate the environment or prefix commands with `.venv/bin/` on Linux/macOS.
|
|
|
24
24
|
## 4.0 development preview
|
|
25
25
|
|
|
26
26
|
```sh
|
|
27
|
-
python -m pip install "inklet==4.0.0.
|
|
27
|
+
python -m pip install "inklet==4.0.0.dev9"
|
|
28
28
|
# Optional rendering and DataFrame adapters:
|
|
29
|
-
python -m pip install "inklet[render,pandas,polars]==4.0.0.
|
|
29
|
+
python -m pip install "inklet[render,pandas,polars]==4.0.0.dev9"
|
|
30
30
|
```
|
|
31
31
|
|
|
32
32
|
Use a separate virtual environment when trying the preview. Experimental APIs
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Local layout editor
|
|
2
2
|
|
|
3
|
-
Available
|
|
3
|
+
Available since **4.0.0.dev8**, with mouse gestures in **4.0.0.dev9** and named label editing in **4.0.0.dev10**, 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.
|
|
7
7
|
|
|
8
|
-

|
|
9
9
|
|
|
10
10
|
The [complete example](../examples/layout_editor.py) opens the reusable report
|
|
11
11
|
from [composition recipes](composition-recipes.md). From the checkout, run:
|
|
@@ -45,12 +45,82 @@ width and height, including its coordinate unit. Optional `width=` and
|
|
|
45
45
|
`height=` arguments fix the containing document's dimensions in millimetres;
|
|
46
46
|
those dimensions remain authoritative when the authored page size changes.
|
|
47
47
|
|
|
48
|
+
## Move and scale with the mouse
|
|
49
|
+
|
|
50
|
+
Click a named object in the preview and drag it to move. Corner handles scale
|
|
51
|
+
its complete artwork proportionally, keeping the opposite corner fixed. This
|
|
52
|
+
works for plots, modules, text, images, native 3D components and nested
|
|
53
|
+
compositions. A dashed outline follows the pointer; release to compile the
|
|
54
|
+
result and update dependent links. Escape or a cancelled pointer gesture leaves
|
|
55
|
+
the figure unchanged. A simple click selects without making an edit.
|
|
56
|
+
|
|
57
|
+
Use Alt-click to select a containing group, or choose its path in **Content**.
|
|
58
|
+
Drag a selected group's outline to move the group. With the canvas focused,
|
|
59
|
+
arrow keys move the selected object by 1 mm in figure space; Shift changes that
|
|
60
|
+
to 10 mm. Mouse and pointer gestures use the same coordinates even inside
|
|
61
|
+
scaled groups or compositions with different coordinate units.
|
|
62
|
+
|
|
63
|
+
Each completed edit is one undo step. Movements add offsets to measured
|
|
64
|
+
positions instead of discarding their relationships. Repeated offsets are
|
|
65
|
+
combined, so a long editing session does not grow ever-deeper expressions.
|
|
66
|
+
Saved layout files retain movement and scaling for Python reconstruction.
|
|
67
|
+
|
|
68
|
+
**Scaling artwork also scales its text and strokes.** To resize a plot's data
|
|
69
|
+
region while retaining physical typography, use the width/height controls
|
|
70
|
+
below. The **Uniform scale** field gives an exact artwork scale factor; Reset
|
|
71
|
+
target restores the original factor and placement.
|
|
72
|
+
|
|
73
|
+
The selectable units are named composition children and groups. Individual
|
|
74
|
+
marks, ticks, axis labels and connector segments remain part of their owning
|
|
75
|
+
plot or diagram. Scaling and movement do not remove authored constraints or
|
|
76
|
+
top-fitting behavior; dependent content can reflow when the compiler rebuilds.
|
|
77
|
+
|
|
78
|
+
## Edit labels and callouts
|
|
79
|
+
|
|
80
|
+

|
|
81
|
+
|
|
82
|
+
Select a composition child, then edit its **Label** 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
|
+
|
|
48
118
|
## Edit and review
|
|
49
119
|
|
|
50
120
|
Choose a named path in **Content**, enter the fields you want to change, then
|
|
51
|
-
select **Apply
|
|
121
|
+
select **Apply changes**. Other fields retain their definitions.
|
|
52
122
|
|
|
53
|
-
- Child placement fields are X, Y, anchor, width and
|
|
123
|
+
- Child placement fields are X, Y, anchor, width, height and uniform scale. Numbers use the
|
|
54
124
|
containing composition's coordinate unit. For plots, width and height describe
|
|
55
125
|
the data region; changing them does not scale text or strokes.
|
|
56
126
|
- A field marked **Measured** still follows its layout expression. Entering a
|
|
@@ -91,6 +161,7 @@ import json
|
|
|
91
161
|
from pathlib import Path
|
|
92
162
|
|
|
93
163
|
editor.command('edit', {'path': '/chart', 'placement': {'height': 35}})
|
|
164
|
+
editor.command('gesture', {'path': '/chart', 'dx': 2, 'dy': 1})
|
|
94
165
|
Path('layout-overrides.json').write_text(json.dumps(editor.overrides(), indent=2))
|
|
95
166
|
editor.figure.save('edited.svg', 'edited.pdf')
|
|
96
167
|
restored, report = recipe.with_layout_overrides(editor.overrides())
|
|
@@ -100,8 +171,10 @@ assert report['orphaned_targets'] == []
|
|
|
100
171
|
`editor.figure` is the last successful compiled snapshot and supports the normal
|
|
101
172
|
[export APIs](export-review.md), including PNG when render dependencies are
|
|
102
173
|
installed. `overrides()` and `snapshot()` return independently owned data.
|
|
103
|
-
Programmatic `command()` accepts `edit`, `reset`, `load`, `undo`,
|
|
104
|
-
`refresh`; an optional `revision=` rejects stale callers.
|
|
174
|
+
Programmatic `command()` accepts `gesture`, `edit`, `reset`, `load`, `undo`,
|
|
175
|
+
`redo` and `refresh`; an optional `revision=` rejects stale callers. A gesture
|
|
176
|
+
uses figure-space `dx`/`dy` in millimetres. Optional `factor` and `corner`
|
|
177
|
+
(`nw`, `ne`, `sw`, `se`) scale from the opposite corner.
|
|
105
178
|
|
|
106
179
|
## Refresh changed source content
|
|
107
180
|
|
|
@@ -130,8 +203,8 @@ remain accessible in Python. The `with LayoutEditor(recipe) as editor:` form
|
|
|
130
203
|
starts and closes the server automatically; keep that context alive during
|
|
131
204
|
browser use.
|
|
132
205
|
|
|
133
|
-
|
|
134
|
-
plot
|
|
206
|
+
The inspector edits named composition layout and artwork scale. Label content,
|
|
207
|
+
individual plot marks, camera controls, and file watching are not part of this interface.
|
|
135
208
|
The separate [linked-plot appearance editor](visual-editing.md) retains its
|
|
136
209
|
existing scope. Broader authoring and identity work remains on the
|
|
137
210
|
[4.0 roadmap](roadmap.md).
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Save and restore layout choices
|
|
2
2
|
|
|
3
|
-
Available
|
|
3
|
+
Available since **4.0.0.dev7**; uniform artwork scale is added in **dev9**, named text and callout decisions in **dev10**. 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
|
-
|
|
24
|
+
Supported named label differences are captured too. Other content and styles are not serialized into the layout file.
|
|
25
25
|
|
|
26
26
|
```python
|
|
27
27
|
import json
|
|
@@ -41,7 +41,7 @@ Path('layout.json').write_text(json.dumps(state, indent=2, allow_nan=False))
|
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
`layout_overrides(reference)` captures changed `x`, `y`, `anchor`, `width` and
|
|
44
|
-
`height` fields on children, plus `width`, `height`, `unit` and `fit_top` on
|
|
44
|
+
`height` and uniform `scale` fields on children, plus `width`, `height`, `unit` and `fit_top` on
|
|
45
45
|
compositions. It visits nested compositions through their named children.
|
|
46
46
|
Measured expressions remain expressions, so page resizing and dependent
|
|
47
47
|
content measurements still work after reopening.
|
|
@@ -52,6 +52,25 @@ 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.3","targets":{"/caption":{"labels":{"label":{"kind":"module-label","text":"Reviewed response"}}}}}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Readers accept legacy schemas 0.1 and 0.2. New captures use 0.3; 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
|
+
|
|
55
74
|
## Restore on the current recipe
|
|
56
75
|
|
|
57
76
|
```python
|
|
@@ -85,7 +104,7 @@ updated_figure = render(updated)
|
|
|
85
104
|
updated_figure.save('updated.svg')
|
|
86
105
|
```
|
|
87
106
|
|
|
88
|
-
The file stores layout decisions, not
|
|
107
|
+
The file stores layout and supported label decisions, not datasets, plot styles,
|
|
89
108
|
links, ports, constraints, factories or camera parameters. Keep the Python
|
|
90
109
|
recipe and its assets alongside it. The containing document can supply its own
|
|
91
110
|
render dimensions; restoring authored page dimensions does not override that
|
|
@@ -123,9 +142,12 @@ of 32 operations. Malformed files, nonfinite numbers, invalid properties and
|
|
|
123
142
|
contradictory edits to a shared nested definition are rejected, including when
|
|
124
143
|
`missing='drop'` is used.
|
|
125
144
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
145
|
+
New files use `inklet.composition-layout/0.3`, adding named label decisions to
|
|
146
|
+
0.2's positive uniform artwork scale. The loader also accepts 0.1 files from
|
|
147
|
+
dev7/dev8 (without scale) and 0.2 files from dev9 (without labels). Unknown
|
|
148
|
+
schemas are rejected. Upgrade older readers before opening a 0.3 file.
|
|
149
|
+
The JSON object contains `schema` and `targets`; each target has changed
|
|
150
|
+
`placement`, `page` and/or `labels` fields. This development-preview format is
|
|
129
151
|
not a general Python object serializer or an asset manifest.
|
|
130
152
|
|
|
131
153
|
## Review revised content
|
|
@@ -58,8 +58,12 @@ Dev7 adds [saved layout overrides](layout-overrides.md) keyed by named paths,
|
|
|
58
58
|
with measured expressions, independent restoration and explicit orphan reports.
|
|
59
59
|
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
|
-
|
|
62
|
-
|
|
61
|
+
Dev9 adds mouse movement, proportional artwork scaling and keyboard nudges
|
|
62
|
+
for named composition children, with preserved measured positions and saved
|
|
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. Serialized project templates, asset manifests, shared selection
|
|
66
|
+
relationships, axis-label/camera editing and finer-grained manipulation remain open. Subsequent work
|
|
63
67
|
should extend authoring and cross-content identity beyond this bounded inspector.
|
|
64
68
|
|
|
65
69
|
## 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()
|
|
@@ -12,6 +12,12 @@ from .spec import BuildSpec, ComponentSpec, fingerprint, freeze, length
|
|
|
12
12
|
from .compiler import LayoutError
|
|
13
13
|
|
|
14
14
|
|
|
15
|
+
def _scale(value):
|
|
16
|
+
if type(value) not in (int,float) or not math.isfinite(value) or value<=0:
|
|
17
|
+
raise ValueError('component scale must be a finite positive number')
|
|
18
|
+
return float(value)
|
|
19
|
+
|
|
20
|
+
|
|
15
21
|
@dataclass(frozen=True)
|
|
16
22
|
class _Slot(BuildSpec):
|
|
17
23
|
name: str
|
|
@@ -66,6 +72,7 @@ class _Part:
|
|
|
66
72
|
anchor: str | None = None
|
|
67
73
|
width: object = None
|
|
68
74
|
height: object = None
|
|
75
|
+
scale: float = 1
|
|
69
76
|
|
|
70
77
|
|
|
71
78
|
@dataclass(eq=False)
|
|
@@ -76,7 +83,8 @@ class Composition(BuildSpec):
|
|
|
76
83
|
and height describe data regions. Other children retain their authored size
|
|
77
84
|
unless explicit dimensions are provided. `anchor=None` preserves the local
|
|
78
85
|
coordinate frame; `nw`, `center`, registered ports and `area-nw` align a
|
|
79
|
-
measured point to (x, y).
|
|
86
|
+
measured point to (x, y). Dimension fitting never scales text or strokes. Explicit scale uniformly
|
|
87
|
+
scales the complete child artwork, including typography and strokes.
|
|
80
88
|
"""
|
|
81
89
|
width: float
|
|
82
90
|
height: float
|
|
@@ -109,11 +117,11 @@ class Composition(BuildSpec):
|
|
|
109
117
|
"""Reference a placed child's compass point or registered port."""
|
|
110
118
|
return tuple(LayoutValue('point', (name, anchor, axis)) for axis in ('x', 'y'))
|
|
111
119
|
|
|
112
|
-
def add(self, name, item, *, x=0, y=0, anchor=None, width=None, height=None):
|
|
120
|
+
def add(self, name, item, *, x=0, y=0, anchor=None, width=None, height=None, scale=1):
|
|
113
121
|
if not isinstance(name, str) or not re.fullmatch(r'[A-Za-z][A-Za-z0-9_-]*', name):
|
|
114
122
|
raise ValueError('component names start with a letter and contain letters, digits, underscores or hyphens')
|
|
115
123
|
if any(part.name == name for part in self._parts): raise LayoutError(f'duplicate component {name!r}')
|
|
116
|
-
self._parts.append(_Part(name, item, x, y, anchor, width, height))
|
|
124
|
+
self._parts.append(_Part(name, item, x, y, anchor, width, height, _scale(scale)))
|
|
117
125
|
return item
|
|
118
126
|
|
|
119
127
|
def __getitem__(self, name):
|
|
@@ -171,12 +179,13 @@ class Composition(BuildSpec):
|
|
|
171
179
|
def place(self, name, **placement):
|
|
172
180
|
"""Edit a child's placement without replacing its content or named links.
|
|
173
181
|
|
|
174
|
-
Accepts x, y, anchor, width and
|
|
182
|
+
Accepts x, y, anchor, width, height and uniform scale as in add(). Expressions and
|
|
175
183
|
resulting geometry are validated during compilation.
|
|
176
184
|
"""
|
|
177
185
|
from dataclasses import replace
|
|
178
|
-
unknown = placement.keys() - {'x','y','anchor','width','height'}
|
|
186
|
+
unknown = placement.keys() - {'x','y','anchor','width','height','scale'}
|
|
179
187
|
if unknown: raise TypeError(f'unknown placement options: {", ".join(sorted(unknown))}')
|
|
188
|
+
if 'scale' in placement: placement['scale'] = _scale(placement['scale'])
|
|
180
189
|
for index,part in enumerate(self._parts):
|
|
181
190
|
if part.name == name:
|
|
182
191
|
self._parts[index] = replace(part, **freeze(placement))
|
|
@@ -184,10 +193,10 @@ class Composition(BuildSpec):
|
|
|
184
193
|
raise KeyError(name)
|
|
185
194
|
|
|
186
195
|
def layout_overrides(self, reference):
|
|
187
|
-
"""Capture changed
|
|
196
|
+
"""Capture changed layout and compatible named labels against a reference.
|
|
188
197
|
|
|
189
198
|
Return JSON-compatible, versioned decisions keyed by named child paths.
|
|
190
|
-
|
|
199
|
+
Other content, styles, data, links and constraints remain in Python.
|
|
191
200
|
"""
|
|
192
201
|
from .layout_overrides import capture
|
|
193
202
|
return capture(self, reference)
|
|
@@ -225,7 +234,12 @@ class Composition(BuildSpec):
|
|
|
225
234
|
return self
|
|
226
235
|
|
|
227
236
|
def annotate(self, target, text, **options):
|
|
228
|
-
"""Place a measured callout
|
|
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}')
|
|
229
243
|
self._annotations.append((target, text, freeze(options)))
|
|
230
244
|
return self
|
|
231
245
|
|
|
@@ -282,7 +296,15 @@ class Composition(BuildSpec):
|
|
|
282
296
|
item = ComponentSpec(item.factory, evaluate(item.args), evaluate(item.kwargs), item.responsive)
|
|
283
297
|
w = None if part.width is None else length(evaluate(part.width), 'child width')*self.unit
|
|
284
298
|
h = None if part.height is None else length(evaluate(part.height), 'child height')*self.unit
|
|
285
|
-
|
|
299
|
+
node = context.build(item, w, h).copy()
|
|
300
|
+
factor = _scale(part.scale)
|
|
301
|
+
if factor != 1:
|
|
302
|
+
scaled = node.scaled(factor)
|
|
303
|
+
# Keep registered ports directly available to measured
|
|
304
|
+
# placement; their coordinates precede the new scale.
|
|
305
|
+
for key in node.anchors: scaled.anchors[key] = placed_anchor(node,key)
|
|
306
|
+
node = scaled
|
|
307
|
+
return node
|
|
286
308
|
built[name] = guarded('measure', name, perform)
|
|
287
309
|
return built[name]
|
|
288
310
|
|