CI: Make xarray & pandas optional for pypy (#1338) #1236
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: Tests | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
schedule: | |
- cron: '0 0 * * 0' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
env: | |
PYPROJ_FULL_COVERAGE: YES | |
jobs: | |
linting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- uses: actions/setup-python@v4 | |
with: | |
python-version: 3.9 | |
- uses: pre-commit/[email protected] | |
- name: Install mypy | |
run: | | |
python -m pip install mypy types-certifi | |
- name: mypy | |
run: | | |
mypy pyproj | |
docker_tests: | |
needs: linting | |
runs-on: ubuntu-latest | |
name: Docker | python=${{ matrix.python-version }} | PROJ=${{ matrix.proj-version }} | |
container: ghcr.io/osgeo/proj:${{ matrix.proj-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.9', '3.10', '3.11'] | |
proj-version: ['9.2.0'] | |
include: | |
- python-version: '3.9' | |
proj-version: '9.1.1' | |
- python-version: '3.9' | |
proj-version: '9.1.0' | |
- python-version: '3.9' | |
proj-version: '9.0.1' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Update | |
run: | | |
apt-get update | |
apt-get -y install software-properties-common | |
add-apt-repository -y ppa:deadsnakes/ppa | |
apt-get update | |
- name: Set up Python ${{ matrix.python-version }} | |
run: | | |
apt-get install -y --no-install-recommends \ | |
python${{ matrix.python-version }} \ | |
python${{ matrix.python-version }}-dev \ | |
python${{ matrix.python-version }}-venv \ | |
python3-pip \ | |
g++ | |
- name: Install dependencies | |
run: | | |
python${{ matrix.python-version }} -m venv testenv | |
. testenv/bin/activate | |
python -m pip install --upgrade pip | |
python -m pip install -r requirements-dev.txt | |
python -m pip install -e . | |
python -m pip install -r requirements-test.txt | |
- name: Test | |
shell: bash | |
run: | | |
. testenv/bin/activate | |
python -m pytest --cov-report term-missing --cov=pyproj --cov-report xml | |
- name: Test Network | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
run: | | |
. testenv/bin/activate | |
python -m pytest | |
- name: Test Global Context | |
shell: bash | |
env: | |
PYPROJ_GLOBAL_CONTEXT: ON | |
run: | | |
. testenv/bin/activate | |
python -m pytest | |
- name: Test Network & Global Context | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
PYPROJ_GLOBAL_CONTEXT: ON | |
run: | | |
. testenv/bin/activate | |
python -m pytest | |
- name: Test Grids | |
shell: bash | |
run: | | |
. testenv/bin/activate | |
projsync --quiet --bbox -175,0,-50,85 | |
python -m pytest | |
conda_tests: | |
needs: linting | |
name: Conda ${{ matrix.os }} | ${{ matrix.python-implementation }}=${{ matrix.python-version }} | PROJ=${{ matrix.proj-version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: ['3.9', '3.10', '3.11'] | |
python-implementation: [python] | |
proj-version: ['*'] | |
include: | |
- os: ubuntu-latest | |
python-version: '*' | |
python-implementation: pypy | |
proj-version: '*' | |
- os: ubuntu-latest | |
python-version: '*' | |
python-implementation: python | |
proj-version: '9.1.1' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Conda | |
uses: s-weigand/setup-conda@v1 | |
with: | |
conda-channels: conda-forge | |
- name: Install Env | |
shell: bash | |
run: | | |
conda config --prepend channels conda-forge | |
conda config --set channel_priority strict | |
export INSTALL_DEPS='${{ matrix.python-implementation }}=${{ matrix.python-version }} cython proj=${{ matrix.proj-version }} numpy' | |
if [ "${{ matrix.os }}" = "macos-latest" -a "${{ matrix.python-version }}" = "3.10" ]; then | |
sed -i.bak '/shapely/d' requirements-test.txt; | |
else | |
export INSTALL_DEPS="${INSTALL_DEPS} shapely"; | |
fi; | |
if [ "${{ matrix.python-implementation }}" = "pypy" ]; then | |
sed -i.bak '/xarray/d' requirements-test.txt; | |
sed -i.bak '/pandas/d' requirements-test.txt; | |
else | |
export INSTALL_DEPS="${INSTALL_DEPS} xarray pandas"; | |
fi; | |
conda create -n test $INSTALL_DEPS | |
source activate test | |
python -m pip install -e . | |
python -m pip install -r requirements-test.txt | |
- name: Check and Log Environment | |
shell: bash | |
run: | | |
source activate test | |
python -V | |
pyproj -v | |
conda info | |
- name: Install pylint | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
source activate test | |
python -m pip install pylint | |
- name: pylint | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
source activate test | |
pylint pyproj | |
- name: Test with Coverage | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
source activate test | |
python -m pytest --cov-report term-missing --cov=pyproj --cov-report xml | |
- name: Test | |
shell: bash | |
if: matrix.python-implementation == 'pypy' | |
env: | |
PROJ_NETWORK: OFF | |
run: | | |
source activate test | |
python -m pytest | |
- name: Test Network | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
run: | | |
source activate test | |
python -m pytest | |
- name: Test Global Context | |
shell: bash | |
env: | |
PROJ_NETWORK: OFF | |
PYPROJ_GLOBAL_CONTEXT: ON | |
run: | | |
source activate test | |
python -m pytest | |
- name: Test Network & Global Context | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
PYPROJ_GLOBAL_CONTEXT: ON | |
run: | | |
source activate test | |
python -m pytest | |
- name: Test Grids | |
shell: bash | |
env: | |
PROJ_NETWORK: OFF | |
run: | | |
source activate test | |
projsync --quiet --bbox -175,0,-50,85 | |
python -m pytest | |
- name: Test Build docs | |
shell: bash | |
if: contains(matrix.os, 'ubuntu') && matrix.python-implementation == 'python' | |
run: | | |
source activate test | |
python -m pip install -r requirements-docs.txt | |
sphinx-build -b html docs/ docs/_build/ | |
sphinx-build -b man docs/ docs/_build/ | |
- uses: codecov/codecov-action@v3 |