ENH: add support to read, write, list and remove /vsimem/
files
#628
Workflow file for this run
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: Release | |
on: | |
push: | |
branches: | |
- main # just build the sdist & wheel, skip release | |
tags: | |
- "v*" | |
pull_request: # also build on PRs touching files that affect building sdist / wheels | |
paths: | |
- ".github/workflows/release.yml" | |
- "ci/**" | |
- "MANIFEST.in" | |
- "pyproject.toml" | |
- "setup.py" | |
workflow_dispatch: | |
# cancel running jobs on new commit to PR | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
build-sdist: | |
name: Build pyogrio sdist | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout source | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: "3.x" | |
- name: Build a source tarball | |
run: | | |
python -m pip install --upgrade pip | |
python -m pip install build setuptools | |
python -m build --sdist | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pyogrio-sdist | |
path: ./dist/*.tar.gz | |
retention-days: 5 | |
compression-level: 0 | |
test-sdist: | |
name: Test sdist | |
needs: [build-sdist] | |
runs-on: ubuntu-latest | |
container: | |
image: "ghcr.io/osgeo/gdal:ubuntu-small-3.8.5" | |
steps: | |
- name: Download sdist from artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: pyogrio-sdist | |
path: wheelhouse | |
- name: Install pip | |
run: | | |
apt-get update && apt-get install -y python3-pip | |
- name: Build from sdist and install test dependencies | |
shell: bash | |
run: | | |
python3 -m pip install --no-cache-dir wheelhouse/*.tar.gz | |
python3 -m pip install --no-cache-dir pytest pandas pyproj shapely>=2 | |
python3 -m pip install --no-cache-dir --no-deps geopandas | |
python3 -m pip list | |
- name: Run tests | |
shell: bash | |
run: | | |
cd .. | |
python3 -m pytest --pyargs pyogrio.tests -v | |
build-wheels-linux: | |
name: Build wheels on Linux | |
runs-on: "ubuntu-20.04" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Set up Docker Buildx | |
id: buildx | |
uses: docker/setup-buildx-action@v3 | |
with: | |
install: true | |
buildkitd-flags: --debug | |
- name: Build Docker image with vcpkg and gdal | |
# using build-push-action (without push) to make use of cache arguments | |
uses: docker/build-push-action@v6 | |
with: | |
context: . | |
file: ci/manylinux2014_x86_64-vcpkg-gdal.Dockerfile | |
tags: manylinux-vcpkg-gdal:latest | |
push: false | |
load: true | |
cache-from: type=gha | |
cache-to: type=gha,mode=max | |
env: | |
BUILDKIT_PROGRESS: plain | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.19.2 | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pyogrio-wheel-linux | |
path: ./wheelhouse/*.whl | |
compression-level: 0 | |
build-wheels-mac-win: | |
name: Build wheels on ${{ matrix.os }} (${{ matrix.arch }}) | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- os: "macos-12" | |
triplet: "x64-osx-dynamic" | |
arch: x86_64 | |
vcpkg_cache: "/Users/runner/.cache/vcpkg/archives" | |
vcpkg_logs: "/usr/local/share/vcpkg/buildtrees/**/*.log" | |
- os: "macos-12" | |
triplet: "arm64-osx-dynamic-release" | |
arch: arm64 | |
vcpkg_cache: "/Users/runner/.cache/vcpkg/archives" | |
vcpkg_logs: "/usr/local/share/vcpkg/buildtrees/**/*.log" | |
- os: "windows-2019" | |
triplet: "x64-windows-dynamic-release" | |
arch: AMD64 | |
# windows requires windows-specific paths | |
vcpkg_cache: "c:\\vcpkg\\installed" | |
vcpkg_logs: "c:\\vcpkg\\buildtrees\\**\\*.log" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Cache vcpkg | |
uses: actions/cache@v4 | |
id: vcpkgcache | |
with: | |
path: | | |
${{ matrix.vcpkg_cache }} | |
# bump the last digit to avoid using previous build cache | |
key: ${{ matrix.os }}-${{ matrix.arch }}-vcpkg-gdal3.8.5-cache0 | |
# MacOS build requires aclocal, which is part of automake, but appears | |
# to be missing in default image | |
- name: Reinstall automake | |
if: runner.os == 'macOS' | |
run: | | |
brew reinstall automake | |
echo $(which aclocal) | |
- name: Checkout specific version of vcpkg | |
shell: bash | |
run: | | |
cd $VCPKG_INSTALLATION_ROOT | |
# on mac the clone is not clean, otherwise git pull fails | |
git reset --hard | |
# pull latest version to ensure the required commit with GDAL 3.8 is available | |
git pull | |
git checkout 4f4a1821b2e8c7a2863e4df65a4d514f84144049 | |
- name: Install GDAL | |
env: | |
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }} | |
shell: bash | |
run: | | |
vcpkg install --overlay-triplets=./ci/custom-triplets --feature-flags="versions,manifests" --x-manifest-root=./ci --x-install-root=$VCPKG_INSTALLATION_ROOT/installed | |
vcpkg list | |
- name: Upload vcpkg build logs | |
if: ${{ failure() }} | |
uses: actions/upload-artifact@v4 | |
with: | |
name: pyogrio-vcpkg-logs-${{ matrix.triplet }} | |
path: ${{ matrix.vcpkg_logs }} | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.19.2 | |
env: | |
# CIBW needs to know triplet for the correct install path | |
VCPKG_DEFAULT_TRIPLET: ${{ matrix.triplet }} | |
CIBW_ARCHS: ${{ matrix.arch }} | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: pyogrio-wheel-${{ matrix.triplet }} | |
path: ./wheelhouse/*.whl | |
compression-level: 0 | |
test-wheels: | |
name: Test wheels on ${{ matrix.os }} (Python ${{ matrix.python-version }}) | |
needs: [build-wheels-linux, build-wheels-mac-win] | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: ["ubuntu-20.04", "windows-latest", "macos-12", "macos-latest"] | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
include: | |
- os: "ubuntu-20.04" | |
artifact: pyogrio-wheel-linux | |
- os: "windows-latest" | |
artifact: pyogrio-wheel-x64-windows-dynamic-release | |
- os: "macos-12" | |
artifact: pyogrio-wheel-x64-osx-dynamic | |
- os: "macos-latest" | |
artifact: pyogrio-wheel-x64-osx-dynamic | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
cache: "pip" | |
cache-dependency-path: "ci/requirements-wheel-test.txt" | |
- name: Download wheels from artifacts | |
uses: actions/download-artifact@v4 | |
with: | |
name: ${{ matrix.artifact }} | |
path: wheelhouse | |
- name: Install dependencies and pyogrio wheel | |
shell: bash | |
run: | | |
python -m pip install -r ci/requirements-wheel-test.txt | |
if [ ${{ matrix.python-version }} != "3.12" ]; then | |
python -m pip install --no-deps geopandas | |
fi | |
python -m pip install --pre --find-links wheelhouse pyogrio | |
python -m pip list | |
- name: Run tests | |
shell: bash | |
run: | | |
cd .. | |
python -c "import pyogrio; print(f'GDAL version: {pyogrio.__gdal_version__}\nGEOS version: {pyogrio.__gdal_geos_version__}')" | |
python -m pytest --pyargs pyogrio.tests -v | |
publish: | |
name: Publish pyogrio to GitHub / PyPI | |
needs: [test-sdist, test-wheels] | |
runs-on: ubuntu-latest | |
environment: | |
name: pypi | |
url: https://pypi.org/p/pyogrio | |
permissions: | |
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing to PyPI | |
contents: write # this permission is required for the Github release action | |
# release on every tag | |
if: github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/') | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: pyogrio-* | |
path: dist | |
merge-multiple: true | |
- name: Publish distribution to PyPI | |
uses: pypa/gh-action-pypi-publish@release/v1 | |
- name: Create GitHub Release | |
id: create_release | |
uses: softprops/action-gh-release@v2 | |
with: | |
name: Version ${{ github.ref_name }} | |
tag_name: ${{ github.ref }} | |
draft: false | |
prerelease: false | |
files: dist/*.tar.gz | |
token: ${{ secrets.GITHUB_TOKEN }} |