rustures 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.
Files changed (93) hide show
  1. rustures-0.1.0/.github/workflows/release.yml +218 -0
  2. rustures-0.1.0/.gitignore +99 -0
  3. rustures-0.1.0/Cargo.lock +368 -0
  4. rustures-0.1.0/Cargo.toml +38 -0
  5. rustures-0.1.0/LICENSE-APACHE +201 -0
  6. rustures-0.1.0/LICENSE-MIT +21 -0
  7. rustures-0.1.0/PKG-INFO +18 -0
  8. rustures-0.1.0/README.md +394 -0
  9. rustures-0.1.0/THIRD-PARTY-LICENSES +1517 -0
  10. rustures-0.1.0/about.hbs +36 -0
  11. rustures-0.1.0/about.toml +19 -0
  12. rustures-0.1.0/artifacts/validation/core-mass-20260830.json +1116 -0
  13. rustures-0.1.0/artifacts/validation/l1-potts-benchmark.json +167 -0
  14. rustures-0.1.0/artifacts/validation/linear-offset-sweep-after-fix.json +4295 -0
  15. rustures-0.1.0/artifacts/validation/linear-offset-sweep.json +3996 -0
  16. rustures-0.1.0/artifacts/validation/mass-after-fix-seed-20260830.json +400 -0
  17. rustures-0.1.0/artifacts/validation/mass-after-fix-seed-314159.json +482 -0
  18. rustures-0.1.0/artifacts/validation/mass-after-fix-seed-42.json +453 -0
  19. rustures-0.1.0/artifacts/validation/mass-seed-20260830.json +5529 -0
  20. rustures-0.1.0/artifacts/validation/mass-seed-314159.json +4991 -0
  21. rustures-0.1.0/artifacts/validation/mass-seed-42.json +5437 -0
  22. rustures-0.1.0/artifacts/validation/phase7-k-n-benchmark.json +576 -0
  23. rustures-0.1.0/artifacts/validation/phase9-dynp-peak-memory.json +57 -0
  24. rustures-0.1.0/artifacts/validation/phase9-final-regression-benchmark.json +576 -0
  25. rustures-0.1.0/artifacts/validation/phase9-memory-hardened-stage7-8-validation.json +306 -0
  26. rustures-0.1.0/artifacts/validation/phase9-regression-endpoint-benchmark.json +576 -0
  27. rustures-0.1.0/artifacts/validation/phase9-regression-memory-hardened-benchmark.json +576 -0
  28. rustures-0.1.0/artifacts/validation/phase9-regression-stage7-8-validation.json +306 -0
  29. rustures-0.1.0/artifacts/validation/smoke-corrected.json +1440 -0
  30. rustures-0.1.0/artifacts/validation/stage7-8-parity.json +306 -0
  31. rustures-0.1.0/benches/cost_l2.rs +35 -0
  32. rustures-0.1.0/benches/dynp.rs +47 -0
  33. rustures-0.1.0/benches/pelt.rs +69 -0
  34. rustures-0.1.0/benchmarks/benchmark_custom_cost.py +139 -0
  35. rustures-0.1.0/benchmarks/benchmark_dynp_memory.py +132 -0
  36. rustures-0.1.0/benchmarks/benchmark_l1_potts.py +88 -0
  37. rustures-0.1.0/benchmarks/benchmark_phase7_costs.py +125 -0
  38. rustures-0.1.0/benchmarks/compare_dynp.py +120 -0
  39. rustures-0.1.0/benchmarks/compare_greedy.py +61 -0
  40. rustures-0.1.0/benchmarks/compare_kernel_k.py +196 -0
  41. rustures-0.1.0/benchmarks/compare_kernel_rbf.py +67 -0
  42. rustures-0.1.0/benchmarks/compare_pelt.py +154 -0
  43. rustures-0.1.0/benchmarks/diagnose_linear_offsets.py +154 -0
  44. rustures-0.1.0/benchmarks/validate_algorithms.py +707 -0
  45. rustures-0.1.0/benchmarks/validate_stage7_8.py +108 -0
  46. rustures-0.1.0/examples/rustures_tutorial_ko.ipynb +471 -0
  47. rustures-0.1.0/pyproject.toml +31 -0
  48. rustures-0.1.0/python/rustures/__init__.py +41 -0
  49. rustures-0.1.0/python/rustures/__init__.pyi +161 -0
  50. rustures-0.1.0/python/rustures/py.typed +1 -0
  51. rustures-0.1.0/scripts/custom_cost_wheel_smoke.py +91 -0
  52. rustures-0.1.0/src/core/error.rs +165 -0
  53. rustures-0.1.0/src/core/mod.rs +3 -0
  54. rustures-0.1.0/src/core/segmentation.rs +363 -0
  55. rustures-0.1.0/src/core/signal.rs +139 -0
  56. rustures-0.1.0/src/cost/ar.rs +181 -0
  57. rustures-0.1.0/src/cost/clinear.rs +62 -0
  58. rustures-0.1.0/src/cost/l1.rs +67 -0
  59. rustures-0.1.0/src/cost/l2.rs +283 -0
  60. rustures-0.1.0/src/cost/linear.rs +350 -0
  61. rustures-0.1.0/src/cost/mahalanobis.rs +79 -0
  62. rustures-0.1.0/src/cost/mod.rs +58 -0
  63. rustures-0.1.0/src/cost/model.rs +193 -0
  64. rustures-0.1.0/src/cost/normal.rs +71 -0
  65. rustures-0.1.0/src/cost/rank.rs +109 -0
  66. rustures-0.1.0/src/cost/scatter.rs +168 -0
  67. rustures-0.1.0/src/datasets/mod.rs +221 -0
  68. rustures-0.1.0/src/kernel/mod.rs +801 -0
  69. rustures-0.1.0/src/lib.rs +31 -0
  70. rustures-0.1.0/src/metrics/mod.rs +160 -0
  71. rustures-0.1.0/src/python/boundary.rs +96 -0
  72. rustures-0.1.0/src/python/custom_cost.rs +264 -0
  73. rustures-0.1.0/src/python/error.rs +23 -0
  74. rustures-0.1.0/src/python/mod.rs +1667 -0
  75. rustures-0.1.0/src/search/dynp.rs +627 -0
  76. rustures-0.1.0/src/search/greedy.rs +622 -0
  77. rustures-0.1.0/src/search/kernel_cpd.rs +1483 -0
  78. rustures-0.1.0/src/search/l1_potts.rs +255 -0
  79. rustures-0.1.0/src/search/mod.rs +25 -0
  80. rustures-0.1.0/src/search/pelt.rs +502 -0
  81. rustures-0.1.0/src/testing/mod.rs +1 -0
  82. rustures-0.1.0/src/testing/oracle.rs +151 -0
  83. rustures-0.1.0/tests/fixture_contract.toml +17 -0
  84. rustures-0.1.0/tests/fixtures/reference_snapshot.json +9 -0
  85. rustures-0.1.0/tests/fixtures/ruptures_cost_l2_v1.json +21 -0
  86. rustures-0.1.0/tests/fixtures/ruptures_dynp_l2_nonzero_v1.json +25 -0
  87. rustures-0.1.0/tests/fixtures/ruptures_dynp_l2_v1.json +25 -0
  88. rustures-0.1.0/tests/fixtures/ruptures_pelt_l2_v1.json +38 -0
  89. rustures-0.1.0/tests/fixtures/ruptures_phase4_6_v1.json +31 -0
  90. rustures-0.1.0/tests/fixtures/schema.json +54 -0
  91. rustures-0.1.0/tests/python/test_panic_boundary.py +28 -0
  92. rustures-0.1.0/tests/python/test_wheel.py +821 -0
  93. rustures-0.1.0/tests/regression_mass.rs +234 -0
