inklet 4.0.0.dev11__tar.gz → 4.0.0.dev13__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.dev11 → inklet-4.0.0.dev13}/.github/workflows/publish.yml +5 -5
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/CHANGELOG.md +31 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/PKG-INFO +5 -6
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/README.md +4 -5
- inklet-4.0.0.dev13/docs/assets/guides/editor-studio.png +0 -0
- inklet-4.0.0.dev13/docs/assets/guides/layout-editor-camera.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/compatibility.md +16 -2
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/development-preview.md +40 -7
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/layout-editor.md +89 -14
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/layout-overrides.md +17 -5
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/release-checks.md +4 -3
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/roadmap.md +5 -1
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/pyproject.toml +1 -1
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/__init__.py +1 -1
- inklet-4.0.0.dev13/src/inklet/document/camera_overrides.py +53 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/layout_overrides.py +16 -12
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/layout_editor/__init__.py +11 -9
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/layout_editor/gestures.js +3 -3
- inklet-4.0.0.dev13/src/inklet/experimental/layout_editor/page.html +97 -0
- inklet-4.0.0.dev13/src/inklet/experimental/layout_editor/workspace.css +156 -0
- inklet-4.0.0.dev13/src/inklet/experimental/layout_editor/workspace.js +71 -0
- inklet-4.0.0.dev13/tests/test_camera_overrides.py +99 -0
- inklet-4.0.0.dev13/tests/test_editor_workspace.py +48 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_gestures.py +3 -3
- inklet-4.0.0.dev13/tests/test_publish_workflow.py +39 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/check_wheel.py +8 -1
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_gallery.json +3 -3
- inklet-4.0.0.dev11/src/inklet/experimental/layout_editor/page.html +0 -80
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/.gitattributes +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/.github/workflows/checks.yml +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/.gitignore +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/.readthedocs.yaml +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/CONTRACT.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/CONTRIBUTING.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/LICENSE +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/THIRD_PARTY_NOTICES.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/api.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/brand/inklet-icon.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/brand/inklet-logo-dark.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/brand/inklet-logo-mono.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/brand/inklet-logo.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/brand/inklet-wordmark.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/examples/quickstart.pdf +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/examples/quickstart.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/examples/quickstart.svg +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/axes-and-scales-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/calibrated-volumes-3.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/channels-and-contours-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/composition-recipes-narrow.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/composition-recipes.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/composition-recipes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-anchor.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-annotation.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-branch.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-broken-axis.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-callout.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-clipping.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-creases.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-custom-key.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-cutout.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-dates.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-dense.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-elbows.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-facets.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-fit-graph.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-flow-width.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-formula.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-graph.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-halo.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-heatmap.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-hole.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-inline-type.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-inset.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-labels.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-layers.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-letters.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-list.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-matrix.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-page-grid.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-polar.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-protein.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-routes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-scene.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-series-key.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-span.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-swarm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-text-path.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-toon.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-twin-axis.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-violin.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/data-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/data-3.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/dense-data-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/diagram-components-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/diagrams-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-3.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-editor-gestures.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-editor-labels.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-editor-styles.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-editor.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-restored.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-restored.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/layout-revised.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/oblique-sections-2.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plot-composition-narrow.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plot-composition.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plot-composition.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plot-quality-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plot-quality-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-band.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-bars.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-boxplot.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-errorbars.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-fill-between.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-fill.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-grouped-bars.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-hist.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-horizontal-bars.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-line-errors.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-line.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-markers.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-matrix.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-polar-curve.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-rose.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-scatter.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-series.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-stackarea.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-stacked-bars.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-step.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-swarm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plots-violin.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plotting-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/plotting-2.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/publication-plots-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/publication-plots-2.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/publication-plots-3.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/publication-plots-4.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/slabs-and-regions-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/three-images-1.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/guides/three-images-2.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/biology.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/clipping-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/clipping-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/clipping-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/clipping-lines-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/clipping-lines-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/comparison.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-marker-shapes-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-marker-shapes.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-markers-display.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-markers-hardware.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-scene-viewer.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-viewer-display.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-viewer-export.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compiled-viewer-study.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compositing-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compositing-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/compositing-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/dense-scatter-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/diagram-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/diagram-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/engine-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/engine-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/fluorescence-biology.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/general-plots-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/general-plots.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/hatch-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/hatch-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/hatch-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/label-intensities-native.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/label-intensities.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/lines-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/lines-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/marker-batches.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/marker-index-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/marker-index-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/marker-index-browser-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/marker-index-browser-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/oblique-biology.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/real-biology.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/render-scene-caption.tex +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/revision.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/scenes-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/scenes-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/slab-biology.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/study.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-culling-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-culling-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-culling-gpu-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-culling-gpu-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-redraw-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-redraw-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-redraw-display.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-redraw-profile.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-window-after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-window-before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/research-preview/viewer-window-display.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/after.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/before.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/browser-quality.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/browser-scatter.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/browser-scatter.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/browser-study.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/contours-streamlines-masked.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/contours-streamlines.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/contours-streamlines.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/engineering-report-170mm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/engineering-report.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/engineering-report.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/faceted-operations.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/faceted-operations.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/linked-dashboard.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/linked-dashboard.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/linked-selection.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/linked-selection.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/mesh-fields-170mm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/mesh-fields.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/mesh-fields.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/region-shapes.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/region-shapes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/regional-analysis.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/regional-analysis.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/regional-report-160mm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/regional-report.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/regional-report.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/scientific-report-170mm.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/scientific-report.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/scientific-report.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/statistical-views.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/statistical-views.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/table-inputs.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/table-inputs.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/time-series.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/time-series.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/transport-map.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/transport-map.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/visual-overrides.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population-2019.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population-2019.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population-2019.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population-revisions.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population-revisions.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/assets/v4/world-population.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/axes-and-scales.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/bars-and-areas.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/biology-panels.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/blender-scenes.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/brand.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/browser-rendering.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/calibrated-volumes.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/channels-and-contours.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/cli.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/clipping.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/compiled-scenes.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/compiled-viewer.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/complex-scene.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/compositing.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/composition-recipes.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/concepts.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/contours-streamlines.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/cookbook.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/data-revisions.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/data.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/dense-data.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/design/browser-backends.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/design/page_grid.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/design/v2.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/design/v4.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/diagram-components.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/diagram-engine.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/diagrams.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/distributions.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/engineering-report.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/example-library.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/examples.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/export-review.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/fluorescence-biology.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/general-plots.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/geographic-features.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/hatching.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/index.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/installation.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/interactive-documents.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/javascripts/inklet.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/label-intensities.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/label-measurements.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/layout.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/lines-and-points.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/linked-facets.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/linked-maps.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/linked-plots.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/marker-batches.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/marker-culling.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/matrices.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/mesh-fields.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/microscopy-tiff.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/migration.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/oblique-biology.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/oblique-sections.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/plot-quality.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/plot-recipes.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/plot-types.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/plotting-engine.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/plotting.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/polar-plots.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/presets.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/publication-plots.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/quickstart.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/real-biology.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/architecture-sketch.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/architecture.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/attractor.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/helix.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/interference.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/lattice.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/photonics.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/recipes/wave-packets.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/regional-report.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/render-jobs.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/rendering-engine.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/research-preview.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/research-revision.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/research-study.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/scene-annotations.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/scene-paths.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/scene-templates.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/scientific-report.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/showcase.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/slab-biology.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/slabs-and-regions.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/statistical-views.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/stress20.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/stylesheets/code.css +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/stylesheets/inklet.css +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/table-inputs.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/three-images.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/time-series.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/troubleshooting.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/uncertainty.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/v2.5.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/v2.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/v3.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/v4-foundations.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/visual-editing.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/docs/world-map.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/cells3d.lock.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/fluorescence.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/organelle.lock.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology/requirements.txt +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/biology_panels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/blender/complex_lab_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/blender/lab_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/blender/occlusion_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/blender/organelle_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/blender/research_lab_views.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/broken_axis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/clipping_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/compiled_marker_shapes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/compiled_scene_viewer.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/compositing_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/composition_recipes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/data/general-plots/benchmark.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/data/general-plots/learning.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/data/general-plots/revenue.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/data/general-plots/sensor.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/dense_scatter_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/diagram_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/engine_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/feature_flow.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/fluorescence_biology.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/gallery.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/general_plots.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/graph.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/hatch_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/hello_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/label_intensities.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/layout_editor.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/oblique_biology.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/panels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/plot_composition.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/plot_engine_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/plot_quality_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/polar.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/preset_formats.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/presets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/real_biology.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/render_scene_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/render_smoke.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/research_figure_planner.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/research_planner_study.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/research_revision.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/showcase/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/showcase/assets.lock.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/showcase/blender_scenes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/showcase/figures.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/slab_biology.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/state_machine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/stress20.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v25_document.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v2_cases.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v2_document.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_complex_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_render_jobs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_rendering.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_scene_annotations.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_scene_passes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_scene_paths.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v3_scene_templates.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/browser_scatter.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/contours_streamlines.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/data/world-countries.geojson +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/data/world-map-source.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/data/world-population.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/engineering_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/faceted_operations.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/assembly.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/manifest.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/measurement.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/region-shapes.geojson +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/regions.csv +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/regions.geojson +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/fixtures/transport.geojson +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/linked_dashboard.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/linked_selection.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/linked_selection.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/mesh_fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/region_shapes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/regional_analysis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/regional_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/scientific_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/statistical_views.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/table_inputs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/time_series.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/transport_map.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/examples/v4/world_population.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/annot.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/bio3d.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/cartoon.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/chem_data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/chem_fingerprints.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/data/1m17-kinase.pdb +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/data/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/drug_discovery.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/mouse_brain_data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/neural_activity.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/pdbfile.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/showcase_part.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/showcase_process.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/showcase_season.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/structure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/structure_data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/target.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/figures/trial.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/biology-panels.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/chem_fingerprints.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/clipping-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compiled-marker-shapes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compiled-scene-viewer.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compiled-viewer-culling.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compiled-viewer-deep-zoom.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compositing-pdf-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compositing-pdf-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/compositing-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/dense-scatter-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/diagram-labels-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/diagram-labels-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/diagram-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/engine-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/engine-transparency-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/engine-transparency-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/flow.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/fluorescence-biology.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/general-plots-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/general-plots.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/hatch-pdf-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/hatch-pdf-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/hatch-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/hatch-svg-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/label-intensities.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/oblique-biology.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/part.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/plot-axis-after.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/plot-axis-before.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/plot-engine-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/plots.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/polar.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/preset-formats.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/presets.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/process.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/real-biology.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/render-scene-data.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/render-scene-initial.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/render-scene-review.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/research-crossing-revision.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/research-figure-planner.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/research-planner-study.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/research-revision.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/season.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-architecture-sketch.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-architecture.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-attractor.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-helix.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-interference.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-lattice.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-photonics.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/showcase-wave-packets.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/slab-biology.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/stress20.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/structure.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-complex-scene.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-render-jobs.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-rendering.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-scene-annotations.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-scene-passes.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-scene-paths.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/gallery/v3-scene-templates.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/mkdocs.yml +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/requirements-ci.txt +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/requirements-docs.txt +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/requirements-tables.txt +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/scripts/bench_svg.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/scripts/rasterise.sh +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/scripts/sanity_typeset.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/__main__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/asset.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/cache.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/cutout.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/deps.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/harmonise.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/lineart.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/mask.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/provenance.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/raster.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/sidecar.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/assets/silhouette.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/cli.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/components.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/batch.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/diagram.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/envelope.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/geom.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/prims.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/style.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/trace.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/core/units.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/abut.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/break_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/color.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/cross.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/image.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/key_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/link_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/path_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/plot_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/diagnostics/three_rules.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/compiler.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/composition.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/data_io.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/label_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/module.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/presets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/publication.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/spec.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/document/style_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/annotate.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/bezier_clip.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/clip.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/coords.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/path.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/place.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/draw/shapes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/_table_adapters.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/compiled.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/compiled.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/drawings.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/editor.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/editor.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/geography.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/grid.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/images.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/page.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/regions.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/runtime.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/series.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/browser/timeaxis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/channels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/contours.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/engineering.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/figure_planner.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/grid.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/measurement.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/measurements.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/planner_geometry.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/regions.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/scene_viewer/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/scene_viewer/controls.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/scene_viewer/page.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/scene_viewer/runtime.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/scene_viewer/spatial.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/sections.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/selection.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/slabs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/temporal.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/tiff.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/experimental/volume.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/fit.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/flow.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/graph.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/graph_force.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/graph_layered.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/graph_tree.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/labels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/layout/sankey.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/links/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/links/curves.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/links/link.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/axis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/breaks.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/categories.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/facets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/inset.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/key.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/marks.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/notes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/panel.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/png.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/polar.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/ramp.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/raster.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/ribbon.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/scale.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/scatter_batch.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/scatter_raster.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/series.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/simplify.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/plot/timescale.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/analysis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/bounds.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/brushes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/bundle.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/composite.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/fontembed.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/glyphs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/hatching.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/outline.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/paint.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/pathdata.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/pdf.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/pdftext.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/preview.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/raster.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/resources.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/revision.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/render/svg.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/themes/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/themes/color.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/themes/palettes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/themes/theme.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/api.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/backend.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/device_worker.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/discover.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/lineart.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/options.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/scene_worker.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/script.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/svgread.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/template_worker.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender/tracing.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/blender_backend.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/camera.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/deps.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/depth.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/devices.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/drill.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/edges.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/hlr.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/linalg.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/mesh.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/occlude.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/order.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/parse.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/place.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/protein.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/quality.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/render_jobs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/scene_annotations.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/scene_pass.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/scene_projection.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/scenes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/shade.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/solids.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/templates.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/three/templates.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/__init__.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/fonts.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/markup.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/onpath.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/outline.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/src/inklet/typeset/shaping.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/assets/mouse.inklet.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/assets/mouse.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/dense_graph.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/draw_probe.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/assets/sem.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/assets/tem.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/cell.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/common.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/imaging.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/kinetics.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/micrograph.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro/system.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/electro_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/fidelity.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/flow.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/hard_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/label_storm.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/mega_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/meshes/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/meshes/brain-lh.obj +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/meshes/spot.obj +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/panels/apparatus.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/panels/graphs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/panels/relations.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/panels/responses.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/panels/sections.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/probes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/stress/three_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_alignment_contract.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_annotate.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_annotate_letters.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_assets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_assets_provenance.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_biology_source.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_blend_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_compiled.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_facets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_geography.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_regions.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_revision.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_scatter.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_series.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_statistics.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_switching.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_browser_time.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_categories.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_channels_contours.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_chem_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_cli.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_clip_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_components.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_compositing_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_composition_recipes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_contrast_and_labels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_cookbook.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_core.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_core_amendments.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_csv_input.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_api.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_artwork.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_break_distorts.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_crossing.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_image_contrast.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_ink.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_keys.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_links.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_paths.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagnostics_plot_box.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_diagram_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_docs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_docs_site.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_document.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_document_data.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_document_v25.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_draw_clip.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_draw_path.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_draw_place.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_draw_shapes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_engine_layout.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_engine_rendering.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_engine_scatter.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_engineering_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_export_bundle.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_figure_planner.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_fit.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_grid_fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_guides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_hatch_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_label_measurements.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_label_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_editor.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_graph.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_graph_fit.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_origin.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_layout_sankey.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_links.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_links_avoid.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_links_shapes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_marker_batches.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_mesh_fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_microscopy_tiff.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_neural_activity.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_output_contract.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_paint_program.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_place_labels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_axis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_broken_axis.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_clip.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_facets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_inset.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_key.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_labels.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_legend.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_marks.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_notes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_polar.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_publication.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_quality_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_raster.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_recipes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_ribbon.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_scale.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_swarm.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_plot_time.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_presets.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_publication_limits.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_regional_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_release_adversarial.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_devices.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_embed.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_glyphs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_jobs.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_outline.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_pdf.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_pdf_text.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_quality.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_scene.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_style_fields.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_svg_perf.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_render_v3.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_review_v25.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_round4_plot.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_routing_avoid.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scatter_rendering.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_annotations.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_culling.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_pass.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_projection.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_templates.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scene_viewer.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_scientific_report.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_sections.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_shared_plot_margins.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_showcase_library.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_showcase_round3.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_slabs_regions.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_structure_figure.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_style_overrides.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_svg.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_table_adapters.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_target_pose.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_temporal_adapters.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_text_markup.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_text_on_path.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_theme_font_style.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_themes.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_anchor_pin.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_api.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_backend_blender.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_blender.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_depth_order.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_drill.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_hlr.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_mesh.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_order_vector.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_overlay.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_parse.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_patches.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_place.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_protein.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_ridges.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_sort.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_sort_budget.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_three_view.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_typeset.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_v4_selection.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_volume.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_watch_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/test_world_map_example.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/README.md +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/categories-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/categories-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/components-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/components-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/dense-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/dense-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/fonts.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/inset-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/inset-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/markers-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/markers-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/renderers.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/type-opacity-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/type-opacity-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-dense-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-dense-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v2-workflow-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v25-document-pdf.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/baseline/v25-document-svg.png +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/fixtures.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tests/visual/v2-budgets.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_batches.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_clipping.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_diagrams.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_engine.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_lines.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_marker_index.mjs +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_scene_culling.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_scene_gpu.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_scene_redraw.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_scene_viewer.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_scene_zoom.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_v2.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/benchmark_v4.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/browser_study.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/check_render_wheel.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/dock_ligand.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_previews.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_previews.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_site.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/404.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/card.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/gallery.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/home.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/main.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/docs_theme/plot-gallery.html +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/gen_api.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/make_culling_review.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/plot_catalog.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/prepare_world_map.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/preset_gallery.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/profile_scene_redraw.js +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/showcase_gallery.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/stress20.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/strip_pdb.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/v3_showcase.py +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/tools/v4-budgets.json +0 -0
- {inklet-4.0.0.dev11 → inklet-4.0.0.dev13}/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.dev13
|
|
10
10
|
type: string
|
|
11
11
|
dry_run:
|
|
12
12
|
description: Validate release files without uploading to PyPI
|
|
@@ -42,8 +42,8 @@ jobs:
|
|
|
42
42
|
GH_REPO: ${{ github.repository }}
|
|
43
43
|
RELEASE_TAG: ${{ inputs.tag }}
|
|
44
44
|
run: |
|
|
45
|
-
[[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+)?$ ]] || {
|
|
46
|
-
echo 'Expected a stable or
|
|
45
|
+
[[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+|rc[0-9]+)?$ ]] || {
|
|
46
|
+
echo 'Expected a stable, development or RC tag such as v4.0.0, v4.0.0.dev13 or v4.0.0rc1' >&2
|
|
47
47
|
exit 1
|
|
48
48
|
}
|
|
49
49
|
gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
|
|
@@ -53,8 +53,8 @@ jobs:
|
|
|
53
53
|
release = json.loads((Path(os.environ['RUNNER_TEMP']) / 'release.json').read_text())
|
|
54
54
|
if release['isDraft']:
|
|
55
55
|
raise SystemExit('Publish the GitHub release before uploading its assets')
|
|
56
|
-
if release['isPrerelease'] != (
|
|
57
|
-
raise SystemExit('Development tags must be GitHub prereleases; stable tags must not')
|
|
56
|
+
if release['isPrerelease'] != any(marker in os.environ['RELEASE_TAG'] for marker in ('.dev', 'rc')):
|
|
57
|
+
raise SystemExit('Development and RC tags must be GitHub prereleases; stable tags must not')
|
|
58
58
|
PYCODE
|
|
59
59
|
version="${RELEASE_TAG#v}"
|
|
60
60
|
gh release download "$RELEASE_TAG" --dir dist \
|
|
@@ -2,6 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 4.0.0.dev13 — 2026-09-13
|
|
6
|
+
|
|
7
|
+
Thirteenth development preview: native camera choices in the composition editor.
|
|
8
|
+
The original 4.0 scope remains open; this is not a release candidate.
|
|
9
|
+
|
|
10
|
+
- Add a Camera inspector for builtin native model/solid components, with orbit
|
|
11
|
+
angles, roll and projection mode. Preserve explicit look-at eye/target vectors.
|
|
12
|
+
- Include camera edits in atomic layout transactions, undo/redo, shared instance
|
|
13
|
+
reconciliation, saved choices and matching SVG/PDF reconstruction.
|
|
14
|
+
- Introduce composition schema 0.5, retaining readers for 0.1–0.4. Report changed
|
|
15
|
+
camera kinds and unsupported replacement renderers as orphaned camera choices.
|
|
16
|
+
- Illustrate the camera workflow and document physical fitting limitations.
|
|
17
|
+
- Accept RC tags in the publishing gate, with tested prerelease/draft checks;
|
|
18
|
+
update the compatibility matrix without claiming broader browser coverage.
|
|
19
|
+
|
|
20
|
+
## 4.0.0.dev12 — 2026-09-13
|
|
21
|
+
|
|
22
|
+
Twelfth development preview: a redesigned local figure workspace.
|
|
23
|
+
3.1.0 remains the stable release.
|
|
24
|
+
|
|
25
|
+
- Add searchable object navigation, a large canvas, focused inspector tabs,
|
|
26
|
+
fixed apply/discard controls, header exports and revision feedback.
|
|
27
|
+
- Add fitted zoom, wheel zoom, pan tools and Space/middle-button dragging without
|
|
28
|
+
changing authored geometry. Preserve object gesture coordinates across zooms.
|
|
29
|
+
- Add native colour pickers, exact-value fields, keyboard shortcuts and a help
|
|
30
|
+
dialog; retain native text undo and adapt the workspace to smaller screens.
|
|
31
|
+
- Protect unapplied fields during selection and file/source actions; highlight
|
|
32
|
+
pending changes and offer explicit discard. Keep schema 0.4 and Python exports.
|
|
33
|
+
- Review real pointer capture and mobile overflow, extend browser regressions,
|
|
34
|
+
and update the illustrated editor guide.
|
|
35
|
+
|
|
5
36
|
## 4.0.0.dev11 — 2026-09-12
|
|
6
37
|
|
|
7
38
|
Eleventh development preview: unified composition layout, labels and appearance.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inklet
|
|
3
|
-
Version: 4.0.0.
|
|
3
|
+
Version: 4.0.0.dev13
|
|
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,15 @@ their signatures and report schemas may change.
|
|
|
81
81
|
|
|
82
82
|
## 4.0 development preview
|
|
83
83
|
|
|
84
|
-
**4.0.0.
|
|
85
|
-
|
|
86
|
-
layout, undo changes together, and save choices that reproduce through Python.
|
|
84
|
+
**4.0.0.dev13** adds native 3D camera editing to the studio workspace, with
|
|
85
|
+
shared undo/redo, saved choices and source revision reconciliation.
|
|
87
86
|
```sh
|
|
88
|
-
python -m pip install "inklet==4.0.0.
|
|
87
|
+
python -m pip install "inklet==4.0.0.dev13"
|
|
89
88
|
```
|
|
90
89
|
|
|
91
90
|
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
92
91
|
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
93
|
-
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.
|
|
92
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev13)
|
|
94
93
|
|
|
95
94
|
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
96
95
|
may change; 3.1.0 remains the stable release. General browser editing,
|
|
@@ -31,16 +31,15 @@ their signatures and report schemas may change.
|
|
|
31
31
|
|
|
32
32
|
## 4.0 development preview
|
|
33
33
|
|
|
34
|
-
**4.0.0.
|
|
35
|
-
|
|
36
|
-
layout, undo changes together, and save choices that reproduce through Python.
|
|
34
|
+
**4.0.0.dev13** adds native 3D camera editing to the studio workspace, with
|
|
35
|
+
shared undo/redo, saved choices and source revision reconciliation.
|
|
37
36
|
```sh
|
|
38
|
-
python -m pip install "inklet==4.0.0.
|
|
37
|
+
python -m pip install "inklet==4.0.0.dev13"
|
|
39
38
|
```
|
|
40
39
|
|
|
41
40
|
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
42
41
|
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
43
|
-
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.
|
|
42
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev13)
|
|
44
43
|
|
|
45
44
|
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
46
45
|
may change; 3.1.0 remains the stable release. General browser editing,
|
|
Binary file
|
|
Binary file
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# Compatibility
|
|
2
2
|
|
|
3
|
-
Inklet **3.1**
|
|
3
|
+
Stable Inklet **3.1** and the **4.0 development line** use the environments
|
|
4
|
+
and rendering paths below. Preview-only capabilities are identified separately.
|
|
4
5
|
The matrix distinguishes installed-package checks from full integration tests.
|
|
5
6
|
|
|
6
7
|
## Test coverage
|
|
@@ -48,12 +49,25 @@ Blender. Scene creation and rendering run Blender in a separate process.
|
|
|
48
49
|
### Development-preview table adapters
|
|
49
50
|
|
|
50
51
|
The [pandas and Polars adapters](table-inputs.md) are included in the experimental
|
|
51
|
-
[4.0
|
|
52
|
+
[4.0 development preview](development-preview.md), not in stable 3.1.0. Their `pandas` and `polars` extras are separate
|
|
52
53
|
from core dependencies. The adapter CI jobs use Linux/Python 3.12 with pandas
|
|
53
54
|
2.2.0 / Polars 1.0.0 and the versions pinned in `requirements-tables.txt`.
|
|
54
55
|
Both paths check scalar/identity contracts and saved-state SVG reconstruction.
|
|
55
56
|
The core wheel checks that neither integration is required or imported.
|
|
56
57
|
|
|
58
|
+
### Browser workflows and local editor
|
|
59
|
+
|
|
60
|
+
The 4.0 preview includes standalone linked HTML and a Python-backed composition
|
|
61
|
+
editor. Automated browser integration uses Chromium on Linux. Firefox, Safari,
|
|
62
|
+
mobile browsers and browser interaction on Windows/macOS are not covered by
|
|
63
|
+
that integration matrix. Windows/macOS wheel checks verify installed editor
|
|
64
|
+
assets and representative static exports; they are not browser certification.
|
|
65
|
+
|
|
66
|
+
The composition editor requires a running local Python session and binds to
|
|
67
|
+
loopback. Its saved choices are JSON overrides for an existing Python recipe,
|
|
68
|
+
not a standalone project. Linked HTML has a separate saved-selection format.
|
|
69
|
+
See [the editor](layout-editor.md) and [saved layouts](layout-overrides.md).
|
|
70
|
+
|
|
57
71
|
### Rendering
|
|
58
72
|
|
|
59
73
|
The legacy vector line-art backend uses Blender's pre-4.3 Grease Pencil API.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Inklet 4.0.0.
|
|
1
|
+
# Inklet 4.0.0.dev13
|
|
2
2
|
|
|
3
|
-
The
|
|
3
|
+
The thirteenth 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.dev13"
|
|
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.dev13"
|
|
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.dev13"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
The core preview needs no browser server, NumPy, pandas, Polars or Blender.
|
|
@@ -29,7 +29,40 @@ 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
|
+
## Native camera editing in dev13
|
|
33
|
+
|
|
34
|
+
The [Camera tab](layout-editor.md#edit-a-native-3d-camera) edits native model and
|
|
35
|
+
solid components: orbit angles, roll and projection mode, with undo/redo and
|
|
36
|
+
matching saved SVG/PDF output. Explicit look-at views retain eye and target.
|
|
37
|
+
Schema 0.5 adds camera choices; 0.1–0.4 still load. Source geometry can change
|
|
38
|
+
without losing compatible camera edits. Incompatible camera kinds are reported.
|
|
39
|
+
|
|
40
|
+

|
|
41
|
+
|
|
42
|
+
This is another development increment, not RC1. The original 4.0 scope remains
|
|
43
|
+
in force: asset manifests, shared object relationships and the other roadmap
|
|
44
|
+
gates still need implementation and acceptance evidence. Publishing now supports
|
|
45
|
+
RC tags when those gates are ready.
|
|
46
|
+
|
|
47
|
+
## Studio workspace retained from dev12
|
|
48
|
+
|
|
49
|
+
The [composition editor](layout-editor.md) now has a searchable object navigator,
|
|
50
|
+
a central figure canvas and a focused inspector. Layout, Labels and Styles use
|
|
51
|
+
compact tabs, colour swatches and visible pending-change feedback. Apply/discard
|
|
52
|
+
controls stay accessible; save/export and undo/redo move to the header.
|
|
53
|
+
|
|
54
|
+

|
|
55
|
+
|
|
56
|
+
Zoom, Fit and pan explore the canvas without changing the authored figure.
|
|
57
|
+
Object gestures retain their figure coordinates at different zoom levels.
|
|
58
|
+
Keyboard shortcuts cover apply, save and undo/redo; the help dialog lists the
|
|
59
|
+
full set. Pending edits are protected during selection, source refresh and
|
|
60
|
+
file actions. The layout adapts to tablet and phone screens.
|
|
61
|
+
|
|
62
|
+
This is a UI change: existing schema 0.4 files and the Python compiler remain
|
|
63
|
+
the source of saved choices and SVG/PDF exports.
|
|
64
|
+
|
|
65
|
+
## Unified composition authoring retained from dev11
|
|
33
66
|
|
|
34
67
|
The [composition editor](layout-editor.md#edit-appearance-alongside-layout) now
|
|
35
68
|
combines Layout, Labels and Styles sections. Pending changes across sections
|
|
@@ -220,7 +253,7 @@ The wheel contains the library. To obtain recipes and fixtures, use the matching
|
|
|
220
253
|
release checkout or source archive:
|
|
221
254
|
|
|
222
255
|
```sh
|
|
223
|
-
git clone --branch v4.0.0.
|
|
256
|
+
git clone --branch v4.0.0.dev13 https://github.com/Mapika/inklet.git
|
|
224
257
|
cd inklet
|
|
225
258
|
python -m pip install -e '.[render]'
|
|
226
259
|
python examples/v4/regional_report.py --renderer compiled --editor --output out/regional
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# Local layout editor
|
|
2
2
|
|
|
3
|
-
Available since **4.0.0.dev8**, with
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
Available since **4.0.0.dev8**, with the redesigned studio workspace in
|
|
4
|
+
**4.0.0.dev12**, under `inklet.experimental.layout_editor`. Arrange named
|
|
5
|
+
content, edit labels and appearance, and review the actual Python-compiled
|
|
6
|
+
figure. Downloaded SVG/PDF files use that same successful preview.
|
|
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:
|
|
@@ -19,6 +19,37 @@ press Ctrl+C to stop it. This is a local editor, not a standalone HTML editing
|
|
|
19
19
|
file. Ordinary [figure viewers](compiled-viewer.md) remain available for
|
|
20
20
|
sharing a finished document without a Python process.
|
|
21
21
|
|
|
22
|
+
## A workspace for your figure
|
|
23
|
+
|
|
24
|
+
The desktop workspace has a searchable object navigator, a central canvas and
|
|
25
|
+
an inspector with **Layout**, **Labels**, **Styles** and **Camera** tabs. Select an object
|
|
26
|
+
from the navigator or directly on the figure. Nested objects retain their
|
|
27
|
+
hierarchy, and the inspector shows the exact source path. On smaller screens,
|
|
28
|
+
a **Content** selector replaces the navigator; on phones the inspector sits
|
|
29
|
+
below the canvas.
|
|
30
|
+
|
|
31
|
+
Use **+**, **−** and **Fit** to explore the figure. The zoom percentage is
|
|
32
|
+
relative to the fitted view, not a physical-size preview. Ctrl/Cmd + wheel also
|
|
33
|
+
zooms. Use the pan tool, middle-button dragging, or hold Space and drag to move
|
|
34
|
+
the viewport. View changes never resize the authored figure or enter its undo
|
|
35
|
+
history. Object movements and corner scaling still use figure coordinates at
|
|
36
|
+
any zoom level.
|
|
37
|
+
|
|
38
|
+
Changed fields are highlighted and counted. Switch inspector tabs to combine
|
|
39
|
+
edits, then **Apply changes** as one undo step. **Discard** clears unapplied
|
|
40
|
+
fields. Selecting another object, refreshing, undoing, opening a file, saving
|
|
41
|
+
or exporting asks you to apply or discard pending changes first; browser
|
|
42
|
+
navigation also warns about pending edits. Applied changes still need **Save
|
|
43
|
+
choices** to download a portable file.
|
|
44
|
+
|
|
45
|
+
Colour swatches open the native picker, while the adjacent field accepts exact
|
|
46
|
+
colour values. Automatic/transparent values use a muted swatch. Undo/redo and
|
|
47
|
+
file actions stay in the header; **Export** offers SVG and PDF. The footer shows
|
|
48
|
+
compile feedback and the current revision. The **Shortcuts** dialog documents
|
|
49
|
+
all controls, including Ctrl/Cmd + Enter to apply, Ctrl/Cmd + Z to undo,
|
|
50
|
+
Ctrl/Cmd + Shift + Z to redo and Ctrl/Cmd + S to save applied choices. Text inputs
|
|
51
|
+
retain native text undo.
|
|
52
|
+
|
|
22
53
|
## Start with your composition
|
|
23
54
|
|
|
24
55
|
```python
|
|
@@ -79,7 +110,7 @@ top-fitting behavior; dependent content can reflow when the compiler rebuilds.
|
|
|
79
110
|
|
|
80
111
|

|
|
81
112
|
|
|
82
|
-
Select a composition child, choose **Labels**
|
|
113
|
+
Select a composition child, choose the **Labels** tab, then change its fields and choose **Apply
|
|
83
114
|
changes**. The editor supports text components created with `component(i.text,
|
|
84
115
|
...)`, string module captions, and plot `title`, `text` and `annotate`
|
|
85
116
|
instructions with an explicit string `key`. For composition callouts, supply a
|
|
@@ -119,9 +150,9 @@ Undo/redo, reset, saved JSON and SVG/PDF exports include the label edits.
|
|
|
119
150
|
|
|
120
151
|

|
|
121
152
|
|
|
122
|
-
Choose **Styles**
|
|
153
|
+
Choose the **Styles** tab. Layout, Labels and Styles retain their pending
|
|
123
154
|
changes when switching sections; **Apply changes** compiles them together as
|
|
124
|
-
one undo step.
|
|
155
|
+
one undo step. Apply or discard pending fields before selecting another content target.
|
|
125
156
|
|
|
126
157
|
| Named content | Available appearance controls |
|
|
127
158
|
| --- | --- |
|
|
@@ -160,7 +191,7 @@ Explicit discard removes that style target's edits while preserving compatible
|
|
|
160
191
|
labels and placements on the chart.
|
|
161
192
|
|
|
162
193
|
Styles use the same named path, key and kind contracts as labels. New saved
|
|
163
|
-
files use schema 0.
|
|
194
|
+
files use schema 0.5; 0.1 through 0.4 files still load. This unifies authoring
|
|
164
195
|
within the composition editor. The separate [linked-table style inspector](visual-editing.md)
|
|
165
196
|
retains its own source-bound format; its files are not interchangeable. Plot
|
|
166
197
|
titles, axes, bars, arbitrary factories, gradients and camera/material settings
|
|
@@ -168,7 +199,7 @@ are outside this style-control subset.
|
|
|
168
199
|
|
|
169
200
|
## Edit and review
|
|
170
201
|
|
|
171
|
-
Choose a named path in **Content** and
|
|
202
|
+
Choose a named path in **Content** and an inspector tab, enter the fields you want to change, then
|
|
172
203
|
select **Apply changes**. Other fields retain their definitions.
|
|
173
204
|
|
|
174
205
|
- Child placement fields are X, Y, anchor, width, height and uniform scale. Numbers use the
|
|
@@ -196,12 +227,12 @@ appears. Distinct placements of that shared content remain independently editabl
|
|
|
196
227
|
|
|
197
228
|
## Save, reopen and export
|
|
198
229
|
|
|
199
|
-
**Save
|
|
200
|
-
[saved layout choices](layout-overrides.md). **Open
|
|
230
|
+
**Save choices** downloads the versioned JSON described in
|
|
231
|
+
[saved layout choices](layout-overrides.md). **Open** loads that
|
|
201
232
|
same format. The file contains changed layout, label and supported style fields.
|
|
202
233
|
Other source content, assets and undo history stay outside the file. Keep it alongside the recipe.
|
|
203
234
|
|
|
204
|
-
**
|
|
235
|
+
**Export → SVG** and **Export → PDF** export the successful preview revision.
|
|
205
236
|
If another editor tab changes the session first, stale commands and export
|
|
206
237
|
links are rejected. Use **Reload editor** to obtain the current shared state.
|
|
207
238
|
|
|
@@ -255,7 +286,51 @@ starts and closes the server automatically; keep that context alive during
|
|
|
255
286
|
browser use.
|
|
256
287
|
|
|
257
288
|
The inspector edits named composition layout and artwork scale. Label content,
|
|
258
|
-
individual plot marks, camera
|
|
289
|
+
individual plot marks, camera dragging, and file watching are not part of this interface.
|
|
259
290
|
The separate [linked-plot appearance editor](visual-editing.md) retains its
|
|
260
291
|
existing scope. Broader authoring and identity work remains on the
|
|
261
292
|
[4.0 roadmap](roadmap.md).
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
## Edit a native 3D camera
|
|
296
|
+
|
|
297
|
+
Select a named `i.component(i.model, ...)` or `i.component(i.solid, ...)` and open
|
|
298
|
+
**Camera**. Native orbit cameras expose azimuth, elevation and roll in degrees,
|
|
299
|
+
and perspective. Apply recompiles the figure through Python;
|
|
300
|
+
undo, saved choices and SVG/PDF exports include the same camera decision.
|
|
301
|
+
Canvas zoom and pan remain view-only controls.
|
|
302
|
+
|
|
303
|
+

|
|
304
|
+
|
|
305
|
+
```python
|
|
306
|
+
import inklet as i
|
|
307
|
+
from inklet.experimental.layout_editor import LayoutEditor
|
|
308
|
+
|
|
309
|
+
study = i.composition(100, 70)
|
|
310
|
+
study.add('model', i.component(i.solid, 'cube', width=35, style='shaded'),
|
|
311
|
+
x=15, y=15)
|
|
312
|
+
editor = LayoutEditor(study)
|
|
313
|
+
editor.command('edit', {'path': '/model', 'cameras': {'view': {
|
|
314
|
+
'kind': 'native-orbit', 'azimuth': 15, 'elevation': 20,
|
|
315
|
+
'perspective': True,
|
|
316
|
+
}}})
|
|
317
|
+
choices = editor.overrides()
|
|
318
|
+
reopened = LayoutEditor(study)
|
|
319
|
+
reopened.command('load', choices)
|
|
320
|
+
assert reopened.figure.to_svg() == editor.figure.to_svg()
|
|
321
|
+
editor.figure.save('camera-study.svg', 'camera-study.pdf')
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Only edited fields are saved. Replacing the source mesh keeps the camera edits;
|
|
325
|
+
unedited source camera fields remain live. Explicit `Camera.look_at` views
|
|
326
|
+
retain eye, target and up vectors and expose roll and perspective.
|
|
327
|
+
Changing between orbit and look-at cameras reports incompatible saved camera
|
|
328
|
+
choices. Review before explicitly discarding them on refresh.
|
|
329
|
+
|
|
330
|
+
This inspector supports the builtin native model renderer. It does not edit
|
|
331
|
+
Blender scene cameras, standalone linked-HTML cameras, arbitrary prebuilt
|
|
332
|
+
Diagrams, or eye/target vectors. Camera dragging and depth-aware selection remain
|
|
333
|
+
open work. Elevation is limited to −90 through 90 degrees.
|
|
334
|
+
The native renderer fits models to their physical width/height, which cancels
|
|
335
|
+
the focal scale of a field-of-view change at a fixed eye position. The inspector
|
|
336
|
+
therefore preserves the source field of view without exposing an ineffective control.
|
|
@@ -66,7 +66,7 @@ A saved label entry includes its kind and only the fields that changed:
|
|
|
66
66
|
{"schema":"inklet.composition-layout/0.4","targets":{"/caption":{"labels":{"label":{"kind":"module-label","text":"Reviewed response"}}}}}
|
|
67
67
|
```
|
|
68
68
|
|
|
69
|
-
Readers accept legacy schemas 0.1, 0.2 and 0.
|
|
69
|
+
Readers accept legacy schemas 0.1, 0.2, 0.3 and 0.4. New captures use 0.5; older readers
|
|
70
70
|
must be upgraded before opening them. Label fields are rejected under older
|
|
71
71
|
schema identifiers. Removed/incompatible labels appear as `path#key` in the
|
|
72
72
|
orphan report. Explicit `missing='drop'` retains compatible edits on that path.
|
|
@@ -156,12 +156,13 @@ of 32 operations. Malformed files, nonfinite numbers, invalid properties and
|
|
|
156
156
|
contradictory edits to a shared nested definition are rejected, including when
|
|
157
157
|
`missing='drop'` is used.
|
|
158
158
|
|
|
159
|
-
New files use `inklet.composition-layout/0.
|
|
159
|
+
New files use `inklet.composition-layout/0.5`, adding named camera decisions.
|
|
160
160
|
The loader also accepts 0.1 files from dev7/dev8 (without scale), 0.2 files from
|
|
161
|
-
dev9 (without labels)
|
|
162
|
-
|
|
161
|
+
dev9 (without labels), 0.3 files from dev10 (without styles) and 0.4 files from
|
|
162
|
+
dev11/dev12 (without cameras). Unknown schemas
|
|
163
|
+
are rejected. Upgrade older readers before opening a 0.5 file. The JSON object
|
|
163
164
|
contains `schema` and `targets`; each target has changed `placement`, `page`,
|
|
164
|
-
`labels` and/or `
|
|
165
|
+
`labels`, `styles` and/or `cameras` fields. This development-preview format is not a general
|
|
165
166
|
Python object serializer or an asset manifest.
|
|
166
167
|
|
|
167
168
|
## Review revised content
|
|
@@ -176,3 +177,14 @@ in `out/composition-recipes/`. PNG generation requires the render extras.
|
|
|
176
177
|
|
|
177
178
|
In dev8, the [local layout editor](layout-editor.md) provides browser controls,
|
|
178
179
|
undo/redo and Python-compiled previews using this saved format.
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
## Saved camera choices
|
|
183
|
+
|
|
184
|
+
Schema 0.5 adds `cameras` alongside layout, labels and styles. The `view` key has
|
|
185
|
+
kind `native-orbit` or `native-look-at`, and only changed fields are recorded.
|
|
186
|
+
[Camera editing](layout-editor.md#edit-a-native-3d-camera) documents the supported
|
|
187
|
+
native components and controls. Orbit/look-at changes and unsupported replacement
|
|
188
|
+
renderers report an orphan such as `/model#camera:view`. Explicitly dropping that
|
|
189
|
+
orphan preserves compatible placement, label and style choices on the object.
|
|
190
|
+
Schemas 0.1–0.4 remain readable but cannot contain camera edits.
|
|
@@ -98,7 +98,8 @@ the wheel and source archive from an existing, published GitHub release.
|
|
|
98
98
|
It verifies the release's `SHA256SUMS` and runs Twine's strict metadata checks.
|
|
99
99
|
It does not rebuild the packages, so GitHub and PyPI receive identical files.
|
|
100
100
|
The workflow accepts stable tags such as `v3.1.0` and developmental tags such as
|
|
101
|
-
`v4.0.0.dev1`, and
|
|
101
|
+
`v4.0.0.dev1`, and release candidates such as `v4.0.0rc1`, and runs from
|
|
102
|
+
`master`. Development and RC tags must be marked as GitHub
|
|
102
103
|
prereleases; stable tags must not. Both archives' package name/version metadata
|
|
103
104
|
must match the tag.
|
|
104
105
|
|
|
@@ -139,9 +140,9 @@ publishing workflow. PyPI does not permit replacing an uploaded distribution;
|
|
|
139
140
|
package changes require a new version.
|
|
140
141
|
|
|
141
142
|
|
|
142
|
-
For a development snapshot, mark the GitHub release as a prerelease and keep it
|
|
143
|
+
For a development snapshot or release candidate, mark the GitHub release as a prerelease and keep it
|
|
143
144
|
out of GitHub's latest stable release slot (`gh release create --prerelease
|
|
144
|
-
--latest=false`). Use an exact PEP 440 version, for example `4.0.0.dev1`, in both
|
|
145
|
+
--latest=false`). Use an exact PEP 440 version, for example `4.0.0.dev1` or `4.0.0rc1`, in both
|
|
145
146
|
`pyproject.toml` and `inklet.__version__`. The same checksum, metadata and
|
|
146
147
|
isolated-package checks apply; run the workflow first with `dry_run=true`, then
|
|
147
148
|
publish the same attached files with `dry_run=false`. Users opt in with an exact
|
|
@@ -64,7 +64,11 @@ choices. Dev10 adds saved named text and callout editing across modules, text
|
|
|
64
64
|
components, keyed plot instructions and composition annotations, including typed
|
|
65
65
|
identity reconciliation. Dev11 connects supported plot, text and module styles
|
|
66
66
|
to that same layout/label history, saved state and reconciliation workflow,
|
|
67
|
-
with data-driven marker fields protected from constant overrides.
|
|
67
|
+
with data-driven marker fields protected from constant overrides. Dev12 adds
|
|
68
|
+
the studio workspace: object navigation, focused controls, zoom/pan, shortcuts
|
|
69
|
+
and protection for pending edits.
|
|
70
|
+
The next increment adds native orbit/look-at camera choices to the same editor,
|
|
71
|
+
saved schema and source reconciliation; general camera manipulation remains open.
|
|
68
72
|
Serialized project templates, asset manifests, shared selection
|
|
69
73
|
relationships, axis-label/camera editing and finer-grained manipulation remain open. Subsequent work
|
|
70
74
|
should extend authoring and cross-content identity beyond this bounded inspector.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"""Saved native 3D camera choices without replacing source geometry."""
|
|
2
|
+
from dataclasses import replace
|
|
3
|
+
import math
|
|
4
|
+
|
|
5
|
+
from .spec import ComponentSpec
|
|
6
|
+
from ..three.camera import as_camera
|
|
7
|
+
|
|
8
|
+
_FIELDS = {'azimuth', 'elevation', 'roll', 'perspective'}
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def targets(item):
|
|
12
|
+
from .. import model, solid
|
|
13
|
+
if not isinstance(item, ComponentSpec) or item.factory not in (model, solid):
|
|
14
|
+
return {}
|
|
15
|
+
if item.kwargs.get('backend', 'builtin') != 'builtin':
|
|
16
|
+
return {}
|
|
17
|
+
camera = as_camera(item.kwargs.get('view'))
|
|
18
|
+
# Explicit look-at cameras retain their eye, target and up vector. Angle
|
|
19
|
+
# fields would be ignored by that camera and must not appear editable.
|
|
20
|
+
fields = _FIELDS if camera.eye is None else _FIELDS - {'azimuth', 'elevation'}
|
|
21
|
+
kind = 'native-orbit' if camera.eye is None else 'native-look-at'
|
|
22
|
+
return {'view': ({'kind': kind, **{key: getattr(camera, key) for key in sorted(fields)}}, camera)}
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def validate(value):
|
|
26
|
+
if not isinstance(value, dict) or not value:
|
|
27
|
+
raise ValueError('cameras must be a nonempty object')
|
|
28
|
+
result = {}
|
|
29
|
+
for key, fields in value.items():
|
|
30
|
+
if key != 'view' or not isinstance(fields, dict):
|
|
31
|
+
raise ValueError('camera choices require a view field object')
|
|
32
|
+
kind = fields.get('kind')
|
|
33
|
+
allowed = _FIELDS if kind == 'native-orbit' else _FIELDS - {'azimuth', 'elevation'}
|
|
34
|
+
if kind not in ('native-orbit', 'native-look-at') or len(fields) < 2 or not set(fields) <= {'kind', *allowed}:
|
|
35
|
+
raise ValueError('invalid camera kind or fields')
|
|
36
|
+
for name, val in fields.items():
|
|
37
|
+
if name == 'kind':
|
|
38
|
+
continue
|
|
39
|
+
if name == 'perspective':
|
|
40
|
+
if type(val) is not bool:
|
|
41
|
+
raise ValueError('camera perspective must be a boolean')
|
|
42
|
+
elif type(val) not in (int, float) or not math.isfinite(val):
|
|
43
|
+
raise ValueError('camera angles must be finite numbers')
|
|
44
|
+
elif name == 'elevation' and not -90 <= val <= 90:
|
|
45
|
+
raise ValueError('camera elevation must be between -90 and 90 degrees')
|
|
46
|
+
result[key] = dict(fields)
|
|
47
|
+
return result
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def apply(item, edits):
|
|
51
|
+
camera = as_camera(item.kwargs.get('view'))
|
|
52
|
+
changes = {key: val for key, val in edits['view'].items() if key != 'kind'}
|
|
53
|
+
item.kwargs = {**item.kwargs, 'view': replace(camera, **changes)}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Portable layout, text and
|
|
1
|
+
"""Portable layout, text, appearance and camera decisions for named composition recipes."""
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import math
|
|
@@ -6,10 +6,11 @@ import re
|
|
|
6
6
|
|
|
7
7
|
from .compiler import LayoutError
|
|
8
8
|
from .spec import length
|
|
9
|
-
from . import label_overrides as labels, style_overrides as styles
|
|
10
|
-
_EDITORS = {"labels":labels, "styles":styles}
|
|
9
|
+
from . import label_overrides as labels, style_overrides as styles, camera_overrides as cameras
|
|
10
|
+
_EDITORS = {"labels":labels, "styles":styles, "cameras":cameras}
|
|
11
11
|
|
|
12
|
-
SCHEMA = 'inklet.composition-layout/0.
|
|
12
|
+
SCHEMA = 'inklet.composition-layout/0.5'
|
|
13
|
+
STYLE_SCHEMA = 'inklet.composition-layout/0.4'
|
|
13
14
|
LABEL_SCHEMA = 'inklet.composition-layout/0.3'
|
|
14
15
|
SCALE_SCHEMA = 'inklet.composition-layout/0.2'
|
|
15
16
|
LEGACY_SCHEMA = 'inklet.composition-layout/0.1'
|
|
@@ -95,7 +96,7 @@ def _page(values):
|
|
|
95
96
|
|
|
96
97
|
|
|
97
98
|
def capture(recipe, reference):
|
|
98
|
-
"""Record changed layout and compatible named labels/styles; keep unedited fields live."""
|
|
99
|
+
"""Record changed layout and compatible named labels/styles/cameras; keep unedited fields live."""
|
|
99
100
|
from .composition import Composition
|
|
100
101
|
if not isinstance(reference,Composition): raise TypeError('reference must be a Composition')
|
|
101
102
|
current, before = _targets(recipe), _targets(reference)
|
|
@@ -141,7 +142,7 @@ def apply(recipe, value, *, missing='error'):
|
|
|
141
142
|
"""Validate all edits, reconcile stable names, then edit an independent copy."""
|
|
142
143
|
from .composition import Composition
|
|
143
144
|
if missing not in ('error','drop'): raise ValueError('missing policy must be error or drop')
|
|
144
|
-
if (not isinstance(value,dict) or set(value)!={'schema','targets'} or value['schema'] not in (SCHEMA,LABEL_SCHEMA,SCALE_SCHEMA,LEGACY_SCHEMA)
|
|
145
|
+
if (not isinstance(value,dict) or set(value)!={'schema','targets'} or value['schema'] not in (SCHEMA,STYLE_SCHEMA,LABEL_SCHEMA,SCALE_SCHEMA,LEGACY_SCHEMA)
|
|
145
146
|
or not isinstance(value['targets'],dict)):
|
|
146
147
|
raise ValueError('invalid composition layout overrides')
|
|
147
148
|
targets = _targets(recipe)
|
|
@@ -149,7 +150,7 @@ def apply(recipe, value, *, missing='error'):
|
|
|
149
150
|
for path,entry in value['targets'].items():
|
|
150
151
|
if not isinstance(path,str) or not re.fullmatch(r'/(?:'+_NAME+r'(?:/'+_NAME+r')*)?',path):
|
|
151
152
|
raise ValueError('layout targets require absolute named composition paths')
|
|
152
|
-
if not isinstance(entry,dict) or not entry or not set(entry)<={'placement','page','labels','styles'}:
|
|
153
|
+
if not isinstance(entry,dict) or not entry or not set(entry)<={'placement','page','labels','styles','cameras'}:
|
|
153
154
|
raise ValueError(f'invalid layout target properties: {path}')
|
|
154
155
|
options = {}
|
|
155
156
|
if 'placement' in entry:
|
|
@@ -158,11 +159,14 @@ def apply(recipe, value, *, missing='error'):
|
|
|
158
159
|
raise ValueError('scale requires composition layout schema 0.2')
|
|
159
160
|
if 'page' in entry: options['page'] = _page(entry['page'])
|
|
160
161
|
if 'labels' in entry:
|
|
161
|
-
if value['schema'] not in (SCHEMA,LABEL_SCHEMA): raise ValueError('labels require composition layout schema 0.3')
|
|
162
|
+
if value['schema'] not in (SCHEMA,STYLE_SCHEMA,LABEL_SCHEMA): raise ValueError('labels require composition layout schema 0.3')
|
|
162
163
|
options['labels'] = labels.validate(entry['labels'])
|
|
163
164
|
if 'styles' in entry:
|
|
164
|
-
if value['schema']
|
|
165
|
+
if value['schema'] not in (SCHEMA,STYLE_SCHEMA): raise ValueError('styles require composition layout schema 0.4')
|
|
165
166
|
options['styles'] = styles.validate(entry['styles'])
|
|
167
|
+
if 'cameras' in entry:
|
|
168
|
+
if value['schema']!=SCHEMA: raise ValueError('cameras require composition layout schema 0.5')
|
|
169
|
+
options['cameras'] = cameras.validate(entry['cameras'])
|
|
166
170
|
target = targets.get(path)
|
|
167
171
|
invalid = target is None
|
|
168
172
|
if target is not None:
|
|
@@ -179,8 +183,8 @@ def apply(recipe, value, *, missing='error'):
|
|
|
179
183
|
compatible = {}
|
|
180
184
|
for key,fields in options[group].items():
|
|
181
185
|
if (key not in available or fields['kind']!=available[key][0]['kind']
|
|
182
|
-
or (group
|
|
183
|
-
orphaned.append(path+('#style:'
|
|
186
|
+
or (group in ('styles','cameras') and not (set(fields)-{'kind'})<=set(available[key][0]))):
|
|
187
|
+
orphaned.append(path+({'styles':'#style:', 'cameras':'#camera:'}.get(group, '#'))+key)
|
|
184
188
|
else: compatible[key] = fields
|
|
185
189
|
if compatible: options[group] = compatible
|
|
186
190
|
else: options.pop(group)
|
|
@@ -193,7 +197,7 @@ def apply(recipe, value, *, missing='error'):
|
|
|
193
197
|
for path,options in prepared.items():
|
|
194
198
|
parent,part,item = targets[path]
|
|
195
199
|
for group,fields in options.items():
|
|
196
|
-
owner = (id(item),None) if group in
|
|
200
|
+
owner = (id(item),None) if (group=='page' or group in _EDITORS) else (id(parent),part.name)
|
|
197
201
|
if group in _EDITORS:
|
|
198
202
|
fields = {(label,key):val for label,edits in fields.items() for key,val in edits.items()}
|
|
199
203
|
for key,val in fields.items():
|