Skip to content

chore: Update README and coverage action to include tags #228

chore: Update README and coverage action to include tags

chore: Update README and coverage action to include tags #228

Workflow file for this run

name: test
on:
push:
branches:
- main
pull_request:
branches:
- main
permissions:
contents: read
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', '3.13']
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install (geoarrow-pyarrow)
run: |
pushd geoarrow-pyarrow
pip install ".[test]"
- name: Install (geoarrow-types)
run: |
pushd geoarrow-types
pip install ".[test]"
- name: Install (geoarrow-pandas)
run: |
pushd geoarrow-pandas
pip install ".[test]"
- name: Run tests (geoarrow-pyarrow)
run: |
pytest geoarrow-pyarrow/tests -v -s
- name: Run tests (geoarrow-types)
run: |
pytest geoarrow-types/tests -v -s
- name: Run tests (geoarrow-pandas)
run: |
pytest geoarrow-pandas/tests -v -s
- name: Run doctests (geoarrow-pyarrow)
if: success() && matrix.python-version == '3.13'
run: |
cd geoarrow-pyarrow
pytest --pyargs geoarrow.pyarrow --doctest-modules --import-mode=importlib
- name: Run doctests (geoarrow-types)
if: success() && matrix.python-version == '3.13'
run: |
cd geoarrow-types
pytest --pyargs geoarrow.types --doctest-modules --import-mode=importlib
- name: Run doctests (geoarrow-pandas)
if: success() && matrix.python-version == '3.13'
run: |
cd geoarrow-pandas
pytest --pyargs geoarrow.pandas --doctest-modules --import-mode=importlib
# This is a test of geoarrow-types on Python 3.7 (which implies pyarrow 12
# since this is the last supported version there). Python 3.7 is still the
# runtime available on some hosted platforms (e.g., it is the minimum required
# version for apache-sedona Python)
oldest-supported:
runs-on: ubuntu-latest
container:
image: python:3.7
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
- name: Check git setup
run: |
git config --global --add safe.directory "$(pwd)"
git describe --long --match='geoarrow-types-*'
# setuptools_scm available for Python 3.7 does not support version_file
# (it can still be installed on Python 3.7, it just can't be built there
# without this modification)
- name: Patch pyproject.toml
run: |
cd geoarrow-types
sed -i.bak '/^version_file/d' pyproject.toml
echo '__version__ = "0.0.0"' > src/geoarrow/types/_version.py
echo '__version_tuple__ = (0, 0, 0)' >> src/geoarrow/types/_version.py
- name: Install (geoarrow-types)
run: |
pip install --upgrade setuptools setuptools_scm
cd geoarrow-types
pip install ".[test]"
- name: Run tests (geoarrow-types)
run: |
pytest geoarrow-types/tests -v -s
coverage:
needs: [test]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.13'
cache: 'pip'
- name: Install (geoarrow-pyarrow)
run: |
pushd geoarrow-pyarrow
pip install -e ".[test]"
- name: Install (geoarrow-types)
run: |
pushd geoarrow-types
pip install -e ".[test]"
- name: Install (geoarrow-pandas)
run: |
pushd geoarrow-pandas
pip install -e ".[test]"
- name: Install coverage dependencies
run: |
pip install pytest-cov
- name: Install editable
run: |
pip install -e geoarrow-pyarrow/
pip install -e geoarrow-types/
pip install -e geoarrow-pandas/
- name: Coverage
run: |
pushd geoarrow-pyarrow
python -m pytest --cov ./src/geoarrow tests --import-mode=importlib
python -m coverage xml
popd
pushd geoarrow-types
python -m pytest --cov ./src/geoarrow tests --import-mode=importlib
python -m coverage xml
popd
pushd geoarrow-pandas
python -m pytest --cov ./src/geoarrow tests --import-mode=importlib
python -m coverage xml
popd
- name: Upload coverage to codecov
uses: codecov/codecov-action@v2
with:
files: 'geoarrow-pyarrow/coverage.xml,geoarrow-types/coverage.xml,geoarrow-pandas/coverage.xml'
token: ${{ secrets.CODECOV_TOKEN }}