Skip to content

Use Narwhals to support Polars and Modin DataFrames #1191

Use Narwhals to support Polars and Modin DataFrames

Use Narwhals to support Polars and Modin DataFrames #1191

name: CI
on:
push:
paths-ignore:
- 'CHANGELOG.md'
branches: [main]
pull_request:
branches: [main]
schedule:
- cron: '0 11 * * 4'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
- uses: pre-commit/[email protected]
codeql:
runs-on: ubuntu-latest
permissions:
security-events: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Initialize CodeQL
uses: github/codeql-action/init@v3
with:
languages: python, javascript
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3
pytest:
name: >
${{ matrix.python-version }}
${{ matrix.pandas-version && format('(pandas {0})', matrix.pandas-version)}}
${{ matrix.numpy-version && format('(numpy {0})', matrix.numpy-version)}}
${{ matrix.modifiers}}
strategy:
fail-fast: false
matrix:
python-version: [3.8, 3.9, "3.10", "3.11", "3.12", "3.13"]
pandas-version: ['']
numpy-version: ['']
include:
- python-version: 3.9
- python-version: 3.9
pandas-version: '<2.0'
numpy-version: '<2.0'
- python-version: "3.13"
pandas-version: pre
- python-version: "3.12"
- python-version: "3.12"
modifiers: "modin"
- python-version: "3.13"
modifiers: "polars"
- python-version: "3.13"
modifiers: "uninstall_narwhals"
- python-version: "3.13"
modifiers: "uninstall_jinja2"
runs-on: ubuntu-20.04
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install a development version of 'itables'
run: pip install -e .[test]
- name: Install latest pandas
if: ${{!matrix.pandas-version}}
run: pip install pandas
- name: Install pandas pre-release
if: matrix.pandas-version == 'pre'
run: pip install pandas --pre
- name: Install pandas ${{ matrix.pandas-version }}
if: matrix.pandas-version && matrix.pandas-version != 'pre'
run: pip install 'pandas${{ matrix.pandas-version }}'
- name: Install numpy ${{ matrix.numpy-version }}
if: matrix.numpy-version
run: pip install 'numpy${{ matrix.numpy-version }}'
- name: Install polars
if: matrix.modifiers == 'polars'
run: pip install polars
- name: Install modin
if: matrix.modifiers == 'modin'
run: pip install modin[all]
- name: Uninstall narwhals
if: matrix.modifiers == 'uninstall_narwhals'
run: pip uninstall narwhals -y
- name: Uninstall jinja2
if: matrix.modifiers == 'uninstall_jinja2'
run: pip uninstall jinja2 -y
- name: Install shiny
run: pip install "shiny>=1.0"
- name: Install a Jupyter Kernel
run: python -m ipykernel install --name itables --user
- name: Test with pytest
run: pytest --cov=./ --cov-report=xml
- name: Upload coverage
uses: codecov/codecov-action@v3
with:
fail_ci_if_error: true
verbose: true
build:
runs-on: ubuntu-latest
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.11
- name: Install hatch
run : pip install hatch
- name: Build package
run: hatch build