Skip to content

Test against Python 3.11 and 3.12 #98

Test against Python 3.11 and 3.12

Test against Python 3.11 and 3.12 #98

Workflow file for this run

name: sharrow testing
on:
push:
branches: [ main, develop ]
tags:
- 'v[0-9]+.[0-9]+**'
pull_request:
branches: [ main, develop ]
tags:
- 'v[0-9]+.[0-9]+**'
workflow_dispatch:
jobs:
fmt:
name: formatting quality
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install Ruff
run: |
python -m pip install ruff
- name: Lint with Ruff
run: |
# code quality check, stop the build for any errors
ruff check . --show-fixes --exit-non-zero-on-fix
test-minimal:
needs: fmt
name: minimal tests
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install pytest
run: |
python -m pip install pytest pytest-cov pytest-regressions pytest-xdist nbmake
- name: Install sharrow
run: |
python -m pip install .
- name: Initial simple tests
# tests that sharrow can be imported and that categorical tests can be run
run: |
python -m pytest sharrow/tests/test_categorical.py
- name: Install openmatrix
run: |
python -m pip install openmatrix
- name: Dataset tests
# tests that the datasets can be read and that the tests can be run
run: |
python -m pytest sharrow/tests/test_datasets.py
- name: Install zarr and dask-diagnostics
run: |
python -m pip install zarr "dask[diagnostics]"
- name: More complete test with pytest
run: |
python -m pytest -v --disable-warnings sharrow/tests
test:
needs: fmt
name: ${{ matrix.os }} py${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ["ubuntu-latest", "macos-latest", "windows-latest"]
python-version: ["3.9", "3.10", "3.11", "3.12"]
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- name: Install Python and Dependencies
uses: conda-incubator/setup-miniconda@v3
with:
miniforge-variant: Mambaforge
miniforge-version: latest
use-mamba: true
environment-file: envs/testing.yml
python-version: ${{ matrix.python-version }}
activate-environment: testing-env
auto-activate-base: false
auto-update-conda: false
- name: Install sharrow
run: |
python -m pip install -e .
- name: Conda checkup
run: |
conda info -a
conda list
- name: Lint with Ruff
run: |
# code quality check
# stop the build if there are Python syntax errors or undefined names
ruff check . --select=E9,F63,F7,F82 --no-fix
# stop the build for any other configured Ruff linting errors
ruff check . --show-fixes --exit-non-zero-on-fix
- name: Test with pytest
run: |
python -m pytest
deploy-docs:
needs: test
# only on pushes tagged with v...
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
environment: asim
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install dependencies
uses: conda-incubator/setup-miniconda@v2
with:
miniforge-variant: Mambaforge
miniforge-version: latest
use-mamba: true
environment-file: envs/testing.yml
python-version: 3.9
activate-environment: testing-env
auto-activate-base: false
auto-update-conda: false
- name: Install Jupyterbook and ruamel.yaml
run: |
mamba install jupyter-book ruamel.yaml sphinx-autosummary-accessors -c conda-forge
- name: Install sharrow
run: |
python -m pip install --no-deps -e .
- name: Conda checkup
run: |
conda info -a
conda list
- name: Install pip build
run: |
python -m pip install --upgrade build
- name: Build wheel
run: |
python -m build
- name: Build the docs
run: |
python docs/_script/run_all.py
jupyter-book build ./docs
- name: Push to GitHub Pages
uses: peaceiris/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Token is created automatically by Github Actions, no other config needed
publish_dir: ./docs/_build/html
# now send to PyPI
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
if: github.repository_owner == 'ActivitySim'
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}