inklet 3.1.0__tar.gz → 4.0.0.dev2__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-3.1.0 → inklet-4.0.0.dev2}/.github/workflows/checks.yml +61 -1
- {inklet-3.1.0 → inklet-4.0.0.dev2}/.github/workflows/publish.yml +30 -4
- {inklet-3.1.0 → inklet-4.0.0.dev2}/CHANGELOG.md +165 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/CONTRIBUTING.md +5 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/PKG-INFO +28 -3
- {inklet-3.1.0 → inklet-4.0.0.dev2}/README.md +21 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/THIRD_PARTY_NOTICES.md +13 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/api.md +10 -6
- inklet-4.0.0.dev2/docs/assets/guides/plot-quality-after.png +0 -0
- inklet-4.0.0.dev2/docs/assets/guides/plot-quality-before.png +0 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/clipping-after.json +119 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/clipping-before.json +119 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/clipping-caption.tex +1 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/clipping-lines-after.json +110 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/clipping-lines-before.json +110 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/compositing-after.json +143 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/compositing-before.json +143 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/compositing-caption.tex +1 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/hatch-after.json +207 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/hatch-before.json +207 -0
- inklet-4.0.0.dev2/docs/assets/research-preview/hatch-caption.tex +1 -0
- inklet-4.0.0.dev2/docs/assets/v4/after.json +749 -0
- inklet-4.0.0.dev2/docs/assets/v4/before.json +531 -0
- inklet-4.0.0.dev2/docs/assets/v4/browser-quality.json +21 -0
- inklet-4.0.0.dev2/docs/assets/v4/browser-scatter.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/browser-scatter.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/browser-study.json +200 -0
- inklet-4.0.0.dev2/docs/assets/v4/contours-streamlines-170mm.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/contours-streamlines-masked.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/contours-streamlines.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/contours-streamlines.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/engineering-report-170mm.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/engineering-report.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/engineering-report.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/faceted-operations.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/faceted-operations.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/linked-dashboard.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/linked-dashboard.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/linked-selection.html +89 -0
- inklet-4.0.0.dev2/docs/assets/v4/linked-selection.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/mesh-fields-170mm.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/mesh-fields.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/mesh-fields.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/region-shapes.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/region-shapes.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/regional-analysis.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/regional-analysis.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/regional-report-160mm.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/regional-report.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/regional-report.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/scientific-report-170mm.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/scientific-report.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/scientific-report.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/statistical-views.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/statistical-views.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/table-inputs.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/table-inputs.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/time-series.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/time-series.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population-2019.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population-2019.json +33 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population-2019.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population-revisions.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population-revisions.png +0 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population.html +404 -0
- inklet-4.0.0.dev2/docs/assets/v4/world-population.png +0 -0
- inklet-4.0.0.dev2/docs/browser-rendering.md +116 -0
- inklet-4.0.0.dev2/docs/clipping.md +109 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/compatibility.md +11 -0
- inklet-4.0.0.dev2/docs/compositing.md +112 -0
- inklet-4.0.0.dev2/docs/contours-streamlines.md +171 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/cookbook.md +4 -0
- inklet-4.0.0.dev2/docs/data-revisions.md +221 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/data.md +10 -0
- inklet-4.0.0.dev2/docs/design/browser-backends.md +133 -0
- inklet-4.0.0.dev2/docs/design/v4.md +220 -0
- inklet-4.0.0.dev2/docs/development-preview.md +103 -0
- inklet-4.0.0.dev2/docs/engineering-report.md +170 -0
- inklet-4.0.0.dev2/docs/hatching.md +112 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/index.md +1 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/installation.md +14 -1
- inklet-4.0.0.dev2/docs/linked-facets.md +133 -0
- inklet-4.0.0.dev2/docs/linked-maps.md +170 -0
- inklet-4.0.0.dev2/docs/linked-plots.md +121 -0
- inklet-4.0.0.dev2/docs/mesh-fields.md +140 -0
- inklet-4.0.0.dev2/docs/plot-quality.md +49 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/plot-types.md +4 -0
- inklet-4.0.0.dev2/docs/regional-report.md +143 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/release-checks.md +15 -2
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/rendering-engine.md +10 -0
- inklet-4.0.0.dev2/docs/roadmap.md +266 -0
- inklet-4.0.0.dev2/docs/scientific-report.md +180 -0
- inklet-4.0.0.dev2/docs/statistical-views.md +131 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/stylesheets/inklet.css +1 -2
- inklet-4.0.0.dev2/docs/table-inputs.md +143 -0
- inklet-4.0.0.dev2/docs/time-series.md +162 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/v3.md +3 -0
- inklet-4.0.0.dev2/docs/v4-foundations.md +143 -0
- inklet-4.0.0.dev2/docs/world-map.md +95 -0
- inklet-4.0.0.dev2/examples/clipping_review.py +90 -0
- inklet-4.0.0.dev2/examples/compositing_review.py +93 -0
- inklet-4.0.0.dev2/examples/hatch_review.py +70 -0
- inklet-4.0.0.dev2/examples/plot_quality_review.py +54 -0
- inklet-4.0.0.dev2/examples/v4/README.md +299 -0
- inklet-4.0.0.dev2/examples/v4/browser_scatter.py +42 -0
- inklet-4.0.0.dev2/examples/v4/contours_streamlines.py +102 -0
- inklet-4.0.0.dev2/examples/v4/data/world-countries.geojson +1 -0
- inklet-4.0.0.dev2/examples/v4/data/world-map-source.json +30 -0
- inklet-4.0.0.dev2/examples/v4/data/world-population.csv +177 -0
- inklet-4.0.0.dev2/examples/v4/engineering_report.py +167 -0
- inklet-4.0.0.dev2/examples/v4/faceted_operations.py +86 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/assembly.json +10 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/manifest.json +21 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/measurement.json +8 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/region-shapes.geojson +1 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/regions.csv +5 -0
- inklet-4.0.0.dev2/examples/v4/fixtures/regions.geojson +1 -0
- inklet-4.0.0.dev2/examples/v4/linked_dashboard.py +46 -0
- inklet-4.0.0.dev2/examples/v4/linked_selection.html +89 -0
- inklet-4.0.0.dev2/examples/v4/linked_selection.py +102 -0
- inklet-4.0.0.dev2/examples/v4/mesh_fields.py +115 -0
- inklet-4.0.0.dev2/examples/v4/region_shapes.py +28 -0
- inklet-4.0.0.dev2/examples/v4/regional_analysis.py +50 -0
- inklet-4.0.0.dev2/examples/v4/regional_report.py +162 -0
- inklet-4.0.0.dev2/examples/v4/scientific_report.py +110 -0
- inklet-4.0.0.dev2/examples/v4/statistical_views.py +61 -0
- inklet-4.0.0.dev2/examples/v4/table_inputs.py +82 -0
- inklet-4.0.0.dev2/examples/v4/time_series.py +78 -0
- inklet-4.0.0.dev2/examples/v4/world_population.py +154 -0
- inklet-4.0.0.dev2/gallery/clipping-review.png +0 -0
- inklet-4.0.0.dev2/gallery/compositing-pdf-after.png +0 -0
- inklet-4.0.0.dev2/gallery/compositing-pdf-before.png +0 -0
- inklet-4.0.0.dev2/gallery/compositing-review.png +0 -0
- inklet-4.0.0.dev2/gallery/hatch-pdf-after.png +0 -0
- inklet-4.0.0.dev2/gallery/hatch-pdf-before.png +0 -0
- inklet-4.0.0.dev2/gallery/hatch-review.png +0 -0
- inklet-4.0.0.dev2/gallery/hatch-svg-before.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/mkdocs.yml +23 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/pyproject.toml +7 -3
- inklet-4.0.0.dev2/requirements-tables.txt +28 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/__init__.py +3 -3
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/diagram.py +35 -6
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/rules.py +50 -2
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/compiler.py +60 -19
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/data.py +6 -1
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/__init__.py +2 -2
- inklet-4.0.0.dev2/src/inklet/draw/bezier_clip.py +127 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/clip.py +79 -28
- inklet-4.0.0.dev2/src/inklet/experimental/_table_adapters.py +137 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/__init__.py +747 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/drawings.py +91 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/fields.py +108 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/grid.py +108 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/images.py +122 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/page.html +22 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/regions.py +92 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/runtime.js +382 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/series.py +107 -0
- inklet-4.0.0.dev2/src/inklet/experimental/browser/timeaxis.py +109 -0
- inklet-4.0.0.dev2/src/inklet/experimental/engineering.py +99 -0
- inklet-4.0.0.dev2/src/inklet/experimental/fields.py +135 -0
- inklet-4.0.0.dev2/src/inklet/experimental/grid.py +294 -0
- inklet-4.0.0.dev2/src/inklet/experimental/measurement.py +112 -0
- inklet-4.0.0.dev2/src/inklet/experimental/selection.py +200 -0
- inklet-4.0.0.dev2/src/inklet/experimental/temporal.py +59 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/marks.py +2 -2
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/panel.py +4 -1
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/scale.py +32 -10
- inklet-4.0.0.dev2/src/inklet/render/analysis.py +58 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/bounds.py +19 -5
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/brushes.py +5 -16
- inklet-4.0.0.dev2/src/inklet/render/hatching.py +49 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/pdf.py +78 -58
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/preview.py +36 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/svg.py +74 -1
- inklet-4.0.0.dev2/tests/test_browser_facets.py +262 -0
- inklet-4.0.0.dev2/tests/test_browser_figure.py +167 -0
- inklet-4.0.0.dev2/tests/test_browser_regions.py +165 -0
- inklet-4.0.0.dev2/tests/test_browser_revision.py +196 -0
- inklet-4.0.0.dev2/tests/test_browser_scatter.py +115 -0
- inklet-4.0.0.dev2/tests/test_browser_series.py +134 -0
- inklet-4.0.0.dev2/tests/test_browser_statistics.py +467 -0
- inklet-4.0.0.dev2/tests/test_browser_switching.py +330 -0
- inklet-4.0.0.dev2/tests/test_browser_time.py +295 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_categories.py +9 -1
- inklet-4.0.0.dev2/tests/test_clip_engine.py +216 -0
- inklet-4.0.0.dev2/tests/test_compositing_engine.py +158 -0
- inklet-4.0.0.dev2/tests/test_engineering_report.py +190 -0
- inklet-4.0.0.dev2/tests/test_grid_fields.py +222 -0
- inklet-4.0.0.dev2/tests/test_hatch_engine.py +155 -0
- inklet-4.0.0.dev2/tests/test_mesh_fields.py +218 -0
- inklet-4.0.0.dev2/tests/test_plot_quality_review.py +108 -0
- inklet-4.0.0.dev2/tests/test_regional_report.py +172 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_style_fields.py +5 -4
- inklet-4.0.0.dev2/tests/test_scientific_report.py +204 -0
- inklet-4.0.0.dev2/tests/test_shared_plot_margins.py +219 -0
- inklet-4.0.0.dev2/tests/test_table_adapters.py +260 -0
- inklet-4.0.0.dev2/tests/test_temporal_adapters.py +141 -0
- inklet-4.0.0.dev2/tests/test_v4_selection.py +226 -0
- inklet-4.0.0.dev2/tests/test_world_map_example.py +77 -0
- inklet-4.0.0.dev2/tools/benchmark_clipping.py +62 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/benchmark_engine.py +29 -2
- inklet-4.0.0.dev2/tools/benchmark_v4.py +119 -0
- inklet-4.0.0.dev2/tools/browser_study.js +35 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/check_wheel.py +59 -0
- inklet-4.0.0.dev2/tools/prepare_world_map.py +69 -0
- inklet-4.0.0.dev2/tools/v4-budgets.json +9 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/.gitattributes +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/.gitignore +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/.readthedocs.yaml +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/CONTRACT.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/LICENSE +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/brand/inklet-icon.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/brand/inklet-logo-dark.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/brand/inklet-logo-mono.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/brand/inklet-logo.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/brand/inklet-wordmark.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/examples/quickstart.pdf +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/examples/quickstart.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/examples/quickstart.svg +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/axes-and-scales-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/calibrated-volumes-3.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/channels-and-contours-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-anchor.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-annotation.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-bars-histogram.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-branch.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-broken-axis.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-callout.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-clipping.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-creases.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-custom-key.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-cutout.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-dates.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-dense.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-elbows.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-equal-boxes.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-facets.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-fit-graph.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-flow-width.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-formula.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-graph.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-halo.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-heatmap.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-hole.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-inline-type.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-inset.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-labels.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-layers.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-letters.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-list.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-matrix.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-page-grid.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-polar.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-protein.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-routes.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-scene-overlay.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-scene.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-series-key.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-span.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-sparse-grid.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-swarm.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-text-path.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-toon.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-twin-axis.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-unequal-panels.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-violin.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/cookbook-wrapped-card.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/data-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/data-3.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/dense-data-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/diagram-components-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/diagrams-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/layout-3.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/oblique-sections-2.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/plot-types-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/plotting-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/plotting-2.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/publication-plots-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/publication-plots-2.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/publication-plots-3.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/publication-plots-4.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/slabs-and-regions-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/three-images-1.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/guides/three-images-2.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/biology.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/comparison.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/diagram-after.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/diagram-before.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/diagram-review-caption.tex +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/engine-after.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/engine-before.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/engine-review-caption.tex +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/fluorescence-biology.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/general-plots-caption.tex +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/general-plots.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/label-intensities-caption.tex +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/label-intensities-native.csv +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/label-intensities.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/lines-after.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/lines-before.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/oblique-biology.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/plot-engine-review-caption.tex +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/real-biology.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/revision.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/slab-biology.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/assets/research-preview/study.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/axes-and-scales.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/biology-panels.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/blender-scenes.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/brand.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/calibrated-volumes.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/channels-and-contours.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/cli.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/complex-scene.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/concepts.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/dense-data.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/design/page_grid.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/design/v2.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/diagram-components.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/diagram-engine.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/diagrams.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/example-library.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/examples.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/export-review.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/fluorescence-biology.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/general-plots.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/javascripts/inklet.js +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/label-intensities.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/label-measurements.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/layout.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/microscopy-tiff.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/migration.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/oblique-biology.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/oblique-sections.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/plotting-engine.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/plotting.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/presets.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/publication-plots.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/quickstart.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/real-biology.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/architecture-sketch.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/architecture.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/attractor.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/helix.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/interference.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/lattice.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/photonics.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/recipes/wave-packets.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/render-jobs.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/research-preview.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/research-revision.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/research-study.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/scene-annotations.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/scene-paths.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/scene-templates.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/showcase.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/slab-biology.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/slabs-and-regions.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/stress20.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/stylesheets/code.css +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/three-images.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/troubleshooting.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/v2.5.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/docs/v2.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/cells3d.lock.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/fluorescence.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/organelle.lock.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology/requirements.txt +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/biology_panels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/blender/complex_lab_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/blender/lab_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/blender/occlusion_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/blender/organelle_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/blender/research_lab_views.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/broken_axis.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/data/general-plots/benchmark.csv +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/data/general-plots/learning.csv +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/data/general-plots/revenue.csv +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/data/general-plots/sensor.csv +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/diagram_review.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/engine_review.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/feature_flow.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/fluorescence_biology.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/gallery.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/general_plots.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/graph.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/hello_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/label_intensities.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/oblique_biology.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/panels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/plot_engine_review.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/polar.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/preset_formats.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/presets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/real_biology.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/render_smoke.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/research_figure_planner.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/research_planner_study.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/research_revision.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/showcase/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/showcase/assets.lock.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/showcase/blender_scenes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/showcase/figures.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/slab_biology.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/state_machine.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/stress20.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v25_document.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v2_cases.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v2_document.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_complex_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_render_jobs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_rendering.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_scene_annotations.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_scene_passes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_scene_paths.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/examples/v3_scene_templates.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/annot.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/bio3d.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/cartoon.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/chem_data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/chem_fingerprints.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/data/1m17-kinase.pdb +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/data/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/drug_discovery.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/mouse_brain_data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/neural_activity.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/pdbfile.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/showcase_part.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/showcase_process.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/showcase_season.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/structure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/structure_data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/target.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/figures/trial.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/biology-panels.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/chem_fingerprints.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/diagram-labels-after.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/diagram-labels-before.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/diagram-review.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/engine-review.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/engine-transparency-after.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/engine-transparency-before.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/flow.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/fluorescence-biology.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/general-plots-before.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/general-plots.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/label-intensities.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/oblique-biology.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/part.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/plot-axis-after.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/plot-axis-before.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/plot-engine-review.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/plots.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/polar.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/preset-formats.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/presets.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/process.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/real-biology.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/research-crossing-revision.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/research-figure-planner.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/research-planner-study.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/research-revision.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/season.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-architecture-sketch.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-architecture.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-attractor.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-helix.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-interference.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-lattice.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-photonics.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/showcase-wave-packets.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/slab-biology.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/stress20.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/structure.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-complex-scene.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-render-jobs.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-rendering.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-scene-annotations.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-scene-passes.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-scene-paths.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/gallery/v3-scene-templates.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/requirements-ci.txt +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/requirements-docs.txt +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/scripts/bench_svg.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/scripts/rasterise.sh +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/scripts/sanity_typeset.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/__main__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/asset.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/cache.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/cutout.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/deps.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/harmonise.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/lineart.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/mask.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/provenance.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/raster.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/sidecar.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/assets/silhouette.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/cli.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/components.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/envelope.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/geom.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/prims.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/style.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/trace.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/core/units.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/abut.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/break_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/color.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/cross.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/image.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/key_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/link_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/path_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/plot_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/report.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/diagnostics/three_rules.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/composition.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/data_io.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/module.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/presets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/publication.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/document/spec.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/annotate.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/coords.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/path.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/place.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/draw/shapes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/channels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/contours.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/figure_planner.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/measurements.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/planner_geometry.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/regions.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/sections.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/slabs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/tiff.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/experimental/volume.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/fit.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/flow.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/graph.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/graph_force.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/graph_layered.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/graph_tree.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/labels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/layout/sankey.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/links/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/links/curves.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/links/link.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/axis.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/breaks.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/categories.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/facets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/inset.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/key.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/notes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/png.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/polar.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/ramp.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/raster.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/ribbon.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/scatter_raster.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/series.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/simplify.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/plot/timescale.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/bundle.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/composite.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/fontembed.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/glyphs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/outline.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/paint.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/pathdata.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/pdftext.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/raster.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/resources.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/review.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/render/revision.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/themes/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/themes/color.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/themes/palettes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/themes/theme.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/api.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/backend.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/device_worker.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/discover.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/lineart.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/options.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/scene_worker.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/script.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/svgread.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/template_worker.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender/tracing.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/blender_backend.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/camera.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/deps.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/depth.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/devices.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/drill.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/edges.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/hlr.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/linalg.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/mesh.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/occlude.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/order.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/parse.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/place.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/protein.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/quality.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/render_jobs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/scene_annotations.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/scene_pass.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/scene_projection.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/scenes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/shade.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/solids.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/templates.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/three/templates.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/__init__.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/fonts.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/markup.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/onpath.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/outline.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/src/inklet/typeset/shaping.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/assets/mouse.inklet.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/assets/mouse.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/dense_graph.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/draw_probe.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/assets/sem.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/assets/tem.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/cell.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/common.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/imaging.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/kinetics.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/micrograph.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro/system.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/electro_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/fidelity.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/flow.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/hard_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/label_storm.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/mega_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/meshes/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/meshes/brain-lh.obj +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/meshes/spot.obj +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/panels/apparatus.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/panels/graphs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/panels/relations.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/panels/responses.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/panels/sections.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/probes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/stress/three_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_alignment_contract.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_annotate.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_annotate_letters.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_assets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_assets_provenance.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_biology_source.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_blend_scene.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_channels_contours.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_chem_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_cli.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_components.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_contrast_and_labels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_cookbook.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_core.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_core_amendments.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_csv_input.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_api.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_artwork.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_break_distorts.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_crossing.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_image_contrast.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_ink.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_keys.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_links.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_paths.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagnostics_plot_box.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_diagram_engine.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_docs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_docs_site.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_document.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_document_data.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_document_v25.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_draw_clip.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_draw_path.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_draw_place.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_draw_shapes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_engine_layout.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_engine_rendering.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_engine_scatter.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_export_bundle.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_figure_planner.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_fit.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_guides.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_label_measurements.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_layout.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_layout_graph.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_layout_graph_fit.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_layout_origin.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_layout_sankey.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_links.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_links_avoid.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_links_shapes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_microscopy_tiff.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_neural_activity.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_output_contract.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_paint_program.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_place_labels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_axis.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_broken_axis.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_clip.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_engine.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_facets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_inset.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_key.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_labels.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_legend.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_marks.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_notes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_polar.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_publication.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_raster.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_ribbon.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_scale.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_swarm.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_plot_time.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_presets.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_publication_limits.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_release_adversarial.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_devices.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_embed.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_glyphs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_jobs.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_outline.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_pdf.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_pdf_text.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_quality.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_svg_perf.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_render_v3.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_review_v25.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_round4_plot.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_routing_avoid.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_scatter_rendering.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_scene_annotations.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_scene_pass.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_scene_projection.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_scene_templates.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_sections.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_showcase_library.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_showcase_round3.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_slabs_regions.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_structure_figure.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_svg.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_target_pose.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_text_markup.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_text_on_path.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_theme_font_style.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_themes.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_anchor_pin.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_api.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_backend_blender.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_blender.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_depth_order.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_drill.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_hlr.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_mesh.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_order_vector.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_overlay.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_parse.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_patches.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_place.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_protein.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_ridges.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_sort.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_sort_budget.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_three_view.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_typeset.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_volume.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/test_watch_review.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/README.md +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/categories-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/categories-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/components-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/components-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/dense-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/dense-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/fonts.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/inset-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/inset-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/markers-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/markers-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/renderers.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/type-opacity-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/type-opacity-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-category-subset-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-category-subset-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-dense-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-dense-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-late-inset-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-late-inset-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-shared-scales-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-shared-scales-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-twins-matrix-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-twins-matrix-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-workflow-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v2-workflow-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v25-document-pdf.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/baseline/v25-document-svg.png +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/fixtures.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tests/visual/v2-budgets.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/benchmark_diagrams.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/benchmark_lines.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/benchmark_v2.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/check_render_wheel.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/dock_ligand.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_gallery.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_previews.json +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_previews.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_site.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_theme/404.html +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_theme/card.html +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_theme/gallery.html +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_theme/home.html +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/docs_theme/main.html +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/gen_api.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/preset_gallery.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/showcase_gallery.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/stress20.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/strip_pdb.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/v3_showcase.py +0 -0
- {inklet-3.1.0 → inklet-4.0.0.dev2}/tools/visual_check.py +0 -0
|
@@ -58,7 +58,28 @@ jobs:
|
|
|
58
58
|
- name: Build the preset comparison gallery
|
|
59
59
|
run: .venv/bin/python tools/preset_gallery.py --output out/presets
|
|
60
60
|
- name: Common CSV plotting example
|
|
61
|
-
run:
|
|
61
|
+
run: |
|
|
62
|
+
.venv/bin/python examples/general_plots.py --output out/general-plots
|
|
63
|
+
.venv/bin/python examples/plot_quality_review.py --output out/plot-quality
|
|
64
|
+
- name: Experimental selection and revision baseline
|
|
65
|
+
run: |
|
|
66
|
+
.venv/bin/python examples/v4/linked_selection.py --output out/v4-linked
|
|
67
|
+
.venv/bin/python examples/v4/browser_scatter.py --count 3000 --output out/v4-browser
|
|
68
|
+
.venv/bin/python examples/v4/linked_dashboard.py --output out/v4-dashboard
|
|
69
|
+
.venv/bin/python examples/v4/faceted_operations.py --output out/v4-facets
|
|
70
|
+
.venv/bin/python examples/v4/time_series.py --output out/v4-time
|
|
71
|
+
.venv/bin/python examples/v4/statistical_views.py --output out/v4-statistics
|
|
72
|
+
.venv/bin/python examples/v4/regional_report.py --render --output out/v4-regional-report
|
|
73
|
+
.venv/bin/python examples/v4/engineering_report.py --render --output out/v4-engineering
|
|
74
|
+
.venv/bin/python examples/v4/scientific_report.py --render --output out/v4-scientific
|
|
75
|
+
.venv/bin/python examples/v4/mesh_fields.py --render --output out/v4-mesh-fields
|
|
76
|
+
.venv/bin/python examples/v4/contours_streamlines.py --render --output out/v4-contours-streamlines
|
|
77
|
+
.venv/bin/python examples/v4/regional_analysis.py --output out/v4-regions
|
|
78
|
+
.venv/bin/python examples/v4/region_shapes.py --output out/v4-region-shapes
|
|
79
|
+
.venv/bin/python examples/v4/world_population.py --output out/v4-world
|
|
80
|
+
.venv/bin/python examples/v4/world_population.py --year 2019 --output out/v4-revision
|
|
81
|
+
.venv/bin/python examples/v4/world_population.py --switchable --output out/v4-switchable
|
|
82
|
+
.venv/bin/python tools/benchmark_v4.py --repeat 1 --label ci --output out/v4-baseline.json
|
|
62
83
|
- name: Build the mathematical showcase library
|
|
63
84
|
run: .venv/bin/python tools/showcase_gallery.py --plots-only --quality preview
|
|
64
85
|
- name: Coordinated biology figure and data export
|
|
@@ -71,6 +92,9 @@ jobs:
|
|
|
71
92
|
run: |
|
|
72
93
|
.venv/bin/python tools/benchmark_engine.py --repeat 1 --output out/engine-benchmark.json
|
|
73
94
|
.venv/bin/python examples/engine_review.py --output out/engine-review
|
|
95
|
+
.venv/bin/python examples/compositing_review.py --output out/compositing-review
|
|
96
|
+
.venv/bin/python examples/hatch_review.py --output out/hatch-review
|
|
97
|
+
.venv/bin/python examples/clipping_review.py --output out/clipping-review
|
|
74
98
|
- name: Diagram routing and label review
|
|
75
99
|
run: |
|
|
76
100
|
.venv/bin/python tools/benchmark_diagrams.py --repeat 1 --output out/diagram-benchmark.json
|
|
@@ -90,6 +114,42 @@ jobs:
|
|
|
90
114
|
retention-days: 7
|
|
91
115
|
if-no-files-found: ignore
|
|
92
116
|
|
|
117
|
+
tables:
|
|
118
|
+
name: Table adapters (${{ matrix.dependencies }})
|
|
119
|
+
runs-on: ubuntu-24.04
|
|
120
|
+
timeout-minutes: 10
|
|
121
|
+
strategy:
|
|
122
|
+
fail-fast: false
|
|
123
|
+
matrix:
|
|
124
|
+
dependencies: [minimum, current]
|
|
125
|
+
steps:
|
|
126
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
127
|
+
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
128
|
+
with:
|
|
129
|
+
python-version: '3.12'
|
|
130
|
+
- name: Install current locked adapters
|
|
131
|
+
if: matrix.dependencies == 'current'
|
|
132
|
+
run: |
|
|
133
|
+
uv venv
|
|
134
|
+
uv pip install -r requirements-tables.txt -e .
|
|
135
|
+
- name: Install minimum supported adapters
|
|
136
|
+
if: matrix.dependencies == 'minimum'
|
|
137
|
+
run: |
|
|
138
|
+
uv venv
|
|
139
|
+
uv pip install -e '.[dev]' 'pandas==2.2.0' 'polars==1.0.0' 'numpy==1.26.4'
|
|
140
|
+
- name: Table contracts and cross-library figure reconstruction
|
|
141
|
+
run: |
|
|
142
|
+
.venv/bin/python -m pytest -q tests/test_table_adapters.py tests/test_temporal_adapters.py tests/test_v4_selection.py
|
|
143
|
+
.venv/bin/python examples/v4/table_inputs.py --backend pandas --output out/pandas
|
|
144
|
+
.venv/bin/python examples/v4/table_inputs.py --backend polars --state out/pandas/view.json --output out/polars
|
|
145
|
+
cmp out/pandas/figure.svg out/polars/figure.svg
|
|
146
|
+
.venv/bin/python examples/v4/table_inputs.py --backend pandas --revised --output out/pandas-revised
|
|
147
|
+
.venv/bin/python examples/v4/table_inputs.py --backend polars --revised --state out/pandas-revised/view.json --output out/polars-revised
|
|
148
|
+
cmp out/pandas-revised/figure.svg out/polars-revised/figure.svg
|
|
149
|
+
.venv/bin/python examples/v4/time_series.py --backend pandas --output out/time-pandas
|
|
150
|
+
.venv/bin/python examples/v4/time_series.py --backend polars --state out/time-pandas/view.json --output out/time-polars
|
|
151
|
+
cmp out/time-pandas/figure.svg out/time-polars/figure.svg
|
|
152
|
+
|
|
93
153
|
wheel:
|
|
94
154
|
runs-on: ${{ matrix.os }}
|
|
95
155
|
timeout-minutes: 10
|
|
@@ -6,7 +6,7 @@ on:
|
|
|
6
6
|
tag:
|
|
7
7
|
description: Published GitHub release tag
|
|
8
8
|
required: true
|
|
9
|
-
default:
|
|
9
|
+
default: v4.0.0.dev2
|
|
10
10
|
type: string
|
|
11
11
|
dry_run:
|
|
12
12
|
description: Validate release files without uploading to PyPI
|
|
@@ -42,11 +42,20 @@ jobs:
|
|
|
42
42
|
GH_REPO: ${{ github.repository }}
|
|
43
43
|
RELEASE_TAG: ${{ inputs.tag }}
|
|
44
44
|
run: |
|
|
45
|
-
[[ "$RELEASE_TAG" =~ ^v[0-9]+\.[0-9]+\.[0-9]
|
|
46
|
-
echo 'Expected a stable
|
|
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.dev2' >&2
|
|
47
47
|
exit 1
|
|
48
48
|
}
|
|
49
|
-
gh release view "$RELEASE_TAG" --json isDraft
|
|
49
|
+
gh release view "$RELEASE_TAG" --json isDraft,isPrerelease > "$RUNNER_TEMP/release.json"
|
|
50
|
+
python - <<'PYCODE'
|
|
51
|
+
import json, os
|
|
52
|
+
from pathlib import Path
|
|
53
|
+
release = json.loads((Path(os.environ['RUNNER_TEMP']) / 'release.json').read_text())
|
|
54
|
+
if release['isDraft']:
|
|
55
|
+
raise SystemExit('Publish the GitHub release before uploading its assets')
|
|
56
|
+
if release['isPrerelease'] != ('.dev' in os.environ['RELEASE_TAG']):
|
|
57
|
+
raise SystemExit('Development tags must be GitHub prereleases; stable tags must not')
|
|
58
|
+
PYCODE
|
|
50
59
|
version="${RELEASE_TAG#v}"
|
|
51
60
|
gh release download "$RELEASE_TAG" --dir dist \
|
|
52
61
|
--pattern "inklet-${version}-py3-none-any.whl" \
|
|
@@ -59,6 +68,9 @@ jobs:
|
|
|
59
68
|
python - <<'PY'
|
|
60
69
|
import hashlib
|
|
61
70
|
import os
|
|
71
|
+
import tarfile
|
|
72
|
+
import zipfile
|
|
73
|
+
from email.parser import BytesParser
|
|
62
74
|
from pathlib import Path
|
|
63
75
|
|
|
64
76
|
dist = Path('dist')
|
|
@@ -74,6 +86,20 @@ jobs:
|
|
|
74
86
|
if hashlib.sha256((dist / name).read_bytes()).hexdigest() != digest:
|
|
75
87
|
raise SystemExit(f'Checksum mismatch: {name}')
|
|
76
88
|
print(f'Verified {name}')
|
|
89
|
+
wheel = dist / f'inklet-{version}-py3-none-any.whl'
|
|
90
|
+
with zipfile.ZipFile(wheel) as archive:
|
|
91
|
+
metadata_files = [n for n in archive.namelist() if n.endswith('.dist-info/METADATA')]
|
|
92
|
+
if len(metadata_files) != 1:
|
|
93
|
+
raise SystemExit('Expected exactly one wheel metadata file')
|
|
94
|
+
wheel_metadata = BytesParser().parsebytes(archive.read(metadata_files[0]))
|
|
95
|
+
with tarfile.open(dist / f'inklet-{version}.tar.gz') as archive:
|
|
96
|
+
metadata = archive.extractfile(f'inklet-{version}/PKG-INFO')
|
|
97
|
+
if metadata is None:
|
|
98
|
+
raise SystemExit('Missing source archive metadata')
|
|
99
|
+
source_metadata = BytesParser().parsebytes(metadata.read())
|
|
100
|
+
for metadata in (wheel_metadata, source_metadata):
|
|
101
|
+
if metadata['Name'] != 'inklet' or metadata['Version'] != version:
|
|
102
|
+
raise SystemExit('Distribution metadata does not match the requested release')
|
|
77
103
|
(dist / 'SHA256SUMS').unlink()
|
|
78
104
|
PY
|
|
79
105
|
uvx --from twine==7.0.0 twine check --strict dist/*
|
|
@@ -1,5 +1,170 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.0.0.dev2 — 2026-09-08
|
|
4
|
+
|
|
5
|
+
Second development preview. Install explicitly with
|
|
6
|
+
`python -m pip install "inklet==4.0.0.dev2"`; 3.1.0 remains stable.
|
|
7
|
+
|
|
8
|
+
- Preserve open cubic segments through geometric clipping, using parameter
|
|
9
|
+
subdivision and bounded adaptive measurement sampling in the clip frame.
|
|
10
|
+
- Add `window()` for nested, transformed visual clipping of all SVG/PDF/PNG
|
|
11
|
+
paint, including glyphs, images, markers, filled curves and rounded corners.
|
|
12
|
+
Keep window layout, painted bounds and authored child geometry distinct;
|
|
13
|
+
expose inherited clip regions and visibility filtering through resolution.
|
|
14
|
+
- Preserve windows through document compilation/copying and account for hidden
|
|
15
|
+
content in page-bound and path-crossing diagnostics.
|
|
16
|
+
- Reduce allocation in dense-line clipping; add an eight-panel rendering
|
|
17
|
+
review, independent backend checks and reproducible clipping/line benchmarks.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
- Share exact hatch-line geometry between SVG and PDF, with reusable local
|
|
21
|
+
coverage resources and independent shape clips. Preserve holes, transforms,
|
|
22
|
+
border styles and fill opacity without periodic tile seams or inherited
|
|
23
|
+
border settings affecting the fill.
|
|
24
|
+
- Reuse hatch coverage across nearby shape sizes, retain explicit work limits,
|
|
25
|
+
and add an illustrated review plus repeated/distinct-size export benchmarks.
|
|
26
|
+
|
|
27
|
+
- Correct PDF compositing for individual filled-and-stroked shapes, text halos
|
|
28
|
+
and vector brushes: group opacity fades their combined paint once.
|
|
29
|
+
- Preserve palette and color-key PNG transparency in PDF, including partial
|
|
30
|
+
palette alpha and file-backed images.
|
|
31
|
+
- Reuse subtree painted bounds and paint-count analysis within each PDF page
|
|
32
|
+
export; nested transparency groups no longer remeasure the same glyphs for
|
|
33
|
+
every ancestor. Keep inherited style/transform contexts separate and discard
|
|
34
|
+
the caches after export.
|
|
35
|
+
- Add an illustrated compositing review, independent SVG/Poppler comparisons
|
|
36
|
+
and a nested-group workload to the rendering benchmark and CI checks.
|
|
37
|
+
|
|
38
|
+
## 4.0.0.dev1 — 2026-09-08
|
|
39
|
+
|
|
40
|
+
First installable 4.0 development preview. This collects the linked-document,
|
|
41
|
+
data, map, engineering and scientific work since 3.1.0. APIs under
|
|
42
|
+
`inklet.experimental` and saved-state schemas may change between previews.
|
|
43
|
+
3.1.0 remains the stable release; the full 4.0 roadmap is not complete.
|
|
44
|
+
|
|
45
|
+
Install explicitly with `python -m pip install "inklet==4.0.0.dev1"`.
|
|
46
|
+
See the [preview guide](docs/development-preview.md) for examples and boundaries.
|
|
47
|
+
|
|
48
|
+
- Add immutable rectilinear nodal fields with explicit triangle interpolation,
|
|
49
|
+
linear contours, normalized-vector RK4 streamlines and cell-linked selections.
|
|
50
|
+
Preserve scalar/vector masks independently and report tracing termination.
|
|
51
|
+
- Add a complete contour/streamline report with analytic fixtures, source
|
|
52
|
+
revisions, JSON replacement, saved states and two-width vector exports.
|
|
53
|
+
Keep corner summaries distinct from interpolated field values.
|
|
54
|
+
|
|
55
|
+
- Add immutable triangle meshes with supplied scalar/vector face fields, units,
|
|
56
|
+
source digests, geometric measurements and strict table correspondence.
|
|
57
|
+
Link equal-scale plan views, triangle picking and calibrated vector arrows
|
|
58
|
+
to plots, with fixed bins and explicit missing/zero-vector behavior.
|
|
59
|
+
- Add a mesh-field report with a native vector 3D reference, geometry/value/removal
|
|
60
|
+
revisions, JSON replacement, saved states and exports at two physical widths.
|
|
61
|
+
Preserve scalar colors by disabling lighting modulation in the 3D data view.
|
|
62
|
+
|
|
63
|
+
- Add calibrated label-image measurements with explicit region correspondence,
|
|
64
|
+
missing-intensity semantics, immutable source snapshots and source digests.
|
|
65
|
+
Link lossless reference images to pixel-accurate region selection and plots,
|
|
66
|
+
including holes, disconnected regions and non-square pixel calibration.
|
|
67
|
+
- Add a scientific report with calibration, intensity and label revisions,
|
|
68
|
+
saved-state reconstruction, JSON replacement, visible measurement methods and
|
|
69
|
+
two-width exports. Improve canvas resolution for embedded vector labels.
|
|
70
|
+
Preserve vector boundaries and labels over raster imagery;
|
|
71
|
+
bound browser pixel/outline work without implicit approximation.
|
|
72
|
+
|
|
73
|
+
- Link native Inklet drawings to experimental browser tables with measured
|
|
74
|
+
panel layouts, outlined vector assets, stable paint IDs, rectangular picking
|
|
75
|
+
targets and per-item selection behavior across SVG/canvas/hybrid display.
|
|
76
|
+
- Add immutable axis-aligned box assemblies with explicit units, dimensions and
|
|
77
|
+
zero-thickness sections. Add a linked engineering report with geometry
|
|
78
|
+
revisions, preserved label offsets, supplied response curves, removed-ID
|
|
79
|
+
reconciliation and reproducible exports at two physical widths.
|
|
80
|
+
|
|
81
|
+
- Add experimental entity-linked wide-table series with explicit numeric/date/UTC
|
|
82
|
+
samples, missing-data gaps, sample-aware picking and facets. Add a complete
|
|
83
|
+
real-map regional report with simulated monthly values, distributions, group
|
|
84
|
+
comparisons, CSV replacement, saved-state reconstruction and two-width exports.
|
|
85
|
+
- Add optional Chrome/Chromium SVG-to-PDF conversion for browser scenes, with
|
|
86
|
+
physical page sizing and vector-content checks. Document this separately from
|
|
87
|
+
the native Diagram PDF backend.
|
|
88
|
+
|
|
89
|
+
- Add experimental linked empirical distributions and supplied interval views,
|
|
90
|
+
including facets, explicit methods/populations, fixed reference curves during
|
|
91
|
+
filtering and reproducible revised exports. Keep reference curves unpickable
|
|
92
|
+
and honor per-mark colors across all browser backends.
|
|
93
|
+
- Fix timestamp hover formatting and expose ECDF fractions in tooltips and the
|
|
94
|
+
accessible table without changing source columns.
|
|
95
|
+
- Improve shared numeric ticks: preserve scientific-label precision, very small
|
|
96
|
+
values and narrow representable ranges; reject duplicate or out-of-domain
|
|
97
|
+
positions. Add a four-panel before/after plotting-quality review.
|
|
98
|
+
|
|
99
|
+
- Add experimental calendar-date and UTC axes to linked plots, with measured
|
|
100
|
+
calendar/millisecond ticks, explicit offset and precision rules, temporal bar
|
|
101
|
+
widths and optional elapsed-time line gaps. Add opt-in temporal DataFrame
|
|
102
|
+
columns, exact millisecond geometry and a simulated daily-batch revision
|
|
103
|
+
workflow with browser/Python export parity checks.
|
|
104
|
+
|
|
105
|
+
- Add optional experimental pandas and Polars adapters for keyed tables, with
|
|
106
|
+
explicit string IDs, column selection, immutable scalar snapshots and missing
|
|
107
|
+
value normalization. Reject unsupported cells with column/row diagnostics.
|
|
108
|
+
Add an illustrated workshop revision example with equivalent exports from
|
|
109
|
+
both libraries and optional-dependency compatibility checks.
|
|
110
|
+
|
|
111
|
+
- Add experimental linked category panels for lines, bars and scatter, with
|
|
112
|
+
explicit category order, empty panels, shared scales, within-category line
|
|
113
|
+
adjacency and visible diagnostics for unassigned rows. Add a six-panel
|
|
114
|
+
operations example with saved-state and data-revision workflows.
|
|
115
|
+
- Add opt-in shared plot margins to documents and nested grids. Faceted browser
|
|
116
|
+
figures use them to preserve equal physical data scales despite differences
|
|
117
|
+
in panel letters and labels; ordinary document layouts retain their defaults.
|
|
118
|
+
|
|
119
|
+
- Switch between named, Python-compiled data revisions in an offline browser
|
|
120
|
+
document, with atomic preparation, explicit removed-ID policies, per-revision
|
|
121
|
+
source credits and downloadable change reports. Dispose replaced renderers,
|
|
122
|
+
guard in-flight operations and preserve strict saved-state validation. Add a
|
|
123
|
+
real-map revision demo and browser/Python parity checks, including Unicode IDs.
|
|
124
|
+
|
|
125
|
+
- Add explicit experimental figure data replacement with preserved row identity,
|
|
126
|
+
selected/filtered ID reconciliation, viewport policy and a revision report.
|
|
127
|
+
Rebuild geometry and exports without mutating the old figure. Extend the real
|
|
128
|
+
world map with a source-year cohort and user-supplied CSV replacement workflow.
|
|
129
|
+
|
|
130
|
+
- Make a real Natural Earth country/population map the main geographic example,
|
|
131
|
+
with linked world/Europe views, pinned public-domain inputs and source years.
|
|
132
|
+
Add country/continent search, explicit HTML attribution and exact integer
|
|
133
|
+
table display; retain the invented region shapes as regression fixtures.
|
|
134
|
+
|
|
135
|
+
- Add experimental GeoJSON polygon/multipolygon joins and linked region maps,
|
|
136
|
+
including holes, shared row identities, fixed color bins, missing values and
|
|
137
|
+
clipped picking across SVG/canvas/hybrid modes. Preserve physical map aspect
|
|
138
|
+
and reserve its measured layout area. Add regional analysis and geometry
|
|
139
|
+
review examples, native browser fill checks and vector/raster export agreement.
|
|
140
|
+
|
|
141
|
+
- Extend the experimental browser runtime to linked lines, scatter and signed
|
|
142
|
+
vertical/horizontal bars. Preserve missing/filter gaps, support reversed axes
|
|
143
|
+
and nonzero baselines, and share clipped geometry with static SVG exports.
|
|
144
|
+
Add a four-panel monthly operations example, directly restored HTML state,
|
|
145
|
+
deterministic picking ties and a fix for pointer focus scrolling tall plots.
|
|
146
|
+
|
|
147
|
+
- Add an experimental offline scatter renderer with SVG, Canvas 2D and hybrid
|
|
148
|
+
modes, clipped point picking, linked selection, filtering, page pan/zoom and
|
|
149
|
+
saved-view reconstruction in Python. Preserve measured axes and outlined
|
|
150
|
+
text, namespace live SVG IDs, and test browser geometry at pixel ratios 1/2.
|
|
151
|
+
Publish the runnable example and a bounded backend timing/fidelity study.
|
|
152
|
+
|
|
153
|
+
- Start 4.0 phase A with experimental keyed tables and versioned selection
|
|
154
|
+
state, explicit rebasing for changed data, three attributed reference
|
|
155
|
+
fixtures and a finite offline linked-plot example with reproducible exports.
|
|
156
|
+
- Snapshot nested dataset array cells so external mutation cannot silently
|
|
157
|
+
change values without invalidating compiled figures.
|
|
158
|
+
- Allow all-baseline bar series to retain axes and legends without drawing
|
|
159
|
+
rectangles or aborting compilation.
|
|
160
|
+
- Add dependency/fitting/metadata compiler timings and fresh-process edit,
|
|
161
|
+
resize and export benchmarks with explicit local regression ceilings.
|
|
162
|
+
- Keep documentation navigation against the left viewport edge on wide
|
|
163
|
+
displays; remove the centered shell's 380 px outer gap at 2560 px width.
|
|
164
|
+
|
|
165
|
+
- Document the proposed 4.0 product and engine roadmap, delivery phases and
|
|
166
|
+
acceptance criteria. Reserve animation and presentation authoring for 5.0.
|
|
167
|
+
|
|
3
168
|
## 3.1.0 — 2026-09-07
|
|
4
169
|
|
|
5
170
|
Improved plotting, rendering speed, diagram layout and illustrated documentation.
|
|
@@ -4,6 +4,11 @@ Use a focused change with a runnable example or minimal reproducer. Describe
|
|
|
4
4
|
the resulting behavior and how it was checked. Keep numerical inputs and
|
|
5
5
|
expected results explicit; use simulated data when source data cannot be shared.
|
|
6
6
|
|
|
7
|
+
The [4.0 roadmap](docs/roadmap.md) connects planned user workflows to delivery
|
|
8
|
+
phases and acceptance criteria. Read the [proposed engine plan](docs/design/v4.md)
|
|
9
|
+
when developing new rendering, interaction or authoring capabilities. These are
|
|
10
|
+
planning documents; current contracts continue to apply until changed explicitly.
|
|
11
|
+
|
|
7
12
|
## Development environment
|
|
8
13
|
|
|
9
14
|
From a checkout with Python 3.12 and `uv` installed:
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: inklet
|
|
3
|
-
Version:
|
|
3
|
+
Version: 4.0.0.dev2
|
|
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
|
-
Project-URL: Documentation, https://inklet.readthedocs.io/en/
|
|
6
|
+
Project-URL: Documentation, https://inklet.readthedocs.io/en/latest/
|
|
7
7
|
Project-URL: Issues, https://github.com/Mapika/inklet/issues
|
|
8
8
|
Author: Mark Marosi
|
|
9
9
|
License-Expression: MIT
|
|
10
10
|
License-File: LICENSE
|
|
11
11
|
License-File: THIRD_PARTY_NOTICES.md
|
|
12
12
|
Keywords: diagrams,pdf,plotting,scientific-visualization,svg
|
|
13
|
-
Classifier: Development Status ::
|
|
13
|
+
Classifier: Development Status :: 3 - Alpha
|
|
14
14
|
Classifier: Intended Audience :: Education
|
|
15
15
|
Classifier: Intended Audience :: Science/Research
|
|
16
16
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -30,6 +30,10 @@ Requires-Dist: pygments<3,>=2.18; extra == 'docs'
|
|
|
30
30
|
Provides-Extra: images
|
|
31
31
|
Requires-Dist: numpy>=1.24; extra == 'images'
|
|
32
32
|
Requires-Dist: pillow>=10.0; extra == 'images'
|
|
33
|
+
Provides-Extra: pandas
|
|
34
|
+
Requires-Dist: pandas<4,>=2.2; extra == 'pandas'
|
|
35
|
+
Provides-Extra: polars
|
|
36
|
+
Requires-Dist: polars<2,>=1; extra == 'polars'
|
|
33
37
|
Provides-Extra: render
|
|
34
38
|
Requires-Dist: pillow>=10.0; extra == 'render'
|
|
35
39
|
Requires-Dist: resvg-py<0.4,>=0.3.3; extra == 'render'
|
|
@@ -75,6 +79,27 @@ then cover axes, dense data, page layout and exports. Figure planning and micros
|
|
|
75
79
|
ship under `inklet.experimental` as a [research preview](https://inklet.readthedocs.io/en/stable/research-preview/):
|
|
76
80
|
their signatures and report schemas may change.
|
|
77
81
|
|
|
82
|
+
## 4.0 development preview
|
|
83
|
+
|
|
84
|
+
**4.0.0.dev2** adds curve-preserving clipping, painted windows, improved PDF
|
|
85
|
+
compositing and hatching, alongside offline linked charts, maps, calibrated images, mesh fields,
|
|
86
|
+
contours and streamlines, with saved selections and reproducible exports.
|
|
87
|
+
It also includes date/UTC axes, facets, pandas/Polars adapters and shared
|
|
88
|
+
plotting-quality improvements.
|
|
89
|
+
|
|
90
|
+
```sh
|
|
91
|
+
python -m pip install "inklet==4.0.0.dev2"
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
95
|
+
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
96
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev2)
|
|
97
|
+
|
|
98
|
+
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
99
|
+
may change; 3.1.0 remains the stable release. General browser editing,
|
|
100
|
+
depth-aware 3D selection and the remaining 4.0 release gates are still open.
|
|
101
|
+
Animation and presentation authoring remain in the 5.0 direction.
|
|
102
|
+
|
|
78
103
|
## Install
|
|
79
104
|
|
|
80
105
|
Python **3.11 or later** is required. Install from [PyPI](https://pypi.org/project/inklet/):
|
|
@@ -29,6 +29,27 @@ then cover axes, dense data, page layout and exports. Figure planning and micros
|
|
|
29
29
|
ship under `inklet.experimental` as a [research preview](https://inklet.readthedocs.io/en/stable/research-preview/):
|
|
30
30
|
their signatures and report schemas may change.
|
|
31
31
|
|
|
32
|
+
## 4.0 development preview
|
|
33
|
+
|
|
34
|
+
**4.0.0.dev2** adds curve-preserving clipping, painted windows, improved PDF
|
|
35
|
+
compositing and hatching, alongside offline linked charts, maps, calibrated images, mesh fields,
|
|
36
|
+
contours and streamlines, with saved selections and reproducible exports.
|
|
37
|
+
It also includes date/UTC axes, facets, pandas/Polars adapters and shared
|
|
38
|
+
plotting-quality improvements.
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
python -m pip install "inklet==4.0.0.dev2"
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
[Preview guide and examples](https://inklet.readthedocs.io/en/latest/development-preview/) ·
|
|
45
|
+
[4.0 roadmap](https://inklet.readthedocs.io/en/latest/roadmap/) ·
|
|
46
|
+
[Release notes](https://github.com/Mapika/inklet/releases/tag/v4.0.0.dev2)
|
|
47
|
+
|
|
48
|
+
This is an opt-in development release. Experimental APIs and saved-state schemas
|
|
49
|
+
may change; 3.1.0 remains the stable release. General browser editing,
|
|
50
|
+
depth-aware 3D selection and the remaining 4.0 release gates are still open.
|
|
51
|
+
Animation and presentation authoring remain in the 5.0 direction.
|
|
52
|
+
|
|
32
53
|
## Install
|
|
33
54
|
|
|
34
55
|
Python **3.11 or later** is required. Install from [PyPI](https://pypi.org/project/inklet/):
|
|
@@ -130,3 +130,16 @@ Accessed 7 September 2026. No endorsement by the Allen Institute is implied.
|
|
|
130
130
|
and recipe are MIT, Mark Marosi. They add native, sampled-section and region
|
|
131
131
|
intensity tables, population spread and CSV exports using the generated
|
|
132
132
|
components above; no additional segmentation validation is implied.
|
|
133
|
+
|
|
134
|
+
## Natural Earth country maps
|
|
135
|
+
|
|
136
|
+
`examples/v4/data/world-countries.geojson` and `world-population.csv` are derived
|
|
137
|
+
from Natural Earth's Admin 0 countries at 1:110m. Made with Natural Earth. The
|
|
138
|
+
map data are [public domain](https://www.naturalearthdata.com/about/terms-of-use/).
|
|
139
|
+
The [source manifest](examples/v4/data/world-map-source.json) pins repository
|
|
140
|
+
commit `9380cca83db5f9aef52d5e762765100745f84b27`, the input checksum and all
|
|
141
|
+
transformations. Antarctica is excluded; retained geometry is not simplified
|
|
142
|
+
further. Population estimates and their individual years come from the source
|
|
143
|
+
snapshot and are not current estimates. The original example code is MIT.
|
|
144
|
+
|
|
145
|
+
Source and terms checked on 2026-09-08.
|
|
@@ -191,7 +191,7 @@ List built-in presets, optionally restricted to one family.
|
|
|
191
191
|
|
|
192
192
|
List built-in physical formats accepted by preset().
|
|
193
193
|
|
|
194
|
-
#### `subfigure(*, width=180, height=None, columns=1, margin=0, gap=6, row_gap=None)`
|
|
194
|
+
#### `subfigure(*, width=180, height=None, columns=1, margin=0, gap=6, row_gap=None, share_plot_margins=False)`
|
|
195
195
|
|
|
196
196
|
Create a nested grid. Children inherit the enclosing document theme.
|
|
197
197
|
|
|
@@ -229,7 +229,7 @@ A label-sized module. Port coordinates are fractions of its box.
|
|
|
229
229
|
|
|
230
230
|
Create a measured module with fractional ports.
|
|
231
231
|
|
|
232
|
-
#### `class Document(width: 'float' = 180, height: 'float | None' = None, columns: 'object' = 1, margin: 'float' = 4, gap: 'float' = 6, row_gap: 'float | None' = None, theme: 'object' = 'nature', publication: 'object' = None, preset: 'object' = None, _preset_overrides: 'dict' = <factory>, _cells: 'list' = <factory>, _links: 'list' = <factory>, _letters: 'dict' = <factory>, _cache: 'dict' = <factory>, _last: 'object' = None) -> None`
|
|
232
|
+
#### `class Document(width: 'float' = 180, height: 'float | None' = None, columns: 'object' = 1, margin: 'float' = 4, gap: 'float' = 6, row_gap: 'float | None' = None, theme: 'object' = 'nature', publication: 'object' = None, preset: 'object' = None, share_plot_margins: 'bool' = False, _preset_overrides: 'dict' = <factory>, _cells: 'list' = <factory>, _links: 'list' = <factory>, _letters: 'dict' = <factory>, _cache: 'dict' = <factory>, _last: 'object' = None) -> None`
|
|
233
233
|
|
|
234
234
|
A physical page containing named, live figure definitions.
|
|
235
235
|
|
|
@@ -262,9 +262,9 @@ A resolved snapshot; later authoring changes cannot alter its exports.
|
|
|
262
262
|
|
|
263
263
|
A document cannot satisfy its declared physical layout constraints.
|
|
264
264
|
|
|
265
|
-
#### `document(*, width=180, height=None, columns=1, margin=4, gap=6, row_gap=None, theme='nature', publication=None)`
|
|
265
|
+
#### `document(*, width=180, height=None, columns=1, margin=4, gap=6, row_gap=None, theme='nature', publication=None, share_plot_margins=False)`
|
|
266
266
|
|
|
267
|
-
Create a live
|
|
267
|
+
Create a live document; optionally share plot furniture across the grid.
|
|
268
268
|
|
|
269
269
|
#### `class PlotSpec(width: 'float' = 40, height: 'float' = 30, options: 'dict' = <factory>, _steps: 'list' = <factory>) -> None`
|
|
270
270
|
|
|
@@ -457,6 +457,10 @@ One data glyph, centred on its own origin so `place()` lands it on the point it
|
|
|
457
457
|
|
|
458
458
|
Put children at explicit coordinates, in millimetres.
|
|
459
459
|
|
|
460
|
+
#### `window(items: 'Diagram | Iterable[Diagram]', region: 'Rect | Sequence[Point]', *, kind: 'str' = 'window', **style) -> 'Diagram'`
|
|
461
|
+
|
|
462
|
+
Crop painted content to a fixed convex window, in local millimetres.
|
|
463
|
+
|
|
460
464
|
#### `clip(items: 'Diagram | Iterable[Diagram]', region: 'Rect | Sequence[Point]', *, kind: 'str' = 'clip', strict: 'bool' = False, **style) -> 'Diagram'`
|
|
461
465
|
|
|
462
466
|
Cut `items` down to `region`, in the coordinate frame you pass it in.
|
|
@@ -1058,9 +1062,9 @@ Flatten the tree into world transforms, keyed by node id.
|
|
|
1058
1062
|
|
|
1059
1063
|
## Core types and units
|
|
1060
1064
|
|
|
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`
|
|
1065
|
+
#### `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
1066
|
|
|
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>)
|
|
1067
|
+
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
1068
|
|
|
1065
1069
|
* `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
1070
|
* `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.
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
+
}
|