Skip to content

prepare release 4.2.0 #262

prepare release 4.2.0

prepare release 4.2.0 #262

Workflow file for this run

name: CI
on: [ push, pull_request ]
jobs:
build-default:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install packages
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libproj-dev libgeos-dev liblz4-dev pipx
pipx install mypy
pipx inject mypy types-requests
pipx install flake8
- name: Lint package
run: flake8 src examples test
- name: Typecheck package
run: mypy src
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build package 3.8
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Build package 3.9
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build package 3.10
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build package 3.11
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build package 3.12
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build package 3.13
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14"
allow-prereleases: true
- name: Build package 3.14
run: |
pip install build wheel
python -m build
shell: bash
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: pyosmium-linux-x64-dist
path: dist
build-free-threaded:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Install packages
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libproj-dev libgeos-dev liblz4-dev pipx
pipx install mypy
pipx inject mypy types-requests
pipx install flake8
- name: Set up Python 3.13t
uses: actions/setup-python@v5
with:
python-version: "3.13t"
- name: Build package 3.13t
run: |
pip install build wheel
python -m build
shell: bash
- name: Set up Python 3.14t
uses: actions/setup-python@v5
with:
python-version: "3.14t"
allow-prereleases: true
- name: Build package 3.14t
run: |
pip install build wheel
python -m build
shell: bash
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: pyosmium-linux-x64-dist-t
path: dist
test-default:
runs-on: ubuntu-22.04
needs: build-default
strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-linux-x64-dist
- name: Install osmium
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}*.whl`
./osmium-test/bin/pip install ${WHEEL}[tests]
shell: bash
env:
PYVER: ${{ matrix.python-version }}
- name: Run tests
run: ./osmium-test/bin/pytest test
shell: bash
- name: Check tool availability
run: |
./osmium-test/bin/pyosmium-get-changes -h
./osmium-test/bin/pyosmium-up-to-date -h
test-314:
runs-on: ubuntu-22.04
needs: build-default
steps:
- uses: actions/checkout@v4
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: 3.14
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-linux-x64-dist
- name: Install osmium
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*314-*.whl`
./osmium-test/bin/pip install ${WHEEL}
./osmium-test/bin/pip install pytest pytest-httpserver pytest-run-parallel
shell: bash
- name: Run tests
run: ./osmium-test/bin/pytest test
shell: bash
- name: Check tool availability
run: |
./osmium-test/bin/pyosmium-get-changes -h
./osmium-test/bin/pyosmium-up-to-date -h
test-free-threaded:
runs-on: ubuntu-22.04
needs: build-free-threaded
strategy:
fail-fast: false
matrix:
python-version: ["3.13t", "3.14t"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-linux-x64-dist-t
- name: Install osmium
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}-*.whl`
./osmium-test/bin/pip install ${WHEEL}
./osmium-test/bin/pip install pytest pytest-httpserver pytest-run-parallel
shell: bash
env:
PYVER: ${{ matrix.python-version }}
- name: Run tests
run: ./osmium-test/bin/pytest test --parallel-threads 10 --iterations 10
shell: bash
build-platform:
runs-on: ${{ matrix.platform }}
strategy:
fail-fast: false
matrix:
compiler: [gcc-old, clang-old, gcc, clang, macos-intel, macos-arm]
include:
- compiler: gcc-old
cc: gcc-10
cxx: g++-10
platform: ubuntu-22.04
python: 3.8
deps: release
flavour: linux
- compiler: clang-old
cc: clang-13
cxx: clang++-13
platform: ubuntu-22.04
python: 3.8
deps: release
flavour: linux
- compiler: gcc
cc: gcc-14
cxx: g++-14
platform: ubuntu-24.04
python: "3.13"
deps: develop
flavour: linux
- compiler: clang
cc: clang-18
cxx: clang++-18
platform: ubuntu-24.04
python: "3.13"
deps: develop
flavour: linux
- compiler: macos-intel
platform: macos-15-intel
python: "3.10"
deps: develop
flavour: macos
- compiler: macos-arm
platform: macos-14
python: "3.13"
deps: develop
flavour: macos
env:
CC: ${{ matrix.cc }}
CXX: ${{ matrix.cxx }}
steps:
- uses: actions/checkout@v4
- name: Clean up build environment
run: |
# Workaround for github/brew problem. Python is already install
# on the Github action runner and then homebrew comes along...
# See also: https://github.com/Homebrew/homebrew-core/issues/173191
rm -f /usr/local/bin/2to3* /usr/local/bin/idle3* /usr/local/bin/pydoc3* /usr/local/bin/python3*
if: ${{ matrix.flavour == 'macos' }}
- name: Install packages
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq libboost-dev libexpat1-dev zlib1g-dev libbz2-dev libproj-dev libgeos-dev liblz4-dev virtualenv
if: ${{ matrix.flavour == 'linux' }}
- name: Install packages
run: brew install boost geos virtualenv
shell: bash
if: ${{ matrix.flavour == 'macos' }}
- name: Setup virtualenv
run: |
virtualenv venv
./venv/bin/pip install build
- name: Install package dependencies (develop)
run: |
git clone --quiet --depth 1 https://github.com/osmcode/libosmium.git contrib/libosmium
git clone --quiet --depth 1 https://github.com/mapbox/protozero.git contrib/protozero
git clone --quiet https://github.com/pybind/pybind11.git contrib/pybind11
shell: bash
if: ${{ matrix.deps == 'develop' }}
- name: Install package dependencies (release)
run: |
./venv/bin/python -m build --sdist
shell: bash
if: ${{ matrix.deps == 'release' }}
- uses: actions/setup-python@v5
with:
python-version: "${{ matrix.python }}"
allow-prereleases: true
- name: Build package
run: |
./venv/bin/python -m build -w
shell: bash
- name: Run tests
run: |
WHEEL=`ls dist/osmium*.whl`
echo "Installing $WHEEL"
./venv/bin/pip install dist/osmium*whl ${WHEEL}[tests]
./venv/bin/pytest test
shell: bash
- name: Build man pages
run: |
. venv/bin/activate
pip install argparse-manpage
cd docs
make
find man/pyosmium-get-changes.1
find man/pyosmium-up-to-date.1
build-windows:
runs-on: windows-2022
env:
VCPKG_DEFAULT_BINARY_CACHE: C:/vcpkg_binary_cache
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
C:/vcpkg_binary_cache
key: vcpkg-binary-cache-windows-2022
- name: Prepare cache
run: if [ ! -d C:/vcpkg_binary_cache ]; then mkdir C:/vcpkg_binary_cache; fi
shell: bash
- name: Install packages
run: vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows boost-variant:x64-windows boost-iterator:x64-windows lz4:x86-windows
shell: bash
- name: Set up Python 3.8
uses: actions/setup-python@v5
with:
python-version: 3.8
- name: Build package 3.8
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.9
uses: actions/setup-python@v5
with:
python-version: 3.9
- name: Build package 3.9
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.10
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Build package 3.10
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.11
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Build package 3.11
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Build package 3.12
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.13
uses: actions/setup-python@v5
with:
python-version: "3.13"
- name: Build package 3.13
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14"
allow-prereleases: true
- name: Build package 3.14
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Repair wheels
run: |
pip install delvewheel
delvewheel repair --add-path C:/vcpkg/installed/x64-windows/bin/ --add-path C:/vcpkg/installed/x64-windows/debug/bin dist/*.whl
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
with:
name: pyosmium-win64-dist
path: wheelhouse
build-windows-free-threaded:
runs-on: windows-2022
env:
VCPKG_DEFAULT_BINARY_CACHE: C:/vcpkg_binary_cache
steps:
- uses: actions/checkout@v4
- uses: actions/cache@v4
with:
path: |
C:/vcpkg_binary_cache
key: vcpkg-binary-cache-windows-2022
- name: Prepare cache
run: if [ ! -d C:/vcpkg_binary_cache ]; then mkdir C:/vcpkg_binary_cache; fi
shell: bash
- name: Install packages
run: |
vcpkg install bzip2:x64-windows expat:x64-windows zlib:x64-windows boost-variant:x64-windows boost-iterator:x64-windows lz4:x86-windows
shell: bash
- name: Set up Python 3.13t
uses: actions/setup-python@v5
with:
python-version: "3.13t"
- name: Build package 3.13t
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Set up Python 3.14t
uses: actions/setup-python@v5
with:
python-version: "3.14t"
allow-prereleases: true
- name: Build package 3.14t
run: |
pip install build wheel
python -m build
shell: bash
env:
CMAKE_TOOLCHAIN_FILE: C:/vcpkg/scripts/buildsystems/vcpkg.cmake
- name: Repair wheels
run: |
pip install delvewheel
delvewheel repair --add-path C:/vcpkg/installed/x64-windows/bin/ --add-path C:/vcpkg/installed/x64-windows/debug/bin dist/*.whl
- name: 'Upload Artifact'
uses: actions/upload-artifact@v4
with:
name: pyosmium-win64-dist-t
path: wheelhouse
test-windows:
runs-on: windows-2022
needs: build-windows
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]
env:
PYTEST_ADDOPTS: ${{ matrix.test-args }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-win64-dist
- name: Install osmium (with shapely)
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}-*.whl`
./osmium-test/Scripts/pip install ${WHEEL}[tests]
shell: bash
env:
PYVER: ${{ matrix.python-version }}
if: matrix.python-version != '3.14'
- name: Install osmium (without shapely)
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}-*.whl`
./osmium-test/Scripts/pip install ${WHEEL}
./osmium-test/Scripts/pip install pytest pytest-httpserver pytest-run-parallel
shell: bash
env:
PYVER: ${{ matrix.python-version }}
if: matrix.python-version == '3.14'
- name: Run tests
run: ./osmium-test/Scripts/pytest test
shell: bash
- name: Check tool availability
run: |
./osmium-test/Scripts/pyosmium-get-changes -h
./osmium-test/Scripts/pyosmium-up-to-date -h
shell: bash
test-windows-free-threaded:
runs-on: windows-2022
needs: build-windows-free-threaded
strategy:
fail-fast: false
matrix:
python-version: ["3.13t", "3.14t"]
env:
PYTEST_ADDOPTS: ${{ matrix.test-args }}
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
- uses: actions/download-artifact@v4
with:
name: pyosmium-win64-dist-t
- name: Install osmium (with shapely)
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}-*.whl`
./osmium-test/Scripts/pip install ${WHEEL}[tests]
shell: bash
env:
PYVER: ${{ matrix.python-version }}
if: matrix.python-version != '3.14t'
- name: Install osmium (without shapely)
run: |
pip install virtualenv
virtualenv osmium-test
WHEEL=`ls osmium*${PYVER/./}-*.whl`
./osmium-test/Scripts/pip install ${WHEEL}
./osmium-test/Scripts/pip install pytest pytest-httpserver pytest-run-parallel
shell: bash
env:
PYVER: ${{ matrix.python-version }}
if: matrix.python-version == '3.14t'
- name: Run tests
run: |
./osmium-test/Scripts/pytest test --parallel-threads 5 --iterations 5
shell: bash
- name: Check tool availability
run: |
./osmium-test/Scripts/pyosmium-get-changes -h
./osmium-test/Scripts/pyosmium-up-to-date -h
shell: bash