soup-cli 0.71.31__tar.gz → 0.71.32__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (866) hide show
  1. {soup_cli-0.71.31 → soup_cli-0.71.32}/CHANGELOG.md +30 -0
  2. {soup_cli-0.71.31 → soup_cli-0.71.32}/CONTRIBUTING.md +2 -2
  3. {soup_cli-0.71.31 → soup_cli-0.71.32}/PKG-INFO +25 -21
  4. {soup_cli-0.71.31 → soup_cli-0.71.32}/README.md +24 -20
  5. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/commands.md +1 -0
  6. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/data.md +7 -0
  7. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/models.md +11 -0
  8. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/training.md +42 -0
  9. {soup_cli-0.71.31 → soup_cli-0.71.32}/pyproject.toml +1 -1
  10. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/__init__.py +1 -1
  11. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/infer.py +331 -3
  12. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/train.py +5 -0
  13. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/config/schema.py +81 -0
  14. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/formats.py +28 -3
  15. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/recipes/catalog.py +133 -1
  16. soup_cli-0.71.32/src/soup_cli/trainer/asr.py +445 -0
  17. soup_cli-0.71.32/src/soup_cli/utils/asr_metrics.py +164 -0
  18. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/gpu.py +13 -0
  19. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_recipes.py +3 -2
  20. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07124.py +2 -2
  21. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07130.py +2 -2
  22. soup_cli-0.71.32/tests/test_v07132.py +956 -0
  23. {soup_cli-0.71.31 → soup_cli-0.71.32}/.dockerignore +0 -0
  24. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/FUNDING.yml +0 -0
  25. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  26. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  27. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  28. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/pull_request_template.md +0 -0
  29. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/workflows/ci.yml +0 -0
  30. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/workflows/docker.yml +0 -0
  31. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/workflows/publish.yml +0 -0
  32. {soup_cli-0.71.31 → soup_cli-0.71.32}/.github/workflows/recipe-validation.yml +0 -0
  33. {soup_cli-0.71.31 → soup_cli-0.71.32}/.gitignore +0 -0
  34. {soup_cli-0.71.31 → soup_cli-0.71.32}/.mailmap +0 -0
  35. {soup_cli-0.71.31 → soup_cli-0.71.32}/.pre-commit-config.yaml +0 -0
  36. {soup_cli-0.71.31 → soup_cli-0.71.32}/AGENTS.md +0 -0
  37. {soup_cli-0.71.31 → soup_cli-0.71.32}/CODEOWNERS +0 -0
  38. {soup_cli-0.71.31 → soup_cli-0.71.32}/CODE_OF_CONDUCT.md +0 -0
  39. {soup_cli-0.71.31 → soup_cli-0.71.32}/CONTRIBUTORS.md +0 -0
  40. {soup_cli-0.71.31 → soup_cli-0.71.32}/Dockerfile +0 -0
  41. {soup_cli-0.71.31 → soup_cli-0.71.32}/LICENSE +0 -0
  42. {soup_cli-0.71.31 → soup_cli-0.71.32}/NOTICE +0 -0
  43. {soup_cli-0.71.31 → soup_cli-0.71.32}/SECURITY.md +0 -0
  44. {soup_cli-0.71.31 → soup_cli-0.71.32}/docker-compose.yml +0 -0
  45. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/README.md +0 -0
  46. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/adapters-and-governance.md +0 -0
  47. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/backends-and-ops.md +0 -0
  48. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/evaluation.md +0 -0
  49. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/peft-and-efficiency.md +0 -0
  50. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/performance-and-quantization.md +0 -0
  51. {soup_cli-0.71.31 → soup_cli-0.71.32}/docs/serving-and-export.md +0 -0
  52. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/README.md +0 -0
  53. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/dpo_chat.yaml +0 -0
  54. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/dpo_example.yaml +0 -0
  55. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/grpo_reasoning.yaml +0 -0
  56. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/rlhf_step1_sft.yaml +0 -0
  57. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/rlhf_step2_reward.yaml +0 -0
  58. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  59. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/sft_basic.yaml +0 -0
  60. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/configs/vision_llama.yaml +0 -0
  61. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/data/alpaca_tiny.jsonl +0 -0
  62. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/data/chat_preferences.jsonl +0 -0
  63. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/data/dpo_sample.jsonl +0 -0
  64. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/data/reasoning_math.jsonl +0 -0
  65. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/reward_hacking/rewards.py +0 -0
  66. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/synthetic_workflow.md +0 -0
  67. {soup_cli-0.71.31 → soup_cli-0.71.32}/examples/synthetic_workflow.yaml +0 -0
  68. {soup_cli-0.71.31 → soup_cli-0.71.32}/soup.png +0 -0
  69. {soup_cli-0.71.31 → soup_cli-0.71.32}/soup_logo_svg.svg +0 -0
  70. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/__main__.py +0 -0
  71. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/autopilot/__init__.py +0 -0
  72. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/autopilot/analyzer.py +0 -0
  73. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/autopilot/decisions.py +0 -0
  74. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/autopilot/generate_config.py +0 -0
  75. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/__init__.py +0 -0
  76. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/pack.py +0 -0
  77. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/publish.py +0 -0
  78. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/run.py +0 -0
  79. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/schema.py +0 -0
  80. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/unpack.py +0 -0
  81. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cans/verify.py +0 -0
  82. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cli.py +0 -0
  83. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cloud/__init__.py +0 -0
  84. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/cloud/modal.py +0 -0
  85. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/__init__.py +0 -0
  86. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0550.py +0 -0
  87. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0610.py +0 -0
  88. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v0650.py +0 -0
  89. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/_eval_v07110.py +0 -0
  90. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/_webhook_cli.py +0 -0
  91. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/ab.py +0 -0
  92. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/active_sample.py +0 -0
  93. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/adapters.py +0 -0
  94. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/advise.py +0 -0
  95. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/agent.py +0 -0
  96. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/airgap.py +0 -0
  97. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/apple_adapter.py +0 -0
  98. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/attest.py +0 -0
  99. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/audit_log.py +0 -0
  100. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/autopilot.py +0 -0
  101. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/bench.py +0 -0
  102. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/bom.py +0 -0
  103. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/build.py +0 -0
  104. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/can.py +0 -0
  105. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/chat.py +0 -0
  106. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/compile_cmd.py +0 -0
  107. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/compile_tools.py +0 -0
  108. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/completions.py +0 -0
  109. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/cost.py +0 -0
  110. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/data.py +0 -0
  111. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/data_doctor.py +0 -0
  112. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/data_forge.py +0 -0
  113. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/data_mix.py +0 -0
  114. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/data_score.py +0 -0
  115. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  116. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/deploy.py +0 -0
  117. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/diagnose.py +0 -0
  118. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/diff.py +0 -0
  119. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/distill_prompt.py +0 -0
  120. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/doctor.py +0 -0
  121. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/drift_alarm.py +0 -0
  122. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/edit.py +0 -0
  123. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/env.py +0 -0
  124. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/eval.py +0 -0
  125. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/expect.py +0 -0
  126. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/export.py +0 -0
  127. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/fetch.py +0 -0
  128. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/generate.py +0 -0
  129. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/history.py +0 -0
  130. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/ingest.py +0 -0
  131. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/init.py +0 -0
  132. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/iterative_dpo.py +0 -0
  133. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/license_advisor.py +0 -0
  134. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/llama.py +0 -0
  135. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/local_rl.py +0 -0
  136. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/lock.py +0 -0
  137. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/loop.py +0 -0
  138. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/mcp.py +0 -0
  139. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/merge.py +0 -0
  140. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  141. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/migrate.py +0 -0
  142. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/monitor.py +0 -0
  143. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/plan.py +0 -0
  144. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/plugins.py +0 -0
  145. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/probe.py +0 -0
  146. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/profile.py +0 -0
  147. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/prune_prompt.py +0 -0
  148. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/push.py +0 -0
  149. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/quantize.py +0 -0
  150. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/quickstart.py +0 -0
  151. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/ra_dit.py +0 -0
  152. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/recipes.py +0 -0
  153. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/registry.py +0 -0
  154. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/runs.py +0 -0
  155. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/serve.py +0 -0
  156. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/ship.py +0 -0
  157. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/shrink.py +0 -0
  158. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/spectrum.py +0 -0
  159. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/steer.py +0 -0
  160. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/sweep.py +0 -0
  161. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/tokenizer.py +0 -0
  162. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/tui.py +0 -0
  163. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/tunability.py +0 -0
  164. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/ui.py +0 -0
  165. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/commands/why.py +0 -0
  166. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/config/__init__.py +0 -0
  167. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/config/loader.py +0 -0
  168. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/__init__.py +0 -0
  169. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  170. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  171. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  172. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  173. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  174. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  175. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  176. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  177. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  178. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  179. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  180. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  181. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/augment.py +0 -0
  182. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/chat_templates.py +0 -0
  183. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/collators.py +0 -0
  184. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/loader.py +0 -0
  185. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/loss_mask.py +0 -0
  186. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/providers/__init__.py +0 -0
  187. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/providers/_utils.py +0 -0
  188. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/providers/anthropic.py +0 -0
  189. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/providers/ollama.py +0 -0
  190. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/providers/vllm.py +0 -0
  191. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/sft_format.py +0 -0
  192. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/__init__.py +0 -0
  193. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/code.py +0 -0
  194. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/conversation.py +0 -0
  195. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/preference.py +0 -0
  196. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/qa.py +0 -0
  197. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/reasoning.py +0 -0
  198. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/tool_calling.py +0 -0
  199. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/templates/verifiable.py +0 -0
  200. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/traces/__init__.py +0 -0
  201. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/traces/pair_builder.py +0 -0
  202. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/traces/parsers.py +0 -0
  203. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/traces/quality.py +0 -0
  204. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/data/validator.py +0 -0
  205. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/envs/__init__.py +0 -0
  206. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/envs/_common.py +0 -0
  207. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/envs/calculator.py +0 -0
  208. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/envs/guess_number.py +0 -0
  209. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/envs/retrieval_qa.py +0 -0
  210. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/__init__.py +0 -0
  211. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/arena.py +0 -0
  212. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  213. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/calibrate.py +0 -0
  214. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  215. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/custom.py +0 -0
  216. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/forgetting.py +0 -0
  217. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/gate.py +0 -0
  218. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/human.py +0 -0
  219. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/judge.py +0 -0
  220. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/leaderboard.py +0 -0
  221. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/eval/quant_check.py +0 -0
  222. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/experiment/__init__.py +0 -0
  223. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/experiment/tracker.py +0 -0
  224. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/mcp_server/__init__.py +0 -0
  225. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/mcp_server/registry.py +0 -0
  226. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/mcp_server/server.py +0 -0
  227. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/migrate/__init__.py +0 -0
  228. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/migrate/axolotl.py +0 -0
  229. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/migrate/common.py +0 -0
  230. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/migrate/llamafactory.py +0 -0
  231. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/migrate/unsloth.py +0 -0
  232. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/__init__.py +0 -0
  233. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/callback.py +0 -0
  234. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  235. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/display.py +0 -0
  236. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  237. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/hf_push.py +0 -0
  238. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  239. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/monitoring/trace_logger.py +0 -0
  240. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/plugins/__init__.py +0 -0
  241. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/py.typed +0 -0
  242. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/recipes/__init__.py +0 -0
  243. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/registry/__init__.py +0 -0
  244. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/registry/attach.py +0 -0
  245. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/registry/diff.py +0 -0
  246. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/registry/hashing.py +0 -0
  247. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/registry/store.py +0 -0
  248. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/__init__.py +0 -0
  249. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/audio.yaml +0 -0
  250. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/bco.yaml +0 -0
  251. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/chat.yaml +0 -0
  252. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/code.yaml +0 -0
  253. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/embedding.yaml +0 -0
  254. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  255. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  256. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  257. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/ipo.yaml +0 -0
  258. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/kto.yaml +0 -0
  259. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/longcontext.yaml +0 -0
  260. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/manifest.json +0 -0
  261. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/medical.yaml +0 -0
  262. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/moe.yaml +0 -0
  263. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/orpo.yaml +0 -0
  264. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/pretrain.yaml +0 -0
  265. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/reasoning.yaml +0 -0
  266. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/rlhf.yaml +0 -0
  267. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/simpo.yaml +0 -0
  268. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/tool-calling.yaml +0 -0
  269. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/templates/vision.yaml +0 -0
  270. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/__init__.py +0 -0
  271. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/bco.py +0 -0
  272. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/bitnet.py +0 -0
  273. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/classifier.py +0 -0
  274. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/distill.py +0 -0
  275. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/dpo.py +0 -0
  276. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/embedding.py +0 -0
  277. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/grpo.py +0 -0
  278. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/ipo.py +0 -0
  279. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/kto.py +0 -0
  280. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  281. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  282. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_routing.py +0 -0
  283. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/mlx_sft.py +0 -0
  284. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/mole_routing.py +0 -0
  285. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/online_dpo.py +0 -0
  286. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/orpo.py +0 -0
  287. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/ppo.py +0 -0
  288. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/preference.py +0 -0
  289. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/pretrain.py +0 -0
  290. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/prm.py +0 -0
  291. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/raft.py +0 -0
  292. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/reward_model.py +0 -0
  293. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/rewards.py +0 -0
  294. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/sft.py +0 -0
  295. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/simpo.py +0 -0
  296. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/tts.py +0 -0
  297. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/trainer/unlearn.py +0 -0
  298. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/tui_app.py +0 -0
  299. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/__init__.py +0 -0
  300. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/app.py +0 -0
  301. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/plugins/__init__.py +0 -0
  302. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/static/app.js +0 -0
  303. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/static/index.html +0 -0
  304. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/static/logo.png +0 -0
  305. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/static/logo.svg +0 -0
  306. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/ui/static/style.css +0 -0
  307. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/__init__.py +0 -0
  308. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/_eval_text.py +0 -0
  309. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ab_test.py +0 -0
  310. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/activation_offload.py +0 -0
  311. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/active_sampler.py +0 -0
  312. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_bisect.py +0 -0
  313. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_branch.py +0 -0
  314. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_diff.py +0 -0
  315. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_merge.py +0 -0
  316. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_pr.py +0 -0
  317. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_scan.py +0 -0
  318. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/adapter_sign.py +0 -0
  319. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/advanced_precision.py +0 -0
  320. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/advise.py +0 -0
  321. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/advise_history.py +0 -0
  322. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/agent_forge.py +0 -0
  323. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/agent_rollout.py +0 -0
  324. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/agent_sandbox.py +0 -0
  325. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/airgap_bundle.py +0 -0
  326. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/annex_xi.py +0 -0
  327. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/anthropic_messages.py +0 -0
  328. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/apple_adapter.py +0 -0
  329. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/attest.py +0 -0
  330. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/audit_log.py +0 -0
  331. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/auto_quant.py +0 -0
  332. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/backend_detect.py +0 -0
  333. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/batch_probe.py +0 -0
  334. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/behavior_battery.py +0 -0
  335. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/best_of_n.py +0 -0
  336. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/bitnet.py +0 -0
  337. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/blame.py +0 -0
  338. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/block_expansion.py +0 -0
  339. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/bom.py +0 -0
  340. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/brain_rot.py +0 -0
  341. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  342. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/build_dag.py +0 -0
  343. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/canary_discovery.py +0 -0
  344. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/canary_router.py +0 -0
  345. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/capability_suite.py +0 -0
  346. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/checklist_dsl.py +0 -0
  347. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  348. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/citation_faithful.py +0 -0
  349. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/classifier.py +0 -0
  350. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/cmaes_merge.py +0 -0
  351. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/compile_tools.py +0 -0
  352. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/completions.py +0 -0
  353. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/constants.py +0 -0
  354. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/convergence.py +0 -0
  355. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/crash.py +0 -0
  356. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  357. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/curriculum.py +0 -0
  358. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  359. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/cut_ce.py +0 -0
  360. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_doctor.py +0 -0
  361. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_forge.py +0 -0
  362. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_lint.py +0 -0
  363. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_mix.py +0 -0
  364. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_pipeline.py +0 -0
  365. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/data_score.py +0 -0
  366. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/deepspeed.py +0 -0
  367. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  368. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/demo_bundles.py +0 -0
  369. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  370. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/deploy_measure.py +0 -0
  371. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  372. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/_common.py +0 -0
  373. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/badge.py +0 -0
  374. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/citation.py +0 -0
  375. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  376. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  377. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/format.py +0 -0
  378. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/live.py +0 -0
  379. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  380. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  381. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  382. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/report.py +0 -0
  383. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/diagnose/runner.py +0 -0
  384. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/distill.py +0 -0
  385. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/dpo_variants.py +0 -0
  386. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/drift_alarm.py +0 -0
  387. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  388. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/echo_trap.py +0 -0
  389. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/edit_diff.py +0 -0
  390. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/edit_governor.py +0 -0
  391. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/edit_kernels.py +0 -0
  392. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/encoding.py +0 -0
  393. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/energy.py +0 -0
  394. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/env_lock.py +0 -0
  395. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/errors.py +0 -0
  396. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/eval_design.py +0 -0
  397. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  398. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  399. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/evolve.py +0 -0
  400. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/expectations.py +0 -0
  401. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/fetch_examples.py +0 -0
  402. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/flash_attn.py +0 -0
  403. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/fp8.py +0 -0
  404. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/freeze.py +0 -0
  405. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/fsdp.py +0 -0
  406. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  407. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/galore.py +0 -0
  408. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/gguf_quant.py +0 -0
  409. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/gpu_monitor.py +0 -0
  410. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/grace_codebook.py +0 -0
  411. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/graceful_save.py +0 -0
  412. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/grad_accum.py +0 -0
  413. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  414. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/grpo_long_context.py +0 -0
  415. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/grpo_variants.py +0 -0
  416. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/hardware_fit.py +0 -0
  417. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/harm_probe.py +0 -0
  418. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/hf.py +0 -0
  419. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/hf_space.py +0 -0
  420. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/hubs.py +0 -0
  421. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ingest_sources.py +0 -0
  422. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/integrations.py +0 -0
  423. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/interference.py +0 -0
  424. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/interference_live.py +0 -0
  425. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/irt.py +0 -0
  426. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/iterative_dpo.py +0 -0
  427. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  428. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/kernel_picker.py +0 -0
  429. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/knowledge_edit.py +0 -0
  430. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/kv_cache.py +0 -0
  431. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/launcher.py +0 -0
  432. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/license_advisor.py +0 -0
  433. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/license_matrix.py +0 -0
  434. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/liger.py +0 -0
  435. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/live_eval.py +0 -0
  436. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/llama_proxy.py +0 -0
  437. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/llama_server_timings.py +0 -0
  438. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/local_rl.py +0 -0
  439. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
  440. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loftq_init.py +0 -0
  441. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/log_level.py +0 -0
  442. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/long_context.py +0 -0
  443. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/longlora.py +0 -0
  444. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loop_budget.py +0 -0
  445. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loop_daemon.py +0 -0
  446. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loop_iteration.py +0 -0
  447. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loop_stages.py +0 -0
  448. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/loop_state.py +0 -0
  449. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/lr_finder.py +0 -0
  450. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/lr_groups.py +0 -0
  451. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/magpie.py +0 -0
  452. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/metrics.py +0 -0
  453. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mii.py +0 -0
  454. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/minillm.py +0 -0
  455. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mix_proxy.py +0 -0
  456. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mixed_precision.py +0 -0
  457. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mlx.py +0 -0
  458. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mod.py +0 -0
  459. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/moe.py +0 -0
  460. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/moe_quant.py +0 -0
  461. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/mole_routing.py +0 -0
  462. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/multipack.py +0 -0
  463. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/multipack_sampler.py +0 -0
  464. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/multipack_trainer.py +0 -0
  465. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/namespace_pin.py +0 -0
  466. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/neat_packing.py +0 -0
  467. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ngram_spec.py +0 -0
  468. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/nlg_metrics.py +0 -0
  469. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ollama.py +0 -0
  470. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/onboarding.py +0 -0
  471. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  472. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/paths.py +0 -0
  473. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/peft_builder.py +0 -0
  474. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/peft_patches.py +0 -0
  475. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/peft_wiring.py +0 -0
  476. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/persona_hub.py +0 -0
  477. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/pipeline.py +0 -0
  478. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/preference_combine.py +0 -0
  479. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/prm.py +0 -0
  480. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/prm_reward.py +0 -0
  481. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/probe_kernel.py +0 -0
  482. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/probe_pack.py +0 -0
  483. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/profiler.py +0 -0
  484. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/profiling.py +0 -0
  485. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  486. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/prompt_compile.py +0 -0
  487. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/prompt_distill.py +0 -0
  488. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/prune_prompt.py +0 -0
  489. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/qat.py +0 -0
  490. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/qr_url.py +0 -0
  491. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/quality.py +0 -0
  492. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/quant_menu.py +0 -0
  493. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ra_dit.py +0 -0
  494. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ra_dit_run.py +0 -0
  495. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/raft.py +0 -0
  496. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/reasoning_effort.py +0 -0
  497. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/reasoning_parser.py +0 -0
  498. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/recipe_dag.py +0 -0
  499. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/recipe_run.py +0 -0
  500. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/registry.py +0 -0
  501. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/relora.py +0 -0
  502. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/replay.py +0 -0
  503. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/repro_receipt.py +0 -0
  504. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/reward_hack_control.py +0 -0
  505. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/reward_hacking.py +0 -0
  506. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ring_attention.py +0 -0
  507. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  508. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
  509. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/run_cost.py +0 -0
  510. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/sae_diff.py +0 -0
  511. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/save_formats.py +0 -0
  512. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/server_tools.py +0 -0
  513. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/sglang.py +0 -0
  514. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ship_verdict.py +0 -0
  515. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/shortcuts.py +0 -0
  516. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/shrink.py +0 -0
  517. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/signing.py +0 -0
  518. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/sleeper_probe.py +0 -0
  519. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/soup_lock.py +0 -0
  520. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/spec_pairing.py +0 -0
  521. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/spectrum_scan.py +0 -0
  522. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/spike_recovery.py +0 -0
  523. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/sse_train_stream.py +0 -0
  524. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/steering.py +0 -0
  525. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/strict_safetensors.py +0 -0
  526. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/structured_output.py +0 -0
  527. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/sweep_config.py +0 -0
  528. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tail_latency.py +0 -0
  529. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/terraform_plan.py +0 -0
  530. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tool_outputs.py +0 -0
  531. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/topology.py +0 -0
  532. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tracing.py +0 -0
  533. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/trackers.py +0 -0
  534. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/train_event_buffer.py +0 -0
  535. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/trainer_plugins.py +0 -0
  536. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/trust_remote.py +0 -0
  537. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/truth_probe.py +0 -0
  538. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tts.py +0 -0
  539. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tts_codec.py +0 -0
  540. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/tunability.py +0 -0
  541. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/ui_env.py +0 -0
  542. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/uld.py +0 -0
  543. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/unlearn_kernels.py +0 -0
  544. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/unlearning.py +0 -0
  545. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/unlearning_eval.py +0 -0
  546. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/unsloth.py +0 -0
  547. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/v028_features.py +0 -0
  548. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/vector_bank.py +0 -0
  549. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/vllm.py +0 -0
  550. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/vscode_setup.py +0 -0
  551. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/warmup.py +0 -0
  552. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/webhooks.py +0 -0
  553. {soup_cli-0.71.31 → soup_cli-0.71.32}/src/soup_cli/utils/why.py +0 -0
  554. {soup_cli-0.71.31 → soup_cli-0.71.32}/templates/chat.yaml +0 -0
  555. {soup_cli-0.71.31 → soup_cli-0.71.32}/templates/code.yaml +0 -0
  556. {soup_cli-0.71.31 → soup_cli-0.71.32}/templates/medical.yaml +0 -0
  557. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/__init__.py +0 -0
  558. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/conftest.py +0 -0
  559. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/qa/v053_qa.md +0 -0
  560. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/qa/v07114_qa.md +0 -0
  561. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/qa/v0716_qa.md +0 -0
  562. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_adapters.py +0 -0
  563. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_advanced_peft.py +0 -0
  564. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_assistant_mask.py +0 -0
  565. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_audio.py +0 -0
  566. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_auto_tuning.py +0 -0
  567. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_autopilot.py +0 -0
  568. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_awq_gptq_export.py +0 -0
  569. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_batch_probe.py +0 -0
  570. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_bco.py +0 -0
  571. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_bench.py +0 -0
  572. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_brain_rot_multilingual.py +0 -0
  573. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_bugfixes.py +0 -0
  574. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_build_dag.py +0 -0
  575. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_callback.py +0 -0
  576. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_cans.py +0 -0
  577. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_chat.py +0 -0
  578. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_chat_template.py +0 -0
  579. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_cli.py +0 -0
  580. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_cli_subprocess.py +0 -0
  581. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_code_review_critical.py +0 -0
  582. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_code_review_deferred.py +0 -0
  583. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_code_review_high.py +0 -0
  584. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_code_review_medium_low.py +0 -0
  585. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_code_review_recurring.py +0 -0
  586. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_config.py +0 -0
  587. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_cost.py +0 -0
  588. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_crash_reporter.py +0 -0
  589. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_curriculum.py +0 -0
  590. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_data.py +0 -0
  591. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_data_augment.py +0 -0
  592. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_data_sample.py +0 -0
  593. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_data_split.py +0 -0
  594. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_data_tools.py +0 -0
  595. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_dataset_hub.py +0 -0
  596. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_dataset_registry.py +0 -0
  597. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_deepspeed.py +0 -0
  598. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_deploy_ollama.py +0 -0
  599. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_diff.py +0 -0
  600. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_display.py +0 -0
  601. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_doctor.py +0 -0
  602. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_dpo_example.py +0 -0
  603. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_dpo_variants.py +0 -0
  604. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_embedding.py +0 -0
  605. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_errors.py +0 -0
  606. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_eval.py +0 -0
  607. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_eval_gate.py +0 -0
  608. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_eval_platform.py +0 -0
  609. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_export.py +0 -0
  610. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_formats.py +0 -0
  611. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_fp8_recipe.py +0 -0
  612. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_freeze_training.py +0 -0
  613. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_generate.py +0 -0
  614. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_gpu.py +0 -0
  615. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_grpo.py +0 -0
  616. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_hf_integration.py +0 -0
  617. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_infer.py +0 -0
  618. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_inference_advanced.py +0 -0
  619. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_init.py +0 -0
  620. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ipo.py +0 -0
  621. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_jinja_analyzer.py +0 -0
  622. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_kto.py +0 -0
  623. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_loader.py +0 -0
  624. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_log_level.py +0 -0
  625. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_loss_watchdog.py +0 -0
  626. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_merge.py +0 -0
  627. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_migrate.py +0 -0
  628. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_mlx_backend.py +0 -0
  629. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_moe.py +0 -0
  630. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_multi_adapter.py +0 -0
  631. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_multi_gpu.py +0 -0
  632. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_multipack_config.py +0 -0
  633. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_multipack_invariants.py +0 -0
  634. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_multipack_sampler.py +0 -0
  635. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_neat_packing.py +0 -0
  636. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_neftune_rslora.py +0 -0
  637. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_onnx_tensorrt_export.py +0 -0
  638. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_orpo.py +0 -0
  639. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_packing.py +0 -0
  640. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_a_wave1.py +0 -0
  641. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_a_wave2.py +0 -0
  642. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_b.py +0 -0
  643. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_c.py +0 -0
  644. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_d.py +0 -0
  645. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_e.py +0 -0
  646. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_part_f_hardening.py +0 -0
  647. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_peft_methods.py +0 -0
  648. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_peft_patches.py +0 -0
  649. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_performance.py +0 -0
  650. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_pissa_init.py +0 -0
  651. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ppo.py +0 -0
  652. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_preference_dispatcher.py +0 -0
  653. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_preference_multi.py +0 -0
  654. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_preference_multi_runtime.py +0 -0
  655. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_pretrain.py +0 -0
  656. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_profile.py +0 -0
  657. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_profiling.py +0 -0
  658. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_progress.py +0 -0
  659. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_push.py +0 -0
  660. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_qat.py +0 -0
  661. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_quality_filter.py +0 -0
  662. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_quant_check.py +0 -0
  663. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_quant_menu.py +0 -0
  664. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_quickstart.py +0 -0
  665. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_rank_pattern.py +0 -0
  666. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_recipes_v031.py +0 -0
  667. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_refusal_multilingual.py +0 -0
  668. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_registry.py +0 -0
  669. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_relora.py +0 -0
  670. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_replay.py +0 -0
  671. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_resume.py +0 -0
  672. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_rlvr.py +0 -0
  673. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_run_cost.py +0 -0
  674. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_runs.py +0 -0
  675. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_serve.py +0 -0
  676. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_server_generate.py +0 -0
  677. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_sglang_serve.py +0 -0
  678. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_simpo.py +0 -0
  679. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_smoke_train.py +0 -0
  680. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_speculative_decoding.py +0 -0
  681. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_sweep.py +0 -0
  682. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_synth_data_pro.py +0 -0
  683. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_templates_yaml.py +0 -0
  684. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_tensorboard.py +0 -0
  685. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_tool_calling.py +0 -0
  686. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_trace_to_pref.py +0 -0
  687. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_tracker.py +0 -0
  688. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_trainer_coverage_v035.py +0 -0
  689. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_trainer_init.py +0 -0
  690. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_training_intelligence.py +0 -0
  691. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_training_speed.py +0 -0
  692. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_trust_remote_code.py +0 -0
  693. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_tui.py +0 -0
  694. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ui.py +0 -0
  695. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ui_chat.py +0 -0
  696. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ui_config_builder.py +0 -0
  697. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ui_live_monitor.py +0 -0
  698. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_ui_metrics.py +0 -0
  699. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_unsloth.py +0 -0
  700. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0401_part_c.py +0 -0
  701. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0401_part_d.py +0 -0
  702. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0401_part_e.py +0 -0
  703. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0402_part_a.py +0 -0
  704. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0402_part_b.py +0 -0
  705. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0403_part_a.py +0 -0
  706. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0403_part_b.py +0 -0
  707. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0403_part_c.py +0 -0
  708. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0404_part_a.py +0 -0
  709. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0404_part_b.py +0 -0
  710. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0405_part_a.py +0 -0
  711. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0406_part_a.py +0 -0
  712. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0410_part_a.py +0 -0
  713. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0410_part_b.py +0 -0
  714. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0410_part_c.py +0 -0
  715. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0420.py +0 -0
  716. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0430_part_a.py +0 -0
  717. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0430_part_b.py +0 -0
  718. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0430_part_c.py +0 -0
  719. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0430_part_d.py +0 -0
  720. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0440_part_a.py +0 -0
  721. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0440_part_b.py +0 -0
  722. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0440_part_c.py +0 -0
  723. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0440_part_d.py +0 -0
  724. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0440_review_followups.py +0 -0
  725. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0450.py +0 -0
  726. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0460_part_a.py +0 -0
  727. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0460_part_b.py +0 -0
  728. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0470_part_a.py +0 -0
  729. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0470_part_b.py +0 -0
  730. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0480_part_a.py +0 -0
  731. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0480_part_b.py +0 -0
  732. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0490.py +0 -0
  733. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0500_part_a.py +0 -0
  734. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0500_part_b.py +0 -0
  735. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0500_part_c.py +0 -0
  736. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0500_part_d.py +0 -0
  737. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0500_part_e.py +0 -0
  738. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0510.py +0 -0
  739. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0520.py +0 -0
  740. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0530.py +0 -0
  741. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v05310.py +0 -0
  742. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v05311.py +0 -0
  743. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0531_109.py +0 -0
  744. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0531_139.py +0 -0
  745. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0531_142.py +0 -0
  746. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0531_82.py +0 -0
  747. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0532.py +0 -0
  748. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0533.py +0 -0
  749. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0534.py +0 -0
  750. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0535.py +0 -0
  751. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0536.py +0 -0
  752. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0537.py +0 -0
  753. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0538.py +0 -0
  754. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0539.py +0 -0
  755. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0540.py +0 -0
  756. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0550.py +0 -0
  757. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0550_followups.py +0 -0
  758. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0560.py +0 -0
  759. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0570_part_a.py +0 -0
  760. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0570_part_b.py +0 -0
  761. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0570_part_c.py +0 -0
  762. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0570_part_d.py +0 -0
  763. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0580.py +0 -0
  764. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0590.py +0 -0
  765. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_a.py +0 -0
  766. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_b.py +0 -0
  767. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_c.py +0 -0
  768. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_d.py +0 -0
  769. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_e.py +0 -0
  770. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0600_part_f.py +0 -0
  771. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0610_part_a.py +0 -0
  772. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0610_part_b.py +0 -0
  773. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0610_part_c.py +0 -0
  774. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0610_part_d.py +0 -0
  775. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0610_part_e.py +0 -0
  776. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_followups.py +0 -0
  777. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_part_a.py +0 -0
  778. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_part_b.py +0 -0
  779. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_part_c.py +0 -0
  780. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_part_d.py +0 -0
  781. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0620_part_e.py +0 -0
  782. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_followups.py +0 -0
  783. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_part_a.py +0 -0
  784. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_part_b.py +0 -0
  785. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_part_c.py +0 -0
  786. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_part_d.py +0 -0
  787. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0630_part_e.py +0 -0
  788. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0631_206.py +0 -0
  789. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_followups.py +0 -0
  790. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_a.py +0 -0
  791. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_b.py +0 -0
  792. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_c.py +0 -0
  793. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_d.py +0 -0
  794. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_e.py +0 -0
  795. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0640_part_f.py +0 -0
  796. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_followups.py +0 -0
  797. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_part_a.py +0 -0
  798. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_part_b.py +0 -0
  799. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_part_c.py +0 -0
  800. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_part_d.py +0 -0
  801. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0650_part_e.py +0 -0
  802. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_cli.py +0 -0
  803. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_followups.py +0 -0
  804. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_part_a.py +0 -0
  805. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_part_b.py +0 -0
  806. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_part_c.py +0 -0
  807. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_part_d.py +0 -0
  808. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0660_part_e.py +0 -0
  809. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_followups.py +0 -0
  810. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_a.py +0 -0
  811. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_b.py +0 -0
  812. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_c.py +0 -0
  813. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_d.py +0 -0
  814. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_e.py +0 -0
  815. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0670_part_f.py +0 -0
  816. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_followups.py +0 -0
  817. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_part_a.py +0 -0
  818. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_part_b.py +0 -0
  819. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_part_c.py +0 -0
  820. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_part_d.py +0 -0
  821. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0680_part_e.py +0 -0
  822. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0690_part_a.py +0 -0
  823. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0690_part_b.py +0 -0
  824. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0690_part_c.py +0 -0
  825. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0690_part_d.py +0 -0
  826. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0690_part_e.py +0 -0
  827. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_a.py +0 -0
  828. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_b.py +0 -0
  829. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_c.py +0 -0
  830. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_d.py +0 -0
  831. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_e.py +0 -0
  832. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0700_part_f.py +0 -0
  833. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07110.py +0 -0
  834. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07111.py +0 -0
  835. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07112.py +0 -0
  836. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07113.py +0 -0
  837. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07114.py +0 -0
  838. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07115.py +0 -0
  839. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07116.py +0 -0
  840. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07117.py +0 -0
  841. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07118.py +0 -0
  842. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07119.py +0 -0
  843. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0712.py +0 -0
  844. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07120.py +0 -0
  845. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07121.py +0 -0
  846. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07122.py +0 -0
  847. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07123.py +0 -0
  848. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07125.py +0 -0
  849. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07126.py +0 -0
  850. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07127.py +0 -0
  851. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07128.py +0 -0
  852. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07129.py +0 -0
  853. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0713.py +0 -0
  854. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v07131.py +0 -0
  855. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0714.py +0 -0
  856. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0715.py +0 -0
  857. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0716.py +0 -0
  858. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0717.py +0 -0
  859. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0718.py +0 -0
  860. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_v0719.py +0 -0
  861. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_validator.py +0 -0
  862. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_vision.py +0 -0
  863. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_vllm_serve.py +0 -0
  864. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_warmup.py +0 -0
  865. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_why.py +0 -0
  866. {soup_cli-0.71.31 → soup_cli-0.71.32}/tests/test_windows_encoding.py +0 -0
