Merge pull request #2882 from finos/fix-filter-uaf #783
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ | |
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃ | |
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃ | |
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃ | |
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃ | |
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ | |
# ┃ Copyright (c) 2017, the Perspective Authors. ┃ | |
# ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃ | |
# ┃ This file is part of the Perspective library, distributed under the terms ┃ | |
# ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃ | |
# ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ | |
name: Build Status | |
on: | |
push: | |
branches: | |
- master | |
tags: | |
- v* | |
paths-ignore: | |
- AUTHORS | |
- CHANGELOG.md | |
- CONTRIBUTING.md | |
- LICENSE | |
- README.md | |
- binder/ | |
- docs/ | |
- examples/ | |
- rust/perspective-python/README.md | |
pull_request: | |
branches: | |
- master | |
workflow_dispatch: | |
inputs: | |
ci-full: | |
description: "Run Full CI" | |
required: false | |
type: boolean | |
default: false | |
ci-skip-cache: | |
description: "Omit Cache from CI run" | |
required: false | |
type: boolean | |
default: false | |
ci-skip-python: | |
description: "Skip Python components of CI" | |
required: false | |
type: boolean | |
default: false | |
ci-include-windows: | |
description: "Include Windows (Python) components of CI" | |
required: false | |
type: boolean | |
default: false | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
# , . . .-,--. | |
# ) . ,-. |- ,-. ,-. ,-| ' | \ ,-. ,-. ,-. | |
# / | | | | ,-| | | | | , | / | | | `-. | |
# `--' ' ' ' `' `-^ ' ' `-^ `-^--' `-' `-' `-' | |
# | |
lint_and_docs: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- name: Metadata Build | |
run: pnpm run build --ci | |
env: | |
PACKAGE: "perspective-metadata" | |
- name: Lint | |
run: pnpm run lint | |
# - name: Docs Build | |
# run: pnpm run docs | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: | | |
rust/perspective-server/cpp/ | |
rust/perspective-server/cmake/ | |
rust/perspective-client/src/ | |
rust/perspective-client/docs/ | |
rust/perspective-js/src/ts/ | |
rust/perspective-viewer/src/ts/ | |
rust/perspective-python/LICENSE_THIRDPARTY_cargo.yml | |
# ,-,---. . . ,-_/ .---. . | |
# '|___/ . . . | ,-| ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |- | |
# ,| \ | | | | | | | ,-| | / ,-| \ | | | | | | | |
# `-^---' `-^ ' `' `-^ | `-^ `' `-^ `---' `-' ' ' |-' `' | |
# /` | | | |
# `--' ' | |
build_js: | |
runs-on: ${{ matrix.os }} | |
needs: [lint_and_docs] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: rust/ | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
clean: "true" | |
python: "false" | |
playwright: "true" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- name: WebAssembly Build | |
run: pnpm run build --ci | |
env: | |
PACKAGE: "perspective-cpp,perspective,perspective-viewer,perspective-viewer-datagrid,perspective-viewer-d3fc,perspective-viewer-openlayers,perspective-workspace,perspective-cli" | |
# PSP_USE_CCACHE: 1 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: | | |
rust/perspective-js/dist/ | |
rust/perspective-viewer/dist | |
packages/perspective-jupyterlab/dist/ | |
packages/perspective-viewer-d3fc/dist | |
packages/perspective-viewer-datagrid/dist | |
packages/perspective-viewer-openlayers/dist | |
packages/perspective-esbuild-plugin/dist | |
packages/perspective-webpack-plugin/dist | |
packages/perspective-cli/dist | |
packages/perspective-workspace/dist | |
# ,-,---. . . .-,--. . . | |
# '|___/ . . . | ,-| '|__/ . . |- |-. ,-. ,-. | |
# ,| \ | | | | | | ,| | | | | | | | | | | |
# `-^---' `-^ ' `' `-^ `' `-| `' ' ' `-' ' ' | |
# /| | |
# `-' | |
build_python: | |
runs-on: ${{ matrix.os }} | |
needs: [lint_and_docs] | |
container: ${{ matrix.container }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
- macos-13 | |
- windows-2022 | |
arch: | |
- aarch64 | |
- x86_64 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
include: | |
- os: ubuntu-22.04 | |
arch: x86_64 | |
python-version: 3.9 | |
container: pagmo2/manylinux228_x86_64_with_deps | |
is-release: | |
- ${{ startsWith(github.ref, 'refs/tags/v') }} | |
exclude: | |
- os: windows-2022 | |
arch: aarch64 | |
- os: ubuntu-22.04 | |
arch: aarch64 | |
- os: macos-13 | |
is-release: false | |
- os: windows-2022 | |
is-release: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: rust/ | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
javascript: "false" | |
arch: ${{ matrix.arch }} | |
manylinux: ${{ matrix.container && 'true' || 'false' }} | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- name: Python Build | |
run: pnpm run build | |
if: ${{ !contains(matrix.os, 'windows') }} | |
env: | |
PACKAGE: "perspective-python" | |
PSP_ARCH: ${{ matrix.arch }} | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
PSP_BUILD_WHEEL: 1 | |
- name: Python Build (Windows) | |
run: | | |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force | |
pnpm run build | |
if: ${{ contains(matrix.os, 'windows') }} | |
env: | |
CARGO_TARGET_DIR: D:\psp-rust | |
PSP_CPP_BUILD_DIR: D:\psp-build | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
PACKAGE: "perspective-python" | |
PSP_ARCH: ${{ matrix.arch }} | |
PSP_BUILD_WHEEL: 1 | |
# Windows sucks lol | |
- uses: actions/upload-artifact@v4 | |
if: ${{ runner.os == 'Windows' }} | |
with: | |
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }} | |
path: D:\psp-rust\wheels\*.whl | |
- uses: actions/upload-artifact@v4 | |
# if: ${{ runner.os != 'Windows' }} | |
with: | |
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }} | |
path: rust/target/wheels/*.whl | |
# ,-,---. . . . ,--,--' . | |
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |- | |
# ,| \ | | | | | | ,-| | | | | , | |-' `-. | | |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `' | |
# | |
# .-,--. . | |
# `|__/ . . ,-. |- | |
# )| \ | | `-. | | |
# `' ` `-^ `-' `' | |
# | |
build_and_test_rust: | |
runs-on: ${{ matrix.os }} | |
needs: [lint_and_docs] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
- windows-2022 | |
arch: | |
- x86_64 | |
node-version: [20.x] | |
is-release: | |
- ${{ startsWith(github.ref, 'refs/tags/v') }} | |
exclude: | |
- os: windows-2022 | |
is-release: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: rust/ | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
javascript: "false" | |
arch: ${{ matrix.arch }} | |
manylinux: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- name: Rust Build | |
run: pnpm run build | |
if: ${{ !contains(matrix.os, 'windows') }} | |
env: | |
PACKAGE: "perspective-rs" | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
- name: Rust Build (Windows) | |
run: | | |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force | |
pnpm run build | |
if: ${{ contains(matrix.os, 'windows') }} | |
env: | |
CARGO_TARGET_DIR: D:\psp-rust | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
PACKAGE: "perspective-rs" | |
- name: Rust Test | |
if: ${{ !contains(matrix.os, 'windows') }} | |
run: pnpm run test | |
env: | |
PACKAGE: "perspective-rs" | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
- name: Rust Test (Windows) | |
run: | | |
New-Item -ItemType Directory -Path $env:CARGO_TARGET_DIR -Force | |
pnpm run test | |
if: ${{ contains(matrix.os, 'windows') }} | |
env: | |
CARGO_TARGET_DIR: D:\psp-rust | |
PSP_ROOT_DIR: ${{ github.workspace }} | |
PACKAGE: "perspective-rs" | |
- name: Package | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(matrix.os, 'windows') }} | |
run: cargo package --allow-dirty -p perspective -p perspective-viewer -p perspective-js -p perspective-client -p perspective-server -p perspective-python | |
- uses: actions/upload-artifact@v4 | |
if: ${{ startsWith(github.ref, 'refs/tags/v') && !contains(matrix.os, 'windows') }} | |
with: | |
name: perspective-rust | |
path: rust/target/package/*.crate | |
# ,-,---. . . .-,--. . . | |
# '|___/ . . . | ,-| '|__/ . . ,-. ,-| . ,-| ,-. | |
# ,| \ | | | | | | .| | | | | | | | | | |-' | |
# `-^---' `-' ' `' `-' `' `-| `-' `-' ' `-' `-' | |
# /| | |
# `-' | |
build_emscripten_wheel: | |
runs-on: ${{ matrix.os }} | |
needs: [lint_and_docs] | |
# if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
arch: | |
- x86_64 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: rust/ | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
pyodide: "true" | |
javascript: "false" | |
arch: ${{ matrix.arch }} | |
manylinux: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- name: Python Build Pyodide | |
run: pnpm install && pnpm run build | |
env: | |
PSP_PYODIDE: 1 | |
PACKAGE: "perspective-python" | |
CI: 1 | |
- name: "Test Pyodide" | |
run: pnpm run test | |
env: | |
PSP_PYODIDE: 1 | |
PACKAGE: "perspective-python" | |
CI: 1 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-python-dist-wasm32-emscripten-${{ matrix.python-version }} | |
path: rust/target/wheels/*.whl | |
# ,-,---. . . . ,--,--' . | |
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |- | |
# ,| \ | | | | | | ,-| | | | | , | |-' `-. | | |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `' | |
# | |
# ,-_/ . . . | |
# ' | . . ,-. . . |- ,-. ,-. | ,-. |-. | |
# | | | | | | | | |-' | | ,-| | | | |
# | `-^ |-' `-| `' `-' ' `' `-^ ^-' | |
# /` | | /| | |
# `--' ' `-' | |
# | |
build_and_test_jupyterlab: | |
needs: [build_js, build_python] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
- macos-13 | |
- windows-2022 | |
arch: | |
- aarch64 | |
- x86_64 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
is-release: | |
- ${{ startsWith(github.ref, 'refs/tags/v') }} | |
exclude: | |
- os: windows-2022 | |
arch: aarch64 | |
- os: ubuntu-22.04 | |
arch: aarch64 | |
- os: macos-13 | |
is-release: false | |
- os: windows-2022 | |
is-release: false | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
id: init-step | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "false" | |
cpp: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: . | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-metadata | |
path: rust/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.python-version }} | |
path: . | |
- name: Build extension | |
run: pnpm run build | |
env: | |
PACKAGE: "perspective-jupyterlab" | |
- run: node tools/perspective-scripts/repack_wheel.mjs | |
- name: Python Build sdist | |
run: pnpm run build | |
env: | |
PACKAGE: "perspective-python" | |
if: ${{ runner.os == 'Linux' }} | |
# PSP_USE_CCACHE: 1 | |
# PSP_ARCH: ${{ matrix.arch }} | |
PSP_BUILD_SDIST: 1 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-python-dist-${{ matrix.arch}}-${{ matrix.os }}-${{ matrix.python-version }} | |
path: "*.whl" | |
overwrite: true | |
- uses: actions/upload-artifact@v4 | |
if: ${{ runner.os == 'Linux' }} | |
with: | |
name: perspective-python-sdist | |
path: rust/target/wheels/*.tar.gz | |
- uses: ./.github/actions/install-wheel | |
if: ${{ runner.os == 'Linux' }} | |
- name: Run Jupyter Tests | |
if: ${{ false }} | |
# if: ${{ runner.os == 'Linux' }} | |
run: | | |
jupyter lab --generate-config | |
pnpm run test --jupyter | |
env: | |
PACKAGE: "perspective-jupyterlab" | |
# PSP_USE_CCACHE: 1 | |
# ,--,--' . ,-_/ .---. . | |
# `- | ,-. ,-. |- ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |- | |
# , | |-' `-. | | ,-| | / ,-| \ | | | | | | | |
# `-' `-' `-' `' | `-^ `' `-^ `---' `-' ' ' |-' `' | |
# /` | | | |
# `--' ' | |
test_js: | |
needs: [build_js] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
python-version: | |
- 3.9 | |
node-version: [20.x] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
python: "false" | |
rust: "false" | |
cpp: "false" | |
playwright: "true" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: . | |
- name: Run Tests | |
run: pnpm run test | |
env: | |
PACKAGE: "perspective-cpp,perspective,perspective-viewer,perspective-viewer-datagrid,perspective-viewer-d3fc,perspective-viewer-openlayers,perspective-workspace,perspective-cli" | |
# PSP_USE_CCACHE: 1 | |
# ,--,--' . .-,--. . . | |
# `- | ,-. ,-. |- '|__/ . . |- |-. ,-. ,-. | |
# , | |-' `-. | ,| | | | | | | | | | | |
# `-' `-' `-' `' `' `-| `' ' ' `-' ' ' | |
# /| | |
# `-' | |
test_python: | |
needs: [build_python] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
- macos-13 | |
- macos-14 | |
- windows-2022 | |
arch: | |
- x86_64 | |
- aarch64 | |
python-version: | |
- 3.9 | |
# - 3.12 | |
node-version: [20.x] | |
is-release: | |
- ${{ startsWith(github.ref, 'refs/tags/v') }} | |
exclude: | |
- os: macos-13 | |
is-release: false | |
- os: macos-14 | |
is-release: false | |
- os: windows-2022 | |
is-release: false | |
- os: macos-13 | |
arch: aarch64 | |
- os: macos-14 | |
arch: x86_64 | |
- os: windows-2022 | |
arch: aarch64 | |
- os: ubuntu-22.04 | |
arch: aarch64 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "false" | |
cpp: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
# the macos-14 runner tests artifacts built on macos-13 | |
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os == 'macos-14' && 'macos-13' || matrix.os }}-${{ matrix.python-version }} | |
- uses: ./.github/actions/install-wheel | |
- name: Run Tests | |
run: pnpm run test | |
env: | |
PACKAGE: "perspective-python" | |
# PSP_USE_CCACHE: 1 | |
test_python_sdist: | |
needs: [build_and_test_jupyterlab] | |
runs-on: ${{ matrix.os }} | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-22.04 | |
arch: | |
- x86_64 | |
python-version: | |
- 3.9 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "true" | |
cpp: "true" | |
python: "true" | |
javascript: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-rust | |
path: crates/ | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-sdist | |
# The sdist depends on perspective-{client,server} crates published to | |
# crates.io. Patch the build to instead use .crate artifacts built | |
# previously in the workflow | |
- name: Set up path overrides for perspective .crate contents | |
shell: bash | |
run: | | |
(cd crates && tar xvf perspective-client-*.crate && tar xvf perspective-server-*.crate) | |
CLIENT_CRATE_ROOT=$(ls -d "$PWD"/crates/perspective-client-*/ | head -n 1) | |
SERVER_CRATE_ROOT=$(ls -d "$PWD"/crates/perspective-server-*/ | head -n 1) | |
mkdir -p $HOME/.cargo | |
cat > $HOME/.cargo/config.toml <<EOF | |
[patch.crates-io] | |
perspective-client = { path = "$CLIENT_CRATE_ROOT" } | |
perspective-server = { path = "$SERVER_CRATE_ROOT" } | |
EOF | |
- name: Install perspective-python sdist | |
shell: bash | |
run: python -m pip install -vv ./perspective*.tar.gz | |
- name: Verify licenses are installed | |
shell: bash | |
run: | | |
pip show -f perspective-python | tee wheel_installed_files.txt | |
# Maturin got this wrong: the packages should be in .dist-info/licenses/ | |
# Newer versions of Maturin will fix it, so search for either location. | |
# https://github.com/PyO3/maturin/pull/862 https://github.com/PyO3/maturin/pull/2181 | |
grep -E '.dist-info/(license|license_files)/LICENSE.md' wheel_installed_files.txt | |
grep -E '.dist-info/(license|license_files)/LICENSE_THIRDPARTY_cargo.yml' wheel_installed_files.txt | |
- name: Verify labextension | |
shell: bash | |
run: | | |
jupyter labextension list --debug | |
jupyter labextension list 2>&1 | grep '@finos/perspective-jupyterlab' | |
- name: Run import test | |
run: python -c 'import perspective' | |
- name: Run pytests | |
run: pytest -v --pyargs 'perspective.tests' | |
# ,-,---. . . | |
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | , | |
# ,| \ |-' | | | | | | | | ,-| | |< | |
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' ` | |
# | |
# .-,--. . . | |
# '|__/ . . |- |-. ,-. ,-. | |
# ,| | | | | | | | | | | |
# `' `-| `' ' ' `-' ' ' | |
# /| | |
# `-' | |
benchmark_python: | |
needs: [build_python, build_js] | |
if: startsWith(github.ref, 'refs/tags/v') | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-22.04] | |
python-version: [3.9] | |
node-version: [20.x] | |
arch: [x86_64] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "false" | |
cpp: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: . | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-${{ matrix.arch }}-${{ matrix.os }}-${{ matrix.python-version }} | |
- uses: ./.github/actions/install-wheel | |
with: | |
inplace: "false" | |
- name: Benchmarks | |
run: pnpm run bench | |
env: | |
PACKAGE: "perspective-python" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-python-benchmarks | |
path: tools/perspective-bench/dist/benchmark-python.arrow | |
# ,-,---. . . | |
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | , | |
# ,| \ |-' | | | | | | | | ,-| | |< | |
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' ` | |
# | |
# ,-_/ .---. . | |
# ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |- | |
# | ,-| | / ,-| \ | | | | | | | |
# | `-^ `' `-^ `---' `-' ' ' |-' `' | |
# /` | | | |
# `--' ' | |
benchmark_js: | |
needs: [build_js] | |
if: startsWith(github.ref, 'refs/tags/v') | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
node-version: [20.x] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "false" | |
cpp: "false" | |
python: "false" | |
javascript: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: . | |
- name: Benchmarks | |
run: pnpm run bench | |
env: | |
PACKAGE: "perspective" | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: perspective-js-benchmarks | |
path: tools/perspective-bench/dist/benchmark-js.arrow | |
# .-,--. . . . | |
# '|__/ . . |-. | . ,-. |-. | |
# ,| | | | | | | `-. | | | |
# `' `-^ ^-' `' ' `-' ' ' | |
# | |
publish: | |
needs: | |
[ | |
build_and_test_jupyterlab, | |
test_python, | |
test_python_sdist, | |
test_js, | |
benchmark_js, | |
benchmark_python, | |
build_emscripten_wheel, | |
build_and_test_rust, | |
lint_and_docs, | |
] | |
if: startsWith(github.ref, 'refs/tags/v') | |
strategy: | |
matrix: | |
os: [ubuntu-22.04] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@v2 | |
- name: Config | |
id: config-step | |
uses: ./.github/actions/config | |
- name: Initialize Build | |
uses: ./.github/actions/install-deps | |
with: | |
rust: "false" | |
cpp: "false" | |
python: "false" | |
javascript: "false" | |
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }} | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-dist | |
path: . | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-aarch64-macos-13-3.9 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-x86_64-macos-13-3.9 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-x86_64-windows-2022-3.9 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-x86_64-ubuntu-22.04-3.9 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-dist-wasm32-emscripten-3.9 | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-sdist | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-js-benchmarks | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-python-benchmarks | |
- uses: actions/download-artifact@v4 | |
with: | |
name: perspective-rust | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./rust/perspective-js | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./rust/perspective-viewer | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-viewer-datagrid | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-viewer-d3fc | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-viewer-openlayers | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-workspace | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-cli | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-webpack-plugin | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-esbuild-plugin | |
- run: pnpm pack --pack-destination=../.. | |
working-directory: ./packages/perspective-jupyterlab | |
- name: Publish assets | |
uses: softprops/action-gh-release@v2 | |
with: | |
draft: true | |
generate_release_notes: true | |
files: | | |
*.whl | |
*.tar.gz | |
*.tgz | |
*.arrow | |
*.crate | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |