Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
309 changes: 170 additions & 139 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,72 +7,10 @@ on:
pull_request:

jobs:
python-fmt:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Check cargo fmt compliance
run: pixi run fmt-py-check

rust-fmt-clippy:
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-D warnings"
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: True
- name: Check cargo fmt compliance
run: pixi run fmt-rs-check
- name: Check no rustc warnings
run: pixi run check-rs
- name: Check for clippy warnings
run: pixi run clippy

cargo-bundle-license:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Check that license is up to date
run: pixi run bundle-licenses
- name: Check that git detects no file changes
run: git diff --exit-code

codegen-clean:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
with:
cache-on-failure: True
- name: Run codegen
run: pixi run vendor
- name: Check that git detects no file changes
run: git diff --exit-code

# Run linux tests without Pixi due to undiagnosed linker issues
# - undefined reference to fcntl64
# - undefined reference to memfd_create
vl-convert-rs-tests-linux:
vl-convert-rs-example2:
runs-on: ubuntu-latest
steps:
- name: Check out repository code
Expand All @@ -98,82 +36,175 @@ jobs:
- name: Run rs tests
# Run tests on single thread for Deno, which expects this
run: |
cargo test -p vl-convert-rs -- --test-threads=1
- name: Run CLI tests
run: |
cargo test -p vl-convert -- --test-threads=1
- name: Upload test failures
uses: actions/upload-artifact@v3
if: always()
with:
name: failed-images
path: |
vl-convert-rs/tests/vl-specs/failed
cd vl-convert-rs/examples
cargo run --example conversion_sequence

vl-convert-rs-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- windows-2022
- macos-12
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
with:
prefix-key: "v1-rust"
cache-on-failure: True
- name: Install fonts on Linux
if: runner.os == 'Linux'
run: |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install ttf-mscorefonts-installer
- name: Run tests
run: |
pixi run test-rs
pixi run test-cli
- name: Upload test failures
uses: actions/upload-artifact@v3
if: always()
with:
name: failed-images
path: |
vl-convert-rs/tests/vl-specs/failed
# python-fmt:
# runs-on: ubuntu-latest
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Check cargo fmt compliance
# run: pixi run fmt-py-check

vl-convert-python-tests:
runs-on: ${{ matrix.options[0] }}
defaults:
run:
shell: ${{ matrix.options[2] }}
strategy:
matrix:
options:
- [ubuntu-latest, '3.10', 'bash -l {0}']
- [windows-2022, '3.10', "pwsh"]
- [macos-12, '3.10', 'bash -l {0}']
steps:
- name: Check out repository code
uses: actions/checkout@v2
- uses: prefix-dev/setup-pixi@v0.8.1
with:
pixi-version: v0.28.2
- name: Cache rust dependencies
uses: Swatinem/rust-cache@v2
with:
prefix-key: "v1-rust"
cache-on-failure: True
- name: Install fonts on Linux
if: runner.os == 'Linux'
run: |
echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
sudo apt-get install ttf-mscorefonts-installer
- name: Build package
run: pixi run dev-py
- name: Run tests
run: pixi run test-py
# rust-fmt-clippy:
# runs-on: ubuntu-latest
# env:
# RUSTFLAGS: "-D warnings"
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Cache rust dependencies
# uses: Swatinem/rust-cache@v2
# with:
# cache-on-failure: True
# - name: Check cargo fmt compliance
# run: pixi run fmt-rs-check
# - name: Check no rustc warnings
# run: pixi run check-rs
# - name: Check for clippy warnings
# run: pixi run clippy

# cargo-bundle-license:
# runs-on: ubuntu-latest
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Check that license is up to date
# run: pixi run bundle-licenses
# - name: Check that git detects no file changes
# run: git diff --exit-code

# codegen-clean:
# runs-on: ubuntu-latest
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Cache rust dependencies
# uses: Swatinem/rust-cache@v2
# with:
# cache-on-failure: True
# - name: Run codegen
# run: pixi run vendor
# - name: Check that git detects no file changes
# run: git diff --exit-code

