nvti commited on
Commit
b46e058
·
1 Parent(s): 27efbaf

chore: remove Linux-specific dependencies from pyproject.toml and requirements.txt; update README to clarify usage of Nemotron implementation for local model inference

Browse files
README.md CHANGED
@@ -264,10 +264,9 @@ POZIFY_SPACES_GPU_DURATION=300
264
  ```
265
 
266
  `HF_TOKEN` is only needed for `hf_inference` or for downloading a private/gated local model repo.
267
- Nemotron uses Mamba layers; the Space installs `causal-conv1d` and `mamba-ssm` so Transformers can
268
- use the fast kernels. `pre-requirements.txt` installs `torch` before those packages so their setup
269
- steps can import it. If the fast kernels are still unavailable at runtime, Pozify caps the local
270
- prompt context before generation to avoid the slow naive Mamba path crashing CUDA.
271
 
272
  ### 2. Use the fine-tuned merged model locally
273
 
 
264
  ```
265
 
266
  `HF_TOKEN` is only needed for `hf_inference` or for downloading a private/gated local model repo.
267
+ Pozify uses the Nemotron implementation bundled with Transformers instead of downloading remote
268
+ model code. If fast Mamba kernels are unavailable at runtime, Pozify caps the local prompt context
269
+ before generation to avoid the slow naive Mamba path crashing CUDA.
 
270
 
271
  ### 2. Use the fine-tuned merged model locally
272
 
docs/01-docs-index.md CHANGED
@@ -18,6 +18,10 @@ Read in this order if you want to understand and run the current project:
18
 
19
  - [11-overview-demo-video-transcript.md](11-overview-demo-video-transcript.md)
20
 
 
 
 
 
21
  ## Notes
22
 
23
  - Current coach-summary runtime default: `build-small-hackathon/pozify-coach-summary1`
 
18
 
19
  - [11-overview-demo-video-transcript.md](11-overview-demo-video-transcript.md)
20
 
21
+ ## Team Process
22
+
23
+ - [50-codex-development-workflow.md](50-codex-development-workflow.md)
24
+
25
  ## Notes
26
 
27
  - Current coach-summary runtime default: `build-small-hackathon/pozify-coach-summary1`
docs/50-codex-development-workflow.md ADDED
@@ -0,0 +1,357 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # How We Use Codex To Build Pozify
2
+
3
+ This is a short field note on how we used Codex while building Pozify, our small-model workout form
4
+ coach. Pozify takes a short exercise video and turns it into a structured form-review report: pose
5
+ analysis, exercise routing, rep counting, issue markers, annotated clips, and a grounded coach
6
+ summary.
7
+
8
+ That kind of product has a lot of moving pieces. It is not only a UI. It is not only a model. It has
9
+ data preparation, computer vision, small-model inference, deterministic rules, safety wording,
10
+ training scripts, deployment constraints, and docs. Codex helped because it could move across those
11
+ layers with the repo open, while still letting us stay in control of product direction.
12
+
13
+ Codex did not replace engineering judgment. It made the loop between idea, implementation, review,
14
+ and documentation much tighter.
15
+
16
+ ## Why Codex Was Useful For This Project
17
+
18
+ The biggest advantage was context. A normal chatbot can answer a question, but Codex can inspect the
19
+ actual project: `app.py`, `src/pozify/`, `web/`, `scripts/`, `configs/`, `tests/`, and `docs/`.
20
+ That matters because the best answer for Pozify is usually not the most generic answer. It has to fit
21
+ the current pipeline.
22
+
23
+ For example, if we want to improve push-up feedback, the right starting point is not "write a new
24
+ fitness AI feature." The right starting point is:
25
+
26
+ - read the existing push-up analyzer
27
+ - read the shared rep counter and issue-marker helpers
28
+ - check the tests that define current behavior
29
+ - understand the JSON contracts used by the UI and coach summary
30
+ - then propose the smallest useful change
31
+
32
+ Codex is good at that kind of grounded work. It can keep the current codebase in view while it
33
+ brainstorms, implements, reviews, and documents.
34
+
35
+ ## Brainstorming: From Vague Ideas To Scoped Work
36
+
37
+ Early in the project, many ideas started rough:
38
+
39
+ - Can the app explain bad reps better?
40
+ - Should unsupported exercises be rejected or forced into the closest label?
41
+ - How should we show confidence without making medical claims?
42
+ - What is the smallest useful coach summary model we can ship?
43
+
44
+ Codex was useful because we could ask it to brainstorm inside the project constraints. A good prompt
45
+ was not just "give me ideas." It was closer to:
46
+
47
+ ```text
48
+ Read the current Pozify pipeline and brainstorm three ways to improve form feedback. Keep the ideas
49
+ compatible with the existing analyzer structure and avoid medical claims.
50
+ ```
51
+
52
+ The result was more useful than a blank-page brainstorm. Codex could separate product ideas from
53
+ engineering tasks, identify likely files, and call out risk. That helped us avoid turning every idea
54
+ into a large rewrite.
55
+
56
+ The best brainstorming output usually had this shape:
57
+
58
+ - what the user problem is
59
+ - what the smallest version could be
60
+ - which files would change
61
+ - what tests would prove it works
62
+ - what wording needs human review
63
+
64
+ That is why Codex is good for early-stage product work: it can turn messy intent into a concrete
65
+ engineering path without pretending the path is risk-free.
66
+
67
+ ## Deep Research: Faster Learning, Better Tradeoffs
68
+
69
+ Pozify touches several systems that change over time: Hugging Face Spaces, Modal, MediaPipe,
70
+ Gradio, small-model inference, and model publishing. We used Codex for deep research when we needed
71
+ to understand a tool before changing code.
72
+
73
+ The useful pattern was to ask Codex to separate facts from recommendations:
74
+
75
+ ```text
76
+ Research the current deployment constraints that matter for this Gradio app. Prefer official
77
+ sources. Summarize the facts, explain what they mean for Pozify, then recommend changes only if they
78
+ are justified.
79
+ ```
80
+
81
+ That made research actionable. We did not want a long pile of links. We wanted to know what affected
82
+ the project:
83
+
84
+ - Does this runtime support the dependency we need?
85
+ - Should this model run through hosted inference or local inference?
86
+ - Does this training job belong locally, in CI, or on Modal?
87
+ - Which setting affects GPU time, startup time, or reliability?
88
+
89
+ Codex was good here because it could connect research back to the repo. It could say, "this affects
90
+ the provider code," or "this belongs in the Modal script," or "this should be documented in the
91
+ training report."
92
+
93
+ We still treated research as research. Codex could make recommendations, but we converted those
94
+ recommendations into scoped implementation tasks before changing the project.
95
+
96
+ ## Collaboration: Keeping The Team In The Same Thread
97
+
98
+ Codex was also useful as a collaboration tool. When multiple people touch a fast-moving project, the
99
+ hard part is often not writing code. The hard part is remembering why a change exists, what is still
100
+ untested, and what another teammate needs to know.
101
+
102
+ We used Codex to create handoff notes like:
103
+
104
+ ```text
105
+ Summarize the current branch for another contributor. Include what changed, why it changed, how to
106
+ test it, and what still needs review.
107
+ ```
108
+
109
+ That was especially helpful around training and deployment work. A branch might include a script
110
+ change, a config update, a docs update, and a model artifact note. Codex could inspect the diff and
111
+ turn it into a readable handoff.
112
+
113
+ The collaboration rule we kept was simple: Codex can help explain and organize work, but it should
114
+ not overwrite another member's changes. Before editing, we ask it to inspect `git status --short` and
115
+ read relevant diffs. That keeps the workflow respectful of everyone else's worktree.
116
+
117
+ ## Code Review: A Fast Second Pass
118
+
119
+ One of the best uses of Codex was code review. Not a replacement for human review, but a fast second
120
+ pass before asking someone else to look.
121
+
122
+ The review prompt we used most often was direct:
123
+
124
+ ```text
125
+ Review the current diff. Focus on correctness, regressions, missing tests, grounding, and user
126
+ safety. Put findings first with file and line references.
127
+ ```
128
+
129
+ That framing matters. We did not ask Codex to nitpick style. We asked it to look for things that
130
+ could break the product:
131
+
132
+ - a pipeline contract changed but the UI still expects the old field
133
+ - a fallback path no longer works when a model provider fails
134
+ - a test fixture covers only the happy path
135
+ - a coach summary can say more than the structured evidence supports
136
+ - a deployment setting works locally but not on Hugging Face Spaces
137
+
138
+ Codex is good at review because it can inspect related files quickly. If a change touches
139
+ `src/pozify/steps/coach_summary.py`, it can also check the verifier, fallback summary, provider
140
+ tests, and docs. That is the kind of cross-file attention that catches practical regressions.
141
+
142
+ ## Implementing UI And Code
143
+
144
+ For implementation, Codex was most helpful when the task was scoped. "Improve the app" is too broad.
145
+ "Update the result view to show summary provider metadata and add a focused test" is a good Codex
146
+ task.
147
+
148
+ For Python pipeline work, we ask Codex to follow existing project structure:
149
+
150
+ - pipeline steps live under `src/pozify/steps/`
151
+ - exercise logic lives under `src/pozify/exercises/`
152
+ - shared contracts live in `src/pozify/contracts.py`
153
+ - training and publishing workflows live in `scripts/` and `configs/`
154
+ - behavior should be covered in `tests/`
155
+
156
+ For UI work, we ask it to inspect both the Gradio entrypoint and static assets:
157
+
158
+ - `app.py`
159
+ - `web/index.html`
160
+ - `web/app.js`
161
+ - `web/report.js`
162
+ - `web/styles.css`
163
+
164
+ The strongest Codex implementation loop looks like this:
165
+
166
+ 1. Read the relevant files.
167
+ 2. Explain the smallest safe change.
168
+ 3. Make the edit.
169
+ 4. Add or update focused tests.
170
+ 5. Run the relevant checks.
171
+ 6. Summarize what changed and what remains uncertain.
172
+
173
+ That loop is where Codex feels different from autocomplete. It is not only producing lines of code.
174
+ It is helping maintain the whole change: code, tests, docs, and verification.
175
+
176
+ ## Plugins: Bringing The Right Tool Into The Same Flow
177
+
178
+ One thing that made Codex more effective was using plugins for tasks that needed more than plain code
179
+ editing. The value was not "more tools for the sake of tools." The value was staying in one
180
+ development flow while Codex used the right capability at the right time.
181
+
182
+ For Pozify, the most useful plugin pattern was UI verification. When we changed the app interface,
183
+ Codex could edit the frontend code, start the local app, open it in a browser, inspect the result,
184
+ and then come back to the code with a concrete fix. That is much better than only reading CSS and
185
+ guessing whether the page looks right.
186
+
187
+ Plugins also helped with artifact-heavy work. Pozify has reports, model-card style docs, demo notes,
188
+ and training writeups. When the output is a document, presentation, spreadsheet, screenshot, or PDF,
189
+ it is useful for Codex to work with the artifact directly instead of treating everything like raw
190
+ text.
191
+
192
+ The practical lesson was simple: use a plugin when the task has a real environment or artifact to
193
+ inspect.
194
+
195
+ - For UI work, use browser inspection instead of trusting code alone.
196
+ - For docs and reports, use document-aware workflows when layout or structure matters.
197
+ - For product design work, use design-oriented workflows before jumping into implementation.
198
+ - For generated artifacts, ask Codex to render or verify the result when possible.
199
+
200
+ That made Codex feel less like a detached assistant and more like a teammate sitting inside the same
201
+ workspace.
202
+
203
+ ## Skills: Turning Good Habits Into Repeatable Playbooks
204
+
205
+ Skills were useful for a different reason. A plugin gives Codex a capability. A skill gives Codex a
206
+ way of working.
207
+
208
+ In this project, we used skills as repeatable playbooks for work that needed a consistent standard.
209
+ For example, documentation should not be a random dump of notes. It should have a clear audience,
210
+ scope, and structure. UI work should not only "compile"; it should be checked for layout, responsive
211
+ behavior, and product fit. Code review should start with bugs and regressions, not style opinions.
212
+
213
+ Skills helped encode those expectations. Instead of re-explaining the standard every time, we could
214
+ ask Codex to use the relevant skill and then let it follow that workflow:
215
+
216
+ - documentation skills for clear project docs, reports, and handoff notes
217
+ - frontend/design skills for UI changes that need visual quality and responsive behavior
218
+ - code review behavior for focused review comments and missing-test analysis
219
+ - product or research skills when we needed to compare options before implementation
220
+
221
+ The important habit was to invoke the skill before the work starts. That makes Codex read the right
222
+ instructions first, then inspect the project, then act. The result is more consistent than asking for
223
+ a one-off answer each time.
224
+
225
+ For a fast project like Pozify, that consistency mattered. We were moving between model training,
226
+ UI, docs, deployment, and tests. Skills helped keep the quality bar stable while the task type kept
227
+ changing.
228
+
229
+ ## Automation: Turning Repeated Work Into Scripts
230
+
231
+ Pozify has repeated workflows: running fast tests, preparing data, training routers, training coach
232
+ summaries, publishing artifacts, and keeping docs in sync. Codex helped us turn some of those
233
+ manual steps into explicit scripts and checklists.
234
+
235
+ Automation is a good Codex task because the desired behavior can be made concrete:
236
+
237
+ ```text
238
+ Add a script that runs the fast Pozify validation checks before a PR. Reuse existing commands, avoid
239
+ network-dependent steps, and document how to run it.
240
+ ```
241
+
242
+ The important part is that automation should be boring. It should log clearly, fail clearly, and avoid
243
+ surprising side effects. For this project, anything involving credentials, model uploads, dataset
244
+ publishing, or GPU spend still needs human approval.
245
+
246
+ Codex is good at automation because it can inspect how the project already runs. It can reuse
247
+ `uv run pytest`, `uv run ruff check .`, Modal scripts, existing config files, and docs instead of
248
+ inventing a parallel workflow.
249
+
250
+ We also used Codex to decide what should not be automated. Some actions are too expensive or risky to
251
+ run silently: uploading a model, publishing a dataset, spending GPU time, changing public demo
252
+ behavior, or rewriting safety wording. For those, the better automation is a checklist or a command
253
+ with an explicit approval step.
254
+
255
+ That split made automation more useful:
256
+
257
+ - automate local checks that are cheap and repeatable
258
+ - script data and training setup when the inputs and outputs are clear
259
+ - document manual approval points for publishing and public claims
260
+ - use reminders or handoff notes for follow-up work that should not block a coding session
261
+
262
+ The best automations were small. A good script saved a few minutes every time and made failure
263
+ obvious. A good checklist prevented a risky release mistake. Codex helped build both.
264
+
265
+ ## How Plugins, Skills, And Automation Fit Together
266
+
267
+ The most effective Codex workflow combined all three.
268
+
269
+ Plugins gave Codex access to the working surface. Skills gave it the right operating style.
270
+ Automation made the repeated parts cheap.
271
+
272
+ For example, a UI change could flow like this:
273
+
274
+ 1. Use a frontend or product-design skill to frame the change.
275
+ 2. Ask Codex to inspect `app.py` and `web/`.
276
+ 3. Implement the smallest UI update.
277
+ 4. Use the browser plugin to open the local app and check the rendered result.
278
+ 5. Run focused tests or linting.
279
+ 6. Update docs or write a handoff note.
280
+
281
+ A training workflow looked different:
282
+
283
+ 1. Use Codex to research or review the training goal.
284
+ 2. Inspect `scripts/`, `configs/`, and the relevant training docs.
285
+ 3. Update the script or config in a scoped way.
286
+ 4. Automate only the safe local checks.
287
+ 5. Keep model upload, dataset publishing, and GPU-heavy runs behind human approval.
288
+ 6. Record metrics and artifact paths in the docs.
289
+
290
+ That is where Codex became especially effective. It was not one magic prompt. It was a repeatable
291
+ system: choose the right playbook, use the right tool, automate the boring part, and keep human
292
+ judgment on the decisions that matter.
293
+
294
+ ## What Makes Codex Good
295
+
296
+ For this project, Codex was good for eight practical reasons.
297
+
298
+ First, it works with the real repo. It can read the current files, not just guess from a description.
299
+ That makes its suggestions more grounded.
300
+
301
+ Second, it moves across layers. Pozify needs Python, web UI, ML scripts, configs, tests, and docs.
302
+ Codex can connect those pieces in one task.
303
+
304
+ Third, it is good at turning ambiguity into a plan. When an idea is vague, Codex can propose options,
305
+ tradeoffs, affected files, and a smallest useful version.
306
+
307
+ Fourth, it is good at review. It can look at a diff and check related files faster than a human can
308
+ manually scan the whole repo.
309
+
310
+ Fifth, it helps preserve momentum. Instead of stopping to remember the exact test command, docs
311
+ location, or helper API, we can ask Codex to inspect and continue.
312
+
313
+ Sixth, it improves documentation while the context is still fresh. After implementing a change, Codex
314
+ can update the relevant docs and write a handoff note before details are forgotten.
315
+
316
+ Seventh, plugins let it inspect real outputs. That is important for UI, documents, generated
317
+ artifacts, and local app behavior.
318
+
319
+ Eighth, skills and automation make the workflow repeatable. The team does not have to rebuild the
320
+ same process from memory each time.
321
+
322
+ ## What We Still Keep Human-Owned
323
+
324
+ The biggest lesson is that Codex works best when responsibility stays clear.
325
+
326
+ Humans still own:
327
+
328
+ - product direction
329
+ - user safety language
330
+ - fitness and health-related claims
331
+ - dataset choices and licensing judgment
332
+ - public model and dataset publishing
333
+ - final code review and merge approval
334
+ - whether a feature is actually useful to users
335
+
336
+ Codex helps us move faster, but it does not decide what Pozify should be. That distinction matters a
337
+ lot for a product that gives workout feedback. The app should be grounded in evidence, and the
338
+ development process should be grounded too.
339
+
340
+ ## Our Current Codex Workflow
341
+
342
+ The workflow we settled into is simple:
343
+
344
+ 1. Use Codex to inspect the repo and understand the current shape.
345
+ 2. Brainstorm or research with project constraints in view.
346
+ 3. Pick a small, human-approved direction.
347
+ 4. Ask Codex to implement the scoped change.
348
+ 5. Ask Codex to review the diff.
349
+ 6. Run tests, linting, local app checks, or browser checks.
350
+ 7. Update docs and write a handoff note.
351
+
352
+ That workflow made Codex valuable throughout the build. It helped us think, research, collaborate,
353
+ review, implement, and automate without turning the project into a black box.
354
+
355
+ The short version: Codex is good because it compresses the distance between intent and verified
356
+ change. For Pozify, that meant more time spent on product judgment and less time lost to mechanical
357
+ work, context switching, and stale documentation.
pyproject.toml CHANGED
@@ -6,12 +6,10 @@ readme = "README.md"
6
  requires-python = ">=3.10"
