Skip to content

update contributing doc: instruction for running one test #2832

update contributing doc: instruction for running one test

update contributing doc: instruction for running one test #2832

Workflow file for this run

name: CI Tests
on:
push:
branches:
- main
- dev
- bugfix
- "release/*"
pull_request:
branches:
- main
- dev
- ibis-dev
- bugfix
- "release/*"
env:
DEFAULT_PYTHON: 3.8
CI: "true"
# Increase this value to reset cache if environment.yml has not changed
CACHE_VERSION: 6
concurrency:
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
cancel-in-progress: true
jobs:
lint:
name: Linters (${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
fail-fast: true
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- uses: actions/cache@v4
with:
path: ~/.cache/pip # ubuntu location
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install dependencies
run: |
python -m pip install nox pre_commit \
mypy==0.982 \
types-click \
types-pyyaml \
types-pkg_resources \
types-requests \
types-pytz
- name: Pip info
run: python -m pip list
- name: Check requirements
run: >
nox
-db virtualenv -r
--non-interactive
--python ${{ matrix.python-version }}
--session requirements-${{ matrix.python-version }}
- name: Sort Imports
run: pre-commit run isort --all-files
- name: Black
if: always()
run: pre-commit run black --all-files
- name: Pylint
if: always()
run: pre-commit run pylint --all-files
- name: Mypy Type Checking
if: always()
run: pre-commit run mypy --all-files
tests:
name: >
CI Core Tests (${{ matrix.python-version }}, ${{ matrix.os }}, pandas-${{ matrix.pandas-version }}, pydantic-${{ matrix.pydantic-version }})
runs-on: ${{ matrix.os }}
defaults:
run:
shell: pwsh
env:
PYTHONUTF8: 1
NOX_FLAGS: -v --no-install --no-venv --non-interactive
PYTEST_FLAGS: --cov=pandera --cov-report=term-missing --cov-report=xml --cov-append
HYPOTHESIS_FLAGS: -n=auto -q --hypothesis-profile=ci
strategy:
fail-fast: true
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-13
# - macos-latest # see: https://github.com/actions/setup-python/issues/696
python-version: ["3.8", "3.9", "3.10", "3.11"]
pandas-version: ["1.5.3", "2.2.2"]
pydantic-version: ["1.10.11", "2.3.0"]
include:
- os: ubuntu-latest
pip-cache: ~/.cache/pip
# - os: macos-latest
# pip-cache: ~/Library/Caches/pip
- os: macos-13
pip-cache: ~/Library/Caches/pip
- os: windows-latest
pip-cache: ~/AppData/Local/pip/Cache
exclude:
- python-version: "3.8"
pandas-version: "2.2.2"
- python-version: "3.11"
pandas-version: "1.5.3"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v4
with:
path: ${{ matrix.pip-cache }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements.in') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install deps
run:
pip install uv
uv pip install -r requirements.in
- run: |
pip list
printenv | sort
- name: Unit Tests - Core
run: nox ${{ env.NOX_FLAGS }} --session "tests(extra='core', pydantic='${{ matrix.pydantic-version }}', python='${{ matrix.python-version }}', pandas='${{ matrix.pandas-version }}')"
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4
# - name: Check Docstrings
# if: ${{ matrix.os != 'windows-latest' && matrix.python-version == '3.11' && matrix.pandas-version == '2.2.0' }}
# run: nox ${{ env.NOX_FLAGS }} --session doctests
# - name: Check Docs
# if: ${{ matrix.os != 'windows-latest' && matrix.python-version == '3.11' && matrix.pydantic-version == '2.2.0' }}
# run: nox ${{ env.NOX_FLAGS }} --session docs
extras-tests:
name: >
CI Extras Tests: ${{ matrix.extra }} (${{ matrix.python-version }}, ${{ matrix.os }}, pandas-${{ matrix.pandas-version }}, pydantic-${{ matrix.pydantic-version }}, polars-${{ matrix.polars-version }})
runs-on: ${{ matrix.os }}
defaults:
run:
shell: pwsh
env:
PYTHONUTF8: 1
NOX_FLAGS: -v --no-install --no-venv --non-interactive
PYTEST_FLAGS: --cov=pandera --cov-report=term-missing --cov-report=xml --cov-append
HYPOTHESIS_FLAGS: -n=auto -q --hypothesis-profile=ci
strategy:
fail-fast: true
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-13
# - macos-latest # see: https://github.com/actions/setup-python/issues/696
python-version: ["3.8", "3.9", "3.10", "3.11"]
pandas-version: ["2.2.2"]
pydantic-version: ["2.3.0"]
polars-version: ["0.20.31", "1.0.0"]
extra:
- hypotheses
- io
- mypy
- strategies
- fastapi
- geopandas
- dask
- polars
- pyspark
- modin-dask
- modin-ray
include:
- os: ubuntu-latest
pip-cache: ~/.cache/pip
# - os: macos-latest
# pip-cache: ~/Library/Caches/pip
- os: macos-13
pip-cache: ~/Library/Caches/pip
- os: windows-latest
pip-cache: ~/AppData/Local/pip/Cache
exclude:
- python-version: "3.8"
pandas-version: "2.2.0"
- python-version: "3.11"
pandas-version: "1.5.3"
# mypy tests hang on windows
- extra: mypy
os: windows-latest
- extra: modin-ray
os: windows-latest
- extra: hypotheses
polars-version: "0.20.31"
- extra: io
polars-version: "0.20.31"
- extra: mypy
polars-version: "0.20.31"
- extra: strategies
polars-version: "0.20.31"
- extra: fastapi
polars-version: "0.20.31"
- extra: geopandas
polars-version: "0.20.31"
- extra: dask
polars-version: "0.20.31"
- extra: pyspark
polars-version: "0.20.31"
- extra: modin-dask
polars-version: "0.20.31"
- extra: modin-ray
polars-version: "0.20.31"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Cache pip
uses: actions/cache@v4
with:
path: ${{ matrix.pip-cache }}
key: ${{ runner.os }}-pip-${{ hashFiles('requirements-dev.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install deps
shell: bash
# install numpy<2 for all extras. It seems to effects most packages in
# the ecosystem.
# install openjdk for pyspark extra.
run: |
pip install uv
uv pip install --system -r requirements.in
uv pip install --system --force-reinstall "polars==${{ matrix.polars-version }}";
uv pip install --system --force-reinstall "numpy<2.0.0";
uv pip install --system install-jdk==1.1.0
export JAVA_HOME=$(python -c "import jdk; print(jdk.install('11', vendor='temurin'))")
- run: |
pip list
printenv | sort
- name: Unit Tests - ${{ matrix.extra }}
run: nox ${{ env.NOX_FLAGS }} --session "tests(extra='${{ matrix.extra }}', pydantic='${{ matrix.pydantic-version }}', python='${{ matrix.python-version }}', pandas='${{ matrix.pandas-version }}')"
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v4