Skip to content

linting

linting #994

Workflow file for this run

name: Run Code Checks
on:
pull_request:
push:
jobs:
build-wheels:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: actions/cache@v4
id: wheels_cache
with:
path: ./wheels
key: wheels-${{ github.sha }}
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
python -m pip install --upgrade setuptools
python -m pip install --upgrade \
toml \
wheel \
packaging \
twine
python -m pip freeze
- name: Build Clean Packages
run: |
mkdir -p ./wheels/clean
python setup.py bdist_wheel --dist-dir ./wheels/clean/
python setup.py sdist --dist-dir ./wheels/clean/
find ./wheels/clean -type f
- name: Patch Package Versions
run: |
find . -name _version.py | xargs python ./scripts/patch_version.py ${GITHUB_RUN_NUMBER:-0}
- name: Build Dev Packages
run: |
mkdir -p ./wheels/dev
python setup.py bdist_wheel --dist-dir ./wheels/dev/
python setup.py sdist --dist-dir ./wheels/dev/
find ./wheels/dev -type f
build-test-env-base:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- uses: conda-incubator/setup-miniconda@v3
if: steps.conda_cache.outputs.cache-hit != 'true'
with:
miniforge-variant: Mambaforge
miniforge-version: latest
use-mamba: true
- name: Dump Conda Environment Info
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
conda info
conda list
mamba -V
conda config --show-sources
conda config --show
printenv | sort
- name: Build Python Environment for Testing
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
mamba env create -f tests/test-env-py310.yml -p /tmp/test_env
- name: Check Python Env
shell: bash -l {0}
if: steps.conda_cache.outputs.cache-hit != 'true'
run: |
mamba env export -p /tmp/test_env
build-binder-env:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: binder_cache
with:
path: /tmp/binder_env
key: ${{ runner.os }}-binder-env-${{ hashFiles('binder/environment.yml') }}
- uses: conda-incubator/setup-miniconda@v3
if: steps.binder_cache.outputs.cache-hit != 'true'
with:
miniforge-variant: Mambaforge
miniforge-version: latest
use-mamba: true
- name: Dump Conda Environment Info
shell: bash -l {0}
if: steps.binder_cache.outputs.cache-hit != 'true'
run: |
conda info
conda list
mamba -V
conda config --show-sources
conda config --show
printenv | sort
- name: Build Python Environment for Notebooks
shell: bash -l {0}
if: steps.binder_cache.outputs.cache-hit != 'true'
run: |
cd binder
mamba env create -f environment.yml -p /tmp/binder_env
- name: Check Python Env
shell: bash -l {0}
if: steps.binder_cache.outputs.cache-hit != 'true'
run: |
mamba env export -p /tmp/binder_env
run-black-check:
runs-on: ubuntu-latest
needs:
- build-test-env-base
steps:
- uses: actions/checkout@v4
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Check formatting (black)
shell: bash
run: |
black --version
black --check --diff .
run-pylint:
runs-on: ubuntu-latest
needs:
- build-test-env-base
steps:
- uses: actions/checkout@v4
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Install in Edit mode
shell: bash
run: |
pip install -e . --no-deps
- name: Check with pylint
shell: bash
run: |
pylint -v odc
run-mypy:
runs-on: ubuntu-latest
needs:
- build-test-env-base
steps:
- uses: actions/checkout@v4
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Check with mypy
shell: bash
run: |
python -m mypy --namespace-packages --explicit-package-bases odc
test-without-botocore:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
cache-dependency-path: |
setup.cfg
requirements-dev.txt
- name: Install odc-stac
shell: bash -l {0}
run: pip install -e .
- name: Install development requirements
shell: bash -l {0}
run: pip install -r requirements-dev.txt
- name: Run tests
shell: bash -l {0}
run: pytest tests odc
env:
DASK_TEMPORARY_DIRECTORY: /tmp/dask
test-with-botocore-and-coverage:
runs-on: ubuntu-latest
needs:
- build-test-env-base
- run-black-check
steps:
- uses: actions/checkout@v4
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Install in Edit mode
shell: bash
run: |
pip install -e '.[botocore]' --no-deps
- name: Run Tests
shell: bash
run: |
echo "Running Tests"
pytest --cov=. \
--cov-report=html \
--cov-report=xml:coverage.xml \
--timeout=30 \
tests odc
env:
AWS_DEFAULT_REGION: us-west-2
DASK_TEMPORARY_DIRECTORY: /tmp/dask
- name: Upload Coverage
if: |
github.repository == 'opendatacube/odc-stac'
uses: codecov/codecov-action@v4
with:
fail_ci_if_error: false
verbose: false
test-wheels:
runs-on: ubuntu-latest
needs:
- build-test-env-base
- run-black-check
- build-wheels
steps:
- uses: actions/checkout@v4
- name: Get Wheels from Cache
uses: actions/cache@v4
id: wheels_cache
with:
path: ./wheels
key: wheels-${{ github.sha }}
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Install wheels for testing
shell: bash
run: |
which python
ls -lh wheels/clean
python -m pip install --no-deps wheels/clean/*whl
python -m pip check || true
- name: Run Tests
shell: bash
run: |
echo "Running Tests"
pytest --timeout=30 tests odc
env:
AWS_DEFAULT_REGION: us-west-2
DASK_TEMPORARY_DIRECTORY: /tmp/dask
build-notebooks:
runs-on: ubuntu-latest
needs:
- build-binder-env
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
id: nb_cache
with:
path: docs/notebooks
key: docs-notebooks-${{ hashFiles('notebooks/*.py') }}
- name: Get Conda Environment from Cache
if: steps.nb_cache.outputs.cache-hit != 'true'
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/binder_env
key: ${{ runner.os }}-binder-env-${{ hashFiles('binder/environment.yml') }}
- name: Update PATH
if: steps.nb_cache.outputs.cache-hit != 'true'
shell: bash
run: |
echo "/tmp/binder_env/bin" >> $GITHUB_PATH
- name: Run Notebooks
if: steps.nb_cache.outputs.cache-hit != 'true'
run: |
nb_dir=docs/notebooks
mkdir -p $nb_dir
for src in $(find notebooks -type f -maxdepth 1 -name '*py'); do
dst="$nb_dir/$(basename ${src%%.py}.ipynb)"
echo "$src -> $dst"
./binder/render-nb-pipe.sh <$src >$dst
done
ls -lh $nb_dir
check-docs:
runs-on: ubuntu-latest
needs:
- build-test-env-base
- run-black-check
- build-notebooks
steps:
- uses: actions/checkout@v4
- name: Get Rendered Notebooks
uses: actions/cache@v4
id: nb_cache
with:
path: docs/notebooks
key: docs-notebooks-${{ hashFiles('notebooks/*.py') }}
- name: Get Conda Environment from Cache
uses: actions/cache@v4
id: conda_cache
with:
path: /tmp/test_env
key: ${{ runner.os }}-test-env-py310-${{ hashFiles('tests/test-env-py310.yml') }}
- name: Update PATH
shell: bash
run: |
echo "/tmp/test_env/bin" >> $GITHUB_PATH
- name: Config
id: cfg
run: |
find notebooks/ -maxdepth 1 -name '*.py' -type f | sort -f -d
nb_dir="docs/notebooks"
nb_hash=$(python scripts/notebook_hash.py)
echo "Notebooks hash: ${nb_hash}"
echo "nb-hash=${nb_hash}" >> $GITHUB_OUTPUT
echo "nb-hash-short=${nb_hash:0:16}" >> $GITHUB_OUTPUT
- name: Install in Edit mode
shell: bash
run: |
pip install -e . --no-deps
- name: Build STAC docs
shell: bash
run: |
make -C docs html
- name: Deploy to Netlify
id: netlify
if: github.event_name == 'pull_request'
uses: nwtgck/actions-netlify@v2
with:
production-branch: "develop"
publish-dir: "docs/_build/html"
deploy-message: "Deploy from GitHub Actions"
github-token: ${{ secrets.GITHUB_TOKEN }}
enable-pull-request-comment: true
enable-commit-comment: false
alias: ${{ steps.cfg.outputs.nb-hash-short }}
env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
- name: Print Notice
uses: actions/github-script@v7
if: github.event_name == 'pull_request'
env:
NETLIFY_URL: ${{ steps.netlify.outputs.deploy-url }}
with:
script: |
const {NETLIFY_URL} = process.env
core.notice(`Published to: ${NETLIFY_URL}`)