Skip to content

feat(python/sedonadb): add DataFrame.sort with composable SortExpr (#… #701

feat(python/sedonadb): add DataFrame.sort with composable SortExpr (#…

feat(python/sedonadb): add DataFrame.sort with composable SortExpr (#… #701

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: python-wheels
on:
pull_request:
branches:
- main
paths:
- 'ci/scripts/wheels-*'
- '.github/workflows/python-wheels.yml'
push:
branches:
- main
- 'branch-**'
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.repository }}-${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
env:
# At s2geometry updated to 0.13.0
VCPKG_REF: 580d480f750618f8affeb77abbb956e6eeaee0ce
jobs:
windows-x86_64:
runs-on: windows-2022
steps:
- uses: actions/checkout@v6
with:
submodules: 'true'
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install cibuildwheel and delvewheel
run: python -m pip install cibuildwheel==3.1.4 delvewheel
- uses: Swatinem/rust-cache@v2
with:
# Update this key to force a new cache
prefix-key: "python-wheel-windows-latest-v3"
- name: Clone vcpkg
uses: actions/checkout@v6
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_REF }}
path: vcpkg
- name: Set SedonaDB dev version
shell: bash
run: |
# Set the unique development version anywhere except a release branch
if [[ "${GITHUB_REF##*/}" =~ ^branch-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
version="${GITHUB_REF##*/branch-}"
echo "${version}"
else
python ci/scripts/set_dev_version.py
fi
- name: Build and test wheels (sedonadb)
run: |
cd ci/scripts
.\wheels-build-windows.ps1
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
VCPKG_DEFAULT_TRIPLET: x64-windows-dynamic-release
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake
CIBW_BUILD: "*-win_amd64"
CIBW_TEST_REQUIRES: pytest adbc_driver_manager geoarrow-pyarrow geopandas
CIBW_TEST_COMMAND: pytest {package}/tests -vv
- uses: actions/upload-artifact@v7
with:
name: release-wheels-windows-x86_64
path: python/sedonadb/dist/*.whl
macOS-arm64:
runs-on: macOS-latest
steps:
- uses: actions/checkout@v6
with:
submodules: 'true'
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==3.1.4
- uses: Swatinem/rust-cache@v2
with:
# Update this key to force a new cache
prefix-key: "python-wheel-macOS-latest-v2"
# Don't cache ~/.cargo/bin -- caching it across runner-image
# generations leaves cargo on PATH as a stale rustup-init that
# rejects normal subcommands. See sedona-db#837.
cache-bin: false
- name: Clone vcpkg
uses: actions/checkout@v6
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_REF }}
path: vcpkg
- name: Set SedonaDB dev version
shell: bash
run: |
# Set the unique development version anywhere except a release branch
if [[ "${GITHUB_REF##*/}" =~ ^branch-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
version="${GITHUB_REF##*/branch-}"
echo "${version}"
else
python ci/scripts/set_dev_version.py
fi
- name: Build and test wheels (sedonadb)
run: |
cd ci/scripts
./wheels-build-macos.sh sedonadb
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
CIBW_TEST_REQUIRES: pytest adbc_driver_manager geoarrow-pyarrow geopandas duckdb
CIBW_TEST_COMMAND: pytest {package}/tests -vv
- uses: actions/upload-artifact@v7
with:
name: release-wheels-macOS-arm64
path: python/sedonadb/dist/*.whl
macOS-amd64:
runs-on: macos-15-intel
steps:
- uses: actions/checkout@v6
with:
submodules: 'true'
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==3.1.4
- uses: Swatinem/rust-cache@v2
with:
# Update this key to force a new cache
prefix-key: "python-wheel-macOS-latest-v2"
# Don't cache ~/.cargo/bin -- caching it across runner-image
# generations leaves cargo on PATH as a stale rustup-init that
# rejects normal subcommands. See sedona-db#837.
cache-bin: false
- name: Clone vcpkg
uses: actions/checkout@v6
with:
repository: microsoft/vcpkg
ref: ${{ env.VCPKG_REF }}
path: vcpkg
- name: Set SedonaDB dev version
shell: bash
run: |
# Set the unique development version anywhere except a release branch
if [[ "${GITHUB_REF##*/}" =~ ^branch-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
version="${GITHUB_REF##*/branch-}"
echo "${version}"
else
python ci/scripts/set_dev_version.py
fi
- name: Build and test wheels (sedonadb)
run: |
cd ci/scripts
./wheels-build-macos.sh sedonadb
env:
VCPKG_ROOT: ${{ github.workspace }}/vcpkg
CIBW_TEST_REQUIRES: pytest adbc_driver_manager geoarrow-pyarrow geopandas duckdb
CIBW_TEST_COMMAND: pytest {package}/tests -vv
SEDONADB_MACOS_ARCH: x86_64
- uses: actions/upload-artifact@v7
with:
name: release-wheels-macOS-amd64
path: python/sedonadb/dist/*.whl
wheels-linux:
name: ${{ matrix.config.label }}
runs-on: ${{ matrix.config.os }}
strategy:
matrix:
config:
- {os: "ubuntu-latest", label: "linux-x86_64", arch: "x86_64"}
- {os: "ubuntu-24.04-arm", label: "linux-arm64", arch: "aarch64"}
steps:
- uses: actions/checkout@v6
with:
submodules: 'true'
fetch-depth: 0
- uses: actions/setup-python@v6
with:
python-version: "3.13"
- name: Install cibuildwheel
run: python -m pip install cibuildwheel==3.1.4
- name: Set SedonaDB dev version
shell: bash
run: |
# Set the unique development version anywhere except a release branch
if [[ "${GITHUB_REF##*/}" =~ ^branch-[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
version="${GITHUB_REF##*/branch-}"
echo "${version}"
else
python ci/scripts/set_dev_version.py
fi
- name: Build and test wheels (sedonadb)
run: |
cd ci/scripts
./wheels-build-linux.sh ${{ matrix.config.arch }} sedonadb
env:
CIBW_SKIP: "*musllinux*"
CIBW_TEST_REQUIRES: pytest adbc_driver_manager geoarrow-pyarrow geopandas duckdb
CIBW_TEST_COMMAND: pytest {package}/tests -vv
- uses: actions/upload-artifact@v7
with:
name: release-wheels-${{ matrix.config.label }}
path: python/sedonadb/dist/*.whl
upload_nightly:
needs: ["wheels-linux", "macOS-arm64", "macOS-amd64", "windows-x86_64"]
name: Upload nightly packages
runs-on: "macos-latest"
steps:
- uses: actions/download-artifact@v8
with:
pattern: release-*
merge-multiple: true
path: dist
- name: Install gemfury client
run: |
brew tap gemfury/tap
brew install fury-cli
fury --version
- name: Upload packages to Gemfury
if: github.repository == 'apache/sedona-db' && github.ref == 'refs/heads/main'
shell: bash
run: |
fury push \
--api-token=${GEMFURY_PUSH_TOKEN} \
--as="sedona-nightlies" \
dist/*
env:
GEMFURY_PUSH_TOKEN: ${{ secrets.GEMFURY_PUSH_TOKEN }}