JSTprove 1.0.0__py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.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.

Potentially problematic release.


This version of JSTprove might be problematic. Click here for more details.

Files changed (81) hide show
  1. jstprove-1.0.0.dist-info/METADATA +397 -0
  2. jstprove-1.0.0.dist-info/RECORD +81 -0
  3. jstprove-1.0.0.dist-info/WHEEL +6 -0
  4. jstprove-1.0.0.dist-info/entry_points.txt +2 -0
  5. jstprove-1.0.0.dist-info/licenses/LICENSE +26 -0
  6. jstprove-1.0.0.dist-info/top_level.txt +1 -0
  7. python/__init__.py +0 -0
  8. python/core/__init__.py +3 -0
  9. python/core/binaries/__init__.py +0 -0
  10. python/core/binaries/expander-exec +0 -0
  11. python/core/binaries/onnx_generic_circuit_1-0-0 +0 -0
  12. python/core/circuit_models/__init__.py +0 -0
  13. python/core/circuit_models/generic_onnx.py +231 -0
  14. python/core/circuit_models/simple_circuit.py +133 -0
  15. python/core/circuits/__init__.py +0 -0
  16. python/core/circuits/base.py +1000 -0
  17. python/core/circuits/errors.py +188 -0
  18. python/core/circuits/zk_model_base.py +25 -0
  19. python/core/model_processing/__init__.py +0 -0
  20. python/core/model_processing/converters/__init__.py +0 -0
  21. python/core/model_processing/converters/base.py +143 -0
  22. python/core/model_processing/converters/onnx_converter.py +1181 -0
  23. python/core/model_processing/errors.py +147 -0
  24. python/core/model_processing/onnx_custom_ops/__init__.py +16 -0
  25. python/core/model_processing/onnx_custom_ops/conv.py +111 -0
  26. python/core/model_processing/onnx_custom_ops/custom_helpers.py +56 -0
  27. python/core/model_processing/onnx_custom_ops/gemm.py +91 -0
  28. python/core/model_processing/onnx_custom_ops/maxpool.py +79 -0
  29. python/core/model_processing/onnx_custom_ops/onnx_helpers.py +173 -0
  30. python/core/model_processing/onnx_custom_ops/relu.py +43 -0
  31. python/core/model_processing/onnx_quantizer/__init__.py +0 -0
  32. python/core/model_processing/onnx_quantizer/exceptions.py +168 -0
  33. python/core/model_processing/onnx_quantizer/layers/__init__.py +0 -0
  34. python/core/model_processing/onnx_quantizer/layers/base.py +396 -0
  35. python/core/model_processing/onnx_quantizer/layers/constant.py +118 -0
  36. python/core/model_processing/onnx_quantizer/layers/conv.py +180 -0
  37. python/core/model_processing/onnx_quantizer/layers/gemm.py +171 -0
  38. python/core/model_processing/onnx_quantizer/layers/maxpool.py +140 -0
  39. python/core/model_processing/onnx_quantizer/layers/relu.py +76 -0
  40. python/core/model_processing/onnx_quantizer/onnx_op_quantizer.py +200 -0
  41. python/core/model_templates/__init__.py +0 -0
  42. python/core/model_templates/circuit_template.py +57 -0
  43. python/core/utils/__init__.py +0 -0
  44. python/core/utils/benchmarking_helpers.py +163 -0
  45. python/core/utils/constants.py +4 -0
  46. python/core/utils/errors.py +117 -0
  47. python/core/utils/general_layer_functions.py +268 -0
  48. python/core/utils/helper_functions.py +1138 -0
  49. python/core/utils/model_registry.py +166 -0
  50. python/core/utils/scratch_tests.py +66 -0
  51. python/core/utils/witness_utils.py +291 -0
  52. python/frontend/__init__.py +0 -0
  53. python/frontend/cli.py +115 -0
  54. python/frontend/commands/__init__.py +17 -0
  55. python/frontend/commands/args.py +100 -0
  56. python/frontend/commands/base.py +199 -0
  57. python/frontend/commands/bench/__init__.py +54 -0
  58. python/frontend/commands/bench/list.py +42 -0
  59. python/frontend/commands/bench/model.py +172 -0
  60. python/frontend/commands/bench/sweep.py +212 -0
  61. python/frontend/commands/compile.py +58 -0
  62. python/frontend/commands/constants.py +5 -0
  63. python/frontend/commands/model_check.py +53 -0
  64. python/frontend/commands/prove.py +50 -0
  65. python/frontend/commands/verify.py +73 -0
  66. python/frontend/commands/witness.py +64 -0
  67. python/scripts/__init__.py +0 -0
  68. python/scripts/benchmark_runner.py +833 -0
  69. python/scripts/gen_and_bench.py +482 -0
  70. python/tests/__init__.py +0 -0
  71. python/tests/circuit_e2e_tests/__init__.py +0 -0
  72. python/tests/circuit_e2e_tests/circuit_model_developer_test.py +1158 -0
  73. python/tests/circuit_e2e_tests/helper_fns_for_tests.py +190 -0
  74. python/tests/circuit_e2e_tests/other_e2e_test.py +217 -0
  75. python/tests/circuit_parent_classes/__init__.py +0 -0
  76. python/tests/circuit_parent_classes/test_circuit.py +969 -0
  77. python/tests/circuit_parent_classes/test_onnx_converter.py +201 -0
  78. python/tests/circuit_parent_classes/test_ort_custom_layers.py +116 -0
  79. python/tests/test_cli.py +1021 -0
  80. python/tests/utils_testing/__init__.py +0 -0
  81. python/tests/utils_testing/test_helper_functions.py +891 -0