# # Run linux tests without Pixi due to undiagnosed linker issues
# # - undefined reference to fcntl64
# # - undefined reference to memfd_create
# vl-convert-rs-tests-linux:
# runs-on: ubuntu-latest
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - name: Install latest stable Rust toolchain
# uses: actions-rs/toolchain@v1
# with:
# toolchain: stable
# - name: Cache rust dependencies
# uses: Swatinem/rust-cache@v2
# with:
# prefix-key: "v1-rust"
# cache-on-failure: True
# - name: Install Protoc
# uses: arduino/setup-protoc@v2
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# - name: Install fonts on Linux
# if: runner.os == 'Linux'
# run: |
# echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
# sudo apt-get install ttf-mscorefonts-installer
# - name: Run rs tests
# # Run tests on single thread for Deno, which expects this
# run: |
# cargo test -p vl-convert-rs -- --test-threads=1
# - name: Run CLI tests
# run: |
# cargo test -p vl-convert -- --test-threads=1
# - name: Upload test failures
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: failed-images
# path: |
# vl-convert-rs/tests/vl-specs/failed

# vl-convert-rs-tests:
# runs-on: ${{ matrix.os }}
# strategy:
# matrix:
# os:
# - windows-2022
# - macos-12
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Cache rust dependencies
# uses: Swatinem/rust-cache@v2
# with:
# prefix-key: "v1-rust"
# cache-on-failure: True
# - name: Install fonts on Linux
# if: runner.os == 'Linux'
# run: |
# echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
# sudo apt-get install ttf-mscorefonts-installer
# - name: Run tests
# run: |
# pixi run test-rs
# pixi run test-cli
# - name: Upload test failures
# uses: actions/upload-artifact@v3
# if: always()
# with:
# name: failed-images
# path: |
# vl-convert-rs/tests/vl-specs/failed

# vl-convert-python-tests:
# runs-on: ${{ matrix.options[0] }}
# defaults:
# run:
# shell: ${{ matrix.options[2] }}
# strategy:
# matrix:
# options:
# - [ubuntu-latest, "3.10", "bash -l {0}"]
# - [windows-2022, "3.10", "pwsh"]
# - [macos-12, "3.10", "bash -l {0}"]
# steps:
# - name: Check out repository code
# uses: actions/checkout@v2
# - uses: prefix-dev/setup-pixi@v0.8.1
# with:
# pixi-version: v0.28.2
# - name: Cache rust dependencies
# uses: Swatinem/rust-cache@v2
# with:
# prefix-key: "v1-rust"
# cache-on-failure: True
# - name: Install fonts on Linux
# if: runner.os == 'Linux'
# run: |
# echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
# sudo apt-get install ttf-mscorefonts-installer
# - name: Build package
# run: pixi run dev-py
# - name: Run tests
# run: pixi run test-py
44 changes: 44 additions & 0 deletions vl-convert-rs/examples/conversion_sequence.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
use vl_convert_rs::converter::VlOpts;
use vl_convert_rs::{VlConverter, VlVersion};

#[tokio::main]
async fn main() {
let vl_spec: serde_json::Value = serde_json::from_str(
r#"
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"data": {"url": "data/movies.json"},
"mark": "circle",
"encoding": {
"x": {
"bin": {"maxbins": 10},
"field": "IMDB Rating"
},
"y": {
"bin": {"maxbins": 10},
"field": "Rotten Tomatoes Rating"
},
"size": {"aggregate": "count"}
}
} "#,
)
.unwrap();

println!("{}", convert(vl_spec.clone()).await);
println!("{}", convert(vl_spec.clone()).await)
}

async fn convert(vl_spec: serde_json::Value) -> String {
let mut converter = VlConverter::new();

converter
.vegalite_to_svg(
vl_spec,
VlOpts {
vl_version: VlVersion::v5_8,
..Default::default()
},
)
.await
.expect("Failed to perform Vega-Lite to Vega conversion")
}