Skip to content

Fix type checker errors for libraries such as Polars where Altair uses dataframe interchange protocol #2314

Fix type checker errors for libraries such as Polars where Altair uses dataframe interchange protocol

Fix type checker errors for libraries such as Polars where Altair uses dataframe interchange protocol #2314

Workflow file for this run

name: build
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.8", "3.10", "3.11", "3.12"]
jsonschema-version: ["3.0", "latest"]
name: py ${{ matrix.python-version }} js ${{ matrix.jsonschema-version }}
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
# - name: Set Up Chromedriver
# run: |
# sudo apt-get update
# sudo apt-get --only-upgrade install google-chrome-stable
# sudo apt-get -yqq install chromium-chromedriver
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install .[dev]
# pip install "selenium<4.3.0"
# pip install altair_saver
- name: Install specific jsonschema
# Only have to execute this if we don't want the latest jsonschema version
if: ${{ matrix.jsonschema-version != 'latest' }}
run: |
pip install jsonschema==${{ matrix.jsonschema-version }}
- name: Maybe uninstall optional dependencies
# We uninstall pyarrow and vegafusion for one job to test that we have not
# accidentally introduced a hard dependency on these libraries.
# Uninstalling for Python 3.8 is an arbitrary choice.
# Also see https://github.com/altair-viz/altair/pull/3114
if: ${{ matrix.python-version == '3.8' }}
run: |
pip uninstall -y pyarrow vegafusion vegafusion-python-embed
- name: Maybe install lowest supported pandas version
# We install the lowest supported pandas version for one job to test that
# it still works. Downgrade to the oldest versions of pandas and numpy that include
# Python 3.8 wheels, so only run this job for Python 3.8
if: ${{ matrix.python-version == '3.8' }}
run: |
pip install pandas==0.25.3 numpy==1.17.5
- name: Test that schema generation has no effect
run: |
python tools/generate_schema_wrapper.py
# This gets the paths of all files which were either deleted, modified
# or are not yet tracked by Git
files=`git ls-files --deleted --modified --others --exclude-standard`
# Depending on the shell it can happen that 'files' contains empty
# lines which are filtered out in the for loop below
files_cleaned=()
for i in "${files[@]}"; do
# Skip empty items
if [ -z "$i" ]; then
continue
fi
# Add the rest of the elements to a new array
files_cleaned+=("${i}")
done
if [ ${#files_cleaned[@]} -gt 0 ]; then
echo "The code generation modified the following files:"
echo $files
exit 1
fi
- name: Test with pytest
run: |
pytest --doctest-modules tests
# - name: Selected tests without vl-convert-python
# run: |
# pip uninstall vl-convert-python --yes
# pytest -m save_engine --doctest-modules tests
# - name: Selected tests without vl-convert-python and altair_saver
# run: |
# pip uninstall altair_saver --yes
# pytest -m save_engine --doctest-modules tests
- name: Selected tests with vl-convert-python and without altair_saver
run: |
# pip install vl-convert-python
pytest -m save_engine --doctest-modules tests
- name: Validate Vega-Lite schema
run: |
# We install all 'format' dependencies of jsonschema as check-jsonschema
# only does the 'format' checks which are installed.
# We can always use the latest jsonschema version here.
# uri-reference check is disabled as the URIs in the Vega-Lite schema do
# not conform RFC 3986.
pip install 'jsonschema[format]' check-jsonschema --upgrade
check-jsonschema --check-metaschema altair/vegalite/v5/schema/vega-lite-schema.json --disable-formats uri-reference