shull 0.1.0__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.
@@ -0,0 +1,179 @@
1
+ # Based on the template from `maturin generate-ci github` (maturin v1.14.1),
2
+ # adapted for this project:
3
+ # - a test job (cargo test + pytest vs scipy) gates all builds
4
+ # - targets trimmed to platforms numpy ships wheels for
5
+ # - no free-threaded (3.14t) builds: pyo3 0.19 predates free-threading
6
+ # - publishing uses PyPI trusted publishing (no long-lived API token);
7
+ # configure the repo as a trusted publisher on pypi.org for this to work
8
+ name: CI
9
+
10
+ on:
11
+ push:
12
+ branches:
13
+ - main
14
+ - master
15
+ tags:
16
+ - "*"
17
+ pull_request:
18
+ workflow_dispatch:
19
+
20
+ permissions:
21
+ contents: read
22
+
23
+ jobs:
24
+ test:
25
+ runs-on: ubuntu-latest
26
+ steps:
27
+ - uses: actions/checkout@v6
28
+ - uses: actions/setup-python@v6
29
+ with:
30
+ python-version: "3.12"
31
+ - uses: dtolnay/rust-toolchain@stable
32
+ - name: Rust tests
33
+ run: cargo test --release
34
+ - name: Build and install wheel
35
+ run: |
36
+ python -m pip install maturin numpy scipy pytest
37
+ maturin build --release --out dist
38
+ python -m pip install --no-index --find-links dist shull
39
+ - name: Python tests
40
+ run: python -m pytest tests/ -q
41
+
42
+ linux:
43
+ needs: test
44
+ runs-on: ubuntu-22.04
45
+ strategy:
46
+ matrix:
47
+ target: [x86_64, aarch64]
48
+ steps:
49
+ - uses: actions/checkout@v6
50
+ - uses: actions/setup-python@v6
51
+ with:
52
+ python-version: "3.12"
53
+ - name: Build wheels
54
+ uses: PyO3/maturin-action@v1
55
+ with:
56
+ target: ${{ matrix.target }}
57
+ args: --release --out dist
58
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
59
+ manylinux: auto
60
+ - name: Upload wheels
61
+ uses: actions/upload-artifact@v6
62
+ with:
63
+ name: wheels-linux-${{ matrix.target }}
64
+ path: dist
65
+
66
+ musllinux:
67
+ needs: test
68
+ runs-on: ubuntu-22.04
69
+ strategy:
70
+ matrix:
71
+ target: [x86_64, aarch64]
72
+ steps:
73
+ - uses: actions/checkout@v6
74
+ - uses: actions/setup-python@v6
75
+ with:
76
+ python-version: "3.12"
77
+ - name: Build wheels
78
+ uses: PyO3/maturin-action@v1
79
+ with:
80
+ target: ${{ matrix.target }}
81
+ args: --release --out dist
82
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
83
+ manylinux: musllinux_1_2
84
+ - name: Upload wheels
85
+ uses: actions/upload-artifact@v6
86
+ with:
87
+ name: wheels-musllinux-${{ matrix.target }}
88
+ path: dist
89
+
90
+ windows:
91
+ needs: test
92
+ runs-on: windows-latest
93
+ steps:
94
+ - uses: actions/checkout@v6
95
+ - uses: actions/setup-python@v6
96
+ with:
97
+ python-version: "3.12"
98
+ architecture: x64
99
+ - name: Build wheels
100
+ uses: PyO3/maturin-action@v1
101
+ with:
102
+ target: x64
103
+ args: --release --out dist
104
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
105
+ - name: Upload wheels
106
+ uses: actions/upload-artifact@v6
107
+ with:
108
+ name: wheels-windows-x64
109
+ path: dist
110
+
111
+ macos:
112
+ needs: test
113
+ runs-on: ${{ matrix.platform.runner }}
114
+ strategy:
115
+ matrix:
116
+ platform:
117
+ - runner: macos-15-intel
118
+ target: x86_64
119
+ - runner: macos-latest
120
+ target: aarch64
121
+ steps:
122
+ - uses: actions/checkout@v6
123
+ - uses: actions/setup-python@v6
124
+ with:
125
+ python-version: "3.12"
126
+ - name: Build wheels
127
+ uses: PyO3/maturin-action@v1
128
+ with:
129
+ target: ${{ matrix.platform.target }}
130
+ args: --release --out dist
131
+ sccache: ${{ !startsWith(github.ref, 'refs/tags/') }}
132
+ - name: Upload wheels
133
+ uses: actions/upload-artifact@v6
134
+ with:
135
+ name: wheels-macos-${{ matrix.platform.target }}
136
+ path: dist
137
+
138
+ sdist:
139
+ needs: test
140
+ runs-on: ubuntu-latest
141
+ steps:
142
+ - uses: actions/checkout@v6
143
+ - name: Build sdist
144
+ uses: PyO3/maturin-action@v1
145
+ with:
146
+ command: sdist
147
+ args: --out dist
148
+ - name: Upload sdist
149
+ uses: actions/upload-artifact@v6
150
+ with:
151
+ name: wheels-sdist
152
+ path: dist
153
+
154
+ release:
155
+ name: Release
156
+ runs-on: ubuntu-latest
157
+ if: ${{ startsWith(github.ref, 'refs/tags/') }}
158
+ needs: [linux, musllinux, windows, macos, sdist]
159
+ environment: pypi
160
+ permissions:
161
+ # Used for PyPI trusted publishing and to sign the release artifacts
162
+ id-token: write
163
+ # Used to upload release artifacts
164
+ contents: write
165
+ # Used to generate artifact attestation
166
+ attestations: write
167
+ steps:
168
+ - uses: actions/download-artifact@v7
169
+ - name: Generate artifact attestation
170
+ uses: actions/attest@v4
171
+ with:
172
+ subject-path: "wheels-*/*"
173
+ - name: Install uv
174
+ uses: astral-sh/setup-uv@v7
175
+ - name: Publish to PyPI
176
+ # Uses PyPI trusted publishing via the id-token permission; requires
177
+ # this repo + workflow to be registered as a trusted publisher for
178
+ # the "shull" project on pypi.org (with environment "pypi").
179
+ run: uv publish 'wheels-*/*'
shull-0.1.0/.gitignore ADDED
@@ -0,0 +1,72 @@
1
+ /target
2
+
3
+ # Byte-compiled / optimized / DLL files
4
+ __pycache__/
5
+ .pytest_cache/
6
+ *.py[cod]
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ .venv/
14
+ env/
15
+ bin/
16
+ build/
17
+ develop-eggs/
18
+ dist/
19
+ eggs/
20
+ lib/
21
+ lib64/
22
+ parts/
23
+ sdist/
24
+ var/
25
+ include/
26
+ man/
27
+ venv/
28
+ *.egg-info/
29
+ .installed.cfg
30
+ *.egg
31
+
32
+ # Installer logs
33
+ pip-log.txt
34
+ pip-delete-this-directory.txt
35
+ pip-selfcheck.json
36
+
37
+ # Unit test / coverage reports
38
+ htmlcov/
39
+ .tox/
40
+ .coverage
41
+ .cache
42
+ nosetests.xml
43
+ coverage.xml
44
+
45
+ # Translations
46
+ *.mo
47
+
48
+ # Mr Developer
49
+ .mr.developer.cfg
50
+ .project
51
+ .pydevproject
52
+
53
+ # Rope
54
+ .ropeproject
55
+
56
+ # Django stuff:
57
+ *.log
58
+ *.pot
59
+
60
+ .DS_Store
61
+
62
+ # Sphinx documentation
63
+ docs/_build/
64
+
65
+ # PyCharm
66
+ .idea/
67
+
68
+ # VSCode
69
+ .vscode/
70
+
71
+ # Pyenv
72
+ .python-version
shull-0.1.0/Cargo.lock ADDED
@@ -0,0 +1,360 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "autocfg"
7
+ version = "1.1.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
10
+
11
+ [[package]]
12
+ name = "bitflags"
13
+ version = "1.3.2"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
16
+
17
+ [[package]]
18
+ name = "cfg-if"
19
+ version = "1.0.0"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
22
+
23
+ [[package]]
24
+ name = "indoc"
25
+ version = "1.0.9"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "bfa799dd5ed20a7e349f3b4639aa80d74549c81716d9ec4f994c9b5815598306"
28
+
29
+ [[package]]
30
+ name = "libc"
31
+ version = "0.2.153"
32
+ source = "registry+https://github.com/rust-lang/crates.io-index"
33
+ checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd"
34
+
35
+ [[package]]
36
+ name = "lock_api"
37
+ version = "0.4.11"
38
+ source = "registry+https://github.com/rust-lang/crates.io-index"
39
+ checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45"
40
+ dependencies = [
41
+ "autocfg",
42
+ "scopeguard",
43
+ ]
44
+
45
+ [[package]]
46
+ name = "matrixmultiply"
47
+ version = "0.3.8"
48
+ source = "registry+https://github.com/rust-lang/crates.io-index"
49
+ checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2"
50
+ dependencies = [
51
+ "autocfg",
52
+ "rawpointer",
53
+ ]
54
+
55
+ [[package]]
56
+ name = "memoffset"
57
+ version = "0.9.0"
58
+ source = "registry+https://github.com/rust-lang/crates.io-index"
59
+ checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
60
+ dependencies = [
61
+ "autocfg",
62
+ ]
63
+
64
+ [[package]]
65
+ name = "ndarray"
66
+ version = "0.15.6"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32"
69
+ dependencies = [
70
+ "matrixmultiply",
71
+ "num-complex",
72
+ "num-integer",
73
+ "num-traits",
74
+ "rawpointer",
75
+ ]
76
+
77
+ [[package]]
78
+ name = "num-complex"
79
+ version = "0.4.4"
80
+ source = "registry+https://github.com/rust-lang/crates.io-index"
81
+ checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214"
82
+ dependencies = [
83
+ "num-traits",
84
+ ]
85
+
86
+ [[package]]
87
+ name = "num-integer"
88
+ version = "0.1.45"
89
+ source = "registry+https://github.com/rust-lang/crates.io-index"
90
+ checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
91
+ dependencies = [
92
+ "autocfg",
93
+ "num-traits",
94
+ ]
95
+
96
+ [[package]]
97
+ name = "num-traits"
98
+ version = "0.2.17"
99
+ source = "registry+https://github.com/rust-lang/crates.io-index"
100
+ checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
101
+ dependencies = [
102
+ "autocfg",
103
+ ]
104
+
105
+ [[package]]
106
+ name = "numpy"
107
+ version = "0.19.0"
108
+ source = "registry+https://github.com/rust-lang/crates.io-index"
109
+ checksum = "437213adf41bbccf4aeae535fbfcdad0f6fed241e1ae182ebe97fa1f3ce19389"
110
+ dependencies = [
111
+ "libc",
112
+ "ndarray",
113
+ "num-complex",
114
+ "num-integer",
115
+ "num-traits",
116
+ "pyo3",
117
+ "rustc-hash",
118
+ ]
119
+
120
+ [[package]]
121
+ name = "once_cell"
122
+ version = "1.19.0"
123
+ source = "registry+https://github.com/rust-lang/crates.io-index"
124
+ checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92"
125
+
126
+ [[package]]
127
+ name = "parking_lot"
128
+ version = "0.12.1"
129
+ source = "registry+https://github.com/rust-lang/crates.io-index"
130
+ checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
131
+ dependencies = [
132
+ "lock_api",
133
+ "parking_lot_core",
134
+ ]
135
+
136
+ [[package]]
137
+ name = "parking_lot_core"
138
+ version = "0.9.9"
139
+ source = "registry+https://github.com/rust-lang/crates.io-index"
140
+ checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e"
141
+ dependencies = [
142
+ "cfg-if",
143
+ "libc",
144
+ "redox_syscall",
145
+ "smallvec",
146
+ "windows-targets",
147
+ ]
148
+
149
+ [[package]]
150
+ name = "proc-macro2"
151
+ version = "1.0.78"
152
+ source = "registry+https://github.com/rust-lang/crates.io-index"
153
+ checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae"
154
+ dependencies = [
155
+ "unicode-ident",
156
+ ]
157
+
158
+ [[package]]
159
+ name = "pyo3"
160
+ version = "0.19.2"
161
+ source = "registry+https://github.com/rust-lang/crates.io-index"
162
+ checksum = "e681a6cfdc4adcc93b4d3cf993749a4552018ee0a9b65fc0ccfad74352c72a38"
163
+ dependencies = [
164
+ "cfg-if",
165
+ "indoc",
166
+ "libc",
167
+ "memoffset",
168
+ "parking_lot",
169
+ "pyo3-build-config",
170
+ "pyo3-ffi",
171
+ "pyo3-macros",
172
+ "unindent",
173
+ ]
174
+
175
+ [[package]]
176
+ name = "pyo3-build-config"
177
+ version = "0.19.2"
178
+ source = "registry+https://github.com/rust-lang/crates.io-index"
179
+ checksum = "076c73d0bc438f7a4ef6fdd0c3bb4732149136abd952b110ac93e4edb13a6ba5"
180
+ dependencies = [
181
+ "once_cell",
182
+ "target-lexicon",
183
+ ]
184
+
185
+ [[package]]
186
+ name = "pyo3-ffi"
187
+ version = "0.19.2"
188
+ source = "registry+https://github.com/rust-lang/crates.io-index"
189
+ checksum = "e53cee42e77ebe256066ba8aa77eff722b3bb91f3419177cf4cd0f304d3284d9"
190
+ dependencies = [
191
+ "libc",
192
+ "pyo3-build-config",
193
+ ]
194
+
195
+ [[package]]
196
+ name = "pyo3-macros"
197
+ version = "0.19.2"
198
+ source = "registry+https://github.com/rust-lang/crates.io-index"
199
+ checksum = "dfeb4c99597e136528c6dd7d5e3de5434d1ceaf487436a3f03b2d56b6fc9efd1"
200
+ dependencies = [
201
+ "proc-macro2",
202
+ "pyo3-macros-backend",
203
+ "quote",
204
+ "syn",
205
+ ]
206
+
207
+ [[package]]
208
+ name = "pyo3-macros-backend"
209
+ version = "0.19.2"
210
+ source = "registry+https://github.com/rust-lang/crates.io-index"
211
+ checksum = "947dc12175c254889edc0c02e399476c2f652b4b9ebd123aa655c224de259536"
212
+ dependencies = [
213
+ "proc-macro2",
214
+ "quote",
215
+ "syn",
216
+ ]
217
+
218
+ [[package]]
219
+ name = "quote"
220
+ version = "1.0.35"
221
+ source = "registry+https://github.com/rust-lang/crates.io-index"
222
+ checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef"
223
+ dependencies = [
224
+ "proc-macro2",
225
+ ]
226
+
227
+ [[package]]
228
+ name = "rawpointer"
229
+ version = "0.2.1"
230
+ source = "registry+https://github.com/rust-lang/crates.io-index"
231
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
232
+
233
+ [[package]]
234
+ name = "redox_syscall"
235
+ version = "0.4.1"
236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
237
+ checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa"
238
+ dependencies = [
239
+ "bitflags",
240
+ ]
241
+
242
+ [[package]]
243
+ name = "robust"
244
+ version = "1.2.0"
245
+ source = "registry+https://github.com/rust-lang/crates.io-index"
246
+ checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839"
247
+
248
+ [[package]]
249
+ name = "rustc-hash"
250
+ version = "1.1.0"
251
+ source = "registry+https://github.com/rust-lang/crates.io-index"
252
+ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
253
+
254
+ [[package]]
255
+ name = "scopeguard"
256
+ version = "1.2.0"
257
+ source = "registry+https://github.com/rust-lang/crates.io-index"
258
+ checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
259
+
260
+ [[package]]
261
+ name = "shull"
262
+ version = "0.1.0"
263
+ dependencies = [
264
+ "ndarray",
265
+ "numpy",
266
+ "pyo3",
267
+ "robust",
268
+ ]
269
+
270
+ [[package]]
271
+ name = "smallvec"
272
+ version = "1.13.1"
273
+ source = "registry+https://github.com/rust-lang/crates.io-index"
274
+ checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7"
275
+
276
+ [[package]]
277
+ name = "syn"
278
+ version = "1.0.109"
279
+ source = "registry+https://github.com/rust-lang/crates.io-index"
280
+ checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
281
+ dependencies = [
282
+ "proc-macro2",
283
+ "quote",
284
+ "unicode-ident",
285
+ ]
286
+
287
+ [[package]]
288
+ name = "target-lexicon"
289
+ version = "0.12.13"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "69758bda2e78f098e4ccb393021a0963bb3442eac05f135c30f61b7370bbafae"
292
+
293
+ [[package]]
294
+ name = "unicode-ident"
295
+ version = "1.0.12"
296
+ source = "registry+https://github.com/rust-lang/crates.io-index"
297
+ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
298
+
299
+ [[package]]
300
+ name = "unindent"
301
+ version = "0.1.11"
302
+ source = "registry+https://github.com/rust-lang/crates.io-index"
303
+ checksum = "e1766d682d402817b5ac4490b3c3002d91dfa0d22812f341609f97b08757359c"
304
+
305
+ [[package]]
306
+ name = "windows-targets"
307
+ version = "0.48.5"
308
+ source = "registry+https://github.com/rust-lang/crates.io-index"
309
+ checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c"
310
+ dependencies = [
311
+ "windows_aarch64_gnullvm",
312
+ "windows_aarch64_msvc",
313
+ "windows_i686_gnu",
314
+ "windows_i686_msvc",
315
+ "windows_x86_64_gnu",
316
+ "windows_x86_64_gnullvm",
317
+ "windows_x86_64_msvc",
318
+ ]
319
+
320
+ [[package]]
321
+ name = "windows_aarch64_gnullvm"
322
+ version = "0.48.5"
323
+ source = "registry+https://github.com/rust-lang/crates.io-index"
324
+ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8"
325
+
326
+ [[package]]
327
+ name = "windows_aarch64_msvc"
328
+ version = "0.48.5"
329
+ source = "registry+https://github.com/rust-lang/crates.io-index"
330
+ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc"
331
+
332
+ [[package]]
333
+ name = "windows_i686_gnu"
334
+ version = "0.48.5"
335
+ source = "registry+https://github.com/rust-lang/crates.io-index"
336
+ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e"
337
+
338
+ [[package]]
339
+ name = "windows_i686_msvc"
340
+ version = "0.48.5"
341
+ source = "registry+https://github.com/rust-lang/crates.io-index"
342
+ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406"
343
+
344
+ [[package]]
345
+ name = "windows_x86_64_gnu"
346
+ version = "0.48.5"
347
+ source = "registry+https://github.com/rust-lang/crates.io-index"
348
+ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e"
349
+
350
+ [[package]]
351
+ name = "windows_x86_64_gnullvm"
352
+ version = "0.48.5"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc"
355
+
356
+ [[package]]
357
+ name = "windows_x86_64_msvc"
358
+ version = "0.48.5"
359
+ source = "registry+https://github.com/rust-lang/crates.io-index"
360
+ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
shull-0.1.0/Cargo.toml ADDED
@@ -0,0 +1,20 @@
1
+ [package]
2
+ name = "shull"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ readme = "README.md"
6
+
7
+ # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
8
+ [lib]
9
+ name = "shull"
10
+ crate-type = ["cdylib", "rlib"]
11
+
12
+ [dependencies]
13
+ numpy = "0.19"
14
+ ndarray = "0.15"
15
+ robust = "1"
16
+
17
+ [dependencies.pyo3]
18
+ version = "0.19.0"
19
+ # "abi3-py38" tells pyo3 (and maturin) to build using the stable ABI with minimum Python version 3.8
20
+ features = ["abi3-py38"]