Spaces:
Running
Running
| """Exercise the real manage/delete/requeue routes with the Hub stubbed out.""" | |
| import sys, types, json, importlib.util | |
| import os | |
| os.environ["HF_TOKEN"] = "stub-token" | |
| os.environ["LEADERBOARD_OWNER"] = "Mushari440" | |
| # ---- fake Hub state ------------------------------------------------------- | |
| FILES = { | |
| "Mushari440/results": { | |
| "v7/org/results_alpha.json", "v7/org/results_beta.json", | |
| "v8/org/results_alpha.json", | |
| }, | |
| "Mushari440/results-private": set(), | |
| "Mushari440/requests": {"org/alpha.json", "org/beta.json", "org/gamma.json"}, | |
| } | |
| REQ = { | |
| "org/alpha.json": {"model": "org/alpha", "status": "FINISHED"}, | |
| "org/beta.json": {"model": "org/beta", "status": "FINISHED"}, | |
| "org/gamma.json": {"model": "org/gamma", "status": "PENDING"}, | |
| } | |
| COMMITS = [] | |
| class FakeApi: | |
| def __init__(self, *a, **k): pass | |
| def list_repo_files(self, repo_id=None, repo_type=None, *a, **k): | |
| return sorted(FILES.get(repo_id or a[0] if a else repo_id, set())) | |
| def delete_file(self, path_in_repo=None, repo_id=None, **k): | |
| if path_in_repo not in FILES.get(repo_id, set()): | |
| raise RuntimeError("404") | |
| FILES[repo_id].discard(path_in_repo) | |
| if repo_id == "Mushari440/requests": | |
| REQ.pop(path_in_repo, None) # the queue entry lives in both fakes | |
| COMMITS.append(("delete", repo_id, path_in_repo)) | |
| def upload_file(self, path_or_fileobj=None, path_in_repo=None, repo_id=None, **k): | |
| body = json.loads(path_or_fileobj.decode() if isinstance(path_or_fileobj, bytes) else path_or_fileobj) | |
| REQ[path_in_repo] = body | |
| COMMITS.append(("upload", repo_id, path_in_repo, body.get("status"))) | |
| spec = importlib.util.spec_from_file_location("spaceapp", os.path.join(os.path.dirname(__file__), "app.py")) | |
| app = importlib.util.module_from_spec(spec) | |
| sys.modules["spaceapp"] = app | |
| spec.loader.exec_module(app) | |
| app.HfApi = FakeApi | |
| app.api = FakeApi() | |
| app._require_owner = lambda *a, **k: "Mushari440" | |
| app._list_requests = lambda: [dict(v, _path=k) for k, v in REQ.items()] | |
| fails = [] | |
| def check(name, got, want): | |
| ok = got == want | |
| if not ok: | |
| fails.append(name) | |
| print(f" FAIL {name}\n got {got}\n want {want}") | |
| else: | |
| print(f" PASS {name}") | |
| R = types.SimpleNamespace(headers={}, cookies={}, session={}) | |
| print("manage reports presence per version") | |
| rows = {m["model"]: m for m in app.manage(R, version="v8")["models"]} | |
| check("alpha scored on v7 and v8", sorted(rows["alpha" if "alpha" in rows else "org/alpha"]["results_by_version"]), ["v7", "v8"]) | |
| check("beta scored on v7 only", sorted(rows["org/beta"]["results_by_version"]), ["v7"]) | |
| check("gamma scored nowhere", rows["org/gamma"]["results_by_version"], {}) | |
| check("result_in follows the asked version", rows["org/beta"]["result_in"], []) | |
| print("\ndelete scope='version' touches only that version") | |
| app.model_delete(R, app.ModelRef(model="org/alpha", version="v8", scope="version")) | |
| check("v8 score gone", "v8/org/results_alpha.json" in FILES["Mushari440/results"], False) | |
| check("v7 score untouched", "v7/org/results_alpha.json" in FILES["Mushari440/results"], True) | |
| check("request kept", "org/alpha.json" in REQ, True) | |
| print("\ndelete scope='all' removes the model everywhere") | |
| app.model_delete(R, app.ModelRef(model="org/beta", version="v7", scope="all")) | |
| check("v7 score gone", "v7/org/results_beta.json" in FILES["Mushari440/results"], False) | |
| check("request gone", "org/beta.json" in REQ, False) | |
| print("\nrequeue never revives a deliberately-set status") | |
| REQ.clear() | |
| REQ.update({ | |
| "org/fin.json": {"model": "org/fin", "status": "FINISHED"}, | |
| "org/fail.json": {"model": "org/fail", "status": "FAILED"}, | |
| "org/held.json": {"model": "org/held", "status": "HELD"}, | |
| "org/canc.json": {"model": "org/canc", "status": "CANCELLED"}, | |
| "org/sup.json": {"model": "org/sup", "status": "SUPERSEDED"}, | |
| "org/rej.json": {"model": "org/rej", "status": "REJECTED"}, | |
| "org/pend.json": {"model": "org/pend", "status": "PENDING"}, | |
| }) | |
| FILES["Mushari440/results"] = set() | |
| out = app.requeue_all(R, app.RequeueRef(version="v8", only_missing=True)) | |
| check("FINISHED is revived", "org/fin" in out["queued"], True) | |
| check("FAILED is revived", "org/fail" in out["queued"], True) | |
| check("HELD is left parked", out["skipped"].get("org/held"), "held on purpose") | |
| check("CANCELLED stays cancelled", out["skipped"].get("org/canc"), "cancelled on purpose") | |
| check("SUPERSEDED stays out", out["skipped"].get("org/sup"), "superseded on purpose") | |
| check("REJECTED stays out", out["skipped"].get("org/rej"), "rejected on purpose") | |
| check("PENDING not double-queued", out["skipped"].get("org/pend"), "already queued") | |
| check("only the two revivable ones", sorted(out["queued"]), ["org/fail", "org/fin"]) | |
| print("\nrequeue only_missing skips models already scored on the target version") | |
| FILES["Mushari440/results"] = {"v7/org/results_alpha.json", "v8/org/results_alpha.json"} | |
| REQ.clear() | |
| REQ["org/alpha.json"] = {"model": "org/alpha", "status": "FINISHED"} | |
| REQ["org/delta.json"] = {"model": "org/delta", "status": "FINISHED"} | |
| REQ["org/gamma.json"] = {"model": "org/gamma", "status": "PENDING"} | |
| out = app.requeue_all(R, app.RequeueRef(version="v8", only_missing=True)) | |
| check("alpha skipped (already on v8)", out["skipped"].get("org/alpha"), "already scored on v8") | |
| check("delta queued", "org/delta" in out["queued"], True) | |
| check("gamma skipped (already PENDING)", out["skipped"].get("org/gamma"), "already queued") | |
| check("delta status is RERUN", REQ["org/delta.json"]["status"], "RERUN") | |
| print("\nrequeue only_missing=False re-queues scored models too") | |
| REQ["org/alpha.json"] = {"model": "org/alpha", "status": "FINISHED"} | |
| out = app.requeue_all(R, app.RequeueRef(version="v8", only_missing=False)) | |
| check("alpha queued this time", "org/alpha" in out["queued"], True) | |
| print("\nFAILURES:", fails or "none") | |
| sys.exit(1 if fails else 0) | |