soup-cli 0.71.8__tar.gz → 0.71.10__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 (803) hide show
  1. {soup_cli-0.71.8 → soup_cli-0.71.10}/CHANGELOG.md +80 -0
  2. {soup_cli-0.71.8 → soup_cli-0.71.10}/CONTRIBUTING.md +1 -1
  3. {soup_cli-0.71.8 → soup_cli-0.71.10}/PKG-INFO +16 -15
  4. {soup_cli-0.71.8 → soup_cli-0.71.10}/README.md +15 -14
  5. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/adapters-and-governance.md +16 -9
  6. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/commands.md +9 -2
  7. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/evaluation.md +3 -2
  8. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/training.md +31 -3
  9. {soup_cli-0.71.8 → soup_cli-0.71.10}/pyproject.toml +1 -1
  10. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/__init__.py +1 -1
  11. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cli.py +9 -0
  12. soup_cli-0.71.10/src/soup_cli/commands/_eval_v07110.py +259 -0
  13. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/edit.py +121 -22
  14. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/eval.py +5 -0
  15. soup_cli-0.71.10/src/soup_cli/commands/ra_dit.py +126 -0
  16. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/serve.py +36 -7
  17. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/steer.py +87 -28
  18. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/train.py +17 -0
  19. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/config/schema.py +20 -0
  20. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/registry/store.py +3 -0
  21. soup_cli-0.71.10/src/soup_cli/trainer/raft.py +121 -0
  22. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/sft.py +94 -1
  23. soup_cli-0.71.10/src/soup_cli/trainer/unlearn.py +443 -0
  24. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/citation_faithful.py +54 -14
  25. soup_cli-0.71.10/src/soup_cli/utils/diagnose/citation.py +97 -0
  26. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/live.py +10 -0
  27. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/report.py +2 -0
  28. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/edit_diff.py +87 -18
  29. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/edit_governor.py +258 -1
  30. soup_cli-0.71.10/src/soup_cli/utils/edit_kernels.py +399 -0
  31. soup_cli-0.71.10/src/soup_cli/utils/grace_codebook.py +462 -0
  32. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/knowledge_edit.py +115 -13
  33. soup_cli-0.71.10/src/soup_cli/utils/ra_dit_run.py +373 -0
  34. soup_cli-0.71.10/src/soup_cli/utils/raft.py +282 -0
  35. soup_cli-0.71.10/src/soup_cli/utils/steering.py +720 -0
  36. soup_cli-0.71.10/src/soup_cli/utils/unlearn_kernels.py +115 -0
  37. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/unlearning.py +16 -12
  38. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0560.py +3 -1
  39. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0610_part_a.py +26 -9
  40. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0610_part_c.py +57 -11
  41. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_followups.py +39 -19
  42. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_part_c.py +11 -15
  43. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_part_e.py +21 -7
  44. soup_cli-0.71.10/tests/test_v07110.py +1921 -0
  45. soup_cli-0.71.10/tests/test_v0719.py +946 -0
  46. soup_cli-0.71.8/src/soup_cli/trainer/unlearn.py +0 -90
  47. soup_cli-0.71.8/src/soup_cli/utils/grace_codebook.py +0 -102
  48. soup_cli-0.71.8/src/soup_cli/utils/steering.py +0 -234
  49. {soup_cli-0.71.8 → soup_cli-0.71.10}/.dockerignore +0 -0
  50. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/FUNDING.yml +0 -0
  51. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  52. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  53. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  54. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/pull_request_template.md +0 -0
  55. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/workflows/ci.yml +0 -0
  56. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/workflows/docker.yml +0 -0
  57. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/workflows/publish.yml +0 -0
  58. {soup_cli-0.71.8 → soup_cli-0.71.10}/.github/workflows/recipe-validation.yml +0 -0
  59. {soup_cli-0.71.8 → soup_cli-0.71.10}/.gitignore +0 -0
  60. {soup_cli-0.71.8 → soup_cli-0.71.10}/.mailmap +0 -0
  61. {soup_cli-0.71.8 → soup_cli-0.71.10}/.pre-commit-config.yaml +0 -0
  62. {soup_cli-0.71.8 → soup_cli-0.71.10}/AGENTS.md +0 -0
  63. {soup_cli-0.71.8 → soup_cli-0.71.10}/CODEOWNERS +0 -0
  64. {soup_cli-0.71.8 → soup_cli-0.71.10}/CODE_OF_CONDUCT.md +0 -0
  65. {soup_cli-0.71.8 → soup_cli-0.71.10}/CONTRIBUTORS.md +0 -0
  66. {soup_cli-0.71.8 → soup_cli-0.71.10}/Dockerfile +0 -0
  67. {soup_cli-0.71.8 → soup_cli-0.71.10}/LICENSE +0 -0
  68. {soup_cli-0.71.8 → soup_cli-0.71.10}/NOTICE +0 -0
  69. {soup_cli-0.71.8 → soup_cli-0.71.10}/SECURITY.md +0 -0
  70. {soup_cli-0.71.8 → soup_cli-0.71.10}/docker-compose.yml +0 -0
  71. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/README.md +0 -0
  72. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/backends-and-ops.md +0 -0
  73. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/data.md +0 -0
  74. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/models.md +0 -0
  75. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/peft-and-efficiency.md +0 -0
  76. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/performance-and-quantization.md +0 -0
  77. {soup_cli-0.71.8 → soup_cli-0.71.10}/docs/serving-and-export.md +0 -0
  78. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/README.md +0 -0
  79. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/dpo_chat.yaml +0 -0
  80. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/dpo_example.yaml +0 -0
  81. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/grpo_reasoning.yaml +0 -0
  82. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/rlhf_step1_sft.yaml +0 -0
  83. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/rlhf_step2_reward.yaml +0 -0
  84. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  85. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/sft_basic.yaml +0 -0
  86. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/configs/vision_llama.yaml +0 -0
  87. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/data/alpaca_tiny.jsonl +0 -0
  88. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/data/chat_preferences.jsonl +0 -0
  89. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/data/dpo_sample.jsonl +0 -0
  90. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/data/reasoning_math.jsonl +0 -0
  91. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/synthetic_workflow.md +0 -0
  92. {soup_cli-0.71.8 → soup_cli-0.71.10}/examples/synthetic_workflow.yaml +0 -0
  93. {soup_cli-0.71.8 → soup_cli-0.71.10}/soup.png +0 -0
  94. {soup_cli-0.71.8 → soup_cli-0.71.10}/soup_logo_svg.svg +0 -0
  95. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/__main__.py +0 -0
  96. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/autopilot/__init__.py +0 -0
  97. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/autopilot/analyzer.py +0 -0
  98. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/autopilot/decisions.py +0 -0
  99. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/autopilot/generate_config.py +0 -0
  100. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/__init__.py +0 -0
  101. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/pack.py +0 -0
  102. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/publish.py +0 -0
  103. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/run.py +0 -0
  104. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/schema.py +0 -0
  105. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/unpack.py +0 -0
  106. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/cans/verify.py +0 -0
  107. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/__init__.py +0 -0
  108. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/_eval_v0550.py +0 -0
  109. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/_eval_v0610.py +0 -0
  110. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/_eval_v0650.py +0 -0
  111. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/_webhook_cli.py +0 -0
  112. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/ab.py +0 -0
  113. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/active_sample.py +0 -0
  114. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/adapters.py +0 -0
  115. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/advise.py +0 -0
  116. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/agent.py +0 -0
  117. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/airgap.py +0 -0
  118. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/apple_adapter.py +0 -0
  119. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/attest.py +0 -0
  120. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/audit_log.py +0 -0
  121. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/autopilot.py +0 -0
  122. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/bench.py +0 -0
  123. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/bom.py +0 -0
  124. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/build.py +0 -0
  125. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/can.py +0 -0
  126. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/chat.py +0 -0
  127. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/compile_cmd.py +0 -0
  128. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/compile_tools.py +0 -0
  129. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/completions.py +0 -0
  130. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/cost.py +0 -0
  131. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/data.py +0 -0
  132. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/data_forge.py +0 -0
  133. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/data_mix.py +0 -0
  134. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/data_score.py +0 -0
  135. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  136. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/deploy.py +0 -0
  137. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/diagnose.py +0 -0
  138. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/diff.py +0 -0
  139. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/distill_prompt.py +0 -0
  140. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/doctor.py +0 -0
  141. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/drift_alarm.py +0 -0
  142. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/env.py +0 -0
  143. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/expect.py +0 -0
  144. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/export.py +0 -0
  145. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/fetch.py +0 -0
  146. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/generate.py +0 -0
  147. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/history.py +0 -0
  148. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/infer.py +0 -0
  149. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/ingest.py +0 -0
  150. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/init.py +0 -0
  151. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/iterative_dpo.py +0 -0
  152. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/license_advisor.py +0 -0
  153. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/llama.py +0 -0
  154. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/local_rl.py +0 -0
  155. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/lock.py +0 -0
  156. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/loop.py +0 -0
  157. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/merge.py +0 -0
  158. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  159. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/migrate.py +0 -0
  160. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/monitor.py +0 -0
  161. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/plan.py +0 -0
  162. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/plugins.py +0 -0
  163. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/probe.py +0 -0
  164. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/profile.py +0 -0
  165. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/prune_prompt.py +0 -0
  166. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/push.py +0 -0
  167. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/quantize.py +0 -0
  168. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/quickstart.py +0 -0
  169. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/recipes.py +0 -0
  170. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/registry.py +0 -0
  171. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/runs.py +0 -0
  172. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/sweep.py +0 -0
  173. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/tokenizer.py +0 -0
  174. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/tui.py +0 -0
  175. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/tunability.py +0 -0
  176. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/ui.py +0 -0
  177. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/commands/why.py +0 -0
  178. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/config/__init__.py +0 -0
  179. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/config/loader.py +0 -0
  180. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/__init__.py +0 -0
  181. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  182. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  183. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  184. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  185. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  186. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  187. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  188. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  189. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  190. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  191. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  192. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  193. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/augment.py +0 -0
  194. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/chat_templates.py +0 -0
  195. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/collators.py +0 -0
  196. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/formats.py +0 -0
  197. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/loader.py +0 -0
  198. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/loss_mask.py +0 -0
  199. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/providers/__init__.py +0 -0
  200. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/providers/_utils.py +0 -0
  201. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/providers/anthropic.py +0 -0
  202. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/providers/ollama.py +0 -0
  203. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/providers/vllm.py +0 -0
  204. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/sft_format.py +0 -0
  205. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/__init__.py +0 -0
  206. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/code.py +0 -0
  207. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/conversation.py +0 -0
  208. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/preference.py +0 -0
  209. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/qa.py +0 -0
  210. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/reasoning.py +0 -0
  211. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/tool_calling.py +0 -0
  212. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/templates/verifiable.py +0 -0
  213. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/traces/__init__.py +0 -0
  214. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/traces/pair_builder.py +0 -0
  215. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/traces/parsers.py +0 -0
  216. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/traces/quality.py +0 -0
  217. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/data/validator.py +0 -0
  218. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/__init__.py +0 -0
  219. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/arena.py +0 -0
  220. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  221. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/calibrate.py +0 -0
  222. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  223. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/custom.py +0 -0
  224. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/forgetting.py +0 -0
  225. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/gate.py +0 -0
  226. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/human.py +0 -0
  227. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/judge.py +0 -0
  228. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/leaderboard.py +0 -0
  229. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/eval/quant_check.py +0 -0
  230. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/experiment/__init__.py +0 -0
  231. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/experiment/tracker.py +0 -0
  232. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/migrate/__init__.py +0 -0
  233. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/migrate/axolotl.py +0 -0
  234. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/migrate/common.py +0 -0
  235. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/migrate/llamafactory.py +0 -0
  236. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/migrate/unsloth.py +0 -0
  237. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/__init__.py +0 -0
  238. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/callback.py +0 -0
  239. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  240. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/display.py +0 -0
  241. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  242. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/hf_push.py +0 -0
  243. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  244. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/monitoring/trace_logger.py +0 -0
  245. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/plugins/__init__.py +0 -0
  246. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/py.typed +0 -0
  247. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/recipes/__init__.py +0 -0
  248. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/recipes/catalog.py +0 -0
  249. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/registry/__init__.py +0 -0
  250. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/registry/attach.py +0 -0
  251. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/registry/diff.py +0 -0
  252. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/registry/hashing.py +0 -0
  253. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/__init__.py +0 -0
  254. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/audio.yaml +0 -0
  255. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/bco.yaml +0 -0
  256. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/chat.yaml +0 -0
  257. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/code.yaml +0 -0
  258. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/embedding.yaml +0 -0
  259. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -0
  260. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -0
  261. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  262. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/ipo.yaml +0 -0
  263. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/kto.yaml +0 -0
  264. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/longcontext.yaml +0 -0
  265. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/manifest.json +0 -0
  266. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/medical.yaml +0 -0
  267. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/moe.yaml +0 -0
  268. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/orpo.yaml +0 -0
  269. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/pretrain.yaml +0 -0
  270. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/reasoning.yaml +0 -0
  271. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/rlhf.yaml +0 -0
  272. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/simpo.yaml +0 -0
  273. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/tool-calling.yaml +0 -0
  274. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/templates/vision.yaml +0 -0
  275. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/__init__.py +0 -0
  276. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/bco.py +0 -0
  277. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/classifier.py +0 -0
  278. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/distill.py +0 -0
  279. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/dpo.py +0 -0
  280. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/embedding.py +0 -0
  281. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/grpo.py +0 -0
  282. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/ipo.py +0 -0
  283. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/kto.py +0 -0
  284. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  285. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  286. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/mlx_routing.py +0 -0
  287. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/mlx_sft.py +0 -0
  288. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/orpo.py +0 -0
  289. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/ppo.py +0 -0
  290. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/preference.py +0 -0
  291. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/pretrain.py +0 -0
  292. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/prm.py +0 -0
  293. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/reward_model.py +0 -0
  294. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/rewards.py +0 -0
  295. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/trainer/simpo.py +0 -0
  296. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/tui_app.py +0 -0
  297. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/__init__.py +0 -0
  298. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/app.py +0 -0
  299. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/plugins/__init__.py +0 -0
  300. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/static/app.js +0 -0
  301. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/static/index.html +0 -0
  302. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/static/logo.png +0 -0
  303. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/static/logo.svg +0 -0
  304. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/ui/static/style.css +0 -0
  305. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/__init__.py +0 -0
  306. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/_eval_text.py +0 -0
  307. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ab_test.py +0 -0
  308. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/activation_offload.py +0 -0
  309. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/active_sampler.py +0 -0
  310. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_bisect.py +0 -0
  311. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_branch.py +0 -0
  312. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_diff.py +0 -0
  313. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_merge.py +0 -0
  314. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_pr.py +0 -0
  315. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_scan.py +0 -0
  316. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/adapter_sign.py +0 -0
  317. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/advanced_precision.py +0 -0
  318. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/advise.py +0 -0
  319. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/advise_history.py +0 -0
  320. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/agent_forge.py +0 -0
  321. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/agent_rollout.py +0 -0
  322. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/airgap_bundle.py +0 -0
  323. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/annex_xi.py +0 -0
  324. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/anthropic_messages.py +0 -0
  325. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/apple_adapter.py +0 -0
  326. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/attest.py +0 -0
  327. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/audit_log.py +0 -0
  328. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/auto_quant.py +0 -0
  329. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/backend_detect.py +0 -0
  330. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/batch_probe.py +0 -0
  331. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/behavior_battery.py +0 -0
  332. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/bitnet.py +0 -0
  333. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/blame.py +0 -0
  334. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/block_expansion.py +0 -0
  335. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/bom.py +0 -0
  336. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/brain_rot.py +0 -0
  337. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  338. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/build_dag.py +0 -0
  339. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/canary_discovery.py +0 -0
  340. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/canary_router.py +0 -0
  341. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/capability_suite.py +0 -0
  342. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/checklist_dsl.py +0 -0
  343. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  344. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/classifier.py +0 -0
  345. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/cmaes_merge.py +0 -0
  346. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/compile_tools.py +0 -0
  347. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/completions.py +0 -0
  348. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/constants.py +0 -0
  349. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/convergence.py +0 -0
  350. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/crash.py +0 -0
  351. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  352. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/curriculum.py +0 -0
  353. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  354. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/cut_ce.py +0 -0
  355. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/data_forge.py +0 -0
  356. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/data_mix.py +0 -0
  357. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/data_pipeline.py +0 -0
  358. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/data_score.py +0 -0
  359. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/deepspeed.py +0 -0
  360. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  361. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/demo_bundles.py +0 -0
  362. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  363. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/deploy_measure.py +0 -0
  364. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  365. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/_common.py +0 -0
  366. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/badge.py +0 -0
  367. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  368. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  369. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/format.py +0 -0
  370. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  371. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  372. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  373. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/diagnose/runner.py +0 -0
  374. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/distill.py +0 -0
  375. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/dpo_variants.py +0 -0
  376. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/drift_alarm.py +0 -0
  377. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  378. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/echo_trap.py +0 -0
  379. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/encoding.py +0 -0
  380. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/energy.py +0 -0
  381. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/env_lock.py +0 -0
  382. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/errors.py +0 -0
  383. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/eval_design.py +0 -0
  384. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  385. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  386. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/expectations.py +0 -0
  387. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/fetch_examples.py +0 -0
  388. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/flash_attn.py +0 -0
  389. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/fp8.py +0 -0
  390. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/freeze.py +0 -0
  391. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/fsdp.py +0 -0
  392. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  393. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/galore.py +0 -0
  394. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/gguf_quant.py +0 -0
  395. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/gpu.py +0 -0
  396. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/gpu_monitor.py +0 -0
  397. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/graceful_save.py +0 -0
  398. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/grad_accum.py +0 -0
  399. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  400. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/grpo_long_context.py +0 -0
  401. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/grpo_variants.py +0 -0
  402. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/hardware_fit.py +0 -0
  403. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/harm_probe.py +0 -0
  404. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/hf.py +0 -0
  405. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/hf_space.py +0 -0
  406. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/hubs.py +0 -0
  407. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ingest_sources.py +0 -0
  408. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/integrations.py +0 -0
  409. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/interference.py +0 -0
  410. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/interference_live.py +0 -0
  411. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/irt.py +0 -0
  412. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/iterative_dpo.py +0 -0
  413. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  414. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/kernel_picker.py +0 -0
  415. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/kv_cache.py +0 -0
  416. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/launcher.py +0 -0
  417. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/license_advisor.py +0 -0
  418. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/license_matrix.py +0 -0
  419. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/liger.py +0 -0
  420. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/live_eval.py +0 -0
  421. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/llama_proxy.py +0 -0
  422. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/llama_server_timings.py +0 -0
  423. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/local_rl.py +0 -0
  424. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loftq_init.py +0 -0
  425. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/log_level.py +0 -0
  426. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/long_context.py +0 -0
  427. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/longlora.py +0 -0
  428. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loop_budget.py +0 -0
  429. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loop_daemon.py +0 -0
  430. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loop_iteration.py +0 -0
  431. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loop_stages.py +0 -0
  432. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/loop_state.py +0 -0
  433. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/lr_finder.py +0 -0
  434. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/lr_groups.py +0 -0
  435. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/magpie.py +0 -0
  436. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/metrics.py +0 -0
  437. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/mii.py +0 -0
  438. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/minillm.py +0 -0
  439. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/mix_proxy.py +0 -0
  440. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/mixed_precision.py +0 -0
  441. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/mlx.py +0 -0
  442. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/moe.py +0 -0
  443. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/moe_quant.py +0 -0
  444. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/mole_routing.py +0 -0
  445. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/multipack.py +0 -0
  446. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/multipack_sampler.py +0 -0
  447. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/multipack_trainer.py +0 -0
  448. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/namespace_pin.py +0 -0
  449. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/neat_packing.py +0 -0
  450. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ngram_spec.py +0 -0
  451. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/nlg_metrics.py +0 -0
  452. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ollama.py +0 -0
  453. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/onboarding.py +0 -0
  454. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  455. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/paths.py +0 -0
  456. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/peft_builder.py +0 -0
  457. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/peft_patches.py +0 -0
  458. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/peft_wiring.py +0 -0
  459. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/persona_hub.py +0 -0
  460. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/pipeline.py +0 -0
  461. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/preference_combine.py +0 -0
  462. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/prm.py +0 -0
  463. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/probe_kernel.py +0 -0
  464. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/probe_pack.py +0 -0
  465. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/profiler.py +0 -0
  466. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/profiling.py +0 -0
  467. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  468. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/prompt_compile.py +0 -0
  469. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/prompt_distill.py +0 -0
  470. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/prune_prompt.py +0 -0
  471. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/qat.py +0 -0
  472. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/qr_url.py +0 -0
  473. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/quality.py +0 -0
  474. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/quant_menu.py +0 -0
  475. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ra_dit.py +0 -0
  476. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/reasoning_effort.py +0 -0
  477. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/reasoning_parser.py +0 -0
  478. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/recipe_dag.py +0 -0
  479. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/recipe_run.py +0 -0
  480. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/registry.py +0 -0
  481. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/relora.py +0 -0
  482. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/replay.py +0 -0
  483. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/repro_receipt.py +0 -0
  484. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/reward_hacking.py +0 -0
  485. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ring_attention.py +0 -0
  486. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  487. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/run_cost.py +0 -0
  488. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/sae_diff.py +0 -0
  489. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/save_formats.py +0 -0
  490. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/server_tools.py +0 -0
  491. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/sglang.py +0 -0
  492. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/shortcuts.py +0 -0
  493. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/signing.py +0 -0
  494. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/sleeper_probe.py +0 -0
  495. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/soup_lock.py +0 -0
  496. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/spec_pairing.py +0 -0
  497. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/spike_recovery.py +0 -0
  498. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/sse_train_stream.py +0 -0
  499. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/strict_safetensors.py +0 -0
  500. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/structured_output.py +0 -0
  501. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/sweep_config.py +0 -0
  502. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/tail_latency.py +0 -0
  503. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/terraform_plan.py +0 -0
  504. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/tool_outputs.py +0 -0
  505. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/topology.py +0 -0
  506. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/tracing.py +0 -0
  507. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/trackers.py +0 -0
  508. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/train_event_buffer.py +0 -0
  509. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/trainer_plugins.py +0 -0
  510. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/trust_remote.py +0 -0
  511. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/truth_probe.py +0 -0
  512. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/tts.py +0 -0
  513. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/tunability.py +0 -0
  514. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/ui_env.py +0 -0
  515. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/uld.py +0 -0
  516. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/unlearning_eval.py +0 -0
  517. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/unsloth.py +0 -0
  518. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/v028_features.py +0 -0
  519. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/vector_bank.py +0 -0
  520. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/vllm.py +0 -0
  521. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/vscode_setup.py +0 -0
  522. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/warmup.py +0 -0
  523. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/webhooks.py +0 -0
  524. {soup_cli-0.71.8 → soup_cli-0.71.10}/src/soup_cli/utils/why.py +0 -0
  525. {soup_cli-0.71.8 → soup_cli-0.71.10}/templates/chat.yaml +0 -0
  526. {soup_cli-0.71.8 → soup_cli-0.71.10}/templates/code.yaml +0 -0
  527. {soup_cli-0.71.8 → soup_cli-0.71.10}/templates/medical.yaml +0 -0
  528. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/__init__.py +0 -0
  529. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/conftest.py +0 -0
  530. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/qa/v053_qa.md +0 -0
  531. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/qa/v0716_qa.md +0 -0
  532. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_adapters.py +0 -0
  533. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_advanced_peft.py +0 -0
  534. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_assistant_mask.py +0 -0
  535. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_audio.py +0 -0
  536. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_auto_tuning.py +0 -0
  537. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_autopilot.py +0 -0
  538. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_awq_gptq_export.py +0 -0
  539. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_batch_probe.py +0 -0
  540. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_bco.py +0 -0
  541. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_bench.py +0 -0
  542. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_brain_rot_multilingual.py +0 -0
  543. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_bugfixes.py +0 -0
  544. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_callback.py +0 -0
  545. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_cans.py +0 -0
  546. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_chat.py +0 -0
  547. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_chat_template.py +0 -0
  548. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_cli.py +0 -0
  549. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_cli_subprocess.py +0 -0
  550. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_config.py +0 -0
  551. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_cost.py +0 -0
  552. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_crash_reporter.py +0 -0
  553. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_curriculum.py +0 -0
  554. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_data.py +0 -0
  555. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_data_augment.py +0 -0
  556. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_data_sample.py +0 -0
  557. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_data_split.py +0 -0
  558. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_data_tools.py +0 -0
  559. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_dataset_hub.py +0 -0
  560. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_dataset_registry.py +0 -0
  561. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_deepspeed.py +0 -0
  562. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_deploy_ollama.py +0 -0
  563. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_diff.py +0 -0
  564. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_display.py +0 -0
  565. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_doctor.py +0 -0
  566. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_dpo_example.py +0 -0
  567. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_dpo_variants.py +0 -0
  568. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_embedding.py +0 -0
  569. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_errors.py +0 -0
  570. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_eval.py +0 -0
  571. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_eval_gate.py +0 -0
  572. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_eval_platform.py +0 -0
  573. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_export.py +0 -0
  574. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_formats.py +0 -0
  575. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_fp8_recipe.py +0 -0
  576. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_freeze_training.py +0 -0
  577. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_generate.py +0 -0
  578. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_gpu.py +0 -0
  579. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_grpo.py +0 -0
  580. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_hf_integration.py +0 -0
  581. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_infer.py +0 -0
  582. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_inference_advanced.py +0 -0
  583. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_init.py +0 -0
  584. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ipo.py +0 -0
  585. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_jinja_analyzer.py +0 -0
  586. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_kto.py +0 -0
  587. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_loader.py +0 -0
  588. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_log_level.py +0 -0
  589. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_loss_watchdog.py +0 -0
  590. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_merge.py +0 -0
  591. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_migrate.py +0 -0
  592. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_mlx_backend.py +0 -0
  593. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_moe.py +0 -0
  594. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_multi_adapter.py +0 -0
  595. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_multi_gpu.py +0 -0
  596. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_multipack_config.py +0 -0
  597. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_multipack_invariants.py +0 -0
  598. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_multipack_sampler.py +0 -0
  599. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_neat_packing.py +0 -0
  600. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_neftune_rslora.py +0 -0
  601. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_onnx_tensorrt_export.py +0 -0
  602. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_orpo.py +0 -0
  603. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_packing.py +0 -0
  604. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_a_wave1.py +0 -0
  605. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_a_wave2.py +0 -0
  606. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_b.py +0 -0
  607. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_c.py +0 -0
  608. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_d.py +0 -0
  609. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_e.py +0 -0
  610. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_part_f_hardening.py +0 -0
  611. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_peft_methods.py +0 -0
  612. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_peft_patches.py +0 -0
  613. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_performance.py +0 -0
  614. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_pissa_init.py +0 -0
  615. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ppo.py +0 -0
  616. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_preference_dispatcher.py +0 -0
  617. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_preference_multi.py +0 -0
  618. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_preference_multi_runtime.py +0 -0
  619. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_pretrain.py +0 -0
  620. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_profile.py +0 -0
  621. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_profiling.py +0 -0
  622. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_progress.py +0 -0
  623. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_push.py +0 -0
  624. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_qat.py +0 -0
  625. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_quality_filter.py +0 -0
  626. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_quant_check.py +0 -0
  627. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_quant_menu.py +0 -0
  628. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_quickstart.py +0 -0
  629. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_rank_pattern.py +0 -0
  630. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_recipes.py +0 -0
  631. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_recipes_v031.py +0 -0
  632. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_refusal_multilingual.py +0 -0
  633. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_registry.py +0 -0
  634. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_relora.py +0 -0
  635. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_replay.py +0 -0
  636. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_resume.py +0 -0
  637. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_rlvr.py +0 -0
  638. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_run_cost.py +0 -0
  639. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_runs.py +0 -0
  640. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_serve.py +0 -0
  641. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_server_generate.py +0 -0
  642. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_sglang_serve.py +0 -0
  643. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_simpo.py +0 -0
  644. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_smoke_train.py +0 -0
  645. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_speculative_decoding.py +0 -0
  646. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_sweep.py +0 -0
  647. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_synth_data_pro.py +0 -0
  648. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_templates_yaml.py +0 -0
  649. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_tensorboard.py +0 -0
  650. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_tool_calling.py +0 -0
  651. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_trace_to_pref.py +0 -0
  652. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_tracker.py +0 -0
  653. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_trainer_coverage_v035.py +0 -0
  654. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_trainer_init.py +0 -0
  655. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_training_intelligence.py +0 -0
  656. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_training_speed.py +0 -0
  657. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_trust_remote_code.py +0 -0
  658. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_tui.py +0 -0
  659. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ui.py +0 -0
  660. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ui_chat.py +0 -0
  661. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ui_config_builder.py +0 -0
  662. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ui_live_monitor.py +0 -0
  663. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_ui_metrics.py +0 -0
  664. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_unsloth.py +0 -0
  665. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0401_part_c.py +0 -0
  666. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0401_part_d.py +0 -0
  667. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0401_part_e.py +0 -0
  668. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0402_part_a.py +0 -0
  669. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0402_part_b.py +0 -0
  670. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0403_part_a.py +0 -0
  671. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0403_part_b.py +0 -0
  672. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0403_part_c.py +0 -0
  673. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0404_part_a.py +0 -0
  674. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0404_part_b.py +0 -0
  675. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0405_part_a.py +0 -0
  676. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0406_part_a.py +0 -0
  677. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0410_part_a.py +0 -0
  678. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0410_part_b.py +0 -0
  679. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0410_part_c.py +0 -0
  680. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0420.py +0 -0
  681. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0430_part_a.py +0 -0
  682. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0430_part_b.py +0 -0
  683. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0430_part_c.py +0 -0
  684. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0430_part_d.py +0 -0
  685. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0440_part_a.py +0 -0
  686. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0440_part_b.py +0 -0
  687. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0440_part_c.py +0 -0
  688. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0440_part_d.py +0 -0
  689. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0440_review_followups.py +0 -0
  690. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0450.py +0 -0
  691. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0460_part_a.py +0 -0
  692. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0460_part_b.py +0 -0
  693. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0470_part_a.py +0 -0
  694. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0470_part_b.py +0 -0
  695. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0480_part_a.py +0 -0
  696. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0480_part_b.py +0 -0
  697. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0490.py +0 -0
  698. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0500_part_a.py +0 -0
  699. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0500_part_b.py +0 -0
  700. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0500_part_c.py +0 -0
  701. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0500_part_d.py +0 -0
  702. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0500_part_e.py +0 -0
  703. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0510.py +0 -0
  704. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0520.py +0 -0
  705. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0530.py +0 -0
  706. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v05310.py +0 -0
  707. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v05311.py +0 -0
  708. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0531_109.py +0 -0
  709. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0531_139.py +0 -0
  710. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0531_142.py +0 -0
  711. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0531_82.py +0 -0
  712. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0532.py +0 -0
  713. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0533.py +0 -0
  714. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0534.py +0 -0
  715. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0535.py +0 -0
  716. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0536.py +0 -0
  717. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0537.py +0 -0
  718. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0538.py +0 -0
  719. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0539.py +0 -0
  720. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0540.py +0 -0
  721. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0550.py +0 -0
  722. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0550_followups.py +0 -0
  723. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0570_part_a.py +0 -0
  724. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0570_part_b.py +0 -0
  725. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0570_part_c.py +0 -0
  726. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0570_part_d.py +0 -0
  727. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0580.py +0 -0
  728. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0590.py +0 -0
  729. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_a.py +0 -0
  730. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_b.py +0 -0
  731. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_c.py +0 -0
  732. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_d.py +0 -0
  733. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_e.py +0 -0
  734. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0600_part_f.py +0 -0
  735. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0610_part_b.py +0 -0
  736. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0610_part_d.py +0 -0
  737. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0610_part_e.py +0 -0
  738. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_part_a.py +0 -0
  739. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_part_b.py +0 -0
  740. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0620_part_d.py +0 -0
  741. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_followups.py +0 -0
  742. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_part_a.py +0 -0
  743. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_part_b.py +0 -0
  744. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_part_c.py +0 -0
  745. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_part_d.py +0 -0
  746. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0630_part_e.py +0 -0
  747. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0631_206.py +0 -0
  748. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_followups.py +0 -0
  749. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_a.py +0 -0
  750. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_b.py +0 -0
  751. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_c.py +0 -0
  752. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_d.py +0 -0
  753. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_e.py +0 -0
  754. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0640_part_f.py +0 -0
  755. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_followups.py +0 -0
  756. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_part_a.py +0 -0
  757. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_part_b.py +0 -0
  758. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_part_c.py +0 -0
  759. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_part_d.py +0 -0
  760. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0650_part_e.py +0 -0
  761. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_cli.py +0 -0
  762. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_followups.py +0 -0
  763. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_part_a.py +0 -0
  764. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_part_b.py +0 -0
  765. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_part_c.py +0 -0
  766. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_part_d.py +0 -0
  767. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0660_part_e.py +0 -0
  768. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_followups.py +0 -0
  769. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_a.py +0 -0
  770. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_b.py +0 -0
  771. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_c.py +0 -0
  772. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_d.py +0 -0
  773. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_e.py +0 -0
  774. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0670_part_f.py +0 -0
  775. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_followups.py +0 -0
  776. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_part_a.py +0 -0
  777. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_part_b.py +0 -0
  778. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_part_c.py +0 -0
  779. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_part_d.py +0 -0
  780. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0680_part_e.py +0 -0
  781. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0690_part_a.py +0 -0
  782. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0690_part_b.py +0 -0
  783. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0690_part_c.py +0 -0
  784. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0690_part_d.py +0 -0
  785. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0690_part_e.py +0 -0
  786. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_a.py +0 -0
  787. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_b.py +0 -0
  788. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_c.py +0 -0
  789. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_d.py +0 -0
  790. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_e.py +0 -0
  791. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0700_part_f.py +0 -0
  792. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0712.py +0 -0
  793. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0713.py +0 -0
  794. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0714.py +0 -0
  795. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0715.py +0 -0
  796. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0716.py +0 -0
  797. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0717.py +0 -0
  798. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_v0718.py +0 -0
  799. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_validator.py +0 -0
  800. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_vision.py +0 -0
  801. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_vllm_serve.py +0 -0
  802. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_why.py +0 -0
  803. {soup_cli-0.71.8 → soup_cli-0.71.10}/tests/test_windows_encoding.py +0 -0
