Skip to content

Commit

Permalink
ci: pytest github workflow
Browse files Browse the repository at this point in the history
  • Loading branch information
nmammeri committed Jun 8, 2024
1 parent 2156b61 commit 6dc8eb8
Show file tree
Hide file tree
Showing 4 changed files with 189 additions and 8 deletions.
177 changes: 177 additions & 0 deletions .github/workflows/release_pyton_pytest.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# This file is autogenerated by maturin v1.5.1
# To update, run
#
# maturin generate-ci github -o ../../.github/workflows/release_pyton_pytest.yml --pytest
#
name: CI

on:
push:
branches:
- main
- master
tags:
- '*'
pull_request:
workflow_dispatch:

permissions:
contents: read

jobs:
linux:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-latest
target: x86
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-latest
target: s390x
- runner: ubuntu-latest
target: ppc64le
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
sccache: 'true'
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ startsWith(matrix.platform.target, 'x86_64') }}
shell: bash
run: |
set -e
pip install extract-rs --find-links dist --force-reinstall
pip install pytest
pytest
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' }}
uses: uraimo/[email protected]
with:
arch: ${{ matrix.platform.target }}
distro: ubuntu22.04
githubToken: ${{ github.token }}
install: |
apt-get update
apt-get install -y --no-install-recommends python3 python3-pip
pip3 install -U pip pytest
run: |
set -e
pip3 install extract-rs --find-links dist --force-reinstall
pytest
windows:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
architecture: ${{ matrix.platform.target }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
shell: bash
run: |
set -e
pip install extract-rs --find-links dist --force-reinstall
pip install pytest
pytest
macos:
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-latest
target: x86_64
- runner: macos-14
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist
- name: pytest
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }}
shell: bash
run: |
set -e
pip install extract-rs --find-links dist --force-reinstall
pip install pytest
pytest
sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist

release:
name: Release
runs-on: ubuntu-latest
if: "startsWith(github.ref, 'refs/tags/')"
needs: [linux, windows, macos, sdist]
steps:
- uses: actions/download-artifact@v4
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
with:
command: upload
args: --non-interactive --skip-existing wheels-*/*
6 changes: 3 additions & 3 deletions bindings/python/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@ crate-type = ["cdylib"]
doc = false

[dependencies]
# "abi3-py311" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.11
pyo3 = { version = "0.21.2", features = ["abi3", "abi3-py310"] }
extract-rs = { path = "../../extract-rs" }
# "abi3-py38" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.11
pyo3 = { version = "0.21.2", features = ["abi3", "abi3-py38"] }
extract-rs = { path = "../../extract-core" }
7 changes: 3 additions & 4 deletions bindings/python/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,7 @@ pip install extract-rs
extract pdf example:

```python
import extractrs
from extractrs import extract

elements = extractrs.extract_pdf("/tmp/test.txt")
print(elements)
```
extract("/tmp/test.pdf")
```
7 changes: 6 additions & 1 deletion bindings/python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ description = "extract-rs Python Binding"
license = { text = "Apache-2.0" }
readme = "README.md"
# PyO3 doesn't support python 3.13 yet.
requires-python = ">=3.10, < 3.13"
requires-python = ">=3.8, < 3.13"


[project.urls]
Expand All @@ -22,7 +22,12 @@ Homepage = "https://extract-rs.yobix.ai/"
Repository = "https://github.com/yobix-ai/extract-rs"

[tool.maturin]
# -------------- Cargo options --------------
# Build artifacts with the specified Cargo profile
profile = "release"
# "extension-module" tells pyo3 we want to build an extension module (skips linking against libpython.so)
features = ["pyo3/extension-module"]
# -------------- Cargo options --------------

module-name = "extractrs._extractrs"
python-source = "python"

0 comments on commit 6dc8eb8

Please sign in to comment.