Skip to content

Commit 4025eeb

Browse files
authored
Merge pull request #269 from crate-py/python-3.15
Drop support for 3.10. Add 3.15.
2 parents c53484a + 915e4d2 commit 4025eeb

6 files changed

Lines changed: 369 additions & 431 deletions

File tree

.github/workflows/CI.yml

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -34,48 +34,40 @@ jobs:
3434
- id: noxenvs-matrix
3535
run: |
3636
echo >>$GITHUB_OUTPUT noxenvs=$(
37-
uvx nox --list-sessions --json | jq '[.[].session]'
37+
uvx nox --list-sessions --json | jq '[.[] | {session, python}]'
3838
)
3939
4040
test:
41-
name: Test
41+
name: Test (${{ matrix.session }})
4242
needs: list
4343
runs-on: ubuntu-latest
4444

4545
strategy:
4646
fail-fast: false
4747
matrix:
48-
noxenv: ${{ fromJson(needs.list.outputs.noxenvs) }}
48+
include: ${{ fromJson(needs.list.outputs.noxenvs) }}
4949

5050
steps:
5151
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
5252
with:
5353
persist-credentials: false
5454
- name: Install dependencies
5555
run: sudo apt-get update && sudo apt-get install -y libenchant-2-dev
56-
if: runner.os == 'Linux' && startsWith(matrix.noxenv, 'docs')
56+
if: runner.os == 'Linux' && startsWith(matrix.session, 'docs')
5757
- name: Install dependencies
5858
run: brew install enchant
59-
if: runner.os == 'macOS' && startsWith(matrix.noxenv, 'docs')
59+
if: runner.os == 'macOS' && startsWith(matrix.session, 'docs')
6060
- name: Set up Python
6161
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
6262
with:
63-
python-version: |
64-
3.10
65-
3.11
66-
3.12
67-
3.13
68-
3.13t
69-
3.14
70-
3.14t
71-
pypy3.11
63+
python-version: ${{ matrix.python }}
7264
allow-prereleases: true
7365

7466
- uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
7567
with:
7668
enable-cache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
7769
- name: Run nox
78-
run: uvx nox -s "${{ matrix.noxenv }}" # zizmor: ignore[template-injection]
70+
run: uvx nox -s "${{ matrix.session }}" # zizmor: ignore[template-injection]
7971

8072
manylinux:
8173
name: Build manylinux wheels
@@ -104,20 +96,21 @@ jobs:
10496
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
10597
with:
10698
python-version: |
107-
3.10
10899
3.11
109100
3.12
110101
3.13
111102
3.13t
112103
3.14
113104
3.14t
105+
3.15
106+
3.15t
114107
pypy3.11
115108
allow-prereleases: true
116109
- name: Build wheels
117110
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
118111
with:
119112
target: ${{ matrix.target }}
120-
args: --release --out dist --interpreter '3.10 3.11 3.12 3.13 3.13t 3.14 3.14t pypy3.11'
113+
args: --release --out dist --interpreter '3.11 3.12 3.13 3.13t 3.14 3.14t 3.15 3.15t pypy3.11'
121114
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
122115
manylinux: auto
123116
- name: Upload wheels
@@ -147,20 +140,21 @@ jobs:
147140
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
148141
with:
149142
python-version: |
150-
3.10
151143
3.11
152144
3.12
153145
3.13
154146
3.13t
155147
3.14
156148
3.14t
149+
3.15
150+
3.15t
157151
pypy3.11
158152
allow-prereleases: true
159153
- name: Build wheels
160154
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
161155
with:
162156
target: ${{ matrix.target }}
163-
args: --release --out dist --interpreter '3.10 3.11 3.12 3.13 3.13t 3.14 3.14t pypy3.11'
157+
args: --release --out dist --interpreter '3.11 3.12 3.13 3.13t 3.14 3.14t 3.15 3.15t pypy3.11'
164158
manylinux: musllinux_1_2
165159
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
166160
- name: Upload wheels
@@ -187,18 +181,18 @@ jobs:
187181
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
188182
with:
189183
python-version: |
190-
3.10
191184
3.11
192185
3.12
193186
3.13
194187
3.14
188+
3.15
195189
allow-prereleases: true
196190
architecture: ${{ matrix.target }}
197191
- name: Build wheels
198192
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
199193
with:
200194
target: ${{ matrix.target }}
201-
args: --release --out dist --interpreter '3.10 3.11 3.12 3.13 3.14'
195+
args: --release --out dist --interpreter '3.11 3.12 3.13 3.14 3.15'
202196
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
203197
- name: Upload wheels
204198
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@@ -247,11 +241,17 @@ jobs:
247241
python-version: "3.14"
248242
allow-prereleases: true
249243
architecture: arm64
244+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
245+
id: cp315
246+
with:
247+
python-version: "3.15"
248+
allow-prereleases: true
249+
architecture: arm64
250250
- name: Build wheels
251251
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
252252
with:
253253
target: ${{ matrix.target }}
254-
args: --release --out dist --interpreter ${{ steps.cp311.outputs.python-path }} ${{ steps.cp312.outputs.python-path }} ${{ steps.cp313.outputs.python-path }} ${{ steps.cp314.outputs.python-path }}
254+
args: --release --out dist --interpreter ${{ steps.cp311.outputs.python-path }} ${{ steps.cp312.outputs.python-path }} ${{ steps.cp313.outputs.python-path }} ${{ steps.cp314.outputs.python-path }} ${{ steps.cp315.outputs.python-path }}
255255
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
256256
- name: Upload wheels
257257
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@@ -281,13 +281,14 @@ jobs:
281281
python-version: |
282282
3.13t
283283
3.14t
284+
3.15t
284285
allow-prereleases: true
285286
architecture: ${{ matrix.target }}
286287
- name: Build wheels
287288
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
288289
with:
289290
target: ${{ matrix.target }}
290-
args: --release --out dist --interpreter '3.13t 3.14t'
291+
args: --release --out dist --interpreter '3.13t 3.14t 3.15t'
291292
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
292293
- name: Upload wheels
293294
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
@@ -313,20 +314,21 @@ jobs:
313314
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
314315
with:
315316
python-version: |
316-
3.10
317317
3.11
318318
3.12
319319
3.13
320320
3.13t
321321
3.14
322322
3.14t
323+
3.15
324+
3.15t
323325
pypy3.11
324326
allow-prereleases: true
325327
- name: Build wheels
326328
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
327329
with:
328330
target: ${{ matrix.target }}
329-
args: --release --out dist --interpreter '3.10 3.11 3.12 3.13 3.13t 3.14 3.14t pypy3.11'
331+
args: --release --out dist --interpreter '3.11 3.12 3.13 3.13t 3.14 3.14t 3.15 3.15t pypy3.11'
330332
sccache: ${{ github.ref_type != 'tag' }} # zizmor: ignore[cache-poisoning]
331333
- name: Upload wheels
332334
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1

