inklet 4.0.0.dev1__tar.gz → 4.0.0.dev3__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.dev1 → inklet-4.0.0.dev3}/.github/workflows/checks.yml +8 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/.github/workflows/publish.yml +2 -2
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/CHANGELOG.md +141 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/PKG-INFO +7 -8
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/README.md +6 -7
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/api.md +27 -6
- inklet-4.0.0.dev3/docs/assets/research-preview/clipping-after.json +119 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/clipping-before.json +119 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/clipping-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/clipping-lines-after.json +110 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/clipping-lines-before.json +110 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-marker-shapes-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-marker-shapes.html +331 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-markers-display.json +13 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-markers-hardware.json +178 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-scene-viewer.html +331 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-viewer-display.json +12 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-viewer-export.json +12 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compiled-viewer-study.json +194 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compositing-after.json +143 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compositing-before.json +143 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/compositing-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/dense-scatter-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/hatch-after.json +207 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/hatch-before.json +207 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/hatch-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/marker-batches.json +144 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/marker-index-after.json +231 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/marker-index-before.json +231 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/marker-index-browser-after.json +1693 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/marker-index-browser-before.json +1693 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/render-scene-caption.tex +1 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/scenes-after.json +207 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/scenes-before.json +207 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-culling-after.json +1649 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-culling-before.json +1429 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-culling-gpu-after.json +83 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-culling-gpu-before.json +78 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-redraw-after.json +885 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-redraw-before.json +789 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-redraw-display.json +12 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-redraw-profile.json +383 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-window-after.json +6275 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-window-before.json +3895 -0
- inklet-4.0.0.dev3/docs/assets/research-preview/viewer-window-display.json +12 -0
- inklet-4.0.0.dev3/docs/assets/v4/visual-overrides.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/browser-rendering.md +4 -0
- inklet-4.0.0.dev3/docs/clipping.md +109 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/compatibility.md +1 -1
- inklet-4.0.0.dev3/docs/compiled-scenes.md +151 -0
- inklet-4.0.0.dev3/docs/compiled-viewer.md +302 -0
- inklet-4.0.0.dev3/docs/compositing.md +112 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/cookbook.md +4 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/design/v4.md +25 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/development-preview.md +28 -8
- inklet-4.0.0.dev3/docs/hatching.md +112 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/installation.md +3 -3
- inklet-4.0.0.dev3/docs/marker-batches.md +132 -0
- inklet-4.0.0.dev3/docs/marker-culling.md +174 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/plotting.md +4 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/regional-report.md +42 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/rendering-engine.md +15 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/roadmap.md +6 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/v3.md +3 -0
- inklet-4.0.0.dev3/docs/visual-editing.md +104 -0
- inklet-4.0.0.dev3/examples/clipping_review.py +90 -0
- inklet-4.0.0.dev3/examples/compiled_marker_shapes.py +44 -0
- inklet-4.0.0.dev3/examples/compiled_scene_viewer.py +18 -0
- inklet-4.0.0.dev3/examples/compositing_review.py +93 -0
- inklet-4.0.0.dev3/examples/dense_scatter_review.py +72 -0
- inklet-4.0.0.dev3/examples/hatch_review.py +70 -0
- inklet-4.0.0.dev3/examples/render_scene_review.py +91 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/regional_report.py +19 -2
- inklet-4.0.0.dev3/gallery/clipping-review.png +0 -0
- inklet-4.0.0.dev3/gallery/compiled-marker-shapes.png +0 -0
- inklet-4.0.0.dev3/gallery/compiled-scene-viewer.png +0 -0
- inklet-4.0.0.dev3/gallery/compiled-viewer-culling.png +0 -0
- inklet-4.0.0.dev3/gallery/compiled-viewer-deep-zoom.png +0 -0
- inklet-4.0.0.dev3/gallery/compositing-pdf-after.png +0 -0
- inklet-4.0.0.dev3/gallery/compositing-pdf-before.png +0 -0
- inklet-4.0.0.dev3/gallery/compositing-review.png +0 -0
- inklet-4.0.0.dev3/gallery/dense-scatter-review.png +0 -0
- inklet-4.0.0.dev3/gallery/hatch-pdf-after.png +0 -0
- inklet-4.0.0.dev3/gallery/hatch-pdf-before.png +0 -0
- inklet-4.0.0.dev3/gallery/hatch-review.png +0 -0
- inklet-4.0.0.dev3/gallery/hatch-svg-before.png +0 -0
- inklet-4.0.0.dev3/gallery/render-scene-data.png +0 -0
- inklet-4.0.0.dev3/gallery/render-scene-initial.png +0 -0
- inklet-4.0.0.dev3/gallery/render-scene-review.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/mkdocs.yml +8 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/pyproject.toml +1 -1
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/__init__.py +5 -4
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/__init__.py +2 -1
- inklet-4.0.0.dev3/src/inklet/core/batch.py +93 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/diagram.py +35 -6
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/key_rules.py +15 -5
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/rules.py +121 -13
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/compiler.py +17 -3
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/__init__.py +2 -2
- inklet-4.0.0.dev3/src/inklet/draw/bezier_clip.py +127 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/clip.py +124 -28
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/__init__.py +61 -7
- inklet-4.0.0.dev3/src/inklet/experimental/browser/compiled.js +53 -0
- inklet-4.0.0.dev3/src/inklet/experimental/browser/compiled.py +64 -0
- inklet-4.0.0.dev3/src/inklet/experimental/browser/editor.html +13 -0
- inklet-4.0.0.dev3/src/inklet/experimental/browser/editor.js +135 -0
- inklet-4.0.0.dev3/src/inklet/experimental/browser/overrides.py +96 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/page.html +1 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/runtime.js +33 -18
- inklet-4.0.0.dev3/src/inklet/experimental/scene_viewer/__init__.py +119 -0
- inklet-4.0.0.dev3/src/inklet/experimental/scene_viewer/controls.js +14 -0
- inklet-4.0.0.dev3/src/inklet/experimental/scene_viewer/page.html +4 -0
- inklet-4.0.0.dev3/src/inklet/experimental/scene_viewer/runtime.js +279 -0
- inklet-4.0.0.dev3/src/inklet/experimental/scene_viewer/spatial.js +52 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/figure.py +13 -3
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/marks.py +7 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/panel.py +5 -1
- inklet-4.0.0.dev3/src/inklet/plot/scatter_batch.py +27 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/__init__.py +2 -1
- inklet-4.0.0.dev3/src/inklet/render/analysis.py +63 -0
- inklet-4.0.0.dev3/src/inklet/render/bounds.py +67 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/brushes.py +5 -16
- inklet-4.0.0.dev3/src/inklet/render/hatching.py +49 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/pdf.py +106 -91
- inklet-4.0.0.dev3/src/inklet/render/scene.py +312 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/svg.py +142 -49
- inklet-4.0.0.dev3/tests/test_browser_compiled.py +150 -0
- inklet-4.0.0.dev3/tests/test_browser_overrides.py +142 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_switching.py +4 -3
- inklet-4.0.0.dev3/tests/test_clip_engine.py +216 -0
- inklet-4.0.0.dev3/tests/test_compositing_engine.py +159 -0
- inklet-4.0.0.dev3/tests/test_hatch_engine.py +155 -0
- inklet-4.0.0.dev3/tests/test_marker_batches.py +173 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_embed.py +4 -7
- inklet-4.0.0.dev3/tests/test_render_scene.py +199 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_style_fields.py +5 -4
- inklet-4.0.0.dev3/tests/test_scene_culling.py +120 -0
- inklet-4.0.0.dev3/tests/test_scene_viewer.py +325 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_svg.py +4 -5
- inklet-4.0.0.dev3/tools/benchmark_batches.py +59 -0
- inklet-4.0.0.dev3/tools/benchmark_clipping.py +62 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/benchmark_engine.py +29 -2
- inklet-4.0.0.dev3/tools/benchmark_marker_index.mjs +26 -0
- inklet-4.0.0.dev3/tools/benchmark_scene_culling.js +20 -0
- inklet-4.0.0.dev3/tools/benchmark_scene_gpu.js +28 -0
- inklet-4.0.0.dev3/tools/benchmark_scene_redraw.js +21 -0
- inklet-4.0.0.dev3/tools/benchmark_scene_viewer.js +20 -0
- inklet-4.0.0.dev3/tools/benchmark_scene_zoom.js +17 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/check_wheel.py +14 -0
- inklet-4.0.0.dev3/tools/make_culling_review.py +33 -0
- inklet-4.0.0.dev3/tools/profile_scene_redraw.js +13 -0
- inklet-4.0.0.dev1/src/inklet/render/bounds.py +0 -44
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/.gitattributes +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/.gitignore +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/.readthedocs.yaml +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/CONTRACT.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/CONTRIBUTING.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/LICENSE +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/THIRD_PARTY_NOTICES.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/brand/inklet-icon.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/brand/inklet-logo-dark.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/brand/inklet-logo-mono.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/brand/inklet-logo.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/brand/inklet-wordmark.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/examples/quickstart.pdf +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/examples/quickstart.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/examples/quickstart.svg +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/axes-and-scales-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/calibrated-volumes-3.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/channels-and-contours-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-anchor.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-annotation.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-branch.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-broken-axis.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-callout.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-clipping.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-creases.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-custom-key.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-cutout.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-dates.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-dense.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-elbows.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-facets.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-fit-graph.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-flow-width.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-formula.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-graph.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-halo.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-heatmap.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-hole.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-inline-type.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-inset.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-labels.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-layers.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-letters.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-list.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-matrix.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-page-grid.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-polar.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-protein.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-routes.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-scene.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-series-key.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-span.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-swarm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-text-path.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-toon.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-twin-axis.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-violin.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/data-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/data-3.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/dense-data-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/diagram-components-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/diagrams-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/layout-3.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/oblique-sections-2.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/plot-quality-after.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/plot-quality-before.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/plot-types-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/plotting-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/plotting-2.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/publication-plots-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/publication-plots-2.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/publication-plots-3.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/publication-plots-4.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/slabs-and-regions-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/three-images-1.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/guides/three-images-2.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/biology.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/comparison.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/diagram-after.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/diagram-before.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/engine-after.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/engine-before.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/fluorescence-biology.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/general-plots-caption.tex +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/general-plots.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/label-intensities-native.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/label-intensities.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/lines-after.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/lines-before.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/oblique-biology.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/real-biology.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/revision.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/slab-biology.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/research-preview/study.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/after.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/before.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/browser-quality.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/browser-scatter.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/browser-scatter.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/browser-study.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/contours-streamlines-170mm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/contours-streamlines-masked.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/contours-streamlines.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/contours-streamlines.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/engineering-report-170mm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/engineering-report.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/engineering-report.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/faceted-operations.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/faceted-operations.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/linked-dashboard.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/linked-dashboard.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/linked-selection.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/linked-selection.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/mesh-fields-170mm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/mesh-fields.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/mesh-fields.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/region-shapes.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/region-shapes.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/regional-analysis.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/regional-analysis.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/regional-report-160mm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/regional-report.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/regional-report.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/scientific-report-170mm.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/scientific-report.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/scientific-report.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/statistical-views.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/statistical-views.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/table-inputs.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/table-inputs.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/time-series.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/time-series.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population-2019.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population-2019.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population-2019.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population-revisions.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population-revisions.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/assets/v4/world-population.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/axes-and-scales.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/biology-panels.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/blender-scenes.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/brand.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/calibrated-volumes.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/channels-and-contours.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/cli.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/complex-scene.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/concepts.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/contours-streamlines.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/data-revisions.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/data.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/dense-data.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/design/browser-backends.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/design/page_grid.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/design/v2.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/diagram-components.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/diagram-engine.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/diagrams.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/engineering-report.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/example-library.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/examples.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/export-review.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/fluorescence-biology.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/general-plots.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/index.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/javascripts/inklet.js +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/label-intensities.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/label-measurements.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/layout.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/linked-facets.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/linked-maps.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/linked-plots.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/mesh-fields.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/microscopy-tiff.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/migration.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/oblique-biology.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/oblique-sections.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/plot-quality.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/plot-types.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/plotting-engine.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/presets.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/publication-plots.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/quickstart.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/real-biology.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/architecture-sketch.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/architecture.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/attractor.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/helix.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/interference.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/lattice.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/photonics.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/recipes/wave-packets.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/release-checks.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/render-jobs.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/research-preview.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/research-revision.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/research-study.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/scene-annotations.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/scene-paths.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/scene-templates.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/scientific-report.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/showcase.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/slab-biology.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/slabs-and-regions.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/statistical-views.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/stress20.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/stylesheets/code.css +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/stylesheets/inklet.css +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/table-inputs.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/three-images.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/time-series.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/troubleshooting.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/v2.5.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/v2.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/v4-foundations.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/docs/world-map.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/cells3d.lock.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/fluorescence.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/organelle.lock.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology/requirements.txt +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/biology_panels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/blender/complex_lab_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/blender/lab_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/blender/occlusion_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/blender/organelle_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/blender/research_lab_views.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/broken_axis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/data/general-plots/benchmark.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/data/general-plots/learning.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/data/general-plots/revenue.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/data/general-plots/sensor.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/diagram_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/engine_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/feature_flow.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/fluorescence_biology.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/gallery.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/general_plots.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/graph.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/hello_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/label_intensities.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/oblique_biology.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/panels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/plot_engine_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/plot_quality_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/polar.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/preset_formats.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/presets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/real_biology.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/render_smoke.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/research_figure_planner.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/research_planner_study.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/research_revision.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/showcase/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/showcase/assets.lock.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/showcase/blender_scenes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/showcase/figures.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/slab_biology.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/state_machine.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/stress20.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v25_document.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v2_cases.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v2_document.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_complex_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_render_jobs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_rendering.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_scene_annotations.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_scene_passes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_scene_paths.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v3_scene_templates.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/browser_scatter.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/contours_streamlines.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/data/world-countries.geojson +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/data/world-map-source.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/data/world-population.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/engineering_report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/faceted_operations.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/assembly.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/manifest.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/measurement.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/region-shapes.geojson +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/regions.csv +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/fixtures/regions.geojson +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/linked_dashboard.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/linked_selection.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/linked_selection.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/mesh_fields.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/region_shapes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/regional_analysis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/scientific_report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/statistical_views.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/table_inputs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/time_series.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/examples/v4/world_population.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/annot.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/bio3d.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/cartoon.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/chem_data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/chem_fingerprints.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/data/1m17-kinase.pdb +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/data/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/drug_discovery.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/mouse_brain_data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/neural_activity.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/pdbfile.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/showcase_part.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/showcase_process.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/showcase_season.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/structure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/structure_data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/target.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/figures/trial.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/biology-panels.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/chem_fingerprints.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/diagram-labels-after.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/diagram-labels-before.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/diagram-review.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/engine-review.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/engine-transparency-after.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/engine-transparency-before.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/flow.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/fluorescence-biology.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/general-plots-before.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/general-plots.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/label-intensities.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/oblique-biology.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/part.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/plot-axis-after.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/plot-axis-before.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/plot-engine-review.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/plots.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/polar.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/preset-formats.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/presets.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/process.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/real-biology.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/research-crossing-revision.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/research-figure-planner.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/research-planner-study.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/research-revision.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/season.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-architecture-sketch.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-architecture.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-attractor.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-helix.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-interference.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-lattice.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-photonics.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/showcase-wave-packets.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/slab-biology.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/stress20.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/structure.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-complex-scene.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-render-jobs.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-rendering.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-scene-annotations.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-scene-passes.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-scene-paths.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/gallery/v3-scene-templates.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/requirements-ci.txt +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/requirements-docs.txt +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/requirements-tables.txt +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/scripts/bench_svg.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/scripts/rasterise.sh +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/scripts/sanity_typeset.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/__main__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/asset.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/cache.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/cutout.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/deps.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/harmonise.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/lineart.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/mask.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/provenance.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/raster.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/sidecar.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/assets/silhouette.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/cli.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/components.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/envelope.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/geom.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/prims.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/style.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/trace.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/core/units.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/abut.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/break_rules.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/color.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/cross.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/image.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/link_rules.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/path_rules.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/plot_rules.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/diagnostics/three_rules.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/composition.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/data_io.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/module.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/presets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/publication.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/document/spec.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/annotate.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/coords.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/path.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/place.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/draw/shapes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/_table_adapters.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/drawings.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/fields.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/grid.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/images.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/regions.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/series.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/browser/timeaxis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/channels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/contours.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/engineering.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/fields.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/figure_planner.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/grid.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/measurement.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/measurements.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/planner_geometry.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/regions.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/sections.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/selection.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/slabs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/temporal.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/tiff.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/experimental/volume.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/fit.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/flow.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/graph.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/graph_force.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/graph_layered.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/graph_tree.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/labels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/layout/sankey.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/links/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/links/curves.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/links/link.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/axis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/breaks.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/categories.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/facets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/inset.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/key.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/notes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/png.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/polar.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/ramp.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/raster.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/ribbon.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/scale.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/scatter_raster.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/series.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/simplify.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/plot/timescale.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/bundle.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/composite.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/fontembed.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/glyphs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/outline.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/paint.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/pathdata.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/pdftext.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/preview.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/raster.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/resources.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/render/revision.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/themes/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/themes/color.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/themes/palettes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/themes/theme.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/api.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/backend.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/device_worker.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/discover.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/lineart.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/options.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/scene_worker.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/script.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/svgread.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/template_worker.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender/tracing.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/blender_backend.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/camera.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/deps.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/depth.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/devices.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/drill.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/edges.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/hlr.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/linalg.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/mesh.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/occlude.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/order.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/parse.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/place.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/protein.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/quality.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/render_jobs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/scene_annotations.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/scene_pass.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/scene_projection.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/scenes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/shade.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/solids.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/templates.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/three/templates.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/__init__.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/fonts.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/markup.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/onpath.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/outline.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/src/inklet/typeset/shaping.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/assets/mouse.inklet.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/assets/mouse.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/dense_graph.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/draw_probe.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/assets/sem.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/assets/tem.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/cell.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/common.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/imaging.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/kinetics.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/micrograph.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro/system.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/electro_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/fidelity.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/flow.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/hard_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/label_storm.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/mega_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/meshes/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/meshes/brain-lh.obj +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/meshes/spot.obj +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/panels/apparatus.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/panels/graphs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/panels/relations.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/panels/responses.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/panels/sections.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/probes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/stress/three_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_alignment_contract.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_annotate.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_annotate_letters.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_assets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_assets_provenance.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_biology_source.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_blend_scene.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_facets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_regions.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_revision.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_scatter.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_series.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_statistics.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_browser_time.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_categories.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_channels_contours.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_chem_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_cli.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_components.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_contrast_and_labels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_cookbook.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_core.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_core_amendments.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_csv_input.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_api.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_artwork.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_break_distorts.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_crossing.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_image_contrast.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_ink.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_keys.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_links.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_paths.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagnostics_plot_box.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_diagram_engine.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_docs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_docs_site.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_document.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_document_data.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_document_v25.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_draw_clip.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_draw_path.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_draw_place.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_draw_shapes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_engine_layout.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_engine_rendering.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_engine_scatter.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_engineering_report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_export_bundle.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_figure_planner.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_fit.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_grid_fields.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_guides.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_label_measurements.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_layout.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_layout_graph.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_layout_graph_fit.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_layout_origin.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_layout_sankey.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_links.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_links_avoid.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_links_shapes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_mesh_fields.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_microscopy_tiff.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_neural_activity.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_output_contract.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_paint_program.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_place_labels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_axis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_broken_axis.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_clip.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_engine.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_facets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_inset.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_key.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_labels.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_legend.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_marks.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_notes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_polar.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_publication.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_quality_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_raster.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_ribbon.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_scale.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_swarm.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_plot_time.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_presets.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_publication_limits.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_regional_report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_release_adversarial.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_devices.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_glyphs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_jobs.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_outline.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_pdf.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_pdf_text.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_quality.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_svg_perf.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_render_v3.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_review_v25.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_round4_plot.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_routing_avoid.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scatter_rendering.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scene_annotations.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scene_pass.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scene_projection.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scene_templates.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_scientific_report.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_sections.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_shared_plot_margins.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_showcase_library.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_showcase_round3.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_slabs_regions.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_structure_figure.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_table_adapters.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_target_pose.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_temporal_adapters.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_text_markup.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_text_on_path.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_theme_font_style.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_themes.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_anchor_pin.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_api.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_backend_blender.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_blender.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_depth_order.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_drill.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_hlr.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_mesh.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_order_vector.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_overlay.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_parse.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_patches.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_place.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_protein.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_ridges.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_sort.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_sort_budget.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_three_view.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_typeset.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_v4_selection.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_volume.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_watch_review.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/test_world_map_example.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/README.md +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/categories-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/categories-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/components-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/components-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/dense-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/dense-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/fonts.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/inset-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/inset-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/markers-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/markers-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/renderers.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/type-opacity-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/type-opacity-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-dense-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-dense-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v2-workflow-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v25-document-pdf.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/baseline/v25-document-svg.png +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/fixtures.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tests/visual/v2-budgets.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/benchmark_diagrams.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/benchmark_lines.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/benchmark_v2.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/benchmark_v4.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/browser_study.js +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/check_render_wheel.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/dock_ligand.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_gallery.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_previews.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_previews.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_site.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_theme/404.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_theme/card.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_theme/gallery.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_theme/home.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/docs_theme/main.html +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/gen_api.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/prepare_world_map.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/preset_gallery.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/showcase_gallery.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/stress20.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/strip_pdb.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/v3_showcase.py +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/v4-budgets.json +0 -0
- {inklet-4.0.0.dev1 → inklet-4.0.0.dev3}/tools/visual_check.py +0 -0
|
@@ -70,6 +70,7 @@ jobs:
|
|
|
70
70
|
.venv/bin/python examples/v4/time_series.py --output out/v4-time
|
|
71
71
|
.venv/bin/python examples/v4/statistical_views.py --output out/v4-statistics
|
|
72
72
|
.venv/bin/python examples/v4/regional_report.py --render --output out/v4-regional-report
|
|
73
|
+
.venv/bin/python examples/v4/regional_report.py --renderer compiled --editor --render --output out/v4-compiled-regional
|
|
73
74
|
.venv/bin/python examples/v4/engineering_report.py --render --output out/v4-engineering
|
|
74
75
|
.venv/bin/python examples/v4/scientific_report.py --render --output out/v4-scientific
|
|
75
76
|
.venv/bin/python examples/v4/mesh_fields.py --render --output out/v4-mesh-fields
|
|
@@ -92,6 +93,13 @@ jobs:
|
|
|
92
93
|
run: |
|
|
93
94
|
.venv/bin/python tools/benchmark_engine.py --repeat 1 --output out/engine-benchmark.json
|
|
94
95
|
.venv/bin/python examples/engine_review.py --output out/engine-review
|
|
96
|
+
.venv/bin/python examples/compositing_review.py --output out/compositing-review
|
|
97
|
+
.venv/bin/python examples/hatch_review.py --output out/hatch-review
|
|
98
|
+
.venv/bin/python examples/clipping_review.py --output out/clipping-review
|
|
99
|
+
.venv/bin/python examples/render_scene_review.py --output out/render-scene-review
|
|
100
|
+
.venv/bin/python examples/dense_scatter_review.py --output out/dense-scatter-review
|
|
101
|
+
.venv/bin/python examples/compiled_marker_shapes.py --output out/compiled-marker-shapes
|
|
102
|
+
.venv/bin/python examples/compiled_scene_viewer.py --output out/compiled-scene-viewer
|
|
95
103
|
- name: Diagram routing and label review
|
|
96
104
|
run: |
|
|
97
105
|
.venv/bin/python tools/benchmark_diagrams.py --repeat 1 --output out/diagram-benchmark.json
|
|
@@ -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.dev3
|
|
10
10
|
type: string
|
|
11
11
|
dry_run:
|
|
12
12
|
description: Validate release files without uploading to PyPI
|
|
@@ -43,7 +43,7 @@ jobs:
|
|
|
43
43
|
RELEASE_TAG: ${{ inputs.tag }}
|
|
44
44
|
run: |
|
|
45
45
|
[[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]+(\.dev[0-9]+)?$ ]] || {
|
|
46
|
-
echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.
|
|
46
|
+
echo 'Expected a stable or development tag such as v3.1.0 or v4.0.0.dev3' >&2
|
|
47
47
|
exit 1
|
|
48
48
|
}
|
|
49
49
|
gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
|
|
@@ -1,5 +1,146 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 4.0.0.dev3 — 2026-09-12
|
|
6
|
+
|
|
7
|
+
Third development preview: shared scene execution, dense marker rendering,
|
|
8
|
+
linked compiled reports and the first reproducible plot-style editor. Install
|
|
9
|
+
explicitly with `python -m pip install "inklet==4.0.0.dev3"`; 3.1.0 remains stable.
|
|
10
|
+
|
|
11
|
+
- Add an offline inspector for named plot colours, marker radii and line widths,
|
|
12
|
+
with bounded undo/redo and separate versioned overrides. Preserve compatible
|
|
13
|
+
choices across source revisions and page widths; reject or explicitly report
|
|
14
|
+
orphaned targets. Reproduce edited views through Python SVG/PDF/PNG exports.
|
|
15
|
+
- Prepare style commands atomically, preserve selection and view state, and
|
|
16
|
+
prevent file/command/revision races. Add edited full-report visual comparisons,
|
|
17
|
+
failure cases, browser/Python agreement and installed-wheel checks.
|
|
18
|
+
|
|
19
|
+
- Add opt-in compiled execution to linked browser figures, preserving keyed
|
|
20
|
+
selection, filtering, saved states, revision policies and vector exports.
|
|
21
|
+
Pack contiguous circle runs without reordering paint, retain native SVG for
|
|
22
|
+
other marks, and intersect visibility masks with spatial candidates.
|
|
23
|
+
- Share the compiled viewer runtime with the linked report instead of duplicating
|
|
24
|
+
GPU execution. Retain immutable records during filtering and release surfaces
|
|
25
|
+
on revision replacement. Add a runnable regional report mode, complete-figure
|
|
26
|
+
display comparisons and state/revision/export regressions across backends.
|
|
27
|
+
|
|
28
|
+
- Build ordered marker candidates with a reusable bitmap instead of temporary
|
|
29
|
+
JavaScript result arrays and comparison sorting. Accept fully contained grid
|
|
30
|
+
cells without rechecking each footprint, preserving source paint order and
|
|
31
|
+
independently owned result arrays.
|
|
32
|
+
- Measure 250,000- and million-point index queries and browser submission.
|
|
33
|
+
The million-point zoom query falls from 5.253 to 0.629 ms in the standalone
|
|
34
|
+
study; tiny queries are slightly slower. Retained bitmap storage adds one bit
|
|
35
|
+
per row. Add word-boundary and query-result ownership regressions.
|
|
36
|
+
|
|
37
|
+
- Cull individual packed markers with a shared spatial index of full marker
|
|
38
|
+
footprints. Preserve source order, antialiasing margins and vector exports.
|
|
39
|
+
Canvas paints candidates; WebGL2 fetches immutable records using compact
|
|
40
|
+
row-index uploads. Report candidate counts, uploads and index storage.
|
|
41
|
+
- Add a 250,000-point stress recipe, brute-force and visual fidelity checks,
|
|
42
|
+
and separate submission/GPU timer studies. Canvas window submission improves
|
|
43
|
+
from 88.5 to 10.8 ms in the recorded workload; GPU draw time falls from 0.325
|
|
44
|
+
to 0.042 ms while CPU submission rises from 0.9 to 2.2 ms. Document memory costs.
|
|
45
|
+
|
|
46
|
+
- Size compiled-viewer surfaces around the visible region with a retained pan
|
|
47
|
+
margin; skip painting offscreen layers and reuse their immutable buffers on
|
|
48
|
+
return. Preserve native clipping, marker order and complete vector export.
|
|
49
|
+
- Keep deep-zoom resolution within the existing per-surface pixel limits. In
|
|
50
|
+
the five-panel RTX 5090 study, 8× zoom uses about 3.05 million backing pixels
|
|
51
|
+
instead of 20 million, and median WebGL submission falls from 49.0 to 13.8 ms.
|
|
52
|
+
Add normal/deep-zoom fidelity, visibility and re-entry checks with raw studies.
|
|
53
|
+
|
|
54
|
+
- Retain compiled-viewer backing surfaces across pans and small zoom changes,
|
|
55
|
+
repaint only when resolution changes, and shrink after large zoom-outs.
|
|
56
|
+
Read all SVG transforms before changing canvas dimensions. Preserve the
|
|
57
|
+
existing pixel budgets, native compositing, vector export and error fallback.
|
|
58
|
+
- Report surface paints, resizes, reuse and allocated pixel counts. Add hardware
|
|
59
|
+
before/after profiles and regressions for reuse, resolution growth, shrinking
|
|
60
|
+
and context loss. Warm small-zoom submission falls from 47.8 ms to 0.5 ms in
|
|
61
|
+
the measured five-panel RTX 5090 workload; startup and growth are excluded.
|
|
62
|
+
|
|
63
|
+
- Accelerate filled square, triangle, diamond and star marker batches in the
|
|
64
|
+
compiled-scene viewer. Preserve exact polygon geometry, per-point sizes and
|
|
65
|
+
colours, winding rules, paint order, clipping and vector SVG download.
|
|
66
|
+
- Add a five-panel interactive marker comparison and test complete composited
|
|
67
|
+
screenshots against SVG at two display resolutions, including concave
|
|
68
|
+
polygons. Self-intersections, open, outlined and curved markers stay native.
|
|
69
|
+
- Validate the five-panel viewer on an RTX 5090 Laptop GPU through WSL/D3D12.
|
|
70
|
+
Publish timings and display comparisons; Canvas remains faster for this
|
|
71
|
+
measured workload, so hardware availability is not presented as a speedup.
|
|
72
|
+
|
|
73
|
+
- Add `RenderScene.to_html()` for offline native-scene viewing, with instanced
|
|
74
|
+
WebGL2 circle layers, Canvas fallback and native SVG artwork in paint order.
|
|
75
|
+
Automatic selection avoids recognized software WebGL renderers. Report
|
|
76
|
+
backend decisions, context loss, display limits and buffer uploads.
|
|
77
|
+
- Keep packed source buffers shared and immutable across browser view changes;
|
|
78
|
+
reconstruct vector SVG from 64-bit records, including exact source indices.
|
|
79
|
+
- Add a complete interactive figure, shader/fallback/resource tests and native
|
|
80
|
+
export comparisons. Keyed-row interaction migration and broader GPU geometry
|
|
81
|
+
remain open; hardware performance is not inferred from software WebGL tests.
|
|
82
|
+
|
|
83
|
+
- Store dense vector scatter in immutable 36-byte marker records, preserving
|
|
84
|
+
source order, per-point size/colour, physical strokes and native vector output.
|
|
85
|
+
Series with at least 256 points use batches unless placement anchors or
|
|
86
|
+
broken axes require individual nodes. Dense point handles become batch
|
|
87
|
+
handles; source indices remain inspectable in buffers and SVG elements.
|
|
88
|
+
- Stream batches through SVG/PDF with bounded prototype caches, preserve
|
|
89
|
+
geometric clipping and painted windows, and retain batch geometry on revisions.
|
|
90
|
+
- Check packed palettes against colour keys and inspect individual marker
|
|
91
|
+
footprints for text overlaps, avoiding false collisions over empty cloud space.
|
|
92
|
+
- Add a 38,300-marker four-panel review, native-backend fidelity tests and
|
|
93
|
+
reproducible construction/export/memory measurements, including a separate
|
|
94
|
+
million-point construction test.
|
|
95
|
+
|
|
96
|
+
- Compile a shared native render scene for SVG, PDF and PNG, resolving styles,
|
|
97
|
+
transforms, clipping and compositing once. Retain it across document exports.
|
|
98
|
+
- Reuse unchanged scene nodes and geometry across revisions; share small shapes
|
|
99
|
+
and shaped labels by value, expose invalidation reasons and conservative
|
|
100
|
+
redraw coverage, and report render-compilation work separately from layout.
|
|
101
|
+
- Reject missing image and font resources before native export; SVG no longer
|
|
102
|
+
silently emits broken image links or substitutes an unavailable font file.
|
|
103
|
+
- Snapshot file-backed image bytes so completed figures survive source changes;
|
|
104
|
+
detect updated image inputs on subsequent document compilation and reject
|
|
105
|
+
exports using changed or missing font files.
|
|
106
|
+
- Add a complete six-panel scene/revision review and repeated-export benchmarks.
|
|
107
|
+
Browser/GPU execution and finer layout invalidation remain open.
|
|
108
|
+
|
|
109
|
+
## 4.0.0.dev2 — 2026-09-08
|
|
110
|
+
|
|
111
|
+
Second development preview. Install explicitly with
|
|
112
|
+
`python -m pip install "inklet==4.0.0.dev2"`; 3.1.0 remains stable.
|
|
113
|
+
|
|
114
|
+
- Preserve open cubic segments through geometric clipping, using parameter
|
|
115
|
+
subdivision and bounded adaptive measurement sampling in the clip frame.
|
|
116
|
+
- Add `window()` for nested, transformed visual clipping of all SVG/PDF/PNG
|
|
117
|
+
paint, including glyphs, images, markers, filled curves and rounded corners.
|
|
118
|
+
Keep window layout, painted bounds and authored child geometry distinct;
|
|
119
|
+
expose inherited clip regions and visibility filtering through resolution.
|
|
120
|
+
- Preserve windows through document compilation/copying and account for hidden
|
|
121
|
+
content in page-bound and path-crossing diagnostics.
|
|
122
|
+
- Reduce allocation in dense-line clipping; add an eight-panel rendering
|
|
123
|
+
review, independent backend checks and reproducible clipping/line benchmarks.
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
- Share exact hatch-line geometry between SVG and PDF, with reusable local
|
|
127
|
+
coverage resources and independent shape clips. Preserve holes, transforms,
|
|
128
|
+
border styles and fill opacity without periodic tile seams or inherited
|
|
129
|
+
border settings affecting the fill.
|
|
130
|
+
- Reuse hatch coverage across nearby shape sizes, retain explicit work limits,
|
|
131
|
+
and add an illustrated review plus repeated/distinct-size export benchmarks.
|
|
132
|
+
|
|
133
|
+
- Correct PDF compositing for individual filled-and-stroked shapes, text halos
|
|
134
|
+
and vector brushes: group opacity fades their combined paint once.
|
|
135
|
+
- Preserve palette and color-key PNG transparency in PDF, including partial
|
|
136
|
+
palette alpha and file-backed images.
|
|
137
|
+
- Reuse subtree painted bounds and paint-count analysis within each PDF page
|
|
138
|
+
export; nested transparency groups no longer remeasure the same glyphs for
|
|
139
|
+
every ancestor. Keep inherited style/transform contexts separate and discard
|
|
140
|
+
the caches after export.
|
|
141
|
+
- Add an illustrated compositing review, independent SVG/Poppler comparisons
|
|
142
|
+
and a nested-group workload to the rendering benchmark and CI checks.
|
|
143
|
+
|
|
3
144
|
## 4.0.0.dev1 — 2026-09-08
|
|
4
145
|
|
|
5
146
|
First installable 4.0 development preview. This collects the linked-document,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inklet
|
|
3
|
-
Version: 4.0.0.
|
|
3
|
+
Version: 4.0.0.dev3
|
|
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,18 +81,17 @@ their signatures and report schemas may change.
|
|
|
81
81
|
|
|
82
82
|
## 4.0 development preview
|
|
83
83
|
|
|
84
|
-
**4.0.0.
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
84
|
+
**4.0.0.dev3** adds shared compiled rendering, packed dense markers, offline
|
|
85
|
+
WebGL2/Canvas viewing, and a plot-style inspector with undo/redo and saved
|
|
86
|
+
visual overrides. Linked charts, maps and scientific reports preserve selections,
|
|
87
|
+
source revisions and reproducible vector exports.
|
|
89
88
|
```sh
|
|
90
|
-
python -m pip install "inklet==4.0.0.
|
|
89
|
+
python -m pip install "inklet==4.0.0.dev3"
|
|
91
90
|
```
|
|
92
91
|
|
|
93
92
|
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
94
93
|
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
95
|
-
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.
|
|
94
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev3)
|
|
96
95
|
|
|
97
96
|
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
98
97
|
may change; 3.1.0 remains the stable release. General browser editing,
|
|
@@ -31,18 +31,17 @@ their signatures and report schemas may change.
|
|
|
31
31
|
|
|
32
32
|
## 4.0 development preview
|
|
33
33
|
|
|
34
|
-
**4.0.0.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
34
|
+
**4.0.0.dev3** adds shared compiled rendering, packed dense markers, offline
|
|
35
|
+
WebGL2/Canvas viewing, and a plot-style inspector with undo/redo and saved
|
|
36
|
+
visual overrides. Linked charts, maps and scientific reports preserve selections,
|
|
37
|
+
source revisions and reproducible vector exports.
|
|
39
38
|
```sh
|
|
40
|
-
python -m pip install "inklet==4.0.0.
|
|
39
|
+
python -m pip install "inklet==4.0.0.dev3"
|
|
41
40
|
```
|
|
42
41
|
|
|
43
42
|
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
44
43
|
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
45
|
-
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.
|
|
44
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev3)
|
|
46
45
|
|
|
47
46
|
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
48
47
|
may change; 3.1.0 remains the stable release. General browser editing,
|
|
@@ -18,6 +18,23 @@ took before layout still resolves inside the finished figure.
|
|
|
18
18
|
|
|
19
19
|
Declared format support; no renderer is selected implicitly.
|
|
20
20
|
|
|
21
|
+
#### `class RenderScene(root: 'SceneNode', bbox: 'Rect', stats: 'Mapping', changes: 'tuple[SceneChange, ...]', _nodes: 'Mapping', _resources: 'Mapping', _images: 'Mapping', _fonts: 'Mapping') -> None`
|
|
22
|
+
|
|
23
|
+
A compiled native scene shared by SVG, PDF and PNG exports.
|
|
24
|
+
|
|
25
|
+
* `walk()`
|
|
26
|
+
* `validate_fonts()`
|
|
27
|
+
* `sources_current()` -- Check external inputs when a document considers reusing a snapshot.
|
|
28
|
+
* `to_svg(**options)`
|
|
29
|
+
* `to_pdf(**options)`
|
|
30
|
+
* `to_png(**options)`
|
|
31
|
+
* `to_html(*, title='Inklet figure', backend='auto', **options)` -- Offline experimental viewer; WebGL2 filled markers, Canvas fallback, SVG art.
|
|
32
|
+
* `damage_bounds(previous: 'RenderScene')` -- Conservative old/new ink union for changed placements, in page mm.
|
|
33
|
+
|
|
34
|
+
#### `compile_scene(root: 'Diagram | RenderScene', *, previous: 'RenderScene | None' = None) -> 'RenderScene'`
|
|
35
|
+
|
|
36
|
+
Resolve a drawing for all native backends, reusing an optional revision.
|
|
37
|
+
|
|
21
38
|
#### `blend(node, mode='multiply')`
|
|
22
39
|
|
|
23
40
|
Blend an isolated group with the artwork behind it, natively in SVG/PDF.
|
|
@@ -457,6 +474,10 @@ One data glyph, centred on its own origin so `place()` lands it on the point it
|
|
|
457
474
|
|
|
458
475
|
Put children at explicit coordinates, in millimetres.
|
|
459
476
|
|
|
477
|
+
#### `window(items: 'Diagram | Iterable[Diagram]', region: 'Rect | Sequence[Point]', *, kind: 'str' = 'window', **style) -> 'Diagram'`
|
|
478
|
+
|
|
479
|
+
Crop painted content to a fixed convex window, in local millimetres.
|
|
480
|
+
|
|
460
481
|
#### `clip(items: 'Diagram | Iterable[Diagram]', region: 'Rect | Sequence[Point]', *, kind: 'str' = 'clip', strict: 'bool' = False, **style) -> 'Diagram'`
|
|
461
482
|
|
|
462
483
|
Cut `items` down to `region`, in the coordinate frame you pass it in.
|
|
@@ -1019,19 +1040,19 @@ One actionable finding. `where` is figure-space, in millimetres.
|
|
|
1019
1040
|
|
|
1020
1041
|
Compact report. Returns a single string with no trailing newline.
|
|
1021
1042
|
|
|
1022
|
-
#### `to_svg(root: 'Diagram', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'str'`
|
|
1043
|
+
#### `to_svg(root: 'Diagram | RenderScene', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'str'`
|
|
1023
1044
|
|
|
1024
1045
|
Render a diagram tree to a self-contained SVG document.
|
|
1025
1046
|
|
|
1026
|
-
#### `save_svg(root: 'Diagram', path: 'str', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'None'`
|
|
1047
|
+
#### `save_svg(root: 'Diagram | RenderScene', path: 'str', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compact: 'bool | str' = 'auto', text: 'str' = 'names') -> 'None'`
|
|
1027
1048
|
|
|
1028
1049
|
Write `root` to `path` as SVG. `to_svg` is the same thing as a string.
|
|
1029
1050
|
|
|
1030
|
-
#### `to_pdf(root: 'Diagram | Sequence[Diagram]', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compress: 'bool' = True, text: 'str' = 'outline') -> 'bytes'`
|
|
1051
|
+
#### `to_pdf(root: 'Diagram | RenderScene | Sequence[Diagram | RenderScene]', *, width: 'float | str | None' = None, height: 'float | str | None' = None, margin: 'float' = 0.0, background: 'str | None' = None, precision: 'int' = 3, title: 'str | None' = None, compress: 'bool' = True, text: 'str' = 'outline') -> 'bytes'`
|
|
1031
1052
|
|
|
1032
1053
|
Render one diagram tree, or a sequence of them, to a PDF document.
|
|
1033
1054
|
|
|
1034
|
-
#### `save_pdf(root: 'Diagram | Sequence[Diagram]', path: 'str | Path', **kwargs) -> 'None'`
|
|
1055
|
+
#### `save_pdf(root: 'Diagram | RenderScene | Sequence[Diagram | RenderScene]', path: 'str | Path', **kwargs) -> 'None'`
|
|
1035
1056
|
|
|
1036
1057
|
Write `root` to `path` as PDF. `to_pdf` is the same thing as bytes.
|
|
1037
1058
|
|
|
@@ -1058,9 +1079,9 @@ Flatten the tree into world transforms, keyed by node id.
|
|
|
1058
1079
|
|
|
1059
1080
|
## Core types and units
|
|
1060
1081
|
|
|
1061
|
-
#### `class Diagram(prim: 'Prim | None' = None, children: "tuple['Diagram', ...]" = (), transform: 'Affine' = Affine(a=1.0, b=0.0, c=0.0, d=1.0, e=0.0, f=0.0), style: 'Style' = Style(fill=None, stroke=None, stroke_width=None, stroke_dash=None, stroke_linecap=None, stroke_linejoin=None, opacity=None, fill_opacity=None, stroke_opacity=None, corner_radius=None, font_family=None, font_size=None, font_weight=None, font_style=None, text_fill=None, line_height=None, halo=None, halo_color=None), kind: 'str' = 'g', name: 'str | None' = None, id: 'str' = '', envelope_override: 'Envelope | None' = None, attached_to: 'tuple[str, ...]' = (), anchors: 'dict[str, Vec2]' = <factory>, notes: 'dict[str, object]' = <factory>, _cache: 'dict' = <factory>) -> None`
|
|
1082
|
+
#### `class Diagram(prim: 'Prim | None' = None, children: "tuple['Diagram', ...]" = (), transform: 'Affine' = Affine(a=1.0, b=0.0, c=0.0, d=1.0, e=0.0, f=0.0), style: 'Style' = Style(fill=None, stroke=None, stroke_width=None, stroke_dash=None, stroke_linecap=None, stroke_linejoin=None, opacity=None, fill_opacity=None, stroke_opacity=None, corner_radius=None, font_family=None, font_size=None, font_weight=None, font_style=None, text_fill=None, line_height=None, halo=None, halo_color=None), kind: 'str' = 'g', name: 'str | None' = None, id: 'str' = '', envelope_override: 'Envelope | None' = None, attached_to: 'tuple[str, ...]' = (), anchors: 'dict[str, Vec2]' = <factory>, notes: 'dict[str, object]' = <factory>, clip_region: 'tuple[Vec2, ...]' = (), _cache: 'dict' = <factory>) -> None`
|
|
1062
1083
|
|
|
1063
|
-
Diagram(prim: 'Prim | None' = None, children: "tuple['Diagram', ...]" = (), transform: 'Affine' = Affine(a=1.0, b=0.0, c=0.0, d=1.0, e=0.0, f=0.0), style: 'Style' = Style(fill=None, stroke=None, stroke_width=None, stroke_dash=None, stroke_linecap=None, stroke_linejoin=None, opacity=None, fill_opacity=None, stroke_opacity=None, corner_radius=None, font_family=None, font_size=None, font_weight=None, font_style=None, text_fill=None, line_height=None, halo=None, halo_color=None), kind: 'str' = 'g', name: 'str | None' = None, id: 'str' = '', envelope_override: 'Envelope | None' = None, attached_to: 'tuple[str, ...]' = (), anchors: 'dict[str, Vec2]' = <factory>, notes: 'dict[str, object]' = <factory>, _cache: 'dict' = <factory>)
|
|
1084
|
+
Diagram(prim: 'Prim | None' = None, children: "tuple['Diagram', ...]" = (), transform: 'Affine' = Affine(a=1.0, b=0.0, c=0.0, d=1.0, e=0.0, f=0.0), style: 'Style' = Style(fill=None, stroke=None, stroke_width=None, stroke_dash=None, stroke_linecap=None, stroke_linejoin=None, opacity=None, fill_opacity=None, stroke_opacity=None, corner_radius=None, font_family=None, font_size=None, font_weight=None, font_style=None, text_fill=None, line_height=None, halo=None, halo_color=None), kind: 'str' = 'g', name: 'str | None' = None, id: 'str' = '', envelope_override: 'Envelope | None' = None, attached_to: 'tuple[str, ...]' = (), anchors: 'dict[str, Vec2]' = <factory>, notes: 'dict[str, object]' = <factory>, clip_region: 'tuple[Vec2, ...]' = (), _cache: 'dict' = <factory>)
|
|
1064
1085
|
|
|
1065
1086
|
* `extent(direction: 'Vec2') -> 'float'` -- How far this reaches along a direction, in the parent's frame. This is what stacking asks, and why a rotated shape packs tighter than its bbox.
|
|
1066
1087
|
* `anchor(name: 'str', at: 'tuple[float, float] | Vec2') -> "'Diagram'"` -- Register a named point. A tuple is read as fractions of the local bounding box, (0, 0) being its top-left corner -- the natural way to point at an ear in a photograph.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "inklet.clipping-benchmark/1",
|
|
3
|
+
"python": "3.12.3",
|
|
4
|
+
"platform": "Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39",
|
|
5
|
+
"source_sha256": "b4ded74e40916e536713f7589469a20bb25677587c03e83942cf6aeb7ecf0bd5",
|
|
6
|
+
"cases": [
|
|
7
|
+
{
|
|
8
|
+
"case": "line",
|
|
9
|
+
"runs": [
|
|
10
|
+
{
|
|
11
|
+
"clip_seconds": 0.09736313400208019,
|
|
12
|
+
"svg_seconds": 0.010083654022309929,
|
|
13
|
+
"pdf_seconds": 0.01944988899049349,
|
|
14
|
+
"total_seconds": 0.1268966770148836,
|
|
15
|
+
"svg_bytes": 76870,
|
|
16
|
+
"pdf_bytes": 36176
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"clip_seconds": 0.09901987100602128,
|
|
20
|
+
"svg_seconds": 0.010495024005649611,
|
|
21
|
+
"pdf_seconds": 0.0206202779954765,
|
|
22
|
+
"total_seconds": 0.1301351730071474,
|
|
23
|
+
"svg_bytes": 76870,
|
|
24
|
+
"pdf_bytes": 36176
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"clip_seconds": 0.10801237399573438,
|
|
28
|
+
"svg_seconds": 0.01182610000250861,
|
|
29
|
+
"pdf_seconds": 0.022811452014138922,
|
|
30
|
+
"total_seconds": 0.1426499260123819,
|
|
31
|
+
"svg_bytes": 76870,
|
|
32
|
+
"pdf_bytes": 36176
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"median": {
|
|
36
|
+
"clip_seconds": 0.09901987100602128,
|
|
37
|
+
"svg_seconds": 0.010495024005649611,
|
|
38
|
+
"pdf_seconds": 0.0206202779954765,
|
|
39
|
+
"total_seconds": 0.1301351730071474,
|
|
40
|
+
"svg_bytes": 76870,
|
|
41
|
+
"pdf_bytes": 36176
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"case": "band",
|
|
46
|
+
"runs": [
|
|
47
|
+
{
|
|
48
|
+
"clip_seconds": 0.6217630119936075,
|
|
49
|
+
"svg_seconds": 0.05115153800579719,
|
|
50
|
+
"pdf_seconds": 0.10317503899568692,
|
|
51
|
+
"total_seconds": 0.7760895889950916,
|
|
52
|
+
"svg_bytes": 316513,
|
|
53
|
+
"pdf_bytes": 145203
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"clip_seconds": 0.626939455018146,
|
|
57
|
+
"svg_seconds": 0.06268787098815665,
|
|
58
|
+
"pdf_seconds": 0.09176701598335057,
|
|
59
|
+
"total_seconds": 0.7813943419896532,
|
|
60
|
+
"svg_bytes": 316513,
|
|
61
|
+
"pdf_bytes": 145203
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"clip_seconds": 0.6646606319991406,
|
|
65
|
+
"svg_seconds": 0.05158257801667787,
|
|
66
|
+
"pdf_seconds": 0.09825415699742734,
|
|
67
|
+
"total_seconds": 0.8144973670132458,
|
|
68
|
+
"svg_bytes": 316513,
|
|
69
|
+
"pdf_bytes": 145203
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"median": {
|
|
73
|
+
"clip_seconds": 0.626939455018146,
|
|
74
|
+
"svg_seconds": 0.05158257801667787,
|
|
75
|
+
"pdf_seconds": 0.09825415699742734,
|
|
76
|
+
"total_seconds": 0.7813943419896532,
|
|
77
|
+
"svg_bytes": 316513,
|
|
78
|
+
"pdf_bytes": 145203
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"case": "curves",
|
|
83
|
+
"runs": [
|
|
84
|
+
{
|
|
85
|
+
"clip_seconds": 0.02900044500711374,
|
|
86
|
+
"svg_seconds": 0.0009433439990971237,
|
|
87
|
+
"pdf_seconds": 0.0009197680046781898,
|
|
88
|
+
"total_seconds": 0.030863557010889053,
|
|
89
|
+
"svg_bytes": 5248,
|
|
90
|
+
"pdf_bytes": 3319
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"clip_seconds": 0.030080602009547874,
|
|
94
|
+
"svg_seconds": 0.0012863579904660583,
|
|
95
|
+
"pdf_seconds": 0.0010805090132635087,
|
|
96
|
+
"total_seconds": 0.03244746901327744,
|
|
97
|
+
"svg_bytes": 5248,
|
|
98
|
+
"pdf_bytes": 3319
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"clip_seconds": 0.029620053013786674,
|
|
102
|
+
"svg_seconds": 0.0009497819992247969,
|
|
103
|
+
"pdf_seconds": 0.0013156150234863162,
|
|
104
|
+
"total_seconds": 0.03188545003649779,
|
|
105
|
+
"svg_bytes": 5248,
|
|
106
|
+
"pdf_bytes": 3319
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"median": {
|
|
110
|
+
"clip_seconds": 0.029620053013786674,
|
|
111
|
+
"svg_seconds": 0.0009497819992247969,
|
|
112
|
+
"pdf_seconds": 0.0010805090132635087,
|
|
113
|
+
"total_seconds": 0.03188545003649779,
|
|
114
|
+
"svg_bytes": 5248,
|
|
115
|
+
"pdf_bytes": 3319
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "inklet.clipping-benchmark/1",
|
|
3
|
+
"python": "3.12.3",
|
|
4
|
+
"platform": "Linux-6.6.87.2-microsoft-standard-WSL2-x86_64-with-glibc2.39",
|
|
5
|
+
"source_sha256": "f323b9e3b780d44cc5ea1b286512bc9d3ec019a1387e814803964d8cc9d27d13",
|
|
6
|
+
"cases": [
|
|
7
|
+
{
|
|
8
|
+
"case": "line",
|
|
9
|
+
"runs": [
|
|
10
|
+
{
|
|
11
|
+
"clip_seconds": 0.2047820259758737,
|
|
12
|
+
"svg_seconds": 0.010102088999701664,
|
|
13
|
+
"pdf_seconds": 0.02015214299899526,
|
|
14
|
+
"total_seconds": 0.23503625797457062,
|
|
15
|
+
"svg_bytes": 76870,
|
|
16
|
+
"pdf_bytes": 36176
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"clip_seconds": 0.20985267401556484,
|
|
20
|
+
"svg_seconds": 0.010210584994638339,
|
|
21
|
+
"pdf_seconds": 0.02010145699023269,
|
|
22
|
+
"total_seconds": 0.24016471600043587,
|
|
23
|
+
"svg_bytes": 76870,
|
|
24
|
+
"pdf_bytes": 36176
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"clip_seconds": 0.20240381799521856,
|
|
28
|
+
"svg_seconds": 0.010233473003609106,
|
|
29
|
+
"pdf_seconds": 0.02053205599077046,
|
|
30
|
+
"total_seconds": 0.23316934698959813,
|
|
31
|
+
"svg_bytes": 76870,
|
|
32
|
+
"pdf_bytes": 36176
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"median": {
|
|
36
|
+
"clip_seconds": 0.2047820259758737,
|
|
37
|
+
"svg_seconds": 0.010210584994638339,
|
|
38
|
+
"pdf_seconds": 0.02015214299899526,
|
|
39
|
+
"total_seconds": 0.23503625797457062,
|
|
40
|
+
"svg_bytes": 76870,
|
|
41
|
+
"pdf_bytes": 36176
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"case": "band",
|
|
46
|
+
"runs": [
|
|
47
|
+
{
|
|
48
|
+
"clip_seconds": 0.6113144700066186,
|
|
49
|
+
"svg_seconds": 0.05068271100753918,
|
|
50
|
+
"pdf_seconds": 0.0926879330072552,
|
|
51
|
+
"total_seconds": 0.754685114021413,
|
|
52
|
+
"svg_bytes": 316513,
|
|
53
|
+
"pdf_bytes": 145203
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"clip_seconds": 0.5794899000029545,
|
|
57
|
+
"svg_seconds": 0.0481099919998087,
|
|
58
|
+
"pdf_seconds": 0.08913570898585021,
|
|
59
|
+
"total_seconds": 0.7167356009886134,
|
|
60
|
+
"svg_bytes": 316513,
|
|
61
|
+
"pdf_bytes": 145203
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"clip_seconds": 0.5717577220057137,
|
|
65
|
+
"svg_seconds": 0.047267758985981345,
|
|
66
|
+
"pdf_seconds": 0.09365696899476461,
|
|
67
|
+
"total_seconds": 0.7126824499864597,
|
|
68
|
+
"svg_bytes": 316513,
|
|
69
|
+
"pdf_bytes": 145203
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"median": {
|
|
73
|
+
"clip_seconds": 0.5794899000029545,
|
|
74
|
+
"svg_seconds": 0.0481099919998087,
|
|
75
|
+
"pdf_seconds": 0.0926879330072552,
|
|
76
|
+
"total_seconds": 0.7167356009886134,
|
|
77
|
+
"svg_bytes": 316513,
|
|
78
|
+
"pdf_bytes": 145203
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"case": "curves",
|
|
83
|
+
"runs": [
|
|
84
|
+
{
|
|
85
|
+
"clip_seconds": 0.03832915498060174,
|
|
86
|
+
"svg_seconds": 0.0019394969858694822,
|
|
87
|
+
"pdf_seconds": 0.002644603024236858,
|
|
88
|
+
"total_seconds": 0.04291325499070808,
|
|
89
|
+
"svg_bytes": 13575,
|
|
90
|
+
"pdf_bytes": 7041
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"clip_seconds": 0.03621691299485974,
|
|
94
|
+
"svg_seconds": 0.0019186209829058498,
|
|
95
|
+
"pdf_seconds": 0.0025379790167789906,
|
|
96
|
+
"total_seconds": 0.04067351299454458,
|
|
97
|
+
"svg_bytes": 13575,
|
|
98
|
+
"pdf_bytes": 7041
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"clip_seconds": 0.038817927008494735,
|
|
102
|
+
"svg_seconds": 0.0018433219811413437,
|
|
103
|
+
"pdf_seconds": 0.0024352470063604414,
|
|
104
|
+
"total_seconds": 0.04309649599599652,
|
|
105
|
+
"svg_bytes": 13575,
|
|
106
|
+
"pdf_bytes": 7041
|
|
107
|
+
}
|
|
108
|
+
],
|
|
109
|
+
"median": {
|
|
110
|
+
"clip_seconds": 0.03832915498060174,
|
|
111
|
+
"svg_seconds": 0.0019186209829058498,
|
|
112
|
+
"pdf_seconds": 0.0025379790167789906,
|
|
113
|
+
"total_seconds": 0.04291325499070808,
|
|
114
|
+
"svg_bytes": 13575,
|
|
115
|
+
"pdf_bytes": 7041
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
\caption{Clipping checks using original simulated data and artwork. (a) Geometrically clipped smooth response curves, retaining cubic segments. (b) A dense signal with a narrow peak and an explicit missing-data gap; physical simplification tolerance 0.02 mm. (c) Filled uncertainty-like bands representing supplied simulated intervals, cropped with their outlines. (d) Large boundary markers and thick strokes cropped by a painted window. (e) A synthetic scalar image under a rotated convex window. (f) Glyphs and halos cropped together. (g) Rounded rectangles and an even-odd hole, cropped without changing their source geometry. (h) Nested windows with group opacity beside an unclipped sibling. Letter labels identify checks; the artwork contains no panel titles. Recipe and artwork: MIT, Mark Marosi. No measured data or inferred uncertainty.}
|