@@ -0,0 +1,397 @@
1
+ Metadata-Version: 2.4
2
+ Name: JSTprove
3
+ Version: 1.0.0
4
+ Summary: Zero-knowledge proofs of ML inference on ONNX models
5
+ Author: Inference Labs Inc
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/markdown
8
+ License-File: LICENSE
9
+ Requires-Dist: numpy==2.2.6
10
+ Requires-Dist: onnx==1.17.0
11
+ Requires-Dist: onnxruntime==1.21.0
12
+ Requires-Dist: onnxruntime_extensions==0.14.0
13
+ Requires-Dist: psutil==7.0.0
14
+ Requires-Dist: Requests==2.32.3
15
+ Requires-Dist: scikit_learn==1.6.1
16
+ Requires-Dist: toml==0.10.2
17
+ Requires-Dist: tomli==2.0.1; python_version < "3.11"
18
+ Requires-Dist: torch==2.6.0
19
+ Requires-Dist: transformers==4.52.4
20
+ Dynamic: license-file
21
+
22
+ ```
23
+ 888888 .d8888b. 88888888888
24
+ "88b d88P Y88b 888
25
+ 888 Y88b. 888
26
+ 888 "Y888b. 888 88888b. 888d888 .d88b. 888 888 .d88b.
27
+ 888 "Y88b. 888 888 "88b 888P" d88""88b 888 888 d8P Y8b
28
+ 888 "888 888 888 888 888 888 888 Y88 88P 88888888
29
+ 88P Y88b d88P 888 888 d88P 888 Y88..88P Y8bd8P Y8b.
30
+ 888 "Y8888P" 888 88888P" 888 "Y88P" Y88P "Y8888
31
+ .d88P 888
32
+ .d88P" 888
33
+ 888P" 888
34
+ ```
35
+ ---
36
+
37
+ # JSTprove
38
+
39
+ [![GitHub](https://img.shields.io/badge/GitHub-Repository-blue?style=flat-square&logo=github)](https://github.com/inference-labs-inc/JSTprove)
40
+ [![Telegram](https://img.shields.io/badge/Telegram-Join%20Channel-0088cc?style=flat-square&logo=telegram)](https://t.me/inference_labs)
41
+ [![Twitter](https://img.shields.io/badge/Twitter-Follow%20Us-1DA1F2?style=flat-square&logo=twitter)](https://x.com/inference_labs)
42
+ [![Website](https://img.shields.io/badge/Website-Visit%20Us-ff7139?style=flat-square&logo=firefox-browser)](https://inferencelabs.com)
43
+ [![White paper](https://img.shields.io/badge/Whitepaper-Read-lightgrey?style=flat-square&logo=read-the-docs)](https://doi.org/10.48550/arXiv.2510.21024)
44
+
45
+ Zero-knowledge proofs of ML inference on **ONNX** models — powered by [Polyhedra Network’s **Expander**](https://github.com/PolyhedraZK/Expander) (GKR/sum-check prover) and [**Expander Compiler Collection (ECC)**](https://github.com/PolyhedraZK/ExpanderCompilerCollection).
46
+
47
+ * 🎯 **You bring ONNX** → we quantize, compile to a circuit, generate a witness, prove, and verify — via a simple CLI.
48
+ * ✅ Supported ops (current): **Conv2D**, **GEMM/MatMul (FC)**, **ReLU**, **MaxPool2D**.
49
+ * 🧰 CLI details: see **[docs/cli.md](docs/cli.md)**
50
+
51
+ 👉 Just want to see it in action? Jump to [Quickstart (LeNet demo)](#quickstart-lenet-demo).<br>
52
+ 👉 Curious about how it works under the hood? Check out the [white paper](https://doi.org/10.48550/arXiv.2510.21024).
53
+
54
+ ---
55
+
56
+ ## Table of Contents
57
+ <details>
58
+ <summary>Click to expand</summary>
59
+
60
+ - [What is JSTprove?](#what-is-jstprove)
61
+ - [High-level architecture](#high-level-architecture)
62
+ - [Design principles](#design-principles)
63
+ - [Installation](#installation)
64
+ - [0) Requirements](#0-requirements)
65
+ - [1) System packages](#1-system-packages)
66
+ - [2) Rust toolchain](#2-rust-toolchain)
67
+ - [3) Clone JSTprove & set up Python](#3-clone-jstprove--set-up-python)
68
+ - [4) Install & verify Expander (before building JSTprove)](#4-install--verify-expander-before-building-jstprove)
69
+ - [5) Build the JSTprove runner (optional; the CLI can build on demand)](#5-build-the-jstprove-runner-optional-the-cli-can-build-on-demand)
70
+ - [6) Try the CLI](#6-try-the-cli)
71
+ - [Quickstart (LeNet demo)](#quickstart-lenet-demo)
72
+ - [CLI reference](#cli-reference)
73
+ - [Troubleshooting](#troubleshooting)
74
+ - [Contributing](#contributing)
75
+ - [Disclaimer](#disclaimer)
76
+ - [Acknowledgments](#acknowledgments)
77
+
78
+ </details>
79
+
80
+ ## What is JSTprove?
81
+
82
+ **JSTprove** is a [zkML](https://docs.inferencelabs.com/zk-ml) toolkit/CLI that produces [**zero-knowledge proofs**](https://docs.inferencelabs.com/resources/glossary#zero-knowledge-proof) **of AI** [**inference**](https://docs.inferencelabs.com/resources/glossary#inference).
83
+ You provide an **ONNX** model and inputs; JSTprove handles **quantization**, **circuit generation** (via ECC), **witness creation**, **proving** (via Expander), and **verification** — with explicit, user-controlled file paths.
84
+
85
+ ### High-level architecture
86
+
87
+ * **Python pipeline:** Converts **ONNX → quantized ONNX**, prepares I/O, drives the Rust runner, exposes the **CLI**.
88
+ * **Rust crate:** `rust/jstprove_circuits` implements layer circuits (Conv2D, ReLU, MaxPool2D, GEMM/FC) and a runner.
89
+ * **Circuit frontend:** [ECC](https://github.com/PolyhedraZK/ExpanderCompilerCollection) Rust API for arithmetic circuits.
90
+ * **Prover backend:** [Expander](https://github.com/PolyhedraZK/Expander) (GKR/sum-check prover/verification).
91
+
92
+ ```
93
+ ONNX model ─► Quantizer (Py) ─► Circuit via ECC (Rust) ─► Witness (Rust) ─► Proof (Rust) ─► Verify (Rust)
94
+ ```
95
+
96
+ ### Design principles
97
+
98
+ - **User-friendly frontend to Expander:** A thin, practical, circuit-based layer that makes Expander/ECC easy to use from a simple CLI — no circuit classes, no path inference, predictable artifacts.
99
+ - **Explicit & reproducible:** You pass exact paths; we emit concrete artifacts (circuit, quantized ONNX, witness, proof). No hidden discovery or heuristics.
100
+ - **Clear separation:** Python orchestrates the pipeline and I/O; Rust implements the circuits and invokes Expander/ECC.
101
+ - **Quantization that's simple & faithful:** We scale tensors, **round to integers**, run the model, and (where needed) **rescale** outputs back. Scaling keeps arithmetic cheap while remaining close to the original FP behavior.
102
+ - **Small, fast circuits when possible:** Where safe, we fuse common patterns (e.g., **Linear + ReLU**, **Conv + ReLU**) into streamlined circuit fragments to reduce constraints.
103
+ - **Deterministic debugging:** We prefer loud failures and inspectable intermediates (e.g., `*_reshaped.json`) over implicit magic.
104
+
105
+ ---
106
+
107
+ ## Installation
108
+
109
+ ### Installing from PyPI (Recommended)
110
+
111
+ #### Prerequisites
112
+ - **UV**: Fast Python package manager ([install UV](https://docs.astral.sh/uv/getting-started/installation/))
113
+ - **OpenMPI**: Required system dependency
114
+
115
+ **macOS:**
116
+ ```bash
117
+ brew install open-mpi
118
+ ```
119
+
120
+ **Ubuntu/Debian:**
121
+ ```bash
122
+ sudo apt-get update
123
+ sudo apt-get install -y libopenmpi-dev openmpi-bin
124
+ ```
125
+
126
+ **Other Linux:**
127
+ - RHEL/CentOS/Fedora: `sudo dnf install openmpi openmpi-devel`
128
+ - Arch: `sudo pacman -S openmpi`
129
+
130
+ #### Install JSTprove
131
+ ```bash
132
+ uv tool install JSTprove
133
+ ```
134
+
135
+ #### Verify installation
136
+ ```bash
137
+ jst --help
138
+ ```
139
+
140
+ > Note: The package includes all necessary binaries (onnx_generic_circuit and expander-exec) for the full workflow.
141
+
142
+ ### Installing from GitHub Release
143
+
144
+ Download the appropriate wheel for your platform from the [latest release](https://github.com/Inference-Labs-Inc/jstprove/releases/latest):
145
+ - Linux: `JSTprove-*-manylinux_*.whl`
146
+ - macOS (Apple Silicon): `JSTprove-*-macosx_11_0_arm64.whl`
147
+
148
+ Then install:
149
+ ```bash
150
+ uv tool install /path/to/JSTprove-*.whl
151
+ ```
152
+
153
+ ---
154
+
155
+ ## Development Installation
156
+
157
+ <details>
158
+ <summary>Click to expand for development setup instructions</summary>
159
+
160
+ ### 0) Requirements
161
+
162
+ - **Python**: 3.10–3.12 (⚠️ Not compatible with Python 3.13)
163
+ - **UV**: Fast Python package manager ([install UV](https://docs.astral.sh/uv/getting-started/installation/))
164
+
165
+ > Note: UV will automatically install and manage the correct Python version for you.
166
+
167
+ > **Heads-up:** If you just installed `uv` and the command isn't found, **close and reopen your terminal** (or re-source your shell init file) so the `uv` shim is picked up on`PATH`.
168
+
169
+ ### 1) System packages
170
+
171
+ > Run commands from the **repo root** so the runner binary path (e.g., `./target/release/onnx_generic_circuit`) resolves.
172
+
173
+ #### Ubuntu/Debian
174
+ ```bash
175
+ sudo apt-get update && sudo apt-get install -y \
176
+ libopenmpi-dev openmpi-bin pkg-config libclang-dev clang
177
+ ```
178
+
179
+ #### macOS
180
+
181
+ ```bash
182
+ brew install open-mpi llvm
183
+ ```
184
+
185
+ ---
186
+
187
+ ### 2) Rust toolchain
188
+
189
+ Install Rust via rustup (if you don't have it):
190
+
191
+ ```bash
192
+ # macOS/Linux:
193
+ curl https://sh.rustup.rs -sSf | sh
194
+ # then restart your shell
195
+ ```
196
+
197
+ Verify your install:
198
+
199
+ ```bash
200
+ rustup --version
201
+ rustc --version
202
+ cargo --version
203
+ ```
204
+
205
+ > This repo includes a `rust-toolchain.toml` that pins the required **nightly**.
206
+ > When you run `cargo` in this directory, rustup will automatically download/use
207
+ > the correct toolchain. You **do not** need to run `rustup override set nightly`.
208
+
209
+ (Optional) If you want to prefetch nightly ahead of time:
210
+
211
+ ```bash
212
+ rustup toolchain install nightly
213
+ ```
214
+
215
+ ---
216
+
217
+ ### 3) Clone JSTprove & set up Python
218
+
219
+ ```bash
220
+ git clone https://github.com/inference-labs-inc/JSTprove.git
221
+ cd JSTprove
222
+
223
+ # Install dependencies with UV (automatically creates and manages virtual environment)
224
+ uv sync
225
+ ```
226
+
227
+ > If `uv` was just installed, you may need to **restart your terminal** before running `uv sync`.
228
+
229
+ ---
230
+
231
+ ### 4) Install & verify **Expander** (before building JSTprove)
232
+
233
+ JSTprove relies on Polyhedra Network’s **Expander** (prover) and **Expander Compiler Collection (ECC)** crates.
234
+ For a clean environment, install Expander and run its self-checks first.
235
+ To keep paths simple (and to match our scripts), **clone Expander as a subfolder of this repo**:
236
+
237
+ ```bash
238
+ # From the JSTprove repo root
239
+ git clone https://github.com/PolyhedraZK/Expander.git
240
+ cd Expander
241
+
242
+ # Build (uses the toolchain you configured with rustup)
243
+ cargo build --release
244
+ ```
245
+
246
+ **Verify Expander:** follow the “Correctness Test” (or equivalent) in the Expander README.
247
+ If you’re unsure, a quick smoke test is often:
248
+
249
+ ```bash
250
+ cargo test --release
251
+ ```
252
+
253
+ > Refer to the Expander README for the authoritative verification command(s), which may change over time.
254
+
255
+ > **Why inside the repo?** Our example commands and helper scripts assume `./Expander` as the manifest path. Keeping Expander elsewhere can lead to `manifest path 'Expander/Cargo.toml' does not exist` errors unless you always pass absolute paths.
256
+
257
+ *(You do **not** need to clone ECC separately unless you plan to override Cargo git sources; Cargo will fetch ECC automatically when building JSTprove.)*
258
+
259
+ ---
260
+
261
+ ### 5) Build the JSTprove runner (optional; the CLI can build on demand)
262
+
263
+ ```bash
264
+ # Make sure you're back in the JSTprove repo root (not in Expander).
265
+ # If you just followed Step 3, run:
266
+ cd ../JSTprove
267
+
268
+ # Then build:
269
+ cargo build --release
270
+ ```
271
+
272
+ > The CLI `compile` step will **(re)build** the runner automatically when needed, so this step is just a sanity check.
273
+
274
+ ---
275
+
276
+ ### 6) Install and try the CLI
277
+
278
+ **Option A: Install in virtual environment (for development)**
279
+ ```bash
280
+ # Install as editable package in venv
281
+ uv pip install -e .
282
+
283
+ # Try the CLI (with venv activated)
284
+ jst --help
285
+ ```
286
+
287
+ **Option B: Install globally (for regular use)**
288
+ ```bash
289
+ # Install as global tool
290
+ uv tool install .
291
+
292
+ # Try the CLI (available globally)
293
+ jst --help
294
+ ```
295
+
296
+ > ⏳ Note: The first time you run this command it may take a little while due to Python/Rust imports and initialization. This is normal—subsequent runs will be faster.
297
+
298
+ You can now follow the **Quickstart** commands (compile → witness → prove → verify).
299
+
300
+ </details>
301
+
302
+ ---
303
+
304
+ ## Quickstart (LeNet demo)
305
+
306
+ Demo paths:
307
+
308
+ * ONNX: `python/models/models_onnx/lenet.onnx`
309
+ * Input JSON: `python/models/inputs/lenet_input.json`
310
+ * Artifacts: `artifacts/lenet/*`
311
+
312
+ > ⏳ Note: The commands below may take a little longer _the first time_ they are run, as dependencies and binaries are initialized. After that, runtime reflects the actual computation (e.g., compiling circuits, generating witnesses, or proving), which can still be intensive depending on the model.
313
+
314
+ 1. **Compile** → circuit + **quantized ONNX**
315
+
316
+ ```bash
317
+ jst compile \
318
+ -m python/models/models_onnx/lenet.onnx \
319
+ -c artifacts/lenet/circuit.txt
320
+ ```
321
+
322
+ 2. **Witness** → reshape/scale inputs, run model, write witness + outputs
323
+
324
+ ```bash
325
+ jst witness \
326
+ -c artifacts/lenet/circuit.txt \
327
+ -i python/models/inputs/lenet_input.json \
328
+ -o artifacts/lenet/output.json \
329
+ -w artifacts/lenet/witness.bin
330
+ ```
331
+
332
+ 3. **Prove** → witness → proof
333
+
334
+ ```bash
335
+ jst prove \
336
+ -c artifacts/lenet/circuit.txt \
337
+ -w artifacts/lenet/witness.bin \
338
+ -p artifacts/lenet/proof.bin
339
+ ```
340
+
341
+ 4. **Verify** → check the proof (needs quantized ONNX for input shapes)
342
+
343
+ ```bash
344
+ jst verify \
345
+ -c artifacts/lenet/circuit.txt \
346
+ -i python/models/inputs/lenet_input.json \
347
+ -o artifacts/lenet/output.json \
348
+ -w artifacts/lenet/witness.bin \
349
+ -p artifacts/lenet/proof.bin
350
+ ```
351
+
352
+ If it prints **Verified**, you're done 🎉
353
+
354
+ ---
355
+
356
+ ## CLI reference
357
+
358
+ The CLI is intentionally minimal and **doesn't infer paths**.
359
+ See **[docs/cli.md](docs/cli.md)** for subcommands, flags, and examples.
360
+
361
+ ---
362
+
363
+ ## Troubleshooting
364
+
365
+ See **[docs/troubleshooting.md](docs/troubleshooting.md)**
366
+
367
+ ---
368
+
369
+ ## Contributing
370
+
371
+ See **[docs/CONTRIBUTING.md](docs/CONTRIBUTING.md)** for dev setup, pre-commit hooks, and PR guidelines.
372
+
373
+ ---
374
+
375
+ ## Disclaimer
376
+
377
+ **JSTProve** is **experimental and unaudited**. It is provided on an **open-source, “as-is” basis**, without any warranties or guarantees of fitness for a particular purpose.
378
+
379
+ Use of JSTProve in **production environments is strongly discouraged**. The codebase may contain bugs, vulnerabilities, or incomplete features that could lead to unexpected results, failures, or security risks.
380
+
381
+ By using, modifying, or distributing this software, you acknowledge that:
382
+
383
+ - It has not undergone a formal security review or audit.
384
+ - It may change substantially over time, including breaking changes.
385
+ - You assume full responsibility for any outcomes resulting from its use.
386
+
387
+ JSTProve is made available in the spirit of **research, experimentation, and community collaboration**. Contributions are welcome, but please proceed with caution and do not rely on this software for systems where correctness, reliability, or security are critical.
388
+
389
+ ---
390
+
391
+ ## Acknowledgments
392
+
393
+ We gratefully acknowledge [**Polyhedra Network**](https://polyhedra.network/) for:
394
+
395
+ * [**Expander**](https://github.com/PolyhedraZK/Expander) — the GKR/sumcheck proving system we build on.
396
+
397
+ * [**Expander Compiler Collection (ECC)**]() — the circuit frontend used to construct arithmetic circuits for ML layers.
@@ -0,0 +1,81 @@
1
+ jstprove-1.0.0.dist-info/licenses/LICENSE,sha256=UXQRcYRUH-PfN27n3P-FMaZFY6jr9jFPKcwT7CWbljw,1160
2
+ python/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ python/core/__init__.py,sha256=RlfbqGAaUulKl44QGMCkkGJBQZ8R_AgC5bU5zS7BjnA,97
4
+ python/core/binaries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ python/core/binaries/expander-exec,sha256=974E4OvnVmpqrL0ucUcbnDWVosZwW0T9mWOT64h7zH0,9848241
6
+ python/core/binaries/onnx_generic_circuit_1-0-0,sha256=Mhz7mWG0qVJubZoczzZ2RhtMI1Wx1KVWPqll8H32pf8,3822872
7
+ python/core/circuit_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
+ python/core/circuit_models/generic_onnx.py,sha256=OevM274yeaMQIroAv-eTjUcu_tY1Kr9BqEKdoEIpKjM,7597
9
+ python/core/circuit_models/simple_circuit.py,sha256=igQrZtQyreyHc26iAgCyDb0TuD2bJAoumYhc1pYPDzQ,4682
10
+ python/core/circuits/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ python/core/circuits/base.py,sha256=GNHJs7FBGJZdvlqGxsLix2TYc41hs-jsK23gSAFWyyU,35951
12
+ python/core/circuits/errors.py,sha256=KzIXyi2ssVvBmXV0Rgn0dBfsTgweKHjeSvP2byRmqGc,5964
13
+ python/core/circuits/zk_model_base.py,sha256=5ggOaJjs2_MJvn-PO1cPN3i7U-XR4L-0zJGYuLVKOLc,820
14
+ python/core/model_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ python/core/model_processing/errors.py,sha256=uh2YFjuuU5JM3anMtSTLAH-zjlNAKStmLDZqRUgBWS8,4611
16
+ python/core/model_processing/converters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ python/core/model_processing/converters/base.py,sha256=eG7iRDbDJJDTG2cCVgYlPlfkpmYPEnMzjGNK9wrA1m0,4303
18
+ python/core/model_processing/converters/onnx_converter.py,sha256=ks78fNZfgHU0RDnZZ2T3cdrlDxLnk7jqeR9o8OSqfFw,42862
19
+ python/core/model_processing/onnx_custom_ops/__init__.py,sha256=ofecV9pzpDJJl_r6inRw9JOKxtfK2rzzxWahAq9BKXE,475
20
+ python/core/model_processing/onnx_custom_ops/conv.py,sha256=6jJm3fcGWzcU4RjVgf179mPFCqsl4C3AR7bqQTffDgA,3464
21
+ python/core/model_processing/onnx_custom_ops/custom_helpers.py,sha256=2WdnHw9NAoN_6wjIBoAQDyL6wEIlZOqo6ysCZp5DpZs,1844
22
+ python/core/model_processing/onnx_custom_ops/gemm.py,sha256=bnEUXhqQCEcH4TIfbMTsCTtAlAlRzFvl4jj8g2QZFWU,2674
23
+ python/core/model_processing/onnx_custom_ops/maxpool.py,sha256=dlnFIRX3lZGtpqmwSqmhRaCJpogefdtXEAUlv4NuJ0U,2316
24
+ python/core/model_processing/onnx_custom_ops/onnx_helpers.py,sha256=utnJuc5sgb_z1LgxuY9y2cQbMpdEJ8xOOrcP8DhfDCM,5686
25
+ python/core/model_processing/onnx_custom_ops/relu.py,sha256=iEOnGn9Hoipta3UepKIz5oO1veBdcctcLRRT-_xMPqE,1202
26
+ python/core/model_processing/onnx_quantizer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
+ python/core/model_processing/onnx_quantizer/exceptions.py,sha256=_YaXXEMbfD1P8N86L5YIz3uCilkuzlhv_2lU90T4FfA,5646
28
+ python/core/model_processing/onnx_quantizer/onnx_op_quantizer.py,sha256=JpTZZKlMRLavm7vM8VNC1XQY4up7rY5Je7XIezjI1fc,7468
29
+ python/core/model_processing/onnx_quantizer/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ python/core/model_processing/onnx_quantizer/layers/base.py,sha256=wY2_65h0bPJHKErGlC4zamSKhhBKq3P7BEYIgwPKAV8,13259
31
+ python/core/model_processing/onnx_quantizer/layers/constant.py,sha256=iWfurTtJk-KaQW6OI4oIDvA8H3clfVwTmf5Xy-QrM0U,3699
32
+ python/core/model_processing/onnx_quantizer/layers/conv.py,sha256=ay9pkctbPfHmra9qZLhz5YCcEGuI67lnXZbJ5rNTgH8,6043
33
+ python/core/model_processing/onnx_quantizer/layers/gemm.py,sha256=VRhN2goyhKFUmGMFX14p3vHvxNAvA1GLKyzjCRUnBoI,5554
34
+ python/core/model_processing/onnx_quantizer/layers/maxpool.py,sha256=ie9rAwdQAh-QoymkrkEeFcRNLqgVk2MdmuJs4iRTc8k,4650
35
+ python/core/model_processing/onnx_quantizer/layers/relu.py,sha256=h6KLK4rboTMc3ZA6GpsLTLkD74pumshaA8igLQeb_pw,2357
36
+ python/core/model_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
+ python/core/model_templates/circuit_template.py,sha256=X8bA4AdmtQeb3ltU74GaWYfrOFhqs_DOpUqRMFXLAD8,2352
38
+ python/core/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
+ python/core/utils/benchmarking_helpers.py,sha256=0nT38SCrjP_BlvJODsc9twF9ZmIFg_1sAvSyeNfv4mQ,5235
40
+ python/core/utils/constants.py,sha256=Qu5_6OUe1XIsL-IY5_4923eN7x1-SPv6ohQonztAobA,102
41
+ python/core/utils/errors.py,sha256=vTlluhbSqmyI5e1JNLEZ1mQ-dG_Wbxe4p5l4aa59zAY,3739
42
+ python/core/utils/general_layer_functions.py,sha256=l_aIqMbSUKxWdUTI_sVLqTdNZj_NnpzXXejSHidhoag,9706
43
+ python/core/utils/helper_functions.py,sha256=3JwJa4wHoUBteukDw4bAetqMsQLeJ0_sJ0qIdKy7GCY,37097
44
+ python/core/utils/model_registry.py,sha256=nhx1N2bV6YtqEtRuCnA6GB8TSZf2kdwzuGlUgYQc9F8,4789
45
+ python/core/utils/scratch_tests.py,sha256=UYXsWIBh_27OxnyfH9CuxeNFT-OWCK0YpJ-j-8f0QHc,2332
46
+ python/core/utils/witness_utils.py,sha256=ukvbF6EaHMPzRQVZad9wQ9gISRwBGQ1hEAHzc5TpGuw,9488
47
+ python/frontend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ python/frontend/cli.py,sha256=lkvhzQC6bv0AgWUypg_cH-JT574r89qgTIsgHDT9GRg,3106
49
+ python/frontend/commands/__init__.py,sha256=HKfKIM8wKMvzUPlBMJCSAqRurPIp85btGFCNjr7DbyE,575
50
+ python/frontend/commands/args.py,sha256=JmG4q-tbEy8_YcQsph_WLEAs_w7y7GiR22PhTrc14v4,2255
51
+ python/frontend/commands/base.py,sha256=a7NWoXB9VL8It1TpuL2vmR7J2bhejHDllrNMBEm-JLE,6368
52
+ python/frontend/commands/compile.py,sha256=-mE4LjBEXzgsnzTJCeas0ZkZgD-kdATpYLk52ljBw88,1905
53
+ python/frontend/commands/constants.py,sha256=feCVczqP6xphHUta2ZMaAuYyVeemZgwU_sCWr6ky5X8,164
54
+ python/frontend/commands/model_check.py,sha256=xsXvXzYpIagFGnUk_UYGZYx-onP0Opes95XismqvY64,1806
55
+ python/frontend/commands/prove.py,sha256=QYVWxXBQjDhVLqmyzfPJKNcVFQDJvzuhNNnKJ5Ed370,1736
56
+ python/frontend/commands/verify.py,sha256=ZpHGQ9DaFtq16xml7sfO2_NWlyu3YH3s5e85Yghlc2E,2076
57
+ python/frontend/commands/witness.py,sha256=klWHRQjwVObwXGh2l1V02XszXvUC-ehgvMwUDrV9vR8,1960
58
+ python/frontend/commands/bench/__init__.py,sha256=15dpRrxd6UMqI-2fSKpca7cwszg6L4G_R6bt7tSyHew,1711
59
+ python/frontend/commands/bench/list.py,sha256=nbYnXnag7VaFgS474lPQcJ40JVGNzBA2olokbzkntIE,1252
60
+ python/frontend/commands/bench/model.py,sha256=SaIWXAXZbWGbrNqEo5bs4NwgZfMOmmxaCUe5-s3mtEc,5176
61
+ python/frontend/commands/bench/sweep.py,sha256=rl-QBS9eXgQkuPJBhsU4CohfE1PdJvnM8NRhNU7ztQw,5279
62
+ python/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ python/scripts/benchmark_runner.py,sha256=sjbqaLrdjt94AoyQXAxT4FhsN6aRu5idTRQ5uHmZOWM,28593
64
+ python/scripts/gen_and_bench.py,sha256=9kcIj-K_nG-G194C68Uig-Yw-p3nYKESACIpWRflmts,16276
65
+ python/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ python/tests/test_cli.py,sha256=OiAyG3aBpukk0i5FFWbiKaF42wf-7By-UWDHNjwtsqo,27042
67
+ python/tests/circuit_e2e_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
+ python/tests/circuit_e2e_tests/circuit_model_developer_test.py,sha256=Ic9hprCn1Rs-XAF-SUmBNEDn65yaCxUK9z5875KPg5o,39416
69
+ python/tests/circuit_e2e_tests/helper_fns_for_tests.py,sha256=4toXD0pJMYVZFL1O9JZAJF-iqbi9k1eyuk_goUnchRo,5190
70
+ python/tests/circuit_e2e_tests/other_e2e_test.py,sha256=o2YfYNwdWRbalB4pE3qZTyTs5nHAAWN33vVHtl_OHv0,6034
71
+ python/tests/circuit_parent_classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
+ python/tests/circuit_parent_classes/test_circuit.py,sha256=t4h4Bkz3PJpm2fARGw6TJS4S9cE0uTa8FFkkAUaBGEI,30685
73
+ python/tests/circuit_parent_classes/test_onnx_converter.py,sha256=naNDsxpcxH2ClsUgv5_TS_ZOpLo8XSGse_x7gfFLTUY,6266
74
+ python/tests/circuit_parent_classes/test_ort_custom_layers.py,sha256=FEEY8nbuMC2xb6WrBsik7TeDde6SlMwwG9PKSqmCymo,3980
75
+ python/tests/utils_testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
76
+ python/tests/utils_testing/test_helper_functions.py,sha256=xmeGQieh4LE9U-CDKBlHhSWqH0cAmmDU3qXNbDkkvms,27192
77
+ jstprove-1.0.0.dist-info/METADATA,sha256=nM_w5Qsh8TwJJ6PDGZcBzND029Fj4uWwmilqQXVx_mw,14047
78
+ jstprove-1.0.0.dist-info/WHEEL,sha256=gy6FWQgpujK_dnYc155G2NL32NQjpi5ebTEXjh8SGZQ,144
79
+ jstprove-1.0.0.dist-info/entry_points.txt,sha256=nGcTSO-4q08gPl1IoWdrPaiY7IbO7XvmXKkd34dYHc8,49
80
+ jstprove-1.0.0.dist-info/top_level.txt,sha256=J-z0poNcsv31IHB413--iOY8LoHBKiTHeybHX3abokI,7
81
+ jstprove-1.0.0.dist-info/RECORD,,
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.9.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-manylinux2014_x86_64
5
+ Tag: py3-none-manylinux_2_17_x86_64
6
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ jst = python.frontend.cli:main
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2025 Inference Labs Inc.
2
+
3
+ Source Access Grant
4
+ You may access, view, study, and modify the source code of this software.
5
+
6
+ Redistribution Conditions
7
+ You may redistribute this software in source or modified form provided that:
8
+ a) You retain this license document and all copyright notices
9
+ b) Any modified files carry prominent notices stating you changed them
10
+ c) You do not misrepresent the origin of the software
11
+
12
+ Usage Restriction
13
+ NO USE RIGHTS ARE GRANTED BY THIS LICENSE. Any operational use including but not limited to:
14
+ - Execution of the software
15
+ - Integration with other systems
16
+ - Deployment in any environment
17
+ - Commercial or production utilization requires express written permission from the IP Owner.
18
+
19
+ Intellectual Property Reservation
20
+ All rights not expressly granted herein are reserved by the IP Owner. For usage permissions, contact: legal@inferencelabs.com
21
+
22
+ Disclaimer
23
+ THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. THE IP OWNER SHALL NOT BE LIABLE FOR ANY DAMAGES ARISING FROM ACCESS OR DISTRIBUTION.
24
+
25
+ License Propagation
26
+ Any distribution of this software or derivatives must be under this same license agreement.
@@ -0,0 +1 @@
1
+ python
python/__init__.py ADDED
File without changes
@@ -0,0 +1,3 @@
1
+ # Package metadata constants
2
+ PACKAGE_NAME = "JSTprove"
3
+ RUST_BINARY_NAME = "onnx_generic_circuit"
File without changes
Binary file
File without changes