Skip to content

feat(pyarrow): support __arrow_c_schema__ on ibis.Schema objects #22956

feat(pyarrow): support __arrow_c_schema__ on ibis.Schema objects

feat(pyarrow): support __arrow_c_schema__ on ibis.Schema objects #22956

Workflow file for this run

name: Ibis
on:
push:
# Skip the test suite if all changes are in the docs directory
paths-ignore:
- "docs/**"
- "**/*.md"
- "**/*.qmd"
- ".envrc"
branches:
- main
- "*.x.x"
pull_request:
# Skip the test suite if all changes are in the docs directory
paths-ignore:
- "docs/**"
- "**/*.md"
- "**/*.qmd"
- ".envrc"
branches:
- main
- "*.x.x"
merge_group:
permissions:
contents: read
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
env:
FORCE_COLOR: "1"
SQLALCHEMY_WARN_20: "1"
HYPOTHESIS_PROFILE: "ci"
jobs:
test_core:
name: Test ${{ matrix.os }} python-${{ matrix.python-version }} pyarrow-${{ matrix.pyarrow }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
python-version:
- "3.10"
- "3.11"
- "3.12"
pyarrow:
- true
- false
steps:
- name: checkout
uses: actions/checkout@v4
- name: install python
uses: actions/setup-python@v5
id: install_python
with:
python-version: ${{ matrix.python-version }}
- name: install poetry
run: pip install 'poetry==1.8.3'
- name: install ${{ matrix.os }} system dependencies
if: matrix.os == 'ubuntu-latest'
run: |
set -euo pipefail
sudo apt-get update -y -qq
sudo apt-get install -y -q build-essential graphviz libgeos-dev freetds-dev
- name: install ${{ matrix.os }} system dependencies
if: matrix.os == 'windows-latest'
run: choco install graphviz
- name: install ibis
run: poetry install --without dev --without docs --extras "visualization decompiler"
- name: install pyarrow
if: matrix.pyarrow
run: poetry run pip install pyarrow pyarrow-hotfix
- name: check pyarrow import
if: matrix.pyarrow
run: poetry run python -c 'import pyarrow, pyarrow_hotfix'
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: run all core tests and run benchmarks once parallel
if: matrix.os != 'windows-latest'
run: just ci-check -m "'core or benchmarks'" --numprocesses auto -rs
- name: run all core tests and run benchmarks once serial
if: matrix.os == 'windows-latest'
run: just ci-check -m "'core or benchmarks'" -rs
- name: upload code coverage
if: success()
continue-on-error: true
uses: codecov/codecov-action@v4
with:
flags: core,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}
test_shapely_duckdb_import:
name: Test shapely and duckdb import
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
- name: install python
uses: actions/setup-python@v5
id: install_python
with:
python-version: "3.12"
- name: install poetry
run: pip install 'poetry==1.8.3'
- name: install system dependencies
run: |
set -euo pipefail
sudo apt-get update -y -qq
sudo apt-get install -y -q build-essential libgeos-dev
- name: install ibis
# install duckdb and geospatial because of https://github.com/ibis-project/ibis/issues/4856
run: poetry install --without dev --without docs --without test --extras duckdb --extras geospatial
- name: check shapely and duckdb imports
run: poetry run python -c 'import shapely.geometry, duckdb'
test_doctests:
name: Doctests
runs-on: ubuntu-latest
steps:
- name: install system dependencies
run: |
set -euo pipefail
sudo apt-get update -y -q
sudo apt-get install -y -q build-essential graphviz libgeos-dev freetds-dev unixodbc-dev
- name: checkout
uses: actions/checkout@v4
- name: install python
uses: actions/setup-python@v5
id: install_python
with:
python-version: "3.10"
- name: install poetry
run: pip install 'poetry==1.8.3'
- name: install ibis with all extras
run: poetry install --without dev --without docs --all-extras
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: run doctests
run: just ci-doctest --junitxml=junit.xml --cov=ibis --cov-report=xml:coverage.xml
- name: upload code coverage
if: success()
continue-on-error: true
uses: codecov/codecov-action@v4
with:
flags: core,doctests,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}