prepare release 4.2.0 #262
This file contains hidden or 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: 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 |