Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
7e722aa
migrate to version 1.1.0
wenming21 Oct 2, 2025
6787477
Merge pull request #1 from wenming21/dev
wenming21 Oct 2, 2025
7c1bde1
Add files via upload
wenming21 Oct 2, 2025
be10775
Merge pull request #2 from wenming21/dev
wenming21 Oct 2, 2025
a108aa8
Remove the cache and add support for Python 3.14
wenming21 Oct 2, 2025
2454b63
add support for python 3.14
wenming21 Oct 2, 2025
a60633e
Remove the cache
wenming21 Oct 2, 2025
31c2ee0
Update test.yml
wenming21 Oct 2, 2025
3cccc7d
Add files via upload
wenming21 Oct 2, 2025
04a4eaa
fix build errors
wenming21 Oct 2, 2025
2fd5261
modify lib.rs
wenming21 Oct 2, 2025
3bcb608
Update lib.rs
wenming21 Oct 2, 2025
5b5df2b
Update Cargo.toml
wenming21 Oct 2, 2025
81ab8c4
Add support for Python 3.14
wenming21 Oct 2, 2025
e9ce81d
Add files via upload
wenming21 Oct 2, 2025
e92c818
Add support for Python 3.14
wenming21 Oct 2, 2025
7ef6737
Delete .github/workflows/workflows directory
wenming21 Oct 2, 2025
5827626
Add support for Python 3.14
wenming21 Oct 2, 2025
a5626d0
Add support for Python 3.14
wenming21 Oct 2, 2025
b53ab2a
Add support for Python 3.14
wenming21 Oct 2, 2025
c55cb3b
Delete .github/workflows/CI.yml
wenming21 Oct 2, 2025
297fceb
Delete .github/workflows/test.yml
wenming21 Oct 2, 2025
019f83d
Delete .github/workflows directory
wenming21 Oct 2, 2025
707c8d9
Add support for Python 3.14
wenming21 Oct 2, 2025
d320023
Delete github/workflows directory
wenming21 Oct 2, 2025
6371daf
Create .github
wenming21 Oct 2, 2025
8257b5d
Delete .github
wenming21 Oct 2, 2025
3367208
Merge branch 'main' into dev
wenming21 Oct 2, 2025
cb8a86f
Add support for Python 3.14
wenming21 Oct 2, 2025
ebcfd99
Add support for Python 3.14
wenming21 Oct 2, 2025
2c3df8c
Add support for Python 3.14
wenming21 Oct 2, 2025
2e5d136
Add support for Python 3.14 and pypy3.11
wenming21 Oct 5, 2025
a4066a9
fix some problems
wenming21 Oct 5, 2025
994e659
Optimize windows workflow
wenming21 Oct 6, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
220 changes: 160 additions & 60 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
# This file is autogenerated by maturin v1.8.6
# This file is autogenerated by maturin>=v1.9.4,<2.0
# To update, run
#
# maturin generate-ci github
#
# After all Python versions are installed, the --find-interpreter parameter of maturin build still fails to
# find all Python versions, resulting in some Python versions not being built. Therefore, the -i parameter
# is needed to manually specify Python versions.
#

name: CI

on:
Expand All @@ -19,144 +24,239 @@ permissions:
contents: read

jobs:
linux:
# Setup Python Environments Jobs
# These jobs will set up the Python environments for the other jobs to use.
setup-python-linux:
name: Setup Python Environments (Linux)
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: x86_64
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: x86
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: aarch64
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: armv7
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: s390x
- runner: ubuntu-22.04
- runner: ubuntu-latest
target: ppc64le
python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "pypy3.9", "pypy3.10", "pypy3.11" ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: 3.x
- name: Build wheels
python-version: ${{ matrix.python-version }}
allow-prereleases: true

setup-python-windows:
name: Setup Python Environments (Windows)
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: windows-latest
target: x64 # 64-bit Python interpreter, note that 32-bit Python interpreter is not supported on Windows x86
# Other Python versions need to be installed separately to build correctly
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"]
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.platform.target }}
allow-prereleases: true

setup-python-macos:
name: Setup Python Environments (macOS)
runs-on: ${{ matrix.platform.runner }}
strategy:
matrix:
platform:
- runner: macos-latest
target: x86_64
- runner: macos-latest
target: aarch64
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "pypy3.9", "pypy3.10", "pypy3.11" ]
steps:
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true

# Build Jobs
# These jobs will build the wheels for all Python versions and upload them as artifacts.
linux:
runs-on: ubuntu-latest
needs: setup-python-linux
strategy:
matrix:
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le]
steps:
- uses: actions/checkout@v5

- name: Build wheels for all Python versions
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
target: ${{ matrix.target }}
args: |
--release
--out target/wheels
-i python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14 pypy3.9 pypy3.10 pypy3.11
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: auto

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.platform.target }}
path: dist
name: wheels-linux-${{ matrix.target }}
path: target/wheels

