loop-interpolation-core 0.1.0__cp39-abi3-win_amd64.whl

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,5 @@
1
+ from .loop_interpolation_core import *
2
+
3
+ __doc__ = loop_interpolation_core.__doc__
4
+ if hasattr(loop_interpolation_core, "__all__"):
5
+ __all__ = loop_interpolation_core.__all__
@@ -0,0 +1,159 @@
1
+ Metadata-Version: 2.4
2
+ Name: loop-interpolation-core
3
+ Version: 0.1.0
4
+ Classifier: Development Status :: 4 - Beta
5
+ Classifier: Intended Audience :: Science/Research
6
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
7
+ Classifier: License :: OSI Approved :: MIT License
8
+ Classifier: Operating System :: Microsoft :: Windows
9
+ Classifier: Operating System :: POSIX :: Linux
10
+ Classifier: Operating System :: MacOS
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Rust
13
+ Requires-Dist: numpy
14
+ Summary: Native (Rust) core for the low-memory LoopStructural interpolator
15
+ Author-email: Lachlan Grose <lachlan.grose@monash.edu>
16
+ License: MIT
17
+ Requires-Python: >=3.9
18
+ Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
19
+ Project-URL: Bug Tracker, https://github.com/loop3d/loopstructural/issues
20
+ Project-URL: Documentation, https://Loop3d.org/LoopStructural/
21
+ Project-URL: Source Code, https://github.com/loop3d/loopstructural
22
+
23
+ # loop-interpolation-core
24
+
25
+ ## Purpose
26
+
27
+ This package is the native core of the low-memory interpolator. It is a
28
+ Python extension module, built with maturin. It is named
29
+ `loop_interpolation_core` on import. The package solves the finite
30
+ difference interpolation problem without building the sparse constraint
31
+ rows in Python.
32
+
33
+ The package is optional. The `loop-interpolation` package works without it.
34
+
35
+ ## Specification
36
+
37
+ The requirements and the design are in
38
+ [specs/001-low-memory-interpolator/spec.md](../../specs/001-low-memory-interpolator/spec.md).
39
+
40
+ ## Forms
41
+
42
+ The crate builds in three forms:
43
+
44
+ - Rust library (rlib). Use it from other Rust crates.
45
+ - Python module (PyO3). It uses the abi3 stable ABI, so one wheel works for
46
+ Python 3.9 and later.
47
+ - Browser module (wasm-bindgen). It runs in a Web Worker. The worker code is
48
+ in `web/`.
49
+
50
+ ## Feature flags
51
+
52
+ | Feature | Effect |
53
+ |---|---|
54
+ | `parallel` | Uses rayon threads. Off for cargo by default. On for the Python wheel. |
55
+ | `python` | Builds the PyO3 bindings. |
56
+ | `wasm` | Builds the wasm-bindgen bindings. |
57
+
58
+ With no feature, the code runs on one thread and has no dependency.
59
+
60
+ ## Build commands
61
+
62
+ ### Python module
63
+
64
+ ```text
65
+ pip install maturin
66
+ maturin develop --release -m packages/loop_interpolation_core/Cargo.toml
67
+ ```
68
+
69
+ The `pyproject.toml` sets the features `python` and `parallel`. If you pass
70
+ `--features`, you must list both: `--features python,parallel`. The option
71
+ `--features parallel` alone replaces the list. The build then fails with an
72
+ "install cffi" message.
73
+
74
+ ### Browser module
75
+
76
+ ```text
77
+ bash packages/loop_interpolation_core/scripts/build_wasm.sh
78
+ ```
79
+
80
+ You need these tools:
81
+
82
+ - The `wasm32-unknown-unknown` Rust target.
83
+ - A `wasm-bindgen` CLI with the same version as the `wasm-bindgen` crate in
84
+ `Cargo.lock`. The script stops if the versions differ.
85
+ - `wasm-opt` is optional. If it is missing, the script skips this step.
86
+
87
+ The script writes the output to `packages/loop_interpolation_core/pkg/`.
88
+
89
+ ### Tests and lint
90
+
91
+ Run these commands from `packages/loop_interpolation_core`:
92
+
93
+ ```text
94
+ cargo test --release
95
+ cargo test --release --features parallel
96
+
97
+ cargo clippy --all-targets -- -D warnings
98
+ cargo clippy --all-targets --features python -- -D warnings
99
+ cargo clippy --features wasm --target wasm32-unknown-unknown -- -D warnings
100
+ ```
101
+
102
+ To run the browser tests:
103
+
104
+ ```text
105
+ npm --prefix packages/loop_interpolation_core/tests_web ci
106
+ npm --prefix packages/loop_interpolation_core/tests_web test
107
+ ```
108
+
109
+ ## Contract
110
+
111
+ - Inputs are flat arrays. Points are stored as 3n values, one x, y, z set
112
+ for each point.
113
+ - The grid uses grid coordinates only. The grid has no rotation. The caller
114
+ transforms the coordinates.
115
+ - Node order is x fastest.
116
+ - Errors name the constraint that failed. For example, `value[3]`.
117
+ - A solve is a session. You step the session to advance the solve. To cancel
118
+ it, drop the session.
119
+ - The memory estimate is available before the solve.
120
+ - Set `budget_bytes` to limit the memory of a solve.
121
+
122
+ ## Differences from loop-rs
123
+
124
+ - Grid rotation is removed. The functions `rotation`, `to_local` and
125
+ `direction_to_local` are not in this crate. The `serde` feature is also
126
+ removed.
127
+ - Solve sessions replace the closure-style solvers. A session has step and
128
+ cancel.
129
+ - Memory tracking is new. The crate uses `try_reserve`, a byte budget and a
130
+ memory estimate.
131
+ - Curvature rows are added only at nodes that are interior on all three
132
+ axes. The border rows are centred second derivatives `[1, -2, 1]` on
133
+ layers 1 and n-2. The gradient strike and dip basis is the Python
134
+ strike and dip basis. So the field equals the field of the Python matrix
135
+ solver.
136
+ - Only the ADMM solver is in this crate. There is no active-set solver and
137
+ no hybrid solver. A feasibility check runs before the solve. The solver
138
+ stops when the violation is at most 1e-4 of the field range.
139
+ - Single precision (`f32`) is available. The residual check runs in double
140
+ precision.
141
+
142
+ ## Measured values
143
+
144
+ - Memory: 63 bytes per node for R1, a 100 x 100 x 100 grid with 2000 value
145
+ rows and 500 gradient rows. The value is the peak heap size divided by
146
+ the number of nodes. It does not include the copy of the field that goes
147
+ to JavaScript, which takes 8 bytes per node.
148
+ - Comparison with the Python matrix solver on a 100 x 100 x 100 grid: the
149
+ native solver uses 84 MB where the matrix solver uses 2445 MB (29 times
150
+ less). On one thread it is 10 to 30 percent slower. With the `parallel`
151
+ feature (the default of the Python wheel) it is about 3 times faster. The
152
+ numbers are in `specs/001-low-memory-interpolator/measurements.md`.
153
+ - Browser size: the gzip size of the `.wasm` file is about 92 KB. The
154
+ limit is 2 MB.
155
+
156
+ ## Source
157
+
158
+ Source: loop-rs crates/interpolation-fd, commit bff51342da8ebff7ca3c87e07c1d4fbd31279c8b, branch lachlan/drillhole
159
+
@@ -0,0 +1,6 @@
1
+ loop_interpolation_core/__init__.py,sha256=Myb7CcqcEcWs98Cmfypi3m1MYmA6LNyTVTMbbXrKH4g,175
2
+ loop_interpolation_core/loop_interpolation_core.pyd,sha256=Fzjd5YXsPj_cH9uORK5CUem8W5Yj8atrHD8gBEVu7YQ,1235968
3
+ loop_interpolation_core-0.1.0.dist-info/METADATA,sha256=ac2cnXgvpCGzEwRxAXt9O-KmDoO_gXKnEdRo1cD2Zv0,5916
4
+ loop_interpolation_core-0.1.0.dist-info/WHEEL,sha256=xe4_tbg8wYdeh4O7nLbnWckzIQtCR4nODDgwke_TKy8,95
5
+ loop_interpolation_core-0.1.0.dist-info/sboms/loop-interpolation-core.cyclonedx.json,sha256=fM-YV7F6MWjut1YGa2peKtNYq4M98xoc3C8zCUL0z-4,34042
6
+ loop_interpolation_core-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.15.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp39-abi3-win_amd64
@@ -0,0 +1,1093 @@
1
+ {
2
+ "bomFormat": "CycloneDX",
3
+ "specVersion": "1.5",
4
+ "version": 1,
5
+ "serialNumber": "urn:uuid:76859efa-2efc-4c71-a454-92751c1747f7",
6
+ "metadata": {
7
+ "timestamp": "2026-10-28T09:51:36.039696500Z",
8
+ "tools": [
9
+ {
10
+ "vendor": "CycloneDX",
11
+ "name": "cargo-cyclonedx",
12
+ "version": "0.5.9"
13
+ }
14
+ ],
15
+ "component": {
16
+ "type": "library",
17
+ "bom-ref": "path+file:///D:/a/LoopStructural/LoopStructural/packages/loop_interpolation_core#loop-interpolation-core@0.1.0",
18
+ "name": "loop-interpolation-core",
19
+ "version": "0.1.0",
20
+ "scope": "required",
21
+ "purl": "pkg:cargo/loop-interpolation-core@0.1.0?download_url=file://.",
22
+ "components": [
23
+ {
24
+ "type": "library",
25
+ "bom-ref": "path+file:///D:/a/LoopStructural/LoopStructural/packages/loop_interpolation_core#loop-interpolation-core@0.1.0 bin-target-0",
26
+ "name": "loop_interpolation_core",
27
+ "version": "0.1.0",
28
+ "purl": "pkg:cargo/loop-interpolation-core@0.1.0?download_url=file://.#src/lib.rs"
29
+ }
30
+ ]
31
+ },
32
+ "properties": [
33
+ {
34
+ "name": "cdx:rustc:sbom:target:all_targets",
35
+ "value": "true"
36
+ }
37
+ ]
38
+ },
39
+ "components": [
40
+ {
41
+ "type": "library",
42
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.1",
43
+ "author": "Josh Stone <cuviper@gmail.com>",
44
+ "name": "autocfg",
45
+ "version": "1.5.1",
46
+ "description": "Automatic cfg for Rust compiler features",
47
+ "scope": "excluded",
48
+ "hashes": [
49
+ {
50
+ "alg": "SHA-256",
51
+ "content": "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
52
+ }
53
+ ],
54
+ "licenses": [
55
+ {
56
+ "expression": "Apache-2.0 OR MIT"
57
+ }
58
+ ],
59
+ "purl": "pkg:cargo/autocfg@1.5.1",
60
+ "externalReferences": [
61
+ {
62
+ "type": "documentation",
63
+ "url": "https://docs.rs/autocfg/"
64
+ },
65
+ {
66
+ "type": "vcs",
67
+ "url": "https://github.com/cuviper/autocfg"
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "type": "library",
73
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-deque@0.8.8",
74
+ "name": "crossbeam-deque",
75
+ "version": "0.8.8",
76
+ "description": "Concurrent work-stealing deque",
77
+ "scope": "required",
78
+ "hashes": [
79
+ {
80
+ "alg": "SHA-256",
81
+ "content": "622f3fc73690be383c7214310406f28a90e6edeadc3cea882f9d71e495b9711a"
82
+ }
83
+ ],
84
+ "licenses": [
85
+ {
86
+ "expression": "MIT OR Apache-2.0"
87
+ }
88
+ ],
89
+ "purl": "pkg:cargo/crossbeam-deque@0.8.8",
90
+ "externalReferences": [
91
+ {
92
+ "type": "website",
93
+ "url": "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-deque"
94
+ },
95
+ {
96
+ "type": "vcs",
97
+ "url": "https://github.com/crossbeam-rs/crossbeam"
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "type": "library",
103
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-epoch@0.9.21",
104
+ "name": "crossbeam-epoch",
105
+ "version": "0.9.21",
106
+ "description": "Epoch-based garbage collection",
107
+ "scope": "required",
108
+ "hashes": [
109
+ {
110
+ "alg": "SHA-256",
111
+ "content": "dc74980687109a3b14c72fd458107bf0baa1da1a1a805e178d15501ba9b86d9d"
112
+ }
113
+ ],
114
+ "licenses": [
115
+ {
116
+ "expression": "MIT OR Apache-2.0"
117
+ }
118
+ ],
119
+ "purl": "pkg:cargo/crossbeam-epoch@0.9.21",
120
+ "externalReferences": [
121
+ {
122
+ "type": "website",
123
+ "url": "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-epoch"
124
+ },
125
+ {
126
+ "type": "vcs",
127
+ "url": "https://github.com/crossbeam-rs/crossbeam"
128
+ }
129
+ ]
130
+ },
131
+ {
132
+ "type": "library",
133
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.23",
134
+ "name": "crossbeam-utils",
135
+ "version": "0.8.23",
136
+ "description": "Utilities for concurrent programming",
137
+ "scope": "required",
138
+ "hashes": [
139
+ {
140
+ "alg": "SHA-256",
141
+ "content": "a31eee39dddec8330830986fcd7625edb5a24ec90ea038215273bbc3adb08ac6"
142
+ }
143
+ ],
144
+ "licenses": [
145
+ {
146
+ "expression": "MIT OR Apache-2.0"
147
+ }
148
+ ],
149
+ "purl": "pkg:cargo/crossbeam-utils@0.8.23",
150
+ "externalReferences": [
151
+ {
152
+ "type": "website",
153
+ "url": "https://github.com/crossbeam-rs/crossbeam/tree/master/crossbeam-utils"
154
+ },
155
+ {
156
+ "type": "vcs",
157
+ "url": "https://github.com/crossbeam-rs/crossbeam"
158
+ }
159
+ ]
160
+ },
161
+ {
162
+ "type": "library",
163
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#either@1.19.0",
164
+ "name": "either",
165
+ "version": "1.19.0",
166
+ "description": "The enum `Either` with variants `Left` and `Right` is a general purpose sum type with two cases. ",
167
+ "scope": "required",
168
+ "hashes": [
169
+ {
170
+ "alg": "SHA-256",
171
+ "content": "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be"
172
+ }
173
+ ],
174
+ "licenses": [
175
+ {
176
+ "expression": "MIT OR Apache-2.0"
177
+ }
178
+ ],
179
+ "purl": "pkg:cargo/either@1.19.0",
180
+ "externalReferences": [
181
+ {
182
+ "type": "documentation",
183
+ "url": "https://docs.rs/either/1/"
184
+ },
185
+ {
186
+ "type": "vcs",
187
+ "url": "https://github.com/rayon-rs/either"
188
+ }
189
+ ]
190
+ },
191
+ {
192
+ "type": "library",
193
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0",
194
+ "name": "heck",
195
+ "version": "0.5.0",
196
+ "description": "heck is a case conversion library.",
197
+ "scope": "required",
198
+ "hashes": [
199
+ {
200
+ "alg": "SHA-256",
201
+ "content": "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
202
+ }
203
+ ],
204
+ "licenses": [
205
+ {
206
+ "expression": "MIT OR Apache-2.0"
207
+ }
208
+ ],
209
+ "purl": "pkg:cargo/heck@0.5.0",
210
+ "externalReferences": [
211
+ {
212
+ "type": "vcs",
213
+ "url": "https://github.com/withoutboats/heck"
214
+ }
215
+ ]
216
+ },
217
+ {
218
+ "type": "library",
219
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.191",
220
+ "name": "libc",
221
+ "version": "0.2.191",
222
+ "description": "Raw FFI bindings to platform libraries like libc.",
223
+ "scope": "required",
224
+ "hashes": [
225
+ {
226
+ "alg": "SHA-256",
227
+ "content": "65cd87c9a6d60536580b316ad985726104730a5151c99845f2490428ef91240a"
228
+ }
229
+ ],
230
+ "licenses": [
231
+ {
232
+ "expression": "MIT OR Apache-2.0"
233
+ }
234
+ ],
235
+ "purl": "pkg:cargo/libc@0.2.191",
236
+ "externalReferences": [
237
+ {
238
+ "type": "vcs",
239
+ "url": "https://github.com/rust-lang/libc"
240
+ }
241
+ ]
242
+ },
243
+ {
244
+ "type": "library",
245
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#matrixmultiply@0.3.11",
246
+ "author": "bluss, R. Janis Goldschmidt",
247
+ "name": "matrixmultiply",
248
+ "version": "0.3.11",
249
+ "description": "General matrix multiplication for f32 and f64 matrices. Operates on matrices with general layout (they can use arbitrary row and column stride). Detects and uses SIMD features on x86/x86-64 and AArch64 transparently for higher performance. Uses a microkernel strategy, so that the implementation is easy to parallelize and optimize. Supports multithreading.",
250
+ "scope": "required",
251
+ "hashes": [
252
+ {
253
+ "alg": "SHA-256",
254
+ "content": "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
255
+ }
256
+ ],
257
+ "licenses": [
258
+ {
259
+ "expression": "MIT OR Apache-2.0"
260
+ }
261
+ ],
262
+ "purl": "pkg:cargo/matrixmultiply@0.3.11",
263
+ "externalReferences": [
264
+ {
265
+ "type": "documentation",
266
+ "url": "https://docs.rs/matrixmultiply/"
267
+ },
268
+ {
269
+ "type": "vcs",
270
+ "url": "https://github.com/bluss/matrixmultiply/"
271
+ }
272
+ ]
273
+ },
274
+ {
275
+ "type": "library",
276
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#ndarray@0.17.2",
277
+ "author": "Ulrik Sverdrup \"bluss\", Jim Turner",
278
+ "name": "ndarray",
279
+ "version": "0.17.2",
280
+ "description": "An n-dimensional array for general elements and for numerics. Lightweight array views and slicing; views support chunking and splitting.",
281
+ "scope": "required",
282
+ "hashes": [
283
+ {
284
+ "alg": "SHA-256",
285
+ "content": "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
286
+ }
287
+ ],
288
+ "licenses": [
289
+ {
290
+ "expression": "MIT OR Apache-2.0"
291
+ }
292
+ ],
293
+ "purl": "pkg:cargo/ndarray@0.17.2",
294
+ "externalReferences": [
295
+ {
296
+ "type": "documentation",
297
+ "url": "https://docs.rs/ndarray/"
298
+ },
299
+ {
300
+ "type": "vcs",
301
+ "url": "https://github.com/rust-ndarray/ndarray"
302
+ }
303
+ ]
304
+ },
305
+ {
306
+ "type": "library",
307
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6",
308
+ "author": "The Rust Project Developers",
309
+ "name": "num-complex",
310
+ "version": "0.4.6",
311
+ "description": "Complex numbers implementation for Rust",
312
+ "scope": "required",
313
+ "hashes": [
314
+ {
315
+ "alg": "SHA-256",
316
+ "content": "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
317
+ }
318
+ ],
319
+ "licenses": [
320
+ {
321
+ "expression": "MIT OR Apache-2.0"
322
+ }
323
+ ],
324
+ "purl": "pkg:cargo/num-complex@0.4.6",
325
+ "externalReferences": [
326
+ {
327
+ "type": "documentation",
328
+ "url": "https://docs.rs/num-complex"
329
+ },
330
+ {
331
+ "type": "website",
332
+ "url": "https://github.com/rust-num/num-complex"
333
+ },
334
+ {
335
+ "type": "vcs",
336
+ "url": "https://github.com/rust-num/num-complex"
337
+ }
338
+ ]
339
+ },
340
+ {
341
+ "type": "library",
342
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.47",
343
+ "author": "The Rust Project Developers",
344
+ "name": "num-integer",
345
+ "version": "0.1.47",
346
+ "description": "Integer traits and functions",
347
+ "scope": "required",
348
+ "hashes": [
349
+ {
350
+ "alg": "SHA-256",
351
+ "content": "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
352
+ }
353
+ ],
354
+ "licenses": [
355
+ {
356
+ "expression": "MIT OR Apache-2.0"
357
+ }
358
+ ],
359
+ "purl": "pkg:cargo/num-integer@0.1.47",
360
+ "externalReferences": [
361
+ {
362
+ "type": "documentation",
363
+ "url": "https://docs.rs/num-integer"
364
+ },
365
+ {
366
+ "type": "website",
367
+ "url": "https://github.com/rust-num/num-integer"
368
+ },
369
+ {
370
+ "type": "vcs",
371
+ "url": "https://github.com/rust-num/num-integer"
372
+ }
373
+ ]
374
+ },
375
+ {
376
+ "type": "library",
377
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19",
378
+ "author": "The Rust Project Developers",
379
+ "name": "num-traits",
380
+ "version": "0.2.19",
381
+ "description": "Numeric traits for generic mathematics",
382
+ "scope": "required",
383
+ "hashes": [
384
+ {
385
+ "alg": "SHA-256",
386
+ "content": "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
387
+ }
388
+ ],
389
+ "licenses": [
390
+ {
391
+ "expression": "MIT OR Apache-2.0"
392
+ }
393
+ ],
394
+ "purl": "pkg:cargo/num-traits@0.2.19",
395
+ "externalReferences": [
396
+ {
397
+ "type": "documentation",
398
+ "url": "https://docs.rs/num-traits"
399
+ },
400
+ {
401
+ "type": "website",
402
+ "url": "https://github.com/rust-num/num-traits"
403
+ },
404
+ {
405
+ "type": "vcs",
406
+ "url": "https://github.com/rust-num/num-traits"
407
+ }
408
+ ]
409
+ },
410
+ {
411
+ "type": "library",
412
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#numpy@0.29.0",
413
+ "author": "The rust-numpy Project Developers, PyO3 Project and Contributors <https://github.com/PyO3>",
414
+ "name": "numpy",
415
+ "version": "0.29.0",
416
+ "description": "PyO3-based Rust bindings of the NumPy C-API",
417
+ "scope": "required",
418
+ "hashes": [
419
+ {
420
+ "alg": "SHA-256",
421
+ "content": "6a5b15d63a5ff39e378daed0e1340d3a5964703ea9712eb09a0dc66fade996f4"
422
+ }
423
+ ],
424
+ "licenses": [
425
+ {
426
+ "expression": "BSD-2-Clause"
427
+ }
428
+ ],
429
+ "purl": "pkg:cargo/numpy@0.29.0",
430
+ "externalReferences": [
431
+ {
432
+ "type": "documentation",
433
+ "url": "https://docs.rs/numpy"
434
+ },
435
+ {
436
+ "type": "vcs",
437
+ "url": "https://github.com/PyO3/rust-numpy"
438
+ }
439
+ ]
440
+ },
441
+ {
442
+ "type": "library",
443
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4",
444
+ "author": "Aleksey Kladov <aleksey.kladov@gmail.com>",
445
+ "name": "once_cell",
446
+ "version": "1.21.4",
447
+ "description": "Single assignment cells and lazy values.",
448
+ "scope": "required",
449
+ "hashes": [
450
+ {
451
+ "alg": "SHA-256",
452
+ "content": "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
453
+ }
454
+ ],
455
+ "licenses": [
456
+ {
457
+ "expression": "MIT OR Apache-2.0"
458
+ }
459
+ ],
460
+ "purl": "pkg:cargo/once_cell@1.21.4",
461
+ "externalReferences": [
462
+ {
463
+ "type": "documentation",
464
+ "url": "https://docs.rs/once_cell"
465
+ },
466
+ {
467
+ "type": "vcs",
468
+ "url": "https://github.com/matklad/once_cell"
469
+ }
470
+ ]
471
+ },
472
+ {
473
+ "type": "library",
474
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107",
475
+ "author": "David Tolnay <dtolnay@gmail.com>, Alex Crichton <alex@alexcrichton.com>",
476
+ "name": "proc-macro2",
477
+ "version": "1.0.107",
478
+ "description": "A substitute implementation of the compiler's `proc_macro` API to decouple token-based libraries from the procedural macro use case.",
479
+ "scope": "required",
480
+ "hashes": [
481
+ {
482
+ "alg": "SHA-256",
483
+ "content": "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
484
+ }
485
+ ],
486
+ "licenses": [
487
+ {
488
+ "expression": "MIT OR Apache-2.0"
489
+ }
490
+ ],
491
+ "purl": "pkg:cargo/proc-macro2@1.0.107",
492
+ "externalReferences": [
493
+ {
494
+ "type": "documentation",
495
+ "url": "https://docs.rs/proc-macro2"
496
+ },
497
+ {
498
+ "type": "vcs",
499
+ "url": "https://github.com/dtolnay/proc-macro2"
500
+ }
501
+ ]
502
+ },
503
+ {
504
+ "type": "library",
505
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.3",
506
+ "author": "PyO3 Project and Contributors <https://github.com/PyO3>",
507
+ "name": "pyo3-build-config",
508
+ "version": "0.29.3",
509
+ "description": "Build configuration for the PyO3 ecosystem",
510
+ "scope": "excluded",
511
+ "hashes": [
512
+ {
513
+ "alg": "SHA-256",
514
+ "content": "7b3fc0c4d08f6bb10e71fe39dfb9e2f59c6eb6854e22ec8092f50c69a4499adb"
515
+ }
516
+ ],
517
+ "licenses": [
518
+ {
519
+ "expression": "MIT OR Apache-2.0"
520
+ }
521
+ ],
522
+ "purl": "pkg:cargo/pyo3-build-config@0.29.3",
523
+ "externalReferences": [
524
+ {
525
+ "type": "website",
526
+ "url": "https://github.com/pyo3/pyo3"
527
+ },
528
+ {
529
+ "type": "vcs",
530
+ "url": "https://github.com/pyo3/pyo3"
531
+ }
532
+ ]
533
+ },
534
+ {
535
+ "type": "library",
536
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.3",
537
+ "author": "PyO3 Project and Contributors <https://github.com/PyO3>",
538
+ "name": "pyo3-ffi",
539
+ "version": "0.29.3",
540
+ "description": "Python-API bindings for the PyO3 ecosystem",
541
+ "scope": "required",
542
+ "hashes": [
543
+ {
544
+ "alg": "SHA-256",
545
+ "content": "dfc0b8e19df29aad7086cf977bb0c2a2f143e30567eb113e9cf72b62ca698330"
546
+ }
547
+ ],
548
+ "licenses": [
549
+ {
550
+ "expression": "MIT OR Apache-2.0"
551
+ }
552
+ ],
553
+ "purl": "pkg:cargo/pyo3-ffi@0.29.3",
554
+ "externalReferences": [
555
+ {
556
+ "type": "website",
557
+ "url": "https://github.com/pyo3/pyo3"
558
+ },
559
+ {
560
+ "type": "other",
561
+ "url": "python"
562
+ },
563
+ {
564
+ "type": "vcs",
565
+ "url": "https://github.com/pyo3/pyo3"
566
+ }
567
+ ]
568
+ },
569
+ {
570
+ "type": "library",
571
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.3",
572
+ "author": "PyO3 Project and Contributors <https://github.com/PyO3>",
573
+ "name": "pyo3-macros-backend",
574
+ "version": "0.29.3",
575
+ "description": "Code generation for PyO3 package",
576
+ "scope": "required",
577
+ "hashes": [
578
+ {
579
+ "alg": "SHA-256",
580
+ "content": "6143877a16e82b5a727b7127ff4cd86858a24a28d745d72f43e6f227c7b1bdb3"
581
+ }
582
+ ],
583
+ "licenses": [
584
+ {
585
+ "expression": "MIT OR Apache-2.0"
586
+ }
587
+ ],
588
+ "purl": "pkg:cargo/pyo3-macros-backend@0.29.3",
589
+ "externalReferences": [
590
+ {
591
+ "type": "website",
592
+ "url": "https://github.com/pyo3/pyo3"
593
+ },
594
+ {
595
+ "type": "vcs",
596
+ "url": "https://github.com/pyo3/pyo3"
597
+ }
598
+ ]
599
+ },
600
+ {
601
+ "type": "library",
602
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.3",
603
+ "author": "PyO3 Project and Contributors <https://github.com/PyO3>",
604
+ "name": "pyo3-macros",
605
+ "version": "0.29.3",
606
+ "description": "Proc macros for PyO3 package",
607
+ "scope": "required",
608
+ "hashes": [
609
+ {
610
+ "alg": "SHA-256",
611
+ "content": "6100e8a4b5eba53afaa5ed078364851a0b2499c553a44c31026b929049b49dc6"
612
+ }
613
+ ],
614
+ "licenses": [
615
+ {
616
+ "expression": "MIT OR Apache-2.0"
617
+ }
618
+ ],
619
+ "purl": "pkg:cargo/pyo3-macros@0.29.3",
620
+ "externalReferences": [
621
+ {
622
+ "type": "website",
623
+ "url": "https://github.com/pyo3/pyo3"
624
+ },
625
+ {
626
+ "type": "vcs",
627
+ "url": "https://github.com/pyo3/pyo3"
628
+ }
629
+ ]
630
+ },
631
+ {
632
+ "type": "library",
633
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.3",
634
+ "author": "PyO3 Project and Contributors <https://github.com/PyO3>",
635
+ "name": "pyo3",
636
+ "version": "0.29.3",
637
+ "description": "Bindings to Python interpreter",
638
+ "scope": "required",
639
+ "hashes": [
640
+ {
641
+ "alg": "SHA-256",
642
+ "content": "700d18fa267b73b9b521fd7e13580e2f446916f176cacee1ab63fcc8191f1655"
643
+ }
644
+ ],
645
+ "licenses": [
646
+ {
647
+ "expression": "MIT OR Apache-2.0"
648
+ }
649
+ ],
650
+ "purl": "pkg:cargo/pyo3@0.29.3",
651
+ "externalReferences": [
652
+ {
653
+ "type": "documentation",
654
+ "url": "https://docs.rs/crate/pyo3/"
655
+ },
656
+ {
657
+ "type": "website",
658
+ "url": "https://github.com/pyo3/pyo3"
659
+ },
660
+ {
661
+ "type": "other",
662
+ "url": "pyo3-python"
663
+ },
664
+ {
665
+ "type": "vcs",
666
+ "url": "https://github.com/pyo3/pyo3"
667
+ }
668
+ ]
669
+ },
670
+ {
671
+ "type": "library",
672
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.47",
673
+ "author": "David Tolnay <dtolnay@gmail.com>",
674
+ "name": "quote",
675
+ "version": "1.0.47",
676
+ "description": "Quasi-quoting macro quote!(...)",
677
+ "scope": "required",
678
+ "hashes": [
679
+ {
680
+ "alg": "SHA-256",
681
+ "content": "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
682
+ }
683
+ ],
684
+ "licenses": [
685
+ {
686
+ "expression": "MIT OR Apache-2.0"
687
+ }
688
+ ],
689
+ "purl": "pkg:cargo/quote@1.0.47",
690
+ "externalReferences": [
691
+ {
692
+ "type": "documentation",
693
+ "url": "https://docs.rs/quote/"
694
+ },
695
+ {
696
+ "type": "vcs",
697
+ "url": "https://github.com/dtolnay/quote"
698
+ }
699
+ ]
700
+ },
701
+ {
702
+ "type": "library",
703
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#rawpointer@0.2.1",
704
+ "author": "bluss",
705
+ "name": "rawpointer",
706
+ "version": "0.2.1",
707
+ "description": "Extra methods for raw pointers and `NonNull<T>`. For example `.post_inc()` and `.pre_dec()` (c.f. `ptr++` and `--ptr`), `offset` and `add` for `NonNull<T>`, and the function `ptrdistance`. ",
708
+ "scope": "required",
709
+ "hashes": [
710
+ {
711
+ "alg": "SHA-256",
712
+ "content": "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
713
+ }
714
+ ],
715
+ "licenses": [
716
+ {
717
+ "expression": "MIT OR Apache-2.0"
718
+ }
719
+ ],
720
+ "purl": "pkg:cargo/rawpointer@0.2.1",
721
+ "externalReferences": [
722
+ {
723
+ "type": "documentation",
724
+ "url": "https://docs.rs/rawpointer/"
725
+ },
726
+ {
727
+ "type": "vcs",
728
+ "url": "https://github.com/bluss/rawpointer/"
729
+ }
730
+ ]
731
+ },
732
+ {
733
+ "type": "library",
734
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0",
735
+ "name": "rayon-core",
736
+ "version": "1.13.0",
737
+ "description": "Core APIs for Rayon",
738
+ "scope": "required",
739
+ "hashes": [
740
+ {
741
+ "alg": "SHA-256",
742
+ "content": "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
743
+ }
744
+ ],
745
+ "licenses": [
746
+ {
747
+ "expression": "MIT OR Apache-2.0"
748
+ }
749
+ ],
750
+ "purl": "pkg:cargo/rayon-core@1.13.0",
751
+ "externalReferences": [
752
+ {
753
+ "type": "documentation",
754
+ "url": "https://docs.rs/rayon-core/"
755
+ },
756
+ {
757
+ "type": "other",
758
+ "url": "rayon-core"
759
+ },
760
+ {
761
+ "type": "vcs",
762
+ "url": "https://github.com/rayon-rs/rayon"
763
+ }
764
+ ]
765
+ },
766
+ {
767
+ "type": "library",
768
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#rayon@1.12.0",
769
+ "name": "rayon",
770
+ "version": "1.12.0",
771
+ "description": "Simple work-stealing parallelism for Rust",
772
+ "scope": "required",
773
+ "hashes": [
774
+ {
775
+ "alg": "SHA-256",
776
+ "content": "fb39b166781f92d482534ef4b4b1b2568f42613b53e5b6c160e24cfbfa30926d"
777
+ }
778
+ ],
779
+ "licenses": [
780
+ {
781
+ "expression": "MIT OR Apache-2.0"
782
+ }
783
+ ],
784
+ "purl": "pkg:cargo/rayon@1.12.0",
785
+ "externalReferences": [
786
+ {
787
+ "type": "documentation",
788
+ "url": "https://docs.rs/rayon/"
789
+ },
790
+ {
791
+ "type": "vcs",
792
+ "url": "https://github.com/rayon-rs/rayon"
793
+ }
794
+ ]
795
+ },
796
+ {
797
+ "type": "library",
798
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#rustc-hash@2.1.3",
799
+ "author": "The Rust Project Developers",
800
+ "name": "rustc-hash",
801
+ "version": "2.1.3",
802
+ "description": "A speedy, non-cryptographic hashing algorithm used by rustc",
803
+ "scope": "required",
804
+ "hashes": [
805
+ {
806
+ "alg": "SHA-256",
807
+ "content": "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
808
+ }
809
+ ],
810
+ "licenses": [
811
+ {
812
+ "expression": "Apache-2.0 OR MIT"
813
+ }
814
+ ],
815
+ "purl": "pkg:cargo/rustc-hash@2.1.3",
816
+ "externalReferences": [
817
+ {
818
+ "type": "vcs",
819
+ "url": "https://github.com/rust-lang/rustc-hash"
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "type": "library",
825
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.119",
826
+ "author": "David Tolnay <dtolnay@gmail.com>",
827
+ "name": "syn",
828
+ "version": "2.0.119",
829
+ "description": "Parser for Rust source code",
830
+ "scope": "required",
831
+ "hashes": [
832
+ {
833
+ "alg": "SHA-256",
834
+ "content": "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
835
+ }
836
+ ],
837
+ "licenses": [
838
+ {
839
+ "expression": "MIT OR Apache-2.0"
840
+ }
841
+ ],
842
+ "purl": "pkg:cargo/syn@2.0.119",
843
+ "externalReferences": [
844
+ {
845
+ "type": "documentation",
846
+ "url": "https://docs.rs/syn"
847
+ },
848
+ {
849
+ "type": "vcs",
850
+ "url": "https://github.com/dtolnay/syn"
851
+ }
852
+ ]
853
+ },
854
+ {
855
+ "type": "library",
856
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5",
857
+ "author": "Dan Gohman <sunfish@mozilla.com>",
858
+ "name": "target-lexicon",
859
+ "version": "0.13.5",
860
+ "description": "LLVM target triple types",
861
+ "scope": "excluded",
862
+ "hashes": [
863
+ {
864
+ "alg": "SHA-256",
865
+ "content": "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
866
+ }
867
+ ],
868
+ "licenses": [
869
+ {
870
+ "expression": "Apache-2.0 WITH LLVM-exception"
871
+ }
872
+ ],
873
+ "purl": "pkg:cargo/target-lexicon@0.13.5",
874
+ "externalReferences": [
875
+ {
876
+ "type": "documentation",
877
+ "url": "https://docs.rs/target-lexicon/"
878
+ },
879
+ {
880
+ "type": "vcs",
881
+ "url": "https://github.com/bytecodealliance/target-lexicon"
882
+ }
883
+ ]
884
+ },
885
+ {
886
+ "type": "library",
887
+ "bom-ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.27",
888
+ "author": "David Tolnay <dtolnay@gmail.com>",
889
+ "name": "unicode-ident",
890
+ "version": "1.0.27",
891
+ "description": "Determine whether characters have the XID_Start or XID_Continue properties according to Unicode Standard Annex #31",
892
+ "scope": "required",
893
+ "hashes": [
894
+ {
895
+ "alg": "SHA-256",
896
+ "content": "a2c754d6c33795a1c324727428e5a7dedb5b06195f9890bdbcba760d3e246563"
897
+ }
898
+ ],
899
+ "licenses": [
900
+ {
901
+ "expression": "(MIT OR Apache-2.0) AND Unicode-3.0"
902
+ }
903
+ ],
904
+ "purl": "pkg:cargo/unicode-ident@1.0.27",
905
+ "externalReferences": [
906
+ {
907
+ "type": "documentation",
908
+ "url": "https://docs.rs/unicode-ident"
909
+ },
910
+ {
911
+ "type": "vcs",
912
+ "url": "https://github.com/dtolnay/unicode-ident"
913
+ }
914
+ ]
915
+ }
916
+ ],
917
+ "dependencies": [
918
+ {
919
+ "ref": "path+file:///D:/a/LoopStructural/LoopStructural/packages/loop_interpolation_core#loop-interpolation-core@0.1.0",
920
+ "dependsOn": [
921
+ "registry+https://github.com/rust-lang/crates.io-index#numpy@0.29.0",
922
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.3",
923
+ "registry+https://github.com/rust-lang/crates.io-index#rayon@1.12.0"
924
+ ]
925
+ },
926
+ {
927
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.1"
928
+ },
929
+ {
930
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-deque@0.8.8",
931
+ "dependsOn": [
932
+ "registry+https://github.com/rust-lang/crates.io-index#crossbeam-epoch@0.9.21",
933
+ "registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.23"
934
+ ]
935
+ },
936
+ {
937
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-epoch@0.9.21",
938
+ "dependsOn": [
939
+ "registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.23"
940
+ ]
941
+ },
942
+ {
943
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.23"
944
+ },
945
+ {
946
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#either@1.19.0"
947
+ },
948
+ {
949
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0"
950
+ },
951
+ {
952
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.191"
953
+ },
954
+ {
955
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#matrixmultiply@0.3.11",
956
+ "dependsOn": [
957
+ "registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.1",
958
+ "registry+https://github.com/rust-lang/crates.io-index#rawpointer@0.2.1"
959
+ ]
960
+ },
961
+ {
962
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#ndarray@0.17.2",
963
+ "dependsOn": [
964
+ "registry+https://github.com/rust-lang/crates.io-index#matrixmultiply@0.3.11",
965
+ "registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6",
966
+ "registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.47",
967
+ "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19",
968
+ "registry+https://github.com/rust-lang/crates.io-index#rawpointer@0.2.1"
969
+ ]
970
+ },
971
+ {
972
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6",
973
+ "dependsOn": [
974
+ "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19"
975
+ ]
976
+ },
977
+ {
978
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.47",
979
+ "dependsOn": [
980
+ "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19"
981
+ ]
982
+ },
983
+ {
984
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19",
985
+ "dependsOn": [
986
+ "registry+https://github.com/rust-lang/crates.io-index#autocfg@1.5.1"
987
+ ]
988
+ },
989
+ {
990
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#numpy@0.29.0",
991
+ "dependsOn": [
992
+ "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.191",
993
+ "registry+https://github.com/rust-lang/crates.io-index#ndarray@0.17.2",
994
+ "registry+https://github.com/rust-lang/crates.io-index#num-complex@0.4.6",
995
+ "registry+https://github.com/rust-lang/crates.io-index#num-integer@0.1.47",
996
+ "registry+https://github.com/rust-lang/crates.io-index#num-traits@0.2.19",
997
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.3",
998
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.3",
999
+ "registry+https://github.com/rust-lang/crates.io-index#rustc-hash@2.1.3"
1000
+ ]
1001
+ },
1002
+ {
1003
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4"
1004
+ },
1005
+ {
1006
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107",
1007
+ "dependsOn": [
1008
+ "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.27"
1009
+ ]
1010
+ },
1011
+ {
1012
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.3",
1013
+ "dependsOn": [
1014
+ "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5"
1015
+ ]
1016
+ },
1017
+ {
1018
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.3",
1019
+ "dependsOn": [
1020
+ "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.191",
1021
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.3"
1022
+ ]
1023
+ },
1024
+ {
1025
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.3",
1026
+ "dependsOn": [
1027
+ "registry+https://github.com/rust-lang/crates.io-index#heck@0.5.0",
1028
+ "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107",
1029
+ "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.47",
1030
+ "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.119"
1031
+ ]
1032
+ },
1033
+ {
1034
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.3",
1035
+ "dependsOn": [
1036
+ "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107",
1037
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros-backend@0.29.3",
1038
+ "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.47",
1039
+ "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.119"
1040
+ ]
1041
+ },
1042
+ {
1043
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#pyo3@0.29.3",
1044
+ "dependsOn": [
1045
+ "registry+https://github.com/rust-lang/crates.io-index#libc@0.2.191",
1046
+ "registry+https://github.com/rust-lang/crates.io-index#once_cell@1.21.4",
1047
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-build-config@0.29.3",
1048
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-ffi@0.29.3",
1049
+ "registry+https://github.com/rust-lang/crates.io-index#pyo3-macros@0.29.3"
1050
+ ]
1051
+ },
1052
+ {
1053
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.47",
1054
+ "dependsOn": [
1055
+ "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107"
1056
+ ]
1057
+ },
1058
+ {
1059
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#rawpointer@0.2.1"
1060
+ },
1061
+ {
1062
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0",
1063
+ "dependsOn": [
1064
+ "registry+https://github.com/rust-lang/crates.io-index#crossbeam-deque@0.8.8",
1065
+ "registry+https://github.com/rust-lang/crates.io-index#crossbeam-utils@0.8.23"
1066
+ ]
1067
+ },
1068
+ {
1069
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#rayon@1.12.0",
1070
+ "dependsOn": [
1071
+ "registry+https://github.com/rust-lang/crates.io-index#either@1.19.0",
1072
+ "registry+https://github.com/rust-lang/crates.io-index#rayon-core@1.13.0"
1073
+ ]
1074
+ },
1075
+ {
1076
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#rustc-hash@2.1.3"
1077
+ },
1078
+ {
1079
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#syn@2.0.119",
1080
+ "dependsOn": [
1081
+ "registry+https://github.com/rust-lang/crates.io-index#proc-macro2@1.0.107",
1082
+ "registry+https://github.com/rust-lang/crates.io-index#quote@1.0.47",
1083
+ "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.27"
1084
+ ]
1085
+ },
1086
+ {
1087
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#target-lexicon@0.13.5"
1088
+ },
1089
+ {
1090
+ "ref": "registry+https://github.com/rust-lang/crates.io-index#unicode-ident@1.0.27"
1091
+ }
1092
+ ]
1093
+ }