@@ -12,6 +12,86 @@ reproducing 70+ versions of notes.
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.71.10] - 2026-06-03
16
+
17
+ ### Added
18
+ - **RAG family — live wiring** (closes #199, #200, #201, #202). The four
19
+ retrieval / steering surfaces that shipped schema-only in v0.62.0 are now
20
+ real, validated on SmolLM2-135M.
21
+ - **RAFT span-mask training is live** (#199). `data.format: raft` rows
22
+ (`{query, golden_doc, distractor_docs, answer}`) now train answer-only: the
23
+ prompt span is masked to `-100` and each document is labelled `[doc-N]` so
24
+ the model learns to cite the supporting document. Documents are shuffled
25
+ reproducibly (`data.raft_shuffle_seed`). Rows whose prompt fills
26
+ `max_length` (answer fully truncated) are dropped with a warning rather than
27
+ silently shrinking the effective dataset.
28
+ - **`soup ra-dit` — one-shot two-stage orchestrator** (#200). Trains the
29
+ retriever (stage 1, embedding/contrastive) then the generator (stage 2,
30
+ RAFT-SFT) in a single command, recording the trained retriever as the
31
+ generator's paired retriever. A `soup train` of a generator-stage config
32
+ with no retriever model set now auto-links the most-recent RA-DIT retriever
33
+ run from the Registry. `--plan-only` validates both configs without
34
+ training; `--retriever-model` overrides the auto-link.
35
+ - **`soup steer train` / `apply` + `soup serve --steer` are live** (#201).
36
+ Fit a CAA (contrastive activation addition), ITI (inference-time
37
+ intervention) or RepE (representation-engineering PCA) control vector from
38
+ `{positive, negative}` contrastive pairs, persist it as a safetensors +
39
+ config artifact, and apply it at decode time via a forward hook
40
+ (`soup serve --steer <name> --steer-strength <s>`).
41
+ - **`soup eval citation` + citation-span loss boost are live** (#202). Score
42
+ citation precision / recall / F1 over `{predicted, expected_ids}` or RAFT
43
+ rows (`--shuffle-seed` aligns the golden `[doc-N]` id with what the model
44
+ saw at train time). When `citation_faithful: true`, bracketed `[doc-id]`
45
+ spans in the answer get a boosted per-token loss weight. A new `citation`
46
+ failure mode is available in `soup diagnose`.
47
+
48
+ ## [0.71.9] - 2026-06-03
49
+
50
+ ### Added
51
+ - **Knowledge edit + unlearn — live wiring** (closes #193, #194, #196, #197,
52
+ #203). The v0.61.0 / v0.62.0 schema-only stubs are now live, validated on
53
+ SmolLM2-135M.
54
+ - **`soup edit set` (ROME / MEMIT / AlphaEdit) is live** (#194). New
55
+ `soup_cli/utils/edit_kernels.py` ships covariance-free rank-1 weight-edit
56
+ kernels: ROME (single-layer `W += δ·kᵀ/‖k‖²`), MEMIT (residual distributed
57
+ across a layer band), AlphaEdit (ROME update projected orthogonal to the
58
+ down-proj's top singular direction). `apply_edit` loads the model, optimises
59
+ the target residual, applies the rank-1 update, and optionally saves with
60
+ cwd-containment + symlink rejection. `--output`, `--device`, `--governor/
61
+ --no-governor` flags added. On a tiny model a ROME edit moved
62
+ `P("Lyon" | "The capital of France is")` from 0.0016 → 0.96.
63
+ - **`soup edit diff` live before/after generation** (#194). Pass
64
+ `--before-model` + `--after-model` (+ `--probes`) to generate completions
65
+ through both models and surface the probes whose output changed.
66
+ - **EditGovernor SQLite persistence + cross-process locking** (#196). New
67
+ `EditGovernorStore` (mirrors `namespace_pin.NamespacePinStore` —
68
+ $HOME/$CWD/$TMPDIR containment, TOCTOU symlink rejection, WAL +
69
+ busy_timeout, `fcntl`/`msvcrt` sidecar lock, POSIX 0600). `save_governor` /
70
+ `load_governor` / `default_governor_db_path` (env override
71
+ `SOUP_EDIT_GOVERNOR_DB`) persist per-base-model edit-count + verdict across
72
+ separate `soup edit set` runs.
73
+ - **`apply_edit` consults the EditGovernor automatically** (#197). When a
74
+ governor is supplied, `check_can_edit()` runs BEFORE the model load (refusing
75
+ on norm blowup / edit cap) and `record_edit()` runs AFTER with the measured
76
+ Frobenius delta.
77
+ - **Live GRACE codebook** (#203). `GraceCodebook` (epsilon-ball nearest-key
78
+ lookup), `apply_grace_edit` (captures a residual key + optimises a value +
79
+ appends to a codebook sidecar), `save_codebook` / `load_codebook` (atomic,
80
+ cwd-contained, symlink-rejected), `install_grace_hook` (decode-time residual
81
+ substitution). New `edited_model` / `grace_codebook` Registry artifact kinds.
82
+ - **`soup train --task unlearn` is live (NPO / SimNPO / RMU)** (#193). New
83
+ `soup_cli/utils/unlearn_kernels.py` (NPO `(2/β)·mean(-logσ(-β(πlp-reflp)))`,
84
+ length-normalised SimNPO, RMU representation steering) + a self-contained
85
+ `UnlearnTrainerWrapper` loop loading a LoRA policy, a frozen reference
86
+ (NPO/RMU), and forget/retain JSONL datasets. NPO/SimNPO forget loss
87
+ decreased on the tiny-model smoke. Warns when run without a retain set.
88
+
89
+ ### Security
90
+ - `_save_edited_model` / `UnlearnTrainerWrapper` output dirs + `save_codebook`
91
+ / `load_codebook` + `_load_unlearn_rows` enforce cwd-containment, raw-path
92
+ symlink rejection (TOCTOU), null-byte rejection, and file-size / per-line
93
+ caps. `apply_grace_edit` honours the governor for direct callers.
94
+
15
95
  ## [0.71.8] - 2026-06-03
16
96
 
17
97
  ### Added
@@ -120,7 +120,7 @@ src/soup_cli/
120
120
  templates/ - 17 built-in soup.yaml templates (YAML + manifest.json) with load_template loader (v0.39.0, +bco v0.40.0)
121
121
  ui/ - Web UI (FastAPI + HTML/JS SPA)
122
122
 
123
- tests/ - Test suite (278 files, 12917 tests)
123
+ tests/ - Test suite (280 files, 13142 tests)
124
124
  examples/ - Real-world config examples and datasets
125
125
  ```
126
126
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: soup-cli
3
- Version: 0.71.8
3
+ Version: 0.71.10
4
4
  Summary: Fine-tune 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
@@ -183,20 +183,21 @@ infrastructure instead of improving models. Soup fixes that.
183
183
 
184
184
  ## What's New
185
185
 
186
- **v0.71.8Probes & SAE.** The activation-probe surfaces ship real weights, live SAE downloads,
187
- and an end-to-end capture diff pipeline:
188
-
189
- - **`soup probe truth` / `soup probe harm`** TruthfulQA-style honesty and HarmBench-style misuse
190
- activation probes (6 bundled bases each, 5% / 20% verdict bands). `--weights` loads a real
191
- calibrated probe; without it the bundled deterministic fallback is used.
192
- - **`soup probe sleeper --weights <w.npz|.npy|.safetensors>`** load a real calibrated sleeper
193
- probe direction instead of the synthetic fallback (cwd-contained, `allow_pickle=False`).
194
- - **`soup probe sae-diff <repo> --auto-download`** fetch an allowlisted SAE from the HF Hub into
195
- `~/.soup/sae-cache/` (validated before any network call) and diff pre/post activations.
196
- - **`soup probe interference --measure <eval.jsonl> --base-model <m> --adapter a=path ...`** —
197
- auto-measure the N×N adapter-interference matrix by actually loading the base + each LoRA adapter.
198
- - **`soup train --capture-activations <layer> --capture-prompts <jsonl>`** a post-training hook
199
- writes an SAE-diff-ready per-token activation snapshot. Validated end-to-end on SmolLM2-135M.
186
+ **v0.71.10RAG family (live).** The retrieval-augmented fine-tuning, steering, and citation
187
+ surfaces are now real, validated on SmolLM2-135M:
188
+
189
+ - **`data.format: raft`** RAFT (retrieval-augmented fine-tuning): train on a query + golden
190
+ document mixed with distractors, answer-only loss, each doc labelled `[doc-N]` so the model
191
+ learns to cite the supporting source and ignore noise.
192
+ - **`soup ra-dit`** one-shot two-stage orchestrator: trains the retriever then the generator
193
+ and records the trained retriever as the generator's paired retriever. A `soup train` of a
194
+ generator stage auto-links the latest RA-DIT retriever from the Registry.
195
+ - **`soup steer train --method caa|iti|repe` + `soup serve --steer <name>`** — fit a
196
+ contrastive-activation / inference-time-intervention / representation-engineering control
197
+ vector from `{positive, negative}` pairs and apply it at decode time via a forward hook.
198
+ - **`soup eval citation`** score citation precision / recall / F1 over predictions or RAFT
199
+ rows; with `citation_faithful: true`, `[doc-id]` spans get a boosted per-token loss weight.
200
+ A new `citation` failure mode joins `soup diagnose`.
200
201
 
201
202
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
202
203
 
@@ -49,20 +49,21 @@ infrastructure instead of improving models. Soup fixes that.
49
49
 
50
50
  ## What's New
51
51
 
52
- **v0.71.8Probes & SAE.** The activation-probe surfaces ship real weights, live SAE downloads,
53
- and an end-to-end capture diff pipeline:
54
-
55
- - **`soup probe truth` / `soup probe harm`** TruthfulQA-style honesty and HarmBench-style misuse
56
- activation probes (6 bundled bases each, 5% / 20% verdict bands). `--weights` loads a real
57
- calibrated probe; without it the bundled deterministic fallback is used.
58
- - **`soup probe sleeper --weights <w.npz|.npy|.safetensors>`** load a real calibrated sleeper
59
- probe direction instead of the synthetic fallback (cwd-contained, `allow_pickle=False`).
60
- - **`soup probe sae-diff <repo> --auto-download`** fetch an allowlisted SAE from the HF Hub into
61
- `~/.soup/sae-cache/` (validated before any network call) and diff pre/post activations.
62
- - **`soup probe interference --measure <eval.jsonl> --base-model <m> --adapter a=path ...`** —
63
- auto-measure the N×N adapter-interference matrix by actually loading the base + each LoRA adapter.
64
- - **`soup train --capture-activations <layer> --capture-prompts <jsonl>`** a post-training hook
65
- writes an SAE-diff-ready per-token activation snapshot. Validated end-to-end on SmolLM2-135M.
52
+ **v0.71.10RAG family (live).** The retrieval-augmented fine-tuning, steering, and citation
53
+ surfaces are now real, validated on SmolLM2-135M:
54
+
55
+ - **`data.format: raft`** RAFT (retrieval-augmented fine-tuning): train on a query + golden
56
+ document mixed with distractors, answer-only loss, each doc labelled `[doc-N]` so the model
57
+ learns to cite the supporting source and ignore noise.
58
+ - **`soup ra-dit`** one-shot two-stage orchestrator: trains the retriever then the generator
59
+ and records the trained retriever as the generator's paired retriever. A `soup train` of a
60
+ generator stage auto-links the latest RA-DIT retriever from the Registry.
61
+ - **`soup steer train --method caa|iti|repe` + `soup serve --steer <name>`** — fit a
62
+ contrastive-activation / inference-time-intervention / representation-engineering control
63
+ vector from `{positive, negative}` pairs and apply it at decode time via a forward hook.
64
+ - **`soup eval citation`** score citation precision / recall / F1 over predictions or RAFT
65
+ rows; with `citation_faithful: true`, `[doc-id]` spans get a boosted per-token loss weight.
66
+ A new `citation` failure mode joins `soup diagnose`.
66
67
 
67
68
  Full history: [CHANGELOG.md](CHANGELOG.md) &middot; [GitHub Releases](https://github.com/MakazhanAlpamys/Soup/releases).
68
69
 
@@ -139,21 +139,26 @@ State lives in `.soup/loop.yaml` (atomic write, cwd-contained, symlink-rejected)
139
139
  Surgical factual patches WITHOUT a full fine-tuning loop. Hospital data team correcting a misattributed drug interaction, lab fixing a wrong historical date, security team responding to a hallucinated CVE — all one CLI invocation.
140
140
 
141
141
  ```bash
142
- # Plan-only mode validates the request + prints the resolved EditPlan + exits 0.
142
+ # Live edit: optimises a residual + applies a rank-1 weight update, then saves.
143
143
  soup edit set \
144
- --base meta-llama/Llama-3.1-8B-Instruct \
144
+ --base HuggingFaceTB/SmolLM2-135M \
145
145
  --method rome \
146
- --subject "Paris is the capital of France" \
146
+ --subject "The capital of France is" \
147
147
  --target "Lyon" \
148
- --plan-only
148
+ --output ./edited --device cuda
149
+
150
+ # Plan-only mode validates the request + prints the resolved EditPlan + exits 0.
151
+ soup edit set --base ./model --method rome --subject "..." --target "..." --plan-only
149
152
 
150
- # Diff what the model "knew" before vs after the edit.
151
- soup edit diff <run-id-before> <run-id-after> --probes probes.jsonl --output diff.json
153
+ # Diff what the model says before vs after the edit (live generation).
154
+ soup edit diff before after \
155
+ --before-model ./base --after-model ./edited \
156
+ --probes probes.jsonl --output diff.json
152
157
  ```
153
158
 
154
- Sequential edit governor auto-switches **ROME AlphaEdit** at edit #10 (configurable) AND on detected norm-blowup (`||W - W_base||_F` over threshold). The governor refuses further edits past the per-base-model cap so a runaway script can't quietly corrupt your checkpoint.
159
+ The kernels are a covariance-free (`C = I`) variant of the ROME family well-defined, tractable on a 4 GB box, and validated on SmolLM2-135M (a ROME edit moved `P("Lyon" | "The capital of France is")` from 0.0016 0.96). **ROME** edits a single layer; **MEMIT** distributes the residual across a layer band; **AlphaEdit** projects the update orthogonal to the down-proj's top singular direction.
155
160
 
156
- The live ROME / MEMIT / AlphaEdit kernel + before/after generation in `edit diff` land in the next patch; `--plan-only` and the schema surface ship today so soup.yaml and CI invocations are stable.
161
+ The sequential edit governor is persisted (SQLite, cross-process-locked, `SOUP_EDIT_GOVERNOR_DB` override) so the per-base-model edit count + norm-blowup verdict survive across separate `soup edit set` runs. `soup edit set` consults it automatically: it refuses BEFORE the model load past the per-base cap or after a BLOWUP verdict, and records the measured `||ΔW||_F` after each edit. Pass `--no-governor` to opt out. `--registry-id <id>` attaches the edited model (or GRACE codebook) into the Registry lineage.
157
162
 
158
163
 
159
164
  ## Activation Steering (`soup steer`)
@@ -179,6 +184,8 @@ soup steer list
179
184
 
180
185
  Steering names are validated against a strict regex (`^[A-Za-z0-9][A-Za-z0-9._\-]{0,127}$` — no path separators, no shell metacharacters); strength is bounded `|s| <= 10.0`. The trained vectors land in the Soup Registry under the `steering_vector` artifact kind so lineage is preserved.
181
186
 
187
+ As of v0.71.10 the fit and the decode hook are **live** (validated on SmolLM2-135M): `soup steer train` captures residual-stream activations (CAA / RepE) or per-head `o_proj`-input activations (ITI) on the contrastive pairs, computes the control vector, and persists `steering_vector.safetensors` + `steering_config.json`. `soup serve --steer <name>` installs a forward hook on the loaded model that adds `strength × vector` at decode time (transformers backend; `--steer` is rejected with a clear error on vLLM/SGLang). RepE / ITI need at least two contrastive pairs; CAA works from one.
188
+
182
189
 
183
190
  ## GRACE Codebook — Lifelong Knowledge Edits
184
191
 
@@ -197,7 +204,7 @@ training:
197
204
  grace_codebook_dim: 768 # residual-stream width
198
205
  ```
199
206
 
200
- `grace` joins the existing `rome` / `memit` / `alphaedit` allowlist on `soup edit set`; the v0.61.0 sequential edit governor still gates the call when the per-base-model edit count or norm-blowup verdict trips.
207
+ `grace` joins the existing `rome` / `memit` / `alphaedit` allowlist on `soup edit set`; the sequential edit governor still gates the call when the per-base-model edit count or norm-blowup verdict trips. GRACE is live: `soup edit set --method grace --output ./ckpt` captures the residual key at the subject's last token, optimises a replacement value, and appends a `(key, value)` triple to a `grace_codebook.json` sidecar (atomic, cwd-contained). At inference the codebook is applied via a forward hook that substitutes the residual whenever it falls within an epsilon ball of a stored key — so the base weights are never modified and thousands of edits survive without norm blowup.
201
208
 
202
209
 
203
210
  ## Model Registry & Lineage
@@ -168,8 +168,15 @@ soup can pack --entry-id <id> --out r.can --attest <statement.json> Embed in-to
168
168
  soup audit-log tail / rotate Tail / rotate the per-command HIPAA/SOC2 audit log (~/.soup/audit.jsonl)
169
169
  soup --no-audit-log <cmd> / SOUP_NO_AUDIT_LOG=1 Opt out of the per-command audit line
170
170
  soup eval unlearning <run-id> --benchmark tofu|muse|wmdp Forget Quality + Model Utility + PrivLeak verdict
171
- soup edit set --base <m> --method rome|memit|alphaedit --subject "..." --target "..." Surgical knowledge edit (--plan-only available)
172
- soup edit diff <before-run> <after-run> --probes p.jsonl Knowledge-injection diff visualizer
171
+ soup edit set --base <m> --method rome|memit|alphaedit|grace --subject "..." --target "..." [--output <dir>] [--device cpu] [--governor/--no-governor] [--registry-id <id>] Live surgical knowledge edit (--plan-only available)
172
+ soup edit diff <before-run> <after-run> --probes p.jsonl [--before-model <m> --after-model <m>] Knowledge-injection diff (live before/after generation when both models given)
173
+ soup train --task unlearn NPO/SimNPO/RMU unlearning from data.forget_set (+ optional data.retain_set)
174
+ soup train # data.format='raft' Answer-only span-mask RAFT training (golden+distractor docs, [doc-N] citations); generator-stage configs auto-link the latest RA-DIT retriever
175
+ soup ra-dit --retriever-config <r.yaml> --generator-config <g.yaml> [--retriever-model <m>] [--plan-only] One-shot two-stage RA-DIT: train retriever → record pairing → train generator
176
+ soup eval citation <data> [--style bracket|inline|footnote] [--shuffle-seed N] [--output o.json] Citation precision/recall/F1 over predictions or RAFT rows
177
+ soup steer train --base <m> --method caa|iti|repe --name <id> --pairs <jsonl> Fit a CAA/ITI/RepE activation-steering vector from {positive, negative} pairs
178
+ soup steer apply --name <id> --strength <s> Preview a stored steering vector; soup steer list lists them
179
+ soup serve --steer <name> [--steer-strength <s>] Apply a steering vector at decode time via a forward hook (transformers backend)
173
180
  soup ingest --source langfuse|langsmith|helicone|openpipe|otel|openai-stored --logs <jsonl> Universal trace importer (6 SaaS adapters → normalised JSONL)
174
181
  soup prune-prompt --input <jsonl> --output <jsonl> --min-frequency 0.95 Detect + strip shared system-prompt prefix
175
182
  soup prune-prompt ... --tokenizer <id-or-path> Tokenizer-aware prefix detection (decodes remaining ids, boundary-safe)
@@ -253,7 +253,7 @@ Default threshold 0.2 matches v0.43.0 KL-delta quant-check thresholds. Webhooks
253
253
 
254
254
  ## Diagnose (Post-Training Report Card)
255
255
 
256
- `soup diagnose` scores six independent failure modes for a trained adapter and renders an OK / MINOR / MAJOR verdict per mode plus an overall headline — same taxonomy as Quant-Lobotomy. Useful for catching adapter regressions that a loss curve cannot distinguish from a healthy run.
256
+ `soup diagnose` scores seven independent failure modes for a trained adapter and renders an OK / MINOR / MAJOR verdict per mode plus an overall headline — same taxonomy as Quant-Lobotomy. Useful for catching adapter regressions that a loss curve cannot distinguish from a healthy run.
257
257
 
258
258
  ```bash
259
259
  # Neutral report (no model load — runs as a sanity check)
@@ -279,7 +279,7 @@ soup diagnose my-run-id --output diag.json --attach-to-registry abc123
279
279
  a built-in probe set; `format` only fires when the dataset's own targets look like JSON;
280
280
  `contamination` stays neutral unless a benchmark corpus is supplied. Validated on SmolLM2-135M.
281
281
 
282
- **Six failure-mode probes:**
282
+ **Seven failure-mode probes:**
283
283
 
284
284
  | Mode | What it catches | Score range |
285
285
  |------|-----------------|-------------|
@@ -289,6 +289,7 @@ a built-in probe set; `format` only fires when the dataset's own targets look li
289
289
  | `mode_collapse` | Diversity collapse at T=0 and T=1 | pairwise n-gram Jaccard distance |
290
290
  | `memorization` | Verbatim training-prefix echo on partial prompts | 1 − echo_rate |
291
291
  | `contamination` | Training data overlapping public benchmarks | 1 − contamination_rate |
292
+ | `citation` | RAFT model stopped citing the supporting `[doc-N]` (v0.71.10) | fraction of answers citing the golden doc |
292
293
 
293
294
  **Verdict pill colours:** OK (≥ 0.85) green / MINOR (≥ 0.60) amber / MAJOR (< 0.60) red. `soup diagnose` exits 2 when the overall verdict is MAJOR — wire into CI to fail the build on regression.
294
295
 
@@ -101,22 +101,27 @@ GDPR right-to-be-forgotten + CSAM/PII leak response, productized. Three method b
101
101
 
102
102
  ```yaml
103
103
  # unlearn.yaml
104
- base: meta-llama/Llama-3.1-8B-Instruct
104
+ base: HuggingFaceTB/SmolLM2-135M
105
105
  task: unlearn
106
106
  data:
107
107
  train: traces.jsonl
108
- forget_set: gdpr_deletion_set.jsonl
109
- retain_set: capability_anchors.jsonl
108
+ forget_set: gdpr_deletion_set.jsonl # rows to unlearn (messages / prompt+completion / text)
109
+ retain_set: capability_anchors.jsonl # optional — anchors general capability
110
110
  training:
111
111
  unlearn_method: npo # or simnpo / rmu
112
112
  unlearn_alpha: 0.5 # retain-set weighting [0.0, 10.0]
113
113
  ```
114
114
 
115
115
  ```bash
116
+ # Run the unlearn loop (validated on SmolLM2-135M — NPO/SimNPO drive forget loss down).
117
+ soup train --config unlearn.yaml --yes
118
+
116
119
  # Score the run on TOFU / MUSE / WMDP (OK / MINOR / MAJOR verdict).
117
120
  soup eval unlearning <run-id> --benchmark tofu --evidence evidence.json --output report.json
118
121
  ```
119
122
 
123
+ `soup train --task unlearn` is live (v0.71.9): it loads a LoRA-wrapped policy, a frozen reference copy (NPO / RMU), and the forget / retain JSONL sets, then optimises the per-method loss — NPO's `(2/β)·mean(-logσ(-β·(π_logp − ref_logp)))` drives the policy's forget-set log-prob below the reference (= forgetting), while the retain set anchors capability. Run NPO/SimNPO **with** a `retain_set` — without one the policy has no utility anchor and Soup warns loudly.
124
+
120
125
  Three orthogonal axes: **Forget Quality** (pre/post forget-loss delta), **Model Utility** (retain-accuracy preserved), **PrivLeak** (membership-inference AUC distance from 0.5). Bundled mini-fixtures for all three benchmarks ship in the box (v0.71.1 added MUSE + WMDP alongside the existing TOFU set), so `--benchmark muse|wmdp` runs without supplying evidence. The WMDP forget-set probes ship **redacted** (placeholder prompts + `REFUSED` responses) — Soup never bundles verbatim hazardous-knowledge content.
121
126
 
122
127
 
@@ -881,6 +886,19 @@ score = score_citations(
881
886
 
882
887
  Citation-faithful FT is gated to `task in {sft, pretrain}` + `data.format='raft'` — misconfigured runs fail at config load with a named-field message.
883
888
 
889
+ Under the hood, a `format: raft` run trains **answer-only**: each row is composed into a prompt (golden + distractor docs, shuffled deterministically by `data.raft_shuffle_seed`, each labelled `[doc-N]`) followed by the answer; the prompt span is masked out of the loss and — when `citation_faithful: true` — the bracketed `[doc-id]` spans in the answer get a boosted per-token loss weight. Rows whose prompt fills `max_length` (answer fully truncated) are dropped with a warning rather than silently shrinking the dataset.
890
+
891
+ Score a trained model's citations from the CLI:
892
+
893
+ ```bash
894
+ # {predicted, expected_ids} rows, OR RAFT rows scored against their own golden [doc-N]
895
+ soup eval citation preds.jsonl --style bracket
896
+ # RAFT rows: pass the train-time shuffle seed so the golden id lines up
897
+ soup eval citation raft.jsonl --shuffle-seed 0 --output citation.json
898
+ ```
899
+
900
+ `soup diagnose` also gains a `citation` failure mode that flags a model that stopped citing the supporting document.
901
+
884
902
 
885
903
  ## RA-DIT — Retrieval-Augmented Dual Instruction Tuning
886
904
 
@@ -898,6 +916,16 @@ soup train
898
916
 
899
917
  The schema enforces stage-task pairing — `ra_dit_stage: retriever` requires `task: embedding`; `ra_dit_stage: generator` requires `task: sft`. A misconfigured recipe fails at config load with a named-field message.
900
918
 
919
+ Run both stages in one command with `soup ra-dit`:
920
+
921
+ ```bash
922
+ soup ra-dit --retriever-config retriever.yaml --generator-config generator.yaml
923
+ # preview the plan + the resolved retriever link without training:
924
+ soup ra-dit -r retriever.yaml -g generator.yaml --plan-only
925
+ ```
926
+
927
+ It trains the retriever, then **records** that trained retriever as the generator's paired retriever (writing its output dir into the generator's `training.ra_dit_retriever_model`) and trains the generator RAFT-style. The recorded retriever is the one used at deploy/serve time — stage-2 does not fuse the retriever weights. A plain `soup train` of a generator-stage config with no retriever model set **auto-links** the most-recent RA-DIT retriever run from the Registry; pass `--retriever-model <m>` to override.
928
+
901
929
 
902
930
  ## Curriculum-Aware Training (BETA)
903
931
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "soup-cli"
7
- version = "0.71.8"
7
+ version = "0.71.10"
8
8
  description = "Fine-tune LLMs in one command. No SSH, no config hell."
9
9
  readme = "README.md"
10
10
  license = "Apache-2.0"
@@ -1,3 +1,3 @@
1
1
  """Soup CLI — Fine-tune LLMs in one command."""
2
2
 
3
- __version__ = "0.71.8"
3
+ __version__ = "0.71.10"
@@ -484,6 +484,15 @@ app.add_typer(
484
484
  help="Iterative DPO loop driver (v0.70.0 Part E).",
485
485
  )
486
486
 
487
+ # v0.71.10 #200 — `soup ra-dit` (two-stage RA-DIT orchestrator).
488
+ from soup_cli.commands import ra_dit as _ra_dit_cmd # noqa: E402
489
+
490
+ app.add_typer(
491
+ _ra_dit_cmd.app,
492
+ name="ra-dit",
493
+ help="RA-DIT two-stage orchestrator: retriever -> generator (v0.71.10).",
494
+ )
495
+
487
496
 
488
497
  def _rewrite_advise_argv(argv: list) -> list:
489
498
  """Inject `run` between `advise` and a non-subcommand first argument.