@@ -12,6 +12,36 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.32] - 2026-07-07
16
+
17
+ ### Added
18
+ - **ASR fine-tuning (`task='asr'`, Whisper)** — fine-tune Whisper on your accent
19
+ or domain, locally. whisper-tiny (39M) / base (74M) train on a 4 GB GPU.
20
+ - New `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`); data rows
21
+ are `{"audio": <path>, "text": <transcript>}` under the new `data.format='asr'`.
22
+ Audio decodes via the hardened `load_audio_mono` (16 kHz mono, soundfile
23
+ pre-probe + `O_NOFOLLOW` + symlink/size guards); transcripts become decoder
24
+ labels (pad → −100, decoder-start token stripped).
25
+ - Optional LoRA on q/v attention projections via `training.asr_lora: true`
26
+ (default full fine-tune); `training.asr_language` / `training.asr_task`
27
+ (`transcribe`|`translate`) set the decoder prefix and are persisted to an
28
+ `asr_generation.json` sidecar so inference restores them.
29
+ - **`soup infer --task asr`** — transcribe an `{"audio": path[, "text": ref]}`
30
+ JSONL; reports per-row and corpus WER/CER when references are present. Loads a
31
+ full model or a PEFT/LoRA adapter dir. Flags: `--asr-language`, `--asr-task`,
32
+ `--audio-dir` (audio paths are cwd/dir-contained; UNC/traversal rejected).
33
+ - New pure-python `utils/asr_metrics.py` — WER / CER / `word_accuracy`
34
+ (= 1 − WER, for a higher-is-better ship metric leg) / `corpus_wer`, with a
35
+ light Whisper-style text normalizer (no new dependency).
36
+ - Recipes: `whisper-tiny-asr`, `whisper-base-asr` (live-trainable),
37
+ `whisper-large-v3-asr` (parse-only, needs a larger GPU), plus
38
+ `smolvlm-256m-sft` (vision). Catalog 138 → 142.
39
+
40
+ ### Fixed
41
+ - `model_size_from_name` now knows Whisper checkpoint sizes (tiny…large), so the
42
+ hardware-fit gate no longer mistakes a 39M whisper-tiny for the 7B default and
43
+ blocks ASR training on consumer GPUs.
44
+
15
45
  ## [0.71.31] - 2026-07-06
