CI #1524
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: [master] | |
pull_request: | |
branches: [master] | |
schedule: | |
- cron: "0 0 * * *" | |
jobs: | |
lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
- name: Upgrade pip and install linters | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install flake8 pydocstyle packaging | |
- name: flake8 PEP compliance checks | |
run: python -m flake8 anesthetic tests | |
- name: pydocstyle documentation style checks | |
run: python -m pydocstyle --convention=numpy anesthetic | |
- name: Count missing test fixtures | |
run: | | |
if [ $( grep -L 'close_figures_on_teardown' | |
$(grep -l 'matplotlib' tests/test*.py) | wc -w ) -ne 0] | |
then | |
missing_tests=$( grep -L 'close_figures_on_teardown' | |
$(grep -l 'matplotlib' tests/test*.py) ) | |
echo "$missing_tests are missing the | |
close_figures_on_teardown fixture." | |
exit 1 | |
fi | |
sphinx: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v2 | |
- uses: actions/setup-python@v2 | |
with: | |
python-version: '3.11' | |
- name: Upgrade pip and install doc requirements | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install numpy~=1.0 | |
python -m pip install -e ".[all,docs]" | |
- name: build documentation | |
run: | | |
cd docs | |
make clean | |
make html SPHINXOPTS="-W --keep-going -n" | |
pip: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.9', '3.10', '3.11'] | |
extras: [true, false] | |
include: | |
- os: macos-latest | |
python-version: '3.11' | |
extras: true | |
- os: windows-latest | |
python-version: '3.11' | |
extras: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install hdf5 for macOS | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: brew install hdf5 c-blosc | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install -e ".[test]" | |
- name: Install extra dependencies | |
if: ${{ matrix.extras }} | |
run: | | |
python -m pip install -e ".[all]" | |
- name: Test with pytest | |
run: python -m pytest --cov=anesthetic tests | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
conda: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.9', '3.10', '3.11'] | |
include: | |
- os: macos-latest | |
python-version: '3.11' | |
- os: windows-latest | |
python-version: '3.11' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: conda-incubator/setup-miniconda@v3 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install hdf5 for macOS | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: brew install hdf5 c-blosc | |
- name: Install dependencies | |
shell: bash -l {0} | |
run: | | |
conda config --append channels conda-forge | |
conda install pytest pytest-cov | |
conda install scipy numpy 'matplotlib>=3.6.1,<3.9.0' 'pandas~=2.2.0' | |
- name: Test with pytest | |
shell: bash -l {0} | |
run: python -m pytest --cov=anesthetic tests | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
test-build-n-publish: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.11 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.11 | |
- name: Install pypa/build | |
run: python -m pip install build --user | |
- name: Build a binary wheel and a source tarball | |
run: python -m build --sdist --wheel --outdir dist/ | |
- name: Publish to Test PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
continue-on-error: true | |
with: | |
password: ${{ secrets.TEST_PYPI_API_TOKEN }} | |
repository_url: https://test.pypi.org/legacy/ | |
skip_existing: true | |
minimum-dependencies: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.9 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.9 | |
- name: Upgrade pip and install tomli | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tomli | |
- name: Install minimum dependencies | |
run: eval "python -m pip install $(./bin/min_dependencies.py)" | |
- name: Install anesthetic | |
run: python -m pip install -e ".[test]" | |
- name: Test with pytest | |
run: python -m pytest --cov=anesthetic tests | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
token: ${{ secrets.CODECOV_TOKEN }} | |
latest-dependencies: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up latest stable Python 3 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Upgrade pip and install tomli | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tomli | |
- name: Install latest dependencies | |
run: eval "python -m pip install $(./bin/latest_dependencies.py)" | |
- name: Install pytest and anesthetic | |
run: | | |
python -m pip install pytest | |
python -m pip install --no-deps -e . | |
- name: Test with pytest | |
run: python -m pytest tests | |
check-for-new-versions: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up latest stable Python 3 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Upgrade pip and install tomli and requests | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install tomli requests | |
- name: Install anesthetic | |
run: python -m pip install -e ".[test]" | |
- name: Check anesthetic dependencies are up to date | |
run: python -m pytest ./bin/check_up_to_date.py |