7
  dependencies = [
8
  "accelerate>=0.26.0",
9
- "causal-conv1d>=1.5.0; sys_platform == 'linux'",
10
  "fastapi>=0.136.3",
11
  "gradio>=4.44.0",
12
  "huggingface-hub>=0.24.0",
13
  "joblib>=1.4.0",
14
- "mamba-ssm>=2.2.4; sys_platform == 'linux'",
15
  "mediapipe>=0.10.35",
16
  "modal>=1.5.0",
17
  "numpy>=1.26.0",
 
6
  requires-python = ">=3.10"
7
  dependencies = [
8
  "accelerate>=0.26.0",
 
9
  "fastapi>=0.136.3",
10
  "gradio>=4.44.0",
11
  "huggingface-hub>=0.24.0",
12
  "joblib>=1.4.0",
 
13
  "mediapipe>=0.10.35",
14
  "modal>=1.5.0",
15
  "numpy>=1.26.0",
requirements.txt CHANGED
@@ -22,23 +22,14 @@ anyio==4.13.0
22
  # httpx
23
  # starlette
24
  # watchfiles
25
- apache-tvm-ffi==0.1.9 ; sys_platform == 'linux'
26
- # via
27
- # mamba-ssm
28
- # quack-kernels
29
- # tilelang
30
  async-timeout==5.0.1 ; python_full_version < '3.11'
31
  # via aiohttp
32
  attrs==26.1.0
33
  # via aiohttp
34
  audioop-lts==0.2.2 ; python_full_version >= '3.13'
35
  # via gradio
36
- backports-strenum==1.3.1 ; python_full_version < '3.11' and sys_platform == 'linux'
37
- # via cuda-core
38
  brotli==1.2.0
39
  # via gradio
40
- causal-conv1d==1.6.2.post1 ; sys_platform == 'linux'
41
- # via pozify
42
  cbor2==6.1.2
43
  # via modal
44
  certifi==2026.5.20
@@ -58,8 +49,6 @@ click==8.4.1
58
  # modal
59
  # typer
60
  # uvicorn
61
- cloudpickle==3.1.2 ; sys_platform == 'linux'
62
- # via tilelang
63
  colorama==0.4.6 ; sys_platform == 'win32'
64
  # via
65
  # click
@@ -69,26 +58,13 @@ contourpy==1.3.2 ; python_full_version < '3.11'
69
  contourpy==1.3.3 ; python_full_version >= '3.11'
70
  # via matplotlib
71
  cuda-bindings==13.3.1 ; sys_platform == 'linux'
72
- # via
73
- # cuda-python
74
- # torch
75
- cuda-core==1.0.1 ; sys_platform == 'linux'
76
- # via cuda-python
77
  cuda-pathfinder==1.5.5 ; sys_platform == 'linux'
78
- # via
79
- # cuda-bindings
80
- # cuda-core
81
- # cuda-python
82
- cuda-python==13.3.1 ; sys_platform == 'linux'
83
- # via nvidia-cutlass-dsl-libs-base
84
  cuda-toolkit==13.0.2 ; sys_platform == 'linux'
85
  # via torch
86
  cycler==0.12.1
87
  # via matplotlib
88
- einops==0.8.2 ; sys_platform == 'linux'
89
- # via
90
- # mamba-ssm
91
- # quack-kernels
92
  exceptiongroup==1.3.1 ; python_full_version < '3.11'
93
  # via anyio
94
  fastapi==0.136.3
@@ -171,8 +147,6 @@ joblib==1.5.3
171
  # scikit-learn
172
  kiwisolver==1.5.0
173
  # via matplotlib
174
- mamba-ssm==2.3.2.post1 ; sys_platform == 'linux'
175
- # via pozify
176
  markdown-it-py==4.2.0
177
  # via rich
178
  markupsafe==3.0.3
@@ -185,8 +159,6 @@ mdurl==0.1.2
185
  # via markdown-it-py
186
  mediapipe==0.10.35
187
  # via pozify
188
- ml-dtypes==0.4.1 ; sys_platform == 'linux'
189
- # via tilelang
190
  modal==1.5.0
191
  # via pozify
192
  mpmath==1.3.0
@@ -202,27 +174,19 @@ networkx==3.4.2 ; python_full_version < '3.11'
202
  # via torch
203
  networkx==3.6.1 ; python_full_version >= '3.11'
204
  # via torch
205
- ninja==1.13.0 ; sys_platform == 'linux'
206
- # via
207
- # causal-conv1d
208
- # mamba-ssm
209
  numpy==1.26.4
210
  # via
211
  # accelerate
212
  # contourpy
213
- # cuda-core
214
  # gradio
215
  # matplotlib
216
  # mediapipe
217
- # ml-dtypes
218
- # nvidia-cutlass-dsl-libs-base
219
  # opencv-contrib-python
220
  # opencv-python-headless
221
  # pandas
222
  # pozify
223
  # scikit-learn
224
  # scipy
225
- # tilelang
226
  # transformers
227
  nvidia-cublas==13.1.0.3 ; sys_platform == 'linux'
228
  # via
@@ -251,10 +215,6 @@ nvidia-cusparse==12.6.3.3 ; sys_platform == 'linux'
251
  # nvidia-cusolver
252
  nvidia-cusparselt-cu13==0.8.0 ; sys_platform == 'linux'
253
  # via torch
254
- nvidia-cutlass-dsl==4.5.2 ; sys_platform == 'linux'
255
- # via quack-kernels
256
- nvidia-cutlass-dsl-libs-base==4.5.2 ; sys_platform == 'linux'
257
- # via nvidia-cutlass-dsl
258
  nvidia-nccl-cu13==2.28.9 ; sys_platform == 'linux'
259
  # via torch
260
  nvidia-nvjitlink==13.0.88 ; sys_platform == 'linux'
@@ -276,11 +236,9 @@ orjson==3.11.9
276
  packaging==26.2
277
  # via
278
  # accelerate
279
- # causal-conv1d
280
  # gradio
281
  # gradio-client
282
  # huggingface-hub
283
- # mamba-ssm
284
  # matplotlib
285
  # spaces
286
  # transformers
@@ -299,9 +257,7 @@ propcache==0.5.2
299
  protobuf==6.33.6
300
  # via modal
301
  psutil==7.2.2
302
- # via
303
- # accelerate
304
- # tilelang
305
  pycparser==3.0 ; implementation_name != 'PyPy'
306
  # via cffi
307
  pydantic==2.12.5
@@ -334,8 +290,6 @@ pyyaml==6.0.3
334
  # gradio
335
  # huggingface-hub
336
  # transformers
337
- quack-kernels==0.5.0 ; sys_platform == 'linux'
338
- # via mamba-ssm
339
  regex==2026.5.9
340
  # via transformers
341
  requests==2.34.2
@@ -361,9 +315,7 @@ scipy==1.17.1 ; python_full_version >= '3.11'
361
  semantic-version==2.10.0
362
  # via gradio
363
  setuptools==81.0.0
364
- # via
365
- # mamba-ssm
366
- # torch
367
  shellingham==1.5.4
368
  # via typer
369
  six==1.17.0
@@ -382,8 +334,6 @@ synchronicity==0.12.3
382
  # via modal
383
  threadpoolctl==3.6.0
384
  # via scikit-learn
385
- tilelang==0.1.8 ; sys_platform == 'linux'
386
- # via mamba-ssm
387
  tokenizers==0.22.2
388
  # via transformers
389
  toml==0.10.2
@@ -393,29 +343,15 @@ tomlkit==0.14.0
393
  torch==2.11.0
394
  # via
395
  # accelerate
396
- # causal-conv1d
397
- # mamba-ssm
398
  # pozify
399
- # quack-kernels
400
- # tilelang
401
- # torch-c-dlpack-ext
402
- torch-c-dlpack-ext==0.1.5 ; sys_platform == 'linux'
403
- # via
404
- # quack-kernels
405
- # tilelang
406
  tqdm==4.68.2
407
  # via
408
  # huggingface-hub
409
- # tilelang
410
  # transformers
411
  transformers==5.12.0
412
- # via
413
- # mamba-ssm
414
- # pozify
415
  triton==3.6.0 ; sys_platform == 'linux'
416
- # via
417
- # mamba-ssm
418
- # torch
419
  typer==0.25.1
420
  # via
421
  # gradio
@@ -431,7 +367,6 @@ typing-extensions==4.15.0
431
  # aiohttp
432
  # aiosignal
433
  # anyio
434
- # apache-tvm-ffi
435
  # exceptiongroup
436
  # fastapi
437
  # gradio
@@ -439,13 +374,11 @@ typing-extensions==4.15.0
439
  # huggingface-hub
440
  # modal
441
  # multidict
442
- # nvidia-cutlass-dsl-libs-base
443
  # pydantic
444
  # pydantic-core
445
  # spaces
446
  # starlette
447
  # synchronicity
448
- # tilelang
449
  # torch
450
  # typing-inspection
451
  # uvicorn
@@ -463,5 +396,3 @@ watchfiles==1.2.0
463
  # via modal
464
  yarl==1.24.2
465
  # via aiohttp
466
- z3-solver==4.15.4.0 ; sys_platform == 'linux'
467
- # via tilelang
 
22
  # httpx
23
  # starlette
24
  # watchfiles
 
 
 
 
 
25
  async-timeout==5.0.1 ; python_full_version < '3.11'
26
  # via aiohttp
27
  attrs==26.1.0
28
  # via aiohttp
29
  audioop-lts==0.2.2 ; python_full_version >= '3.13'
30
  # via gradio
 
 
31
  brotli==1.2.0
32
  # via gradio
 
 
33
  cbor2==6.1.2
34
  # via modal
35
  certifi==2026.5.20
 
49
  # modal
50
  # typer
51
  # uvicorn
 
 
52
  colorama==0.4.6 ; sys_platform == 'win32'
53
  # via
54
  # click
 
58
  contourpy==1.3.3 ; python_full_version >= '3.11'
59
  # via matplotlib
60
  cuda-bindings==13.3.1 ; sys_platform == 'linux'
61
+ # via torch
 
 
 
 
62
  cuda-pathfinder==1.5.5 ; sys_platform == 'linux'
63
+ # via cuda-bindings
 
 
 
 
 
64
  cuda-toolkit==13.0.2 ; sys_platform == 'linux'
65
  # via torch
66
  cycler==0.12.1
67
  # via matplotlib
 
 
 
 
68
  exceptiongroup==1.3.1 ; python_full_version < '3.11'
69
  # via anyio
70
  fastapi==0.136.3
 
147
  # scikit-learn
148
  kiwisolver==1.5.0
149
  # via matplotlib
 
 
150
  markdown-it-py==4.2.0
151
  # via rich
152
  markupsafe==3.0.3
 
159
  # via markdown-it-py
160
  mediapipe==0.10.35
161
  # via pozify
 
 
162
  modal==1.5.0
163
  # via pozify
164
  mpmath==1.3.0
 
174
  # via torch
175
  networkx==3.6.1 ; python_full_version >= '3.11'
176
  # via torch
 
 
 
 
177
  numpy==1.26.4
178
  # via
179
  # accelerate
180
  # contourpy
 
181
  # gradio
182
  # matplotlib
183
  # mediapipe
 
 
184
  # opencv-contrib-python
185
  # opencv-python-headless
186
  # pandas
187
  # pozify
188
  # scikit-learn
189
  # scipy
 
190
  # transformers
191
  nvidia-cublas==13.1.0.3 ; sys_platform == 'linux'
192
  # via
 
215
  # nvidia-cusolver
216
  nvidia-cusparselt-cu13==0.8.0 ; sys_platform == 'linux'
217
  # via torch
 
 
 
 
218
  nvidia-nccl-cu13==2.28.9 ; sys_platform == 'linux'
219
  # via torch
220
  nvidia-nvjitlink==13.0.88 ; sys_platform == 'linux'
 
236
  packaging==26.2
237
  # via
238
  # accelerate
 
239
  # gradio
240
  # gradio-client
241
  # huggingface-hub
 
242
  # matplotlib
243
  # spaces
244
  # transformers
 
257
  protobuf==6.33.6
258
  # via modal
259
  psutil==7.2.2
260
+ # via accelerate
 
 
261
  pycparser==3.0 ; implementation_name != 'PyPy'
262
  # via cffi
263
  pydantic==2.12.5
 
290
  # gradio
291
  # huggingface-hub
292
  # transformers
 
 
293
  regex==2026.5.9
294
  # via transformers
295
  requests==2.34.2
 
315
  semantic-version==2.10.0
316
  # via gradio
317
  setuptools==81.0.0
318
+ # via torch
 
 
319
  shellingham==1.5.4
320
  # via typer
321
  six==1.17.0
 
334
  # via modal
335
  threadpoolctl==3.6.0
336
  # via scikit-learn
 
 
337
  tokenizers==0.22.2
338
  # via transformers
339
  toml==0.10.2
 
343
  torch==2.11.0
344
  # via
345
  # accelerate
 
 
346
  # pozify
 
 
 
 
 
 
 
347
  tqdm==4.68.2
348
  # via
349
  # huggingface-hub
 
350
  # transformers
351
  transformers==5.12.0
352
+ # via pozify
 
 
353
  triton==3.6.0 ; sys_platform == 'linux'
354
+ # via torch
 
 
355
  typer==0.25.1
356
  # via
357
  # gradio
 
367
  # aiohttp
368
  # aiosignal
369
  # anyio
 
370
  # exceptiongroup
371
  # fastapi
372
  # gradio
 
374
  # huggingface-hub
375
  # modal
376
  # multidict
 
377
  # pydantic
378
  # pydantic-core
379
  # spaces
380
  # starlette
381
  # synchronicity
 
382
  # torch
383
  # typing-inspection
384
  # uvicorn
 
396
  # via modal
397
  yarl==1.24.2
398
  # via aiohttp
 
 
src/pozify/slm/providers.py CHANGED
@@ -207,13 +207,12 @@ def _load_local_transformers_backend(model: str, token: str | None) -> tuple[Any
207
  "transformers and torch are required for local coach summary inference"
208
  ) from exc
209
 
210
- tokenizer = AutoTokenizer.from_pretrained(model, token=token, trust_remote_code=True)
211
  language_model = AutoModelForCausalLM.from_pretrained(
212
  model,
213
  device_map="auto",
214
  dtype="auto",
215
  token=token,
216
- trust_remote_code=True,
217
  )
218
  language_model.eval()
219
 
 
207
  "transformers and torch are required for local coach summary inference"
208
  ) from exc
209
 
210
+ tokenizer = AutoTokenizer.from_pretrained(model, token=token)
211
  language_model = AutoModelForCausalLM.from_pretrained(
212
  model,
213
  device_map="auto",
214
  dtype="auto",
215
  token=token,
 
216
  )
217
  language_model.eval()
218
 
uv.lock CHANGED
@@ -243,33 +243,6 @@ wheels = [
243
  { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" },
244
  ]
245
 
246
- [[package]]
247
- name = "apache-tvm-ffi"
248
- version = "0.1.9"
249
- source = { registry = "https://pypi.org/simple" }
250
- dependencies = [
251
- { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
252
- ]
253
- sdist = { url = "https://files.pythonhosted.org/packages/6f/60/1e787a0b5ebf318483235be2a689ee367173983067e441b8379564f667c0/apache_tvm_ffi-0.1.9.tar.gz", hash = "sha256:d2d402587e8906de0a07f4746aa78f3d452c7efe3625d4bb39ac2ad693bce530", size = 2513731, upload-time = "2026-02-27T19:28:06.602Z" }
254
- wheels = [
255
- { url = "https://files.pythonhosted.org/packages/83/0a/827e4f9ae85e1be3037818abd59566d906ba1fe27295c6938b12cc482151/apache_tvm_ffi-0.1.9-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1c8dd4018420c0d14bace688594710909ce198056ff8ac2ad1cd462b30fe1bdd", size = 2231204, upload-time = "2026-02-27T19:27:04.734Z" },
256
- { url = "https://files.pythonhosted.org/packages/ae/b6/f1ec5c528918c4dae03885ec472663072a984431d7d7fb04ca0798a2e13c/apache_tvm_ffi-0.1.9-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f6bc8846d570b8ce38692fc91b530b44cd6ae092c805a844da23970e81b12c0", size = 2323684, upload-time = "2026-02-27T19:27:06.284Z" },
257
- { url = "https://files.pythonhosted.org/packages/28/08/818836fbc0f198da1597896f82d7e6556bf5678cd5150d633214bf14b718/apache_tvm_ffi-0.1.9-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:f3ec9149f207a7af3ea3531cad7a0b0d04ded06df4f51a547479d5eb489428dd", size = 2160066, upload-time = "2026-02-27T19:27:07.897Z" },
258
- { url = "https://files.pythonhosted.org/packages/c8/6b/2e7d73d055523c2fb31394cd3d55593969a0680619e1c939c2128c2fdd36/apache_tvm_ffi-0.1.9-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:eefcd17f61bf503ff0f4ad429e03ef6c241c7d13682f58281d883218b854c9bd", size = 2307014, upload-time = "2026-02-27T19:27:10.287Z" },
259
- { url = "https://files.pythonhosted.org/packages/42/b1/9f2cfd6d49b03c5d4ec5c12548d911e2e01265be783f343103b4df716765/apache_tvm_ffi-0.1.9-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c0449fc3802987c3652bea266ffda2934a6f69c80bba791a3f55b91040656a18", size = 2231154, upload-time = "2026-02-27T19:27:15.691Z" },
260
- { url = "https://files.pythonhosted.org/packages/55/43/63faedea83494e99122466a993bcdccd31cf93c7e8a0d56731120e82e2b9/apache_tvm_ffi-0.1.9-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:6f16d73a82a9e68a439b7d233d48b1b929be17fe92df4bbf1ee2274e573144a3", size = 2323130, upload-time = "2026-02-27T19:27:17.259Z" },
261
- { url = "https://files.pythonhosted.org/packages/27/96/d735bc4c528efaf0a8a954076963c727aad2dde8577641aa9025ec4f2d52/apache_tvm_ffi-0.1.9-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:01ebb1308b2666c206aa9a4015eb48f03a5d98ea2e9cfb002bd5e2ca0b9c7ef3", size = 2159854, upload-time = "2026-02-27T19:27:18.789Z" },
262
- { url = "https://files.pythonhosted.org/packages/e4/3b/6cfc82a3ab5d9e501bbcee5df36eebe09da1c384461d7a55e2a17776d117/apache_tvm_ffi-0.1.9-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:21365abd2a2a1a6d3b4e6e4f048309651125becfa795440c3607f3cc27d30ac7", size = 2307140, upload-time = "2026-02-27T19:27:20.222Z" },
263
- { url = "https://files.pythonhosted.org/packages/a7/c0/6d3d54f50012255b41bc3e24944c086f63c4707c8686c7c6780e9283eb96/apache_tvm_ffi-0.1.9-cp312-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d503029e66c43b1a1cb1a42a1e9bb428c8a28dcbdec31c28e705472ca648a3a", size = 2203712, upload-time = "2026-02-27T19:27:25.867Z" },
264
- { url = "https://files.pythonhosted.org/packages/c6/dd/2bab4c6cd86257dbf99e93452a1af833113f8dc3e25a25579f6e4e4c8a94/apache_tvm_ffi-0.1.9-cp312-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28241371934ea8af10d5067087ba1229ebddded7b2c02d33a258ec2a96df8c46", size = 2299704, upload-time = "2026-02-27T19:27:27.477Z" },
265
- { url = "https://files.pythonhosted.org/packages/7a/4a/b469bcb2e1014cb84d336d2a59f42958a058251c577a4c2680cacad346e2/apache_tvm_ffi-0.1.9-cp312-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:87cacce81df55685fc6a76e1e3c5db1200e85e87bf5974b692c59d131b7bc622", size = 2130865, upload-time = "2026-02-27T19:27:29.092Z" },
266
- { url = "https://files.pythonhosted.org/packages/70/ef/5402da5d37f5270fd88ea0348acca78dba9be8bdbf6c2bcae0935eb03ef1/apache_tvm_ffi-0.1.9-cp312-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f45eb43499acac45ff6c93564f0ff2d3ca27b69656d540fd56ce59d51c0b4c65", size = 2278991, upload-time = "2026-02-27T19:27:30.729Z" },
267
- { url = "https://files.pythonhosted.org/packages/b4/a7/1e0643949e683fb3cfababd87058c0cfef122d1a3bb6ce703f719051b842/apache_tvm_ffi-0.1.9-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d1f4d2b7ec7b1213632e9a104e9330bfc3dec48decffa62114c33aa188c9f43a", size = 2215954, upload-time = "2026-02-27T19:27:35.872Z" },
268
- { url = "https://files.pythonhosted.org/packages/d6/06/5016191ab61d2db4c3a7d754a3c1184e0836f575a7d08491669738c5e4b9/apache_tvm_ffi-0.1.9-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e4f01d16ba53fe118e363f7257253f07003797e4abe6fc9567f23b6a930dbff2", size = 2307291, upload-time = "2026-02-27T19:27:37.527Z" },
269
- { url = "https://files.pythonhosted.org/packages/e3/f5/40bf0667330938efbfc0a51743cc53c79e41b4ece1a8abad3076192c9674/apache_tvm_ffi-0.1.9-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3c0581dd6bfbce7b017ef85cfda08bbe38891cc4b3afbcfaa8bc2d383728e426", size = 2143850, upload-time = "2026-02-27T19:27:40.437Z" },
270
- { url = "https://files.pythonhosted.org/packages/72/4a/421cbd4ed32e8bad3b88af3e8fa145c1f6f493bdd05be15b6f2d9b3cb7d6/apache_tvm_ffi-0.1.9-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7dfa14be2a49347791ef21222a8225ce7f99bfec17104a676cb4f1bf3a107088", size = 2289038, upload-time = "2026-02-27T19:27:41.972Z" },
271
- ]
272
-
273
  [[package]]
274
  name = "async-timeout"
275
  version = "5.0.1"
@@ -344,15 +317,6 @@ wheels = [
344
  { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" },
345
  ]
346
 
347
- [[package]]
348
- name = "backports-strenum"
349
- version = "1.3.1"
350
- source = { registry = "https://pypi.org/simple" }
351
- sdist = { url = "https://files.pythonhosted.org/packages/35/c7/2ed54c32fed313591ffb21edbd48db71e68827d43a61938e5a0bc2b6ec91/backports_strenum-1.3.1.tar.gz", hash = "sha256:77c52407342898497714f0596e86188bb7084f89063226f4ba66863482f42414", size = 7257, upload-time = "2023-12-09T14:36:40.937Z" }
352
- wheels = [
353
- { url = "https://files.pythonhosted.org/packages/d6/50/56cf20e2ee5127b603b81d5a69580a1a325083e2b921aa8f067da83927c0/backports_strenum-1.3.1-py3-none-any.whl", hash = "sha256:cdcfe36dc897e2615dc793b7d3097f54d359918fc448754a517e6f23044ccf83", size = 8304, upload-time = "2023-12-09T14:36:39.905Z" },
354
- ]
355
-
356
  [[package]]
357
  name = "brotli"
358
  version = "1.2.0"
@@ -411,17 +375,6 @@ wheels = [
411
  { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" },
412
  ]
413
 
414
- [[package]]
415
- name = "causal-conv1d"
416
- version = "1.6.2.post1"
417
- source = { registry = "https://pypi.org/simple" }
418
- dependencies = [
419
- { name = "ninja", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
420
- { name = "packaging", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
421
- { name = "torch", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
422
- ]
423
- sdist = { url = "https://files.pythonhosted.org/packages/63/5c/2403b8410122d159405c4bd8456340c7251c193358fa24d30cb273fb5048/causal_conv1d-1.6.2.post1.tar.gz", hash = "sha256:245e314ea21064ded7a5bf6b3b842b644aa6f92e45cecfe3e935629744c35ff4", size = 29434, upload-time = "2026-05-09T13:00:51.622Z" }
424
-
425
  [[package]]
426
  name = "cbor2"
427
  version = "6.1.2"
@@ -686,15 +639,6 @@ wheels = [
686
  { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" },
687
  ]
688
 
689
- [[package]]
690
- name = "cloudpickle"
691
- version = "3.1.2"
692
- source = { registry = "https://pypi.org/simple" }
693
- sdist = { url = "https://files.pythonhosted.org/packages/27/fb/576f067976d320f5f0114a8d9fa1215425441bb35627b1993e5afd8111e5/cloudpickle-3.1.2.tar.gz", hash = "sha256:7fda9eb655c9c230dab534f1983763de5835249750e85fbcef43aaa30a9a2414", size = 22330, upload-time = "2025-11-03T09:25:26.604Z" }
694
- wheels = [
695
- { url = "https://files.pythonhosted.org/packages/88/39/799be3f2f0f38cc727ee3b4f1445fe6d5e4133064ec2e4115069418a5bb6/cloudpickle-3.1.2-py3-none-any.whl", hash = "sha256:9acb47f6afd73f60dc1df93bb801b472f05ff42fa6c84167d25cb206be1fbf4a", size = 22228, upload-time = "2025-11-03T09:25:25.534Z" },
696
- ]
697
-
698
  [[package]]
699
  name = "colorama"
700
  version = "0.4.6"
@@ -900,30 +844,6 @@ wheels = [
900
  { url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" },
901
  ]
902
 
903
- [[package]]
904
- name = "cuda-core"
905
- version = "1.0.1"
906
- source = { registry = "https://pypi.org/simple" }
907
- dependencies = [
908
- { name = "backports-strenum", marker = "python_full_version < '3.11' and sys_platform != 'darwin'" },
909
- { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
910
- { name = "numpy", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
911
- ]
912
- wheels = [
913
- { url = "https://files.pythonhosted.org/packages/90/21/ef85f3e15d394c9ca41fe116d78cd9e28533b9d7ead842f9241b332acf01/cuda_core-1.0.1-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d9632db74eceb1cd72a7c95b61a5e4cfb9cc2291de0503e170334d936cab3316", size = 4788165, upload-time = "2026-05-12T20:11:17.116Z" },
914
- { url = "https://files.pythonhosted.org/packages/e0/41/c2c07b313c6cbb5d93010200c62b01ddb9f6c6f43a096a75c7b902c42ad6/cuda_core-1.0.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:46690b0864417a5f2f9a7d10408e2570cbacae195c890a41286701eefb01ba79", size = 5061723, upload-time = "2026-05-12T20:11:19.767Z" },
915
- { url = "https://files.pythonhosted.org/packages/41/4b/4ac1d0639241da756c634add606f93a7f3a39bef12f70e1fb4b40cc53c21/cuda_core-1.0.1-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3effd11283bc46fd06348c2fd18a0941ba7718a6f447343858c944c1a93a6dab", size = 4784340, upload-time = "2026-05-12T20:11:23.961Z" },
916
- { url = "https://files.pythonhosted.org/packages/01/55/bb3e701f4af504e5e39e837135dc80022ec4c84858b2886ad577fe696a77/cuda_core-1.0.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1934517ff8a9dcd21b3f4a28e15e12643164b7d3ec187a4ee7560e22fd2dfc17", size = 5059041, upload-time = "2026-05-12T20:11:26.045Z" },
917
- { url = "https://files.pythonhosted.org/packages/0d/a0/1daeae599cadd612689dbbf70d7da1c01883964fc2fbc7386f3c630a68cf/cuda_core-1.0.1-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6816dc020aee6103d8071bc02d8e4e1d91f2b49596f666896d608d92224d79d1", size = 4789856, upload-time = "2026-05-12T20:11:30.862Z" },
918
- { url = "https://files.pythonhosted.org/packages/a1/4d/603557ab3cb171cc2a61d3678a39cb4dae3fd21275078bfbd1c0b0b5230b/cuda_core-1.0.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:be7b65311bf78964b7905adbf3c0f8f717d432f2854dc45169277729bf60f1e2", size = 5106023, upload-time = "2026-05-12T20:11:33.509Z" },
919
- { url = "https://files.pythonhosted.org/packages/57/f9/a6676b1fa555fad5748a945f4b530b51b898b4771a1e5d9f3520d3f415ea/cuda_core-1.0.1-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c427e5025096d96fcd5092fdc85d5d5e4ac3dea007914e90472ed52f27220446", size = 4749800, upload-time = "2026-05-12T20:11:38.012Z" },
920
- { url = "https://files.pythonhosted.org/packages/9c/9d/4534a9564a812ee95b43db7324f9b25cbffda001bb348bb5b3f90dad50b9/cuda_core-1.0.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b392178202c652368883dbe3773cee14f3e1ed6b8bf45d1a1bcdd37c73604e06", size = 5078597, upload-time = "2026-05-12T20:11:40.836Z" },
921
- { url = "https://files.pythonhosted.org/packages/c2/45/55b07d643c87f1234b3cbc9d8383c0962b368ba1d6686a1919d6f6001af4/cuda_core-1.0.1-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e9b0f115a68f2f84c0f6d9b7e863a29517f6dfe5f7b7d07d1d9da8904754e9a2", size = 4816184, upload-time = "2026-05-12T20:11:46.114Z" },
922
- { url = "https://files.pythonhosted.org/packages/51/08/1aeffc9a529a7f94c9cee9bfd3a991743398b5f90aab30f06f2a4bc8205e/cuda_core-1.0.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:af2db9e50e81d73e4f0b72ad279d0a9c789372393938fe75c17236b9ed974d7d", size = 5104496, upload-time = "2026-05-12T20:11:48.518Z" },
923
- { url = "https://files.pythonhosted.org/packages/e3/ab/db09228d5a8c124a93514726d2e18f31824f66d3a6769ee4e51721dd64cf/cuda_core-1.0.1-cp314-cp314t-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4410bf1ef15c2ec23dccc302da76893c9354b530dee422e3277b116231bf5fe1", size = 4996094, upload-time = "2026-05-12T20:11:53.575Z" },
924
- { url = "https://files.pythonhosted.org/packages/29/e7/8ced56d6c6fa32b7385a8dccefd1424e3c1201bfee3385d9710609a43d16/cuda_core-1.0.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e0f1324486bb90be6bde28bd0afbaf78a38827948d37f93f90318a01da8a3f8c", size = 5212461, upload-time = "2026-05-12T20:11:56.238Z" },
925
- ]
926
-
927
  [[package]]
928
  name = "cuda-pathfinder"
929
  version = "1.5.5"
@@ -932,19 +852,6 @@ wheels = [
932
  { url = "https://files.pythonhosted.org/packages/11/c8/26f2e4aae92f11522a96043892ba39a90eac610d5242523aa863212bc1c7/cuda_pathfinder-1.5.5-py3-none-any.whl", hash = "sha256:0228c023f95d1480f143ef5c8922d27a2ab052087a942e81dc289c9eb8f91689", size = 51671, upload-time = "2026-05-27T01:21:25.413Z" },
933
  ]
934
 
935
- [[package]]
936
- name = "cuda-python"
937
- version = "13.3.1"
938
- source = { registry = "https://pypi.org/simple" }
939
- dependencies = [
940
- { name = "cuda-bindings", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
941
- { name = "cuda-core", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
942
- { name = "cuda-pathfinder", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
943
- ]
944
- wheels = [
945
- { url = "https://files.pythonhosted.org/packages/38/31/7ff3f7768eded7535c621abc2fecb9d181a34ea4cae3afe682feb796f242/cuda_python-13.3.1-py3-none-any.whl", hash = "sha256:280b014139ab447b6dd70a377db1596f310d6e887d9d342e6651b919ec145fb3", size = 8295, upload-time = "2026-05-29T23:28:47.012Z" },
946
- ]
947
-
948
  [[package]]
949
  name = "cuda-toolkit"
950
  version = "13.0.2"
@@ -1032,15 +939,6 @@ wheels = [
1032
  { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" },
1033
  ]
1034
 
1035
- [[package]]
1036
- name = "einops"
1037
- version = "0.8.2"
1038
- source = { registry = "https://pypi.org/simple" }
1039
- sdist = { url = "https://files.pythonhosted.org/packages/2c/77/850bef8d72ffb9219f0b1aac23fbc1bf7d038ee6ea666f331fa273031aa2/einops-0.8.2.tar.gz", hash = "sha256:609da665570e5e265e27283aab09e7f279ade90c4f01bcfca111f3d3e13f2827", size = 56261, upload-time = "2026-01-26T04:13:17.638Z" }
1040
- wheels = [
1041
- { url = "https://files.pythonhosted.org/packages/2a/09/f8d8f8f31e4483c10a906437b4ce31bdf3d6d417b73fe33f1a8b59e34228/einops-0.8.2-py3-none-any.whl", hash = "sha256:54058201ac7087911181bfec4af6091bb59380360f069276601256a76af08193", size = 65638, upload-time = "2026-01-26T04:13:18.546Z" },
1042
- ]
1043
-
1044
  [[package]]
1045
  name = "exceptiongroup"
1046
  version = "1.3.1"
@@ -1644,24 +1542,6 @@ wheels = [
1644
  { url = "https://files.pythonhosted.org/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1", size = 73558, upload-time = "2026-03-09T13:15:52.112Z" },
1645
  ]
1646
 
1647
- [[package]]
1648
- name = "mamba-ssm"
1649
- version = "2.3.2.post1"
1650
- source = { registry = "https://pypi.org/simple" }
1651
- dependencies = [
1652
- { name = "apache-tvm-ffi", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1653
- { name = "einops", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1654
- { name = "ninja", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1655
- { name = "packaging", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1656
- { name = "quack-kernels", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1657
- { name = "setuptools", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1658
- { name = "tilelang", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1659
- { name = "torch", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1660
- { name = "transformers", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1661
- { name = "triton", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1662
- ]
1663
- sdist = { url = "https://files.pythonhosted.org/packages/af/48/aa7bec0efc7453fa0512276c0069c854bf684219050294266534bfef34bb/mamba_ssm-2.3.2.post1.tar.gz", hash = "sha256:104cc47e9101e5401a675fa2b784f2952b9b037f3b1dd83b5ac544394e95d028", size = 216439, upload-time = "2026-05-09T12:47:51.797Z" }
1664
-
1665
  [[package]]
1666
  name = "markdown-it-py"
1667
  version = "4.2.0"
@@ -1862,23 +1742,6 @@ wheels = [
1862
  { url = "https://files.pythonhosted.org/packages/07/b3/5c7fa594c731e8dafab9f1a46ab6cef670fa62dbbfb6248cc70e42ec6fc5/mediapipe-0.10.35-py3-none-win_arm64.whl", hash = "sha256:46255326a6213118aaa518a7aa25e35f93337e82677960cc2a945f117bff8444", size = 9992331, upload-time = "2026-04-27T17:45:36.193Z" },
1863
  ]
1864
 
1865
- [[package]]
1866
- name = "ml-dtypes"
1867
- version = "0.4.1"
1868
- source = { registry = "https://pypi.org/simple" }
1869
- dependencies = [
1870
- { name = "numpy", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
1871
- ]
1872
- sdist = { url = "https://files.pythonhosted.org/packages/fd/15/76f86faa0902836cc133939732f7611ace68cf54148487a99c539c272dc8/ml_dtypes-0.4.1.tar.gz", hash = "sha256:fad5f2de464fd09127e49b7fd1252b9006fb43d2edc1ff112d390c324af5ca7a", size = 692594, upload-time = "2024-09-13T19:07:11.624Z" }
1873
- wheels = [
1874
- { url = "https://files.pythonhosted.org/packages/03/7b/32650e1b2a2713a5923a0af2a8503d0d4a8fc99d1e1e0a1c40e996634460/ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8c09a6d11d8475c2a9fd2bc0695628aec105f97cab3b3a3fb7c9660348ff7d24", size = 2182570, upload-time = "2024-09-13T19:06:46.189Z" },
1875
- { url = "https://files.pythonhosted.org/packages/16/86/a9f7569e7e4f5395f927de38a13b92efa73f809285d04f2923b291783dd2/ml_dtypes-0.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9f5e8f75fa371020dd30f9196e7d73babae2abd51cf59bdd56cb4f8de7e13354", size = 2160365, upload-time = "2024-09-13T19:06:48.198Z" },
1876
- { url = "https://files.pythonhosted.org/packages/7e/99/e68c56fac5de973007a10254b6e17a0362393724f40f66d5e4033f4962c2/ml_dtypes-0.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e138a9b7a48079c900ea969341a5754019a1ad17ae27ee330f7ebf43f23877f9", size = 2185134, upload-time = "2024-09-13T19:06:53.197Z" },
1877
- { url = "https://files.pythonhosted.org/packages/28/bc/6a2344338ea7b61cd7b46fb24ec459360a5a0903b57c55b156c1e46c644a/ml_dtypes-0.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74c6cfb5cf78535b103fde9ea3ded8e9f16f75bc07789054edc7776abfb3d752", size = 2163661, upload-time = "2024-09-13T19:06:54.519Z" },
1878
- { url = "https://files.pythonhosted.org/packages/8f/8c/7b610bd500617854c8cc6ed7c8cfb9d48d6a5c21a1437a36a4b9bc8a3598/ml_dtypes-0.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:772426b08a6172a891274d581ce58ea2789cc8abc1c002a27223f314aaf894e7", size = 2181554, upload-time = "2024-09-13T19:06:59.196Z" },
1879
- { url = "https://files.pythonhosted.org/packages/c7/c6/f89620cecc0581dc1839e218c4315171312e46c62a62da6ace204bda91c0/ml_dtypes-0.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:126e7d679b8676d1a958f2651949fbfa182832c3cd08020d8facd94e4114f3e9", size = 2160488, upload-time = "2024-09-13T19:07:03.131Z" },
1880
- ]
1881
-
1882
  [[package]]
1883
  name = "modal"
1884
  version = "1.5.0"
@@ -2125,28 +1988,6 @@ wheels = [
2125
  { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" },
2126
  ]
2127
 
2128
- [[package]]
2129
- name = "ninja"
2130
- version = "1.13.0"
2131
- source = { registry = "https://pypi.org/simple" }
2132
- sdist = { url = "https://files.pythonhosted.org/packages/43/73/79a0b22fc731989c708068427579e840a6cf4e937fe7ae5c5d0b7356ac22/ninja-1.13.0.tar.gz", hash = "sha256:4a40ce995ded54d9dc24f8ea37ff3bf62ad192b547f6c7126e7e25045e76f978", size = 242558, upload-time = "2025-08-11T15:10:19.421Z" }
2133
- wheels = [
2134
- { url = "https://files.pythonhosted.org/packages/8e/de/6e1cd6b84b412ac1ef327b76f0641aeb5dcc01e9d3f9eee0286d0c34fd93/ninja-1.13.0-py3-none-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3d00c692fb717fd511abeb44b8c5d00340c36938c12d6538ba989fe764e79630", size = 177467, upload-time = "2025-08-11T15:09:52.767Z" },
2135
- { url = "https://files.pythonhosted.org/packages/c8/83/49320fb6e58ae3c079381e333575fdbcf1cca3506ee160a2dcce775046fa/ninja-1.13.0-py3-none-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:be7f478ff9f96a128b599a964fc60a6a87b9fa332ee1bd44fa243ac88d50291c", size = 187834, upload-time = "2025-08-11T15:09:54.115Z" },
2136
- { url = "https://files.pythonhosted.org/packages/56/c7/ba22748fb59f7f896b609cd3e568d28a0a367a6d953c24c461fe04fc4433/ninja-1.13.0-py3-none-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:60056592cf495e9a6a4bea3cd178903056ecb0943e4de45a2ea825edb6dc8d3e", size = 202736, upload-time = "2025-08-11T15:09:55.745Z" },
2137
- { url = "https://files.pythonhosted.org/packages/79/22/d1de07632b78ac8e6b785f41fa9aad7a978ec8c0a1bf15772def36d77aac/ninja-1.13.0-py3-none-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:1c97223cdda0417f414bf864cfb73b72d8777e57ebb279c5f6de368de0062988", size = 179034, upload-time = "2025-08-11T15:09:57.394Z" },
2138
- { url = "https://files.pythonhosted.org/packages/ed/de/0e6edf44d6a04dabd0318a519125ed0415ce437ad5a1ec9b9be03d9048cf/ninja-1.13.0-py3-none-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fb46acf6b93b8dd0322adc3a4945452a4e774b75b91293bafcc7b7f8e6517dfa", size = 180716, upload-time = "2025-08-11T15:09:58.696Z" },
2139
- { url = "https://files.pythonhosted.org/packages/54/28/938b562f9057aaa4d6bfbeaa05e81899a47aebb3ba6751e36c027a7f5ff7/ninja-1.13.0-py3-none-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4be9c1b082d244b1ad7ef41eb8ab088aae8c109a9f3f0b3e56a252d3e00f42c1", size = 146843, upload-time = "2025-08-11T15:10:00.046Z" },
2140
- { url = "https://files.pythonhosted.org/packages/2a/fb/d06a3838de4f8ab866e44ee52a797b5491df823901c54943b2adb0389fbb/ninja-1.13.0-py3-none-manylinux_2_31_riscv64.whl", hash = "sha256:6739d3352073341ad284246f81339a384eec091d9851a886dfa5b00a6d48b3e2", size = 154402, upload-time = "2025-08-11T15:10:01.657Z" },
2141
- { url = "https://files.pythonhosted.org/packages/31/bf/0d7808af695ceddc763cf251b84a9892cd7f51622dc8b4c89d5012779f06/ninja-1.13.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:11be2d22027bde06f14c343f01d31446747dbb51e72d00decca2eb99be911e2f", size = 552388, upload-time = "2025-08-11T15:10:03.349Z" },
2142
- { url = "https://files.pythonhosted.org/packages/9d/70/c99d0c2c809f992752453cce312848abb3b1607e56d4cd1b6cded317351a/ninja-1.13.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:aa45b4037b313c2f698bc13306239b8b93b4680eb47e287773156ac9e9304714", size = 472501, upload-time = "2025-08-11T15:10:04.735Z" },
2143
- { url = "https://files.pythonhosted.org/packages/9f/43/c217b1153f0e499652f5e0766da8523ce3480f0a951039c7af115e224d55/ninja-1.13.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:5f8e1e8a1a30835eeb51db05cf5a67151ad37542f5a4af2a438e9490915e5b72", size = 638280, upload-time = "2025-08-11T15:10:06.512Z" },
2144
- { url = "https://files.pythonhosted.org/packages/8c/45/9151bba2c8d0ae2b6260f71696330590de5850e5574b7b5694dce6023e20/ninja-1.13.0-py3-none-musllinux_1_2_ppc64le.whl", hash = "sha256:3d7d7779d12cb20c6d054c61b702139fd23a7a964ec8f2c823f1ab1b084150db", size = 642420, upload-time = "2025-08-11T15:10:08.35Z" },
2145
- { url = "https://files.pythonhosted.org/packages/3c/fb/95752eb635bb8ad27d101d71bef15bc63049de23f299e312878fc21cb2da/ninja-1.13.0-py3-none-musllinux_1_2_riscv64.whl", hash = "sha256:d741a5e6754e0bda767e3274a0f0deeef4807f1fec6c0d7921a0244018926ae5", size = 585106, upload-time = "2025-08-11T15:10:09.818Z" },
2146
- { url = "https://files.pythonhosted.org/packages/c1/31/aa56a1a286703800c0cbe39fb4e82811c277772dc8cd084f442dd8e2938a/ninja-1.13.0-py3-none-musllinux_1_2_s390x.whl", hash = "sha256:e8bad11f8a00b64137e9b315b137d8bb6cbf3086fbdc43bf1f90fd33324d2e96", size = 707138, upload-time = "2025-08-11T15:10:11.366Z" },
2147
- { url = "https://files.pythonhosted.org/packages/34/6f/5f5a54a1041af945130abdb2b8529cbef0cdcbbf9bcf3f4195378319d29a/ninja-1.13.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b4f2a072db3c0f944c32793e91532d8948d20d9ab83da9c0c7c15b5768072200", size = 581758, upload-time = "2025-08-11T15:10:13.295Z" },
2148
- ]
2149
-
2150
  [[package]]
2151
  name = "numpy"
2152
  version = "1.26.4"
@@ -2292,41 +2133,6 @@ wheels = [
2292
  { url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" },
2293
  ]
2294
 
2295
- [[package]]
2296
- name = "nvidia-cutlass-dsl"
2297
- version = "4.5.2"
2298
- source = { registry = "https://pypi.org/simple" }
2299
- dependencies = [
2300
- { name = "nvidia-cutlass-dsl-libs-base", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
2301
- ]
2302
- wheels = [
2303
- { url = "https://files.pythonhosted.org/packages/f0/15/575d7df4fe2f3406f1cfc68be72aeff2834f8a696daf1cd5bee8017e4507/nvidia_cutlass_dsl-4.5.2-py3-none-any.whl", hash = "sha256:68ed1b63ca74aae87955012da9dfd7fdaae471329d0028b229b841c7192ccf52", size = 10179, upload-time = "2026-05-25T03:38:56.364Z" },
2304
- ]
2305
-
2306
- [[package]]
2307
- name = "nvidia-cutlass-dsl-libs-base"
2308
- version = "4.5.2"
2309
- source = { registry = "https://pypi.org/simple" }
2310
- dependencies = [
2311
- { name = "cuda-python", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
2312
- { name = "numpy", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
2313
- { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
2314
- ]
2315
- wheels = [
2316
- { url = "https://files.pythonhosted.org/packages/fd/3e/2cca8745885aaba0d835a8be29e516e56930791c01f0806da95d3017a495/nvidia_cutlass_dsl_libs_base-4.5.2-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:b62807bc5ea13bbdef648212893fac407ed943f940cece56b880d44af243e075", size = 75635922, upload-time = "2026-05-25T03:46:33.526Z" },
2317
- { url = "https://files.pythonhosted.org/packages/8e/2b/4de80442d33791322aa496e2a7f47ed08a42578bd1c7031ef0602009f8ad/nvidia_cutlass_dsl_libs_base-4.5.2-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:386e832427e3670479049a1560e4d8d2e565d8c0f37a6852c6d7043d046548f1", size = 74512458, upload-time = "2026-05-25T03:49:47.052Z" },
2318
- { url = "https://files.pythonhosted.org/packages/c0/a8/0cca1d11787128c66c0774374d1bb09313352eee11560dd00f36d6d62f36/nvidia_cutlass_dsl_libs_base-4.5.2-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:cbb555a95c7011e4b3ca328be407299c77d289660adbea22ed515d4406e6949c", size = 75637009, upload-time = "2026-05-25T03:48:37.901Z" },
2319
- { url = "https://files.pythonhosted.org/packages/0c/e0/78eded54b4478ec01a91c75f1b9bc6dc73a2ec205c4fa2fdc25a456f4089/nvidia_cutlass_dsl_libs_base-4.5.2-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:9117900cba53d3c21a8dacba6bbf3d6e5f269e427a526c320fb44707a0d57363", size = 74511501, upload-time = "2026-05-25T03:52:03.798Z" },
2320
- { url = "https://files.pythonhosted.org/packages/b1/ef/e827e3c67d72adbf4e8f680bdf03b1b67723d9e1ae7c3d0a1751f39f69ce/nvidia_cutlass_dsl_libs_base-4.5.2-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d2a3c412287e356fbe48fe9f845d6d33cd35dea5e20d7e4f628c20957967cacd", size = 75643473, upload-time = "2026-05-25T03:49:15.857Z" },
2321
- { url = "https://files.pythonhosted.org/packages/97/68/c1247ab848f26c4ab56e562eea0e3f31fc14c9aaf0d883afaa92d8f05592/nvidia_cutlass_dsl_libs_base-4.5.2-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:15ef6a59193667e663934ef4873f8ccad37455e9b7c3c419c3072113b8aedf61", size = 74513226, upload-time = "2026-05-25T03:51:32.496Z" },
2322
- { url = "https://files.pythonhosted.org/packages/b0/f8/b192015e273ff023a35741d6d5e4a93e4819160dee3955fc5d3d53534450/nvidia_cutlass_dsl_libs_base-4.5.2-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:395bd77cf642aeef311313453e6582f11c9357a4b81fe620ea3daccd1fccab9b", size = 75645002, upload-time = "2026-05-25T03:48:01.887Z" },
2323
- { url = "https://files.pythonhosted.org/packages/0a/6e/bfe256ac08e5a6dfb11444809e54c76c3a2f05fff38dd173e2e71b95e4d2/nvidia_cutlass_dsl_libs_base-4.5.2-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:e59da7d89e5e4f8514c6530843f910f9d8734d8042dcaa079c9d9c5063eb3514", size = 74514312, upload-time = "2026-05-25T03:50:56.343Z" },
2324
- { url = "https://files.pythonhosted.org/packages/2e/b2/7a5de500bb74915ab8b3875f4952ae07d562f33d06eef9b2569adf4c09ab/nvidia_cutlass_dsl_libs_base-4.5.2-cp314-cp314-manylinux_2_28_aarch64.whl", hash = "sha256:216eee6aa8107d35569f9451b66b03a3c53167841d1af9b630b966ef8d966e19", size = 75636795, upload-time = "2026-05-25T03:47:31.081Z" },
2325
- { url = "https://files.pythonhosted.org/packages/3e/bc/5f9dd8c05c3e2f435228224f0b0e76e324c1bf0a6dcd3cfb917b5e94bad7/nvidia_cutlass_dsl_libs_base-4.5.2-cp314-cp314-manylinux_2_28_x86_64.whl", hash = "sha256:12c29f7c1f1f82851092ba3869264dafafb035228c0d9827a8db08b884fb80ca", size = 74511193, upload-time = "2026-05-25T03:52:39.444Z" },
2326
- { url = "https://files.pythonhosted.org/packages/61/7c/76a9d1ce5ade3f43ab6f10e361a9c1962d02177deeaf46f2c3684a7ae959/nvidia_cutlass_dsl_libs_base-4.5.2-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:5aca392063ffbc7da30442a267928b22d4a2d37f9ea1db32e4487aa31b0fcc33", size = 75644393, upload-time = "2026-05-25T03:47:02.706Z" },
2327
- { url = "https://files.pythonhosted.org/packages/15/84/08d695d2e0fa95891a2e5abd978f359d50125e4d1f056e54697d465fccc3/nvidia_cutlass_dsl_libs_base-4.5.2-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:abab8a0d2f3f5661533c366df78f973052b86a3b52b868d997a95dce5aa8f17b", size = 74514399, upload-time = "2026-05-25T03:50:20.841Z" },
2328
- ]
2329
-
2330
  [[package]]
2331
  name = "nvidia-nccl-cu13"
2332
  version = "2.28.9"
@@ -2737,12 +2543,10 @@ version = "0.1.0"
2737
  source = { virtual = "." }
2738
  dependencies = [
2739
  { name = "accelerate" },
2740
- { name = "causal-conv1d", marker = "sys_platform == 'linux'" },
2741
  { name = "fastapi" },
2742
  { name = "gradio" },
2743
  { name = "huggingface-hub" },
2744
  { name = "joblib" },
2745
- { name = "mamba-ssm", marker = "sys_platform == 'linux'" },
2746
  { name = "mediapipe" },
2747
  { name = "modal" },
2748
  { name = "numpy" },
@@ -2766,13 +2570,11 @@ train = [
2766
  [package.metadata]
2767
  requires-dist = [
2768
  { name = "accelerate", specifier = ">=0.26.0" },
2769
- { name = "causal-conv1d", marker = "sys_platform == 'linux'", specifier = ">=1.5.0" },
2770
  { name = "datasets", marker = "extra == 'train'", specifier = ">=2.20.0" },
2771
  { name = "fastapi", specifier = ">=0.136.3" },
2772
  { name = "gradio", specifier = ">=4.44.0" },
2773
  { name = "huggingface-hub", specifier = ">=0.24.0" },
2774
  { name = "joblib", specifier = ">=1.4.0" },
2775
- { name = "mamba-ssm", marker = "sys_platform == 'linux'", specifier = ">=2.2.4" },
2776
  { name = "mediapipe", specifier = ">=0.10.35" },
2777
  { name = "modal", specifier = ">=1.5.0" },
2778
  { name = "numpy", specifier = ">=1.26.0" },
@@ -3277,22 +3079,6 @@ wheels = [
3277
  { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
3278
  ]
3279
 
3280
- [[package]]
3281
- name = "quack-kernels"
3282
- version = "0.5.0"
3283
- source = { registry = "https://pypi.org/simple" }
3284
- dependencies = [
3285
- { name = "apache-tvm-ffi", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3286
- { name = "einops", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3287
- { name = "nvidia-cutlass-dsl", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3288
- { name = "torch", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3289
- { name = "torch-c-dlpack-ext", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3290
- ]
3291
- sdist = { url = "https://files.pythonhosted.org/packages/e1/94/ee76e3a3dc74d986b7b24c5928f1d14b01bd5152375688c2ede369f6d19b/quack_kernels-0.5.0.tar.gz", hash = "sha256:c7c7338b67243397b6ca166e648bba161076e99f3858b532e1c877dcc6eaa03d", size = 366426, upload-time = "2026-05-29T05:00:25.985Z" }
3292
- wheels = [
3293
- { url = "https://files.pythonhosted.org/packages/2d/2b/a8f171d5e172880885571bf89e93204aaf231a0e92c4c84714eaf18c271a/quack_kernels-0.5.0-py3-none-any.whl", hash = "sha256:08821ebfb8e638cc20308d5c59410c6dbb3b637ccc7b07bd57c7a9261a06af74", size = 327709, upload-time = "2026-05-29T05:00:24.679Z" },
3294
- ]
3295
-
3296
  [[package]]
3297
  name = "regex"
3298
  version = "2026.5.9"
@@ -3884,28 +3670,6 @@ wheels = [
3884
  { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" },
3885
  ]
3886
 
3887
- [[package]]
3888
- name = "tilelang"
3889
- version = "0.1.8"
3890
- source = { registry = "https://pypi.org/simple" }
3891
- dependencies = [
3892
- { name = "apache-tvm-ffi", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3893
- { name = "cloudpickle", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3894
- { name = "ml-dtypes", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3895
- { name = "numpy", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3896
- { name = "psutil", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3897
- { name = "torch", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3898
- { name = "torch-c-dlpack-ext", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3899
- { name = "tqdm", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3900
- { name = "typing-extensions", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3901
- { name = "z3-solver", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
3902
- ]
3903
- sdist = { url = "https://files.pythonhosted.org/packages/e6/27/6e363f48f878389078e2899756b8fecc326388b585122fd7f8a86590dfab/tilelang-0.1.8.tar.gz", hash = "sha256:da967821698eb7a79a76d27fbe25e314a3273f2b12ba4833e981658139d0e6d9", size = 93247335, upload-time = "2026-02-16T14:03:28.706Z" }
3904
- wheels = [
3905
- { url = "https://files.pythonhosted.org/packages/5d/0b/96ba853aa9e4795020d183e0ca832e9e37d82d4f7f48896241323d1b5ece/tilelang-0.1.8-cp38-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a4018e581f55c852d98a42d3b4acf2dbcfb8b7d8b9156ba7c6b0ab61600a10c", size = 43477401, upload-time = "2026-02-16T14:03:02.879Z" },
3906
- { url = "https://files.pythonhosted.org/packages/e6/db/d130c8db9140bb21a2ef81a455614a4aeec3388088bf9af5df01ad0ba45d/tilelang-0.1.8-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:bcc2e28202cde516bdd59e1c25b7f6a139d1c52207d92576f4e711c6217e16ba", size = 40422585, upload-time = "2026-02-16T14:03:12.092Z" },
3907
- ]
3908
-
3909
  [[package]]
3910
  name = "tokenizers"
3911
  version = "0.22.2"
@@ -4006,27 +3770,6 @@ wheels = [
4006
  { url = "https://files.pythonhosted.org/packages/cf/bf/c8d12a2c86dbfd7f40fb2f56fbf5a505ccf2d9ce131eb559dfc7c51e1a04/torch-2.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b2a43985ff5ef6ddd923bbcf99943e5f58059805787c5c9a2622bf05ca2965b0", size = 114792991, upload-time = "2026-03-23T18:08:19.216Z" },
4007
  ]
4008
 
4009
- [[package]]
4010
- name = "torch-c-dlpack-ext"
4011
- version = "0.1.5"
4012
- source = { registry = "https://pypi.org/simple" }
4013
- dependencies = [
4014
- { name = "torch", marker = "(python_full_version < '3.11' and sys_platform == 'emscripten') or (python_full_version >= '3.14' and sys_platform == 'emscripten') or (python_full_version < '3.11' and sys_platform == 'win32') or (python_full_version >= '3.14' and sys_platform == 'win32') or (sys_platform != 'darwin' and sys_platform != 'emscripten' and sys_platform != 'win32')" },
4015
- ]
4016
- sdist = { url = "https://files.pythonhosted.org/packages/37/de/921b6491efce5c389a5ef9bbed3d2d6660005840dae488124173180859ab/torch_c_dlpack_ext-0.1.5.tar.gz", hash = "sha256:d06f0357d575d22a168cc77acb9020fc4bae30968ceb6718a055dcbe92bacabe", size = 12913, upload-time = "2026-01-12T11:25:08.484Z" }
4017
- wheels = [
4018
- { url = "https://files.pythonhosted.org/packages/ae/28/d2d6bf90e01a1f4da3277c9a56d9ecac648b6d6adaa8e20c17f802deb7fb/torch_c_dlpack_ext-0.1.5-cp310-cp310-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ba3d88f0f7d5e1d9c3d4a3179037fc8e261c3b77ac1fad23edc0d3a9214ef193", size = 432066, upload-time = "2026-01-12T11:24:33.619Z" },
4019
- { url = "https://files.pythonhosted.org/packages/a1/e9/a1f9584a3af4ac6ae5ad5cf86927d8c3a9b6bb50d54e54d19313411216a0/torch_c_dlpack_ext-0.1.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7468df84ec152d930fbc3acf460c44a60b3462b95af3d3a676d133629c7e176", size = 879488, upload-time = "2026-01-12T11:24:34.837Z" },
4020
- { url = "https://files.pythonhosted.org/packages/20/e1/64e1e579d107064785549e70758e38a42376ab7e73d86897ed4beab10e74/torch_c_dlpack_ext-0.1.5-cp311-cp311-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:fba674110e1fab0b176bb5a28223e157db65c90767d4ba74abdbee9f537b0e9d", size = 440949, upload-time = "2026-01-12T11:24:39.716Z" },
4021
- { url = "https://files.pythonhosted.org/packages/64/5c/3e1382a620824f92920ab3fae132d8fb4e85898284c99e0c6a7764e452ce/torch_c_dlpack_ext-0.1.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3448c4f0d64104d0b2e58080a7efa72304a04960c18f338024b80b13cd3eca26", size = 897768, upload-time = "2026-01-12T11:24:41.209Z" },
4022
- { url = "https://files.pythonhosted.org/packages/87/06/8d760997307a5c3be4384424667bf31aae0a42060838c532c7d846516175/torch_c_dlpack_ext-0.1.5-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3562ee411258676f9c38b8ad39306d1c8d027b6a86f6a87c920d2d009a9d1510", size = 443069, upload-time = "2026-01-12T11:24:45.451Z" },
4023
- { url = "https://files.pythonhosted.org/packages/e2/79/a914539b4785f3e44f891aa012a886edb8bc10fe081c440981c57543ce21/torch_c_dlpack_ext-0.1.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e6f9da4bb9af70e27facc777458be62e10dbbbddda7672d16138db0553c5a524", size = 897846, upload-time = "2026-01-12T11:24:48.168Z" },
4024
- { url = "https://files.pythonhosted.org/packages/fd/ec/faf10be09a5812b1c5ec9922b53fb5def5fc4080b81a653b9347bb169ebb/torch_c_dlpack_ext-0.1.5-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:49f1e99d13c64e22dac0a34a1560e9e5a398a49a9fa81df83053e04fde6ec5bd", size = 443798, upload-time = "2026-01-12T11:24:52.754Z" },
4025
- { url = "https://files.pythonhosted.org/packages/2d/68/f434b48700f3e04f33882f54d8d3910327b935f55e14ec49da7d607bf470/torch_c_dlpack_ext-0.1.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:debe62e5ef93e631065d6b9f6e60d3d39bae6b89fa1b25d9523f40b3efbf8aba", size = 755004, upload-time = "2026-01-12T11:24:54.004Z" },
4026
- { url = "https://files.pythonhosted.org/packages/20/62/11c05b99f69aa5152bca0313e0dfa6d125a020cf890dc888ef009aa7891c/torch_c_dlpack_ext-0.1.5-cp314-cp314-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3a58fdf45fb0bda7bc459632cec891570f31c11636d5851c825cf308ec8b73c2", size = 163825, upload-time = "2026-01-12T11:24:59.474Z" },
4027
- { url = "https://files.pythonhosted.org/packages/15/b5/be613cd8e71c9982bd07af530f86c5a7f30df7831d14cec5414857af7149/torch_c_dlpack_ext-0.1.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7b985a324c68241cf83a9474b28015524b66775b12a91930dd4c0760aa628d01", size = 171740, upload-time = "2026-01-12T11:25:00.776Z" },
4028
- ]
4029
-
4030
  [[package]]
4031
  name = "tqdm"
4032
  version = "4.68.2"
@@ -4555,13 +4298,3 @@ wheels = [
4555
  { url = "https://files.pythonhosted.org/packages/65/a4/ba80dccd3593ff1f01051a818694d07b58cb8232677ee9a22a5a1f93a9fc/yarl-1.24.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e434a45ce2e7a947f951fc5a8944c8cc080b7e59f9c50ae80fd39107cf88126d", size = 91219, upload-time = "2026-05-19T21:31:01.934Z" },
4556
  { url = "https://files.pythonhosted.org/packages/fd/4d/4b880086bd0d3e034d25647be1d830afc3e3f610e98c4ab3490af6b1b6d5/yarl-1.24.2-py3-none-any.whl", hash = "sha256:2783d9226db8797636cd6896e4de81feed252d1db72265686c9558d97a4d94b9", size = 53576, upload-time = "2026-05-19T21:31:03.909Z" },
4557
  ]
4558
-
4559
- [[package]]
4560
- name = "z3-solver"
4561
- version = "4.15.4.0"
4562
- source = { registry = "https://pypi.org/simple" }
4563
- sdist = { url = "https://files.pythonhosted.org/packages/8a/8e/0c8f17309549d2e5cde9a3ccefa6365437f1e7bafe71878eaf9478e47b18/z3_solver-4.15.4.0.tar.gz", hash = "sha256:928c29b58c4eb62106da51c1914f6a4a55d0441f8f48a81b9da07950434a8946", size = 5018600, upload-time = "2025-10-29T18:12:03.062Z" }
4564
- wheels = [
4565
- { url = "https://files.pythonhosted.org/packages/21/c9/bb51a96af0091324c81b803f16c49f719f9f6ea0b0bb52200f5c97ec4892/z3_solver-4.15.4.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7e103a6f203f505b8b8b8e5c931cc407c95b61556512d4921c1ddc0b3f41b08e", size = 29268352, upload-time = "2025-10-29T18:11:53.032Z" },
4566
- { url = "https://files.pythonhosted.org/packages/bf/2e/0b49f7e4e53817cfb09a0f6585012b782dfe0b666e8abefcb4fac0570606/z3_solver-4.15.4.0-py3-none-manylinux_2_34_aarch64.whl", hash = "sha256:62c7e9cbdd711932301f29919ad9158de9b2f58b4d281dd259bbcd0a2f408ba1", size = 27226534, upload-time = "2025-10-29T18:11:55.59Z" },
4567
- ]
 
243
  { url = "https://files.pythonhosted.org/packages/da/42/e921fccf5015463e32a3cf6ee7f980a6ed0f395ceeaa45060b61d86486c2/anyio-4.13.0-py3-none-any.whl", hash = "sha256:08b310f9e24a9594186fd75b4f73f4a4152069e3853f1ed8bfbf58369f4ad708", size = 114353, upload-time = "2026-03-24T12:59:08.246Z" },
244
  ]
245
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
246
  [[package]]
247
  name = "async-timeout"
248
  version = "5.0.1"
 
317
  { url = "https://files.pythonhosted.org/packages/f6/22/91616fe707a5c5510de2cac9b046a30defe7007ba8a0c04f9c08f27df312/audioop_lts-0.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:b492c3b040153e68b9fdaff5913305aaaba5bb433d8a7f73d5cf6a64ed3cc1dd", size = 25206, upload-time = "2025-08-05T16:43:16.444Z" },
318
  ]
319
 
 
 
 
 
 
 
 
 
 
320
  [[package]]
321
  name = "brotli"
322
  version = "1.2.0"
 
375
  { url = "https://files.pythonhosted.org/packages/f5/10/56978295c14794b2c12007b07f3e41ba26acda9257457d7085b0bb3bb90c/brotli-1.2.0-cp314-cp314-win_amd64.whl", hash = "sha256:e7c0af964e0b4e3412a0ebf341ea26ec767fa0b4cf81abb5e897c9338b5ad6a3", size = 375639, upload-time = "2025-11-05T18:38:55.67Z" },
376
  ]
377
 
 
 
 
 
 
 
 
 
 
 
 
378
  [[package]]
379
  name = "cbor2"
380
  version = "6.1.2"
 
639
  { url = "https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl", hash = "sha256:482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2", size = 116639, upload-time = "2026-05-22T04:08:35.26Z" },
640
  ]
641
 
 
 
 
 
 
 
 
 
 
642
  [[package]]
643
  name = "colorama"
644
  version = "0.4.6"
 
844
  { url = "https://files.pythonhosted.org/packages/12/20/e79b4bfe98f075195afb6343d41c498f9dbd2d161d7021d4d28bceb83581/cuda_bindings-13.3.1-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:36febb7c1079d68a981dbbd8d5a67235b399802b82075c9388624719607e52b9", size = 6358584, upload-time = "2026-05-29T23:12:12.767Z" },
845
  ]
846
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
847
  [[package]]
848
  name = "cuda-pathfinder"
849
  version = "1.5.5"
 
852
  { url = "https://files.pythonhosted.org/packages/11/c8/26f2e4aae92f11522a96043892ba39a90eac610d5242523aa863212bc1c7/cuda_pathfinder-1.5.5-py3-none-any.whl", hash = "sha256:0228c023f95d1480f143ef5c8922d27a2ab052087a942e81dc289c9eb8f91689", size = 51671, upload-time = "2026-05-27T01:21:25.413Z" },
853
  ]
854
 
 
 
 
 
 
 
 
 
 
 
 
 
 
855
  [[package]]
856
  name = "cuda-toolkit"
857
  version = "13.0.2"
 
939
  { url = "https://files.pythonhosted.org/packages/1e/77/dc8c558f7593132cf8fefec57c4f60c83b16941c574ac5f619abb3ae7933/dill-0.4.1-py3-none-any.whl", hash = "sha256:1e1ce33e978ae97fcfcff5638477032b801c46c7c65cf717f95fbc2248f79a9d", size = 120019, upload-time = "2026-01-19T02:36:55.663Z" },
940
  ]
941
 
 
 
 
 
 
 
 
 
 
942
  [[package]]
943
  name = "exceptiongroup"
944
  version = "1.3.1"
 
1542
  { url = "https://files.pythonhosted.org/packages/0a/dd/8050c947d435c8d4bc94e3252f4d8bb8a76cfb424f043a8680be637a57f1/kiwisolver-1.5.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:59cd8683f575d96df5bb48f6add94afc055012c29e28124fcae2b63661b9efb1", size = 73558, upload-time = "2026-03-09T13:15:52.112Z" },
1543
  ]
1544
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1545
  [[package]]
1546
  name = "markdown-it-py"
1547
  version = "4.2.0"
 
1742
  { url = "https://files.pythonhosted.org/packages/07/b3/5c7fa594c731e8dafab9f1a46ab6cef670fa62dbbfb6248cc70e42ec6fc5/mediapipe-0.10.35-py3-none-win_arm64.whl", hash = "sha256:46255326a6213118aaa518a7aa25e35f93337e82677960cc2a945f117bff8444", size = 9992331, upload-time = "2026-04-27T17:45:36.193Z" },
1743
  ]
1744
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1745
  [[package]]
1746
  name = "modal"
1747
  version = "1.5.0"
 
1988
  { url = "https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl", hash = "sha256:d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762", size = 2068504, upload-time = "2025-12-08T17:02:38.159Z" },
1989
  ]
1990
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1991
  [[package]]
1992
  name = "numpy"
1993
  version = "1.26.4"
 
2133
  { url = "https://files.pythonhosted.org/packages/fd/53/43b0d71f4e702fa9733f8b4571fdca50a8813f1e450b656c239beff12315/nvidia_cusparselt_cu13-0.8.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:25e30a8a7323935d4ad0340b95a0b69926eee755767e8e0b1cf8dd85b197d3fd", size = 169884119, upload-time = "2025-08-13T19:23:41.967Z" },
2134
  ]
2135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2136
  [[package]]
2137
  name = "nvidia-nccl-cu13"
2138
  version = "2.28.9"
 
2543
  source = { virtual = "." }
2544
  dependencies = [
2545
  { name = "accelerate" },
 
2546
  { name = "fastapi" },
2547
  { name = "gradio" },
2548
  { name = "huggingface-hub" },
2549
  { name = "joblib" },
 
2550
  { name = "mediapipe" },
2551
  { name = "modal" },
2552
  { name = "numpy" },
 
2570
  [package.metadata]
2571
  requires-dist = [
2572
  { name = "accelerate", specifier = ">=0.26.0" },
 
2573
  { name = "datasets", marker = "extra == 'train'", specifier = ">=2.20.0" },
2574
  { name = "fastapi", specifier = ">=0.136.3" },
2575
  { name = "gradio", specifier = ">=4.44.0" },
2576
  { name = "huggingface-hub", specifier = ">=0.24.0" },
2577
  { name = "joblib", specifier = ">=1.4.0" },
 
2578
  { name = "mediapipe", specifier = ">=0.10.35" },
2579
  { name = "modal", specifier = ">=1.5.0" },
2580
  { name = "numpy", specifier = ">=1.26.0" },
 
3079
  { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" },
3080
  ]
3081
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3082
  [[package]]
3083
  name = "regex"
3084
  version = "2026.5.9"
 
3670
  { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload-time = "2025-03-13T13:49:21.846Z" },
3671
  ]
3672
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3673
  [[package]]
3674
  name = "tokenizers"
3675
  version = "0.22.2"
 
3770
  { url = "https://files.pythonhosted.org/packages/cf/bf/c8d12a2c86dbfd7f40fb2f56fbf5a505ccf2d9ce131eb559dfc7c51e1a04/torch-2.11.0-cp314-cp314t-win_amd64.whl", hash = "sha256:b2a43985ff5ef6ddd923bbcf99943e5f58059805787c5c9a2622bf05ca2965b0", size = 114792991, upload-time = "2026-03-23T18:08:19.216Z" },
3771
  ]
3772
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3773
  [[package]]
3774
  name = "tqdm"
3775
  version = "4.68.2"
 
4298
  { url = "https://files.pythonhosted.org/packages/65/a4/ba80dccd3593ff1f01051a818694d07b58cb8232677ee9a22a5a1f93a9fc/yarl-1.24.2-cp314-cp314t-win_arm64.whl", hash = "sha256:e434a45ce2e7a947f951fc5a8944c8cc080b7e59f9c50ae80fd39107cf88126d", size = 91219, upload-time = "2026-05-19T21:31:01.934Z" },
4299
  { url = "https://files.pythonhosted.org/packages/fd/4d/4b880086bd0d3e034d25647be1d830afc3e3f610e98c4ab3490af6b1b6d5/yarl-1.24.2-py3-none-any.whl", hash = "sha256:2783d9226db8797636cd6896e4de81feed252d1db72265686c9558d97a4d94b9", size = 53576, upload-time = "2026-05-19T21:31:03.909Z" },
4300
  ]