@@ -0,0 +1,218 @@
1
+ name: Build and publish Python distributions
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+ workflow_dispatch:
8
+ inputs:
9
+ publish:
10
+ description: "Publish the verified artifacts to PyPI"
11
+ required: true
12
+ default: false
13
+ type: boolean
14
+
15
+ concurrency:
16
+ group: release-${{ github.ref }}
17
+ cancel-in-progress: false
18
+
19
+ # Jobs receive no write access unless they opt in below.
20
+ permissions:
21
+ contents: read
22
+
23
+ env:
24
+ MATURIN_VERSION: "v1.14.1"
25
+ TEST_PYTHON: "3.10"
26
+
27
+ jobs:
28
+ validate-source:
29
+ name: Validate source and Rust tests
30
+ runs-on: ubuntu-24.04
31
+
32
+ steps:
33
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
34
+ with:
35
+ persist-credentials: false
36
+
37
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
38
+ with:
39
+ python-version: "3.11"
40
+
41
+ - name: Check package versions and release tag
42
+ env:
43
+ RELEASE_REF_TYPE: ${{ github.ref_type }}
44
+ RELEASE_REF_NAME: ${{ github.ref_name }}
45
+ run: |
46
+ python - <<'PY'
47
+ import os
48
+ import tomllib
49
+ from pathlib import Path
50
+
51
+ pyproject = tomllib.loads(Path("pyproject.toml").read_text(encoding="utf-8"))
52
+ cargo = tomllib.loads(Path("Cargo.toml").read_text(encoding="utf-8"))
53
+ python_version = pyproject["project"]["version"]
54
+ rust_version = cargo["package"]["version"]
55
+
56
+ if python_version != rust_version:
57
+ raise SystemExit(
58
+ f"pyproject.toml ({python_version}) and Cargo.toml "
59
+ f"({rust_version}) versions differ"
60
+ )
61
+
62
+ if os.environ["RELEASE_REF_TYPE"] == "tag":
63
+ tag_version = os.environ["RELEASE_REF_NAME"].removeprefix("v")
64
+ if tag_version != python_version:
65
+ raise SystemExit(
66
+ f"tag version ({tag_version}) does not match package "
67
+ f"version ({python_version})"
68
+ )
69
+
70
+ print(f"validated package version {python_version}")
71
+ PY
72
+
73
+ - name: Run Rust tests
74
+ run: cargo test --locked
75
+
76
+ build-wheels:
77
+ name: Wheel (${{ matrix.artifact }})
78
+ needs: validate-source
79
+ runs-on: ${{ matrix.runner }}
80
+ strategy:
81
+ fail-fast: false
82
+ matrix:
83
+ include:
84
+ - runner: ubuntu-24.04
85
+ target: x86_64-unknown-linux-gnu
86
+ manylinux: "2014"
87
+ artifact: linux-x86_64
88
+ - runner: ubuntu-24.04-arm
89
+ target: aarch64-unknown-linux-gnu
90
+ manylinux: "2014"
91
+ artifact: linux-aarch64
92
+ - runner: windows-2025
93
+ target: x86_64-pc-windows-msvc
94
+ manylinux: "off"
95
+ artifact: windows-x86_64
96
+ - runner: macos-15-intel
97
+ target: x86_64-apple-darwin
98
+ manylinux: "off"
99
+ artifact: macos-x86_64
100
+ - runner: macos-15
101
+ target: aarch64-apple-darwin
102
+ manylinux: "off"
103
+ artifact: macos-aarch64
104
+
105
+ steps:
106
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
107
+ with:
108
+ persist-credentials: false
109
+
110
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
111
+ with:
112
+ python-version: ${{ env.TEST_PYTHON }}
113
+
114
+ - name: Build wheel
115
+ uses: PyO3/maturin-action@423a6347767a8b16e65c2a7a7042e4a921528da8 # v1
116
+ with:
117
+ maturin-version: ${{ env.MATURIN_VERSION }}
118
+ command: build
119
+ target: ${{ matrix.target }}
120
+ manylinux: ${{ matrix.manylinux }}
121
+ args: >-
122
+ --release --locked --compatibility pypi --out dist
123
+
124
+ - name: Install wheel in a clean Python environment
125
+ run: |
126
+ python -m pip install --upgrade pip
127
+ python -m pip install "numpy>=1.23"
128
+ python -m pip install --no-index --no-deps --find-links dist rustures
129
+ python -m pip check
130
+
131
+ - name: Test installed wheel
132
+ run: |
133
+ python tests/python/test_wheel.py
134
+ python -c "from rustures import _rustures as native; assert not hasattr(native, '_panic_test_hook')"
135
+
136
+ - name: Check packaged metadata and licenses
137
+ run: >-
138
+ python -c "from importlib.metadata import files, metadata;
139
+ m=metadata('rustures'); p=[str(x) for x in files('rustures')];
140
+ assert m['Requires-Python'] == '>=3.10';
141
+ assert m['License-Expression'] == 'MIT OR Apache-2.0';
142
+ assert any(x.endswith('LICENSE-MIT') for x in p);
143
+ assert any(x.endswith('LICENSE-APACHE') for x in p);
144
+ assert any(x.endswith('THIRD-PARTY-LICENSES') for x in p);
145
+ assert any(x.endswith('rustures/py.typed') for x in p)"
146
+
147
+ - name: Upload verified wheel
148
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
149
+ with:
150
+ name: release-wheel-${{ matrix.artifact }}
151
+ path: dist/*.whl
152
+ if-no-files-found: error
153
+ retention-days: 14
154
+
155
+ build-sdist:
156
+ name: Source distribution
157
+ needs: validate-source
158
+ runs-on: ubuntu-24.04
159
+
160
+ steps:
161
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
162
+ with:
163
+ persist-credentials: false
164
+
165
+ - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7
166
+ with:
167
+ python-version: ${{ env.TEST_PYTHON }}
168
+
169
+ - name: Build source distribution
170
+ uses: PyO3/maturin-action@423a6347767a8b16e65c2a7a7042e4a921528da8 # v1
171
+ with:
172
+ maturin-version: ${{ env.MATURIN_VERSION }}
173
+ command: sdist
174
+ args: --out dist
175
+
176
+ - name: Build and install from source distribution
177
+ run: |
178
+ python -m pip install --upgrade pip
179
+ python -m pip install dist/*.tar.gz
180
+ python -m pip check
181
+ python tests/python/test_wheel.py
182
+
183
+ - name: Upload verified source distribution
184
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
185
+ with:
186
+ name: release-sdist
187
+ path: dist/*.tar.gz
188
+ if-no-files-found: error
189
+ retention-days: 14
190
+
191
+ publish-pypi:
192
+ name: Publish to PyPI
193
+ needs: [build-wheels, build-sdist]
194
+ if: >-
195
+ startsWith(github.ref, 'refs/tags/v') ||
196
+ (github.event_name == 'workflow_dispatch' && inputs.publish)
197
+ runs-on: ubuntu-24.04
198
+
199
+ environment:
200
+ name: pypi
201
+ url: https://pypi.org/p/rustures
202
+
203
+ permissions:
204
+ id-token: write
205
+
206
+ steps:
207
+ - name: Download all verified distributions
208
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
209
+ with:
210
+ pattern: release-*
211
+ path: dist
212
+ merge-multiple: true
213
+
214
+ - name: Show files selected for publication
215
+ run: ls -l dist
216
+
217
+ - name: Publish distributions with Trusted Publishing
218
+ uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # release/v1
@@ -0,0 +1,99 @@
1
+ # Rust build output
2
+ /target/
3
+ **/*.rs.bk
4
+
5
+ # Cargo.lock is intentionally tracked because wheels are release artifacts.
6
+
7
+ # Python bytecode and caches
8
+ __pycache__/
9
+ *.py[cod]
10
+ *$py.class
11
+ .pytest_cache/
12
+ .mypy_cache/
13
+ .pyright/
14
+ .ruff_cache/
15
+ .hypothesis/
16
+ .tox/
17
+ .nox/
18
+ .coverage
19
+ .coverage.*
20
+ htmlcov/
21
+ .ipynb_checkpoints/
22
+
23
+ # Python environments
24
+ .venv/
25
+ venv/
26
+ env/
27
+ ENV/
28
+ .conda/
29
+ .pixi/
30
+
31
+ # Python and maturin packaging output
32
+ /build/
33
+ /dist/
34
+ /wheelhouse/
35
+ /.maturin/
36
+ *.egg-info/
37
+ *.egg
38
+ *.whl
39
+
40
+ # Locally built native extension modules
41
+ *.pyd
42
+ *.so
43
+ *.dylib
44
+
45
+ # Documentation build output
46
+ /site/
47
+ /docs/_build/
48
+
49
+ # Local environment and secrets
50
+ .env
51
+ .env.*
52
+ !.env.example
53
+
54
+ # Editor and IDE state
55
+ /.vscode/
56
+ /.idea/
57
+ /.vs/
58
+ *.suo
59
+ *.user
60
+ *.swp
61
+ *.swo
62
+ *~
63
+
64
+ # Operating-system metadata
65
+ .DS_Store
66
+ Thumbs.db
67
+ Desktop.ini
68
+
69
+ # Profiling and crash output
70
+ *.profraw
71
+ *.profdata
72
+ perf.data
73
+ perf.data.old
74
+ /core
75
+ /core.*
76
+
77
+ # Research scratch space and cloned upstream source
78
+ /tmp/
79
+
80
+ # Local Codex research, planning, and verification documents
81
+ /AGENTS.md
82
+ /docs/README.md
83
+ /docs/SUMMARY_KO.md
84
+ /docs/PAPER_INDEX.md
85
+ /docs/RUST_PORT_SPEC.md
86
+ /docs/IMPLEMENTATION_PLAN.md
87
+ /docs/PYTHON_WHEEL_SPEC.md
88
+ /docs/CUSTOM_COST_DESIGN.md
89
+ /output/pdf/README.md
90
+ /artifacts/**/*.md
91
+
92
+ # Collected papers are local research inputs and are not redistributed.
93
+ /output/pdf/*
94
+
95
+ # Keep text evidence under artifacts, but ignore generated wheels and envs.
96
+ /artifacts/**/*.whl
97
+ /artifacts/**/.venv/
98
+ /artifacts/**/venv/
99
+ /artifacts/**/target/
@@ -0,0 +1,368 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "approx"
7
+ version = "0.5.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6"
10
+ dependencies = [
11
+ "num-traits",
12
+ ]
13
+
14
+ [[package]]
15
+ name = "autocfg"
16
+ version = "1.5.1"
17
+ source = "registry+https://github.com/rust-lang/crates.io-index"
18
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
19
+
20
+ [[package]]
21
+ name = "bytemuck"
22
+ version = "1.25.2"
23
+ source = "registry+https://github.com/rust-lang/crates.io-index"
24
+ checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797"
25
+
26
+ [[package]]
27
+ name = "heck"
28
+ version = "0.5.0"
29
+ source = "registry+https://github.com/rust-lang/crates.io-index"
30
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
31
+
32
+ [[package]]
33
+ name = "libc"
34
+ version = "0.2.189"
35
+ source = "registry+https://github.com/rust-lang/crates.io-index"
36
+ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2"
37
+
38
+ [[package]]
39
+ name = "matrixmultiply"
40
+ version = "0.3.11"
41
+ source = "registry+https://github.com/rust-lang/crates.io-index"
42
+ checksum = "3f607c237553f086e7043417a51df26b2eb899d3caff94e6a67592ff992fedc7"
43
+ dependencies = [
44
+ "autocfg",
45
+ "rawpointer",
46
+ ]
47
+
48
+ [[package]]
49
+ name = "nalgebra"
50
+ version = "0.33.3"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "9d43ddcacf343185dfd6de2ee786d9e8b1c2301622afab66b6c73baf9882abfd"
53
+ dependencies = [
54
+ "approx",
55
+ "matrixmultiply",
56
+ "nalgebra-macros",
57
+ "num-complex",
58
+ "num-rational",
59
+ "num-traits",
60
+ "simba",
61
+ "typenum",
62
+ ]
63
+
64
+ [[package]]
65
+ name = "nalgebra-macros"
66
+ version = "0.2.2"
67
+ source = "registry+https://github.com/rust-lang/crates.io-index"
68
+ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc"
69
+ dependencies = [
70
+ "proc-macro2",
71
+ "quote",
72
+ "syn 2.0.119",
73
+ ]
74
+
75
+ [[package]]
76
+ name = "ndarray"
77
+ version = "0.17.2"
78
+ source = "registry+https://github.com/rust-lang/crates.io-index"
79
+ checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d"
80
+ dependencies = [
81
+ "matrixmultiply",
82
+ "num-complex",
83
+ "num-integer",
84
+ "num-traits",
85
+ "portable-atomic",
86
+ "portable-atomic-util",
87
+ "rawpointer",
88
+ ]
89
+
90
+ [[package]]
91
+ name = "num-bigint"
92
+ version = "0.4.8"
93
+ source = "registry+https://github.com/rust-lang/crates.io-index"
94
+ checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367"
95
+ dependencies = [
96
+ "num-integer",
97
+ "num-traits",
98
+ ]
99
+
100
+ [[package]]
101
+ name = "num-complex"
102
+ version = "0.4.6"
103
+ source = "registry+https://github.com/rust-lang/crates.io-index"
104
+ checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495"
105
+ dependencies = [
106
+ "num-traits",
107
+ ]
108
+
109
+ [[package]]
110
+ name = "num-integer"
111
+ version = "0.1.47"
112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
113
+ checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b"
114
+ dependencies = [
115
+ "num-traits",
116
+ ]
117
+
118
+ [[package]]
119
+ name = "num-rational"
120
+ version = "0.4.2"
121
+ source = "registry+https://github.com/rust-lang/crates.io-index"
122
+ checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"
123
+ dependencies = [
124
+ "num-bigint",
125
+ "num-integer",
126
+ "num-traits",
127
+ ]
128
+
129
+ [[package]]
130
+ name = "num-traits"
131
+ version = "0.2.19"
132
+ source = "registry+https://github.com/rust-lang/crates.io-index"
133
+ checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
134
+ dependencies = [
135
+ "autocfg",
136
+ ]
137
+
138
+ [[package]]
139
+ name = "numpy"
140
+ version = "0.29.0"
141
+ source = "registry+https://github.com/rust-lang/crates.io-index"
142
+ checksum = "6a5b15d63a5ff39e378daed0e1340d3a5964703ea9712eb09a0dc66fade996f4"
143
+ dependencies = [
144
+ "libc",
145
+ "ndarray",
146
+ "num-complex",
147
+ "num-integer",
148
+ "num-traits",
149
+ "pyo3",
150
+ "pyo3-build-config",
151
+ "rustc-hash",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "once_cell"
156
+ version = "1.21.4"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
159
+
160
+ [[package]]
161
+ name = "paste"
162
+ version = "1.0.15"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
165
+
166
+ [[package]]
167
+ name = "portable-atomic"
168
+ version = "1.15.0"
169
+ source = "registry+https://github.com/rust-lang/crates.io-index"
170
+ checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85"
171
+
172
+ [[package]]
173
+ name = "portable-atomic-util"
174
+ version = "0.2.7"
175
+ source = "registry+https://github.com/rust-lang/crates.io-index"
176
+ checksum = "c2a106d1259c23fac8e543272398ae0e3c0b8d33c88ed73d0cc71b0f1d902618"
177
+ dependencies = [
178
+ "portable-atomic",
179
+ ]
180
+
181
+ [[package]]
182
+ name = "proc-macro2"
183
+ version = "1.0.107"
184
+ source = "registry+https://github.com/rust-lang/crates.io-index"
185
+ checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9"
186
+ dependencies = [
187
+ "unicode-ident",
188
+ ]
189
+
190
+ [[package]]
191
+ name = "pyo3"
192
+ version = "0.29.2"
193
+ source = "registry+https://github.com/rust-lang/crates.io-index"
194
+ checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b"
195
+ dependencies = [
196
+ "libc",
197
+ "once_cell",
198
+ "portable-atomic",
199
+ "pyo3-build-config",
200
+ "pyo3-ffi",
201
+ "pyo3-macros",
202
+ ]
203
+
204
+ [[package]]
205
+ name = "pyo3-build-config"
206
+ version = "0.29.2"
207
+ source = "registry+https://github.com/rust-lang/crates.io-index"
208
+ checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9"
209
+ dependencies = [
210
+ "target-lexicon",
211
+ ]
212
+
213
+ [[package]]
214
+ name = "pyo3-ffi"
215
+ version = "0.29.2"
216
+ source = "registry+https://github.com/rust-lang/crates.io-index"
217
+ checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327"
218
+ dependencies = [
219
+ "libc",
220
+ "pyo3-build-config",
221
+ ]
222
+
223
+ [[package]]
224
+ name = "pyo3-macros"
225
+ version = "0.29.2"
226
+ source = "registry+https://github.com/rust-lang/crates.io-index"
227
+ checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c"
228
+ dependencies = [
229
+ "proc-macro2",
230
+ "pyo3-macros-backend",
231
+ "quote",
232
+ "syn 2.0.119",
233
+ ]
234
+
235
+ [[package]]
236
+ name = "pyo3-macros-backend"
237
+ version = "0.29.2"
238
+ source = "registry+https://github.com/rust-lang/crates.io-index"
239
+ checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952"
240
+ dependencies = [
241
+ "heck",
242
+ "proc-macro2",
243
+ "quote",
244
+ "syn 2.0.119",
245
+ ]
246
+
247
+ [[package]]
248
+ name = "quote"
249
+ version = "1.0.47"
250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
251
+ checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001"
252
+ dependencies = [
253
+ "proc-macro2",
254
+ ]
255
+
256
+ [[package]]
257
+ name = "rawpointer"
258
+ version = "0.2.1"
259
+ source = "registry+https://github.com/rust-lang/crates.io-index"
260
+ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
261
+
262
+ [[package]]
263
+ name = "rustc-hash"
264
+ version = "2.1.3"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d"
267
+
268
+ [[package]]
269
+ name = "rustures"
270
+ version = "0.1.0"
271
+ dependencies = [
272
+ "nalgebra",
273
+ "numpy",
274
+ "pyo3",
275
+ "thiserror",
276
+ ]
277
+
278
+ [[package]]
279
+ name = "safe_arch"
280
+ version = "0.7.4"
281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
282
+ checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323"
283
+ dependencies = [
284
+ "bytemuck",
285
+ ]
286
+
287
+ [[package]]
288
+ name = "simba"
289
+ version = "0.9.1"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "c99284beb21666094ba2b75bbceda012e610f5479dfcc2d6e2426f53197ffd95"
292
+ dependencies = [
293
+ "approx",
294
+ "num-complex",
295
+ "num-traits",
296
+ "paste",
297
+ "wide",
298
+ ]
299
+
300
+ [[package]]
301
+ name = "syn"
302
+ version = "2.0.119"
303
+ source = "registry+https://github.com/rust-lang/crates.io-index"
304
+ checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297"
305
+ dependencies = [
306
+ "proc-macro2",
307
+ "quote",
308
+ "unicode-ident",
309
+ ]
310
+
311
+ [[package]]
312
+ name = "syn"
313
+ version = "3.0.4"
314
+ source = "registry+https://github.com/rust-lang/crates.io-index"
315
+ checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f"
316
+ dependencies = [
317
+ "proc-macro2",
318
+ "quote",
319
+ "unicode-ident",
320
+ ]
321
+
322
+ [[package]]
323
+ name = "target-lexicon"
324
+ version = "0.13.5"
325
+ source = "registry+https://github.com/rust-lang/crates.io-index"
326
+ checksum = "adb6935a6f5c20170eeceb1a3835a49e12e19d792f6dd344ccc76a985ca5a6ca"
327
+
328
+ [[package]]
329
+ name = "thiserror"
330
+ version = "2.0.20"
331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
332
+ checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f"
333
+ dependencies = [
334
+ "thiserror-impl",
335
+ ]
336
+
337
+ [[package]]
338
+ name = "thiserror-impl"
339
+ version = "2.0.20"
340
+ source = "registry+https://github.com/rust-lang/crates.io-index"
341
+ checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af"
342
+ dependencies = [
343
+ "proc-macro2",
344
+ "quote",
345
+ "syn 3.0.4",
346
+ ]
347
+
348
+ [[package]]
349
+ name = "typenum"
350
+ version = "1.20.1"
351
+ source = "registry+https://github.com/rust-lang/crates.io-index"
352
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
353
+
354
+ [[package]]
355
+ name = "unicode-ident"
356
+ version = "1.0.24"
357
+ source = "registry+https://github.com/rust-lang/crates.io-index"
358
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
359
+
360
+ [[package]]
361
+ name = "wide"
362
+ version = "0.7.33"
363
+ source = "registry+https://github.com/rust-lang/crates.io-index"
364
+ checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03"
365
+ dependencies = [
366
+ "bytemuck",
367
+ "safe_arch",
368
+ ]