soup-cli 0.71.35__tar.gz → 0.71.37__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 (892) hide show
  1. {soup_cli-0.71.35 → soup_cli-0.71.37}/CHANGELOG.md +104 -0
  2. {soup_cli-0.71.35 → soup_cli-0.71.37}/CONTRIBUTING.md +3 -3
  3. {soup_cli-0.71.35 → soup_cli-0.71.37}/CONTRIBUTORS.md +2 -0
  4. {soup_cli-0.71.35 → soup_cli-0.71.37}/PKG-INFO +61 -31
  5. {soup_cli-0.71.35 → soup_cli-0.71.37}/README.md +60 -30
  6. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/backends-and-ops.md +4 -4
  7. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/commands.md +8 -3
  8. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/data.md +125 -3
  9. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/evaluation.md +1 -1
  10. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/models.md +23 -23
  11. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/peft-and-efficiency.md +1 -1
  12. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/performance-and-quantization.md +5 -5
  13. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/serving-and-export.md +35 -6
  14. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/training.md +56 -2
  15. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/README.md +3 -3
  16. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/dpo_example.yaml +2 -2
  17. {soup_cli-0.71.35 → soup_cli-0.71.37}/pyproject.toml +1 -1
  18. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/__init__.py +1 -1
  19. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cli.py +9 -0
  20. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cloud/modal.py +1 -1
  21. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/compile_cmd.py +1 -1
  22. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data.py +109 -16
  23. soup_cli-0.71.37/src/soup_cli/commands/data_canary.py +254 -0
  24. soup_cli-0.71.37/src/soup_cli/commands/data_topics.py +154 -0
  25. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/eval.py +1 -1
  26. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/export.py +4 -4
  27. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/generate.py +1 -1
  28. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/mcp.py +1 -1
  29. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +1 -1
  30. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/serve.py +3 -3
  31. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/train.py +60 -4
  32. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tui.py +1 -1
  33. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ui.py +1 -1
  34. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/schema.py +121 -18
  35. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/loader.py +107 -23
  36. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/gate.py +5 -8
  37. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/judge.py +1 -1
  38. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/registry.py +1 -1
  39. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/audio.yaml +1 -1
  40. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/bco.yaml +1 -1
  41. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/chat.yaml +1 -1
  42. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/code.yaml +1 -1
  43. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/embedding.yaml +1 -1
  44. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/eu-ai-act.yaml +2 -2
  45. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/ipo.yaml +1 -1
  46. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/kto.yaml +1 -1
  47. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/longcontext.yaml +2 -2
  48. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/medical.yaml +1 -1
  49. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/moe.yaml +1 -1
  50. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/orpo.yaml +1 -1
  51. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/pretrain.yaml +1 -1
  52. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/reasoning.yaml +1 -1
  53. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/rlhf.yaml +1 -1
  54. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/simpo.yaml +1 -1
  55. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/tool-calling.yaml +1 -1
  56. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/vision.yaml +1 -1
  57. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_dpo.py +1 -1
  58. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_grpo.py +1 -1
  59. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_sft.py +1 -1
  60. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/online_dpo.py +1 -1
  61. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/sft.py +1 -1
  62. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/apple_adapter.py +1 -1
  63. soup_cli-0.71.37/src/soup_cli/utils/canary.py +349 -0
  64. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/compile_tools.py +2 -2
  65. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_doctor.py +1 -1
  66. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_lint.py +1 -1
  67. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/delinearize_llama4.py +1 -1
  68. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/_common.py +1 -1
  69. soup_cli-0.71.37/src/soup_cli/utils/embed.py +231 -0
  70. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/errors.py +7 -7
  71. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gpu.py +70 -1
  72. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grpo_long_context.py +1 -1
  73. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/liger.py +1 -1
  74. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/live_eval.py +39 -10
  75. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mii.py +1 -1
  76. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prompt_compile.py +1 -1
  77. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prune_prompt.py +1 -1
  78. soup_cli-0.71.37/src/soup_cli/utils/rehearsal.py +122 -0
  79. soup_cli-0.71.37/src/soup_cli/utils/semdedup.py +105 -0
  80. soup_cli-0.71.37/src/soup_cli/utils/topics.py +240 -0
  81. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_a_wave1.py +19 -13
  82. soup_cli-0.71.37/tests/test_v07136.py +3018 -0
  83. soup_cli-0.71.37/tests/test_v07137.py +139 -0
  84. {soup_cli-0.71.35 → soup_cli-0.71.37}/.dockerignore +0 -0
  85. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/FUNDING.yml +0 -0
  86. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  87. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  88. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  89. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/pull_request_template.md +0 -0
  90. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/ci.yml +0 -0
  91. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/docker.yml +0 -0
  92. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/publish.yml +0 -0
  93. {soup_cli-0.71.35 → soup_cli-0.71.37}/.github/workflows/recipe-validation.yml +0 -0
  94. {soup_cli-0.71.35 → soup_cli-0.71.37}/.gitignore +0 -0
  95. {soup_cli-0.71.35 → soup_cli-0.71.37}/.mailmap +0 -0
  96. {soup_cli-0.71.35 → soup_cli-0.71.37}/.pre-commit-config.yaml +0 -0
  97. {soup_cli-0.71.35 → soup_cli-0.71.37}/AGENTS.md +0 -0
  98. {soup_cli-0.71.35 → soup_cli-0.71.37}/CODEOWNERS +0 -0
  99. {soup_cli-0.71.35 → soup_cli-0.71.37}/CODE_OF_CONDUCT.md +0 -0
  100. {soup_cli-0.71.35 → soup_cli-0.71.37}/Dockerfile +0 -0
  101. {soup_cli-0.71.35 → soup_cli-0.71.37}/LICENSE +0 -0
  102. {soup_cli-0.71.35 → soup_cli-0.71.37}/NOTICE +0 -0
  103. {soup_cli-0.71.35 → soup_cli-0.71.37}/SECURITY.md +0 -0
  104. {soup_cli-0.71.35 → soup_cli-0.71.37}/docker-compose.yml +0 -0
  105. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/README.md +0 -0
  106. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/adapters-and-governance.md +0 -0
  107. {soup_cli-0.71.35 → soup_cli-0.71.37}/docs/compliance.md +0 -0
  108. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/dpo_chat.yaml +0 -0
  109. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/grpo_reasoning.yaml +0 -0
  110. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step1_sft.yaml +0 -0
  111. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step2_reward.yaml +0 -0
  112. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  113. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/sft_basic.yaml +0 -0
  114. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/configs/vision_llama.yaml +0 -0
  115. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/alpaca_tiny.jsonl +0 -0
  116. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/chat_preferences.jsonl +0 -0
  117. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/dpo_sample.jsonl +0 -0
  118. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/data/reasoning_math.jsonl +0 -0
  119. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/reward_hacking/rewards.py +0 -0
  120. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/synthetic_workflow.md +0 -0
  121. {soup_cli-0.71.35 → soup_cli-0.71.37}/examples/synthetic_workflow.yaml +0 -0
  122. {soup_cli-0.71.35 → soup_cli-0.71.37}/soup.png +0 -0
  123. {soup_cli-0.71.35 → soup_cli-0.71.37}/soup_logo_svg.svg +0 -0
  124. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/__main__.py +0 -0
  125. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/__init__.py +0 -0
  126. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/analyzer.py +0 -0
  127. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/decisions.py +0 -0
  128. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/autopilot/generate_config.py +0 -0
  129. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/__init__.py +0 -0
  130. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/pack.py +0 -0
  131. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/publish.py +0 -0
  132. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/run.py +0 -0
  133. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/schema.py +0 -0
  134. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/unpack.py +0 -0
  135. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cans/verify.py +0 -0
  136. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/cloud/__init__.py +0 -0
  137. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/__init__.py +0 -0
  138. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0550.py +0 -0
  139. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0610.py +0 -0
  140. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v0650.py +0 -0
  141. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_eval_v07110.py +0 -0
  142. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/_webhook_cli.py +0 -0
  143. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ab.py +0 -0
  144. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/active_sample.py +0 -0
  145. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/adapters.py +0 -0
  146. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/advise.py +0 -0
  147. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/agent.py +0 -0
  148. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/airgap.py +0 -0
  149. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/apple_adapter.py +0 -0
  150. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/attest.py +0 -0
  151. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/audit_log.py +0 -0
  152. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/autopilot.py +0 -0
  153. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/bench.py +0 -0
  154. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/bom.py +0 -0
  155. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/build.py +0 -0
  156. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/can.py +0 -0
  157. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/card.py +0 -0
  158. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/chat.py +0 -0
  159. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ci.py +0 -0
  160. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/compile_tools.py +0 -0
  161. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/completions.py +0 -0
  162. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/cost.py +0 -0
  163. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_doctor.py +0 -0
  164. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_forge.py +0 -0
  165. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_mix.py +0 -0
  166. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/data_score.py +0 -0
  167. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  168. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/deploy.py +0 -0
  169. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/diagnose.py +0 -0
  170. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/diff.py +0 -0
  171. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/distill_prompt.py +0 -0
  172. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/doctor.py +0 -0
  173. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/draft.py +0 -0
  174. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/drift_alarm.py +0 -0
  175. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/edit.py +0 -0
  176. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/env.py +0 -0
  177. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/expect.py +0 -0
  178. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/fetch.py +0 -0
  179. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/history.py +0 -0
  180. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/infer.py +0 -0
  181. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ingest.py +0 -0
  182. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/init.py +0 -0
  183. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/iterative_dpo.py +0 -0
  184. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/license_advisor.py +0 -0
  185. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/llama.py +0 -0
  186. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/local_rl.py +0 -0
  187. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/lock.py +0 -0
  188. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/loop.py +0 -0
  189. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/merge.py +0 -0
  190. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/migrate.py +0 -0
  191. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/monitor.py +0 -0
  192. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/plan.py +0 -0
  193. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/plugins.py +0 -0
  194. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/probe.py +0 -0
  195. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/profile.py +0 -0
  196. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/prune_prompt.py +0 -0
  197. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/push.py +0 -0
  198. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/quantize.py +0 -0
  199. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/quickstart.py +0 -0
  200. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ra_dit.py +0 -0
  201. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/recipes.py +0 -0
  202. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/registry.py +0 -0
  203. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/runs.py +0 -0
  204. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/ship.py +0 -0
  205. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/shrink.py +0 -0
  206. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/spectrum.py +0 -0
  207. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/steer.py +0 -0
  208. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/sweep.py +0 -0
  209. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tokenizer.py +0 -0
  210. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/tunability.py +0 -0
  211. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/commands/why.py +0 -0
  212. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/__init__.py +0 -0
  213. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/config/loader.py +0 -0
  214. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/__init__.py +0 -0
  215. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  216. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  217. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  218. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  219. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  220. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  221. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  222. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  223. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  224. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  225. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  226. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  227. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/augment.py +0 -0
  228. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/chat_templates.py +0 -0
  229. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/collators.py +0 -0
  230. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/formats.py +0 -0
  231. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/loss_mask.py +0 -0
  232. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/__init__.py +0 -0
  233. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/_utils.py +0 -0
  234. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/anthropic.py +0 -0
  235. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/ollama.py +0 -0
  236. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/providers/vllm.py +0 -0
  237. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/sft_format.py +0 -0
  238. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/__init__.py +0 -0
  239. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/code.py +0 -0
  240. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/conversation.py +0 -0
  241. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/preference.py +0 -0
  242. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/qa.py +0 -0
  243. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/reasoning.py +0 -0
  244. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/tool_calling.py +0 -0
  245. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/templates/verifiable.py +0 -0
  246. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/__init__.py +0 -0
  247. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/pair_builder.py +0 -0
  248. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/parsers.py +0 -0
  249. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/traces/quality.py +0 -0
  250. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/data/validator.py +0 -0
  251. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/__init__.py +0 -0
  252. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/_common.py +0 -0
  253. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/calculator.py +0 -0
  254. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/guess_number.py +0 -0
  255. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/envs/retrieval_qa.py +0 -0
  256. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/__init__.py +0 -0
  257. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/arena.py +0 -0
  258. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  259. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/calibrate.py +0 -0
  260. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  261. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/custom.py +0 -0
  262. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/forgetting.py +0 -0
  263. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/human.py +0 -0
  264. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/leaderboard.py +0 -0
  265. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/eval/quant_check.py +0 -0
  266. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/experiment/__init__.py +0 -0
  267. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/experiment/tracker.py +0 -0
  268. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/__init__.py +0 -0
  269. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/mcp_server/server.py +0 -0
  270. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/__init__.py +0 -0
  271. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/axolotl.py +0 -0
  272. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/common.py +0 -0
  273. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/llamafactory.py +0 -0
  274. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/migrate/unsloth.py +0 -0
  275. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/__init__.py +0 -0
  276. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/callback.py +0 -0
  277. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  278. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/display.py +0 -0
  279. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  280. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/hf_push.py +0 -0
  281. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  282. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/monitoring/trace_logger.py +0 -0
  283. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/plugins/__init__.py +0 -0
  284. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/py.typed +0 -0
  285. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/recipes/__init__.py +0 -0
  286. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/recipes/catalog.py +0 -0
  287. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/__init__.py +0 -0
  288. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/attach.py +0 -0
  289. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/diff.py +0 -0
  290. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/hashing.py +0 -0
  291. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/registry/store.py +0 -0
  292. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/__init__.py +0 -0
  293. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  294. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  295. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  296. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/hipaa.yaml +0 -0
  297. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/manifest.json +0 -0
  298. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/soc2.yaml +0 -0
  299. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/templates/sr-11-7.yaml +0 -0
  300. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/__init__.py +0 -0
  301. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/asr.py +0 -0
  302. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/bco.py +0 -0
  303. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/bitnet.py +0 -0
  304. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/classifier.py +0 -0
  305. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/distill.py +0 -0
  306. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/dpo.py +0 -0
  307. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/embedding.py +0 -0
  308. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/grpo.py +0 -0
  309. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/ipo.py +0 -0
  310. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/kto.py +0 -0
  311. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mlx_routing.py +0 -0
  312. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/mole_routing.py +0 -0
  313. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/orpo.py +0 -0
  314. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/ppo.py +0 -0
  315. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/preference.py +0 -0
  316. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/pretrain.py +0 -0
  317. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/prm.py +0 -0
  318. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/raft.py +0 -0
  319. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/reward_model.py +0 -0
  320. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/rewards.py +0 -0
  321. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/simpo.py +0 -0
  322. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/tts.py +0 -0
  323. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/trainer/unlearn.py +0 -0
  324. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/tui_app.py +0 -0
  325. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/__init__.py +0 -0
  326. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/app.py +0 -0
  327. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/plugins/__init__.py +0 -0
  328. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/app.js +0 -0
  329. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/index.html +0 -0
  330. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/logo.png +0 -0
  331. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/logo.svg +0 -0
  332. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/ui/static/style.css +0 -0
  333. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/__init__.py +0 -0
  334. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/_eval_text.py +0 -0
  335. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ab_test.py +0 -0
  336. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/activation_offload.py +0 -0
  337. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/active_sampler.py +0 -0
  338. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
  339. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_bisect.py +0 -0
  340. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_branch.py +0 -0
  341. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_diff.py +0 -0
  342. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_fuse.py +0 -0
  343. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_merge.py +0 -0
  344. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_pr.py +0 -0
  345. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_scan.py +0 -0
  346. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/adapter_sign.py +0 -0
  347. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advanced_precision.py +0 -0
  348. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advise.py +0 -0
  349. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/advise_history.py +0 -0
  350. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_forge.py +0 -0
  351. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_rollout.py +0 -0
  352. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/agent_sandbox.py +0 -0
  353. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/airgap_bundle.py +0 -0
  354. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/annex_xi.py +0 -0
  355. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/anthropic_messages.py +0 -0
  356. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/asr_metrics.py +0 -0
  357. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/attest.py +0 -0
  358. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/audit_log.py +0 -0
  359. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/auto_quant.py +0 -0
  360. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/backend_detect.py +0 -0
  361. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/batch_probe.py +0 -0
  362. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/behavior_battery.py +0 -0
  363. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/best_of_n.py +0 -0
  364. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/bitnet.py +0 -0
  365. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/blame.py +0 -0
  366. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/block_expansion.py +0 -0
  367. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/bom.py +0 -0
  368. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/brain_rot.py +0 -0
  369. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  370. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/build_dag.py +0 -0
  371. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/canary_discovery.py +0 -0
  372. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/canary_router.py +0 -0
  373. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/capability_suite.py +0 -0
  374. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/checklist_dsl.py +0 -0
  375. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  376. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ci_workflow.py +0 -0
  377. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/citation_faithful.py +0 -0
  378. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/classifier.py +0 -0
  379. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cmaes_merge.py +0 -0
  380. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/completions.py +0 -0
  381. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/constants.py +0 -0
  382. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/convergence.py +0 -0
  383. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/crash.py +0 -0
  384. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  385. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/curriculum.py +0 -0
  386. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  387. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/cut_ce.py +0 -0
  388. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_forge.py +0 -0
  389. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_mix.py +0 -0
  390. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_pipeline.py +0 -0
  391. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/data_score.py +0 -0
  392. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deepspeed.py +0 -0
  393. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/demo_bundles.py +0 -0
  394. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  395. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/deploy_measure.py +0 -0
  396. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  397. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/badge.py +0 -0
  398. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/citation.py +0 -0
  399. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  400. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  401. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/format.py +0 -0
  402. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/live.py +0 -0
  403. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  404. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  405. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  406. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/report.py +0 -0
  407. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/diagnose/runner.py +0 -0
  408. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/distill.py +0 -0
  409. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/dpo_variants.py +0 -0
  410. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/draft.py +0 -0
  411. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/drift_alarm.py +0 -0
  412. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  413. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/echo_trap.py +0 -0
  414. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_diff.py +0 -0
  415. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_governor.py +0 -0
  416. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/edit_kernels.py +0 -0
  417. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/encoding.py +0 -0
  418. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/energy.py +0 -0
  419. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/env_lock.py +0 -0
  420. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_design.py +0 -0
  421. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  422. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  423. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/evolve.py +0 -0
  424. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/expectations.py +0 -0
  425. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fetch_examples.py +0 -0
  426. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/flash_attn.py +0 -0
  427. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fp8.py +0 -0
  428. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/freeze.py +0 -0
  429. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fsdp.py +0 -0
  430. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  431. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/galore.py +0 -0
  432. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gguf_quant.py +0 -0
  433. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gpu_monitor.py +0 -0
  434. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grace_codebook.py +0 -0
  435. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/graceful_save.py +0 -0
  436. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grad_accum.py +0 -0
  437. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  438. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/grpo_variants.py +0 -0
  439. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hardware_fit.py +0 -0
  440. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/harm_probe.py +0 -0
  441. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hf.py +0 -0
  442. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hf_space.py +0 -0
  443. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/hubs.py +0 -0
  444. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ingest_sources.py +0 -0
  445. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/integrations.py +0 -0
  446. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/interference.py +0 -0
  447. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/interference_live.py +0 -0
  448. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/irt.py +0 -0
  449. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/iterative_dpo.py +0 -0
  450. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  451. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/kernel_picker.py +0 -0
  452. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/knowledge_edit.py +0 -0
  453. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/kv_cache.py +0 -0
  454. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/launcher.py +0 -0
  455. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/license_advisor.py +0 -0
  456. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/license_matrix.py +0 -0
  457. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lisa.py +0 -0
  458. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/llama_proxy.py +0 -0
  459. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/llama_server_timings.py +0 -0
  460. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/local_rl.py +0 -0
  461. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
  462. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loftq_init.py +0 -0
  463. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/log_level.py +0 -0
  464. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/long_context.py +0 -0
  465. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/longlora.py +0 -0
  466. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_budget.py +0 -0
  467. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_daemon.py +0 -0
  468. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_iteration.py +0 -0
  469. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_stages.py +0 -0
  470. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/loop_state.py +0 -0
  471. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lr_finder.py +0 -0
  472. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/lr_groups.py +0 -0
  473. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/magpie.py +0 -0
  474. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/metrics.py +0 -0
  475. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/minillm.py +0 -0
  476. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mix_proxy.py +0 -0
  477. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mixed_precision.py +0 -0
  478. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mlx.py +0 -0
  479. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mod.py +0 -0
  480. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/moe.py +0 -0
  481. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/moe_quant.py +0 -0
  482. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/mole_routing.py +0 -0
  483. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack.py +0 -0
  484. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack_sampler.py +0 -0
  485. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/multipack_trainer.py +0 -0
  486. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/namespace_pin.py +0 -0
  487. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/neat_packing.py +0 -0
  488. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ngram_spec.py +0 -0
  489. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/nlg_metrics.py +0 -0
  490. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ollama.py +0 -0
  491. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/onboarding.py +0 -0
  492. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  493. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/paths.py +0 -0
  494. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_builder.py +0 -0
  495. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_patches.py +0 -0
  496. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/peft_wiring.py +0 -0
  497. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/persona_hub.py +0 -0
  498. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/pipeline.py +0 -0
  499. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/preference_combine.py +0 -0
  500. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prm.py +0 -0
  501. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prm_reward.py +0 -0
  502. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/probe_kernel.py +0 -0
  503. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/probe_pack.py +0 -0
  504. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiler.py +0 -0
  505. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiling.py +0 -0
  506. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  507. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/prompt_distill.py +0 -0
  508. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/qat.py +0 -0
  509. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/qr_url.py +0 -0
  510. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/quality.py +0 -0
  511. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/quant_menu.py +0 -0
  512. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ra_dit.py +0 -0
  513. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ra_dit_run.py +0 -0
  514. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/raft.py +0 -0
  515. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reasoning_effort.py +0 -0
  516. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reasoning_parser.py +0 -0
  517. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/recipe_dag.py +0 -0
  518. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/recipe_run.py +0 -0
  519. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/registry.py +0 -0
  520. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/relora.py +0 -0
  521. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/replay.py +0 -0
  522. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/repro_receipt.py +0 -0
  523. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reward_hack_control.py +0 -0
  524. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/reward_hacking.py +0 -0
  525. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ring_attention.py +0 -0
  526. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  527. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
  528. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/run_cost.py +0 -0
  529. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sae_diff.py +0 -0
  530. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/save_formats.py +0 -0
  531. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/server_tools.py +0 -0
  532. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sglang.py +0 -0
  533. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ship_verdict.py +0 -0
  534. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/shortcuts.py +0 -0
  535. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/shrink.py +0 -0
  536. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/signing.py +0 -0
  537. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sleeper_probe.py +0 -0
  538. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/soup_lock.py +0 -0
  539. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spec_pairing.py +0 -0
  540. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spectrum_scan.py +0 -0
  541. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/spike_recovery.py +0 -0
  542. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sse_train_stream.py +0 -0
  543. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/steering.py +0 -0
  544. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/strict_safetensors.py +0 -0
  545. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/structured_output.py +0 -0
  546. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/sweep_config.py +0 -0
  547. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tail_latency.py +0 -0
  548. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/terraform_plan.py +0 -0
  549. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tool_outputs.py +0 -0
  550. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/topology.py +0 -0
  551. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tracing.py +0 -0
  552. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trackers.py +0 -0
  553. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/train_event_buffer.py +0 -0
  554. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trainer_plugins.py +0 -0
  555. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/trust_remote.py +0 -0
  556. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/truth_probe.py +0 -0
  557. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tts.py +0 -0
  558. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tts_codec.py +0 -0
  559. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/tunability.py +0 -0
  560. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/ui_env.py +0 -0
  561. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/uld.py +0 -0
  562. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearn_kernels.py +0 -0
  563. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearning.py +0 -0
  564. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unlearning_eval.py +0 -0
  565. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/unsloth.py +0 -0
  566. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/v028_features.py +0 -0
  567. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vector_bank.py +0 -0
  568. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vllm.py +0 -0
  569. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/vscode_setup.py +0 -0
  570. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/warmup.py +0 -0
  571. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/webhooks.py +0 -0
  572. {soup_cli-0.71.35 → soup_cli-0.71.37}/src/soup_cli/utils/why.py +0 -0
  573. {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/chat.yaml +0 -0
  574. {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/code.yaml +0 -0
  575. {soup_cli-0.71.35 → soup_cli-0.71.37}/templates/medical.yaml +0 -0
  576. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/__init__.py +0 -0
  577. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/conftest.py +0 -0
  578. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v053_qa.md +0 -0
  579. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v07114_qa.md +0 -0
  580. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/qa/v0716_qa.md +0 -0
  581. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_adapters.py +0 -0
  582. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_advanced_peft.py +0 -0
  583. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_assistant_mask.py +0 -0
  584. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_audio.py +0 -0
  585. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_auto_tuning.py +0 -0
  586. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_autopilot.py +0 -0
  587. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_awq_gptq_export.py +0 -0
  588. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_batch_probe.py +0 -0
  589. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bco.py +0 -0
  590. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bench.py +0 -0
  591. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_brain_rot_multilingual.py +0 -0
  592. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_bugfixes.py +0 -0
  593. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_build_dag.py +0 -0
  594. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_callback.py +0 -0
  595. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cans.py +0 -0
  596. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_chat.py +0 -0
  597. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_chat_template.py +0 -0
  598. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cli.py +0 -0
  599. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cli_subprocess.py +0 -0
  600. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_critical.py +0 -0
  601. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_deferred.py +0 -0
  602. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_high.py +0 -0
  603. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_medium_low.py +0 -0
  604. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_code_review_recurring.py +0 -0
  605. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_config.py +0 -0
  606. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_cost.py +0 -0
  607. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_crash_reporter.py +0 -0
  608. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_curriculum.py +0 -0
  609. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data.py +0 -0
  610. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_augment.py +0 -0
  611. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_sample.py +0 -0
  612. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_split.py +0 -0
  613. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_data_tools.py +0 -0
  614. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dataset_hub.py +0 -0
  615. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dataset_registry.py +0 -0
  616. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_deepspeed.py +0 -0
  617. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_deploy_ollama.py +0 -0
  618. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_diff.py +0 -0
  619. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_display.py +0 -0
  620. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_doctor.py +0 -0
  621. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dpo_example.py +0 -0
  622. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_dpo_variants.py +0 -0
  623. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_embedding.py +0 -0
  624. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_errors.py +0 -0
  625. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval.py +0 -0
  626. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval_gate.py +0 -0
  627. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_eval_platform.py +0 -0
  628. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_export.py +0 -0
  629. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_formats.py +0 -0
  630. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_fp8_recipe.py +0 -0
  631. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_freeze_training.py +0 -0
  632. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_generate.py +0 -0
  633. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_gpu.py +0 -0
  634. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_grpo.py +0 -0
  635. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_hf_integration.py +0 -0
  636. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_infer.py +0 -0
  637. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_inference_advanced.py +0 -0
  638. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_init.py +0 -0
  639. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ipo.py +0 -0
  640. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_jinja_analyzer.py +0 -0
  641. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_kto.py +0 -0
  642. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_loader.py +0 -0
  643. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_log_level.py +0 -0
  644. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_loss_watchdog.py +0 -0
  645. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_merge.py +0 -0
  646. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_migrate.py +0 -0
  647. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_mlx_backend.py +0 -0
  648. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_moe.py +0 -0
  649. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multi_adapter.py +0 -0
  650. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multi_gpu.py +0 -0
  651. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_config.py +0 -0
  652. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_invariants.py +0 -0
  653. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_multipack_sampler.py +0 -0
  654. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_neat_packing.py +0 -0
  655. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_neftune_rslora.py +0 -0
  656. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_onnx_tensorrt_export.py +0 -0
  657. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_orpo.py +0 -0
  658. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_packing.py +0 -0
  659. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_a_wave2.py +0 -0
  660. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_b.py +0 -0
  661. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_c.py +0 -0
  662. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_d.py +0 -0
  663. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_e.py +0 -0
  664. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_part_f_hardening.py +0 -0
  665. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_peft_methods.py +0 -0
  666. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_peft_patches.py +0 -0
  667. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_performance.py +0 -0
  668. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_pissa_init.py +0 -0
  669. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ppo.py +0 -0
  670. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_dispatcher.py +0 -0
  671. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_multi.py +0 -0
  672. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_preference_multi_runtime.py +0 -0
  673. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_pretrain.py +0 -0
  674. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_profile.py +0 -0
  675. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_profiling.py +0 -0
  676. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_progress.py +0 -0
  677. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_push.py +0 -0
  678. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_qat.py +0 -0
  679. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quality_filter.py +0 -0
  680. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quant_check.py +0 -0
  681. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quant_menu.py +0 -0
  682. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_quickstart.py +0 -0
  683. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_rank_pattern.py +0 -0
  684. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_recipes.py +0 -0
  685. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_recipes_v031.py +0 -0
  686. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_refusal_multilingual.py +0 -0
  687. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_registry.py +0 -0
  688. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_relora.py +0 -0
  689. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_replay.py +0 -0
  690. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_resume.py +0 -0
  691. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_review_fixes_v07133.py +0 -0
  692. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_rlvr.py +0 -0
  693. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_run_cost.py +0 -0
  694. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_runs.py +0 -0
  695. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_serve.py +0 -0
  696. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_server_generate.py +0 -0
  697. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_sglang_serve.py +0 -0
  698. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_simpo.py +0 -0
  699. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_smoke_train.py +0 -0
  700. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_speculative_decoding.py +0 -0
  701. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_sweep.py +0 -0
  702. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_synth_data_pro.py +0 -0
  703. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_templates_yaml.py +0 -0
  704. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tensorboard.py +0 -0
  705. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tool_calling.py +0 -0
  706. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trace_to_pref.py +0 -0
  707. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tracker.py +0 -0
  708. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trainer_coverage_v035.py +0 -0
  709. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trainer_init.py +0 -0
  710. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_training_intelligence.py +0 -0
  711. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_training_speed.py +0 -0
  712. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_trust_remote_code.py +0 -0
  713. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_tui.py +0 -0
  714. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui.py +0 -0
  715. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_chat.py +0 -0
  716. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_config_builder.py +0 -0
  717. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_live_monitor.py +0 -0
  718. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_ui_metrics.py +0 -0
  719. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_unsloth.py +0 -0
  720. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_c.py +0 -0
  721. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_d.py +0 -0
  722. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0401_part_e.py +0 -0
  723. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0402_part_a.py +0 -0
  724. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0402_part_b.py +0 -0
  725. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_a.py +0 -0
  726. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_b.py +0 -0
  727. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0403_part_c.py +0 -0
  728. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0404_part_a.py +0 -0
  729. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0404_part_b.py +0 -0
  730. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0405_part_a.py +0 -0
  731. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0406_part_a.py +0 -0
  732. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_a.py +0 -0
  733. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_b.py +0 -0
  734. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0410_part_c.py +0 -0
  735. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0420.py +0 -0
  736. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_a.py +0 -0
  737. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_b.py +0 -0
  738. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_c.py +0 -0
  739. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0430_part_d.py +0 -0
  740. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_a.py +0 -0
  741. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_b.py +0 -0
  742. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_c.py +0 -0
  743. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_part_d.py +0 -0
  744. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0440_review_followups.py +0 -0
  745. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0450.py +0 -0
  746. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0460_part_a.py +0 -0
  747. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0460_part_b.py +0 -0
  748. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0470_part_a.py +0 -0
  749. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0470_part_b.py +0 -0
  750. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0480_part_a.py +0 -0
  751. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0480_part_b.py +0 -0
  752. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0490.py +0 -0
  753. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_a.py +0 -0
  754. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_b.py +0 -0
  755. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_c.py +0 -0
  756. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_d.py +0 -0
  757. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0500_part_e.py +0 -0
  758. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0510.py +0 -0
  759. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0520.py +0 -0
  760. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0530.py +0 -0
  761. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v05310.py +0 -0
  762. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v05311.py +0 -0
  763. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_109.py +0 -0
  764. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_139.py +0 -0
  765. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_142.py +0 -0
  766. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0531_82.py +0 -0
  767. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0532.py +0 -0
  768. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0533.py +0 -0
  769. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0534.py +0 -0
  770. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0535.py +0 -0
  771. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0536.py +0 -0
  772. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0537.py +0 -0
  773. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0538.py +0 -0
  774. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0539.py +0 -0
  775. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0540.py +0 -0
  776. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0550.py +0 -0
  777. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0550_followups.py +0 -0
  778. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0560.py +0 -0
  779. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_a.py +0 -0
  780. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_b.py +0 -0
  781. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_c.py +0 -0
  782. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0570_part_d.py +0 -0
  783. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0580.py +0 -0
  784. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0590.py +0 -0
  785. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_a.py +0 -0
  786. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_b.py +0 -0
  787. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_c.py +0 -0
  788. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_d.py +0 -0
  789. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_e.py +0 -0
  790. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0600_part_f.py +0 -0
  791. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_a.py +0 -0
  792. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_b.py +0 -0
  793. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_c.py +0 -0
  794. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_d.py +0 -0
  795. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0610_part_e.py +0 -0
  796. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_followups.py +0 -0
  797. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_a.py +0 -0
  798. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_b.py +0 -0
  799. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_c.py +0 -0
  800. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_d.py +0 -0
  801. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0620_part_e.py +0 -0
  802. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_followups.py +0 -0
  803. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_a.py +0 -0
  804. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_b.py +0 -0
  805. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_c.py +0 -0
  806. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_d.py +0 -0
  807. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0630_part_e.py +0 -0
  808. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0631_206.py +0 -0
  809. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_followups.py +0 -0
  810. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_a.py +0 -0
  811. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_b.py +0 -0
  812. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_c.py +0 -0
  813. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_d.py +0 -0
  814. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_e.py +0 -0
  815. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0640_part_f.py +0 -0
  816. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_followups.py +0 -0
  817. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_a.py +0 -0
  818. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_b.py +0 -0
  819. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_c.py +0 -0
  820. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_d.py +0 -0
  821. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0650_part_e.py +0 -0
  822. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_cli.py +0 -0
  823. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_followups.py +0 -0
  824. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_a.py +0 -0
  825. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_b.py +0 -0
  826. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_c.py +0 -0
  827. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_d.py +0 -0
  828. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0660_part_e.py +0 -0
  829. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_followups.py +0 -0
  830. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_a.py +0 -0
  831. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_b.py +0 -0
  832. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_c.py +0 -0
  833. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_d.py +0 -0
  834. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_e.py +0 -0
  835. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0670_part_f.py +0 -0
  836. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_followups.py +0 -0
  837. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_a.py +0 -0
  838. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_b.py +0 -0
  839. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_c.py +0 -0
  840. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_d.py +0 -0
  841. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0680_part_e.py +0 -0
  842. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_a.py +0 -0
  843. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_b.py +0 -0
  844. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_c.py +0 -0
  845. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_d.py +0 -0
  846. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0690_part_e.py +0 -0
  847. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_a.py +0 -0
  848. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_b.py +0 -0
  849. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_c.py +0 -0
  850. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_d.py +0 -0
  851. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_e.py +0 -0
  852. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0700_part_f.py +0 -0
  853. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07110.py +0 -0
  854. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07111.py +0 -0
  855. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07112.py +0 -0
  856. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07113.py +0 -0
  857. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07114.py +0 -0
  858. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07115.py +0 -0
  859. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07116.py +0 -0
  860. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07117.py +0 -0
  861. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07118.py +0 -0
  862. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07119.py +0 -0
  863. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0712.py +0 -0
  864. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07120.py +0 -0
  865. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07121.py +0 -0
  866. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07122.py +0 -0
  867. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07123.py +0 -0
  868. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07124.py +0 -0
  869. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07125.py +0 -0
  870. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07126.py +0 -0
  871. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07127.py +0 -0
  872. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07128.py +0 -0
  873. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07129.py +0 -0
  874. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0713.py +0 -0
  875. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07130.py +0 -0
  876. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07131.py +0 -0
  877. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07132.py +0 -0
  878. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07133.py +0 -0
  879. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07134.py +0 -0
  880. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v07135.py +0 -0
  881. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0714.py +0 -0
  882. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0715.py +0 -0
  883. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0716.py +0 -0
  884. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0717.py +0 -0
  885. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0718.py +0 -0
  886. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_v0719.py +0 -0
  887. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_validator.py +0 -0
  888. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_vision.py +0 -0
  889. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_vllm_serve.py +0 -0
  890. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_warmup.py +0 -0
  891. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_why.py +0 -0
  892. {soup_cli-0.71.35 → soup_cli-0.71.37}/tests/test_windows_encoding.py +0 -0
@@ -12,6 +12,110 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.37] - 2026-07-17
16
+
17
+ **Every `pip install soup-cli[extra]` command now works on Windows `cmd.exe`**, and
18
+ eval-gate benchmark tasks run instead of always failing.
19
+
20
+ ### Fixed
21
+
22
+ - **Install hints are now quoted so they work in every shell.** Soup printed
23
+ `pip install 'soup-cli[ui]'` — bash / zsh / PowerShell syntax. `cmd.exe` has no
24
+ single-quote quoting, so it hands the quotes to pip verbatim and pip refuses:
25
+
26
+ ```
27
+ ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
28
+ ```
29
+
30
+ Every hint, README command, and docs example now uses `pip install
31
+ "soup-cli[extra]"`, which works in cmd, PowerShell, bash, and zsh alike — the
32
+ same spelling the repo already used for `pip install -e ".[dev]"`. Measured on
33
+ Windows: single quotes fail only on `cmd.exe`; double quotes pass everywhere;
34
+ dropping the quotes passes on Windows but breaks zsh, which globs the bracket.
35
+
36
+ Nothing in Soup can rescue the command after it is typed — pip and the shell
37
+ own it, and Soup is not installed yet when the README command runs — so the
38
+ fix is the spelling we print. A regression test now scans the package and every
39
+ docs code block for the single-quoted form.
40
+
41
+ If you followed an older tutorial and hit `Invalid requirement`, swap the `'`
42
+ for `"`; nothing is wrong with the package.
43
+
44
+ - **Eval-gate `type: benchmark` tasks now actually run.** `eval/gate.py` probed
45
+ for a `forgetting.run_mini_benchmark` helper that never existed, so every
46
+ `type: benchmark` task in a gate suite failed 100% of the time — while
47
+ advising an `[eval]` extras install that could not fix it. The gate now calls
48
+ `ForgettingDetector` directly (the same way `soup ship` already did), and an
49
+ unknown benchmark name fails with the list of valid names. Thanks
50
+ [@Sanjays2402](https://github.com/Sanjays2402)!
51
+ ([#315](https://github.com/MakazhanAlpamys/Soup/pull/315), closes
52
+ [#310](https://github.com/MakazhanAlpamys/Soup/issues/310))
53
+
54
+ ## [0.71.36] - 2026-07-16
55
+
56
+ **Data Moat II** — a semantic layer over your training data, plus two tools for
57
+ what a fine-tune forgets and leaks.
58
+
59
+ ### Added
60
+
61
+ - **`soup data dedup --semantic`** — near-duplicate removal over embedding
62
+ cosine instead of MinHash shingling. Catches *reworded* duplicates that
63
+ MinHash misses (measured: 0.88–0.91 cosine on rewordings MinHash scored as
64
+ distinct) while correctly keeping distinct-but-similar instructions. Zero new
65
+ dependencies: uses `transformers` from the `[train]` extra. **Read the
66
+ known-limitation below before lowering `--threshold`.**
67
+ - **`soup data topics <data>`** — cluster a dataset and label each cluster with
68
+ c-TF-IDF terms, plus a coverage table (`82% code · 6% math`) and a warning for
69
+ thin topics. Labels are *emergent term clusters*, not a fixed taxonomy.
70
+ - **`soup data canary insert|check`** — Secret-Sharer memorization probe. Insert
71
+ K high-entropy secrets, then check any model/adapter: each secret's loss is
72
+ ranked against never-inserted controls drawn from the same space. Exit 2 on
73
+ MAJOR so CI can gate. Measured on SmolLM2-135M: a memorized set lands at
74
+ percentile 0.0 (loss 1.7–2.5) against a clean model's 4.1–6.2.
75
+ - **`soup train --replay old.jsonl --replay-ratio 0.1`** — continual-learning
76
+ rehearsal. Interleaves a seeded sample of an old dataset into training so a
77
+ new task does not erase the old one. `r` is the fraction of the **final**
78
+ mixed set (`n_replay = round(r/(1-r) · n_new)`), rows are interleaved rather
79
+ than appended, and an undersized pool reports the shortfall instead of
80
+ repeating rows. Mixed into `train` only — validation stays pure new-task.
81
+
82
+ ### Fixed
83
+
84
+ - **The hardware-fit gate refused to train any local checkpoint.** A merged
85
+ model (`soup merge -o ./mymodel`) has no size marker in its name, so the size
86
+ guesser returned its 7B default, predicted ~16 GB of VRAM and refused. Local
87
+ checkpoints are now *measured* from their safetensors header (0.135B actual vs
88
+ 7.0B guessed) — this had blocked `soup merge` → train-from-merged entirely.
89
+ Third instance of this class after the v0.71.32 (Whisper) and v0.71.33
90
+ (`M` suffix) fixes.
91
+ - **`pip install 'soup-cli[extra]'` hints printed without the extra.** Rich ate
92
+ the bracket, so every "install the missing dependency" message across 17 sites
93
+ told users to run `pip install 'soup-cli'` — which succeeds and still leaves
94
+ the feature broken. Affected `[eval]`, `[data]`, `[serve]`, `[ui]`, `[tui]`,
95
+ `[compile]`, `[mcp]`, `[carbon]` and others, including Typer help text.
96
+ - Replay rows bypassed the image/audio path-traversal validation that the
97
+ primary dataset receives.
98
+
99
+ ### Known limitations
100
+
101
+ - **Semantic dedup is not a paraphrase detector.** Measured with
102
+ all-MiniLM-L6-v2, paraphrase cosines (0.49–0.76) **overlap** with
103
+ genuinely-distinct rows (0.54–0.76): "Add two numbers" vs "Multiply two
104
+ numbers" scores 0.759, *higher* than the true paraphrase "reverse a string" /
105
+ "invert the order of characters" at 0.491. **No threshold separates them**, so
106
+ lowering `--threshold` to chase paraphrases deletes real training rows. The
107
+ default (0.8) is deliberately conservative.
108
+ - **Replay is validated at proof-of-mechanism scale.** On SmolLM2-135M + LoRA,
109
+ replay retained the old task 7% better than a no-replay control — the correct
110
+ direction — but forgetting without it was only +4%, i.e. mild. The effect size
111
+ at full fine-tuning or 7B+ is unproven on a 4 GB box.
112
+ - **Canary exposure is the sampled-control approximation**, not full-space rank
113
+ enumeration. "No exposure" is not proof of no memorization.
114
+ - **`data topics` / `dedup --semantic` require `[train]`** (torch) and download
115
+ an embedding model. Plain MinHash `dedup` stays on the light core.
116
+ - Replay v1 is `sft`/`pretrain` only and is incompatible with
117
+ `packing`/`multipack`.
118
+
15
119
  ## [0.71.35] - 2026-07-15
16
120
 
17
121
  ### Added
@@ -120,7 +120,7 @@ src/soup_cli/
120
120
  templates/ - 21 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0, +4 compliance v0.71.35)
121
121
  ui/ - Web UI (FastAPI + HTML/JS SPA)
122
122
 
123
- tests/ - Test suite (313 files, 16001 tests)
123
+ tests/ - Test suite (315 files, 16288 tests)
124
124
  examples/ - Real-world config examples and datasets
125
125
  ```
126
126
 
@@ -150,7 +150,7 @@ pytest tests/test_data.py::test_detect_alpaca_format -v
150
150
  pytest tests/ --cov=soup_cli --cov-report=html
151
151
  ```
152
152
 
153
- ### Test Files (307 files)
153
+ ### Test Files (313 files)
154
154
 
155
155
  > A representative sample of the suite below. Run `pytest tests/ -v` for the complete list.
156
156
 
@@ -388,7 +388,7 @@ If adding a new training algorithm:
388
388
 
389
389
  1. Create `trainer/your_trainer.py` wrapping the appropriate TRL trainer
390
390
  2. Add config fields to `config/schema.py` (Pydantic v2)
391
- 3. Add template to `config/schema.py` (see existing 15 templates)
391
+ 3. Add a template YAML under `src/soup_cli/templates/` + a `manifest.json` entry (see the existing 21 templates)
392
392
  4. Update `commands/train.py` to route to your trainer
393
393
  5. Add 30+ tests in `tests/test_your_trainer.py`
394
394
  6. Update `README.md` + the relevant page under `docs/`
@@ -52,6 +52,8 @@ Listed by first contribution. PR numbers link the work.
52
52
  - Honor configured vocab expansion in the ORPO / SimPO / GRPO trainers ([#295](https://github.com/MakazhanAlpamys/Soup/pull/295))
53
53
  - **Ekaanksh Patil** ([@Ekaanksh-dev](https://github.com/Ekaanksh-dev))
54
54
  - Batch the PRM reward forward pass in `PRMScorer.__call__` (single `[B, T]` forward) ([#301](https://github.com/MakazhanAlpamys/Soup/pull/301))
55
+ - **Sanjay Santhanam** ([@Sanjays2402](https://github.com/Sanjays2402))
56
+ - Run built-in benchmark gate tasks through `ForgettingDetector` — every `type: benchmark` eval-gate task had always failed ([#315](https://github.com/MakazhanAlpamys/Soup/pull/315))
55
57
 
56
58
  ---
57
59
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soup-cli
3
- Version: 0.71.35
3
+ Version: 0.71.37
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
@@ -176,7 +176,7 @@ Description-Content-Type: text/markdown
176
176
  Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
177
177
 
178
178
  ```bash
179
- pip install 'soup-cli[train]' # add [train] to fine-tune; bare `soup-cli` is the light CLI
179
+ pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
180
180
  soup init --template chat
181
181
  soup train
182
182
  ```
@@ -193,34 +193,36 @@ infrastructure instead of improving models. Soup fixes that.
193
193
 
194
194
  ## What's New
195
195
 
196
- **v0.71.35the compliance pack.** Ship a regulated fine-tune with the paperwork it needs: start from a regulation-shaped config, publish a provenance-carrying model card, and gate every PR in CI.
197
-
198
- - **`soup init --template hipaa|soc2|eu-ai-act|sr-11-7`.** Four regulation-shaped starting
199
- configs, each documenting the exact commands for that regime — PHI scrubbing + air-gap,
200
- BOM/attest/sign, EU Annex XI + energy tracking, or repro-receipt + diagnose/ship.
201
- - **`soup card <registry-id>` `MODELCARD.md`.** Turn a registry entry into a publishable HF
202
- model card: training config, eval scorecard, config/data hashes, lineage, and every
203
- registered artifact. `soup push --card` uploads it as the README, so every public push
204
- carries its provenance.
205
- - **`soup ci init` fine-tuning CI.** Writes a GitHub Actions gate that runs
206
- `data validate` `expect` → `ship --evidence` on each PR; a regression exits 2 and
207
- blocks the merge.
208
- - **Compliance quickstart** ([docs/compliance.md](docs/compliance.md)) the whole path from
209
- template to air-gapped, signed, attested, carded model.
210
- - **GGUF export fixed on Windows.** Validated end-to-end for the first time (SmolLM2
211
- q4_0/q4_k_m/q8_0/f16 Ollama live inference), which surfaced four real bugs: the export
212
- cloned llama.cpp into your *current directory*, its first run **downgraded your PyTorch to
213
- CPU-only** (breaking CUDA), a correctly-built llama.cpp wasn't found under MSVC, and
214
- `deploy ollama` rejected relative GGUF paths. All fixed.
215
- - **Hardening:** the model-card generator (including the existing `soup push` card) no longer
216
- interpolates unescaped config values a crafted `base`/`scheduler` can't smuggle HTML into
217
- a card published on the Hub.
196
+ **v0.71.36Data Moat II.** A semantic layer over your training data, plus two tools for what a fine-tune forgets and what it leaks.
197
+
198
+ - **`soup data dedup --semantic`** dedup by meaning, not by shared tokens. Catches
199
+ *reworded* duplicates MinHash's shingling scores as distinct. Zero new dependencies.
200
+ - **`soup data topics <data>`** cluster your data and get a coverage table
201
+ (`82% code · 6% math · 1% safety`) with a warning for thin topics, so you can see what
202
+ you are actually training on.
203
+ - **`soup data canary insert|check`** insert unique secrets, then prove whether a model
204
+ memorized them: each secret's loss is ranked against never-inserted controls. Exit 2 on a
205
+ leak, so CI can gate. On SmolLM2-135M a memorized set lands at percentile 0.0 against a
206
+ clean model's 4%–93% spread.
207
+ - **`soup train --replay old.jsonl`** — continual-learning rehearsal: interleave your old
208
+ data so the new task doesn't erase it.
209
+ - **Honest result:** semantic dedup is **not** a paraphrase detector. Measured, paraphrase
210
+ cosines (0.49–0.76) *overlap* with genuinely-distinct rows (0.54–0.76) "Add two numbers"
211
+ vs "Multiply two numbers" scores **higher** than a real paraphrase so no threshold
212
+ separates them. The default is deliberately conservative; see the CHANGELOG.
213
+ - **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
214
+ yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
215
+ 16 GB), and every `pip install "soup-cli[extra]"` hint printed **without the extra**
216
+ 17 sites where the suggested command succeeds and leaves the feature still broken.
218
217
 
219
218
  ```bash
220
- soup adapters arithmetic "coder - toxic" \
221
- --adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
219
+ soup data topics train.jsonl # what am I actually training on?
220
+ soup data dedup train.jsonl --semantic -o clean.jsonl
222
221
 
223
- soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
222
+ soup data canary insert train.jsonl -o canaried.jsonl --manifest secrets.json
223
+ soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
224
+
225
+ soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
224
226
  ```
225
227
 
226
228
  <details>
@@ -246,11 +248,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://gi
246
248
  ### 1. Install
247
249
 
248
250
  ```bash
249
- pip install soup-cli # light: CLI + config + data tools (no PyTorch)
250
- pip install 'soup-cli[train]' # add the training stack (torch, transformers, peft, trl, …)
251
- pip install git+https://github.com/MakazhanAlpamys/Soup.git # latest dev
251
+ # Light core: CLI + config + data tools, no PyTorch
252
+ pip install soup-cli
253
+
254
+ # Add the training stack (torch, transformers, peft, trl, datasets, …)
255
+ pip install "soup-cli[train]"
256
+
257
+ # Everything (train + serve + ui + data) in one shot
258
+ pip install "soup-cli[all]"
259
+
260
+ # Or from GitHub (latest dev)
261
+ pip install git+https://github.com/MakazhanAlpamys/Soup.git
252
262
  ```
253
263
 
264
+ The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
265
+ [`docs/models.md`](docs/models.md#optional-extras).
266
+
267
+ > **Use double quotes around the extra.** They are the only spelling that works in
268
+ > every shell — `cmd.exe`, PowerShell, bash, and zsh.
269
+ >
270
+ > Older tutorials and videos (including some of ours) show the single-quoted
271
+ > `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
272
+ > fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
273
+ > quotes straight to pip:
274
+ >
275
+ > ```
276
+ > ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
277
+ > ```
278
+ >
279
+ > If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
280
+ > character, nothing is wrong with the package. (Dropping the quotes entirely
281
+ > works on Windows too, but zsh then reads `[train]` as a glob and fails.)
282
+
254
283
  `soup init`, `soup data …`, and the other data/inspection commands work on the light install.
255
284
  Fine-tuning (`soup train`) needs the `[train]` extra.
256
285
 
@@ -285,7 +314,7 @@ A complete `soup.yaml`:
285
314
  ```yaml
286
315
  base: meta-llama/Llama-3.1-8B-Instruct
287
316
  task: sft
288
- # backend: unsloth # 2-5x faster, pip install 'soup-cli[fast]'
317
+ # backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
289
318
 
290
319
  data:
291
320
  train: ./data/train.jsonl
@@ -320,6 +349,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
320
349
  | [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
321
350
  | [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
322
351
  | [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
352
+ | [Compliance & governance quickstart](docs/compliance.md) | HIPAA/SOC2/EU-AI-Act/SR-11-7 `init` templates, provenance (BOM/attest/repro-receipt), audit log, air-gap, model-card autogen (`soup card`), CI gate (`soup ci init`) |
323
353
  | [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
324
354
  | [Command reference](docs/commands.md) | The full `soup` command list |
325
355
  | [Supported models & extras](docs/models.md) | Recommended model families, the VRAM size guide, the pip extras matrix |
@@ -32,7 +32,7 @@
32
32
  Soup turns the pain of LLM fine-tuning into a simple workflow. One config, one command, done.
33
33
 
34
34
  ```bash
35
- pip install 'soup-cli[train]' # add [train] to fine-tune; bare `soup-cli` is the light CLI
35
+ pip install "soup-cli[train]" # add [train] to fine-tune; bare `soup-cli` is the light CLI
36
36
  soup init --template chat
37
37
  soup train
38
38
  ```
@@ -49,34 +49,36 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
52
- **v0.71.35the compliance pack.** Ship a regulated fine-tune with the paperwork it needs: start from a regulation-shaped config, publish a provenance-carrying model card, and gate every PR in CI.
53
-
54
- - **`soup init --template hipaa|soc2|eu-ai-act|sr-11-7`.** Four regulation-shaped starting
55
- configs, each documenting the exact commands for that regime — PHI scrubbing + air-gap,
56
- BOM/attest/sign, EU Annex XI + energy tracking, or repro-receipt + diagnose/ship.
57
- - **`soup card <registry-id>` `MODELCARD.md`.** Turn a registry entry into a publishable HF
58
- model card: training config, eval scorecard, config/data hashes, lineage, and every
59
- registered artifact. `soup push --card` uploads it as the README, so every public push
60
- carries its provenance.
61
- - **`soup ci init` fine-tuning CI.** Writes a GitHub Actions gate that runs
62
- `data validate` `expect` → `ship --evidence` on each PR; a regression exits 2 and
63
- blocks the merge.
64
- - **Compliance quickstart** ([docs/compliance.md](docs/compliance.md)) the whole path from
65
- template to air-gapped, signed, attested, carded model.
66
- - **GGUF export fixed on Windows.** Validated end-to-end for the first time (SmolLM2
67
- q4_0/q4_k_m/q8_0/f16 Ollama live inference), which surfaced four real bugs: the export
68
- cloned llama.cpp into your *current directory*, its first run **downgraded your PyTorch to
69
- CPU-only** (breaking CUDA), a correctly-built llama.cpp wasn't found under MSVC, and
70
- `deploy ollama` rejected relative GGUF paths. All fixed.
71
- - **Hardening:** the model-card generator (including the existing `soup push` card) no longer
72
- interpolates unescaped config values a crafted `base`/`scheduler` can't smuggle HTML into
73
- a card published on the Hub.
52
+ **v0.71.36Data Moat II.** A semantic layer over your training data, plus two tools for what a fine-tune forgets and what it leaks.
53
+
54
+ - **`soup data dedup --semantic`** dedup by meaning, not by shared tokens. Catches
55
+ *reworded* duplicates MinHash's shingling scores as distinct. Zero new dependencies.
56
+ - **`soup data topics <data>`** cluster your data and get a coverage table
57
+ (`82% code · 6% math · 1% safety`) with a warning for thin topics, so you can see what
58
+ you are actually training on.
59
+ - **`soup data canary insert|check`** insert unique secrets, then prove whether a model
60
+ memorized them: each secret's loss is ranked against never-inserted controls. Exit 2 on a
61
+ leak, so CI can gate. On SmolLM2-135M a memorized set lands at percentile 0.0 against a
62
+ clean model's 4%–93% spread.
63
+ - **`soup train --replay old.jsonl`** — continual-learning rehearsal: interleave your old
64
+ data so the new task doesn't erase it.
65
+ - **Honest result:** semantic dedup is **not** a paraphrase detector. Measured, paraphrase
66
+ cosines (0.49–0.76) *overlap* with genuinely-distinct rows (0.54–0.76) "Add two numbers"
67
+ vs "Multiply two numbers" scores **higher** than a real paraphrase so no threshold
68
+ separates them. The default is deliberately conservative; see the CHANGELOG.
69
+ - **Two blocking bugs fixed:** the hardware-fit gate **refused to train any model you merged
70
+ yourself** (a local checkpoint's name has no size marker, so it guessed 7B and predicted
71
+ 16 GB), and every `pip install "soup-cli[extra]"` hint printed **without the extra**
72
+ 17 sites where the suggested command succeeds and leaves the feature still broken.
74
73
 
75
74
  ```bash
76
- soup adapters arithmetic "coder - toxic" \
77
- --adapter coder=./coder-lora --adapter toxic=./toxic-lora -o ./cleaned
75
+ soup data topics train.jsonl # what am I actually training on?
76
+ soup data dedup train.jsonl --semantic -o clean.jsonl
78
77
 
79
- soup train --config sft.yaml # with training.lisa_enabled: true, lisa_num_layers: 2
78
+ soup data canary insert train.jsonl -o canaried.jsonl --manifest secrets.json
79
+ soup data canary check --manifest secrets.json --base ./my-model # exit 2 = leak
80
+
81
+ soup train --config sft.yaml --replay old_task.jsonl --replay-ratio 0.1
80
82
  ```
81
83
 
82
84
  <details>
@@ -102,11 +104,38 @@ Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://gi
102
104
  ### 1. Install
103
105
 
104
106
  ```bash
105
- pip install soup-cli # light: CLI + config + data tools (no PyTorch)
106
- pip install 'soup-cli[train]' # add the training stack (torch, transformers, peft, trl, …)
107
- pip install git+https://github.com/MakazhanAlpamys/Soup.git # latest dev
107
+ # Light core: CLI + config + data tools, no PyTorch
108
+ pip install soup-cli
109
+
110
+ # Add the training stack (torch, transformers, peft, trl, datasets, …)
111
+ pip install "soup-cli[train]"
112
+
113
+ # Everything (train + serve + ui + data) in one shot
114
+ pip install "soup-cli[all]"
115
+
116
+ # Or from GitHub (latest dev)
117
+ pip install git+https://github.com/MakazhanAlpamys/Soup.git
108
118
  ```
109
119
 
120
+ The full extras table (`fast`, `mlx`, `serve`, `eval`, `ui`, `vision`, `audio`, …) lives in
121
+ [`docs/models.md`](docs/models.md#optional-extras).
122
+
123
+ > **Use double quotes around the extra.** They are the only spelling that works in
124
+ > every shell — `cmd.exe`, PowerShell, bash, and zsh.
125
+ >
126
+ > Older tutorials and videos (including some of ours) show the single-quoted
127
+ > `pip install 'soup-cli[train]'`. That is bash / zsh / PowerShell syntax, and it
128
+ > fails on Windows `cmd.exe`, which has no single-quote quoting and hands the
129
+ > quotes straight to pip:
130
+ >
131
+ > ```
132
+ > ERROR: Invalid requirement: "'soup-cli[train]'": Expected package name at the start of dependency specifier
133
+ > ```
134
+ >
135
+ > If you hit that, swap the `'` for `"` — pip is rejecting a literal quote
136
+ > character, nothing is wrong with the package. (Dropping the quotes entirely
137
+ > works on Windows too, but zsh then reads `[train]` as a glob and fails.)
138
+
110
139
  `soup init`, `soup data …`, and the other data/inspection commands work on the light install.
111
140
  Fine-tuning (`soup train`) needs the `[train]` extra.
112
141
 
@@ -141,7 +170,7 @@ A complete `soup.yaml`:
141
170
  ```yaml
142
171
  base: meta-llama/Llama-3.1-8B-Instruct
143
172
  task: sft
144
- # backend: unsloth # 2-5x faster, pip install 'soup-cli[fast]'
173
+ # backend: unsloth # 2-5x faster, pip install "soup-cli[fast]"
145
174
 
146
175
  data:
147
176
  train: ./data/train.jsonl
@@ -176,6 +205,7 @@ The full feature reference lives in [`docs/`](docs/). Start here:
176
205
  | [Evaluation & probes](docs/evaluation.md) | Eval design/gate, eval-gated training, benchmarks, NLG metrics, calibration, Elo arena, diagnose, post-train X-ray probes, A/B, drift, tunability, `soup advise` |
177
206
  | [Serving & export](docs/serving-and-export.md) | OpenAI-compatible server, batch inference, benchmarking, merge/export, Anthropic Messages endpoint, speculative decoding (train + measure your own draft), deploy autopilot, Web UI, Agent Forge |
178
207
  | [Adapters, registry & governance](docs/adapters-and-governance.md) | Adapter lifecycle/management, model registry, Soup Cans, the data flywheel (`soup loop`), knowledge editing, steering, supply-chain controls (scan/sign/BOM/attest/audit/airgap) |
208
+ | [Compliance & governance quickstart](docs/compliance.md) | HIPAA/SOC2/EU-AI-Act/SR-11-7 `init` templates, provenance (BOM/attest/repro-receipt), audit log, air-gap, model-card autogen (`soup card`), CI gate (`soup ci init`) |
179
209
  | [Backends, platform & ops](docs/backends-and-ops.md) | MLX/Unsloth backends, alternative hubs, HF Hub integration, autopilot, experiment tracking, plan/apply, env lockfiles, hardware-fit, completions, plugins, utility commands |
180
210
  | [Command reference](docs/commands.md) | The full `soup` command list |
181
211
  | [Supported models & extras](docs/models.md) | Recommended model families, the VRAM size guide, the pip extras matrix |
@@ -79,7 +79,7 @@ Fine-tune on M1-M4 Macs via Apple's [MLX](https://github.com/ml-explore/mlx) fra
79
79
 
80
80
  ```bash
81
81
  # Install MLX support
82
- pip install 'soup-cli[mlx]'
82
+ pip install "soup-cli[mlx]"
83
83
  ```
84
84
 
85
85
  ```yaml
@@ -108,7 +108,7 @@ Use the [Unsloth](https://github.com/unslothai/unsloth) backend for significantl
108
108
 
109
109
  ```bash
110
110
  # Install unsloth support
111
- pip install 'soup-cli[fast]'
111
+ pip install "soup-cli[fast]"
112
112
  ```
113
113
 
114
114
  Then add one line to your config:
@@ -143,7 +143,7 @@ app from your `soup.yaml` for serverless, per-second-billed GPU training. The co
143
143
  base64-embedded as **data** — no code interpolation, no secrets in the generated stub.
144
144
 
145
145
  ```bash
146
- pip install 'soup-cli[modal]' # only needed for live submit
146
+ pip install "soup-cli[modal]" # only needed for live submit
147
147
 
148
148
  # Plan-only (default): write the stub + print the `modal run` command.
149
149
  soup train --config soup.yaml --cloud modal --gpu a100
@@ -585,7 +585,7 @@ Full-screen Textual dashboard. Two-pane: run list (left) + selected-run detail
585
585
  (right). `r` refreshes, `q` quits.
586
586
 
587
587
  ```bash
588
- pip install 'soup-cli[tui]'
588
+ pip install "soup-cli[tui]"
589
589
  soup tui --refresh 1.0 --limit 50
590
590
  ```
591
591
 
@@ -11,6 +11,7 @@ soup init [--template chat|code|...|audio] Create config
11
11
  soup init --template hipaa|soc2|eu-ai-act|sr-11-7 Compliance-shaped starting config + the commands for that regime (v0.71.35)
12
12
  soup autopilot --model <id> --data d.jsonl --goal <g> Zero-configsoup train --config soup.yaml Start training
13
13
  soup train --config soup.yaml --tensorboard Train with TensorBoard logging
14
+ soup train --config soup.yaml --replay old.jsonl --replay-ratio 0.1 Continual-learning rehearsal: interleave old data so the new task doesn't erase it (sft/pretrain)
14
15
  soup train --config soup.yaml --fsdp full_shard Train with FSDP2
15
16
  soup train --config soup.yaml --deepspeed zero++ DeepSpeed ZeRO++ (quantized comms)
16
17
  soup train --config soup.yaml --gpus auto|N Multi-GPU launch hint
@@ -77,6 +78,10 @@ soup data lint <path> Preference-data linter: length bia
77
78
  soup data convert <path> --to chatml Convert between formats
78
79
  soup data merge data1.jsonl data2.jsonl Combine datasets
79
80
  soup data dedup <path> --threshold 0.8 Remove duplicates (MinHash)
81
+ soup data dedup <path> --semantic Dedup by embedding cosine — catches rewordings MinHash misses ([train])
82
+ soup data topics <path> [--clusters N|auto] Cluster + c-TF-IDF labels + coverage table + thin-topic warnings ([train])
83
+ soup data canary insert <path> -o <out> --manifest <m> Insert K secrets to later prove memorization (manifest = SECRET)
84
+ soup data canary check --manifest <m> --base <model> Rank each secret's loss vs never-inserted controls; exit 2 = leak
80
85
  soup data stats <path> Extended statistics
81
86
  soup data generate --prompt "..." --count 100 Generate synthetic data
82
87
  soup data generate ... --provider ollama Use local Ollama instance
@@ -250,9 +255,9 @@ soup adapters bisect <ckpt>... --eval-command "..." Binary search over training
250
255
  soup lock write --base-sha <h> --dataset-sha <h> --env-hash <h> Write soup.lock (v0.67.0)
251
256
  soup lock write --base-sha <h> --dataset-sha <h> --env-lock soup-env.lock Auto-derive --env-hash from soup-env.lock (v0.71.1)
252
257
  soup lock show / soup lock check Show + drift-check (exit 3 on drift)
253
- soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install 'soup-cli[compile]')
258
+ soup compile <program.py> --eval <suite> [--optimizer mipro|gepa|textgrad|copro|bootstrap_fewshot] [--plan-only] DSPy / GEPA / TextGrad prompt-program compiler — live (v0.71.13; pip install "soup-cli[compile]")
254
259
  soup distill-prompt --traces <jsonl> --teacher <m> --student <m> --strategy sft|preference|kl [--provider ollama|anthropic|vllm] [--base-url <url>] [--temperature F] [--max-rows N] Distill prompt-heavy traces via a live teacher (v0.71.13)
255
- soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install 'soup-cli[compile]')
260
+ soup compile-tools <spec.json|yaml> --eval <jsonl> [--optimizer textgrad|gepa] [--plan-only] TextGrad / GEPA tool-schema optimiser — live (v0.71.13; pip install "soup-cli[compile]")
256
261
  soup apple-adapter <source-dir> --direction hf-to-mlx|mlx-to-hf|hf-to-apple|mlx-to-apple --output <dir> [--sign] [--plan-only] PEFT LoRA <-> mlx-lm adapter conversion — live (v0.71.21; *-to-apple upstream-gated exit 3)
257
262
  soup local-rl init --db <path> Create personal-LLM flywheel SQLite schema (v0.68.0)
258
263
  soup local-rl status --db <path> Print interactions / thumbs-up / thumbs-down counters
@@ -294,7 +299,7 @@ server over **stdio**, so any MCP client — Claude Code, Cursor, Cline, Continu
294
299
  can drive Soup conversationally. Install the extra first:
295
300
 
296
301
  ```bash
297
- pip install 'soup-cli[mcp]'
302
+ pip install "soup-cli[mcp]"
298
303
  ```
299
304
 
300
305
  Register it with your client. For **Claude Code** (`.mcp.json` in the repo) or