What's New
Six features wired live across cloud storage, alternative model hubs, experiment trackers, and HF Spaces.
-
fsspec live remote loaders.
data.train: s3://bucket/data.jsonl(plusgs:///gcs:///az:///abfs:///abfss:///oci://) now loads throughfsspecwith the v0.42.0 SSRF-hardened URI validator (bucket regex + userinfo/query/fragment rejection). Threadsdata.streaming+data.buffer_size. Friendly Rich panel names thepip install <driver>advisory when the backend SDK is missing. Row count capped at 1M to defend against pathological remote objects. -
Live ModelScope + Modelers hub dispatcher. New
utils/hubs.download_repo()/upload_repo()lazy-import per backend (huggingface_hub,modelscope,openmind-hub).commands/train.pypre-fetches non-HFbaseinto.soup_hub_cache/<sanitized-slug>/and reuses cached snapshots on resume.soup data download --hub <name>flag plumbed (live for HF; non-HF dataset SDKs tracked for v0.53.9). -
[trackers]extra + missing-dep advisory.pip install soup-cli[trackers]bundles MLflow + SwanLab + Trackio. When you pass--tracker mlflowwithout the package installed,soup trainnow surfaces a clearpip installadvisory before construction instead of HF Trainer's generic ImportError. Usesimportlib.util.find_spec(non-executing probe) so swanlab can't initialise network threads during the absence check. -
PostHog telemetry network (opt-IN, silent-fail).
utils/trackers.send_telemetry_payload()lazy-importshttpxwith a 1-second hard timeout. HTTPS-only with SSRF re-validation (private-IP / link-local / RFC1918 rejected). Disabled unlessSOUP_TELEMETRY=1; every exception swallowed so telemetry can never crash training. -
Bundled demo fixtures as package data.
soup data demofixtures (4 JSONLs) migrated tosoup_cli/data/_fixtures/so they ship inside the wheel — zipapp / namespace-package safe._bundle_source_pathfalls back to legacyexamples/data/for editable installs. -
HF Space SDK auto-pick from
requirements.txt.soup deploy hf-space --template-dir <path>now reads the renderedrequirements.txtand picksspace_sdk="streamlit"when the file listsstreamlit,"gradio"otherwise. Closes the v0.40.2 known limitation.
Install / Upgrade
pip install --upgrade soup-cli # core
pip install --upgrade soup-cli[trackers] # + mlflow / swanlab / trackio
pip install --upgrade soup-cli[remote] # + fsspec / s3fs / gcsfs / adlfsSecurity
Three review-agent waves (python / code / security) ran in parallel; 16 findings fixed:
- HIGH: cwd-containment on
download_repo/upload_repolocal_dir/folder_path; Windows..\traversal defence on.soup_hub_cacheslug;cfg.base = local_pathreplaced withcfg.model_copy(update=...)so Pydantic field validators rerun (matches v0.33.0 #47 immutability policy). - MEDIUM: SSRF re-validation on telemetry endpoint override (private-IP / link-local / RFC1918 rejected); 1M-row cap on remote dataset materialisation; 256 KB cap on
detect_space_sdkinput;rich.markup.escapeon ImportError print;modelscope.push_modelcommit_messagekwarg removed (would TypeError at runtime);importlib.util.find_specinstead of__import__to avoid swanlab side-effects. - LOW: bool rejection on
local_dir; SDK detection rules documented; idempotent pre-fetch via cache probe.
Test count: 8162 → 8257 (+66 new tests + 29 net coverage adjustments).
Known Limitations
- Hub dispatch is single-command live.
commands/train.py(pre-fetch) andsoup data download --hub(advisory only). Wider rollout for chat / serve / infer / merge / export / push tracked for v0.53.9. - No
hf-id → modelscope-idtranslation table. Abase: meta-llama/Llama-3.1-8Bwithhub: modelscopepasses the literal id to ModelScope; if the repo isn't published there under that id, you'll see a clean HF Hub-style 404. - PostHog API key is a placeholder. Live deployments will swap via env var once the privacy policy ships. Telemetry remains opt-IN + silent-fail until then.
soup data download --hub modelscopeis advisory-only. Non-HF dataset download needs the modelscope dataset SDK (different API fromsnapshot_download); v0.53.9.- Package-data migration keeps legacy
examples/data/duplicates for repo-relative scripts. Future patch may remove the duplicates. [trackers]extra pin-floormlflow>=2.0.0. Older mlflow setups can override via direct install.- fsspec streaming path requires HF
datasetsfor thedata.streaming=truecodepath; without it, falls back to directfsspec.openline-by-line.
v0.53.7 Carry-over
The /v1/tools/bash endpoint still returns HTTP 501 — RLVR sandbox child-process isolation insufficient for /bin/sh -c. The marker has been bumped from v0.53.8 to v0.53.9 (container / namespace work scheduled there).
🤖 Generated with Claude Code