16
46
 
17
47
  ### Added
@@ -110,7 +110,7 @@ src/soup_cli/
110
110
  experiment/ - SQLite experiment tracking
111
111
  eval/ - Eval platform (custom tasks, LLM judge, human eval, leaderboard)
112
112
  migrate/ - Config migration (LLaMA-Factory, Axolotl, Unsloth)
113
- recipes/ - Ready-made configs for popular models (138 recipes)
113
+ recipes/ - Ready-made configs for popular models (142 recipes)
114
114
  autopilot/ - Zero-config decision engine (v0.25.0)
115
115
  registry/ - Model Registry (hashing, store, diff, attach) (v0.26.0 + v0.33.0)
116
116
  cans/ - Shareable .can artifact format + run/publish orchestrator (v0.26.0 + v0.33.0)
@@ -120,7 +120,7 @@ src/soup_cli/
120
120
  templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
121
121
  ui/ - Web UI (FastAPI + HTML/JS SPA)
122
122
 
123
- tests/ - Test suite (308 files, 15421 tests)
123
+ tests/ - Test suite (309 files, 15663 tests)
124
124
  examples/ - Real-world config examples and datasets
125
125
  ```
126
126
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soup-cli
3
- Version: 0.71.31
3
+ Version: 0.71.32
4
4
  Summary: Fine-tune and post-train LLMs in one command. No SSH, no config hell.
5
5
  Project-URL: Homepage, https://github.com/MakazhanAlpamys/Soup
6
6
  Project-URL: Repository, https://github.com/MakazhanAlpamys/Soup
@@ -193,29 +193,33 @@ infrastructure instead of improving models. Soup fixes that.
193
193
 
194
194
  ## What's New
195
195
 
196
- **v0.71.31Judge-in-the-loop suite.** Put an LLM judge in the loop across the whole workflow: train against a judge, mine winners from a base model, grow instruction diversity, and decide SHIP with a true pairwise judge win-rate.
197
-
198
- - **`task='online_dpo'`.** Online DPO (wraps TRL `OnlineDPOTrainer`): the model generates two
199
- completions per prompt on-policy each step and a *judge* (a pairwise LLM judge over your local
200
- ollama / OpenAI-compatible endpoint) or a `reward_model` picks the winner. Set
201
- `training.online_dpo_judge: "ollama://llama3.1"` (or `reward_model`, exactly one).
202
- - **`soup data best-of-n`.** Best-of-N rejection sampling: sample N completions from `--base`
203
- locally, a `--judge` scores each, and the winner becomes an SFT row (`--emit-pairs` also writes
204
- winner-vs-loser DPO pairs).
205
- - **`soup data evolve`.** WizardLM Evol-Instruct (depth / breadth) over an ollama / vllm provider —
206
- completing the synthetic-data suite (Magpie / Forge / Persona / evolve).
207
- - **`soup ship --task-mode pairwise` (#284).** A true swap-debiased judge win-rate as the ship
208
- leg-1 task-win, fused with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
209
- - **Proof-of-mechanism, honestly.** Live-validated on SmolLM2-135M: online-DPO trains with a
210
- synthetic judge (`rewards/*` + `objective/kl` logged), best-of-N samples + picks, evolve loops.
211
- Not a production RLHF claim (scale help wanted: #286).
196
+ **v0.71.32ASR fine-tuning (Whisper).** Fine-tune Whisper on your accent or domain, locally. whisper-tiny (39M) and base (74M) train on a 4 GB GPU a new modality that actually runs on a laptop card.
197
+
198
+ - **`task='asr'`.** A new `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`). Data rows
199
+ are `{"audio": <path>, "text": <transcript>}` under `data.format='asr'`; audio decodes to 16 kHz
200
+ mono through the hardened loader (soundfile pre-probe + symlink/size guards). Opt-in LoRA on q/v
201
+ via `training.asr_lora: true` (default full fine-tune); `training.asr_language` / `asr_task`
202
+ (`transcribe`|`translate`) set and persist the decoder prefix for inference.
203
+ - **`soup infer --task asr`.** Transcribe an `{"audio"[, "text"]}` JSONL and get per-row + corpus
204
+ **WER / CER** when references are present. Loads a full model or a LoRA adapter dir; audio paths
205
+ are containment-checked (traversal / UNC rejected).
206
+ - **Pure-python metrics.** New `soup_cli.utils.asr_metrics` (WER / CER / `word_accuracy` /
207
+ `corpus_wer`) no new dependency, reusable as a higher-is-better ship metric leg.
208
+ - **Recipes.** `whisper-tiny-asr` / `whisper-base-asr` (live-trainable), `whisper-large-v3-asr`
209
+ (parse-only). Catalog 138 142.
210
+ - **Proof-of-mechanism, honestly.** Live-validated on an RTX 3050: a memorization task drove
211
+ WER 1.000 0.000 (loss 7.2 0.0005 at 0.4/4 GB). Real accent/domain gains need real audio;
212
+ WER/CER use a light normalizer, not the full Whisper text normalizer.
212
213
 
213
214
  ```yaml
214
- task: online_dpo
215
+ base: openai/whisper-tiny
216
+ task: asr
217
+ data:
218
+ format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
219
+ audio_dir: ./data/audio
215
220
  training:
216
- online_dpo_judge: "ollama://llama3.1" # a pairwise judge (or set reward_model)
217
- online_dpo_loss_type: sigmoid # sigmoid | ipo
218
- online_dpo_max_new_tokens: 64
221
+ asr_language: en
222
+ asr_lora: true # optional; default = full fine-tune
219
223
  ```
220
224
 
221
225
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
@@ -49,29 +49,33 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
52
- **v0.71.31Judge-in-the-loop suite.** Put an LLM judge in the loop across the whole workflow: train against a judge, mine winners from a base model, grow instruction diversity, and decide SHIP with a true pairwise judge win-rate.
53
-
54
- - **`task='online_dpo'`.** Online DPO (wraps TRL `OnlineDPOTrainer`): the model generates two
55
- completions per prompt on-policy each step and a *judge* (a pairwise LLM judge over your local
56
- ollama / OpenAI-compatible endpoint) or a `reward_model` picks the winner. Set
57
- `training.online_dpo_judge: "ollama://llama3.1"` (or `reward_model`, exactly one).
58
- - **`soup data best-of-n`.** Best-of-N rejection sampling: sample N completions from `--base`
59
- locally, a `--judge` scores each, and the winner becomes an SFT row (`--emit-pairs` also writes
60
- winner-vs-loser DPO pairs).
61
- - **`soup data evolve`.** WizardLM Evol-Instruct (depth / breadth) over an ollama / vllm provider —
62
- completing the synthetic-data suite (Magpie / Forge / Persona / evolve).
63
- - **`soup ship --task-mode pairwise` (#284).** A true swap-debiased judge win-rate as the ship
64
- leg-1 task-win, fused with the catastrophic-forgetting guard into one SHIP / DON'T-SHIP verdict.
65
- - **Proof-of-mechanism, honestly.** Live-validated on SmolLM2-135M: online-DPO trains with a
66
- synthetic judge (`rewards/*` + `objective/kl` logged), best-of-N samples + picks, evolve loops.
67
- Not a production RLHF claim (scale help wanted: #286).
52
+ **v0.71.32ASR fine-tuning (Whisper).** Fine-tune Whisper on your accent or domain, locally. whisper-tiny (39M) and base (74M) train on a 4 GB GPU a new modality that actually runs on a laptop card.
53
+
54
+ - **`task='asr'`.** A new `AsrTrainerWrapper` (HF `Seq2SeqTrainer` + `WhisperProcessor`). Data rows
55
+ are `{"audio": <path>, "text": <transcript>}` under `data.format='asr'`; audio decodes to 16 kHz
56
+ mono through the hardened loader (soundfile pre-probe + symlink/size guards). Opt-in LoRA on q/v
57
+ via `training.asr_lora: true` (default full fine-tune); `training.asr_language` / `asr_task`
58
+ (`transcribe`|`translate`) set and persist the decoder prefix for inference.
59
+ - **`soup infer --task asr`.** Transcribe an `{"audio"[, "text"]}` JSONL and get per-row + corpus
60
+ **WER / CER** when references are present. Loads a full model or a LoRA adapter dir; audio paths
61
+ are containment-checked (traversal / UNC rejected).
62
+ - **Pure-python metrics.** New `soup_cli.utils.asr_metrics` (WER / CER / `word_accuracy` /
63
+ `corpus_wer`) no new dependency, reusable as a higher-is-better ship metric leg.
64
+ - **Recipes.** `whisper-tiny-asr` / `whisper-base-asr` (live-trainable), `whisper-large-v3-asr`
65
+ (parse-only). Catalog 138 142.
66
+ - **Proof-of-mechanism, honestly.** Live-validated on an RTX 3050: a memorization task drove
67
+ WER 1.000 0.000 (loss 7.2 0.0005 at 0.4/4 GB). Real accent/domain gains need real audio;
68
+ WER/CER use a light normalizer, not the full Whisper text normalizer.
68
69
 
69
70
  ```yaml
70
- task: online_dpo
71
+ base: openai/whisper-tiny
72
+ task: asr
73
+ data:
74
+ format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
75
+ audio_dir: ./data/audio
71
76
  training:
72
- online_dpo_judge: "ollama://llama3.1" # a pairwise judge (or set reward_model)
73
- online_dpo_loss_type: sigmoid # sigmoid | ipo
74
- online_dpo_max_new_tokens: 64
77
+ asr_language: en
78
+ asr_lora: true # optional; default = full fine-tune
75
79
  ```
76
80
 
77
81
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
@@ -19,6 +19,7 @@ soup train --config soup.yaml --push-as user/repo --hf-resume Resume from lates
19
19
  soup train --config soup.yaml --find-lr LR range finder: write recommended LR JSON
20
20
  soup train --config soup.yaml --cloud modal --gpu a100 Render a Modal.com app for serverless GPU training (plan-only; --cloud-submit submits live)
21
21
  soup infer --model ./output --input p.jsonl Batch inference
22
+ soup infer --task asr --model <whisper|adapter> --input a.jsonl --output o.jsonl [--audio-dir d --asr-language en --asr-task transcribe|translate] Whisper transcription + WER/CER
22
23
  soup chat --model ./output Interactive chat
23
24
  soup push --model ./output --repo user/name Upload to HuggingFace
24
25
  soup push --model ./output --repo user/name --collection user/coll-abc123 Add to HF Collection
@@ -352,6 +352,13 @@ Or use `.txt` files directly (one document per line).
352
352
  {"audio": "recording.wav", "messages": [{"role": "user", "content": "Transcribe."}, {"role": "assistant", "content": "Hello world."}]}
353
353
  ```
354
354
 
355
+ **ASR (Whisper transcription — `data.format: asr`, v0.71.32):**
356
+ ```json
357
+ {"audio": "clip.wav", "text": "hello world"}
358
+ ```
359
+ Audio paths resolve under `data.audio_dir` (containment-checked). Used by
360
+ `task: asr` and `soup infer --task asr`. See [Training → ASR](training.md).
361
+
355
362
  **PRM (process reward, stepwise-supervised):**
356
363
  ```json
357
364
  {"prompt": "Solve 2+2", "completions": ["First, add", "Result is 4"], "labels": [true, true]}
@@ -40,6 +40,17 @@ Soup works with **any** of the **340,000+** text-generation models on [HuggingFa
40
40
  | Qwen2-VL-7B-Instruct | 7B | LLaVA, ShareGPT4V |
41
41
  | Pixtral-12B-2409 | 12B | LLaVA, ShareGPT4V |
42
42
 
43
+ ### ASR Models (`task: asr`, Whisper — v0.71.32)
44
+
45
+ | Recipe | Base | Size | Status |
46
+ |---|---|---|---|
47
+ | `whisper-tiny-asr` | openai/whisper-tiny | 39M | Live on 4 GB |
48
+ | `whisper-base-asr` | openai/whisper-base | 74M | Live on 4 GB |
49
+ | `whisper-large-v3-asr` | openai/whisper-large-v3 | 1.5B | Parse-only (larger GPU) |
50
+
51
+ Rows are `{"audio": <path>, "text": <transcript>}` with `data.format: asr`. See
52
+ [Training → ASR fine-tuning](training.md).
53
+
43
54
  ### Quick Size Guide
44
55
 
45
56
  | VRAM | Max Model (QLoRA 4-bit) | Example |
@@ -561,6 +561,48 @@ training:
561
561
  {"audio": "recording.wav", "messages": [{"role": "user", "content": "Transcribe this audio."}, {"role": "assistant", "content": "Hello world."}]}
562
562
  ```
563
563
 
564
+ ### ASR fine-tuning (`task='asr'`, Whisper) — v0.71.32
565
+
566
+ Fine-tune Whisper on your accent or domain. whisper-tiny (39M) and base (74M)
567
+ train on a 4 GB GPU. Rows are `{"audio": <path>, "text": <transcript>}` under
568
+ `data.format='asr'`; audio decodes to 16 kHz mono through the hardened loader.
569
+
570
+ ```yaml
571
+ base: openai/whisper-tiny
572
+ task: asr
573
+ data:
574
+ train: ./data/train.jsonl
575
+ format: asr # rows: {"audio": "clip.wav", "text": "hello world"}
576
+ audio_dir: ./data/audio # audio paths resolve here (containment-checked)
577
+ training:
578
+ epochs: 3
579
+ lr: 1e-4
580
+ batch_size: 2
581
+ asr_language: en # optional; sets + persists the decoder prefix
582
+ asr_task: transcribe # transcribe | translate
583
+ asr_lora: true # optional LoRA on q/v; default = full fine-tune
584
+ quantization: none
585
+ output: ./out
586
+ ```
587
+
588
+ ```json
589
+ {"audio": "clip0.wav", "text": "hello world"}
590
+ ```
591
+
592
+ Transcribe + score after training:
593
+
594
+ ```bash
595
+ soup infer --task asr --model ./out --input eval.jsonl --output preds.jsonl --audio-dir ./data/audio
596
+ # -> preds carry {"transcription", "wer", "cer"} per row + a corpus WER summary
597
+ ```
598
+
599
+ Notes: `task='asr'` requires `backend='transformers'` and a Whisper base (a
600
+ non-Whisper base is rejected before download). `asr_language`/`asr_task` persist
601
+ to an `asr_generation.json` sidecar so `soup infer --task asr` restores them
602
+ (override with `--asr-language`/`--asr-task`). WER/CER use a light normalizer —
603
+ good for before/after deltas, not leaderboard-comparable absolutes.
604
+ `whisper-large-v3-asr` ships parse-only (needs a larger GPU).
605
+
564
606
 
565
607
  ## GRPO Plus — Objective Variants, Long-Context RL, Multi-Turn Agents
566
608
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soup-cli"
7
- version = "0.71.31"
7
+ version = "0.71.32"
8
8
  description = "Fine-tune and post-train LLMs in one command. No SSH, no config hell."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -1,3 +1,3 @@
1
1
  """Soup CLI — Fine-tune and post-train LLMs in one command."""
2
2
 
3
- __version__ = "0.71.31"
3
+ __version__ = "0.71.32"