Skip to content

Fix recursion error when eo band name is missing (#1406) #3615

Fix recursion error when eo band name is missing (#1406)

Fix recursion error when eo band name is missing (#1406) #3615

name: CI
on:
push:
branches:
- main
- "0.3"
- "0.4"
- "0.5"
- "1.0"
- "2.0"
pull_request:
merge_group:
concurrency:
# Cancel running job if another commit is pushed to the branch
group: ${{ github.ref }}
cancel-in-progress: true
jobs:
test:
name: test
runs-on: ${{ matrix.os }}
strategy:
# Allow other matrix jobs to complete if 1 fails
fail-fast: false
matrix:
python-version:
- "3.10"
- "3.11"
- "3.12"
os:
- ubuntu-latest
- windows-latest
- macos-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install dependencies
run: pip install .[validation,test]
- name: Execute test suite
run: ./scripts/test
shell: bash
env:
TMPDIR: "${{ matrix.os == 'windows-latest' && 'D:\\a\\_temp' || '' }}"
coverage:
name: coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
- name: Install with dependencies
run: pip install .[validation,test]
- name: Run coverage with orjson
run: pytest tests --cov
- name: Uninstall orjson
run: pip uninstall -y orjson
- name: Run coverage without orjson, appending results
run: pytest tests --cov --cov-append
- name: Prepare ./coverage.xml
# Ignore the configured fail-under to ensure we upload the coverage report. We
# will trigger a failure for coverage drops in a later job
run: coverage xml --fail-under 0
- name: Upload All coverage to Codecov
uses: codecov/codecov-action@v4
if: ${{ env.GITHUB_REPOSITORY }} == 'stac-utils/pystac'
with:
token: ${{ secrets.CODECOV_TOKEN }}
file: ./coverage.xml
fail_ci_if_error: false
- name: Check for coverage drop
# This will use the configured fail-under, causing this job to fail if the
# coverage drops.
run: coverage report
lint:
runs-on: ubuntu-latest
strategy:
# Allow other matrix jobs to complete if 1 fails
fail-fast: false
matrix:
python-version:
- "3.10"
- "3.11"
- "3.12"
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install with test dependencies
run: pip install .[test]
- name: Execute linters & type checkers
run: pre-commit run --all-files
without-orjson:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Install
run: pip install .[validation,test]
- name: Uninstall orjson
run: pip uninstall -y orjson
- name: Run tests
run: pytest tests
check-all-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
- name: Install all dependencies
run: pip install .[bench,docs,orjson,test,urllib3,validation]
check-benchmarks:
# This checks to make sure any API changes haven't broken any of the
# benchmarks. It doesn't do any actual benchmarking, since (IMO) that's not
# appropriate for CI on Github actions.
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
- name: Install pystac
run: pip install .[bench]
- name: Set asv machine
run: asv machine --yes
- name: Check benchmarks
run: asv run -a repeat=1 -a rounds=1 HEAD
docs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: "3.10"
cache: "pip"
- name: Install pandoc
run: sudo apt-get install pandoc
- name: Install pystac
run: pip install .[docs]
- name: Check docs
run: make -C docs html SPHINXOPTS="-W --keep-going"