Skip to content

Commit aa538b4

Browse files
committed
add freethreaded python wheels, 3.14 support, modernize ci
1 parent 42dfdca commit aa538b4

File tree

2 files changed

+93
-74
lines changed

2 files changed

+93
-74
lines changed

.github/workflows/build.yaml

Lines changed: 65 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ jobs:
1515
matrix:
1616
target: [x86_64, i686, aarch64]
1717
steps:
18-
- uses: actions/checkout@v3
18+
- uses: actions/checkout@v4
1919
- uses: PyO3/maturin-action@v1
2020
with:
2121
target: ${{ matrix.target }}
2222
maturin-version: latest
2323
command: build
2424
manylinux: auto
25-
args: --release --sdist -i 3.7 3.8 3.9 3.10 3.11 3.12 3.13
25+
args: --release --sdist -i 3.9 3.10 3.11 3.12 3.13 3.13t 3.14 3.14t
2626
- uses: actions/upload-artifact@v4
2727
with:
2828
name: linux-wheels-${{ matrix.target }}
@@ -34,95 +34,102 @@ jobs:
3434
matrix:
3535
include:
3636
- os: macos-13
37-
python-version: 3.7
38-
- os: macos-latest
39-
python-version: 3.8
37+
target: x86_64-apple-darwin
38+
python-version: "3.9"
39+
- os: macos-13
40+
target: x86_64-apple-darwin
41+
python-version: "3.10"
42+
- os: macos-13
43+
target: x86_64-apple-darwin
44+
python-version: "3.11"
45+
- os: macos-13
46+
target: x86_64-apple-darwin
47+
python-version: "3.12"
48+
- os: macos-13
49+
target: x86_64-apple-darwin
50+
python-version: "3.13"
51+
- os: macos-13
52+
target: x86_64-apple-darwin
53+
python-version: "3.13t"
54+
- os: macos-13
55+
target: x86_64-apple-darwin
56+
python-version: "3.14"
57+
- os: macos-13
58+
target: x86_64-apple-darwin
59+
python-version: "3.14t"
4060
- os: macos-latest
41-
python-version: 3.9
61+
target: aarch64-apple-darwin
62+
python-version: "3.9"
4263
- os: macos-latest
64+
target: aarch64-apple-darwin
4365
python-version: "3.10"
4466
- os: macos-latest
67+
target: aarch64-apple-darwin
4568
python-version: "3.11"
4669
- os: macos-latest
70+
target: aarch64-apple-darwin
4771
python-version: "3.12"
4872
- os: macos-latest
73+
target: aarch64-apple-darwin
4974
python-version: "3.13"
75+
- os: macos-latest
76+
target: aarch64-apple-darwin
77+
python-version: "3.13t"
78+
- os: macos-latest
79+
target: aarch64-apple-darwin
80+
python-version: "3.14"
81+
- os: macos-latest
82+
target: aarch64-apple-darwin
83+
python-version: "3.14t"
5084
steps:
51-
- uses: actions/checkout@v1
52-
- uses: actions-rs/toolchain@v1
53-
with:
54-
toolchain: nightly
55-
default: true
56-
- uses: actions/setup-python@v2
85+
- uses: actions/checkout@v4
86+
- uses: actions/setup-python@v5
5787
with:
5888
python-version: ${{ matrix.python-version }}
59-
- name: Build wheels for Python 3.7
60-
if: matrix.python-version == '3.7'
61-
run: |
62-
rustup target add aarch64-apple-darwin
63-
python3 -m pip install maturin
64-
maturin build --release --target universal2-apple-darwin
65-
- name: Build wheels for other Python versions
66-
if: matrix.python-version != '3.7'
67-
run: |
68-
python3 -m pip install maturin
69-
maturin build --release
89+
allow-prereleases: true
90+
- uses: PyO3/maturin-action@v1
91+
with:
92+
target: ${{ matrix.target }}
93+
maturin-version: latest
94+
command: build
95+
args: --release
7096
- uses: actions/upload-artifact@v4
7197
with:
72-
name: osx-${{ matrix.python-version }}-wheel
73-
path: target/wheels
98+
name: osx-${{ matrix.target }}-${{ matrix.python-version }}-wheel
99+
path: target/wheels/
74100

