Skip to content

Column type icon matches the datatype type of the field in column selectors (where, group by, sortby, filter) #514

Column type icon matches the datatype type of the field in column selectors (where, group by, sortby, filter)

Column type icon matches the datatype type of the field in column selectors (where, group by, sortby, filter) #514

Workflow file for this run

# ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
# ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
# ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
# ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
# ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
# ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
# ┃ 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:
# ,-,---. . . ,-_/ .---. .
# '|___/ . . . | ,-| ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# ,| \ | | | | | | | ,-| | / ,-| \ | | | | | |
# `-^---' `-^ ' `' `-^ | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
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
id: init-step
uses: ./.github/actions/install-deps
with:
clean: "true"
python: "false"
skip_cache: ${{ steps.config-step.outputs.SKIP_CACHE }}
- name: WebAssembly Build
run: pnpm run build --ci
env:
PACKAGE: "!perspective-python,!perspective-jupyterlab"
# PSP_USE_CCACHE: 1
- name: Lint
run: pnpm run lint
# - name: Docs Build
# run: pnpm run docs
# env:
# PACKAGE: "!perspective-python,!perspective-jupyterlab"
- 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 }}
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
- 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 }}
- run: echo "/opt/python/cp39-cp39/bin" >> $GITHUB_PATH
if: ${{ runner.os == 'Linux' }}
# https://github.com/apache/arrow/issues/38391
- if: ${{ runner.os == 'macOS' }}
run: echo "MACOSX_DEPLOYMENT_TARGET=$(sw_vers -productVersion)" >> $GITHUB_ENV
- run: echo "${{ steps.init-step.outputs.VCPKG_INSTALLATION_ROOT }}" >> $env:GITHUB_PATH
if: ${{ runner.os == 'Windows' }}
- 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_ROOT_DIR: ${{ github.workspace }}
VCPKG_ROOT: ${{ steps.init-step.outputs.VCPKG_INSTALLATION_ROOT }}
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_emscripten_wheel:
runs-on: ${{ matrix.os }}
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
- 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: Python Build Pyodide
run: pnpm install && pnpm run build
if: ${{ runner.os == 'Linux' && matrix.arch == 'x86_64' }}
env:
PSP_PYODIDE: 1
PACKAGE: "perspective-python"
CI: 1
- uses: actions/upload-artifact@v4
# if: ${{ runner.os != 'Windows' }}
with:
name: perspective-python-dist-wasm32-emscripten-${{ matrix.python-version }}
path: rust/target/wheels/*.whl
# ,-,---. . . . ,--,--' .
# '|___/ . . . | ,-| ,-. ,-. ,-| `- | ,-. ,-. |-
# ,| \ | | | | | | ,-| | | | | , | |-' `-. |
# `-^---' `-^ ' `' `-^ `-^ ' ' `-^ `-' `-' `-' `'
#
# ,-_/ . . .
# ' | . . ,-. . . |- ,-. ,-. | ,-. |-.
# | | | | | | | | |-' | | ,-| | |
# | `-^ |-' `-| `' `-' ' `' `-^ ^-'
# /` | | /|
# `--' ' `-'
#
build_and_test_juptyerlab:
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-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 }}
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"
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-python,!perspective-jupyterlab"
# PSP_USE_CCACHE: 1
# ,--,--' . .-,--. . .
# `- | ,-. ,-. |- '|__/ . . |- |-. ,-. ,-.
# , | |-' `-. | ,| | | | | | | | | |
# `-' `-' `-' `' `' `-| `' ' ' `-' ' '
# /|
# `-'
test_python:
needs: [build_python]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-22.04
- macos-13
- windows-2022
python-version:
- 3.9
# - 3.12
node-version: [20.x]
is-release:
- ${{ startsWith(github.ref, 'refs/tags/v') }}
arch:
- x86_64
exclude:
- 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
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-python-dist-${{ matrix.arch }}-${{ 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
# ,-,---. . .
# '|___/ ,-. ,-. ,-. |-. ,-,-. ,-. ,-. | ,
# ,| \ |-' | | | | | | | | ,-| | |<
# `-^---' `-' ' ' `-' ' ' ' ' ' `-^ ' ' `
#
# ,-_/ .---. .
# ' | ,-. . , ,-. \___ ,-. ,-. . ,-. |-
# | ,-| | / ,-| \ | | | | | |
# | `-^ `' `-^ `---' `-' ' ' |-' `'
# /` | |
# `--' '
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
- uses: actions/upload-artifact@v4
with:
name: perspective-js-benchmarks
path: tools/perspective-bench/dist/benchmark-js.arrow
# .-,--. . . .
# '|__/ . . |-. | . ,-. |-.
# ,| | | | | | | `-. | |
# `' `-^ ^-' `' ' `-' ' '
#
publish:
needs: [build_and_test_juptyerlab, test_python, test_js, benchmark_js]
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
- 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
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}