Skip to content

feat(python): support python 3.13 #25851

feat(python): support python 3.13

feat(python): support python 3.13 #25851

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 uv
uses: astral-sh/[email protected]
with:
enable-cache: true
- 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 numpy/pandas/pyarrow
if: matrix.pyarrow
run: pip install numpy pandas pyarrow pyarrow-hotfix
- name: check imports
if: matrix.pyarrow
run: python -c 'import numpy, pandas, 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 "--extra visualization --extra decompiler" -m "'core or benchmark'" --numprocesses auto -rfEs
- name: run all core tests and run benchmarks once serial
if: matrix.os == 'windows-latest'
run: just ci-check "--extra visualization --extra decompiler" -m "'core or benchmark'" -rfEs
- name: upload code coverage
if: success()
continue-on-error: true
uses: codecov/codecov-action@v5
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 uv
uses: astral-sh/[email protected]
with:
enable-cache: true
- 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: check shapely and duckdb imports
run: uv run --extra duckdb --extra geospatial 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 uv
uses: astral-sh/[email protected]
with:
enable-cache: true
- uses: extractions/setup-just@v2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: run doctests
run: just doctest --junitxml=junit.xml --cov=ibis --cov-report=xml:coverage.xml
- name: check for dead fixtures
run: uv run --all-extras --group tests pytest --dead-fixtures -m 'not flink'
- name: upload code coverage
if: success()
continue-on-error: true
uses: codecov/codecov-action@v5
with:
flags: core,doctests,${{ runner.os }},python-${{ steps.install_python.outputs.python-version }}
token: ${{ secrets.CODECOV_TOKEN }}