.readthedocs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version: 2
33
build:
44
os: ubuntu-22.04
55
tools:
6-
python: "3.11"
6+
python: "3.14"
77
rust: "1.70"
88

99
sphinx:

noxfile.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,15 @@
1010
TESTS = ROOT / "tests"
1111

1212
SUPPORTED = [
13-
"3.10",
1413
"3.11",
1514
"pypy3.11",
1615
"3.12",
1716
"3.13",
1817
"3.13t",
1918
"3.14t",
2019
"3.14",
20+
"3.15t",
21+
"3.15",
2122
]
2223
LATEST = SUPPORTED[-1]
2324

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ build-backend = "maturin"
55
[project]
66
name = "rpds-py"
77
description = "Python bindings to Rust's persistent data structures (rpds)"
8-
requires-python = ">=3.10"
8+
requires-python = ">=3.11"
99
readme = "README.rst"
1010
license = "MIT"
1111
license-files = ["LICENSE"]
@@ -18,11 +18,11 @@ classifiers = [
1818
"Intended Audience :: Developers",
1919
"Operating System :: OS Independent",
2020
"Programming Language :: Rust",
21-
"Programming Language :: Python :: 3.10",
2221
"Programming Language :: Python :: 3.11",
2322
"Programming Language :: Python :: 3.12",
2423
"Programming Language :: Python :: 3.13",
2524
"Programming Language :: Python :: 3.14",
25+
"Programming Language :: Python :: 3.15",
2626
"Programming Language :: Python :: 3",
2727
"Programming Language :: Python :: Implementation :: CPython",
2828
"Programming Language :: Python :: Implementation :: PyPy",
@@ -46,7 +46,7 @@ docs = [
4646
"sphinx-copybutton>=0.5.2",
4747
"sphinxcontrib-spelling>5",
4848
"sphinxext-opengraph>=0.13.0",
49-
"url-py>=0.18.0",
49+
"url-py>=2026.5.1",
5050
]
5151
test = [
5252
"pytest>=9.0.1",

release.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# cargo-release config: https://github.com/crate-ci/cargo-release
2+
#
3+
# Wheels are published to PyPI by .github/workflows/CI.yml when a `v*` tag is
4+
# pushed. cargo-release exists here only to keep Cargo.toml, Cargo.lock, and
5+
# the git tag in lockstep.
6+
publish = false
7+
pre-release-commit-message = "Release {{crate_name}} version {{version}}"

0 commit comments

Comments
 (0)