figgyplot 0.2.1__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.
- figgyplot-0.2.1/.gitattributes +5 -0
- figgyplot-0.2.1/.github/ISSUE_TEMPLATE/bug_report.yml +41 -0
- figgyplot-0.2.1/.github/ISSUE_TEMPLATE/config.yml +9 -0
- figgyplot-0.2.1/.github/ISSUE_TEMPLATE/feature_request.yml +24 -0
- figgyplot-0.2.1/.github/codeql-config.yml +5 -0
- figgyplot-0.2.1/.github/dependabot.yml +37 -0
- figgyplot-0.2.1/.github/pull_request_template.md +18 -0
- figgyplot-0.2.1/.github/workflows/codeql.yml +48 -0
- figgyplot-0.2.1/.github/workflows/pr-tests.yml +99 -0
- figgyplot-0.2.1/.github/workflows/publish.yml +238 -0
- figgyplot-0.2.1/.github/workflows/wheels.yml +177 -0
- figgyplot-0.2.1/.gitignore +30 -0
- figgyplot-0.2.1/CODE_OF_CONDUCT.md +22 -0
- figgyplot-0.2.1/CONTRIBUTING.md +65 -0
- figgyplot-0.2.1/Cargo.lock +3844 -0
- figgyplot-0.2.1/Cargo.toml +30 -0
- figgyplot-0.2.1/LICENSE-APACHE +176 -0
- figgyplot-0.2.1/LICENSE-MIT +21 -0
- figgyplot-0.2.1/PKG-INFO +176 -0
- figgyplot-0.2.1/PYPI_README.md +127 -0
- figgyplot-0.2.1/README.md +385 -0
- figgyplot-0.2.1/SECURITY.md +35 -0
- figgyplot-0.2.1/THIRD_PARTY_NOTICES.md +29 -0
- figgyplot-0.2.1/benchmarks/FIRST_FRAME_REUSE_RESULTS.md +101 -0
- figgyplot-0.2.1/benchmarks/LINUX_GPU_RESULTS.md +172 -0
- figgyplot-0.2.1/benchmarks/RESULTS.md +154 -0
- figgyplot-0.2.1/benchmarks/WINDOWS_GPU_RESULTS.md +144 -0
- figgyplot-0.2.1/benchmarks/WINDOWS_RESULTS.md +140 -0
- figgyplot-0.2.1/benchmarks/compare.py +326 -0
- figgyplot-0.2.1/benchmarks/first_frame_reuse.py +175 -0
- figgyplot-0.2.1/benchmarks/gpu_backends.py +212 -0
- figgyplot-0.2.1/benchmarks/plot_results.py +146 -0
- figgyplot-0.2.1/benchmarks/results/comparison.rendering.json +77 -0
- figgyplot-0.2.1/benchmarks/results/comparison.svg +5 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-environment.json +217 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-first-frame-reuse.json +4655 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-first-frame-reuse.txt +314 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-comparison.rendering.json +82 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-comparison.svg +5 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-line.csv +37 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-line.json +2318 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-scatter.csv +13 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-gpu-scatter.json +863 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-heatmap.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-heatmap.json +380 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-heatmap.txt +6 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-line.txt +37 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-plot.txt +1 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-scatter.txt +13 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-surface.json +142 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-surface.txt +142 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-tests.txt +8 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-vispy-line.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-vispy-line.json +501 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-vispy-scatter.csv +4 -0
- figgyplot-0.2.1/benchmarks/results/linux-radeon8060s-vispy-scatter.json +288 -0
- figgyplot-0.2.1/benchmarks/results/linux-software-first-frame-reuse.json +2340 -0
- figgyplot-0.2.1/benchmarks/results/linux-software-shared-context.json +39 -0
- figgyplot-0.2.1/benchmarks/results/linux-software-surface.json +42 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-heatmap.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-heatmap.json +319 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-line.csv +25 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-line.json +1178 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-scatter.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/llvmpipe-scatter.json +345 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-comparison.rendering.json +77 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-comparison.svg +5 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-desktop.json +16 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-comparison.rendering.json +82 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-comparison.svg +5 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-line.csv +37 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-line.json +2234 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-scatter.csv +13 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-gpu-scatter.json +815 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-heatmap.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-heatmap.json +353 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-line.csv +25 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-line.json +1326 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-scatter.csv +7 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-scatter.json +394 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-tests.txt +9 -0
- figgyplot-0.2.1/benchmarks/results/windows-rtx4070ti-vispy-aa-line.json +398 -0
- figgyplot-0.2.1/benchmarks/shared_context.py +60 -0
- figgyplot-0.2.1/benchmarks/ui_surface.py +26 -0
- figgyplot-0.2.1/docs/CHART_TYPES.md +161 -0
- figgyplot-0.2.1/docs/DESKTOP_EDITOR.md +205 -0
- figgyplot-0.2.1/docs/DISTRIBUTION.md +221 -0
- figgyplot-0.2.1/docs/HOSTS.md +191 -0
- figgyplot-0.2.1/docs/HOST_VALIDATION.md +382 -0
- figgyplot-0.2.1/docs/NATIVE_SHARING.md +88 -0
- figgyplot-0.2.1/docs/PREPARATION.md +86 -0
- figgyplot-0.2.1/docs/PUBLISHING.md +142 -0
- figgyplot-0.2.1/docs/RANDOMIZED_VALIDATION.md +145 -0
- figgyplot-0.2.1/docs/README.md +40 -0
- figgyplot-0.2.1/docs/README_DEMO.md +83 -0
- figgyplot-0.2.1/docs/REPOSITORY_SETUP.md +121 -0
- figgyplot-0.2.1/docs/examples/chart_style.py +38 -0
- figgyplot-0.2.1/docs/images/desktop-editor-overview.png +0 -0
- figgyplot-0.2.1/docs/images/desktop-editor-series.png +0 -0
- figgyplot-0.2.1/docs/images/desktop-editor-title.png +0 -0
- figgyplot-0.2.1/docs/images/edit-and-reuse.gif +0 -0
- figgyplot-0.2.1/docs/images/edit-and-reuse.json +31 -0
- figgyplot-0.2.1/docs/images/edit-and-reuse.png +0 -0
- figgyplot-0.2.1/docs/images/first-frame-reuse.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/constellation-style.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/correlation-matrix.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/donut-chart.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/heatmap-field.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/line-markers.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/line-signals.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/log-scales.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/manifest.json +320 -0
- figgyplot-0.2.1/docs/images/gallery/material-hatch.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/material-paper.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/material-pearl.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/material-wood.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/milkyway-style.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/parametric-curves.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/pie-chart.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/scatter-clusters.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/sketch-style.png +0 -0
- figgyplot-0.2.1/docs/images/gallery/spectrogram.png +0 -0
- figgyplot-0.2.1/docs/images/notebook-webgpu.png +0 -0
- figgyplot-0.2.1/examples/README.md +94 -0
- figgyplot-0.2.1/examples/_gallery.py +41 -0
- figgyplot-0.2.1/examples/constellation_style.py +25 -0
- figgyplot-0.2.1/examples/correlation_matrix.py +21 -0
- figgyplot-0.2.1/examples/desktop_editor.py +43 -0
- figgyplot-0.2.1/examples/donut_chart.py +19 -0
- figgyplot-0.2.1/examples/edit_and_reuse.py +80 -0
- figgyplot-0.2.1/examples/heatmap_field.py +18 -0
- figgyplot-0.2.1/examples/interactive.ipynb +56 -0
- figgyplot-0.2.1/examples/line_markers.py +24 -0
- figgyplot-0.2.1/examples/line_signals.py +22 -0
- figgyplot-0.2.1/examples/log_scales.py +25 -0
- figgyplot-0.2.1/examples/material_textures.py +35 -0
- figgyplot-0.2.1/examples/milkyway_style.py +25 -0
- figgyplot-0.2.1/examples/multiple_windows.py +25 -0
- figgyplot-0.2.1/examples/notebook.py +16 -0
- figgyplot-0.2.1/examples/parametric_curves.py +23 -0
- figgyplot-0.2.1/examples/pie_chart.py +17 -0
- figgyplot-0.2.1/examples/quickstart.py +12 -0
- figgyplot-0.2.1/examples/scatter_clusters.py +26 -0
- figgyplot-0.2.1/examples/sketch_style.py +29 -0
- figgyplot-0.2.1/examples/spectrogram.py +25 -0
- figgyplot-0.2.1/pyproject.toml +50 -0
- figgyplot-0.2.1/python/figgyplot/__init__.py +6 -0
- figgyplot-0.2.1/python/figgyplot/_codegen.py +156 -0
- figgyplot-0.2.1/python/figgyplot/assets/figgy.d.ts +803 -0
- figgyplot-0.2.1/python/figgyplot/assets/figgy.js +3710 -0
- figgyplot-0.2.1/python/figgyplot/assets/figgy_bg.wasm +0 -0
- figgyplot-0.2.1/python/figgyplot/assets/figgy_bg.wasm.d.ts +149 -0
- figgyplot-0.2.1/python/figgyplot/assets/provenance.json +17 -0
- figgyplot-0.2.1/python/figgyplot/desktop.py +30 -0
- figgyplot-0.2.1/python/figgyplot/editor.css +15 -0
- figgyplot-0.2.1/python/figgyplot/editor.js +170 -0
- figgyplot-0.2.1/python/figgyplot/editor.py +68 -0
- figgyplot-0.2.1/python/figgyplot/figure.py +963 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-ComicNeue.txt +93 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-Egui-Hack-Regular.txt +31 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-Egui-OFL.txt +92 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-Egui-UFL.txt +96 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-Egui-emoji-icon-font-mit-license.txt +9 -0
- figgyplot-0.2.1/python/figgyplot/licenses/LICENSE-LiberationSans.txt +94 -0
- figgyplot-0.2.1/python/figgyplot/notebook.py +39 -0
- figgyplot-0.2.1/python/figgyplot/prepare.py +23 -0
- figgyplot-0.2.1/python/figgyplot/pyplot.py +51 -0
- figgyplot-0.2.1/python/figgyplot/webgpu.js +204 -0
- figgyplot-0.2.1/python/figgyplot/widget.py +206 -0
- figgyplot-0.2.1/reports/figgyplot-packaging.json +117 -0
- figgyplot-0.2.1/reports/randomized-hosts.json +82 -0
- figgyplot-0.2.1/reports/randomized-model.json +28 -0
- figgyplot-0.2.1/scripts/build-wasm.sh +28 -0
- figgyplot-0.2.1/scripts/check_assets.py +27 -0
- figgyplot-0.2.1/scripts/check_installed.py +34 -0
- figgyplot-0.2.1/scripts/check_promotion.py +85 -0
- figgyplot-0.2.1/scripts/check_randomized.py +640 -0
- figgyplot-0.2.1/scripts/check_testpypi.py +86 -0
- figgyplot-0.2.1/scripts/check_wheel_workflow.py +61 -0
- figgyplot-0.2.1/scripts/check_x11_runtime.py +26 -0
- figgyplot-0.2.1/scripts/ci-before-linux.sh +42 -0
- figgyplot-0.2.1/scripts/ci-check-linux.sh +13 -0
- figgyplot-0.2.1/scripts/ci-preflight.sh +8 -0
- figgyplot-0.2.1/scripts/ci_gpu_env.py +52 -0
- figgyplot-0.2.1/scripts/configure-github-security.sh +28 -0
- figgyplot-0.2.1/scripts/prepare_release.py +175 -0
- figgyplot-0.2.1/scripts/randomized_desktop.py +177 -0
- figgyplot-0.2.1/scripts/record_readme_demo.py +365 -0
- figgyplot-0.2.1/scripts/render_gallery.py +45 -0
- figgyplot-0.2.1/scripts/repro_upstream_colorbar/Cargo.toml +8 -0
- figgyplot-0.2.1/scripts/repro_upstream_colorbar/README.md +17 -0
- figgyplot-0.2.1/scripts/repro_upstream_colorbar/src/main.rs +21 -0
- figgyplot-0.2.1/scripts/setup-cloud.sh +72 -0
- figgyplot-0.2.1/src/desktop.rs +1162 -0
- figgyplot-0.2.1/src/editor.rs +1043 -0
- figgyplot-0.2.1/src/gpu.rs +282 -0
- figgyplot-0.2.1/src/lib.rs +1446 -0
- figgyplot-0.2.1/src/notebook.rs +236 -0
- figgyplot-0.2.1/src/radial.rs +114 -0
- figgyplot-0.2.1/src/radial_editor.rs +303 -0
- figgyplot-0.2.1/src/radial_host.rs +250 -0
- figgyplot-0.2.1/src/selection.rs +216 -0
- figgyplot-0.2.1/tests/test_browser.py +112 -0
- figgyplot-0.2.1/tests/test_chart_styles.py +98 -0
- figgyplot-0.2.1/tests/test_codegen.py +54 -0
- figgyplot-0.2.1/tests/test_desktop_editor.py +169 -0
- figgyplot-0.2.1/tests/test_desktop_host.py +267 -0
- figgyplot-0.2.1/tests/test_desktop_navigation.py +121 -0
- figgyplot-0.2.1/tests/test_figure.py +196 -0
- figgyplot-0.2.1/tests/test_invalid_state.py +192 -0
- figgyplot-0.2.1/tests/test_jupyter_webgpu.py +176 -0
- figgyplot-0.2.1/tests/test_layout_defaults.py +27 -0
- figgyplot-0.2.1/tests/test_native_threading.py +27 -0
- figgyplot-0.2.1/tests/test_notebook_model.py +92 -0
- figgyplot-0.2.1/tests/test_packaged_assets.py +55 -0
- figgyplot-0.2.1/tests/test_radial.py +126 -0
- figgyplot-0.2.1/tests/test_radial_desktop.py +131 -0
- figgyplot-0.2.1/tests/test_release.py +266 -0
- figgyplot-0.2.1/tests/test_selection_values.py +54 -0
- figgyplot-0.2.1/tests/test_shared_gpu.py +148 -0
- figgyplot-0.2.1/tests/test_wheel_workflow.py +60 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Keep first-party package sources identical in every platform wheel.
|
|
2
|
+
/python/figgyplot/** text eol=lf
|
|
3
|
+
# Upstream JS/WASM assets are content-addressed in provenance.json. Preserve
|
|
4
|
+
# their exact bytes on every platform, including Windows core.autocrlf=true.
|
|
5
|
+
/python/figgyplot/assets/* -text
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report a reproducible figgyplot failure.
|
|
3
|
+
title: "[Bug]: "
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: "For security reports, use SECURITY.md and the private reporting channel."
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: behavior
|
|
10
|
+
attributes:
|
|
11
|
+
label: Expected and actual behavior
|
|
12
|
+
description: Describe the failure and what should happen.
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
15
|
+
- type: textarea
|
|
16
|
+
id: reproduction
|
|
17
|
+
attributes:
|
|
18
|
+
label: Minimal reproduction
|
|
19
|
+
description: Paste runnable Python code with synthetic data. Remove secrets and private datasets.
|
|
20
|
+
render: python
|
|
21
|
+
validations:
|
|
22
|
+
required: true
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: environment
|
|
25
|
+
attributes:
|
|
26
|
+
label: Environment
|
|
27
|
+
description: Include commit/version, OS/architecture, Python and NumPy, backend, GPU/driver, and browser/Jupyter versions when applicable.
|
|
28
|
+
validations:
|
|
29
|
+
required: true
|
|
30
|
+
- type: textarea
|
|
31
|
+
id: logs
|
|
32
|
+
attributes:
|
|
33
|
+
label: Error message and logs
|
|
34
|
+
description: Include the full exception and relevant logs, with credentials removed.
|
|
35
|
+
render: text
|
|
36
|
+
- type: textarea
|
|
37
|
+
id: verification
|
|
38
|
+
attributes:
|
|
39
|
+
label: Reproduction details
|
|
40
|
+
description: Mention repeated runs, input size, resize/DPI, or close/reopen behavior when relevant.
|
|
41
|
+
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
blank_issues_enabled: true
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Private security report
|
|
4
|
+
url: mailto:ssy9610@gmail.com
|
|
5
|
+
about: Send vulnerabilities privately; do not post credentials or exploit details in public issues.
|
|
6
|
+
- name: Usage and installation documentation
|
|
7
|
+
url: https://github.com/shim9610/figgy-python/blob/main/README.md
|
|
8
|
+
about: Read installation, interactive editing and notebook instructions.
|
|
9
|
+
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Suggest a plotting, editing or integration improvement.
|
|
3
|
+
title: "[Feature]: "
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: problem
|
|
7
|
+
attributes:
|
|
8
|
+
label: Problem or use case
|
|
9
|
+
description: Explain what you are trying to do and the current limitation.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: behavior
|
|
14
|
+
attributes:
|
|
15
|
+
label: Proposed behavior
|
|
16
|
+
description: Give an API or interaction example, including the target backend.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: constraints
|
|
21
|
+
attributes:
|
|
22
|
+
label: Data size and compatibility needs
|
|
23
|
+
description: Mention OS, Python/browser versions, data sizes and performance needs.
|
|
24
|
+
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
# Regular update PRs stay paused during stabilization. Setting the limit to 3
|
|
3
|
+
# after PR CI is enabled activates them. Security alerts/updates are independent
|
|
4
|
+
# repository settings; this file does not enable those switches.
|
|
5
|
+
updates:
|
|
6
|
+
- package-ecosystem: github-actions
|
|
7
|
+
directory: /
|
|
8
|
+
schedule:
|
|
9
|
+
interval: weekly
|
|
10
|
+
open-pull-requests-limit: 0
|
|
11
|
+
groups:
|
|
12
|
+
actions:
|
|
13
|
+
patterns: ["*"]
|
|
14
|
+
- package-ecosystem: pip
|
|
15
|
+
directory: /
|
|
16
|
+
schedule:
|
|
17
|
+
interval: weekly
|
|
18
|
+
open-pull-requests-limit: 0
|
|
19
|
+
groups:
|
|
20
|
+
python-dependencies:
|
|
21
|
+
patterns: ["*"]
|
|
22
|
+
- package-ecosystem: cargo
|
|
23
|
+
directory: /
|
|
24
|
+
schedule:
|
|
25
|
+
interval: weekly
|
|
26
|
+
open-pull-requests-limit: 0
|
|
27
|
+
groups:
|
|
28
|
+
rust-dependencies:
|
|
29
|
+
patterns: ["*"]
|
|
30
|
+
# Renderer/host versions must move together in a reviewed compatibility PR.
|
|
31
|
+
ignore:
|
|
32
|
+
- dependency-name: figgy-renderer
|
|
33
|
+
- dependency-name: figgy-model
|
|
34
|
+
- dependency-name: wgpu
|
|
35
|
+
- dependency-name: egui*
|
|
36
|
+
- dependency-name: winit
|
|
37
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
Describe the problem and resulting behavior, including a concrete before/after
|
|
2
|
+
example when useful.
|
|
3
|
+
|
|
4
|
+
## Validation
|
|
5
|
+
|
|
6
|
+
List checks you actually ran, including the tested OS, Python, backend and GPU.
|
|
7
|
+
Distinguish software-GPU tests from hardware tests and explain skipped checks.
|
|
8
|
+
|
|
9
|
+
## Compatibility and remaining limits
|
|
10
|
+
|
|
11
|
+
Mention API/settings changes, data-transfer/resource lifetimes, packaging or
|
|
12
|
+
platform limitations relevant to review. Note any renderer change and why its
|
|
13
|
+
public API is sufficient.
|
|
14
|
+
|
|
15
|
+
- [ ] Relevant checks pass and formatting is clean.
|
|
16
|
+
- [ ] Upstream JS/WASM hashes remain valid, or an intentional rebuild is documented.
|
|
17
|
+
- [ ] No secrets or private datasets are included.
|
|
18
|
+
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: CodeQL
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
# Enable alongside PR CI after its first successful manual scan.
|
|
6
|
+
# pull_request:
|
|
7
|
+
# branches: [main]
|
|
8
|
+
# push:
|
|
9
|
+
# branches: [main]
|
|
10
|
+
# schedule:
|
|
11
|
+
# - cron: '23 3 * * 1'
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: codeql-${{ github.event.pull_request.number || github.ref }}
|
|
18
|
+
cancel-in-progress: true
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
analyze:
|
|
22
|
+
name: CodeQL / ${{ matrix.language }}
|
|
23
|
+
runs-on: ubuntu-24.04
|
|
24
|
+
timeout-minutes: 30
|
|
25
|
+
permissions:
|
|
26
|
+
contents: read
|
|
27
|
+
security-events: write
|
|
28
|
+
strategy:
|
|
29
|
+
fail-fast: false
|
|
30
|
+
matrix:
|
|
31
|
+
language: [python, javascript-typescript, rust]
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
34
|
+
with:
|
|
35
|
+
persist-credentials: false
|
|
36
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
37
|
+
with:
|
|
38
|
+
python-version: '3.12'
|
|
39
|
+
- uses: github/codeql-action/init@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
|
|
40
|
+
with:
|
|
41
|
+
languages: ${{ matrix.language }}
|
|
42
|
+
build-mode: none
|
|
43
|
+
queries: security-extended
|
|
44
|
+
config-file: ./.github/codeql-config.yml
|
|
45
|
+
- uses: github/codeql-action/analyze@24c54180a607b1449ed407dd24f251e4e9147c8d # v4
|
|
46
|
+
with:
|
|
47
|
+
category: /language:${{ matrix.language }}
|
|
48
|
+
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
name: PR tests
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
# The manual run passed; required PR checks have no path filters.
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
# merge_group:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: pr-tests-${{ github.event.pull_request.number || github.ref }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
preflight:
|
|
19
|
+
name: PR / Workflow and assets
|
|
20
|
+
runs-on: ubuntu-24.04
|
|
21
|
+
timeout-minutes: 10
|
|
22
|
+
steps:
|
|
23
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
24
|
+
with:
|
|
25
|
+
persist-credentials: false
|
|
26
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
27
|
+
with:
|
|
28
|
+
repository: PyO3/maturin-action
|
|
29
|
+
ref: e83996d129638aa358a18fbd1dfb82f0b0fb5d3b
|
|
30
|
+
path: .ci/maturin-action
|
|
31
|
+
persist-credentials: false
|
|
32
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
33
|
+
- run: bash scripts/ci-preflight.sh
|
|
34
|
+
|
|
35
|
+
integration:
|
|
36
|
+
name: PR / Linux integration
|
|
37
|
+
needs: preflight
|
|
38
|
+
runs-on: ubuntu-24.04
|
|
39
|
+
timeout-minutes: 30
|
|
40
|
+
env:
|
|
41
|
+
CARGO_BUILD_JOBS: '4'
|
|
42
|
+
WGPU_BACKEND: vulkan
|
|
43
|
+
FIGGY_TEST_JUPYTER: '1'
|
|
44
|
+
FIGGY_TEST_HEADFUL: '1'
|
|
45
|
+
FIGGYPLOT_MATURIN_ACTION: .ci/maturin-action/action.yml
|
|
46
|
+
steps:
|
|
47
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
48
|
+
with:
|
|
49
|
+
persist-credentials: false
|
|
50
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
51
|
+
with:
|
|
52
|
+
repository: PyO3/maturin-action
|
|
53
|
+
ref: e83996d129638aa358a18fbd1dfb82f0b0fb5d3b
|
|
54
|
+
path: .ci/maturin-action
|
|
55
|
+
persist-credentials: false
|
|
56
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
57
|
+
- uses: dtolnay/rust-toolchain@e2a55d2ffb04f378e9626c28d38b36d230d1e12f # master
|
|
58
|
+
with:
|
|
59
|
+
toolchain: '1.99.0'
|
|
60
|
+
components: rustfmt
|
|
61
|
+
- name: Install native software-GPU and X11 runtime
|
|
62
|
+
run: |
|
|
63
|
+
sudo apt-get update
|
|
64
|
+
sudo apt-get install -y git mesa-vulkan-drivers libvulkan1 libxkbcommon0 libxkbcommon-x11-0 xvfb xdotool xclip openbox wmctrl
|
|
65
|
+
- name: Build and install the exact PR wheel
|
|
66
|
+
run: |
|
|
67
|
+
uv python install 3.12
|
|
68
|
+
uv venv .venv --python 3.12
|
|
69
|
+
uv pip install --python .venv/bin/python 'maturin>=1.15,<2'
|
|
70
|
+
.venv/bin/python -m maturin build --release --locked --compatibility linux --out dist -i .venv/bin/python
|
|
71
|
+
for wheel in dist/*.whl; do
|
|
72
|
+
uv pip install --python .venv/bin/python --only-binary=:all: "${wheel}[test]"
|
|
73
|
+
done
|
|
74
|
+
uv pip install --python .venv/bin/python --only-binary=:all: 'PyYAML>=6,<7' 'playwright>=1.50,<2' 'jupyterlab>=4,<5' 'nbformat>=5,<6' 'ipykernel>=6'
|
|
75
|
+
.venv/bin/python scripts/check_installed.py
|
|
76
|
+
.venv/bin/python scripts/check_x11_runtime.py
|
|
77
|
+
- name: Install Chromium and select software GPU drivers
|
|
78
|
+
run: |
|
|
79
|
+
.venv/bin/python -m playwright install --with-deps chromium
|
|
80
|
+
.venv/bin/python scripts/ci_gpu_env.py
|
|
81
|
+
- name: Test native surface, editing and real JupyterLab WebGPU
|
|
82
|
+
run: |
|
|
83
|
+
cargo fmt --check
|
|
84
|
+
xvfb-run -a -s '-screen 0 1600x1000x24' bash <<'SCRIPT'
|
|
85
|
+
set -euo pipefail
|
|
86
|
+
openbox > /tmp/figgyplot-openbox.log 2>&1 &
|
|
87
|
+
wm_pid=$!
|
|
88
|
+
trap 'kill "$wm_pid" 2>/dev/null || true' EXIT
|
|
89
|
+
.venv/bin/python -m pytest -q --basetemp=ci-results --junitxml=ci-results/junit.xml
|
|
90
|
+
SCRIPT
|
|
91
|
+
- name: Save integration results
|
|
92
|
+
if: always()
|
|
93
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
94
|
+
with:
|
|
95
|
+
name: pr-linux-integration-results
|
|
96
|
+
path: ci-results
|
|
97
|
+
retention-days: 5
|
|
98
|
+
if-no-files-found: ignore
|
|
99
|
+
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
name: Publish figgyplot (manual only)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
target:
|
|
7
|
+
description: 'TestPyPI build/upload, or promote a successful TestPyPI run to PyPI'
|
|
8
|
+
type: choice
|
|
9
|
+
options: [testpypi, pypi]
|
|
10
|
+
default: testpypi
|
|
11
|
+
required: true
|
|
12
|
+
version:
|
|
13
|
+
description: 'Exact source version (public upload to the selected index)'
|
|
14
|
+
required: true
|
|
15
|
+
type: string
|
|
16
|
+
default: '0.2.1'
|
|
17
|
+
testpypi-run-id:
|
|
18
|
+
description: 'Required for PyPI: successful TestPyPI run at this exact main commit'
|
|
19
|
+
type: string
|
|
20
|
+
default: ''
|
|
21
|
+
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
|
|
25
|
+
concurrency:
|
|
26
|
+
group: publish-figgyplot
|
|
27
|
+
cancel-in-progress: false
|
|
28
|
+
|
|
29
|
+
jobs:
|
|
30
|
+
gate:
|
|
31
|
+
runs-on: ubuntu-24.04
|
|
32
|
+
outputs:
|
|
33
|
+
version: ${{ steps.version.outputs.version }}
|
|
34
|
+
steps:
|
|
35
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
36
|
+
with:
|
|
37
|
+
persist-credentials: false
|
|
38
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
39
|
+
with:
|
|
40
|
+
python-version: '3.12'
|
|
41
|
+
- name: Require main and the exact source version
|
|
42
|
+
id: version
|
|
43
|
+
env:
|
|
44
|
+
REQUESTED_VERSION: ${{ inputs.version }}
|
|
45
|
+
RELEASE_TARGET: ${{ inputs.target }}
|
|
46
|
+
TEST_RUN_ID: ${{ inputs.testpypi-run-id }}
|
|
47
|
+
run: |
|
|
48
|
+
python - <<'PY'
|
|
49
|
+
import ast, os, tomllib
|
|
50
|
+
from pathlib import Path
|
|
51
|
+
if os.environ['GITHUB_REF'] != 'refs/heads/main':
|
|
52
|
+
raise SystemExit('Publication is allowed only from main; select main in Run workflow.')
|
|
53
|
+
if os.environ['RELEASE_TARGET'] not in ('testpypi', 'pypi'):
|
|
54
|
+
raise SystemExit('Target must be testpypi or pypi.')
|
|
55
|
+
if os.environ['RELEASE_TARGET'] == 'pypi' and not (os.environ['TEST_RUN_ID'].isdecimal() and int(os.environ['TEST_RUN_ID']) > 0):
|
|
56
|
+
raise SystemExit('PyPI promotion requires the successful TestPyPI run ID.')
|
|
57
|
+
project = tomllib.loads(Path('pyproject.toml').read_text())['project']
|
|
58
|
+
cargo = tomllib.loads(Path('Cargo.toml').read_text())['package']
|
|
59
|
+
version = project['version']
|
|
60
|
+
module = ast.parse(Path('python/figgyplot/__init__.py').read_text())
|
|
61
|
+
python_version = next(ast.literal_eval(node.value) for node in module.body if isinstance(node, ast.Assign) and any(isinstance(t, ast.Name) and t.id == '__version__' for t in node.targets))
|
|
62
|
+
if project['name'] != 'figgyplot' or cargo['version'] != version or python_version != version or os.environ['REQUESTED_VERSION'] != version:
|
|
63
|
+
raise SystemExit('Input, pyproject.toml, Cargo.toml and Python package versions must match exactly.')
|
|
64
|
+
with open(os.environ['GITHUB_OUTPUT'], 'a') as output:
|
|
65
|
+
output.write(f'version={version}\n')
|
|
66
|
+
PY
|
|
67
|
+
|
|
68
|
+
build:
|
|
69
|
+
needs: gate
|
|
70
|
+
if: inputs.target == 'testpypi'
|
|
71
|
+
uses: ./.github/workflows/wheels.yml
|
|
72
|
+
permissions:
|
|
73
|
+
contents: read
|
|
74
|
+
|
|
75
|
+
validate:
|
|
76
|
+
needs: [gate, build]
|
|
77
|
+
if: inputs.target == 'testpypi'
|
|
78
|
+
runs-on: ubuntu-24.04
|
|
79
|
+
steps:
|
|
80
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
81
|
+
with:
|
|
82
|
+
persist-credentials: false
|
|
83
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
84
|
+
with:
|
|
85
|
+
python-version: '3.12'
|
|
86
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
87
|
+
with:
|
|
88
|
+
pattern: wheels-*
|
|
89
|
+
path: artifacts
|
|
90
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
91
|
+
with:
|
|
92
|
+
name: figgyplot-sdist
|
|
93
|
+
path: artifacts/figgyplot-sdist
|
|
94
|
+
- run: python -m pip install 'packaging>=24' 'PyYAML>=6,<7' twine
|
|
95
|
+
- name: Validate every wheel, sdist, version and packaged asset
|
|
96
|
+
run: |
|
|
97
|
+
python scripts/prepare_release.py artifacts dist release-manifest/manifest.json
|
|
98
|
+
python -m twine check --strict dist/*
|
|
99
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
100
|
+
with:
|
|
101
|
+
name: figgyplot-release-files
|
|
102
|
+
path: dist/*
|
|
103
|
+
if-no-files-found: error
|
|
104
|
+
retention-days: 30
|
|
105
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
106
|
+
with:
|
|
107
|
+
name: figgyplot-release-manifest
|
|
108
|
+
path: release-manifest/manifest.json
|
|
109
|
+
if-no-files-found: error
|
|
110
|
+
retention-days: 30
|
|
111
|
+
|
|
112
|
+
promote:
|
|
113
|
+
name: Verify tested distributions for PyPI
|
|
114
|
+
needs: gate
|
|
115
|
+
if: inputs.target == 'pypi'
|
|
116
|
+
runs-on: ubuntu-24.04
|
|
117
|
+
permissions:
|
|
118
|
+
contents: read
|
|
119
|
+
actions: read
|
|
120
|
+
steps:
|
|
121
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
122
|
+
with:
|
|
123
|
+
persist-credentials: false
|
|
124
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
125
|
+
with:
|
|
126
|
+
python-version: '3.12'
|
|
127
|
+
- name: Read the successful TestPyPI run and all installation jobs
|
|
128
|
+
env:
|
|
129
|
+
GH_TOKEN: ${{ github.token }}
|
|
130
|
+
TEST_RUN_ID: ${{ inputs.testpypi-run-id }}
|
|
131
|
+
run: |
|
|
132
|
+
gh api "repos/$GITHUB_REPOSITORY/actions/runs/$TEST_RUN_ID" > tested-run.json
|
|
133
|
+
gh api --paginate --slurp "repos/$GITHUB_REPOSITORY/actions/runs/$TEST_RUN_ID/jobs?per_page=100" > tested-jobs.json
|
|
134
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
135
|
+
with:
|
|
136
|
+
name: figgyplot-release-files
|
|
137
|
+
path: dist
|
|
138
|
+
run-id: ${{ inputs.testpypi-run-id }}
|
|
139
|
+
github-token: ${{ github.token }}
|
|
140
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
141
|
+
with:
|
|
142
|
+
name: figgyplot-release-manifest
|
|
143
|
+
path: release-manifest
|
|
144
|
+
run-id: ${{ inputs.testpypi-run-id }}
|
|
145
|
+
github-token: ${{ github.token }}
|
|
146
|
+
- run: python -m pip install 'packaging>=24' 'PyYAML>=6,<7' twine
|
|
147
|
+
- name: Verify provenance, complete coverage and every byte before promotion
|
|
148
|
+
env:
|
|
149
|
+
TEST_RUN_ID: ${{ inputs.testpypi-run-id }}
|
|
150
|
+
run: |
|
|
151
|
+
python scripts/check_promotion.py tested-run.json tested-jobs.json dist release-manifest/manifest.json "$TEST_RUN_ID"
|
|
152
|
+
python -m twine check --strict dist/*
|
|
153
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
154
|
+
with:
|
|
155
|
+
name: figgyplot-release-files
|
|
156
|
+
path: dist/*
|
|
157
|
+
if-no-files-found: error
|
|
158
|
+
retention-days: 30
|
|
159
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
160
|
+
with:
|
|
161
|
+
name: figgyplot-release-manifest
|
|
162
|
+
path: release-manifest/manifest.json
|
|
163
|
+
if-no-files-found: error
|
|
164
|
+
retention-days: 30
|
|
165
|
+
|
|
166
|
+
publish:
|
|
167
|
+
name: Upload to ${{ inputs.target == 'pypi' && 'PyPI' || 'TestPyPI' }}
|
|
168
|
+
needs: [gate, validate, promote]
|
|
169
|
+
# One preparation branch is intentionally skipped; the selected one must pass.
|
|
170
|
+
if: >-
|
|
171
|
+
always() && !cancelled() && needs.gate.result == 'success' &&
|
|
172
|
+
((inputs.target == 'testpypi' && needs.validate.result == 'success') ||
|
|
173
|
+
(inputs.target == 'pypi' && needs.promote.result == 'success'))
|
|
174
|
+
runs-on: ubuntu-24.04
|
|
175
|
+
environment:
|
|
176
|
+
name: ${{ inputs.target }}
|
|
177
|
+
url: https://${{ inputs.target == 'pypi' && 'pypi.org' || 'test.pypi.org' }}/project/figgyplot/
|
|
178
|
+
# OIDC exists only here; build/test jobs receive no publishing permission.
|
|
179
|
+
permissions:
|
|
180
|
+
contents: read
|
|
181
|
+
id-token: write
|
|
182
|
+
steps:
|
|
183
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
184
|
+
with:
|
|
185
|
+
name: figgyplot-release-files
|
|
186
|
+
path: dist
|
|
187
|
+
- name: Publish with Trusted Publishing and attestations
|
|
188
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
|
|
189
|
+
with:
|
|
190
|
+
repository-url: https://${{ inputs.target == 'pypi' && 'upload.pypi.org' || 'test.pypi.org' }}/legacy/
|
|
191
|
+
packages-dir: dist/
|
|
192
|
+
attestations: true
|
|
193
|
+
skip-existing: false
|
|
194
|
+
|
|
195
|
+
install:
|
|
196
|
+
name: ${{ inputs.target == 'pypi' && 'PyPI' || 'TestPyPI' }} install / ${{ matrix.runner }} / Python ${{ matrix.python }}
|
|
197
|
+
needs: [gate, publish]
|
|
198
|
+
strategy:
|
|
199
|
+
fail-fast: false
|
|
200
|
+
matrix:
|
|
201
|
+
include:
|
|
202
|
+
- {runner: ubuntu-24.04, python: '3.12'}
|
|
203
|
+
- {runner: ubuntu-24.04-arm, python: '3.12'}
|
|
204
|
+
- {runner: windows-latest, python: '3.12'}
|
|
205
|
+
- {runner: windows-11-arm, python: '3.12'}
|
|
206
|
+
- {runner: macos-15-intel, python: '3.12'}
|
|
207
|
+
- {runner: macos-15, python: '3.12'}
|
|
208
|
+
- {runner: ubuntu-24.04, python: '3.8'}
|
|
209
|
+
- {runner: ubuntu-24.04, python: '3.15t'}
|
|
210
|
+
- {runner: windows-11-arm, python: '3.15t'}
|
|
211
|
+
runs-on: ${{ matrix.runner }}
|
|
212
|
+
steps:
|
|
213
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
214
|
+
with:
|
|
215
|
+
persist-credentials: false
|
|
216
|
+
- uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0
|
|
217
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
218
|
+
with:
|
|
219
|
+
name: figgyplot-release-manifest
|
|
220
|
+
path: release-manifest
|
|
221
|
+
- name: Download from TestPyPI, compare published bytes and install
|
|
222
|
+
shell: bash
|
|
223
|
+
env:
|
|
224
|
+
TEST_PYTHON: ${{ matrix.python }}
|
|
225
|
+
RELEASE_VERSION: ${{ needs.gate.outputs.version }}
|
|
226
|
+
RELEASE_TARGET: ${{ inputs.target }}
|
|
227
|
+
run: |
|
|
228
|
+
uv python install "$TEST_PYTHON"
|
|
229
|
+
uv venv .testpypi --python "$TEST_PYTHON"
|
|
230
|
+
if [ -f .testpypi/Scripts/python.exe ]; then
|
|
231
|
+
test_python=.testpypi/Scripts/python.exe
|
|
232
|
+
else
|
|
233
|
+
test_python=.testpypi/bin/python
|
|
234
|
+
fi
|
|
235
|
+
# Resolve dependencies from PyPI; figgyplot is downloaded ONLY from TestPyPI.
|
|
236
|
+
uv pip install --python "$test_python" pip 'packaging>=24' 'numpy>=1.24' 'anywidget>=0.9,<1'
|
|
237
|
+
"$test_python" scripts/check_testpypi.py release-manifest/manifest.json "$RELEASE_VERSION" "$RELEASE_TARGET"
|
|
238
|
+
"$test_python" scripts/check_installed.py
|