tsunami-wave 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 (37) hide show
  1. tsunami_wave-0.1.0/.github/workflows/ci.yml +77 -0
  2. tsunami_wave-0.1.0/.github/workflows/release.yml +67 -0
  3. tsunami_wave-0.1.0/.gitignore +35 -0
  4. tsunami_wave-0.1.0/CLAUDE.md +43 -0
  5. tsunami_wave-0.1.0/Cargo.lock +457 -0
  6. tsunami_wave-0.1.0/Cargo.toml +14 -0
  7. tsunami_wave-0.1.0/LICENSE +190 -0
  8. tsunami_wave-0.1.0/PKG-INFO +193 -0
  9. tsunami_wave-0.1.0/README.md +171 -0
  10. tsunami_wave-0.1.0/backend.fst +0 -0
  11. tsunami_wave-0.1.0/doc/design-doc.md +501 -0
  12. tsunami_wave-0.1.0/docs/api/engine.md +23 -0
  13. tsunami_wave-0.1.0/docs/api/predicate.md +24 -0
  14. tsunami_wave-0.1.0/docs/api/time_parse.md +6 -0
  15. tsunami_wave-0.1.0/docs/design-doc.md +501 -0
  16. tsunami_wave-0.1.0/docs/getting-started.md +104 -0
  17. tsunami_wave-0.1.0/docs/guide/cli.md +124 -0
  18. tsunami_wave-0.1.0/docs/guide/mcp.md +134 -0
  19. tsunami_wave-0.1.0/docs/guide/predicates.md +169 -0
  20. tsunami_wave-0.1.0/docs/guide/python.md +152 -0
  21. tsunami_wave-0.1.0/docs/index.md +59 -0
  22. tsunami_wave-0.1.0/mkdocs.yml +72 -0
  23. tsunami_wave-0.1.0/pyproject.toml +42 -0
  24. tsunami_wave-0.1.0/python/tsunami/__init__.py +42 -0
  25. tsunami_wave-0.1.0/python/tsunami/_engine.pyi +399 -0
  26. tsunami_wave-0.1.0/python/tsunami/cli.py +205 -0
  27. tsunami_wave-0.1.0/python/tsunami/predicate.py +353 -0
  28. tsunami_wave-0.1.0/python/tsunami/server.py +230 -0
  29. tsunami_wave-0.1.0/python/tsunami/time_parse.py +89 -0
  30. tsunami_wave-0.1.0/src/lib.rs +37 -0
  31. tsunami_wave-0.1.0/src/predicate.rs +479 -0
  32. tsunami_wave-0.1.0/src/query.rs +416 -0
  33. tsunami_wave-0.1.0/src/summarise.rs +347 -0
  34. tsunami_wave-0.1.0/tests/test_engine.py +144 -0
  35. tsunami_wave-0.1.0/tests/test_predicate.py +147 -0
  36. tsunami_wave-0.1.0/tests/test_time_parse.py +50 -0
  37. tsunami_wave-0.1.0/uv.lock +1173 -0
