soup-cli 0.74.0__tar.gz → 0.75.1__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 (1310) hide show
  1. soup_cli-0.75.1/.github/constraints/transformers-floor.txt +12 -0
  2. soup_cli-0.75.1/.github/workflows/ci.yml +391 -0
  3. soup_cli-0.75.1/.github/workflows/recipe-repo-ids.yml +50 -0
  4. soup_cli-0.75.1/CHANGELOG.md +4674 -0
  5. soup_cli-0.75.1/CODE_OF_CONDUCT.md +79 -0
  6. soup_cli-0.75.1/CONTRIBUTING.md +547 -0
  7. soup_cli-0.75.1/CONTRIBUTORS.md +343 -0
  8. soup_cli-0.75.1/PKG-INFO +618 -0
  9. soup_cli-0.75.1/README.md +464 -0
  10. soup_cli-0.75.1/README.tr.md +470 -0
  11. soup_cli-0.75.1/SECURITY.md +70 -0
  12. soup_cli-0.75.1/benchmarks/README.md +114 -0
  13. soup_cli-0.75.1/benchmarks/bench_validator.py +183 -0
  14. soup_cli-0.75.1/benchmarks/gate-655-pinned-store-accounting.md +199 -0
  15. soup_cli-0.75.1/benchmarks/gate-674-quest-w4a4-sft.md +306 -0
  16. soup_cli-0.75.1/benchmarks/harness/mlx_sft_smoke.py +291 -0
  17. soup_cli-0.75.1/benchmarks/run-m1-8gb-mlx-sft.md +283 -0
  18. soup_cli-0.75.1/docs/adapters-and-governance.md +609 -0
  19. soup_cli-0.75.1/docs/assets/web-ui-new-training.png +0 -0
  20. soup_cli-0.75.1/docs/backends-and-ops.md +1148 -0
  21. soup_cli-0.75.1/docs/commands.md +440 -0
  22. soup_cli-0.75.1/docs/data.md +1001 -0
  23. soup_cli-0.75.1/docs/evaluation.md +822 -0
  24. soup_cli-0.75.1/docs/models.md +161 -0
  25. soup_cli-0.75.1/docs/peft-and-efficiency.md +650 -0
  26. soup_cli-0.75.1/docs/performance-and-quantization.md +997 -0
  27. soup_cli-0.75.1/docs/serving-and-export.md +782 -0
  28. soup_cli-0.75.1/docs/training.md +1628 -0
  29. soup_cli-0.75.1/pyproject.toml +266 -0
  30. soup_cli-0.75.1/scripts/check_recipe_repo_ids.py +267 -0
  31. soup_cli-0.75.1/src/soup_cli/__init__.py +3 -0
  32. soup_cli-0.75.1/src/soup_cli/cans/run.py +294 -0
  33. soup_cli-0.75.1/src/soup_cli/cans/schema.py +218 -0
  34. soup_cli-0.75.1/src/soup_cli/cans/unpack.py +173 -0
  35. soup_cli-0.75.1/src/soup_cli/cli.py +1013 -0
  36. soup_cli-0.75.1/src/soup_cli/cloud/lambda_labs.py +396 -0
  37. soup_cli-0.75.1/src/soup_cli/cloud/modal.py +338 -0
  38. soup_cli-0.75.1/src/soup_cli/commands/adapters.py +1704 -0
  39. soup_cli-0.75.1/src/soup_cli/commands/can.py +263 -0
  40. soup_cli-0.75.1/src/soup_cli/commands/chat.py +290 -0
  41. soup_cli-0.75.1/src/soup_cli/commands/data.py +4037 -0
  42. soup_cli-0.75.1/src/soup_cli/commands/diff.py +345 -0
  43. soup_cli-0.75.1/src/soup_cli/commands/doctor.py +904 -0
  44. soup_cli-0.75.1/src/soup_cli/commands/eval.py +1426 -0
  45. soup_cli-0.75.1/src/soup_cli/commands/export.py +1568 -0
  46. soup_cli-0.75.1/src/soup_cli/commands/generate.py +953 -0
  47. soup_cli-0.75.1/src/soup_cli/commands/infer.py +744 -0
  48. soup_cli-0.75.1/src/soup_cli/commands/ingest.py +332 -0
  49. soup_cli-0.75.1/src/soup_cli/commands/migrate.py +167 -0
  50. soup_cli-0.75.1/src/soup_cli/commands/push.py +571 -0
  51. soup_cli-0.75.1/src/soup_cli/commands/runs.py +660 -0
  52. soup_cli-0.75.1/src/soup_cli/commands/serve.py +2541 -0
  53. soup_cli-0.75.1/src/soup_cli/commands/ui.py +212 -0
  54. soup_cli-0.75.1/src/soup_cli/config/backend_support.py +170 -0
  55. soup_cli-0.75.1/src/soup_cli/config/loader.py +117 -0
  56. soup_cli-0.75.1/src/soup_cli/config/schema.py +7100 -0
  57. soup_cli-0.75.1/src/soup_cli/config/unknown_keys.py +232 -0
  58. soup_cli-0.75.1/src/soup_cli/data/formats.py +736 -0
  59. soup_cli-0.75.1/src/soup_cli/data/loader.py +1175 -0
  60. soup_cli-0.75.1/src/soup_cli/data/validator.py +257 -0
  61. soup_cli-0.75.1/src/soup_cli/eval/gate.py +617 -0
  62. soup_cli-0.75.1/src/soup_cli/experiment/tracker.py +615 -0
  63. soup_cli-0.75.1/src/soup_cli/mcp_server/execution.py +436 -0
  64. soup_cli-0.75.1/src/soup_cli/mcp_server/registry.py +1194 -0
  65. soup_cli-0.75.1/src/soup_cli/monitoring/callback.py +645 -0
  66. soup_cli-0.75.1/src/soup_cli/monitoring/display.py +139 -0
  67. soup_cli-0.75.1/src/soup_cli/recipes/catalog.py +5178 -0
  68. soup_cli-0.75.1/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +18 -0
  69. soup_cli-0.75.1/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +17 -0
  70. soup_cli-0.75.1/src/soup_cli/trainer/distill.py +794 -0
  71. soup_cli-0.75.1/src/soup_cli/trainer/embedding.py +575 -0
  72. soup_cli-0.75.1/src/soup_cli/trainer/mlx_masking.py +333 -0
  73. soup_cli-0.75.1/src/soup_cli/trainer/mlx_optim.py +220 -0
  74. soup_cli-0.75.1/src/soup_cli/trainer/mlx_sft.py +771 -0
  75. soup_cli-0.75.1/src/soup_cli/trainer/ppo.py +936 -0
  76. soup_cli-0.75.1/src/soup_cli/trainer/pretrain.py +484 -0
  77. soup_cli-0.75.1/src/soup_cli/trainer/sft.py +2075 -0
  78. soup_cli-0.75.1/src/soup_cli/trainer/stream_setup.py +1187 -0
  79. soup_cli-0.75.1/src/soup_cli/ui/app.py +1136 -0
  80. soup_cli-0.75.1/src/soup_cli/ui/static/app.js +1087 -0
  81. soup_cli-0.75.1/src/soup_cli/ui/static/index.html +209 -0
  82. soup_cli-0.75.1/src/soup_cli/ui/static/safe_html.js +48 -0
  83. soup_cli-0.75.1/src/soup_cli/utils/adapter_sign.py +601 -0
  84. soup_cli-0.75.1/src/soup_cli/utils/argv_redaction.py +163 -0
  85. soup_cli-0.75.1/src/soup_cli/utils/audit_log.py +319 -0
  86. soup_cli-0.75.1/src/soup_cli/utils/deepspeed.py +455 -0
  87. soup_cli-0.75.1/src/soup_cli/utils/grpo_variants.py +380 -0
  88. soup_cli-0.75.1/src/soup_cli/utils/hubs.py +817 -0
  89. soup_cli-0.75.1/src/soup_cli/utils/ingest_pull.py +537 -0
  90. soup_cli-0.75.1/src/soup_cli/utils/ingest_sources.py +492 -0
  91. soup_cli-0.75.1/src/soup_cli/utils/layer_stream_runtime.py +2501 -0
  92. soup_cli-0.75.1/src/soup_cli/utils/live_eval.py +735 -0
  93. soup_cli-0.75.1/src/soup_cli/utils/local_request_guard.py +133 -0
  94. soup_cli-0.75.1/src/soup_cli/utils/lr_groups.py +227 -0
  95. soup_cli-0.75.1/src/soup_cli/utils/mole_routing.py +811 -0
  96. soup_cli-0.75.1/src/soup_cli/utils/multipack_sampler.py +332 -0
  97. soup_cli-0.75.1/src/soup_cli/utils/paths.py +311 -0
  98. soup_cli-0.75.1/src/soup_cli/utils/peft_wiring.py +911 -0
  99. soup_cli-0.75.1/src/soup_cli/utils/plotext_compat.py +83 -0
  100. soup_cli-0.75.1/src/soup_cli/utils/safe_regex.py +312 -0
  101. soup_cli-0.75.1/src/soup_cli/utils/sse_train_stream.py +117 -0
  102. soup_cli-0.75.1/src/soup_cli/utils/terminal.py +29 -0
  103. soup_cli-0.75.1/src/soup_cli/utils/trackers.py +565 -0
  104. soup_cli-0.75.1/src/soup_cli/utils/uld.py +553 -0
  105. soup_cli-0.75.1/src/soup_cli/utils/vllm.py +705 -0
  106. soup_cli-0.75.1/src/soup_cli/utils/yaml_limits.py +121 -0
  107. soup_cli-0.75.1/tests/fixtures/issue204_langfuse_observations_v2_page.json +105 -0
  108. soup_cli-0.75.1/tests/fixtures/recipe_config_snapshots.json +2103 -0
  109. soup_cli-0.75.1/tests/test_adapter_trusted_key_backend.py +134 -0
  110. soup_cli-0.75.1/tests/test_argv_redaction_bundled_shorts.py +78 -0
  111. soup_cli-0.75.1/tests/test_audit_log_option_masking.py +135 -0
  112. soup_cli-0.75.1/tests/test_awq_gptq_export.py +1110 -0
  113. soup_cli-0.75.1/tests/test_bugfixes.py +1305 -0
  114. soup_cli-0.75.1/tests/test_can_deploy_target_containment.py +115 -0
  115. soup_cli-0.75.1/tests/test_can_output_control_bytes.py +99 -0
  116. soup_cli-0.75.1/tests/test_can_read_limits.py +199 -0
  117. soup_cli-0.75.1/tests/test_cli_subprocess.py +598 -0
  118. soup_cli-0.75.1/tests/test_cloud_output_dir_containment.py +154 -0
  119. soup_cli-0.75.1/tests/test_code_review_critical.py +371 -0
  120. soup_cli-0.75.1/tests/test_code_review_recurring.py +119 -0
  121. soup_cli-0.75.1/tests/test_config_regex_limits.py +283 -0
  122. soup_cli-0.75.1/tests/test_data_tools.py +230 -0
  123. soup_cli-0.75.1/tests/test_doctor.py +365 -0
  124. soup_cli-0.75.1/tests/test_hub_push_credentials.py +135 -0
  125. soup_cli-0.75.1/tests/test_inference_advanced.py +910 -0
  126. soup_cli-0.75.1/tests/test_issue1005_peft021_canonical_names.py +283 -0
  127. soup_cli-0.75.1/tests/test_issue1005_peft021_review_round.py +350 -0
  128. soup_cli-0.75.1/tests/test_issue204_langfuse_pull.py +1221 -0
  129. soup_cli-0.75.1/tests/test_issue23_mlx_display_bridge.py +331 -0
  130. soup_cli-0.75.1/tests/test_issue23_mlx_harness_bridge.py +233 -0
  131. soup_cli-0.75.1/tests/test_issue23_mlx_val_loss_producer.py +450 -0
  132. soup_cli-0.75.1/tests/test_issue332_vllm_prompt.py +615 -0
  133. soup_cli-0.75.1/tests/test_issue352_fsdp_peft_checkpoint.py +91 -0
  134. soup_cli-0.75.1/tests/test_issue359_deepspeed_guard_coverage.py +441 -0
  135. soup_cli-0.75.1/tests/test_issue369_canonical_named_parameters.py +242 -0
  136. soup_cli-0.75.1/tests/test_issue427_qwen35_text_modality.py +56 -0
  137. soup_cli-0.75.1/tests/test_issue443_interleave_wiring.py +526 -0
  138. soup_cli-0.75.1/tests/test_issue459_interleave_streaming_hub.py +813 -0
  139. soup_cli-0.75.1/tests/test_issue491_frozen_base_load_dtype.py +223 -0
  140. soup_cli-0.75.1/tests/test_issue502_qwen35_transformers5.py +236 -0
  141. soup_cli-0.75.1/tests/test_issue602_qwen4_ple_streaming.py +1189 -0
  142. soup_cli-0.75.1/tests/test_issue627_unknown_config_keys.py +1182 -0
  143. soup_cli-0.75.1/tests/test_issue634_mlx_resume.py +631 -0
  144. soup_cli-0.75.1/tests/test_issue636_torch_floor.py +158 -0
  145. soup_cli-0.75.1/tests/test_issue642_sweep_dry_run.py +367 -0
  146. soup_cli-0.75.1/tests/test_issue676_non_dict_messages.py +157 -0
  147. soup_cli-0.75.1/tests/test_issue677_recipe_repo_id_guard.py +443 -0
  148. soup_cli-0.75.1/tests/test_issue681_uld_id_compat.py +184 -0
  149. soup_cli-0.75.1/tests/test_issue682_uld_loss_label_mask.py +220 -0
  150. soup_cli-0.75.1/tests/test_issue683_mlx_response_masking.py +753 -0
  151. soup_cli-0.75.1/tests/test_issue684_mlx_grad_accumulation.py +250 -0
  152. soup_cli-0.75.1/tests/test_issue685_mlx_grad_checkpoint.py +273 -0
  153. soup_cli-0.75.1/tests/test_issue686_mlx_optimizer_schedule.py +705 -0
  154. soup_cli-0.75.1/tests/test_issue687_ui_auth.py +215 -0
  155. soup_cli-0.75.1/tests/test_issue688_ui_drain.py +190 -0
  156. soup_cli-0.75.1/tests/test_issue689_hub_streaming.py +159 -0
  157. soup_cli-0.75.1/tests/test_issue690_embedding_trainer_attrs.py +167 -0
  158. soup_cli-0.75.1/tests/test_issue691_sft_packing.py +249 -0
  159. soup_cli-0.75.1/tests/test_issue695_validate_agrees_with_loader.py +137 -0
  160. soup_cli-0.75.1/tests/test_issue700_embedding_lora_zero.py +316 -0
  161. soup_cli-0.75.1/tests/test_issue721_ppo_config_forwarding.py +178 -0
  162. soup_cli-0.75.1/tests/test_issue723_sequence_gspo.py +487 -0
  163. soup_cli-0.75.1/tests/test_issue724_loraplus_optimizer.py +246 -0
  164. soup_cli-0.75.1/tests/test_issue724_loraplus_wiring_coverage.py +155 -0
  165. soup_cli-0.75.1/tests/test_issue731_ui_docs_bind.py +164 -0
  166. soup_cli-0.75.1/tests/test_issue748_config_fields_reach_a_consumer.py +702 -0
  167. soup_cli-0.75.1/tests/test_issue752_cli_commands_called_as_functions.py +471 -0
  168. soup_cli-0.75.1/tests/test_issue755_backend_support_registry.py +628 -0
  169. soup_cli-0.75.1/tests/test_issue771_validator_fast_path.py +165 -0
  170. soup_cli-0.75.1/tests/test_issue775_path_containment_ratchet.py +573 -0
  171. soup_cli-0.75.1/tests/test_issue781_inference_bos.py +777 -0
  172. soup_cli-0.75.1/tests/test_issue811_data_validate_exit_codes.py +138 -0
  173. soup_cli-0.75.1/tests/test_judge_key_scoping.py +59 -0
  174. soup_cli-0.75.1/tests/test_lambda_submit_interrupt.py +335 -0
  175. soup_cli-0.75.1/tests/test_local_request_guard.py +102 -0
  176. soup_cli-0.75.1/tests/test_mcp_capacity_all_runs.py +91 -0
  177. soup_cli-0.75.1/tests/test_mcp_digest_no_follow.py +292 -0
  178. soup_cli-0.75.1/tests/test_mcp_plan_inputs.py +230 -0
  179. soup_cli-0.75.1/tests/test_mcp_post_spawn_failure.py +130 -0
  180. soup_cli-0.75.1/tests/test_mlx_backend.py +327 -0
  181. soup_cli-0.75.1/tests/test_mlx_max_grad_norm.py +259 -0
  182. soup_cli-0.75.1/tests/test_modal_stub_outputs.py +321 -0
  183. soup_cli-0.75.1/tests/test_multipack_ffd_placement.py +162 -0
  184. soup_cli-0.75.1/tests/test_part_a_wave1.py +387 -0
  185. soup_cli-0.75.1/tests/test_plotext_compat.py +265 -0
  186. soup_cli-0.75.1/tests/test_readme_translation_sync.py +312 -0
  187. soup_cli-0.75.1/tests/test_recipes.py +1227 -0
  188. soup_cli-0.75.1/tests/test_replay.py +189 -0
  189. soup_cli-0.75.1/tests/test_review_fixes_v07133.py +731 -0
  190. soup_cli-0.75.1/tests/test_runs_clean_keep_weights.py +177 -0
  191. soup_cli-0.75.1/tests/test_safe_regex.py +240 -0
  192. soup_cli-0.75.1/tests/test_serve.py +397 -0
  193. soup_cli-0.75.1/tests/test_serve_local_request_guard.py +307 -0
  194. soup_cli-0.75.1/tests/test_smoke_train.py +304 -0
  195. soup_cli-0.75.1/tests/test_training_speed.py +1339 -0
  196. soup_cli-0.75.1/tests/test_ui.py +859 -0
  197. soup_cli-0.75.1/tests/test_ui_config_builder.py +316 -0
  198. soup_cli-0.75.1/tests/test_ui_live_monitor.py +484 -0
  199. soup_cli-0.75.1/tests/test_ui_metrics.py +382 -0
  200. soup_cli-0.75.1/tests/test_ui_rendering_escapes.py +184 -0
  201. soup_cli-0.75.1/tests/test_ui_security_headers.py +203 -0
  202. soup_cli-0.75.1/tests/test_v0401_part_d.py +217 -0
  203. soup_cli-0.75.1/tests/test_v0420.py +977 -0
  204. soup_cli-0.75.1/tests/test_v0430_part_a.py +269 -0
  205. soup_cli-0.75.1/tests/test_v0500_part_a.py +395 -0
  206. soup_cli-0.75.1/tests/test_v0530.py +1117 -0
  207. soup_cli-0.75.1/tests/test_v05311.py +1194 -0
  208. soup_cli-0.75.1/tests/test_v0536.py +843 -0
  209. soup_cli-0.75.1/tests/test_v0537.py +2172 -0
  210. soup_cli-0.75.1/tests/test_v0538.py +637 -0
  211. soup_cli-0.75.1/tests/test_v0539.py +883 -0
  212. soup_cli-0.75.1/tests/test_v0630_part_a.py +462 -0
  213. soup_cli-0.75.1/tests/test_v07124.py +299 -0
  214. soup_cli-0.75.1/tests/test_v07130.py +813 -0
  215. soup_cli-0.75.1/tests/test_v07132.py +956 -0
  216. soup_cli-0.75.1/tests/test_v07135.py +1272 -0
  217. soup_cli-0.75.1/tests/test_v07141_telemetry_prompt.py +326 -0
  218. soup_cli-0.75.1/tests/test_v07201.py +523 -0
  219. soup_cli-0.75.1/tests/test_v07202.py +1983 -0
  220. soup_cli-0.75.1/tests/test_v07203.py +2969 -0
  221. soup_cli-0.75.1/tests/test_val_loss_end_to_end.py +634 -0
  222. soup_cli-0.75.1/tests/test_validator.py +141 -0
  223. soup_cli-0.75.1/tests/test_yaml_expanded_limit.py +283 -0
  224. soup_cli-0.74.0/.github/constraints/transformers-floor.txt +0 -12
  225. soup_cli-0.74.0/.github/workflows/ci.yml +0 -357
  226. soup_cli-0.74.0/CHANGELOG.md +0 -4229
  227. soup_cli-0.74.0/CODE_OF_CONDUCT.md +0 -79
  228. soup_cli-0.74.0/CONTRIBUTING.md +0 -537
  229. soup_cli-0.74.0/CONTRIBUTORS.md +0 -256
  230. soup_cli-0.74.0/PKG-INFO +0 -634
  231. soup_cli-0.74.0/README.md +0 -480
  232. soup_cli-0.74.0/SECURITY.md +0 -66
  233. soup_cli-0.74.0/benchmarks/README.md +0 -110
  234. soup_cli-0.74.0/docs/adapters-and-governance.md +0 -608
  235. soup_cli-0.74.0/docs/backends-and-ops.md +0 -1056
  236. soup_cli-0.74.0/docs/commands.md +0 -437
  237. soup_cli-0.74.0/docs/data.md +0 -947
  238. soup_cli-0.74.0/docs/evaluation.md +0 -820
  239. soup_cli-0.74.0/docs/models.md +0 -156
  240. soup_cli-0.74.0/docs/peft-and-efficiency.md +0 -651
  241. soup_cli-0.74.0/docs/performance-and-quantization.md +0 -963
  242. soup_cli-0.74.0/docs/serving-and-export.md +0 -767
  243. soup_cli-0.74.0/docs/training.md +0 -1615
  244. soup_cli-0.74.0/pyproject.toml +0 -267
  245. soup_cli-0.74.0/src/soup_cli/__init__.py +0 -3
  246. soup_cli-0.74.0/src/soup_cli/cans/run.py +0 -273
  247. soup_cli-0.74.0/src/soup_cli/cans/schema.py +0 -211
  248. soup_cli-0.74.0/src/soup_cli/cans/unpack.py +0 -104
  249. soup_cli-0.74.0/src/soup_cli/cli.py +0 -846
  250. soup_cli-0.74.0/src/soup_cli/cloud/lambda_labs.py +0 -346
  251. soup_cli-0.74.0/src/soup_cli/cloud/modal.py +0 -238
  252. soup_cli-0.74.0/src/soup_cli/commands/adapters.py +0 -1703
  253. soup_cli-0.74.0/src/soup_cli/commands/can.py +0 -260
  254. soup_cli-0.74.0/src/soup_cli/commands/chat.py +0 -306
  255. soup_cli-0.74.0/src/soup_cli/commands/data.py +0 -4009
  256. soup_cli-0.74.0/src/soup_cli/commands/diff.py +0 -359
  257. soup_cli-0.74.0/src/soup_cli/commands/doctor.py +0 -714
  258. soup_cli-0.74.0/src/soup_cli/commands/eval.py +0 -1419
  259. soup_cli-0.74.0/src/soup_cli/commands/export.py +0 -1540
  260. soup_cli-0.74.0/src/soup_cli/commands/generate.py +0 -951
  261. soup_cli-0.74.0/src/soup_cli/commands/infer.py +0 -758
  262. soup_cli-0.74.0/src/soup_cli/commands/ingest.py +0 -150
  263. soup_cli-0.74.0/src/soup_cli/commands/migrate.py +0 -155
  264. soup_cli-0.74.0/src/soup_cli/commands/push.py +0 -545
  265. soup_cli-0.74.0/src/soup_cli/commands/runs.py +0 -657
  266. soup_cli-0.74.0/src/soup_cli/commands/serve.py +0 -2489
  267. soup_cli-0.74.0/src/soup_cli/commands/ui.py +0 -181
  268. soup_cli-0.74.0/src/soup_cli/config/loader.py +0 -114
  269. soup_cli-0.74.0/src/soup_cli/config/schema.py +0 -7048
  270. soup_cli-0.74.0/src/soup_cli/config/unknown_keys.py +0 -186
  271. soup_cli-0.74.0/src/soup_cli/data/formats.py +0 -675
  272. soup_cli-0.74.0/src/soup_cli/data/loader.py +0 -1069
  273. soup_cli-0.74.0/src/soup_cli/data/validator.py +0 -148
  274. soup_cli-0.74.0/src/soup_cli/eval/gate.py +0 -610
  275. soup_cli-0.74.0/src/soup_cli/experiment/tracker.py +0 -581
  276. soup_cli-0.74.0/src/soup_cli/mcp_server/execution.py +0 -322
  277. soup_cli-0.74.0/src/soup_cli/mcp_server/registry.py +0 -1132
  278. soup_cli-0.74.0/src/soup_cli/monitoring/callback.py +0 -610
  279. soup_cli-0.74.0/src/soup_cli/monitoring/display.py +0 -129
  280. soup_cli-0.74.0/src/soup_cli/recipes/catalog.py +0 -5036
  281. soup_cli-0.74.0/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -18
  282. soup_cli-0.74.0/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -17
  283. soup_cli-0.74.0/src/soup_cli/trainer/distill.py +0 -761
  284. soup_cli-0.74.0/src/soup_cli/trainer/embedding.py +0 -538
  285. soup_cli-0.74.0/src/soup_cli/trainer/mlx_sft.py +0 -373
  286. soup_cli-0.74.0/src/soup_cli/trainer/ppo.py +0 -875
  287. soup_cli-0.74.0/src/soup_cli/trainer/pretrain.py +0 -476
  288. soup_cli-0.74.0/src/soup_cli/trainer/sft.py +0 -2078
  289. soup_cli-0.74.0/src/soup_cli/trainer/stream_setup.py +0 -1187
  290. soup_cli-0.74.0/src/soup_cli/ui/app.py +0 -848
  291. soup_cli-0.74.0/src/soup_cli/ui/static/app.js +0 -1003
  292. soup_cli-0.74.0/src/soup_cli/ui/static/index.html +0 -208
  293. soup_cli-0.74.0/src/soup_cli/utils/adapter_sign.py +0 -592
  294. soup_cli-0.74.0/src/soup_cli/utils/audit_log.py +0 -316
  295. soup_cli-0.74.0/src/soup_cli/utils/deepspeed.py +0 -452
  296. soup_cli-0.74.0/src/soup_cli/utils/grpo_variants.py +0 -348
  297. soup_cli-0.74.0/src/soup_cli/utils/hubs.py +0 -786
  298. soup_cli-0.74.0/src/soup_cli/utils/ingest_sources.py +0 -489
  299. soup_cli-0.74.0/src/soup_cli/utils/layer_stream_runtime.py +0 -2340
  300. soup_cli-0.74.0/src/soup_cli/utils/live_eval.py +0 -711
  301. soup_cli-0.74.0/src/soup_cli/utils/lr_groups.py +0 -235
  302. soup_cli-0.74.0/src/soup_cli/utils/mole_routing.py +0 -828
  303. soup_cli-0.74.0/src/soup_cli/utils/multipack_sampler.py +0 -254
  304. soup_cli-0.74.0/src/soup_cli/utils/paths.py +0 -276
  305. soup_cli-0.74.0/src/soup_cli/utils/peft_wiring.py +0 -850
  306. soup_cli-0.74.0/src/soup_cli/utils/plotext_compat.py +0 -75
  307. soup_cli-0.74.0/src/soup_cli/utils/sse_train_stream.py +0 -110
  308. soup_cli-0.74.0/src/soup_cli/utils/trackers.py +0 -491
  309. soup_cli-0.74.0/src/soup_cli/utils/uld.py +0 -510
  310. soup_cli-0.74.0/src/soup_cli/utils/vllm.py +0 -654
  311. soup_cli-0.74.0/tests/fixtures/recipe_config_snapshots.json +0 -2054
  312. soup_cli-0.74.0/tests/test_awq_gptq_export.py +0 -907
  313. soup_cli-0.74.0/tests/test_bugfixes.py +0 -1302
  314. soup_cli-0.74.0/tests/test_cli_subprocess.py +0 -553
  315. soup_cli-0.74.0/tests/test_code_review_critical.py +0 -371
  316. soup_cli-0.74.0/tests/test_code_review_recurring.py +0 -110
  317. soup_cli-0.74.0/tests/test_data_tools.py +0 -229
  318. soup_cli-0.74.0/tests/test_doctor.py +0 -178
  319. soup_cli-0.74.0/tests/test_inference_advanced.py +0 -910
  320. soup_cli-0.74.0/tests/test_issue332_vllm_prompt.py +0 -613
  321. soup_cli-0.74.0/tests/test_issue352_fsdp_peft_checkpoint.py +0 -72
  322. soup_cli-0.74.0/tests/test_issue359_deepspeed_guard_coverage.py +0 -340
  323. soup_cli-0.74.0/tests/test_issue369_canonical_named_parameters.py +0 -234
  324. soup_cli-0.74.0/tests/test_issue427_qwen35_text_modality.py +0 -54
  325. soup_cli-0.74.0/tests/test_issue443_interleave_wiring.py +0 -438
  326. soup_cli-0.74.0/tests/test_issue459_interleave_streaming_hub.py +0 -788
  327. soup_cli-0.74.0/tests/test_issue491_frozen_base_load_dtype.py +0 -223
  328. soup_cli-0.74.0/tests/test_issue502_qwen35_transformers5.py +0 -232
  329. soup_cli-0.74.0/tests/test_issue602_qwen4_ple_streaming.py +0 -1182
  330. soup_cli-0.74.0/tests/test_issue627_unknown_config_keys.py +0 -882
  331. soup_cli-0.74.0/tests/test_issue634_mlx_resume.py +0 -621
  332. soup_cli-0.74.0/tests/test_issue636_torch_floor.py +0 -152
  333. soup_cli-0.74.0/tests/test_issue642_sweep_dry_run.py +0 -302
  334. soup_cli-0.74.0/tests/test_mlx_backend.py +0 -288
  335. soup_cli-0.74.0/tests/test_part_a_wave1.py +0 -368
  336. soup_cli-0.74.0/tests/test_plotext_compat.py +0 -199
  337. soup_cli-0.74.0/tests/test_recipes.py +0 -958
  338. soup_cli-0.74.0/tests/test_replay.py +0 -175
  339. soup_cli-0.74.0/tests/test_review_fixes_v07133.py +0 -679
  340. soup_cli-0.74.0/tests/test_serve.py +0 -397
  341. soup_cli-0.74.0/tests/test_smoke_train.py +0 -273
  342. soup_cli-0.74.0/tests/test_training_speed.py +0 -1355
  343. soup_cli-0.74.0/tests/test_ui.py +0 -855
  344. soup_cli-0.74.0/tests/test_ui_config_builder.py +0 -316
  345. soup_cli-0.74.0/tests/test_ui_live_monitor.py +0 -445
  346. soup_cli-0.74.0/tests/test_ui_metrics.py +0 -354
  347. soup_cli-0.74.0/tests/test_v0401_part_d.py +0 -125
  348. soup_cli-0.74.0/tests/test_v0420.py +0 -970
  349. soup_cli-0.74.0/tests/test_v0430_part_a.py +0 -264
  350. soup_cli-0.74.0/tests/test_v0500_part_a.py +0 -389
  351. soup_cli-0.74.0/tests/test_v0530.py +0 -1097
  352. soup_cli-0.74.0/tests/test_v05311.py +0 -1136
  353. soup_cli-0.74.0/tests/test_v0536.py +0 -843
  354. soup_cli-0.74.0/tests/test_v0537.py +0 -2172
  355. soup_cli-0.74.0/tests/test_v0538.py +0 -631
  356. soup_cli-0.74.0/tests/test_v0539.py +0 -867
  357. soup_cli-0.74.0/tests/test_v0630_part_a.py +0 -459
  358. soup_cli-0.74.0/tests/test_v07124.py +0 -299
  359. soup_cli-0.74.0/tests/test_v07130.py +0 -813
  360. soup_cli-0.74.0/tests/test_v07132.py +0 -956
  361. soup_cli-0.74.0/tests/test_v07135.py +0 -1272
  362. soup_cli-0.74.0/tests/test_v07201.py +0 -521
  363. soup_cli-0.74.0/tests/test_v07202.py +0 -1983
  364. soup_cli-0.74.0/tests/test_v07203.py +0 -2749
  365. soup_cli-0.74.0/tests/test_validator.py +0 -139
  366. {soup_cli-0.74.0 → soup_cli-0.75.1}/.dockerignore +0 -0
  367. {soup_cli-0.74.0 → soup_cli-0.75.1}/.gitattributes +0 -0
  368. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/FUNDING.yml +0 -0
  369. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  370. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  371. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  372. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/pull_request_template.md +0 -0
  373. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/dependency-drift.yml +0 -0
  374. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/docker.yml +0 -0
  375. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/publish.yml +0 -0
  376. {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/recipe-validation.yml +0 -0
  377. {soup_cli-0.74.0 → soup_cli-0.75.1}/.gitignore +0 -0
  378. {soup_cli-0.74.0 → soup_cli-0.75.1}/.mailmap +0 -0
  379. {soup_cli-0.74.0 → soup_cli-0.75.1}/.pre-commit-config.yaml +0 -0
  380. {soup_cli-0.74.0 → soup_cli-0.75.1}/AGENTS.md +0 -0
  381. {soup_cli-0.74.0 → soup_cli-0.75.1}/CODEOWNERS +0 -0
  382. {soup_cli-0.74.0 → soup_cli-0.75.1}/Dockerfile +0 -0
  383. {soup_cli-0.74.0 → soup_cli-0.75.1}/LICENSE +0 -0
  384. {soup_cli-0.74.0 → soup_cli-0.75.1}/NOTICE +0 -0
  385. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-395-second-stack-vram.md +0 -0
  386. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-h100-validation.md +0 -0
  387. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-qwen4-ple-m4-max.md +0 -0
  388. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.0-layer-streaming.md +0 -0
  389. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.2-nf4.md +0 -0
  390. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.3-breadth.md +0 -0
  391. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.4-preference-losses.md +0 -0
  392. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.73.1-measured-vram-fit.md +0 -0
  393. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.73.2-leg2-scoring.md +0 -0
  394. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/bitexact.py +0 -0
  395. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/bnb_repro.py +0 -0
  396. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/fsdp_sharding_probe.py +0 -0
  397. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/issue331_qlora_scope.py +0 -0
  398. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/issue395_second_stack_vram.py +0 -0
  399. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/probe-v0.73.0-what-bounds-streaming.md +0 -0
  400. {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/run-t4-colab-free-tier.md +0 -0
  401. {soup_cli-0.74.0 → soup_cli-0.75.1}/changelog.d/README.md +0 -0
  402. {soup_cli-0.74.0 → soup_cli-0.75.1}/docker-compose.yml +0 -0
  403. {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/README.md +0 -0
  404. {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/assets/layer-streaming.gif +0 -0
  405. {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/autodistill.md +0 -0
  406. {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/compliance.md +0 -0
  407. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/README.md +0 -0
  408. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/dpo_chat.yaml +0 -0
  409. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/dpo_example.yaml +0 -0
  410. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/grpo_reasoning.yaml +0 -0
  411. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step1_sft.yaml +0 -0
  412. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step2_reward.yaml +0 -0
  413. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step3_ppo.yaml +0 -0
  414. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/sft_basic.yaml +0 -0
  415. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/vision_llama.yaml +0 -0
  416. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/README.md +0 -0
  417. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/alpaca_tiny.jsonl +0 -0
  418. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/chat_preferences.jsonl +0 -0
  419. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/dpo_sample.jsonl +0 -0
  420. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/reasoning_math.jsonl +0 -0
  421. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/reward_hacking/rewards.py +0 -0
  422. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/synthetic_workflow.md +0 -0
  423. {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/synthetic_workflow.yaml +0 -0
  424. {soup_cli-0.74.0 → soup_cli-0.75.1}/notebooks/proof-4gb.ipynb +0 -0
  425. {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/__init__.py +0 -0
  426. {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/assemble_changelog.py +0 -0
  427. {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/autodistill_b1_hardware_smoke.py +0 -0
  428. {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/generate_recipe_snapshot.py +0 -0
  429. {soup_cli-0.74.0 → soup_cli-0.75.1}/soup.png +0 -0
  430. {soup_cli-0.74.0 → soup_cli-0.75.1}/soup_logo_svg.svg +0 -0
  431. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/__main__.py +0 -0
  432. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/__init__.py +0 -0
  433. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/capture.py +0 -0
  434. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/contract.py +0 -0
  435. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/fingerprints.py +0 -0
  436. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/mlx_worker.py +0 -0
  437. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/publisher.py +0 -0
  438. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/__init__.py +0 -0
  439. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/analyzer.py +0 -0
  440. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/decisions.py +0 -0
  441. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/generate_config.py +0 -0
  442. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/__init__.py +0 -0
  443. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/pack.py +0 -0
  444. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/publish.py +0 -0
  445. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/verify.py +0 -0
  446. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cloud/__init__.py +0 -0
  447. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cloud/_common.py +0 -0
  448. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/__init__.py +0 -0
  449. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0550.py +0 -0
  450. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0610.py +0 -0
  451. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0650.py +0 -0
  452. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v07110.py +0 -0
  453. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_webhook_cli.py +0 -0
  454. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ab.py +0 -0
  455. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/active_sample.py +0 -0
  456. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/advise.py +0 -0
  457. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/agent.py +0 -0
  458. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/airgap.py +0 -0
  459. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/apple_adapter.py +0 -0
  460. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/attest.py +0 -0
  461. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/audit_log.py +0 -0
  462. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/autopilot.py +0 -0
  463. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/bench.py +0 -0
  464. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/bom.py +0 -0
  465. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/build.py +0 -0
  466. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/card.py +0 -0
  467. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ci.py +0 -0
  468. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/compile_cmd.py +0 -0
  469. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/compile_tools.py +0 -0
  470. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/completions.py +0 -0
  471. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/cost.py +0 -0
  472. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_canary.py +0 -0
  473. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_doctor.py +0 -0
  474. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_forge.py +0 -0
  475. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_mix.py +0 -0
  476. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_score.py +0 -0
  477. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_topics.py +0 -0
  478. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/delinearize_llama4.py +0 -0
  479. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/deploy.py +0 -0
  480. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/diagnose.py +0 -0
  481. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/distill_prompt.py +0 -0
  482. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/draft.py +0 -0
  483. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/drift_alarm.py +0 -0
  484. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/edit.py +0 -0
  485. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/env.py +0 -0
  486. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/expect.py +0 -0
  487. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/fetch.py +0 -0
  488. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/history.py +0 -0
  489. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/init.py +0 -0
  490. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/iterative_dpo.py +0 -0
  491. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/license_advisor.py +0 -0
  492. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/llama.py +0 -0
  493. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/local_rl.py +0 -0
  494. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/lock.py +0 -0
  495. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/loop.py +0 -0
  496. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/mcp.py +0 -0
  497. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/merge.py +0 -0
  498. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
  499. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/monitor.py +0 -0
  500. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/plan.py +0 -0
  501. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/plugins.py +0 -0
  502. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/probe.py +0 -0
  503. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/profile.py +0 -0
  504. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/prune_prompt.py +0 -0
  505. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/quantize.py +0 -0
  506. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/quickstart.py +0 -0
  507. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ra_dit.py +0 -0
  508. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/recipes.py +0 -0
  509. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/registry.py +0 -0
  510. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/reward.py +0 -0
  511. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ship.py +0 -0
  512. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/shrink.py +0 -0
  513. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/spectrum.py +0 -0
  514. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/steer.py +0 -0
  515. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/sweep.py +0 -0
  516. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tokenizer.py +0 -0
  517. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/train.py +0 -0
  518. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tui.py +0 -0
  519. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tunability.py +0 -0
  520. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/why.py +0 -0
  521. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/config/__init__.py +0 -0
  522. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/__init__.py +0 -0
  523. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
  524. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
  525. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
  526. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
  527. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
  528. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
  529. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
  530. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
  531. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/format_json.jsonl +0 -0
  532. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/over_refusal.jsonl +0 -0
  533. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/safety.jsonl +0 -0
  534. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/tool_call.jsonl +0 -0
  535. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
  536. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
  537. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
  538. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
  539. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/augment.py +0 -0
  540. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/chat_templates.py +0 -0
  541. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/collators.py +0 -0
  542. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/loss_mask.py +0 -0
  543. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/__init__.py +0 -0
  544. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/_utils.py +0 -0
  545. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/anthropic.py +0 -0
  546. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/ollama.py +0 -0
  547. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/vllm.py +0 -0
  548. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/sft_format.py +0 -0
  549. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/__init__.py +0 -0
  550. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/code.py +0 -0
  551. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/conversation.py +0 -0
  552. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/preference.py +0 -0
  553. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/qa.py +0 -0
  554. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/reasoning.py +0 -0
  555. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/tool_calling.py +0 -0
  556. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/verifiable.py +0 -0
  557. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/__init__.py +0 -0
  558. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/pair_builder.py +0 -0
  559. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/parsers.py +0 -0
  560. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/quality.py +0 -0
  561. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/__init__.py +0 -0
  562. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/_common.py +0 -0
  563. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/calculator.py +0 -0
  564. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/guess_number.py +0 -0
  565. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/retrieval_qa.py +0 -0
  566. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/__init__.py +0 -0
  567. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/aider_polyglot.py +0 -0
  568. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/arena.py +0 -0
  569. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
  570. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/calibrate.py +0 -0
  571. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
  572. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/custom.py +0 -0
  573. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/forgetting.py +0 -0
  574. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/gate_suites.py +0 -0
  575. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/human.py +0 -0
  576. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/judge.py +0 -0
  577. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/leaderboard.py +0 -0
  578. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/quant_check.py +0 -0
  579. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/experiment/__init__.py +0 -0
  580. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/mcp_server/__init__.py +0 -0
  581. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/mcp_server/server.py +0 -0
  582. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/__init__.py +0 -0
  583. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/axolotl.py +0 -0
  584. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/common.py +0 -0
  585. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/llamafactory.py +0 -0
  586. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/unsloth.py +0 -0
  587. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/__init__.py +0 -0
  588. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
  589. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
  590. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/hf_push.py +0 -0
  591. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/plugin_callback.py +0 -0
  592. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/trace_logger.py +0 -0
  593. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/plugins/__init__.py +0 -0
  594. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/py.typed +0 -0
  595. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/recipes/__init__.py +0 -0
  596. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/__init__.py +0 -0
  597. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/attach.py +0 -0
  598. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/diff.py +0 -0
  599. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/hashing.py +0 -0
  600. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/store.py +0 -0
  601. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/__init__.py +0 -0
  602. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/audio.yaml +0 -0
  603. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/bco.yaml +0 -0
  604. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/chat.yaml +0 -0
  605. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/code.yaml +0 -0
  606. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/embedding.yaml +0 -0
  607. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/eu-ai-act.yaml +0 -0
  608. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
  609. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/hipaa.yaml +0 -0
  610. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/ipo.yaml +0 -0
  611. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/kto.yaml +0 -0
  612. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/longcontext.yaml +0 -0
  613. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/manifest.json +0 -0
  614. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/medical.yaml +0 -0
  615. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/moe.yaml +0 -0
  616. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/orpo.yaml +0 -0
  617. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/pretrain.yaml +0 -0
  618. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/reasoning.yaml +0 -0
  619. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/rlhf.yaml +0 -0
  620. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/simpo.yaml +0 -0
  621. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/soc2.yaml +0 -0
  622. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/sr-11-7.yaml +0 -0
  623. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/tool-calling.yaml +0 -0
  624. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/vision.yaml +0 -0
  625. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/__init__.py +0 -0
  626. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/_trl_compat.py +0 -0
  627. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/asr.py +0 -0
  628. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/bco.py +0 -0
  629. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/bitnet.py +0 -0
  630. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/classifier.py +0 -0
  631. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/dpo.py +0 -0
  632. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/grpo.py +0 -0
  633. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/ipo.py +0 -0
  634. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/kto.py +0 -0
  635. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_dpo.py +0 -0
  636. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_grpo.py +0 -0
  637. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_routing.py +0 -0
  638. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mole_routing.py +0 -0
  639. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/online_dpo.py +0 -0
  640. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/orpo.py +0 -0
  641. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/preference.py +0 -0
  642. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/prm.py +0 -0
  643. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/raft.py +0 -0
  644. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/reward_model.py +0 -0
  645. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/rewards.py +0 -0
  646. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/simpo.py +0 -0
  647. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/tts.py +0 -0
  648. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/unlearn.py +0 -0
  649. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/tui_app.py +0 -0
  650. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/__init__.py +0 -0
  651. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/plugins/__init__.py +0 -0
  652. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/logo.png +0 -0
  653. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/logo.svg +0 -0
  654. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/style.css +0 -0
  655. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/__init__.py +0 -0
  656. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/_eval_text.py +0 -0
  657. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ab_test.py +0 -0
  658. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/activation_offload.py +0 -0
  659. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/active_sampler.py +0 -0
  660. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
  661. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_bisect.py +0 -0
  662. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_branch.py +0 -0
  663. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_diff.py +0 -0
  664. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_fuse.py +0 -0
  665. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_merge.py +0 -0
  666. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_pr.py +0 -0
  667. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_scan.py +0 -0
  668. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advanced_precision.py +0 -0
  669. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advise.py +0 -0
  670. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advise_history.py +0 -0
  671. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_forge.py +0 -0
  672. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_rollout.py +0 -0
  673. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_sandbox.py +0 -0
  674. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/airgap_bundle.py +0 -0
  675. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/annex_xi.py +0 -0
  676. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/anthropic_messages.py +0 -0
  677. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/apple_adapter.py +0 -0
  678. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/asr_metrics.py +0 -0
  679. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/attest.py +0 -0
  680. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/auto_quant.py +0 -0
  681. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/backend_detect.py +0 -0
  682. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/batch_probe.py +0 -0
  683. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/behavior_battery.py +0 -0
  684. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n.py +0 -0
  685. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_artifact.py +0 -0
  686. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_checkpoint.py +0 -0
  687. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_stream.py +0 -0
  688. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/bitnet.py +0 -0
  689. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/blame.py +0 -0
  690. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/block_expansion.py +0 -0
  691. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/bom.py +0 -0
  692. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/brain_rot.py +0 -0
  693. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/brain_rot_lang.py +0 -0
  694. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/build_dag.py +0 -0
  695. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary.py +0 -0
  696. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary_discovery.py +0 -0
  697. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary_router.py +0 -0
  698. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/capability_suite.py +0 -0
  699. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/checklist_dsl.py +0 -0
  700. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
  701. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ci_workflow.py +0 -0
  702. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/citation_faithful.py +0 -0
  703. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/classifier.py +0 -0
  704. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cmaes_merge.py +0 -0
  705. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/compile_tools.py +0 -0
  706. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/completions.py +0 -0
  707. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/constants.py +0 -0
  708. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/convergence.py +0 -0
  709. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/crash.py +0 -0
  710. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cross_doc_attn.py +0 -0
  711. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/curriculum.py +0 -0
  712. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
  713. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cut_ce.py +0 -0
  714. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_doctor.py +0 -0
  715. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_forge.py +0 -0
  716. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_lint.py +0 -0
  717. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_mix.py +0 -0
  718. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_pipeline.py +0 -0
  719. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_score.py +0 -0
  720. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/delinearize_llama4.py +0 -0
  721. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/demo_bundles.py +0 -0
  722. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/deploy_autopilot.py +0 -0
  723. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/deploy_measure.py +0 -0
  724. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/__init__.py +0 -0
  725. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/_common.py +0 -0
  726. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/badge.py +0 -0
  727. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/citation.py +0 -0
  728. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/contamination.py +0 -0
  729. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
  730. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/format.py +0 -0
  731. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/live.py +0 -0
  732. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/memorization.py +0 -0
  733. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
  734. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/refusal.py +0 -0
  735. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/report.py +0 -0
  736. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/runner.py +0 -0
  737. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/distill.py +0 -0
  738. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/dpo_variants.py +0 -0
  739. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/draft.py +0 -0
  740. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/drift_alarm.py +0 -0
  741. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ebft_gdpo.py +0 -0
  742. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/echo_trap.py +0 -0
  743. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_diff.py +0 -0
  744. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_governor.py +0 -0
  745. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_kernels.py +0 -0
  746. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/embed.py +0 -0
  747. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/encoding.py +0 -0
  748. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/energy.py +0 -0
  749. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/env_lock.py +0 -0
  750. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/errors.py +0 -0
  751. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_design.py +0 -0
  752. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_gate_hook.py +0 -0
  753. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
  754. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/evolve.py +0 -0
  755. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/expectations.py +0 -0
  756. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fetch_examples.py +0 -0
  757. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/flash_attn.py +0 -0
  758. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fp8.py +0 -0
  759. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/freeze.py +0 -0
  760. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fsdp.py +0 -0
  761. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
  762. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/galore.py +0 -0
  763. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gguf_quant.py +0 -0
  764. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gpu.py +0 -0
  765. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gpu_monitor.py +0 -0
  766. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grace_codebook.py +0 -0
  767. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/graceful_save.py +0 -0
  768. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grad_accum.py +0 -0
  769. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gradient_ckpt.py +0 -0
  770. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grpo_long_context.py +0 -0
  771. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hardware_fit.py +0 -0
  772. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/harm_probe.py +0 -0
  773. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hf.py +0 -0
  774. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hf_space.py +0 -0
  775. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/integrations.py +0 -0
  776. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/interference.py +0 -0
  777. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/interference_live.py +0 -0
  778. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/irt.py +0 -0
  779. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/iterative_dpo.py +0 -0
  780. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/jinja_analyzer.py +0 -0
  781. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/kernel_picker.py +0 -0
  782. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/knowledge_edit.py +0 -0
  783. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/kv_cache.py +0 -0
  784. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/launcher.py +0 -0
  785. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/layer_shard.py +0 -0
  786. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/layer_stream.py +0 -0
  787. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/license_advisor.py +0 -0
  788. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/license_matrix.py +0 -0
  789. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/liger.py +0 -0
  790. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/lisa.py +0 -0
  791. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/llama_proxy.py +0 -0
  792. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/llama_server_timings.py +0 -0
  793. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/local_rl.py +0 -0
  794. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
  795. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loftq_init.py +0 -0
  796. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/log_level.py +0 -0
  797. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/long_context.py +0 -0
  798. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/longlora.py +0 -0
  799. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_budget.py +0 -0
  800. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_daemon.py +0 -0
  801. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_iteration.py +0 -0
  802. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_stages.py +0 -0
  803. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_state.py +0 -0
  804. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/lr_finder.py +0 -0
  805. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/magpie.py +0 -0
  806. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/metrics.py +0 -0
  807. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mii.py +0 -0
  808. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/minillm.py +0 -0
  809. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mix_proxy.py +0 -0
  810. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mixed_precision.py +0 -0
  811. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mlx.py +0 -0
  812. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mod.py +0 -0
  813. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/moe.py +0 -0
  814. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/moe_quant.py +0 -0
  815. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/multipack.py +0 -0
  816. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/multipack_trainer.py +0 -0
  817. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/namespace_pin.py +0 -0
  818. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/neat_packing.py +0 -0
  819. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/net_guard.py +0 -0
  820. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ngram_spec.py +0 -0
  821. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/nlg_metrics.py +0 -0
  822. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ollama.py +0 -0
  823. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/onboarding.py +0 -0
  824. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/optimizer_zoo.py +0 -0
  825. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/oq_affine.py +0 -0
  826. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/peft_builder.py +0 -0
  827. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/peft_patches.py +0 -0
  828. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/persona_hub.py +0 -0
  829. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/pipeline.py +0 -0
  830. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/preference_combine.py +0 -0
  831. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prm.py +0 -0
  832. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prm_reward.py +0 -0
  833. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/probe_kernel.py +0 -0
  834. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/probe_pack.py +0 -0
  835. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/process_liveness.py +0 -0
  836. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiler.py +0 -0
  837. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiling.py +0 -0
  838. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiling_v0_43.py +0 -0
  839. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prompt_compile.py +0 -0
  840. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prompt_distill.py +0 -0
  841. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prune_prompt.py +0 -0
  842. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qat.py +0 -0
  843. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qr_url.py +0 -0
  844. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/quality.py +0 -0
  845. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/quant_menu.py +0 -0
  846. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qwen4_compat.py +0 -0
  847. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qwen4_ple.py +0 -0
  848. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ra_dit.py +0 -0
  849. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ra_dit_run.py +0 -0
  850. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/raft.py +0 -0
  851. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reasoning_effort.py +0 -0
  852. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reasoning_parser.py +0 -0
  853. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/recipe_dag.py +0 -0
  854. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/recipe_run.py +0 -0
  855. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/registry.py +0 -0
  856. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rehearsal.py +0 -0
  857. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/relora.py +0 -0
  858. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/replay.py +0 -0
  859. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/repro_receipt.py +0 -0
  860. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_hack_control.py +0 -0
  861. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_hacking.py +0 -0
  862. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_stress.py +0 -0
  863. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_synth.py +0 -0
  864. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ring_attention.py +0 -0
  865. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rl_checkpoint.py +0 -0
  866. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
  867. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/run_cost.py +0 -0
  868. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sae_diff.py +0 -0
  869. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/save_formats.py +0 -0
  870. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/seeding.py +0 -0
  871. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/semdedup.py +0 -0
  872. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/server_tools.py +0 -0
  873. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sglang.py +0 -0
  874. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ship_verdict.py +0 -0
  875. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/shortcuts.py +0 -0
  876. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/shrink.py +0 -0
  877. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/signing.py +0 -0
  878. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sleeper_probe.py +0 -0
  879. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/soup_lock.py +0 -0
  880. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spec_pairing.py +0 -0
  881. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spectrum_scan.py +0 -0
  882. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spike_recovery.py +0 -0
  883. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/steering.py +0 -0
  884. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/strict_safetensors.py +0 -0
  885. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/structured_output.py +0 -0
  886. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sweep_config.py +0 -0
  887. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tail_latency.py +0 -0
  888. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/terraform_plan.py +0 -0
  889. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tool_outputs.py +0 -0
  890. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/topics.py +0 -0
  891. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/topology.py +0 -0
  892. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tracing.py +0 -0
  893. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/train_event_buffer.py +0 -0
  894. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/trainer_plugins.py +0 -0
  895. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/trust_remote.py +0 -0
  896. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/truth_probe.py +0 -0
  897. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tts.py +0 -0
  898. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tts_codec.py +0 -0
  899. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tunability.py +0 -0
  900. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ui_env.py +0 -0
  901. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearn_kernels.py +0 -0
  902. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearning.py +0 -0
  903. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearning_eval.py +0 -0
  904. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unsloth.py +0 -0
  905. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/v028_features.py +0 -0
  906. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/vector_bank.py +0 -0
  907. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/vscode_setup.py +0 -0
  908. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/warmup.py +0 -0
  909. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/webhooks.py +0 -0
  910. {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/why.py +0 -0
  911. {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/chat.yaml +0 -0
  912. {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/code.yaml +0 -0
  913. {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/medical.yaml +0 -0
  914. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/__init__.py +0 -0
  915. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/_windows_ci.py +0 -0
  916. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/conftest.py +0 -0
  917. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/capture_token.json +0 -0
  918. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/consumption_ledger.json +0 -0
  919. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/plan.json +0 -0
  920. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/shard_manifest.json +0 -0
  921. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/student_rollout_capture_token.json +0 -0
  922. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/mcp_roundtrip.py +0 -0
  923. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v053_qa.md +0 -0
  924. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v07114_qa.md +0 -0
  925. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v0716_qa.md +0 -0
  926. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_adapters.py +0 -0
  927. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_advanced_peft.py +0 -0
  928. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_align_trainable_dtype.py +0 -0
  929. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_assistant_mask.py +0 -0
  930. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_audio.py +0 -0
  931. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_auto_tuning.py +0 -0
  932. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_autopilot.py +0 -0
  933. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_batch_probe.py +0 -0
  934. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_bco.py +0 -0
  935. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_bench.py +0 -0
  936. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_brain_rot_multilingual.py +0 -0
  937. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_build_dag.py +0 -0
  938. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_callback.py +0 -0
  939. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cans.py +0 -0
  940. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_chat.py +0 -0
  941. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_chat_template.py +0 -0
  942. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli.py +0 -0
  943. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli_help_assertions_are_ansi_safe.py +0 -0
  944. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli_startup_is_light.py +0 -0
  945. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_deferred.py +0 -0
  946. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_high.py +0 -0
  947. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_medium_low.py +0 -0
  948. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_config.py +0 -0
  949. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_contributing_test_counts_are_digit_free.py +0 -0
  950. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cost.py +0 -0
  951. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_crash_reporter.py +0 -0
  952. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_curriculum.py +0 -0
  953. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data.py +0 -0
  954. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_augment.py +0 -0
  955. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_sample.py +0 -0
  956. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_split.py +0 -0
  957. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dataset_hub.py +0 -0
  958. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dataset_registry.py +0 -0
  959. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_deepspeed.py +0 -0
  960. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_demo_bundle_metadata.py +0 -0
  961. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_deploy_ollama.py +0 -0
  962. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_device_map_distributed.py +0 -0
  963. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_diff.py +0 -0
  964. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_display.py +0 -0
  965. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dpo_example.py +0 -0
  966. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dpo_variants.py +0 -0
  967. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_embedding.py +0 -0
  968. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_errors.py +0 -0
  969. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval.py +0 -0
  970. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval_gate.py +0 -0
  971. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval_platform.py +0 -0
  972. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_examples_configs.py +0 -0
  973. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_export.py +0 -0
  974. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_formats.py +0 -0
  975. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_fp8_recipe.py +0 -0
  976. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_freeze_training.py +0 -0
  977. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_generate.py +0 -0
  978. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_gpu.py +0 -0
  979. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_grpo.py +0 -0
  980. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_hf_integration.py +0 -0
  981. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_infer.py +0 -0
  982. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_init.py +0 -0
  983. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ipo.py +0 -0
  984. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue144_gguf_export.py +0 -0
  985. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue264_cloud.py +0 -0
  986. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue296_network_transport.py +0 -0
  987. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue300_online_dpo_kwargs.py +0 -0
  988. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue300_online_dpo_train.py +0 -0
  989. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue302_vision_pad_token.py +0 -0
  990. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue304_cross_tokenizer.py +0 -0
  991. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue305_mixed_rank_arithmetic.py +0 -0
  992. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue308_callback_subclass.py +0 -0
  993. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue316_refusal_apostrophe.py +0 -0
  994. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue316_suites.py +0 -0
  995. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue320_lazy_callback_import.py +0 -0
  996. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue322_mcp2_compat.py +0 -0
  997. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue323_trl_kwarg_drift.py +0 -0
  998. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue327_logits_estimate.py +0 -0
  999. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue330_mix_recipe_train_loadable.py +0 -0
  1000. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue334_fa3_detection.py +0 -0
  1001. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue336_deepspeed_lora.py +0 -0
  1002. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue339_load_dtype.py +0 -0
  1003. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue341_seed_and_fullft.py +0 -0
  1004. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue348_calibrated_logits_wiring.py +0 -0
  1005. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue349_measured_fit.py +0 -0
  1006. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue350_fsdp_qlora.py +0 -0
  1007. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue353_mlx_seed_warning.py +0 -0
  1008. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue353_seed_every_task.py +0 -0
  1009. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue360_sglang_prompt_finish_reason.py +0 -0
  1010. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue367_live_eval_quantization.py +0 -0
  1011. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue372_no_reexec_hint.py +0 -0
  1012. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue373_fsdp_sharding_probe.py +0 -0
  1013. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue374_stream_disk_preflight.py +0 -0
  1014. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue377_lisa_train_embeddings.py +0 -0
  1015. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue382_windows_ci_guard_is_shared.py +0 -0
  1016. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue385_stream_dtype.py +0 -0
  1017. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue389_torchao_error.py +0 -0
  1018. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue390_expandable_segments_reason.py +0 -0
  1019. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue392_mlx_target_keys.py +0 -0
  1020. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue394_mlx_runtime_isolation.py +0 -0
  1021. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue401_orphaned_run_reconcile.py +0 -0
  1022. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue402_restart_capacity.py +0 -0
  1023. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue404_baseline_scorer_stamp.py +0 -0
  1024. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue423_mlx_device_detection.py +0 -0
  1025. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue424_windows_liveness.py +0 -0
  1026. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue433_meta_adapter_guard.py +0 -0
  1027. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue441_coerce_token_ids.py +0 -0
  1028. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue477_qwen38_catalog.py +0 -0
  1029. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue487_changelog_fragments.py +0 -0
  1030. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue505_launching_window_blocks_restart.py +0 -0
  1031. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue524_launching_reconcile.py +0 -0
  1032. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue531_stream_base_provenance.py +0 -0
  1033. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue532_supervised_token_guard.py +0 -0
  1034. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue533_offline_hf_materialization.py +0 -0
  1035. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue534_apple_nvme.py +0 -0
  1036. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue546_transient_finite_metric.py +0 -0
  1037. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue549_bon_resume.py +0 -0
  1038. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue550_bon_offline.py +0 -0
  1039. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue555_bon_stream_resume.py +0 -0
  1040. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue563_mps_bf16_training.py +0 -0
  1041. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue565_grpo_reward_metadata.py +0 -0
  1042. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue567_grpo_mps_bf16.py +0 -0
  1043. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue571_qwen4_exp.py +0 -0
  1044. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue573_qwen4_expert_lora.py +0 -0
  1045. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_capture.py +0 -0
  1046. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_contract.py +0 -0
  1047. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_fingerprints.py +0 -0
  1048. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_mlx_worker.py +0 -0
  1049. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_publisher.py +0 -0
  1050. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue599_telemetry_dns_ssrf.py +0 -0
  1051. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue600_abbreviated_ipv4_ssrf.py +0 -0
  1052. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue616_net_guard_is_shared.py +0 -0
  1053. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue621_recipe_snapshot.py +0 -0
  1054. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue623_stream_pin_allocation.py +0 -0
  1055. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue633_ansi_in_highlighted_output.py +0 -0
  1056. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue649_batch_probe_peak_gate.py +0 -0
  1057. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue654_batch_probe_uncovered_branches.py +0 -0
  1058. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue91_aider_eval.py +0 -0
  1059. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue99_apple_monitor.py +0 -0
  1060. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_jinja_analyzer.py +0 -0
  1061. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_kto.py +0 -0
  1062. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_loader.py +0 -0
  1063. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_log_level.py +0 -0
  1064. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_loss_watchdog.py +0 -0
  1065. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mcp_execute.py +0 -0
  1066. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_merge.py +0 -0
  1067. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_migrate.py +0 -0
  1068. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mii_serve.py +0 -0
  1069. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mlx_dispatch.py +0 -0
  1070. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_moe.py +0 -0
  1071. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multi_adapter.py +0 -0
  1072. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multi_gpu.py +0 -0
  1073. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_config.py +0 -0
  1074. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_invariants.py +0 -0
  1075. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_sampler.py +0 -0
  1076. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_neat_packing.py +0 -0
  1077. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_neftune_rslora.py +0 -0
  1078. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_no_foreign_license_headers.py +0 -0
  1079. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_onnx_tensorrt_export.py +0 -0
  1080. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_orpo.py +0 -0
  1081. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_packing.py +0 -0
  1082. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_a_wave2.py +0 -0
  1083. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_b.py +0 -0
  1084. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_c.py +0 -0
  1085. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_d.py +0 -0
  1086. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_e.py +0 -0
  1087. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_f_hardening.py +0 -0
  1088. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_peft_methods.py +0 -0
  1089. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_peft_patches.py +0 -0
  1090. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_performance.py +0 -0
  1091. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_pissa_init.py +0 -0
  1092. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ppo.py +0 -0
  1093. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_dispatcher.py +0 -0
  1094. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_multi.py +0 -0
  1095. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_multi_runtime.py +0 -0
  1096. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_pretrain.py +0 -0
  1097. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_profile.py +0 -0
  1098. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_profiling.py +0 -0
  1099. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_progress.py +0 -0
  1100. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_push.py +0 -0
  1101. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_qat.py +0 -0
  1102. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quality_filter.py +0 -0
  1103. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quant_check.py +0 -0
  1104. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quant_menu.py +0 -0
  1105. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quickstart.py +0 -0
  1106. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_qwen35_streaming.py +0 -0
  1107. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_rank_pattern.py +0 -0
  1108. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_recipe_count_is_synced.py +0 -0
  1109. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_recipes_v031.py +0 -0
  1110. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_refusal_multilingual.py +0 -0
  1111. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_registry.py +0 -0
  1112. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_relora.py +0 -0
  1113. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_requires_python_bound.py +0 -0
  1114. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_resume.py +0 -0
  1115. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_rlvr.py +0 -0
  1116. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_run_cost.py +0 -0
  1117. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_runs.py +0 -0
  1118. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_semantic_split.py +0 -0
  1119. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_server_generate.py +0 -0
  1120. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sglang_serve.py +0 -0
  1121. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sglang_trust_contract.py +0 -0
  1122. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_simpo.py +0 -0
  1123. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_speculative_decoding.py +0 -0
  1124. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_stream_multi_gpu_guard.py +0 -0
  1125. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sweep.py +0 -0
  1126. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_synth_data_pro.py +0 -0
  1127. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_telemetry_ssrf.py +0 -0
  1128. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_templates_yaml.py +0 -0
  1129. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tensorboard.py +0 -0
  1130. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tool_calling.py +0 -0
  1131. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trace_to_pref.py +0 -0
  1132. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tracker.py +0 -0
  1133. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trainer_coverage_v035.py +0 -0
  1134. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trainer_init.py +0 -0
  1135. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_training_intelligence.py +0 -0
  1136. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_transformers_floor_compat.py +0 -0
  1137. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trl_preference_config_contract.py +0 -0
  1138. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trl_version_compat.py +0 -0
  1139. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trust_remote_code.py +0 -0
  1140. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tui.py +0 -0
  1141. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ui_chat.py +0 -0
  1142. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_unsloth.py +0 -0
  1143. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0401_part_c.py +0 -0
  1144. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0401_part_e.py +0 -0
  1145. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0402_part_a.py +0 -0
  1146. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0402_part_b.py +0 -0
  1147. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_a.py +0 -0
  1148. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_b.py +0 -0
  1149. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_c.py +0 -0
  1150. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0404_part_a.py +0 -0
  1151. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0404_part_b.py +0 -0
  1152. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0405_part_a.py +0 -0
  1153. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0406_part_a.py +0 -0
  1154. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_a.py +0 -0
  1155. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_b.py +0 -0
  1156. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_c.py +0 -0
  1157. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_b.py +0 -0
  1158. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_c.py +0 -0
  1159. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_d.py +0 -0
  1160. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_a.py +0 -0
  1161. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_b.py +0 -0
  1162. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_c.py +0 -0
  1163. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_d.py +0 -0
  1164. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_review_followups.py +0 -0
  1165. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0450.py +0 -0
  1166. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0460_part_a.py +0 -0
  1167. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0460_part_b.py +0 -0
  1168. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0470_part_a.py +0 -0
  1169. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0470_part_b.py +0 -0
  1170. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0480_part_a.py +0 -0
  1171. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0480_part_b.py +0 -0
  1172. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0490.py +0 -0
  1173. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_b.py +0 -0
  1174. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_c.py +0 -0
  1175. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_d.py +0 -0
  1176. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_e.py +0 -0
  1177. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0510.py +0 -0
  1178. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0520.py +0 -0
  1179. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v05310.py +0 -0
  1180. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_109.py +0 -0
  1181. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_139.py +0 -0
  1182. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_142.py +0 -0
  1183. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_82.py +0 -0
  1184. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0532.py +0 -0
  1185. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0533.py +0 -0
  1186. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0534.py +0 -0
  1187. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0535.py +0 -0
  1188. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0540.py +0 -0
  1189. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0550.py +0 -0
  1190. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0550_followups.py +0 -0
  1191. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0560.py +0 -0
  1192. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_a.py +0 -0
  1193. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_b.py +0 -0
  1194. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_c.py +0 -0
  1195. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_d.py +0 -0
  1196. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0580.py +0 -0
  1197. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0590.py +0 -0
  1198. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_a.py +0 -0
  1199. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_b.py +0 -0
  1200. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_c.py +0 -0
  1201. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_d.py +0 -0
  1202. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_e.py +0 -0
  1203. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_f.py +0 -0
  1204. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_a.py +0 -0
  1205. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_b.py +0 -0
  1206. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_c.py +0 -0
  1207. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_d.py +0 -0
  1208. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_e.py +0 -0
  1209. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_followups.py +0 -0
  1210. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_a.py +0 -0
  1211. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_b.py +0 -0
  1212. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_c.py +0 -0
  1213. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_d.py +0 -0
  1214. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_e.py +0 -0
  1215. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_followups.py +0 -0
  1216. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_b.py +0 -0
  1217. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_c.py +0 -0
  1218. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_d.py +0 -0
  1219. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_e.py +0 -0
  1220. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0631_206.py +0 -0
  1221. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_followups.py +0 -0
  1222. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_a.py +0 -0
  1223. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_b.py +0 -0
  1224. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_c.py +0 -0
  1225. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_d.py +0 -0
  1226. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_e.py +0 -0
  1227. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_f.py +0 -0
  1228. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_followups.py +0 -0
  1229. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_a.py +0 -0
  1230. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_b.py +0 -0
  1231. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_c.py +0 -0
  1232. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_d.py +0 -0
  1233. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_e.py +0 -0
  1234. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_cli.py +0 -0
  1235. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_followups.py +0 -0
  1236. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_a.py +0 -0
  1237. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_b.py +0 -0
  1238. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_c.py +0 -0
  1239. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_d.py +0 -0
  1240. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_e.py +0 -0
  1241. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_followups.py +0 -0
  1242. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_a.py +0 -0
  1243. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_b.py +0 -0
  1244. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_c.py +0 -0
  1245. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_d.py +0 -0
  1246. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_e.py +0 -0
  1247. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_f.py +0 -0
  1248. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_followups.py +0 -0
  1249. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_a.py +0 -0
  1250. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_b.py +0 -0
  1251. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_c.py +0 -0
  1252. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_d.py +0 -0
  1253. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_e.py +0 -0
  1254. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_a.py +0 -0
  1255. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_b.py +0 -0
  1256. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_c.py +0 -0
  1257. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_d.py +0 -0
  1258. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_e.py +0 -0
  1259. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_a.py +0 -0
  1260. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_b.py +0 -0
  1261. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_c.py +0 -0
  1262. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_d.py +0 -0
  1263. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_e.py +0 -0
  1264. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_f.py +0 -0
  1265. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07110.py +0 -0
  1266. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07111.py +0 -0
  1267. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07112.py +0 -0
  1268. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07113.py +0 -0
  1269. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07114.py +0 -0
  1270. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07115.py +0 -0
  1271. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07116.py +0 -0
  1272. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07117.py +0 -0
  1273. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07118.py +0 -0
  1274. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07119.py +0 -0
  1275. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0712.py +0 -0
  1276. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07120.py +0 -0
  1277. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07121.py +0 -0
  1278. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07122.py +0 -0
  1279. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07123.py +0 -0
  1280. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07125.py +0 -0
  1281. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07126.py +0 -0
  1282. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07127.py +0 -0
  1283. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07128.py +0 -0
  1284. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07129.py +0 -0
  1285. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0713.py +0 -0
  1286. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07131.py +0 -0
  1287. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07133.py +0 -0
  1288. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07134.py +0 -0
  1289. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07136.py +0 -0
  1290. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07137.py +0 -0
  1291. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07138.py +0 -0
  1292. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07139.py +0 -0
  1293. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0714.py +0 -0
  1294. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07140.py +0 -0
  1295. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07141.py +0 -0
  1296. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0715.py +0 -0
  1297. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0716.py +0 -0
  1298. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0717.py +0 -0
  1299. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0718.py +0 -0
  1300. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0719.py +0 -0
  1301. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07200.py +0 -0
  1302. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07204.py +0 -0
  1303. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07300.py +0 -0
  1304. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07302.py +0 -0
  1305. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_version_sync.py +0 -0
  1306. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_vision.py +0 -0
  1307. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_vllm_serve.py +0 -0
  1308. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_warmup.py +0 -0
  1309. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_why.py +0 -0
  1310. {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_windows_encoding.py +0 -0
@@ -0,0 +1,12 @@
1
+ # #571 — exact pins for the dedicated dependency-floor CI job.
2
+ # Qwen3.8-Flash-Next text loading establishes Transformers 5.16.1 as Soup's
3
+ # declared training floor. trl 0.29 is the first release that does not import the
4
+ # Transformers private availability helper whose v5 return type broke trl 0.28.
5
+ # Torch 2.6.0 deliberately exercises Qwen4-Exp's legacy int64-only scatter path.
6
+ # Plotext 6.0.0 is pinned here so one CI cell exercises the real Figure API rather
7
+ # than relying only on the fake 5.x/6.x contract doubles in the unit suite.
8
+ torch==2.6.0
9
+ transformers==5.16.1
10
+ trl==0.29.0
11
+ peft==0.20.0
12
+ plotext==6.0.0
@@ -0,0 +1,391 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ # `release/**` is here so a release branch gets the matrix on the exact
6
+ # tree that will be tagged. A pull request builds the MERGE of head and
7
+ # main, which for a release cut from an older tag is not the tree that
8
+ # ships, so a PR run cannot stand in for this one.
9
+ branches: [main, 'release/**']
10
+ pull_request:
11
+ branches: [main]
12
+
13
+ jobs:
14
+ lint:
15
+ runs-on: ubuntu-latest
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+ - uses: actions/setup-python@v5
19
+ with:
20
+ python-version: "3.11"
21
+ - run: pip install ruff
22
+ # benchmarks/harness/ carries real parsing logic — mlx_sft_smoke.py
23
+ # derives the published throughput figure from mlx-lm's stdout — but was
24
+ # outside this line until now, so a lint error there could not turn CI red.
25
+ - run: ruff check src/soup_cli/ scripts/ tests/ benchmarks/
26
+ - name: Lint the workflows themselves
27
+ # `check-yaml` and a YAML parser both accept a workflow GitHub will
28
+ # reject: 195d60b used the `runner` context in a job-level `env:` block,
29
+ # which is valid YAML and invalid Actions, and the whole matrix died
30
+ # before any job produced a log. actionlint checks context availability,
31
+ # expression syntax, action inputs, and shellchecks `run:` blocks.
32
+ #
33
+ # Installed as the pinned upstream release binary with its published
34
+ # SHA-256 checked, NOT via `go install`. That is a stronger supply-chain
35
+ # position than building from source -- the bytes that run are verified
36
+ # against a hash committed here -- and it removes the failure that took
37
+ # this job down on 2026-08-31: actionlint v1.7.12 declares
38
+ # `go >= 1.25.0`, ubuntu-latest ships go 1.24.13, so `go install`
39
+ # silently switched toolchains and died fetching one:
40
+ #
41
+ # go: switching to go >= 1.25.0: module golang.org/toolchain:
42
+ # read ".../@v/list": stream error: INTERNAL_ERROR; received from peer
43
+ #
44
+ # A transient network fault in a job that is now a REQUIRED check blocks
45
+ # every merge in the repository, so this step must not depend on an
46
+ # implicit toolchain download. `--retry-all-errors` covers the rest.
47
+ env:
48
+ ACTIONLINT_VERSION: 1.7.12
49
+ ACTIONLINT_SHA256: 8aca8db96f1b94770f1b0d72b6dddcb1ebb8123cb3712530b08cc387b349a3d8
50
+ run: |
51
+ set -euo pipefail
52
+ url="https://github.com/rhysd/actionlint/releases/download/v${ACTIONLINT_VERSION}/actionlint_${ACTIONLINT_VERSION}_linux_amd64.tar.gz"
53
+ curl --fail --silent --show-error --location --retry 3 --retry-all-errors --output "${RUNNER_TEMP}/actionlint.tar.gz" "$url"
54
+ echo "${ACTIONLINT_SHA256} ${RUNNER_TEMP}/actionlint.tar.gz" | sha256sum --check --strict -
55
+ tar -xzf "${RUNNER_TEMP}/actionlint.tar.gz" -C "${RUNNER_TEMP}" actionlint
56
+ "${RUNNER_TEMP}/actionlint" -color
57
+
58
+ type-check:
59
+ runs-on: ubuntu-latest
60
+ # Non-blocking type-check baseline. The codebase adopts annotations
61
+ # incrementally, so mypy findings are surfaced as a warning annotation (and
62
+ # in the step log) but do NOT fail the job — the check stays green until
63
+ # types are tightened enough to promote it to a required gate. Reads
64
+ # [tool.mypy] from pyproject.toml (files = ["src/soup_cli"],
65
+ # ignore_missing_imports = true).
66
+ steps:
67
+ - uses: actions/checkout@v4
68
+ - uses: actions/setup-python@v5
69
+ with:
70
+ python-version: "3.11"
71
+ - run: pip install mypy
72
+ - name: mypy (non-blocking)
73
+ run: |
74
+ mypy || echo "::warning title=mypy::Type issues reported (non-blocking baseline — see the log above)"
75
+
76
+ mlx-smoke:
77
+ # #394: prove the documented standalone install on an Apple Silicon runner.
78
+ # Keep this separate from the main matrix because `.[dev]` deliberately
79
+ # installs the PyTorch/TRL stack and would hide an accidental MLX dependency.
80
+ runs-on: macos-14
81
+ steps:
82
+ - uses: actions/checkout@v4
83
+ - uses: actions/setup-python@v5
84
+ with:
85
+ python-version: "3.12"
86
+ - name: Install only the MLX runtime and smoke-test dependency
87
+ run: pip install -e ".[mlx]" pytest
88
+ - name: Verify MLX imports and the PyTorch training stack is absent
89
+ run: |
90
+ python -c "import mlx.core, mlx_lm; print(mlx.core.__version__, mlx_lm.__version__)"
91
+ python -c "import importlib.util; names=('torch','trl','datasets','peft','accelerate','bitsandbytes'); present=[name for name in names if importlib.util.find_spec(name)]; assert not present, f'unexpected training dependencies: {present}'"
92
+ - name: Run one-step MLX SFT through the real CLI
93
+ run: pytest -o addopts= -m smoke -k mlx_sft_smoke -q tests/test_smoke_train.py
94
+ pytorch-smoke:
95
+ # #596: exercise the real PyTorch SFT + DPO training pipeline on every PR.
96
+ # Keep this separate from the 3x3 matrix so the expensive model-backed
97
+ # smoke tests run once, not nine times.
98
+ runs-on: ubuntu-latest
99
+ timeout-minutes: 20
100
+ env:
101
+ PYTHONUTF8: "1"
102
+ PYTHONIOENCODING: "utf-8"
103
+
104
+ steps:
105
+ - uses: actions/checkout@v4
106
+
107
+ - uses: actions/setup-python@v5
108
+ with:
109
+ python-version: "3.11"
110
+
111
+ - name: Set HF cache location
112
+ run: echo "HF_HOME=$RUNNER_TEMP/hf-cache" >> "$GITHUB_ENV"
113
+
114
+ - name: Restore PyTorch smoke HF cache
115
+ id: hf-cache
116
+ uses: actions/cache/restore@v4
117
+ with:
118
+ path: ${{ runner.temp }}/hf-cache
119
+ key: hf-pytorch-smoke-${{ runner.os }}-${{ hashFiles('tests/test_smoke_train.py', 'pyproject.toml') }}
120
+ restore-keys: |
121
+ hf-pytorch-smoke-${{ runner.os }}-
122
+
123
+ - name: Install training dependencies
124
+ # torch>=2.6 is load-bearing, not belt-and-braces: sshleifer/tiny-gpt2
125
+ # ships only pytorch_model.bin, and transformers refuses torch.load
126
+ # below 2.6.0 under CVE-2025-32434. Removing this pin because "[dev]
127
+ # already pulls torch" breaks the job with a message naming the CVE
128
+ # rather than the cause.
129
+ run: pip install -e ".[dev]" "torch>=2.6.0"
130
+
131
+ - name: Warm tiny GPT-2 cache
132
+ shell: python
133
+ run: |
134
+ from huggingface_hub import snapshot_download
135
+
136
+ snapshot_download(
137
+ "sshleifer/tiny-gpt2",
138
+ allow_patterns=["*.json", "*.txt", "*.bin"],
139
+ )
140
+
141
+ - name: Run PyTorch smoke tests
142
+ run: python -m pytest -o addopts= -m smoke -q tests/
143
+ - name: Save PyTorch smoke HF cache
144
+ if: success() && steps.hf-cache.outputs.cache-hit != 'true'
145
+ uses: actions/cache/save@v4
146
+ with:
147
+ path: ${{ runner.temp }}/hf-cache
148
+ key: hf-pytorch-smoke-${{ runner.os }}-${{ hashFiles('tests/test_smoke_train.py', 'pyproject.toml') }}
149
+
150
+ # #502/#503/#522/#571/#651: install the exact Torch 2.6.0 / Transformers 5.16.1 /
151
+ # trl 0.29 / PEFT 0.20 support stack and Plotext 6.0.0 so pip cannot silently
152
+ # upgrade the cell, then assert every pinned compatibility boundary.
153
+ transformers-floor:
154
+ runs-on: ubuntu-latest
155
+ env:
156
+ PYTHONUTF8: "1"
157
+ PYTHONIOENCODING: "utf-8"
158
+ steps:
159
+ - uses: actions/checkout@v4
160
+ - uses: actions/setup-python@v5
161
+ with:
162
+ python-version: "3.11"
163
+ - name: Install with Transformers floor constraints
164
+ run: pip install -e ".[dev]" -c .github/constraints/transformers-floor.txt
165
+ - name: Verify constrained dependency graph
166
+ run: python -m pip check
167
+ - name: Assert installed versions match floor constraints
168
+ run: |
169
+ python - <<'PY'
170
+ import importlib.metadata as md
171
+ import re
172
+ from pathlib import Path
173
+
174
+ constraints = Path(".github/constraints/transformers-floor.txt").read_text(
175
+ encoding="utf-8"
176
+ )
177
+ pairs = re.findall(
178
+ r"^([A-Za-z0-9_-]+)==([^\s#]+)\s*$",
179
+ constraints,
180
+ re.MULTILINE,
181
+ )
182
+ expected = dict(pairs)
183
+ assert len(expected) == len(pairs), "duplicate package pin in floor constraints"
184
+ for name in ("torch", "transformers", "trl", "peft", "plotext"):
185
+ assert name in expected, f"floor constraints missing exact {name} pin"
186
+ want = expected[name]
187
+ got = md.version(name)
188
+ assert got == want, (
189
+ f"floor job expected {name}=={want} from "
190
+ f".github/constraints/transformers-floor.txt, got {got} — "
191
+ f"pip silently upgraded, ignored -c, or constraints drifted"
192
+ )
193
+ print(f"{name}={got} (matches constraints)")
194
+ PY
195
+ - name: Prove the pinned torch actually supports trl's FSDP2 path
196
+ run: |
197
+ python - <<'PY'
198
+ import torch
199
+ import torch.distributed.fsdp as fsdp
200
+
201
+ assert hasattr(fsdp, "FSDPModule"), (
202
+ "torch.distributed.fsdp.FSDPModule is absent — this is the #651 "
203
+ "root cause; the declared torch floor does not support trl 0.29"
204
+ )
205
+ import trl
206
+ from trl import DPOTrainer, KTOTrainer
207
+
208
+ print(
209
+ "trl",
210
+ trl.__version__,
211
+ "imports on torch",
212
+ torch.__version__,
213
+ )
214
+ PY
215
+ - name: Run Transformers floor compatibility guard
216
+ run: >
217
+ pytest -o addopts= --no-cov -q
218
+ tests/test_transformers_floor_compat.py
219
+ tests/test_issue571_qwen4_exp.py
220
+ tests/test_plotext_compat.py
221
+ tests/test_bugfixes.py::TestDiffModelLoading
222
+ tests/test_issue636_torch_floor.py
223
+
224
+ test:
225
+ strategy:
226
+ fail-fast: false
227
+ matrix:
228
+ os: [ubuntu-latest, windows-latest, macos-latest]
229
+ python-version: ["3.10", "3.11", "3.12"]
230
+ runs-on: ${{ matrix.os }}
231
+ env:
232
+ # Force UTF-8 mode on all platforms. Without this, Windows defaults to
233
+ # cp1252 ('charmap'), which fails when importing upstream packages that
234
+ # read their own source / data files without an explicit encoding
235
+ # (seen with trl.trainer.grpo_trainer on windows-latest / py3.11).
236
+ PYTHONUTF8: "1"
237
+ PYTHONIOENCODING: "utf-8"
238
+ steps:
239
+ - uses: actions/checkout@v4
240
+ - uses: actions/setup-python@v5
241
+ with:
242
+ python-version: ${{ matrix.python-version }}
243
+ # The Web UI escaping tests run `safe_html.js` under node, and skip when
244
+ # node is absent. Runner images happen to ship one, so the skip would be
245
+ # silent: pin it, or the only tests that execute the real escaping logic
246
+ # can disappear without anything turning red.
247
+ - uses: actions/setup-node@v4
248
+ with:
249
+ node-version: "22"
250
+ - name: Pin the HF cache to a deterministic path
251
+ # Set here and not in the job-level `env:` block: the `runner` context
252
+ # is not available there (only github / needs / strategy / matrix /
253
+ # vars / secrets / inputs are), and referencing it makes GitHub reject
254
+ # the whole workflow file before any job starts.
255
+ #
256
+ # Why a fixed path at all: the default ~/.cache/huggingface sits under
257
+ # a different user on each runner OS, so actions/cache cannot restore
258
+ # it by one key. Kept OUTSIDE the checkout because it lands ~0.5 GB,
259
+ # which the tests that walk cwd for containment would otherwise scan.
260
+ shell: bash
261
+ run: echo "HF_HOME=$RUNNER_TEMP/hf-cache" >> "$GITHUB_ENV"
262
+ - name: Restore HF Hub cache
263
+ id: hf-cache
264
+ uses: actions/cache/restore@v4
265
+ with:
266
+ path: ${{ runner.temp }}/hf-cache
267
+ # Keyed on this file, so editing the model list below re-warms.
268
+ key: hf-${{ runner.os }}-${{ hashFiles('.github/workflows/ci.yml') }}
269
+ restore-keys: hf-${{ runner.os }}-
270
+ - name: Install dependencies
271
+ run: pip install -e ".[dev]"
272
+ - name: Warm HF Hub cache (models the tests load)
273
+ # Pre-download the models the unit tests load, with retries, so a
274
+ # transient HF Hub 429 (Too Many Requests) on a single matrix cell does
275
+ # not red the whole run. Never fails the job: if warming can't complete
276
+ # it emits a ::warning:: and lets the test step run as before.
277
+ #
278
+ # The list is EMPIRICAL — it is what a full local run actually leaves in
279
+ # ~/.cache/huggingface, not what greps for repo-shaped strings in
280
+ # tests/ suggest (most of those are config fixtures that never
281
+ # download). The list grew because run 30942028585 reddened
282
+ # windows/3.10 on a 429 for SmolLM2-135M-Instruct/config.json — a repo
283
+ # this step did not warm, so the retry loop above never protected it.
284
+ #
285
+ # "gpt2" is deliberately unqualified: tests ask for the bare id, which
286
+ # caches as models--gpt2. Warming "openai-community/gpt2" instead would
287
+ # fill a different directory and every test would still miss.
288
+ id: warm
289
+ shell: python
290
+ run: |
291
+ import os
292
+ import time
293
+ from huggingface_hub import snapshot_download
294
+
295
+ # Per-repo file sets, also empirical: these are the files a populated
296
+ # local cache actually holds after running the suite. Downloading
297
+ # whole snapshots instead costs 1.6 GB per cell — mostly the TF /
298
+ # Flax copies and the pytorch_model.bin twin of a safetensors file
299
+ # that transformers never opens when safetensors is present.
300
+ TEXT_ONLY = ["*.json", "*.txt", "*.model"] # config + tokenizer
301
+ SAFETENSORS = TEXT_ONLY + ["*.safetensors"]
302
+ # Two of the fixture repos predate safetensors and ship weights ONLY
303
+ # as pytorch_model.bin. Both are a few MB, so pulling the .bin costs
304
+ # nothing here — but excluding it left the ASR test unable to build a
305
+ # model offline, which a full offline run of the suite caught.
306
+ LEGACY_BIN = TEXT_ONLY + ["*.bin"]
307
+
308
+ models = [
309
+ ("sshleifer/tiny-gpt2", LEGACY_BIN),
310
+ ("hf-internal-testing/tiny-random-gpt2", SAFETENSORS),
311
+ ("hf-internal-testing/tiny-random-WhisperForConditionalGeneration", LEGACY_BIN),
312
+ # Weights are never loaded for these two — only the config the
313
+ # 429 above was raised on.
314
+ ("HuggingFaceTB/SmolLM2-135M", TEXT_ONLY),
315
+ ("HuggingFaceTB/SmolLM2-135M-Instruct", TEXT_ONLY),
316
+ ("gpt2", SAFETENSORS),
317
+ ]
318
+
319
+ # One budget for the whole list, not per repo. Run 30947949103
320
+ # showed why: on windows/3.11 ALL SIX repos failed EVERY attempt,
321
+ # including the tiny fixtures every other cell fetched in under a
322
+ # second. The Hub had cut that runner off for the duration — so
323
+ # burning a fresh retry ladder on repo #2 the moment repo #1 gave up
324
+ # just spends the budget faster without ever waiting out the block.
325
+ deadline = time.monotonic() + 360
326
+ pending = list(models)
327
+ delay = 10
328
+
329
+ while pending and time.monotonic() < deadline:
330
+ still_pending = []
331
+ for repo, allow in pending:
332
+ try:
333
+ snapshot_download(repo, allow_patterns=allow)
334
+ print(f"warmed {repo}")
335
+ except Exception as exc: # noqa: BLE001 — best effort, never fail the job
336
+ print(f"{repo}: {type(exc).__name__}: {exc}")
337
+ still_pending.append((repo, allow))
338
+ pending = still_pending
339
+ if pending:
340
+ print(f"{len(pending)} repo(s) left; retrying in {delay}s")
341
+ time.sleep(delay)
342
+ delay = min(delay * 2, 60)
343
+
344
+ for repo, _ in pending:
345
+ print(f"::warning title=HF cache::could not warm {repo} within the retry budget")
346
+
347
+ with open(os.environ["GITHUB_OUTPUT"], "a", encoding="utf-8") as fh:
348
+ fh.write(f"warmed={'partial' if pending else 'all'}\n")
349
+ - name: Save HF Hub cache
350
+ # Only a COMPLETE warm is saved. A partial one would freeze the very
351
+ # gap this step exists to close: the key is content-addressed, so a
352
+ # cache written while a model was 429-ing is never replaced, and every
353
+ # later run would restore the same hole.
354
+ #
355
+ # ANY cell may save, deliberately. Restricting this to 3.11 to avoid
356
+ # redundant uploads is what left Windows with no cache at all in run
357
+ # 30947949103: 3.11 was the one cell the Hub cut off, so the two
358
+ # healthy Windows cells were not allowed to save what they had. The
359
+ # losers of the resulting race log "unable to reserve cache" and move
360
+ # on, which is far cheaper than an OS that never gets a cache.
361
+ if: always() && steps.warm.outputs.warmed == 'all' && steps.hf-cache.outputs.cache-hit != 'true'
362
+ uses: actions/cache/save@v4
363
+ with:
364
+ path: ${{ runner.temp }}/hf-cache
365
+ key: hf-${{ runner.os }}-${{ hashFiles('.github/workflows/ci.yml') }}
366
+ - name: Run unit tests with coverage
367
+ run: pytest tests/ -v --tb=short --junitxml=report.xml --cov=soup_cli --cov-report=xml:coverage.xml --cov-report=term-missing:skip-covered
368
+ - name: Upload coverage to Codecov
369
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11'
370
+ uses: codecov/codecov-action@v4
371
+ with:
372
+ files: coverage.xml
373
+ fail_ci_if_error: false
374
+ - name: Update test count badge
375
+ if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.11' && github.ref == 'refs/heads/main' && github.event_name == 'push'
376
+ run: |
377
+ TESTS=$(python -c "
378
+ import xml.etree.ElementTree as ET
379
+ root = ET.parse('report.xml').getroot()
380
+ ts = root.find('testsuite')
381
+ print(ts.attrib.get('tests', '0') if ts is not None else root.attrib.get('tests', '0'))
382
+ ")
383
+ echo "Test count: $TESTS"
384
+ # --fail-with-body: surface non-2xx (e.g. 401 expired token) as a
385
+ # CI failure with the response body printed, instead of silently
386
+ # discarding to /dev/null and leaving the badge stale.
387
+ curl --fail-with-body -sS \
388
+ -X PATCH \
389
+ -H "Authorization: token ${{ secrets.GIST_TOKEN }}" \
390
+ -d "{\"files\":{\"soup_tests.json\":{\"content\":\"{\\\"schemaVersion\\\":1,\\\"label\\\":\\\"tests\\\",\\\"message\\\":\\\"$TESTS passed\\\",\\\"color\\\":\\\"brightgreen\\\"}\"}}}" \
391
+ "https://api.github.com/gists/65fdc943f85f3b2c46ecddb415c2b779"
@@ -0,0 +1,50 @@
1
+ # Recipe repo-id resolution (#677).
2
+ #
3
+ # The catalog names a Hugging Face repo in two places per recipe --
4
+ # `RecipeMeta.model` and the YAML `base:` -- and nothing checked that either
5
+ # resolves. #661 found two that did not, both shipped and released:
6
+ # `validate-recipes` parses the YAML through the real schema, and a nonexistent
7
+ # repo id is a perfectly well-formed string.
8
+ #
9
+ # Deliberately NOT a pull-request gate. Resolving 160+ ids on every PR would
10
+ # make an unrelated docs change depend on Hub availability and rate limits, and
11
+ # a job that goes red for reasons unrelated to the diff is one people learn to
12
+ # re-run rather than read. Repos disappear on a timescale of months, so weekly
13
+ # finds it long before a user does.
14
+ #
15
+ # Measured cost, 2026-09-06, unauthenticated against the live Hub:
16
+ # 165 recipes / 330 surfaces / 118 unique ids after de-duplication (64% saved)
17
+ # 29.8 s wall clock, 239 ms median, 340 ms p95, 0 rate limits
18
+ # De-duplication matters because gated bases are shared: 18 unique gated ids
19
+ # cover 68 of the 330 surfaces. Without it the sweep is ~83 s.
20
+ name: recipe repo ids
21
+
22
+ on:
23
+ schedule:
24
+ # Mondays, 07:00 UTC -- an hour after dependency-drift so the two do not
25
+ # contend for the same Hub rate limit.
26
+ - cron: "0 7 * * 1"
27
+ workflow_dispatch:
28
+
29
+ # Never add a pull_request trigger here.
30
+ permissions:
31
+ contents: read
32
+
33
+ jobs:
34
+ resolve:
35
+ name: resolve every recipe model id anonymously
36
+ runs-on: ubuntu-latest
37
+ steps:
38
+ - uses: actions/checkout@v4
39
+ - uses: actions/setup-python@v5
40
+ with:
41
+ python-version: "3.12"
42
+ - name: Install the catalog and the Hub client only
43
+ # Not `.[dev]`: this needs the recipe catalog and huggingface_hub, not
44
+ # the PyTorch stack. A lighter install is also a faster scheduled job.
45
+ run: pip install -e . huggingface-hub pyyaml
46
+ - name: Resolve
47
+ # No HF_TOKEN in scope, deliberately and by omission: a token would
48
+ # resolve gated repos as EXISTS and hide the very case this guards.
49
+ # The script also refuses to run if one is set.
50
+ run: python scripts/check_recipe_repo_ids.py