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.
- soup_cli-0.75.1/.github/constraints/transformers-floor.txt +12 -0
- soup_cli-0.75.1/.github/workflows/ci.yml +391 -0
- soup_cli-0.75.1/.github/workflows/recipe-repo-ids.yml +50 -0
- soup_cli-0.75.1/CHANGELOG.md +4674 -0
- soup_cli-0.75.1/CODE_OF_CONDUCT.md +79 -0
- soup_cli-0.75.1/CONTRIBUTING.md +547 -0
- soup_cli-0.75.1/CONTRIBUTORS.md +343 -0
- soup_cli-0.75.1/PKG-INFO +618 -0
- soup_cli-0.75.1/README.md +464 -0
- soup_cli-0.75.1/README.tr.md +470 -0
- soup_cli-0.75.1/SECURITY.md +70 -0
- soup_cli-0.75.1/benchmarks/README.md +114 -0
- soup_cli-0.75.1/benchmarks/bench_validator.py +183 -0
- soup_cli-0.75.1/benchmarks/gate-655-pinned-store-accounting.md +199 -0
- soup_cli-0.75.1/benchmarks/gate-674-quest-w4a4-sft.md +306 -0
- soup_cli-0.75.1/benchmarks/harness/mlx_sft_smoke.py +291 -0
- soup_cli-0.75.1/benchmarks/run-m1-8gb-mlx-sft.md +283 -0
- soup_cli-0.75.1/docs/adapters-and-governance.md +609 -0
- soup_cli-0.75.1/docs/assets/web-ui-new-training.png +0 -0
- soup_cli-0.75.1/docs/backends-and-ops.md +1148 -0
- soup_cli-0.75.1/docs/commands.md +440 -0
- soup_cli-0.75.1/docs/data.md +1001 -0
- soup_cli-0.75.1/docs/evaluation.md +822 -0
- soup_cli-0.75.1/docs/models.md +161 -0
- soup_cli-0.75.1/docs/peft-and-efficiency.md +650 -0
- soup_cli-0.75.1/docs/performance-and-quantization.md +997 -0
- soup_cli-0.75.1/docs/serving-and-export.md +782 -0
- soup_cli-0.75.1/docs/training.md +1628 -0
- soup_cli-0.75.1/pyproject.toml +266 -0
- soup_cli-0.75.1/scripts/check_recipe_repo_ids.py +267 -0
- soup_cli-0.75.1/src/soup_cli/__init__.py +3 -0
- soup_cli-0.75.1/src/soup_cli/cans/run.py +294 -0
- soup_cli-0.75.1/src/soup_cli/cans/schema.py +218 -0
- soup_cli-0.75.1/src/soup_cli/cans/unpack.py +173 -0
- soup_cli-0.75.1/src/soup_cli/cli.py +1013 -0
- soup_cli-0.75.1/src/soup_cli/cloud/lambda_labs.py +396 -0
- soup_cli-0.75.1/src/soup_cli/cloud/modal.py +338 -0
- soup_cli-0.75.1/src/soup_cli/commands/adapters.py +1704 -0
- soup_cli-0.75.1/src/soup_cli/commands/can.py +263 -0
- soup_cli-0.75.1/src/soup_cli/commands/chat.py +290 -0
- soup_cli-0.75.1/src/soup_cli/commands/data.py +4037 -0
- soup_cli-0.75.1/src/soup_cli/commands/diff.py +345 -0
- soup_cli-0.75.1/src/soup_cli/commands/doctor.py +904 -0
- soup_cli-0.75.1/src/soup_cli/commands/eval.py +1426 -0
- soup_cli-0.75.1/src/soup_cli/commands/export.py +1568 -0
- soup_cli-0.75.1/src/soup_cli/commands/generate.py +953 -0
- soup_cli-0.75.1/src/soup_cli/commands/infer.py +744 -0
- soup_cli-0.75.1/src/soup_cli/commands/ingest.py +332 -0
- soup_cli-0.75.1/src/soup_cli/commands/migrate.py +167 -0
- soup_cli-0.75.1/src/soup_cli/commands/push.py +571 -0
- soup_cli-0.75.1/src/soup_cli/commands/runs.py +660 -0
- soup_cli-0.75.1/src/soup_cli/commands/serve.py +2541 -0
- soup_cli-0.75.1/src/soup_cli/commands/ui.py +212 -0
- soup_cli-0.75.1/src/soup_cli/config/backend_support.py +170 -0
- soup_cli-0.75.1/src/soup_cli/config/loader.py +117 -0
- soup_cli-0.75.1/src/soup_cli/config/schema.py +7100 -0
- soup_cli-0.75.1/src/soup_cli/config/unknown_keys.py +232 -0
- soup_cli-0.75.1/src/soup_cli/data/formats.py +736 -0
- soup_cli-0.75.1/src/soup_cli/data/loader.py +1175 -0
- soup_cli-0.75.1/src/soup_cli/data/validator.py +257 -0
- soup_cli-0.75.1/src/soup_cli/eval/gate.py +617 -0
- soup_cli-0.75.1/src/soup_cli/experiment/tracker.py +615 -0
- soup_cli-0.75.1/src/soup_cli/mcp_server/execution.py +436 -0
- soup_cli-0.75.1/src/soup_cli/mcp_server/registry.py +1194 -0
- soup_cli-0.75.1/src/soup_cli/monitoring/callback.py +645 -0
- soup_cli-0.75.1/src/soup_cli/monitoring/display.py +139 -0
- soup_cli-0.75.1/src/soup_cli/recipes/catalog.py +5178 -0
- soup_cli-0.75.1/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +18 -0
- soup_cli-0.75.1/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +17 -0
- soup_cli-0.75.1/src/soup_cli/trainer/distill.py +794 -0
- soup_cli-0.75.1/src/soup_cli/trainer/embedding.py +575 -0
- soup_cli-0.75.1/src/soup_cli/trainer/mlx_masking.py +333 -0
- soup_cli-0.75.1/src/soup_cli/trainer/mlx_optim.py +220 -0
- soup_cli-0.75.1/src/soup_cli/trainer/mlx_sft.py +771 -0
- soup_cli-0.75.1/src/soup_cli/trainer/ppo.py +936 -0
- soup_cli-0.75.1/src/soup_cli/trainer/pretrain.py +484 -0
- soup_cli-0.75.1/src/soup_cli/trainer/sft.py +2075 -0
- soup_cli-0.75.1/src/soup_cli/trainer/stream_setup.py +1187 -0
- soup_cli-0.75.1/src/soup_cli/ui/app.py +1136 -0
- soup_cli-0.75.1/src/soup_cli/ui/static/app.js +1087 -0
- soup_cli-0.75.1/src/soup_cli/ui/static/index.html +209 -0
- soup_cli-0.75.1/src/soup_cli/ui/static/safe_html.js +48 -0
- soup_cli-0.75.1/src/soup_cli/utils/adapter_sign.py +601 -0
- soup_cli-0.75.1/src/soup_cli/utils/argv_redaction.py +163 -0
- soup_cli-0.75.1/src/soup_cli/utils/audit_log.py +319 -0
- soup_cli-0.75.1/src/soup_cli/utils/deepspeed.py +455 -0
- soup_cli-0.75.1/src/soup_cli/utils/grpo_variants.py +380 -0
- soup_cli-0.75.1/src/soup_cli/utils/hubs.py +817 -0
- soup_cli-0.75.1/src/soup_cli/utils/ingest_pull.py +537 -0
- soup_cli-0.75.1/src/soup_cli/utils/ingest_sources.py +492 -0
- soup_cli-0.75.1/src/soup_cli/utils/layer_stream_runtime.py +2501 -0
- soup_cli-0.75.1/src/soup_cli/utils/live_eval.py +735 -0
- soup_cli-0.75.1/src/soup_cli/utils/local_request_guard.py +133 -0
- soup_cli-0.75.1/src/soup_cli/utils/lr_groups.py +227 -0
- soup_cli-0.75.1/src/soup_cli/utils/mole_routing.py +811 -0
- soup_cli-0.75.1/src/soup_cli/utils/multipack_sampler.py +332 -0
- soup_cli-0.75.1/src/soup_cli/utils/paths.py +311 -0
- soup_cli-0.75.1/src/soup_cli/utils/peft_wiring.py +911 -0
- soup_cli-0.75.1/src/soup_cli/utils/plotext_compat.py +83 -0
- soup_cli-0.75.1/src/soup_cli/utils/safe_regex.py +312 -0
- soup_cli-0.75.1/src/soup_cli/utils/sse_train_stream.py +117 -0
- soup_cli-0.75.1/src/soup_cli/utils/terminal.py +29 -0
- soup_cli-0.75.1/src/soup_cli/utils/trackers.py +565 -0
- soup_cli-0.75.1/src/soup_cli/utils/uld.py +553 -0
- soup_cli-0.75.1/src/soup_cli/utils/vllm.py +705 -0
- soup_cli-0.75.1/src/soup_cli/utils/yaml_limits.py +121 -0
- soup_cli-0.75.1/tests/fixtures/issue204_langfuse_observations_v2_page.json +105 -0
- soup_cli-0.75.1/tests/fixtures/recipe_config_snapshots.json +2103 -0
- soup_cli-0.75.1/tests/test_adapter_trusted_key_backend.py +134 -0
- soup_cli-0.75.1/tests/test_argv_redaction_bundled_shorts.py +78 -0
- soup_cli-0.75.1/tests/test_audit_log_option_masking.py +135 -0
- soup_cli-0.75.1/tests/test_awq_gptq_export.py +1110 -0
- soup_cli-0.75.1/tests/test_bugfixes.py +1305 -0
- soup_cli-0.75.1/tests/test_can_deploy_target_containment.py +115 -0
- soup_cli-0.75.1/tests/test_can_output_control_bytes.py +99 -0
- soup_cli-0.75.1/tests/test_can_read_limits.py +199 -0
- soup_cli-0.75.1/tests/test_cli_subprocess.py +598 -0
- soup_cli-0.75.1/tests/test_cloud_output_dir_containment.py +154 -0
- soup_cli-0.75.1/tests/test_code_review_critical.py +371 -0
- soup_cli-0.75.1/tests/test_code_review_recurring.py +119 -0
- soup_cli-0.75.1/tests/test_config_regex_limits.py +283 -0
- soup_cli-0.75.1/tests/test_data_tools.py +230 -0
- soup_cli-0.75.1/tests/test_doctor.py +365 -0
- soup_cli-0.75.1/tests/test_hub_push_credentials.py +135 -0
- soup_cli-0.75.1/tests/test_inference_advanced.py +910 -0
- soup_cli-0.75.1/tests/test_issue1005_peft021_canonical_names.py +283 -0
- soup_cli-0.75.1/tests/test_issue1005_peft021_review_round.py +350 -0
- soup_cli-0.75.1/tests/test_issue204_langfuse_pull.py +1221 -0
- soup_cli-0.75.1/tests/test_issue23_mlx_display_bridge.py +331 -0
- soup_cli-0.75.1/tests/test_issue23_mlx_harness_bridge.py +233 -0
- soup_cli-0.75.1/tests/test_issue23_mlx_val_loss_producer.py +450 -0
- soup_cli-0.75.1/tests/test_issue332_vllm_prompt.py +615 -0
- soup_cli-0.75.1/tests/test_issue352_fsdp_peft_checkpoint.py +91 -0
- soup_cli-0.75.1/tests/test_issue359_deepspeed_guard_coverage.py +441 -0
- soup_cli-0.75.1/tests/test_issue369_canonical_named_parameters.py +242 -0
- soup_cli-0.75.1/tests/test_issue427_qwen35_text_modality.py +56 -0
- soup_cli-0.75.1/tests/test_issue443_interleave_wiring.py +526 -0
- soup_cli-0.75.1/tests/test_issue459_interleave_streaming_hub.py +813 -0
- soup_cli-0.75.1/tests/test_issue491_frozen_base_load_dtype.py +223 -0
- soup_cli-0.75.1/tests/test_issue502_qwen35_transformers5.py +236 -0
- soup_cli-0.75.1/tests/test_issue602_qwen4_ple_streaming.py +1189 -0
- soup_cli-0.75.1/tests/test_issue627_unknown_config_keys.py +1182 -0
- soup_cli-0.75.1/tests/test_issue634_mlx_resume.py +631 -0
- soup_cli-0.75.1/tests/test_issue636_torch_floor.py +158 -0
- soup_cli-0.75.1/tests/test_issue642_sweep_dry_run.py +367 -0
- soup_cli-0.75.1/tests/test_issue676_non_dict_messages.py +157 -0
- soup_cli-0.75.1/tests/test_issue677_recipe_repo_id_guard.py +443 -0
- soup_cli-0.75.1/tests/test_issue681_uld_id_compat.py +184 -0
- soup_cli-0.75.1/tests/test_issue682_uld_loss_label_mask.py +220 -0
- soup_cli-0.75.1/tests/test_issue683_mlx_response_masking.py +753 -0
- soup_cli-0.75.1/tests/test_issue684_mlx_grad_accumulation.py +250 -0
- soup_cli-0.75.1/tests/test_issue685_mlx_grad_checkpoint.py +273 -0
- soup_cli-0.75.1/tests/test_issue686_mlx_optimizer_schedule.py +705 -0
- soup_cli-0.75.1/tests/test_issue687_ui_auth.py +215 -0
- soup_cli-0.75.1/tests/test_issue688_ui_drain.py +190 -0
- soup_cli-0.75.1/tests/test_issue689_hub_streaming.py +159 -0
- soup_cli-0.75.1/tests/test_issue690_embedding_trainer_attrs.py +167 -0
- soup_cli-0.75.1/tests/test_issue691_sft_packing.py +249 -0
- soup_cli-0.75.1/tests/test_issue695_validate_agrees_with_loader.py +137 -0
- soup_cli-0.75.1/tests/test_issue700_embedding_lora_zero.py +316 -0
- soup_cli-0.75.1/tests/test_issue721_ppo_config_forwarding.py +178 -0
- soup_cli-0.75.1/tests/test_issue723_sequence_gspo.py +487 -0
- soup_cli-0.75.1/tests/test_issue724_loraplus_optimizer.py +246 -0
- soup_cli-0.75.1/tests/test_issue724_loraplus_wiring_coverage.py +155 -0
- soup_cli-0.75.1/tests/test_issue731_ui_docs_bind.py +164 -0
- soup_cli-0.75.1/tests/test_issue748_config_fields_reach_a_consumer.py +702 -0
- soup_cli-0.75.1/tests/test_issue752_cli_commands_called_as_functions.py +471 -0
- soup_cli-0.75.1/tests/test_issue755_backend_support_registry.py +628 -0
- soup_cli-0.75.1/tests/test_issue771_validator_fast_path.py +165 -0
- soup_cli-0.75.1/tests/test_issue775_path_containment_ratchet.py +573 -0
- soup_cli-0.75.1/tests/test_issue781_inference_bos.py +777 -0
- soup_cli-0.75.1/tests/test_issue811_data_validate_exit_codes.py +138 -0
- soup_cli-0.75.1/tests/test_judge_key_scoping.py +59 -0
- soup_cli-0.75.1/tests/test_lambda_submit_interrupt.py +335 -0
- soup_cli-0.75.1/tests/test_local_request_guard.py +102 -0
- soup_cli-0.75.1/tests/test_mcp_capacity_all_runs.py +91 -0
- soup_cli-0.75.1/tests/test_mcp_digest_no_follow.py +292 -0
- soup_cli-0.75.1/tests/test_mcp_plan_inputs.py +230 -0
- soup_cli-0.75.1/tests/test_mcp_post_spawn_failure.py +130 -0
- soup_cli-0.75.1/tests/test_mlx_backend.py +327 -0
- soup_cli-0.75.1/tests/test_mlx_max_grad_norm.py +259 -0
- soup_cli-0.75.1/tests/test_modal_stub_outputs.py +321 -0
- soup_cli-0.75.1/tests/test_multipack_ffd_placement.py +162 -0
- soup_cli-0.75.1/tests/test_part_a_wave1.py +387 -0
- soup_cli-0.75.1/tests/test_plotext_compat.py +265 -0
- soup_cli-0.75.1/tests/test_readme_translation_sync.py +312 -0
- soup_cli-0.75.1/tests/test_recipes.py +1227 -0
- soup_cli-0.75.1/tests/test_replay.py +189 -0
- soup_cli-0.75.1/tests/test_review_fixes_v07133.py +731 -0
- soup_cli-0.75.1/tests/test_runs_clean_keep_weights.py +177 -0
- soup_cli-0.75.1/tests/test_safe_regex.py +240 -0
- soup_cli-0.75.1/tests/test_serve.py +397 -0
- soup_cli-0.75.1/tests/test_serve_local_request_guard.py +307 -0
- soup_cli-0.75.1/tests/test_smoke_train.py +304 -0
- soup_cli-0.75.1/tests/test_training_speed.py +1339 -0
- soup_cli-0.75.1/tests/test_ui.py +859 -0
- soup_cli-0.75.1/tests/test_ui_config_builder.py +316 -0
- soup_cli-0.75.1/tests/test_ui_live_monitor.py +484 -0
- soup_cli-0.75.1/tests/test_ui_metrics.py +382 -0
- soup_cli-0.75.1/tests/test_ui_rendering_escapes.py +184 -0
- soup_cli-0.75.1/tests/test_ui_security_headers.py +203 -0
- soup_cli-0.75.1/tests/test_v0401_part_d.py +217 -0
- soup_cli-0.75.1/tests/test_v0420.py +977 -0
- soup_cli-0.75.1/tests/test_v0430_part_a.py +269 -0
- soup_cli-0.75.1/tests/test_v0500_part_a.py +395 -0
- soup_cli-0.75.1/tests/test_v0530.py +1117 -0
- soup_cli-0.75.1/tests/test_v05311.py +1194 -0
- soup_cli-0.75.1/tests/test_v0536.py +843 -0
- soup_cli-0.75.1/tests/test_v0537.py +2172 -0
- soup_cli-0.75.1/tests/test_v0538.py +637 -0
- soup_cli-0.75.1/tests/test_v0539.py +883 -0
- soup_cli-0.75.1/tests/test_v0630_part_a.py +462 -0
- soup_cli-0.75.1/tests/test_v07124.py +299 -0
- soup_cli-0.75.1/tests/test_v07130.py +813 -0
- soup_cli-0.75.1/tests/test_v07132.py +956 -0
- soup_cli-0.75.1/tests/test_v07135.py +1272 -0
- soup_cli-0.75.1/tests/test_v07141_telemetry_prompt.py +326 -0
- soup_cli-0.75.1/tests/test_v07201.py +523 -0
- soup_cli-0.75.1/tests/test_v07202.py +1983 -0
- soup_cli-0.75.1/tests/test_v07203.py +2969 -0
- soup_cli-0.75.1/tests/test_val_loss_end_to_end.py +634 -0
- soup_cli-0.75.1/tests/test_validator.py +141 -0
- soup_cli-0.75.1/tests/test_yaml_expanded_limit.py +283 -0
- soup_cli-0.74.0/.github/constraints/transformers-floor.txt +0 -12
- soup_cli-0.74.0/.github/workflows/ci.yml +0 -357
- soup_cli-0.74.0/CHANGELOG.md +0 -4229
- soup_cli-0.74.0/CODE_OF_CONDUCT.md +0 -79
- soup_cli-0.74.0/CONTRIBUTING.md +0 -537
- soup_cli-0.74.0/CONTRIBUTORS.md +0 -256
- soup_cli-0.74.0/PKG-INFO +0 -634
- soup_cli-0.74.0/README.md +0 -480
- soup_cli-0.74.0/SECURITY.md +0 -66
- soup_cli-0.74.0/benchmarks/README.md +0 -110
- soup_cli-0.74.0/docs/adapters-and-governance.md +0 -608
- soup_cli-0.74.0/docs/backends-and-ops.md +0 -1056
- soup_cli-0.74.0/docs/commands.md +0 -437
- soup_cli-0.74.0/docs/data.md +0 -947
- soup_cli-0.74.0/docs/evaluation.md +0 -820
- soup_cli-0.74.0/docs/models.md +0 -156
- soup_cli-0.74.0/docs/peft-and-efficiency.md +0 -651
- soup_cli-0.74.0/docs/performance-and-quantization.md +0 -963
- soup_cli-0.74.0/docs/serving-and-export.md +0 -767
- soup_cli-0.74.0/docs/training.md +0 -1615
- soup_cli-0.74.0/pyproject.toml +0 -267
- soup_cli-0.74.0/src/soup_cli/__init__.py +0 -3
- soup_cli-0.74.0/src/soup_cli/cans/run.py +0 -273
- soup_cli-0.74.0/src/soup_cli/cans/schema.py +0 -211
- soup_cli-0.74.0/src/soup_cli/cans/unpack.py +0 -104
- soup_cli-0.74.0/src/soup_cli/cli.py +0 -846
- soup_cli-0.74.0/src/soup_cli/cloud/lambda_labs.py +0 -346
- soup_cli-0.74.0/src/soup_cli/cloud/modal.py +0 -238
- soup_cli-0.74.0/src/soup_cli/commands/adapters.py +0 -1703
- soup_cli-0.74.0/src/soup_cli/commands/can.py +0 -260
- soup_cli-0.74.0/src/soup_cli/commands/chat.py +0 -306
- soup_cli-0.74.0/src/soup_cli/commands/data.py +0 -4009
- soup_cli-0.74.0/src/soup_cli/commands/diff.py +0 -359
- soup_cli-0.74.0/src/soup_cli/commands/doctor.py +0 -714
- soup_cli-0.74.0/src/soup_cli/commands/eval.py +0 -1419
- soup_cli-0.74.0/src/soup_cli/commands/export.py +0 -1540
- soup_cli-0.74.0/src/soup_cli/commands/generate.py +0 -951
- soup_cli-0.74.0/src/soup_cli/commands/infer.py +0 -758
- soup_cli-0.74.0/src/soup_cli/commands/ingest.py +0 -150
- soup_cli-0.74.0/src/soup_cli/commands/migrate.py +0 -155
- soup_cli-0.74.0/src/soup_cli/commands/push.py +0 -545
- soup_cli-0.74.0/src/soup_cli/commands/runs.py +0 -657
- soup_cli-0.74.0/src/soup_cli/commands/serve.py +0 -2489
- soup_cli-0.74.0/src/soup_cli/commands/ui.py +0 -181
- soup_cli-0.74.0/src/soup_cli/config/loader.py +0 -114
- soup_cli-0.74.0/src/soup_cli/config/schema.py +0 -7048
- soup_cli-0.74.0/src/soup_cli/config/unknown_keys.py +0 -186
- soup_cli-0.74.0/src/soup_cli/data/formats.py +0 -675
- soup_cli-0.74.0/src/soup_cli/data/loader.py +0 -1069
- soup_cli-0.74.0/src/soup_cli/data/validator.py +0 -148
- soup_cli-0.74.0/src/soup_cli/eval/gate.py +0 -610
- soup_cli-0.74.0/src/soup_cli/experiment/tracker.py +0 -581
- soup_cli-0.74.0/src/soup_cli/mcp_server/execution.py +0 -322
- soup_cli-0.74.0/src/soup_cli/mcp_server/registry.py +0 -1132
- soup_cli-0.74.0/src/soup_cli/monitoring/callback.py +0 -610
- soup_cli-0.74.0/src/soup_cli/monitoring/display.py +0 -129
- soup_cli-0.74.0/src/soup_cli/recipes/catalog.py +0 -5036
- soup_cli-0.74.0/src/soup_cli/templates/fetch_examples/llama-3.1-8b-lora.yaml +0 -18
- soup_cli-0.74.0/src/soup_cli/templates/fetch_examples/qwen2.5-7b-dpo.yaml +0 -17
- soup_cli-0.74.0/src/soup_cli/trainer/distill.py +0 -761
- soup_cli-0.74.0/src/soup_cli/trainer/embedding.py +0 -538
- soup_cli-0.74.0/src/soup_cli/trainer/mlx_sft.py +0 -373
- soup_cli-0.74.0/src/soup_cli/trainer/ppo.py +0 -875
- soup_cli-0.74.0/src/soup_cli/trainer/pretrain.py +0 -476
- soup_cli-0.74.0/src/soup_cli/trainer/sft.py +0 -2078
- soup_cli-0.74.0/src/soup_cli/trainer/stream_setup.py +0 -1187
- soup_cli-0.74.0/src/soup_cli/ui/app.py +0 -848
- soup_cli-0.74.0/src/soup_cli/ui/static/app.js +0 -1003
- soup_cli-0.74.0/src/soup_cli/ui/static/index.html +0 -208
- soup_cli-0.74.0/src/soup_cli/utils/adapter_sign.py +0 -592
- soup_cli-0.74.0/src/soup_cli/utils/audit_log.py +0 -316
- soup_cli-0.74.0/src/soup_cli/utils/deepspeed.py +0 -452
- soup_cli-0.74.0/src/soup_cli/utils/grpo_variants.py +0 -348
- soup_cli-0.74.0/src/soup_cli/utils/hubs.py +0 -786
- soup_cli-0.74.0/src/soup_cli/utils/ingest_sources.py +0 -489
- soup_cli-0.74.0/src/soup_cli/utils/layer_stream_runtime.py +0 -2340
- soup_cli-0.74.0/src/soup_cli/utils/live_eval.py +0 -711
- soup_cli-0.74.0/src/soup_cli/utils/lr_groups.py +0 -235
- soup_cli-0.74.0/src/soup_cli/utils/mole_routing.py +0 -828
- soup_cli-0.74.0/src/soup_cli/utils/multipack_sampler.py +0 -254
- soup_cli-0.74.0/src/soup_cli/utils/paths.py +0 -276
- soup_cli-0.74.0/src/soup_cli/utils/peft_wiring.py +0 -850
- soup_cli-0.74.0/src/soup_cli/utils/plotext_compat.py +0 -75
- soup_cli-0.74.0/src/soup_cli/utils/sse_train_stream.py +0 -110
- soup_cli-0.74.0/src/soup_cli/utils/trackers.py +0 -491
- soup_cli-0.74.0/src/soup_cli/utils/uld.py +0 -510
- soup_cli-0.74.0/src/soup_cli/utils/vllm.py +0 -654
- soup_cli-0.74.0/tests/fixtures/recipe_config_snapshots.json +0 -2054
- soup_cli-0.74.0/tests/test_awq_gptq_export.py +0 -907
- soup_cli-0.74.0/tests/test_bugfixes.py +0 -1302
- soup_cli-0.74.0/tests/test_cli_subprocess.py +0 -553
- soup_cli-0.74.0/tests/test_code_review_critical.py +0 -371
- soup_cli-0.74.0/tests/test_code_review_recurring.py +0 -110
- soup_cli-0.74.0/tests/test_data_tools.py +0 -229
- soup_cli-0.74.0/tests/test_doctor.py +0 -178
- soup_cli-0.74.0/tests/test_inference_advanced.py +0 -910
- soup_cli-0.74.0/tests/test_issue332_vllm_prompt.py +0 -613
- soup_cli-0.74.0/tests/test_issue352_fsdp_peft_checkpoint.py +0 -72
- soup_cli-0.74.0/tests/test_issue359_deepspeed_guard_coverage.py +0 -340
- soup_cli-0.74.0/tests/test_issue369_canonical_named_parameters.py +0 -234
- soup_cli-0.74.0/tests/test_issue427_qwen35_text_modality.py +0 -54
- soup_cli-0.74.0/tests/test_issue443_interleave_wiring.py +0 -438
- soup_cli-0.74.0/tests/test_issue459_interleave_streaming_hub.py +0 -788
- soup_cli-0.74.0/tests/test_issue491_frozen_base_load_dtype.py +0 -223
- soup_cli-0.74.0/tests/test_issue502_qwen35_transformers5.py +0 -232
- soup_cli-0.74.0/tests/test_issue602_qwen4_ple_streaming.py +0 -1182
- soup_cli-0.74.0/tests/test_issue627_unknown_config_keys.py +0 -882
- soup_cli-0.74.0/tests/test_issue634_mlx_resume.py +0 -621
- soup_cli-0.74.0/tests/test_issue636_torch_floor.py +0 -152
- soup_cli-0.74.0/tests/test_issue642_sweep_dry_run.py +0 -302
- soup_cli-0.74.0/tests/test_mlx_backend.py +0 -288
- soup_cli-0.74.0/tests/test_part_a_wave1.py +0 -368
- soup_cli-0.74.0/tests/test_plotext_compat.py +0 -199
- soup_cli-0.74.0/tests/test_recipes.py +0 -958
- soup_cli-0.74.0/tests/test_replay.py +0 -175
- soup_cli-0.74.0/tests/test_review_fixes_v07133.py +0 -679
- soup_cli-0.74.0/tests/test_serve.py +0 -397
- soup_cli-0.74.0/tests/test_smoke_train.py +0 -273
- soup_cli-0.74.0/tests/test_training_speed.py +0 -1355
- soup_cli-0.74.0/tests/test_ui.py +0 -855
- soup_cli-0.74.0/tests/test_ui_config_builder.py +0 -316
- soup_cli-0.74.0/tests/test_ui_live_monitor.py +0 -445
- soup_cli-0.74.0/tests/test_ui_metrics.py +0 -354
- soup_cli-0.74.0/tests/test_v0401_part_d.py +0 -125
- soup_cli-0.74.0/tests/test_v0420.py +0 -970
- soup_cli-0.74.0/tests/test_v0430_part_a.py +0 -264
- soup_cli-0.74.0/tests/test_v0500_part_a.py +0 -389
- soup_cli-0.74.0/tests/test_v0530.py +0 -1097
- soup_cli-0.74.0/tests/test_v05311.py +0 -1136
- soup_cli-0.74.0/tests/test_v0536.py +0 -843
- soup_cli-0.74.0/tests/test_v0537.py +0 -2172
- soup_cli-0.74.0/tests/test_v0538.py +0 -631
- soup_cli-0.74.0/tests/test_v0539.py +0 -867
- soup_cli-0.74.0/tests/test_v0630_part_a.py +0 -459
- soup_cli-0.74.0/tests/test_v07124.py +0 -299
- soup_cli-0.74.0/tests/test_v07130.py +0 -813
- soup_cli-0.74.0/tests/test_v07132.py +0 -956
- soup_cli-0.74.0/tests/test_v07135.py +0 -1272
- soup_cli-0.74.0/tests/test_v07201.py +0 -521
- soup_cli-0.74.0/tests/test_v07202.py +0 -1983
- soup_cli-0.74.0/tests/test_v07203.py +0 -2749
- soup_cli-0.74.0/tests/test_validator.py +0 -139
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.dockerignore +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.gitattributes +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/FUNDING.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/pull_request_template.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/dependency-drift.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/docker.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/publish.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.github/workflows/recipe-validation.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.gitignore +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.mailmap +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/.pre-commit-config.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/AGENTS.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/CODEOWNERS +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/Dockerfile +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/LICENSE +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/NOTICE +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-395-second-stack-vram.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-h100-validation.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-qwen4-ple-m4-max.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.0-layer-streaming.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.2-nf4.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.3-breadth.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.72.4-preference-losses.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.73.1-measured-vram-fit.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/gate-v0.73.2-leg2-scoring.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/bitexact.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/bnb_repro.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/fsdp_sharding_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/issue331_qlora_scope.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/harness/issue395_second_stack_vram.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/probe-v0.73.0-what-bounds-streaming.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/benchmarks/run-t4-colab-free-tier.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/changelog.d/README.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/docker-compose.yml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/README.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/assets/layer-streaming.gif +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/autodistill.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/docs/compliance.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/README.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/dpo_chat.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/dpo_example.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/grpo_reasoning.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step1_sft.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step2_reward.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/rlhf_step3_ppo.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/sft_basic.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/configs/vision_llama.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/README.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/chat_preferences.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/dpo_sample.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/data/reasoning_math.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/reward_hacking/rewards.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/synthetic_workflow.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/examples/synthetic_workflow.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/notebooks/proof-4gb.ipynb +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/assemble_changelog.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/autodistill_b1_hardware_smoke.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/scripts/generate_recipe_snapshot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/soup.png +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/soup_logo_svg.svg +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/__main__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/capture.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/contract.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/fingerprints.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/mlx_worker.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autodistill/publisher.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/analyzer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/decisions.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/autopilot/generate_config.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/pack.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/publish.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cans/verify.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cloud/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/cloud/_common.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0550.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0610.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v0650.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_eval_v07110.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/_webhook_cli.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ab.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/active_sample.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/advise.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/agent.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/airgap.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/apple_adapter.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/attest.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/audit_log.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/autopilot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/bench.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/bom.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/build.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/card.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ci.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/compile_cmd.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/compile_tools.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/completions.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/cost.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_canary.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_doctor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_forge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_mix.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_score.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/data_topics.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/delinearize_llama4.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/deploy.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/diagnose.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/distill_prompt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/draft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/drift_alarm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/edit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/env.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/expect.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/fetch.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/history.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/init.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/iterative_dpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/license_advisor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/llama.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/local_rl.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/lock.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/loop.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/mcp.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/merge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/merge_sharded_fsdp_weights.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/monitor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/plan.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/plugins.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/profile.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/prune_prompt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/quantize.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/quickstart.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ra_dit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/recipes.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/registry.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/reward.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/ship.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/shrink.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/spectrum.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/steer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/sweep.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tokenizer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/train.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tui.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/tunability.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/commands/why.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/config/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/alpaca_tiny.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/elephant.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/harmbench.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/jailbreakbench.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/syceval.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/behavior/xstest.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/chat_preferences.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/dpo_sample.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/format_json.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/over_refusal.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/safety.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/gate/tool_call.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/reasoning_math.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/muse_demo.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/tofu_demo.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/_fixtures/unlearning/wmdp_demo.jsonl +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/augment.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/chat_templates.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/collators.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/loss_mask.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/_utils.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/anthropic.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/ollama.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/providers/vllm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/sft_format.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/code.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/conversation.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/preference.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/qa.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/reasoning.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/tool_calling.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/templates/verifiable.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/pair_builder.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/parsers.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/data/traces/quality.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/_common.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/calculator.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/guess_number.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/envs/retrieval_qa.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/aider_polyglot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/arena.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/benchmarks_v0_43.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/calibrate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/checkpoint_intelligence.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/custom.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/forgetting.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/gate_suites.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/human.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/judge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/leaderboard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/eval/quant_check.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/experiment/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/mcp_server/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/mcp_server/server.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/axolotl.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/common.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/llamafactory.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/migrate/unsloth.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/curriculum_callback.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/grpo_stability_callback.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/hf_push.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/plugin_callback.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/monitoring/trace_logger.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/plugins/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/py.typed +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/recipes/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/attach.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/diff.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/hashing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/registry/store.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/audio.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/bco.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/chat.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/code.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/embedding.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/eu-ai-act.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/fetch_examples/zero3-cpu-offload.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/hipaa.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/ipo.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/kto.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/longcontext.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/manifest.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/medical.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/moe.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/orpo.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/pretrain.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/reasoning.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/rlhf.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/simpo.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/soc2.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/sr-11-7.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/tool-calling.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/templates/vision.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/_trl_compat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/asr.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/bco.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/bitnet.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/classifier.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/dpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/grpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/ipo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/kto.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_dpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_grpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mlx_routing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/mole_routing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/online_dpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/orpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/preference.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/prm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/raft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/reward_model.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/rewards.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/simpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/tts.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/trainer/unlearn.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/tui_app.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/plugins/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/logo.png +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/logo.svg +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/ui/static/style.css +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/_eval_text.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ab_test.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/activation_offload.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/active_sampler.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_arithmetic.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_bisect.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_branch.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_diff.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_fuse.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_merge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_pr.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/adapter_scan.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advanced_precision.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advise.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/advise_history.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_forge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_rollout.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/agent_sandbox.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/airgap_bundle.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/annex_xi.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/anthropic_messages.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/apple_adapter.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/asr_metrics.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/attest.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/auto_quant.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/backend_detect.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/batch_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/behavior_battery.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_artifact.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_checkpoint.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/best_of_n_stream.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/bitnet.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/blame.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/block_expansion.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/bom.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/brain_rot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/brain_rot_lang.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/build_dag.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary_discovery.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/canary_router.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/capability_suite.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/checklist_dsl.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/checkpoint_trigger.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ci_workflow.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/citation_faithful.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/classifier.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cmaes_merge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/compile_tools.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/completions.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/constants.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/convergence.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/crash.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cross_doc_attn.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/curriculum.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/curriculum_dynamic.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/cut_ce.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_doctor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_forge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_lint.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_mix.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_pipeline.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/data_score.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/delinearize_llama4.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/demo_bundles.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/deploy_autopilot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/deploy_measure.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/_common.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/badge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/citation.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/contamination.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/forgetting.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/format.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/live.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/memorization.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/mode_collapse.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/refusal.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/report.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/diagnose/runner.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/distill.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/dpo_variants.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/draft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/drift_alarm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ebft_gdpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/echo_trap.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_diff.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_governor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/edit_kernels.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/embed.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/encoding.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/energy.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/env_lock.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/errors.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_design.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_gate_hook.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/eval_lock_coverage.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/evolve.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/expectations.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fetch_examples.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/flash_attn.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fp8.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/freeze.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fsdp.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/fsdp_consolidate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/galore.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gguf_quant.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gpu.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gpu_monitor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grace_codebook.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/graceful_save.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grad_accum.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/gradient_ckpt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/grpo_long_context.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hardware_fit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/harm_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hf.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/hf_space.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/integrations.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/interference.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/interference_live.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/irt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/iterative_dpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/jinja_analyzer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/kernel_picker.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/knowledge_edit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/kv_cache.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/launcher.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/layer_shard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/layer_stream.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/license_advisor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/license_matrix.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/liger.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/lisa.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/llama_proxy.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/llama_server_timings.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/local_rl.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/local_rl_scheduler.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loftq_init.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/log_level.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/long_context.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/longlora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_budget.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_daemon.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_iteration.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_stages.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/loop_state.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/lr_finder.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/magpie.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/metrics.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mii.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/minillm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mix_proxy.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mixed_precision.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mlx.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/mod.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/moe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/moe_quant.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/multipack.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/multipack_trainer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/namespace_pin.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/neat_packing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/net_guard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ngram_spec.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/nlg_metrics.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ollama.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/onboarding.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/optimizer_zoo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/oq_affine.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/peft_builder.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/peft_patches.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/persona_hub.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/pipeline.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/preference_combine.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prm.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prm_reward.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/probe_kernel.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/probe_pack.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/process_liveness.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiler.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiling.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/profiling_v0_43.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prompt_compile.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prompt_distill.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/prune_prompt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qr_url.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/quality.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/quant_menu.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qwen4_compat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/qwen4_ple.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ra_dit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ra_dit_run.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/raft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reasoning_effort.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reasoning_parser.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/recipe_dag.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/recipe_run.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/registry.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rehearsal.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/relora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/replay.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/repro_receipt.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_hack_control.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_hacking.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_stress.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/reward_synth.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ring_attention.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rl_checkpoint.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/rl_signal_buffer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/run_cost.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sae_diff.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/save_formats.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/seeding.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/semdedup.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/server_tools.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sglang.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ship_verdict.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/shortcuts.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/shrink.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/signing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sleeper_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/soup_lock.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spec_pairing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spectrum_scan.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/spike_recovery.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/steering.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/strict_safetensors.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/structured_output.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/sweep_config.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tail_latency.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/terraform_plan.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tool_outputs.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/topics.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/topology.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tracing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/train_event_buffer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/trainer_plugins.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/trust_remote.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/truth_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tts.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tts_codec.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/tunability.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/ui_env.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearn_kernels.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearning.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unlearning_eval.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/unsloth.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/v028_features.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/vector_bank.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/vscode_setup.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/warmup.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/webhooks.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/src/soup_cli/utils/why.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/chat.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/code.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/templates/medical.yaml +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/__init__.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/_windows_ci.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/conftest.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/capture_token.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/consumption_ledger.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/plan.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/shard_manifest.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/fixtures/autodistill/v1/student_rollout_capture_token.json +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/mcp_roundtrip.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v053_qa.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v07114_qa.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/qa/v0716_qa.md +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_adapters.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_advanced_peft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_align_trainable_dtype.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_assistant_mask.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_audio.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_auto_tuning.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_autopilot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_batch_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_bco.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_bench.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_brain_rot_multilingual.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_build_dag.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_callback.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cans.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_chat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_chat_template.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli_help_assertions_are_ansi_safe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cli_startup_is_light.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_deferred.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_high.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_code_review_medium_low.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_config.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_contributing_test_counts_are_digit_free.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_cost.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_crash_reporter.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_curriculum.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_augment.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_sample.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_data_split.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dataset_hub.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dataset_registry.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_deepspeed.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_demo_bundle_metadata.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_deploy_ollama.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_device_map_distributed.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_diff.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_display.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dpo_example.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_dpo_variants.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_embedding.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_errors.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval_gate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_eval_platform.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_examples_configs.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_export.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_formats.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_fp8_recipe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_freeze_training.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_generate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_gpu.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_grpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_hf_integration.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_infer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_init.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ipo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue144_gguf_export.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue264_cloud.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue296_network_transport.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue300_online_dpo_kwargs.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue300_online_dpo_train.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue302_vision_pad_token.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue304_cross_tokenizer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue305_mixed_rank_arithmetic.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue308_callback_subclass.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue316_refusal_apostrophe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue316_suites.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue320_lazy_callback_import.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue322_mcp2_compat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue323_trl_kwarg_drift.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue327_logits_estimate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue330_mix_recipe_train_loadable.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue334_fa3_detection.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue336_deepspeed_lora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue339_load_dtype.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue341_seed_and_fullft.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue348_calibrated_logits_wiring.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue349_measured_fit.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue350_fsdp_qlora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue353_mlx_seed_warning.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue353_seed_every_task.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue360_sglang_prompt_finish_reason.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue367_live_eval_quantization.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue372_no_reexec_hint.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue373_fsdp_sharding_probe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue374_stream_disk_preflight.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue377_lisa_train_embeddings.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue382_windows_ci_guard_is_shared.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue385_stream_dtype.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue389_torchao_error.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue390_expandable_segments_reason.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue392_mlx_target_keys.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue394_mlx_runtime_isolation.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue401_orphaned_run_reconcile.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue402_restart_capacity.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue404_baseline_scorer_stamp.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue423_mlx_device_detection.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue424_windows_liveness.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue433_meta_adapter_guard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue441_coerce_token_ids.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue477_qwen38_catalog.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue487_changelog_fragments.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue505_launching_window_blocks_restart.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue524_launching_reconcile.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue531_stream_base_provenance.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue532_supervised_token_guard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue533_offline_hf_materialization.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue534_apple_nvme.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue546_transient_finite_metric.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue549_bon_resume.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue550_bon_offline.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue555_bon_stream_resume.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue563_mps_bf16_training.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue565_grpo_reward_metadata.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue567_grpo_mps_bf16.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue571_qwen4_exp.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue573_qwen4_expert_lora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_capture.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_contract.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_fingerprints.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_mlx_worker.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue580_autodistill_publisher.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue599_telemetry_dns_ssrf.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue600_abbreviated_ipv4_ssrf.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue616_net_guard_is_shared.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue621_recipe_snapshot.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue623_stream_pin_allocation.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue633_ansi_in_highlighted_output.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue649_batch_probe_peak_gate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue654_batch_probe_uncovered_branches.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue91_aider_eval.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_issue99_apple_monitor.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_jinja_analyzer.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_kto.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_loader.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_log_level.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_loss_watchdog.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mcp_execute.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_merge.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_migrate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mii_serve.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_mlx_dispatch.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_moe.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multi_adapter.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multi_gpu.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_config.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_invariants.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_multipack_sampler.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_neat_packing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_neftune_rslora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_no_foreign_license_headers.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_onnx_tensorrt_export.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_orpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_packing.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_a_wave2.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_part_f_hardening.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_peft_methods.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_peft_patches.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_performance.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_pissa_init.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ppo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_dispatcher.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_multi.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_preference_multi_runtime.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_pretrain.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_profile.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_profiling.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_progress.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_push.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_qat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quality_filter.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quant_check.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quant_menu.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_quickstart.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_qwen35_streaming.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_rank_pattern.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_recipe_count_is_synced.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_recipes_v031.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_refusal_multilingual.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_registry.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_relora.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_requires_python_bound.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_resume.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_rlvr.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_run_cost.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_runs.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_semantic_split.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_server_generate.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sglang_serve.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sglang_trust_contract.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_simpo.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_speculative_decoding.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_stream_multi_gpu_guard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_sweep.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_synth_data_pro.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_telemetry_ssrf.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_templates_yaml.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tensorboard.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tool_calling.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trace_to_pref.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tracker.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trainer_coverage_v035.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trainer_init.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_training_intelligence.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_transformers_floor_compat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trl_preference_config_contract.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trl_version_compat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_trust_remote_code.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_tui.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_ui_chat.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_unsloth.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0401_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0401_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0402_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0402_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0403_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0404_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0404_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0405_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0406_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0410_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0430_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0440_review_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0450.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0460_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0460_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0470_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0470_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0480_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0480_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0490.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0500_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0510.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0520.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v05310.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_109.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_139.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_142.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0531_82.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0532.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0533.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0534.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0535.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0540.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0550.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0550_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0560.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0570_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0580.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0590.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0600_part_f.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0610_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0620_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0630_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0631_206.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0640_part_f.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0650_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_cli.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0660_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0670_part_f.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_followups.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0680_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0690_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_a.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_b.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_c.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_d.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_e.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0700_part_f.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07110.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07111.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07112.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07113.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07114.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07115.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07116.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07117.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07118.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07119.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0712.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07120.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07121.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07122.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07123.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07125.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07126.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07127.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07128.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07129.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0713.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07131.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07133.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07134.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07136.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07137.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07138.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07139.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0714.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07140.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07141.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0715.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0716.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0717.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0718.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v0719.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07200.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07204.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07300.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_v07302.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_version_sync.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_vision.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_vllm_serve.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_warmup.py +0 -0
- {soup_cli-0.74.0 → soup_cli-0.75.1}/tests/test_why.py +0 -0
- {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
|