@@ -0,0 +1,77 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ test:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: astral-sh/setup-uv@v6
17
+ - uses: dtolnay/rust-toolchain@stable
18
+ - run: uv sync --extra dev
19
+ - run: uv run maturin develop
20
+ - run: uv run pytest tests/ -v
21
+
22
+ build:
23
+ needs: test
24
+ strategy:
25
+ matrix:
26
+ include:
27
+ - os: ubuntu-latest
28
+ target: x86_64
29
+ - os: ubuntu-latest
30
+ target: aarch64
31
+ - os: macos-latest
32
+ target: x86_64
33
+ - os: macos-latest
34
+ target: aarch64
35
+ runs-on: ${{ matrix.os }}
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+ - uses: astral-sh/setup-uv@v6
39
+ - name: Build wheels
40
+ uses: PyO3/maturin-action@v1
41
+ with:
42
+ target: ${{ matrix.target }}
43
+ args: --release --out dist
44
+ manylinux: auto
45
+ - uses: actions/upload-artifact@v4
46
+ with:
47
+ name: wheels-${{ matrix.os }}-${{ matrix.target }}
48
+ path: dist/
49
+
50
+ sdist:
51
+ needs: test
52
+ runs-on: ubuntu-latest
53
+ steps:
54
+ - uses: actions/checkout@v4
55
+ - name: Build sdist
56
+ uses: PyO3/maturin-action@v1
57
+ with:
58
+ command: sdist
59
+ args: --out dist
60
+ - uses: actions/upload-artifact@v4
61
+ with:
62
+ name: sdist
63
+ path: dist/
64
+
65
+ docs:
66
+ needs: test
67
+ runs-on: ubuntu-latest
68
+ if: github.ref == 'refs/heads/main'
69
+ permissions:
70
+ contents: write
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+ - uses: astral-sh/setup-uv@v6
74
+ - uses: dtolnay/rust-toolchain@stable
75
+ - run: uv sync --extra dev --extra docs
76
+ - run: uv run maturin develop
77
+ - run: uv run mkdocs gh-deploy --force
@@ -0,0 +1,67 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags: ["v*"]
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ build:
12
+ strategy:
13
+ matrix:
14
+ include:
15
+ - os: ubuntu-latest
16
+ target: x86_64
17
+ - os: ubuntu-latest
18
+ target: aarch64
19
+ - os: macos-latest
20
+ target: x86_64
21
+ - os: macos-latest
22
+ target: aarch64
23
+ runs-on: ${{ matrix.os }}
24
+ steps:
25
+ - uses: actions/checkout@v4
26
+ - name: Build wheels
27
+ uses: PyO3/maturin-action@v1
28
+ with:
29
+ target: ${{ matrix.target }}
30
+ args: --release --out dist
31
+ manylinux: auto
32
+ - uses: actions/upload-artifact@v4
33
+ with:
34
+ name: wheels-${{ matrix.os }}-${{ matrix.target }}
35
+ path: dist/
36
+
37
+ sdist:
38
+ runs-on: ubuntu-latest
39
+ steps:
40
+ - uses: actions/checkout@v4
41
+ - name: Build sdist
42
+ uses: PyO3/maturin-action@v1
43
+ with:
44
+ command: sdist
45
+ args: --out dist
46
+ - uses: actions/upload-artifact@v4
47
+ with:
48
+ name: sdist
49
+ path: dist/
50
+
51
+ publish:
52
+ needs: [build, sdist]
53
+ runs-on: ubuntu-latest
54
+ environment: release
55
+ permissions:
56
+ id-token: write # for trusted publishing
57
+ steps:
58
+ - uses: actions/download-artifact@v4
59
+ with:
60
+ pattern: wheels-*
61
+ merge-multiple: true
62
+ path: dist/
63
+ - uses: actions/download-artifact@v4
64
+ with:
65
+ name: sdist
66
+ path: dist/
67
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,35 @@
1
+ # Rust
2
+ target/
3
+ Cargo.lock
4
+
5
+ # Python
6
+ __pycache__/
7
+ *.pyc
8
+ *.pyo
9
+ *.egg-info/
10
+ dist/
11
+ build/
12
+ .eggs/
13
+
14
+ # Native extensions
15
+ *.so
16
+ *.dylib
17
+ *.pyd
18
+ *.dll
19
+
20
+ # Virtual environments
21
+ .venv/
22
+ venv/
23
+
24
+ # IDE
25
+ .idea/
26
+ .vscode/
27
+ *.swp
28
+ *.swo
29
+
30
+ # OS
31
+ .DS_Store
32
+ *.dSYM/
33
+
34
+ # Docs build
35
+ site/
@@ -0,0 +1,43 @@
1
+ # Tsunami — AI-Assisted Hardware Waveform Debugging
2
+
3
+ ## Build & Test
4
+
5
+ ```bash
6
+ uv run maturin develop # Build Rust extension
7
+ uv run pytest tests/ -v # Run all tests
8
+ ```
9
+
10
+ ## Architecture
11
+
12
+ - **Rust engine** (`src/`): PyO3 extension wrapping the `wellen` crate for FST/VCD access
13
+ - **Python layer** (`python/tsunami/`): Predicate DSL, time parser, MCP server, CLI
14
+
15
+ ## Key entry points
16
+
17
+ - `tsunami._engine` — Rust extension (query, predicate eval, summarise)
18
+ - `tsunami.predicate` — Python DSL for composable signal predicates
19
+ - `tsunami.server` — MCP server (FastMCP, stdio transport)
20
+ - `tsunami.cli` — CLI: `tsunami info|signals|value|transitions|snapshot|anomalies|summarize|serve`
21
+
22
+ ## Waveform time units
23
+
24
+ All internal times are in the waveform's native time units (timescale_factor * timescale_unit).
25
+ The `parse_time()` helper converts human-readable strings ("1284ns", "1.284us", "642cyc") to picoseconds.
26
+
27
+ ## MCP Server
28
+
29
+ Start with: `tsunami serve <file.fst>`
30
+
31
+ Tools: `waveform_info`, `search_signals`, `browse_scopes`, `get_snapshot`,
32
+ `get_signal_window`, `find_first_match`, `find_all_matches`, `find_anomalies`
33
+
34
+ ## Predicate DSL
35
+
36
+ ```python
37
+ from tsunami.predicate import Signal, scope, signals
38
+
39
+ with scope("tb.dut") as s:
40
+ handshake = s.tl_a_valid & s.tl_a_ready & (s.tl_a_opcode == 4)
41
+ rising = s.clk.rise()
42
+ seq = handshake >> (s.tl_d_valid, 50000) # sequence with window
43
+ ```
@@ -0,0 +1,457 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "adler2"
7
+ version = "2.0.1"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa"
10
+
11
+ [[package]]
12
+ name = "autocfg"
13
+ version = "1.5.0"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
16
+
17
+ [[package]]
18
+ name = "cfg-if"
19
+ version = "1.0.4"
20
+ source = "registry+https://github.com/rust-lang/crates.io-index"
21
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
22
+
23
+ [[package]]
24
+ name = "crossbeam-deque"
25
+ version = "0.8.6"
26
+ source = "registry+https://github.com/rust-lang/crates.io-index"
27
+ checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51"
28
+ dependencies = [
29
+ "crossbeam-epoch",
30
+ "crossbeam-utils",
31
+ ]
32
+
33
+ [[package]]
34
+ name = "crossbeam-epoch"
35
+ version = "0.9.18"
36
+ source = "registry+https://github.com/rust-lang/crates.io-index"
37
+ checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
38
+ dependencies = [
39
+ "crossbeam-utils",
40
+ ]
41
+
42
+ [[package]]
43
+ name = "crossbeam-utils"
44
+ version = "0.8.21"
45
+ source = "registry+https://github.com/rust-lang/crates.io-index"
46
+ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28"
47
+
48
+ [[package]]
49
+ name = "either"
50
+ version = "1.15.0"
51
+ source = "registry+https://github.com/rust-lang/crates.io-index"
52
+ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719"
53
+
54
+ [[package]]
55
+ name = "equivalent"
56
+ version = "1.0.2"
57
+ source = "registry+https://github.com/rust-lang/crates.io-index"
58
+ checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f"
59
+
60
+ [[package]]
61
+ name = "fst-reader"
62
+ version = "0.10.2"
63
+ source = "registry+https://github.com/rust-lang/crates.io-index"
64
+ checksum = "3f108c330236b622bd8c495197b10f4e7a0855a86d71da569f1b8b87bc8a5f7e"
65
+ dependencies = [
66
+ "lz4_flex",
67
+ "miniz_oxide",
68
+ "num_enum",
69
+ "thiserror",
70
+ ]
71
+
72
+ [[package]]
73
+ name = "glob"
74
+ version = "0.3.3"
75
+ source = "registry+https://github.com/rust-lang/crates.io-index"
76
+ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280"
77
+
78
+ [[package]]
79
+ name = "hashbrown"
80
+ version = "0.16.1"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100"
83
+
84
+ [[package]]
85
+ name = "heck"
86
+ version = "0.5.0"
87
+ source = "registry+https://github.com/rust-lang/crates.io-index"
88
+ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
89
+
90
+ [[package]]
91
+ name = "indexmap"
92
+ version = "2.13.0"
93
+ source = "registry+https://github.com/rust-lang/crates.io-index"
94
+ checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017"
95
+ dependencies = [
96
+ "equivalent",
97
+ "hashbrown",
98
+ ]
99
+
100
+ [[package]]
101
+ name = "indoc"
102
+ version = "2.0.7"
103
+ source = "registry+https://github.com/rust-lang/crates.io-index"
104
+ checksum = "79cf5c93f93228cf8efb3ba362535fb11199ac548a09ce117c9b1adc3030d706"
105
+ dependencies = [
106
+ "rustversion",
107
+ ]
108
+
109
+ [[package]]
110
+ name = "leb128"
111
+ version = "0.2.5"
112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
113
+ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
114
+
115
+ [[package]]
116
+ name = "libc"
117
+ version = "0.2.183"
118
+ source = "registry+https://github.com/rust-lang/crates.io-index"
119
+ checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d"
120
+
121
+ [[package]]
122
+ name = "lz4_flex"
123
+ version = "0.11.5"
124
+ source = "registry+https://github.com/rust-lang/crates.io-index"
125
+ checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a"
126
+ dependencies = [
127
+ "twox-hash",
128
+ ]
129
+
130
+ [[package]]
131
+ name = "memchr"
132
+ version = "2.8.0"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
135
+
136
+ [[package]]
137
+ name = "memmap2"
138
+ version = "0.9.10"
139
+ source = "registry+https://github.com/rust-lang/crates.io-index"
140
+ checksum = "714098028fe011992e1c3962653c96b2d578c4b4bce9036e15ff220319b1e0e3"
141
+ dependencies = [
142
+ "libc",
143
+ ]
144
+
145
+ [[package]]
146
+ name = "memoffset"
147
+ version = "0.9.1"
148
+ source = "registry+https://github.com/rust-lang/crates.io-index"
149
+ checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a"
150
+ dependencies = [
151
+ "autocfg",
152
+ ]
153
+
154
+ [[package]]
155
+ name = "miniz_oxide"
156
+ version = "0.8.9"
157
+ source = "registry+https://github.com/rust-lang/crates.io-index"
158
+ checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316"
159
+ dependencies = [
160
+ "adler2",
161
+ ]
162
+
163
+ [[package]]
164
+ name = "num_enum"
165
+ version = "0.7.5"
166
+ source = "registry+https://github.com/rust-lang/crates.io-index"
167
+ checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c"
168
+ dependencies = [
169
+ "num_enum_derive",
170
+ "rustversion",
171
+ ]
172
+
173
+ [[package]]
174
+ name = "num_enum_derive"
175
+ version = "0.7.5"
176
+ source = "registry+https://github.com/rust-lang/crates.io-index"
177
+ checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7"
178
+ dependencies = [
179
+ "proc-macro-crate",
180
+ "proc-macro2",
181
+ "quote",
182
+ "syn",
183
+ ]
184
+
185
+ [[package]]
186
+ name = "once_cell"
187
+ version = "1.21.4"
188
+ source = "registry+https://github.com/rust-lang/crates.io-index"
189
+ checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50"
190
+
191
+ [[package]]
192
+ name = "portable-atomic"
193
+ version = "1.13.1"
194
+ source = "registry+https://github.com/rust-lang/crates.io-index"
195
+ checksum = "c33a9471896f1c69cecef8d20cbe2f7accd12527ce60845ff44c153bb2a21b49"
196
+
197
+ [[package]]
198
+ name = "proc-macro-crate"
199
+ version = "3.5.0"
200
+ source = "registry+https://github.com/rust-lang/crates.io-index"
201
+ checksum = "e67ba7e9b2b56446f1d419b1d807906278ffa1a658a8a5d8a39dcb1f5a78614f"
202
+ dependencies = [
203
+ "toml_edit",
204
+ ]
205
+
206
+ [[package]]
207
+ name = "proc-macro2"
208
+ version = "1.0.106"
209
+ source = "registry+https://github.com/rust-lang/crates.io-index"
210
+ checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934"
211
+ dependencies = [
212
+ "unicode-ident",
213
+ ]
214
+
215
+ [[package]]
216
+ name = "pyo3"
217
+ version = "0.23.5"
218
+ source = "registry+https://github.com/rust-lang/crates.io-index"
219
+ checksum = "7778bffd85cf38175ac1f545509665d0b9b92a198ca7941f131f85f7a4f9a872"
220
+ dependencies = [
221
+ "cfg-if",
222
+ "indoc",
223
+ "libc",
224
+ "memoffset",
225
+ "once_cell",
226
+ "portable-atomic",
227
+ "pyo3-build-config",
228
+ "pyo3-ffi",
229
+ "pyo3-macros",
230
+ "unindent",
231
+ ]
232
+
233
+ [[package]]
234
+ name = "pyo3-build-config"
235
+ version = "0.23.5"
236
+ source = "registry+https://github.com/rust-lang/crates.io-index"
237
+ checksum = "94f6cbe86ef3bf18998d9df6e0f3fc1050a8c5efa409bf712e661a4366e010fb"
238
+ dependencies = [
239
+ "once_cell",
240
+ "target-lexicon",
241
+ ]
242
+
243
+ [[package]]
244
+ name = "pyo3-ffi"
245
+ version = "0.23.5"
246
+ source = "registry+https://github.com/rust-lang/crates.io-index"
247
+ checksum = "e9f1b4c431c0bb1c8fb0a338709859eed0d030ff6daa34368d3b152a63dfdd8d"
248
+ dependencies = [
249
+ "libc",
250
+ "pyo3-build-config",
251
+ ]
252
+
253
+ [[package]]
254
+ name = "pyo3-macros"
255
+ version = "0.23.5"
256
+ source = "registry+https://github.com/rust-lang/crates.io-index"
257
+ checksum = "fbc2201328f63c4710f68abdf653c89d8dbc2858b88c5d88b0ff38a75288a9da"
258
+ dependencies = [
259
+ "proc-macro2",
260
+ "pyo3-macros-backend",
261
+ "quote",
262
+ "syn",
263
+ ]
264
+
265
+ [[package]]
266
+ name = "pyo3-macros-backend"
267
+ version = "0.23.5"
268
+ source = "registry+https://github.com/rust-lang/crates.io-index"
269
+ checksum = "fca6726ad0f3da9c9de093d6f116a93c1a38e417ed73bf138472cf4064f72028"
270
+ dependencies = [
271
+ "heck",
272
+ "proc-macro2",
273
+ "pyo3-build-config",
274
+ "quote",
275
+ "syn",
276
+ ]
277
+
278
+ [[package]]
279
+ name = "quote"
280
+ version = "1.0.45"
281
+ source = "registry+https://github.com/rust-lang/crates.io-index"
282
+ checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924"
283
+ dependencies = [
284
+ "proc-macro2",
285
+ ]
286
+
287
+ [[package]]
288
+ name = "rayon"
289
+ version = "1.11.0"
290
+ source = "registry+https://github.com/rust-lang/crates.io-index"
291
+ checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f"
292
+ dependencies = [
293
+ "either",
294
+ "rayon-core",
295
+ ]
296
+
297
+ [[package]]
298
+ name = "rayon-core"
299
+ version = "1.13.0"
300
+ source = "registry+https://github.com/rust-lang/crates.io-index"
301
+ checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91"
302
+ dependencies = [
303
+ "crossbeam-deque",
304
+ "crossbeam-utils",
305
+ ]
306
+
307
+ [[package]]
308
+ name = "rustc-hash"
309
+ version = "2.1.1"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d"
312
+
313
+ [[package]]
314
+ name = "rustversion"
315
+ version = "1.0.22"
316
+ source = "registry+https://github.com/rust-lang/crates.io-index"
317
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
318
+
319
+ [[package]]
320
+ name = "serde_core"
321
+ version = "1.0.228"
322
+ source = "registry+https://github.com/rust-lang/crates.io-index"
323
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
324
+ dependencies = [
325
+ "serde_derive",
326
+ ]
327
+
328
+ [[package]]
329
+ name = "serde_derive"
330
+ version = "1.0.228"
331
+ source = "registry+https://github.com/rust-lang/crates.io-index"
332
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
333
+ dependencies = [
334
+ "proc-macro2",
335
+ "quote",
336
+ "syn",
337
+ ]
338
+
339
+ [[package]]
340
+ name = "syn"
341
+ version = "2.0.117"
342
+ source = "registry+https://github.com/rust-lang/crates.io-index"
343
+ checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99"
344
+ dependencies = [
345
+ "proc-macro2",
346
+ "quote",
347
+ "unicode-ident",
348
+ ]
349
+
350
+ [[package]]
351
+ name = "target-lexicon"
352
+ version = "0.12.16"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1"
355
+
356
+ [[package]]
357
+ name = "thiserror"
358
+ version = "2.0.18"
359
+ source = "registry+https://github.com/rust-lang/crates.io-index"
360
+ checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4"
361
+ dependencies = [
362
+ "thiserror-impl",
363
+ ]
364
+
365
+ [[package]]
366
+ name = "thiserror-impl"
367
+ version = "2.0.18"
368
+ source = "registry+https://github.com/rust-lang/crates.io-index"
369
+ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5"
370
+ dependencies = [
371
+ "proc-macro2",
372
+ "quote",
373
+ "syn",
374
+ ]
375
+
376
+ [[package]]
377
+ name = "toml_datetime"
378
+ version = "1.0.0+spec-1.1.0"
379
+ source = "registry+https://github.com/rust-lang/crates.io-index"
380
+ checksum = "32c2555c699578a4f59f0cc68e5116c8d7cabbd45e1409b989d4be085b53f13e"
381
+ dependencies = [
382
+ "serde_core",
383
+ ]
384
+
385
+ [[package]]
386
+ name = "toml_edit"
387
+ version = "0.25.4+spec-1.1.0"
388
+ source = "registry+https://github.com/rust-lang/crates.io-index"
389
+ checksum = "7193cbd0ce53dc966037f54351dbbcf0d5a642c7f0038c382ef9e677ce8c13f2"
390
+ dependencies = [
391
+ "indexmap",
392
+ "toml_datetime",
393
+ "toml_parser",
394
+ "winnow",
395
+ ]
396
+
397
+ [[package]]
398
+ name = "toml_parser"
399
+ version = "1.0.9+spec-1.1.0"
400
+ source = "registry+https://github.com/rust-lang/crates.io-index"
401
+ checksum = "702d4415e08923e7e1ef96cd5727c0dfed80b4d2fa25db9647fe5eb6f7c5a4c4"
402
+ dependencies = [
403
+ "winnow",
404
+ ]
405
+
406
+ [[package]]
407
+ name = "tsunami"
408
+ version = "0.1.0"
409
+ dependencies = [
410
+ "glob",
411
+ "pyo3",
412
+ "wellen",
413
+ ]
414
+
415
+ [[package]]
416
+ name = "twox-hash"
417
+ version = "2.1.2"
418
+ source = "registry+https://github.com/rust-lang/crates.io-index"
419
+ checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c"
420
+
421
+ [[package]]
422
+ name = "unicode-ident"
423
+ version = "1.0.24"
424
+ source = "registry+https://github.com/rust-lang/crates.io-index"
425
+ checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75"
426
+
427
+ [[package]]
428
+ name = "unindent"
429
+ version = "0.2.4"
430
+ source = "registry+https://github.com/rust-lang/crates.io-index"
431
+ checksum = "7264e107f553ccae879d21fbea1d6724ac785e8c3bfc762137959b5802826ef3"
432
+
433
+ [[package]]
434
+ name = "wellen"
435
+ version = "0.13.12"
436
+ source = "registry+https://github.com/rust-lang/crates.io-index"
437
+ checksum = "74c026061972c8e5f9e81fb86dae3ed6d10a2fd4adb0c36a65b5fbc1af482b07"
438
+ dependencies = [
439
+ "fst-reader",
440
+ "leb128",
441
+ "lz4_flex",
442
+ "memmap2",
443
+ "miniz_oxide",
444
+ "num_enum",
445
+ "rayon",
446
+ "rustc-hash",
447
+ "thiserror",
448
+ ]
449
+
450
+ [[package]]
451
+ name = "winnow"
452
+ version = "0.7.15"
453
+ source = "registry+https://github.com/rust-lang/crates.io-index"
454
+ checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945"
455
+ dependencies = [
456
+ "memchr",
457
+ ]
@@ -0,0 +1,14 @@
1
+ [package]
2
+ name = "tsunami"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ readme = "README.md"
6
+
7
+ [lib]
8
+ name = "_engine"
9
+ crate-type = ["cdylib"]
10
+
11
+ [dependencies]
12
+ pyo3 = { version = "0.23", features = ["extension-module", "abi3-py312"] }
13
+ wellen = "0.13"
14
+ glob = "0.3"