musllinux:
runs-on: ${{ matrix.platform.runner }}
runs-on: ubuntu-latest
needs: setup-python-linux
strategy:
matrix:
platform:
- runner: ubuntu-22.04
target: x86_64
- runner: ubuntu-22.04
target: x86
- runner: ubuntu-22.04
target: aarch64
- runner: ubuntu-22.04
target: armv7
target: [x86_64, x86, aarch64, armv7]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
- uses: actions/checkout@v5

- name: Build wheels for all Python versions
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
target: ${{ matrix.target }}
args: |
--release
--out target/wheels
-i python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14 pypy3.9 pypy3.10 pypy3.11
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
manylinux: musllinux_1_2

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-musllinux-${{ matrix.platform.target }}
path: dist
name: wheels-musllinux-${{ matrix.target }}
path: target/wheels

windows:
runs-on: ${{ matrix.platform.runner }}
needs: setup-python-windows
strategy:
matrix:
platform:
- runner: windows-latest
target: x64
- runner: windows-latest
target: x86
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
- uses: actions/checkout@v5

- name: Install Python3.8、3.14 and multiple PyPy version
uses: actions/setup-python@v6
with:
python-version: 3.x
python-version: |
3.8
3.14
pypy3.9
pypy3.10
pypy3.11
architecture: ${{ matrix.platform.target }}
- name: Build wheels
allow-prereleases: true

- name: Set PyPy paths
shell: pwsh
run: |
$PYPY_PATHS = @()
$versions = @("3.9", "3.10", "3.11")

foreach ($version in $versions) {
$command = "pypy$version"
$pypyCommand = Get-Command $command -ErrorAction SilentlyContinue
if ($pypyCommand) {
$path = "$($pypyCommand.Source)"
$PYPY_PATHS += $path
Write-Host "Found PyPy$version : $path"
} else {
Write-Host "PyPy$version not found"
}
}

$PYPY_PATHS_STRING = $PYPY_PATHS -join " "
Write-Host "All PyPy paths: $PYPY_PATHS_STRING"
echo "PYPY_PATHS=$PYPY_PATHS_STRING" >> $env:GITHUB_ENV

- name: Build wheels for all Python versions
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
args: |
--release
--out target/wheels
-i python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14
-i ${{ env.PYPY_PATHS }}

sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.platform.target }}
path: dist
path: target/wheels


macos:
runs-on: ${{ matrix.platform.runner }}
runs-on: ${{ matrix.runner }}
needs: setup-python-macos
strategy:
matrix:
platform:
- runner: macos-13
include:
- runner: macos-latest
target: x86_64
- runner: macos-14
- runner: macos-latest
target: aarch64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: 3.x
- name: Build wheels
- uses: actions/checkout@v5

- name: Build wheels for all Python versions
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.platform.target }}
args: --release --out dist --find-interpreter
target: ${{ matrix.target }}
args: |
--release
--out target/wheels
-i python3.8 python3.9 python3.10 python3.11 python3.12 python3.13 python3.14 pypy3.9 pypy3.10 pypy3.11
sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}

- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.platform.target }}
path: dist
name: wheels-macos-${{ matrix.target }}
path: target/wheels

sdist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
command: sdist
args: --out dist
args: --out target/wheels
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: dist
path: target/wheels

release:
name: Release
runs-on: ubuntu-latest
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }}
if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch'}}
needs: [linux, musllinux, windows, macos, sdist]
permissions:
# Use to sign the release artifacts
Expand Down
43 changes: 36 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,50 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, macos-latest ]
python-version: [ "3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "pypy3.9", "pypy3.10" ]
os: [ ubuntu-latest, macos-latest, windows-latest ]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "pypy3.9", "pypy3.10", "pypy3.11" ]
include:
- os: ubuntu-latest
python-version: "3.14"
allow-failure: true
- os: macos-latest
python-version: "3.14"
allow-failure: true
- os: windows-latest
python-version: "3.14"
allow-failure: true
continue-on-error: ${{ matrix.allow-failure || false }}
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v6
with:
python-version: ${{ matrix.python-version }}
allow-prereleases: true
cache: pip
cache-dependency-path: pyproject.toml
- name: Create virtualenv and install package
shell: bash
run: |
python -m venv env
source env/bin/activate
pip install --upgrade pip setuptools wheel maturin pytest virtualenv
if [[ "${{ matrix.python-version }}" == "pypy3.11" ]]; then
echo "Skipping pip upgrade for PyPy3.11"
else
python -m pip install --upgrade pip
fi
if [ "$RUNNER_OS" == "Windows" ]; then
source env/Scripts/activate
else
source env/bin/activate
fi
pip install -U setuptools wheel maturin pytest virtualenv
maturin develop --release
- name: Test
shell: bash
run: |
source env/bin/activate
if [ "$RUNNER_OS" == "Windows" ]; then
source env/Scripts/activate
else
source env/bin/activate
fi
python -m pytest
Loading
Loading