75101
windows-wheels:
76102
runs-on: windows-latest
77103
strategy:
78104
matrix:
79-
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12", "3.13"]
105+
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.13t", "3.14", "3.14t"]
80106
steps:
81-
- uses: actions/checkout@v1
82-
- uses: actions-rs/toolchain@v1
83-
with:
84-
toolchain: nightly
85-
default: true
86-
- uses: actions/setup-python@v2
107+
- uses: actions/checkout@v4
108+
- uses: actions/setup-python@v5
87109
with:
88110
python-version: ${{ matrix.python-version }}
89-
- name: Build wheels
90-
run: |
91-
python -m pip install maturin
92-
maturin build --release
111+
allow-prereleases: true
112+
- uses: PyO3/maturin-action@v1
113+
with:
114+
maturin-version: latest
115+
command: build
116+
args: --release
93117
- uses: actions/upload-artifact@v4
94118
with:
95119
name: windows-${{ matrix.python-version }}-wheel
96-
path: target/wheels
120+
path: target/wheels/
97121

98122
collect-wheels:
99123
needs: [osx-wheels, windows-wheels, linux-wheels]
100124
runs-on: ubuntu-latest
101125
steps:
102-
- uses: actions/checkout@v2
103126
- uses: actions/download-artifact@v4
127+
with:
128+
path: wheels/
129+
merge-multiple: true
104130

105131
- name: Display structure of downloaded files
106-
run: ls -R
107-
108-
- run: mkdir wheels
109-
- run: mv ./linux-wheels-x86_64/* wheels
110-
- run: mv ./linux-wheels-i686/* wheels
111-
- run: mv ./linux-wheels-aarch64/* wheels
112-
- run: mv ./osx-3.13-wheel/* wheels
113-
- run: mv ./osx-3.12-wheel/* wheels
114-
- run: mv ./osx-3.11-wheel/* wheels
115-
- run: mv ./osx-3.10-wheel/* wheels
116-
- run: mv ./osx-3.9-wheel/* wheels
117-
- run: mv ./osx-3.8-wheel/* wheels
118-
- run: mv ./osx-3.7-wheel/* wheels
119-
- run: mv ./windows-3.13-wheel/* wheels
120-
- run: mv ./windows-3.12-wheel/* wheels
121-
- run: mv ./windows-3.11-wheel/* wheels
122-
- run: mv ./windows-3.10-wheel/* wheels
123-
- run: mv ./windows-3.9-wheel/* wheels
124-
- run: mv ./windows-3.8-wheel/* wheels
125-
- run: mv ./windows-3.7-wheel/* wheels
132+
run: ls -R wheels/
126133

127134
- name: Upload wheels as artifact
128135
uses: actions/upload-artifact@v4

.github/workflows/ci.yml

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,41 @@ jobs:
1212
lint:
1313
runs-on: ubuntu-latest
1414
steps:
15-
- name: Checkout
16-
uses: actions/checkout@v1
15+
- uses: actions/checkout@v4
1716

18-
- name: Install rust toolchain
19-
uses: actions-rs/toolchain@v1
17+
- uses: dtolnay/rust-toolchain@stable
2018
with:
21-
toolchain: stable
22-
override: true
2319
components: rustfmt, clippy
2420

2521
- name: Lint with rustfmt
26-
uses: actions-rs/cargo@v1
27-
with:
28-
command: fmt
22+
run: cargo fmt -- --check
2923

3024
- name: Lint with clippy
31-
uses: actions-rs/cargo@v1
32-
with:
33-
command: clippy
34-
args: --all-targets --all-features
25+
run: cargo clippy --all-targets --all-features
3526

3627
- name: Test with cargo
37-
uses: actions-rs/cargo@v1.0.1
28+
run: cargo test
29+
30+
test:
31+
runs-on: ubuntu-latest
32+
strategy:
33+
matrix:
34+
python-version: ["3.9", "3.12", "3.13", "3.13t", "3.14", "3.14t"]
35+
steps:
36+
- uses: actions/checkout@v4
37+
38+
- uses: dtolnay/rust-toolchain@stable
39+
40+
- uses: actions/setup-python@v5
3841
with:
39-
command: test
40-
toolchain: stable
42+
python-version: ${{ matrix.python-version }}
43+
allow-prereleases: true
44+
45+
- name: Install uv
46+
uses: astral-sh/setup-uv@v6
47+
48+
- name: Build and test
49+
run: |
50+
uv sync
51+
uv run maturin develop --release
52+
uv run pytest tests/test_sqloxide.py -v

0 commit comments

Comments
 (0)