rust-sasa-python 0.7.2__tar.gz → 0.7.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rust_sasa_python-0.7.4/.github/workflows/CI.yml +228 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/Cargo.lock +45 -62
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/Cargo.toml +4 -5
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/PKG-INFO +17 -11
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/README.md +14 -7
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/pyproject.toml +2 -2
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/src/lib.rs +4 -4
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/uv.lock +16 -15
- rust_sasa_python-0.7.2/.github/workflows/CI.yml +0 -150
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/.gitignore +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/DOCS.md +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/LICENSE.md +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/example.cif +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/pytest.ini +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/rust_sasa_python.pyi +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/src/simd.rs +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/tests/__init__.py +0 -0
- {rust_sasa_python-0.7.2 → rust_sasa_python-0.7.4}/tests/test_sasa.py +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master, radical]
|
|
6
|
+
tags: ["*"]
|
|
7
|
+
pull_request:
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
# Keep the build backend and dev dependency in pyproject.toml in sync with this pin.
|
|
14
|
+
env:
|
|
15
|
+
UV_VERSION: "0.13.8"
|
|
16
|
+
MATURIN_VERSION: "1.16.0"
|
|
17
|
+
RUST_TOOLCHAIN: "1.100.0"
|
|
18
|
+
|
|
19
|
+
defaults:
|
|
20
|
+
run:
|
|
21
|
+
shell: bash
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
linux:
|
|
25
|
+
name: Linux ${{ matrix.platform.target }} / Python ${{ matrix.python }}
|
|
26
|
+
runs-on: ubuntu-24.04
|
|
27
|
+
strategy:
|
|
28
|
+
fail-fast: false
|
|
29
|
+
matrix:
|
|
30
|
+
python: ["3.11", "3.12", "3.13", "3.14"]
|
|
31
|
+
platform:
|
|
32
|
+
- target: x86_64
|
|
33
|
+
container: quay.io/pypa/manylinux2014_x86_64@sha256:e6a785657009c612fe2a85fa933051d03a50ba62b1c5e47d62abcab546a2e423
|
|
34
|
+
- target: x86
|
|
35
|
+
container: quay.io/pypa/manylinux2014_i686@sha256:7ff084c274da66ed891df826b97cd5bb1b1d36db2cc86e4f052ce47cb4b69ead
|
|
36
|
+
steps:
|
|
37
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
38
|
+
with:
|
|
39
|
+
persist-credentials: false
|
|
40
|
+
- uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
41
|
+
with:
|
|
42
|
+
version: ${{ env.UV_VERSION }}
|
|
43
|
+
enable-cache: false
|
|
44
|
+
- name: Select container interpreter
|
|
45
|
+
env:
|
|
46
|
+
PYTHON_VERSION: ${{ matrix.python }}
|
|
47
|
+
run: |
|
|
48
|
+
abi="cp${PYTHON_VERSION//./}"
|
|
49
|
+
echo "CONTAINER_PYTHON=/opt/python/$abi-$abi/bin/python" >> "$GITHUB_ENV"
|
|
50
|
+
- name: Export locked test dependencies
|
|
51
|
+
run: uv export --locked --extra dev --no-emit-project --prune maturin --output-file test-requirements.txt
|
|
52
|
+
- name: Build wheel
|
|
53
|
+
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
|
|
54
|
+
with:
|
|
55
|
+
target: ${{ matrix.platform.target }}
|
|
56
|
+
container: ${{ matrix.platform.container }}
|
|
57
|
+
manylinux: "2014"
|
|
58
|
+
maturin-version: ${{ env.MATURIN_VERSION }}
|
|
59
|
+
rust-toolchain: ${{ env.RUST_TOOLCHAIN }}
|
|
60
|
+
args: --release --locked --out dist --interpreter ${{ env.CONTAINER_PYTHON }}
|
|
61
|
+
- name: Install and test wheel in target architecture
|
|
62
|
+
env:
|
|
63
|
+
CONTAINER_IMAGE: ${{ matrix.platform.container }}
|
|
64
|
+
run: |
|
|
65
|
+
docker run --rm -v "$GITHUB_WORKSPACE:/io:ro" -w /io \
|
|
66
|
+
-e CONTAINER_PYTHON "$CONTAINER_IMAGE" bash -euo pipefail -c '
|
|
67
|
+
"$CONTAINER_PYTHON" -m venv /tmp/wheel-test
|
|
68
|
+
/tmp/wheel-test/bin/python -m pip install --require-hashes -r test-requirements.txt
|
|
69
|
+
/tmp/wheel-test/bin/python -m pip install --no-deps --no-index --find-links dist rust-sasa-python
|
|
70
|
+
/tmp/wheel-test/bin/python -m pytest tests/ -v -p no:cacheprovider
|
|
71
|
+
'
|
|
72
|
+
- name: Upload tested wheel
|
|
73
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
74
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
75
|
+
with:
|
|
76
|
+
name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.python }}
|
|
77
|
+
path: dist/*.whl
|
|
78
|
+
if-no-files-found: error
|
|
79
|
+
|
|
80
|
+
native:
|
|
81
|
+
name: ${{ matrix.platform.name }} / Python ${{ matrix.python }}
|
|
82
|
+
runs-on: ${{ matrix.platform.runner }}
|
|
83
|
+
strategy:
|
|
84
|
+
fail-fast: false
|
|
85
|
+
matrix:
|
|
86
|
+
python: ["3.11", "3.12", "3.13", "3.14"]
|
|
87
|
+
platform:
|
|
88
|
+
- name: windows-x64
|
|
89
|
+
runner: windows-2022
|
|
90
|
+
target: x64
|
|
91
|
+
python-arch: x64
|
|
92
|
+
- name: windows-x86
|
|
93
|
+
runner: windows-2022
|
|
94
|
+
target: x86
|
|
95
|
+
python-arch: x86
|
|
96
|
+
- name: macos-x86_64
|
|
97
|
+
runner: macos-15-intel
|
|
98
|
+
target: x86_64
|
|
99
|
+
python-arch: x64
|
|
100
|
+
- name: macos-aarch64
|
|
101
|
+
runner: macos-15
|
|
102
|
+
target: aarch64
|
|
103
|
+
python-arch: arm64
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
106
|
+
with:
|
|
107
|
+
persist-credentials: false
|
|
108
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
109
|
+
id: python
|
|
110
|
+
with:
|
|
111
|
+
python-version: ${{ matrix.python }}
|
|
112
|
+
architecture: ${{ matrix.platform.python-arch }}
|
|
113
|
+
- uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
114
|
+
with:
|
|
115
|
+
version: ${{ env.UV_VERSION }}
|
|
116
|
+
enable-cache: false
|
|
117
|
+
- name: Build wheel
|
|
118
|
+
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
|
|
119
|
+
with:
|
|
120
|
+
target: ${{ matrix.platform.target }}
|
|
121
|
+
maturin-version: ${{ env.MATURIN_VERSION }}
|
|
122
|
+
rust-toolchain: ${{ env.RUST_TOOLCHAIN }}
|
|
123
|
+
args: --release --locked --out dist --interpreter python
|
|
124
|
+
- name: Install locked test dependencies and wheel
|
|
125
|
+
env:
|
|
126
|
+
UV_PYTHON: ${{ steps.python.outputs.python-path }}
|
|
127
|
+
run: |
|
|
128
|
+
uv sync --locked --extra dev --no-install-project
|
|
129
|
+
# UV_PYTHON selects the base interpreter; install into the project venv.
|
|
130
|
+
uv pip install --python .venv --no-deps --no-index --find-links dist rust-sasa-python
|
|
131
|
+
- name: Test installed wheel
|
|
132
|
+
env:
|
|
133
|
+
UV_PYTHON: ${{ steps.python.outputs.python-path }}
|
|
134
|
+
run: uv run --no-sync pytest tests/ -v
|
|
135
|
+
- name: Upload tested wheel
|
|
136
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
137
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
138
|
+
with:
|
|
139
|
+
name: wheels-${{ matrix.platform.name }}-${{ matrix.python }}
|
|
140
|
+
path: dist/*.whl
|
|
141
|
+
if-no-files-found: error
|
|
142
|
+
|
|
143
|
+
sdist:
|
|
144
|
+
runs-on: ubuntu-24.04
|
|
145
|
+
steps:
|
|
146
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
147
|
+
with:
|
|
148
|
+
persist-credentials: false
|
|
149
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
150
|
+
id: python
|
|
151
|
+
with:
|
|
152
|
+
python-version: "3.11"
|
|
153
|
+
- uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
154
|
+
with:
|
|
155
|
+
version: ${{ env.UV_VERSION }}
|
|
156
|
+
enable-cache: false
|
|
157
|
+
- name: Build sdist
|
|
158
|
+
uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1.51.0
|
|
159
|
+
with:
|
|
160
|
+
maturin-version: ${{ env.MATURIN_VERSION }}
|
|
161
|
+
rust-toolchain: ${{ env.RUST_TOOLCHAIN }}
|
|
162
|
+
command: sdist
|
|
163
|
+
args: --out dist
|
|
164
|
+
- name: Install and test sdist
|
|
165
|
+
env:
|
|
166
|
+
UV_PYTHON: ${{ steps.python.outputs.python-path }}
|
|
167
|
+
MATURIN_PEP517_ARGS: "--locked"
|
|
168
|
+
run: |
|
|
169
|
+
uv sync --locked --extra dev --no-install-project
|
|
170
|
+
uv pip install --python .venv --no-deps --no-build-isolation dist/*.tar.gz
|
|
171
|
+
uv run --no-sync pytest tests/ -v
|
|
172
|
+
- name: Upload tested sdist
|
|
173
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
174
|
+
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
|
|
175
|
+
with:
|
|
176
|
+
name: wheels-sdist
|
|
177
|
+
path: dist/*.tar.gz
|
|
178
|
+
if-no-files-found: error
|
|
179
|
+
|
|
180
|
+
# Preserve the existing required status-check name while gating on artifact tests.
|
|
181
|
+
test:
|
|
182
|
+
name: Test Suite
|
|
183
|
+
runs-on: ubuntu-24.04
|
|
184
|
+
needs: [linux, native, sdist]
|
|
185
|
+
if: always()
|
|
186
|
+
permissions: {}
|
|
187
|
+
steps:
|
|
188
|
+
- name: Require all distribution tests to pass
|
|
189
|
+
env:
|
|
190
|
+
RESULTS: ${{ join(needs.*.result, ',') }}
|
|
191
|
+
run: test "$RESULTS" = 'success,success,success'
|
|
192
|
+
|
|
193
|
+
release:
|
|
194
|
+
name: Release
|
|
195
|
+
runs-on: ubuntu-24.04
|
|
196
|
+
environment:
|
|
197
|
+
name: publishing
|
|
198
|
+
permissions:
|
|
199
|
+
id-token: write
|
|
200
|
+
needs: [linux, native, sdist, test]
|
|
201
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
|
|
202
|
+
concurrency:
|
|
203
|
+
group: pypi-publishing
|
|
204
|
+
cancel-in-progress: false
|
|
205
|
+
steps:
|
|
206
|
+
- name: Require protected release tag
|
|
207
|
+
env:
|
|
208
|
+
REF_PROTECTED: ${{ github.ref_protected }}
|
|
209
|
+
run: |
|
|
210
|
+
if [ "$REF_PROTECTED" != true ]; then
|
|
211
|
+
echo '::error::Protect v* tags with a repository ruleset before publishing. See .github/PUBLISHING.md.'
|
|
212
|
+
exit 1
|
|
213
|
+
fi
|
|
214
|
+
- name: Install uv
|
|
215
|
+
uses: astral-sh/setup-uv@68559e99cc807c1eb7e9238fd43a15bba460eec2 # v10.3.3
|
|
216
|
+
with:
|
|
217
|
+
version: ${{ env.UV_VERSION }}
|
|
218
|
+
enable-cache: false
|
|
219
|
+
- name: Download tested distributions
|
|
220
|
+
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
|
|
221
|
+
with:
|
|
222
|
+
pattern: wheels-*
|
|
223
|
+
merge-multiple: true
|
|
224
|
+
path: dist/
|
|
225
|
+
- name: Generate PEP 740 attestations
|
|
226
|
+
uses: astral-sh/attest-action@39b6ce43875c196a579e31635b11aa2a2036384a # v0.0.7
|
|
227
|
+
- name: Publish
|
|
228
|
+
run: uv publish --trusted-publishing always
|
|
@@ -160,12 +160,6 @@ dependencies = [
|
|
|
160
160
|
"hashbrown",
|
|
161
161
|
]
|
|
162
162
|
|
|
163
|
-
[[package]]
|
|
164
|
-
name = "indoc"
|
|
165
|
-
version = "2.0.5"
|
|
166
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
167
|
-
checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5"
|
|
168
|
-
|
|
169
163
|
[[package]]
|
|
170
164
|
name = "libc"
|
|
171
165
|
version = "0.2.153"
|
|
@@ -180,28 +174,18 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058"
|
|
|
180
174
|
|
|
181
175
|
[[package]]
|
|
182
176
|
name = "libmimalloc-sys"
|
|
183
|
-
version = "0.1.
|
|
177
|
+
version = "0.1.49"
|
|
184
178
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
185
|
-
checksum = "
|
|
179
|
+
checksum = "6a45a52f43e1c16f667ccfe4dd8c85b7f7c204fd5e3bf46c5b0db9a5c3c0b8e9"
|
|
186
180
|
dependencies = [
|
|
187
181
|
"cc",
|
|
188
|
-
"libc",
|
|
189
|
-
]
|
|
190
|
-
|
|
191
|
-
[[package]]
|
|
192
|
-
name = "memoffset"
|
|
193
|
-
version = "0.9.1"
|
|
194
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
195
|
-
checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
|
|
196
|
-
dependencies = [
|
|
197
|
-
"autocfg",
|
|
198
182
|
]
|
|
199
183
|
|
|
200
184
|
[[package]]
|
|
201
185
|
name = "mimalloc"
|
|
202
|
-
version = "0.1.
|
|
186
|
+
version = "0.1.52"
|
|
203
187
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
204
|
-
checksum = "
|
|
188
|
+
checksum = "2d4139bb28d14ad1facf21d5eb8825051b326e172d216b39f6d31df53cc97862"
|
|
205
189
|
dependencies = [
|
|
206
190
|
"libmimalloc-sys",
|
|
207
191
|
]
|
|
@@ -237,9 +221,9 @@ dependencies = [
|
|
|
237
221
|
|
|
238
222
|
[[package]]
|
|
239
223
|
name = "once_cell"
|
|
240
|
-
version = "1.
|
|
224
|
+
version = "1.21.4"
|
|
241
225
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
242
|
-
checksum = "
|
|
226
|
+
checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
|
|
243
227
|
|
|
244
228
|
[[package]]
|
|
245
229
|
name = "paste"
|
|
@@ -287,9 +271,9 @@ dependencies = [
|
|
|
287
271
|
|
|
288
272
|
[[package]]
|
|
289
273
|
name = "pulp"
|
|
290
|
-
version = "0.22.
|
|
274
|
+
version = "0.22.3"
|
|
291
275
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
292
|
-
checksum = "
|
|
276
|
+
checksum = "046aa45b989642ec2e4717c8e72d677b13edd831a4d3b6cf37d9a3e54912496a"
|
|
293
277
|
dependencies = [
|
|
294
278
|
"bytemuck",
|
|
295
279
|
"cfg-if",
|
|
@@ -304,42 +288,38 @@ dependencies = [
|
|
|
304
288
|
|
|
305
289
|
[[package]]
|
|
306
290
|
name = "pulp-wasm-simd-flag"
|
|
307
|
-
version = "0.1.
|
|
291
|
+
version = "0.1.1"
|
|
308
292
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
309
|
-
checksum = "
|
|
293
|
+
checksum = "1d8f70e07b9c3962945a74e59ca1c511bba65b6419468acc217c457d93f3c740"
|
|
310
294
|
|
|
311
295
|
[[package]]
|
|
312
296
|
name = "pyo3"
|
|
313
|
-
version = "0.
|
|
297
|
+
version = "0.30.1"
|
|
314
298
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
315
|
-
checksum = "
|
|
299
|
+
checksum = "229ca13b8a15bb0d1487b81ab975bfcd97513416499a8312011b6036e42e0de4"
|
|
316
300
|
dependencies = [
|
|
317
|
-
"indoc",
|
|
318
301
|
"libc",
|
|
319
|
-
"memoffset",
|
|
320
302
|
"once_cell",
|
|
321
303
|
"portable-atomic",
|
|
322
304
|
"pyo3-build-config",
|
|
323
305
|
"pyo3-ffi",
|
|
324
306
|
"pyo3-macros",
|
|
325
|
-
"unindent",
|
|
326
307
|
]
|
|
327
308
|
|
|
328
309
|
[[package]]
|
|
329
310
|
name = "pyo3-build-config"
|
|
330
|
-
version = "0.
|
|
311
|
+
version = "0.30.1"
|
|
331
312
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
332
|
-
checksum = "
|
|
313
|
+
checksum = "70130e2b6dd1ee589a8788026a429561ca5c40fa7a2fa7914c2282eddae24700"
|
|
333
314
|
dependencies = [
|
|
334
|
-
"once_cell",
|
|
335
315
|
"target-lexicon",
|
|
336
316
|
]
|
|
337
317
|
|
|
338
318
|
[[package]]
|
|
339
319
|
name = "pyo3-ffi"
|
|
340
|
-
version = "0.
|
|
320
|
+
version = "0.30.1"
|
|
341
321
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
342
|
-
checksum = "
|
|
322
|
+
checksum = "5e7ff73c555c286d212d4ce7e5fbda845a973c4f61bd5f160f5f2c3c2a04d1c4"
|
|
343
323
|
dependencies = [
|
|
344
324
|
"libc",
|
|
345
325
|
"pyo3-build-config",
|
|
@@ -347,27 +327,26 @@ dependencies = [
|
|
|
347
327
|
|
|
348
328
|
[[package]]
|
|
349
329
|
name = "pyo3-macros"
|
|
350
|
-
version = "0.
|
|
330
|
+
version = "0.30.1"
|
|
351
331
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
352
|
-
checksum = "
|
|
332
|
+
checksum = "c46d2e5862c7bb8207e3b639f713dda3c499933444784154c11d013c5a691b60"
|
|
353
333
|
dependencies = [
|
|
354
334
|
"proc-macro2 1.0.95",
|
|
355
335
|
"pyo3-macros-backend",
|
|
356
|
-
"quote 1.0.
|
|
357
|
-
"syn",
|
|
336
|
+
"quote 1.0.47",
|
|
337
|
+
"syn 3.0.10",
|
|
358
338
|
]
|
|
359
339
|
|
|
360
340
|
[[package]]
|
|
361
341
|
name = "pyo3-macros-backend"
|
|
362
|
-
version = "0.
|
|
342
|
+
version = "0.30.1"
|
|
363
343
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
364
|
-
checksum = "
|
|
344
|
+
checksum = "38b89f066f2ae72a2aef52d1537ca2fcd104440ebfadee06e97aa90738a25b9b"
|
|
365
345
|
dependencies = [
|
|
366
346
|
"heck",
|
|
367
347
|
"proc-macro2 1.0.95",
|
|
368
|
-
"
|
|
369
|
-
"
|
|
370
|
-
"syn",
|
|
348
|
+
"quote 1.0.47",
|
|
349
|
+
"syn 3.0.10",
|
|
371
350
|
]
|
|
372
351
|
|
|
373
352
|
[[package]]
|
|
@@ -381,9 +360,9 @@ dependencies = [
|
|
|
381
360
|
|
|
382
361
|
[[package]]
|
|
383
362
|
name = "quote"
|
|
384
|
-
version = "1.0.
|
|
363
|
+
version = "1.0.47"
|
|
385
364
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
386
|
-
checksum = "
|
|
365
|
+
checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
|
|
387
366
|
dependencies = [
|
|
388
367
|
"proc-macro2 1.0.95",
|
|
389
368
|
]
|
|
@@ -449,10 +428,9 @@ dependencies = [
|
|
|
449
428
|
|
|
450
429
|
[[package]]
|
|
451
430
|
name = "rust-sasa-python"
|
|
452
|
-
version = "0.7.
|
|
431
|
+
version = "0.7.4"
|
|
453
432
|
dependencies = [
|
|
454
433
|
"mimalloc",
|
|
455
|
-
"num-complex",
|
|
456
434
|
"pdbtbx",
|
|
457
435
|
"pulp",
|
|
458
436
|
"pyo3",
|
|
@@ -485,8 +463,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
485
463
|
checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
|
|
486
464
|
dependencies = [
|
|
487
465
|
"proc-macro2 1.0.95",
|
|
488
|
-
"quote 1.0.
|
|
489
|
-
"syn",
|
|
466
|
+
"quote 1.0.47",
|
|
467
|
+
"syn 2.0.104",
|
|
490
468
|
]
|
|
491
469
|
|
|
492
470
|
[[package]]
|
|
@@ -518,8 +496,8 @@ checksum = "c1c97747dbf44bb1ca44a561ece23508e99cb592e862f22222dcf42f51d1e451"
|
|
|
518
496
|
dependencies = [
|
|
519
497
|
"heck",
|
|
520
498
|
"proc-macro2 1.0.95",
|
|
521
|
-
"quote 1.0.
|
|
522
|
-
"syn",
|
|
499
|
+
"quote 1.0.47",
|
|
500
|
+
"syn 2.0.104",
|
|
523
501
|
]
|
|
524
502
|
|
|
525
503
|
[[package]]
|
|
@@ -535,15 +513,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
535
513
|
checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40"
|
|
536
514
|
dependencies = [
|
|
537
515
|
"proc-macro2 1.0.95",
|
|
538
|
-
"quote 1.0.
|
|
516
|
+
"quote 1.0.47",
|
|
517
|
+
"unicode-ident",
|
|
518
|
+
]
|
|
519
|
+
|
|
520
|
+
[[package]]
|
|
521
|
+
name = "syn"
|
|
522
|
+
version = "3.0.10"
|
|
523
|
+
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
524
|
+
checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79"
|
|
525
|
+
dependencies = [
|
|
526
|
+
"proc-macro2 1.0.95",
|
|
527
|
+
"quote 1.0.47",
|
|
539
528
|
"unicode-ident",
|
|
540
529
|
]
|
|
541
530
|
|
|
542
531
|
[[package]]
|
|
543
532
|
name = "target-lexicon"
|
|
544
|
-
version = "0.13.
|
|
533
|
+
version = "0.13.5"
|
|
545
534
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
546
|
-
checksum = "
|
|
535
|
+
checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
|
|
547
536
|
|
|
548
537
|
[[package]]
|
|
549
538
|
name = "unicode-ident"
|
|
@@ -557,12 +546,6 @@ version = "0.1.0"
|
|
|
557
546
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
558
547
|
checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc"
|
|
559
548
|
|
|
560
|
-
[[package]]
|
|
561
|
-
name = "unindent"
|
|
562
|
-
version = "0.2.3"
|
|
563
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
564
|
-
checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce"
|
|
565
|
-
|
|
566
549
|
[[package]]
|
|
567
550
|
name = "version_check"
|
|
568
551
|
version = "0.9.5"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "rust-sasa-python"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.4"
|
|
4
4
|
edition = "2024"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
|
|
@@ -11,8 +11,7 @@ crate-type = ["cdylib"]
|
|
|
11
11
|
|
|
12
12
|
[dependencies]
|
|
13
13
|
pdbtbx = "0.12.0"
|
|
14
|
-
pyo3 = "0.
|
|
14
|
+
pyo3 = "0.30.1"
|
|
15
15
|
rust-sasa = "0.9.2"
|
|
16
|
-
mimalloc = "0.1.
|
|
17
|
-
|
|
18
|
-
pulp = "0.22.2"
|
|
16
|
+
mimalloc = "0.1.52"
|
|
17
|
+
pulp = "0.22.3"
|
|
@@ -1,35 +1,41 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rust-sasa-python
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.4
|
|
4
4
|
Classifier: Programming Language :: Rust
|
|
5
5
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
6
6
|
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
7
7
|
Requires-Dist: pytest>=8.4.1 ; extra == 'dev'
|
|
8
|
-
Requires-Dist: maturin
|
|
8
|
+
Requires-Dist: maturin==1.16.0 ; extra == 'dev'
|
|
9
9
|
Provides-Extra: dev
|
|
10
10
|
License-File: LICENSE.md
|
|
11
|
-
Summary: An ultra-fast package for computing Solvent Accessible Surface Area (SASA/ASA) for proteins
|
|
12
|
-
**46X** faster than Biopython, **7X** faster than Freesasa
|
|
11
|
+
Summary: An ultra-fast package for computing Solvent Accessible Surface Area (SASA/ASA) for proteins **46X** faster than Biopython, **7X** faster than Freesasa
|
|
13
12
|
Author: Max Campbell
|
|
14
13
|
Requires-Python: >=3.11
|
|
15
14
|
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
16
15
|
|
|
17
16
|
# rust-sasa-python
|
|
18
17
|
|
|
19
|
-
A high-performance **Python library** for computing SASA (Solvent Accessible Surface Area) using Rust as the backend. This library provides a clean, Pythonic interface to the fast RustSASA calculation engine.
|
|
18
|
+
A high-performance **Python library** for computing SASA (Solvent Accessible Surface Area) using Rust as the backend. This library provides a clean, Pythonic interface to the fast RustSASA calculation engine. If you use RustSASA in your research, please [cite it](https://github.com/maxall41/RustSASA#how-to-cite).
|
|
20
19
|
|
|
21
20
|
## Features
|
|
22
21
|
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
22
|
+
- **Powered by [RustSASA](https://github.com/maxall41/RustSASA)**: Leverages Rust's performance and safety.
|
|
23
|
+
- **Ludicrous Speed**: **63X** faster than Biopython, **5X** faster than Freesasa.
|
|
24
|
+
- **Pythonic Interface**: Clean, intuitive API.
|
|
25
|
+
- **Configurable**: Customizable probe radius and sampling points.
|
|
26
|
+
- **PDB and mmCIF SUPPORT**: Supports both PDB and mmCIF files.
|
|
28
27
|
|
|
29
28
|
## Installation
|
|
30
29
|
|
|
31
|
-
```
|
|
30
|
+
```shell
|
|
31
|
+
# PyPI
|
|
32
32
|
pip install rust-sasa-python
|
|
33
|
+
|
|
34
|
+
# conda
|
|
35
|
+
conda install -c conda-forge rust-sasa-python
|
|
36
|
+
|
|
37
|
+
# mamba
|
|
38
|
+
mamba install -c conda-forge rust-sasa-python
|
|
33
39
|
```
|
|
34
40
|
|
|
35
41
|
## Quick Start
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
# rust-sasa-python
|
|
2
2
|
|
|
3
|
-
A high-performance **Python library** for computing SASA (Solvent Accessible Surface Area) using Rust as the backend. This library provides a clean, Pythonic interface to the fast RustSASA calculation engine.
|
|
3
|
+
A high-performance **Python library** for computing SASA (Solvent Accessible Surface Area) using Rust as the backend. This library provides a clean, Pythonic interface to the fast RustSASA calculation engine. If you use RustSASA in your research, please [cite it](https://github.com/maxall41/RustSASA#how-to-cite).
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
7
|
+
- **Powered by [RustSASA](https://github.com/maxall41/RustSASA)**: Leverages Rust's performance and safety.
|
|
8
|
+
- **Ludicrous Speed**: **63X** faster than Biopython, **5X** faster than Freesasa.
|
|
9
|
+
- **Pythonic Interface**: Clean, intuitive API.
|
|
10
|
+
- **Configurable**: Customizable probe radius and sampling points.
|
|
11
|
+
- **PDB and mmCIF SUPPORT**: Supports both PDB and mmCIF files.
|
|
12
12
|
|
|
13
13
|
## Installation
|
|
14
14
|
|
|
15
|
-
```
|
|
15
|
+
```shell
|
|
16
|
+
# PyPI
|
|
16
17
|
pip install rust-sasa-python
|
|
18
|
+
|
|
19
|
+
# conda
|
|
20
|
+
conda install -c conda-forge rust-sasa-python
|
|
21
|
+
|
|
22
|
+
# mamba
|
|
23
|
+
mamba install -c conda-forge rust-sasa-python
|
|
17
24
|
```
|
|
18
25
|
|
|
19
26
|
## Quick Start
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["maturin
|
|
2
|
+
requires = ["maturin==1.16.0"]
|
|
3
3
|
build-backend = "maturin"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
@@ -16,7 +16,7 @@ readme = "README.md"
|
|
|
16
16
|
authors = [{ name = "Max Campbell" }]
|
|
17
17
|
|
|
18
18
|
[project.optional-dependencies]
|
|
19
|
-
dev = ["pytest>=8.4.1", "maturin
|
|
19
|
+
dev = ["pytest>=8.4.1", "maturin==1.16.0"]
|
|
20
20
|
|
|
21
21
|
[tool.maturin]
|
|
22
22
|
features = ["pyo3/extension-module"]
|
|
@@ -12,7 +12,7 @@ mod simd;
|
|
|
12
12
|
#[global_allocator]
|
|
13
13
|
static GLOBAL: mimalloc::MiMalloc = mimalloc::MiMalloc;
|
|
14
14
|
|
|
15
|
-
#[pyclass]
|
|
15
|
+
#[pyclass(from_py_object)]
|
|
16
16
|
#[derive(Clone)]
|
|
17
17
|
pub struct Protein {
|
|
18
18
|
#[pyo3(get)]
|
|
@@ -33,7 +33,7 @@ impl Protein {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
#[pyclass]
|
|
36
|
+
#[pyclass(from_py_object)]
|
|
37
37
|
#[derive(Clone)]
|
|
38
38
|
pub struct Residue {
|
|
39
39
|
#[pyo3(get)]
|
|
@@ -56,7 +56,7 @@ impl Residue {
|
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
#[pyclass]
|
|
59
|
+
#[pyclass(from_py_object)]
|
|
60
60
|
#[derive(Clone)]
|
|
61
61
|
pub struct Chain {
|
|
62
62
|
#[pyo3(get)]
|
|
@@ -72,7 +72,7 @@ impl Chain {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
#[pyclass]
|
|
75
|
+
#[pyclass(from_py_object)]
|
|
76
76
|
#[derive(Clone)]
|
|
77
77
|
pub struct SASACalculator {
|
|
78
78
|
pdb_path: String,
|
|
@@ -22,22 +22,23 @@ wheels = [
|
|
|
22
22
|
|
|
23
23
|
[[package]]
|
|
24
24
|
name = "maturin"
|
|
25
|
-
version = "1.
|
|
25
|
+
version = "1.16.0"
|
|
26
26
|
source = { registry = "https://pypi.org/simple" }
|
|
27
|
-
sdist = { url = "https://files.pythonhosted.org/packages/
|
|
27
|
+
sdist = { url = "https://files.pythonhosted.org/packages/bd/71/eb078174335ff30bde1be2ad54fb6256db4b160eb3efa81163fa30f8c814/maturin-1.16.0.tar.gz", hash = "sha256:13e69ca12542999d8c5467131de72a49bb76e4c284b9a45c5783df7c0fcb3a8a", size = 396641, upload-time = "2026-10-29T14:09:43.096Z" }
|
|
28
28
|
wheels = [
|
|
29
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
30
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
31
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
32
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
33
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
34
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
35
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
36
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
37
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
38
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
39
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
40
|
-
{ url = "https://files.pythonhosted.org/packages/
|
|
29
|
+
{ url = "https://files.pythonhosted.org/packages/c0/f8/235d4a8b3d61af3c7744582ae9e6ccb8f096e9f68f06fe62d7d03e5d7b2d/maturin-1.16.0-py3-none-linux_armv6l.whl", hash = "sha256:deacbb204a20326862e194c7df4958e0514a0411c9a3ccf228a00067c11b5c7e", size = 10425070, upload-time = "2026-10-29T14:09:06.221Z" },
|
|
30
|
+
{ url = "https://files.pythonhosted.org/packages/fb/d5/f49a90d8c489dc5f134654ec91d12a78a51599fdc8c2b5a1bc2391bca0ac/maturin-1.16.0-py3-none-macosx_10_12_universal2.macosx_10_12_x86_64.macosx_11_0_arm64.whl", hash = "sha256:131fcc17ddb3ccc48aa183d2172ebf994c322b858e1b9694fb8744d783df66f6", size = 19839189, upload-time = "2026-10-29T14:09:09.441Z" },
|
|
31
|
+
{ url = "https://files.pythonhosted.org/packages/d2/8e/d65633d7c25484cb82735a51e15bc969f9874a13557e2b352d27df574c20/maturin-1.16.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:2216d731c9324869d3bff72c0c73009bb6e640b3fa7d340174ae70dc874d1d9f", size = 10271659, upload-time = "2026-10-29T14:09:12.596Z" },
|
|
32
|
+
{ url = "https://files.pythonhosted.org/packages/0a/dc/e77f490557cb5e045a75c3d18a7965425ac576235c970dfff4d903eb2c74/maturin-1.16.0-py3-none-manylinux2010_x86_64.manylinux_2_12_x86_64.musllinux_1_1_x86_64.whl", hash = "sha256:837db2f4d93d4899c3ac393fb3cc9eebf35b6002336e5d574f4a4fb6c49fe283", size = 10763361, upload-time = "2026-10-29T14:09:16.11Z" },
|
|
33
|
+
{ url = "https://files.pythonhosted.org/packages/fa/eb/535564a4211105fd64611fa4f9437c8925eded26a97d58de84565f5aebfa/maturin-1.16.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.musllinux_1_1_i686.whl", hash = "sha256:399fadcd4af39532a173e010240c34930eacc1bb1746bb179863481c68bcf1ab", size = 10442856, upload-time = "2026-10-29T14:09:18.64Z" },
|
|
34
|
+
{ url = "https://files.pythonhosted.org/packages/45/5b/570e13ce81f103be6609c067a06c5bac08da5af0cf7ea700c9ae43419be9/maturin-1.16.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl", hash = "sha256:e285ec9eb10243d45d10417178cb2eb76e0cbb184d0aa4378b503489fa12ee78", size = 10298796, upload-time = "2026-10-29T14:09:21.385Z" },
|
|
35
|
+
{ url = "https://files.pythonhosted.org/packages/88/a6/26b40c31c354359fe4e49398113d018694c7035968fe1b569bb13c3905af/maturin-1.16.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.musllinux_1_1_armv7l.whl", hash = "sha256:609228d639c5b888dc41364cbd318547a59f027481f53cba85838f46da4b3f02", size = 10268023, upload-time = "2026-10-29T14:09:23.94Z" },
|
|
36
|
+
{ url = "https://files.pythonhosted.org/packages/2b/19/faca1784d917c2eecd498648dff6a0179b299c8142cc448ea5b1183545ec/maturin-1.16.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.musllinux_1_1_ppc64le.whl", hash = "sha256:7001fd3ac591820d01f2fa041552c367ec587c98649d9f10a817cc7f28e59062", size = 13739038, upload-time = "2026-10-29T14:09:26.662Z" },
|
|
37
|
+
{ url = "https://files.pythonhosted.org/packages/36/c1/d67e77aa07100e3b2d4c0d9ef6922646d9c4bab25cc04f91023aefc72418/maturin-1.16.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5b0573a146803f24566f5b301a4572a8e49bcab4917175407c730da13b46e134", size = 11100193, upload-time = "2026-10-29T14:09:29.659Z" },
|
|
38
|
+
{ url = "https://files.pythonhosted.org/packages/76/44/ccef52f02ab0e1f7258bc8fe0140b4991c6287458ef883af1027f946a253/maturin-1.16.0-py3-none-manylinux_2_31_riscv64.musllinux_1_1_riscv64.whl", hash = "sha256:c16d3589cbddda9420237fdb1394b1a9b36483c0bce83b23de6118c908a8e940", size = 10663849, upload-time = "2026-10-29T14:09:32.183Z" },
|
|
39
|
+
{ url = "https://files.pythonhosted.org/packages/6e/9b/3104f62dbb428f9e26e35cba2c80cfc42ba9bb1dc4968882c19d1bfe594b/maturin-1.16.0-py3-none-win32.whl", hash = "sha256:9e221c047931caa79283cc0c2278904ae1b25880dde3574b0447657d72907689", size = 9124894, upload-time = "2026-10-29T14:09:34.857Z" },
|
|
40
|
+
{ url = "https://files.pythonhosted.org/packages/63/b8/c25ce706c4797ee1663bcf1f386ffe91d8a3b3589700a135a204b49bc4b0/maturin-1.16.0-py3-none-win_amd64.whl", hash = "sha256:9d43a2adf51a2794e907a8f7dbad06eb114d5edb0909c73c1fa9040f15e584e9", size = 10575645, upload-time = "2026-10-29T14:09:37.864Z" },
|
|
41
|
+
{ url = "https://files.pythonhosted.org/packages/eb/74/f69aba8b22539e5ed58323d4a6ee974afd9edda238489c73926cc0fc9d51/maturin-1.16.0-py3-none-win_arm64.whl", hash = "sha256:95f34ce53249fb7095ff4f2aff64d2562c511d6edf3e216c15dbffcd82b72b4f", size = 9886475, upload-time = "2026-10-29T14:09:40.603Z" },
|
|
41
42
|
]
|
|
42
43
|
|
|
43
44
|
[[package]]
|
|
@@ -95,7 +96,7 @@ dev = [
|
|
|
95
96
|
|
|
96
97
|
[package.metadata]
|
|
97
98
|
requires-dist = [
|
|
98
|
-
{ name = "maturin", marker = "extra == 'dev'", specifier = "
|
|
99
|
+
{ name = "maturin", marker = "extra == 'dev'", specifier = "==1.16.0" },
|
|
99
100
|
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.4.1" },
|
|
100
101
|
]
|
|
101
102
|
provides-extras = ["dev"]
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
name: CI
|
|
2
|
-
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
5
|
-
branches:
|
|
6
|
-
- main
|
|
7
|
-
- master
|
|
8
|
-
- radical
|
|
9
|
-
tags:
|
|
10
|
-
- "*"
|
|
11
|
-
pull_request:
|
|
12
|
-
workflow_dispatch:
|
|
13
|
-
|
|
14
|
-
permissions:
|
|
15
|
-
contents: read
|
|
16
|
-
|
|
17
|
-
jobs:
|
|
18
|
-
linux:
|
|
19
|
-
runs-on: ${{ matrix.platform.runner }}
|
|
20
|
-
strategy:
|
|
21
|
-
matrix:
|
|
22
|
-
platform:
|
|
23
|
-
- runner: ubuntu-latest
|
|
24
|
-
target: x86_64
|
|
25
|
-
- runner: ubuntu-latest
|
|
26
|
-
target: x86
|
|
27
|
-
steps:
|
|
28
|
-
- uses: actions/checkout@v4
|
|
29
|
-
- uses: actions/setup-python@v5
|
|
30
|
-
with:
|
|
31
|
-
python-version: "3.13"
|
|
32
|
-
- name: Build wheels
|
|
33
|
-
uses: PyO3/maturin-action@v1
|
|
34
|
-
with:
|
|
35
|
-
target: ${{ matrix.platform.target }}
|
|
36
|
-
args: --release --out dist --find-interpreter
|
|
37
|
-
sccache: "true"
|
|
38
|
-
manylinux: auto
|
|
39
|
-
- name: Upload wheels
|
|
40
|
-
uses: actions/upload-artifact@v4
|
|
41
|
-
with:
|
|
42
|
-
name: wheels-linux-${{ matrix.platform.target }}
|
|
43
|
-
path: dist
|
|
44
|
-
|
|
45
|
-
windows:
|
|
46
|
-
runs-on: ${{ matrix.platform.runner }}
|
|
47
|
-
strategy:
|
|
48
|
-
matrix:
|
|
49
|
-
platform:
|
|
50
|
-
- runner: windows-latest
|
|
51
|
-
target: x64
|
|
52
|
-
- runner: windows-latest
|
|
53
|
-
target: x86
|
|
54
|
-
steps:
|
|
55
|
-
- uses: actions/checkout@v4
|
|
56
|
-
- uses: actions/setup-python@v5
|
|
57
|
-
with:
|
|
58
|
-
python-version: "3.13"
|
|
59
|
-
architecture: ${{ matrix.platform.target }}
|
|
60
|
-
- name: Build wheels
|
|
61
|
-
uses: PyO3/maturin-action@v1
|
|
62
|
-
with:
|
|
63
|
-
target: ${{ matrix.platform.target }}
|
|
64
|
-
args: --release --out dist --find-interpreter
|
|
65
|
-
sccache: "true"
|
|
66
|
-
- name: Upload wheels
|
|
67
|
-
uses: actions/upload-artifact@v4
|
|
68
|
-
with:
|
|
69
|
-
name: wheels-windows-${{ matrix.platform.target }}
|
|
70
|
-
path: dist
|
|
71
|
-
|
|
72
|
-
macos:
|
|
73
|
-
runs-on: ${{ matrix.platform.runner }}
|
|
74
|
-
strategy:
|
|
75
|
-
matrix:
|
|
76
|
-
platform:
|
|
77
|
-
- runner: macos-latest
|
|
78
|
-
target: x86_64
|
|
79
|
-
- runner: macos-14
|
|
80
|
-
target: aarch64
|
|
81
|
-
steps:
|
|
82
|
-
- uses: actions/checkout@v4
|
|
83
|
-
- uses: actions/setup-python@v5
|
|
84
|
-
with:
|
|
85
|
-
python-version: "3.13"
|
|
86
|
-
- name: Build wheels
|
|
87
|
-
uses: PyO3/maturin-action@v1
|
|
88
|
-
with:
|
|
89
|
-
target: ${{ matrix.platform.target }}
|
|
90
|
-
args: --release --out dist --find-interpreter
|
|
91
|
-
sccache: "true"
|
|
92
|
-
- name: Upload wheels
|
|
93
|
-
uses: actions/upload-artifact@v4
|
|
94
|
-
with:
|
|
95
|
-
name: wheels-macos-${{ matrix.platform.target }}
|
|
96
|
-
path: dist
|
|
97
|
-
|
|
98
|
-
sdist:
|
|
99
|
-
runs-on: ubuntu-latest
|
|
100
|
-
steps:
|
|
101
|
-
- uses: actions/checkout@v4
|
|
102
|
-
- name: Build sdist
|
|
103
|
-
uses: PyO3/maturin-action@v1
|
|
104
|
-
with:
|
|
105
|
-
command: sdist
|
|
106
|
-
args: --out dist
|
|
107
|
-
- name: Upload sdist
|
|
108
|
-
uses: actions/upload-artifact@v4
|
|
109
|
-
with:
|
|
110
|
-
name: wheels-sdist
|
|
111
|
-
path: dist
|
|
112
|
-
|
|
113
|
-
test:
|
|
114
|
-
name: Test Suite
|
|
115
|
-
runs-on: ${{ matrix.os }}
|
|
116
|
-
strategy:
|
|
117
|
-
matrix:
|
|
118
|
-
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
119
|
-
steps:
|
|
120
|
-
- uses: actions/checkout@v4
|
|
121
|
-
- name: Install uv
|
|
122
|
-
uses: astral-sh/setup-uv@v3
|
|
123
|
-
with:
|
|
124
|
-
version: "latest"
|
|
125
|
-
- name: Set up Python
|
|
126
|
-
run: uv python install 3.13
|
|
127
|
-
- name: Install dependencies
|
|
128
|
-
run: |
|
|
129
|
-
uv add --dev pytest maturin
|
|
130
|
-
- name: Build and install package
|
|
131
|
-
run: |
|
|
132
|
-
uv run maturin develop --release
|
|
133
|
-
- name: Run tests
|
|
134
|
-
run: |
|
|
135
|
-
uv run pytest tests/ -v
|
|
136
|
-
|
|
137
|
-
release:
|
|
138
|
-
name: Release
|
|
139
|
-
runs-on: ubuntu-latest
|
|
140
|
-
needs: [linux, windows, macos, sdist, test]
|
|
141
|
-
if: startsWith(github.ref, 'refs/tags/v')
|
|
142
|
-
steps:
|
|
143
|
-
- uses: actions/download-artifact@v4
|
|
144
|
-
- name: Publish to PyPI
|
|
145
|
-
uses: PyO3/maturin-action@v1
|
|
146
|
-
env:
|
|
147
|
-
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }}
|
|
148
|
-
with:
|
|
149
|
-
command: upload
|
|
150
|
-
args: --non-interactive --skip-existing wheels-*/*
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|