Skip to content

Release 1.1.6

Release 1.1.6 #84

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- '*'
workflow_dispatch:
pull_request:
permissions:
contents: read
concurrency:
group: ci-${{ github.ref_name }}
cancel-in-progress: true
jobs:
lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install pre-commit
name: Install pre-commit
- run: pre-commit run --all
name: Run pre-commit checks
test:
strategy:
matrix:
os: [ubuntu-22.04, macos-13, windows-latest ]
python_version: ['3.7', '3.8', '3.9', '3.10', '3.11', '3.12', '3.13', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10']
exclude:
- python_version: 3.7
os: macos-13
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
allow-prereleases: true
- name: Setup dependencies
run: pip install pytest
- name: Install mkcert (Linux)
if: matrix.os == 'ubuntu-22.04'
run: sudo apt-get install mkcert
- name: Install mkcert (MacOS)
if: matrix.os == 'macos-12'
run: brew install mkcert
- name: Inject fake CA in TrustStore
if: matrix.os == 'macos-12' || matrix.os == 'ubuntu-22.04'
run: mkcert -install
- name: Generate a valid certificate
if: matrix.os == 'macos-12' || matrix.os == 'ubuntu-22.04'
run: mkcert example.test
- name: Build wheels (Unix, Linux)
if: matrix.os != 'windows-latest'
uses: PyO3/maturin-action@v1
with:
args: --release --out dist --interpreter ${{ matrix.python_version }}
sccache: 'true'
manylinux: auto
- name: Build wheels (NT)
if: matrix.os == 'windows-latest'
uses: PyO3/maturin-action@v1
with:
args: --release --out dist
sccache: 'true'
target: x64
- run: pip install --find-links=./dist wassima
name: Install built package
- name: Ensure test target (NT)
if: matrix.os == 'windows-latest'
run: Remove-Item -Path wassima -Force -Recurse
- name: Ensure test target (Linux, Unix)
if: matrix.os != 'windows-latest'
run: rm -fR wassima
- run: pytest tests/
name: Run tests
linux:
runs-on: ubuntu-22.04
needs:
- test
- lint
strategy:
fail-fast: false
matrix:
target: [x86_64, x86, aarch64, armv7, s390x, ppc64le, ppc64, i686]
python_version: ['3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10']
manylinux: ['auto', 'musllinux_1_1']
exclude:
- manylinux: musllinux_1_1
target: s390x
- manylinux: musllinux_1_1
target: ppc64
- manylinux: musllinux_1_1
target: ppc64le
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter ${{ matrix.python_version }}
sccache: 'true'
manylinux: ${{ matrix.manylinux }}
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
windows:
needs:
- test
- lint
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [x64, aarch64]
python_version: ['3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10']
exclude:
- target: aarch64
python_version: 'pypy-3.7'
- target: aarch64
python_version: 'pypy-3.8'
- target: aarch64
python_version: 'pypy-3.9'
- target: aarch64
python_version: 'pypy-3.10'
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
architecture: x64
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
macos:
needs:
- test
- lint
runs-on: macos-13
strategy:
fail-fast: false
matrix:
target: [x86_64, aarch64, universal2]
python_version: ['3.10', 'pypy-3.7', 'pypy-3.8', 'pypy-3.9', 'pypy-3.10']
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python_version }}
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter ${{ matrix.python_version }}
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
freethreaded_macos:
needs: macos
strategy:
matrix:
target: [x86_64, aarch64, universal2]
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- name: Install Python FreeThreaded
run: |
curl -O https://www.python.org/ftp/python/3.13.0/python-3.13.0-macos11.pkg
cat > ./choicechanges.plist <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>attributeSetting</key>
<integer>1</integer>
<key>choiceAttribute</key>
<string>selected</string>
<key>choiceIdentifier</key>
<string>org.python.Python.PythonTFramework-3.13</string>
</dict>
</array>
</plist>
EOF
sudo installer -pkg ./python-3.13.0-macos11.pkg \
-applyChoiceChangesXML ./choicechanges.plist \
-target /
rm -f python-3.13.0-macos11.pkg
- run: git apply -f freethreaded.patch
name: Make Wassima FreeThreaded Capable
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter 3.13t
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
freethreaded_linux:
needs: linux
strategy:
matrix:
target: [x86_64, aarch64]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: deadsnakes/[email protected]
with:
python-version: 3.13
nogil: true
- run: git apply -f freethreaded.patch
name: Make Wassima FreeThreaded Capable
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist --interpreter 3.13t
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
freethreaded_windows:
needs: windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [ x64, aarch64 ]
steps:
- uses: actions/checkout@v4
- name: Install Python FreeThreaded
shell: pwsh
run: |
$pythonInstallerUrl = "https://www.python.org/ftp/python/3.13.0/python-3.13.0-amd64.exe"
Invoke-WebRequest $pythonInstallerUrl -OutFile setup-python.exe
Start-Process "setup-python.exe" -argumentlist "/quiet PrependPath=1 TargetDir=C:\Python313 Include_freethreaded=1" -wait
C:\Python313\python3.13t.exe -m pip install -r requirements.txt
C:\Python313\python3.13t.exe -c "import sys; print(sys._is_gil_enabled())"
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
target: ${{ matrix.target }}
args: --release --out dist
sccache: 'true'
- name: Upload wheels
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist
sdist:
needs:
- test
- lint
runs-on: ubuntu-22.04
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@v3
with:
name: wheels
path: dist
universal:
needs:
- test
- lint
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install dependencies
run: python -m pip install build wheel
- name: Use fallback pyproject.toml
run: rm -f pyproject.toml && mv pyproject.fb.toml pyproject.toml
- name: Build fallback wheel
run: python -m build
- name: Upload sdist
uses: actions/upload-artifact@v3
with:
name: wheels
path: dist/*.whl
checksum:
name: compute hashes
runs-on: ubuntu-22.04
needs: [linux, windows, macos, sdist, universal, freethreaded_linux, freethreaded_macos, freethreaded_windows]
if: "startsWith(github.ref, 'refs/tags/')"
outputs:
hashes: ${{ steps.compute.outputs.hashes }}
steps:
- uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0
- name: Download distributions
uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
with:
name: wheels
path: dist
- name: Collected dists
run: |
tree dist
- name: Generate hashes
id: compute # needs.checksum.outputs.hashes
working-directory: ./dist
run: echo "hashes=$(sha256sum * | base64 -w0)" >> $GITHUB_OUTPUT
provenance:
needs: checksum
if: "startsWith(github.ref, 'refs/tags/')"
uses: slsa-framework/slsa-github-generator/.github/workflows/[email protected]
permissions:
actions: read
id-token: write
contents: write
with:
base64-subjects: ${{ needs.checksum.outputs.hashes }}
upload-assets: true
compile-generator: true
release:
name: release
runs-on: ubuntu-22.04
if: "startsWith(github.ref, 'refs/tags/')"
needs: provenance
environment: pypi
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v3
with:
name: wheels
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
with:
command: upload
args: --non-interactive --skip-existing *