From fc2331c242a95e95f021d6a87a0a105c872eec70 Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Fri, 6 Mar 2026 21:47:52 -0500 Subject: [PATCH] fix(cses): remove verdict poll loop from submit Problem: The submit method polled for a verdict for up to 120s, but verdicts are never displayed in cp.nvim by design. Solution: Remove the poll loop and `SUBMIT_POLL_TIMEOUT` constant. After a successful POST, immediately return `SubmitResult(success=True)`. --- scrapers/cses.py | 38 +++----------------------------------- scrapers/timeouts.py | 1 - 2 files changed, 3 insertions(+), 36 deletions(-) diff --git a/scrapers/cses.py b/scrapers/cses.py index 1ddd292..2d29689 100644 --- a/scrapers/cses.py +++ b/scrapers/cses.py @@ -9,7 +9,7 @@ from typing import Any import httpx from .base import BaseScraper, extract_precision -from .timeouts import HTTP_TIMEOUT, SUBMIT_POLL_TIMEOUT +from .timeouts import HTTP_TIMEOUT from .models import ( ContestListResult, ContestSummary, @@ -465,40 +465,8 @@ class CSESScraper(BaseScraper): err = r.text return self._submit_error(f"Submit request failed: {err}") - info = r.json() - submission_id = str(info.get("id", "")) - - for _ in range(60): - await asyncio.sleep(2) - try: - r = await client.get( - f"{API_URL}/{SUBMIT_SCOPE}/submissions/{submission_id}", - params={"poll": "true"}, - headers={ - "X-Auth-Token": token, - **HEADERS, - }, - timeout=SUBMIT_POLL_TIMEOUT, - ) - if r.status_code == 200: - info = r.json() - if not info.get("pending", True): - verdict = info.get("result", "unknown") - return SubmitResult( - success=True, - error="", - submission_id=submission_id, - verdict=verdict, - ) - except Exception: - pass - - return SubmitResult( - success=True, - error="", - submission_id=submission_id, - verdict="submitted (poll timed out)", - ) + submission_id = str(r.json().get("id", "")) + return SubmitResult(success=True, error="", submission_id=submission_id) if __name__ == "__main__": diff --git a/scrapers/timeouts.py b/scrapers/timeouts.py index 715b07f..5012607 100644 --- a/scrapers/timeouts.py +++ b/scrapers/timeouts.py @@ -13,4 +13,3 @@ BROWSER_TURNSTILE_POLL = 5000 BROWSER_ELEMENT_WAIT = 10000 BROWSER_SETTLE_DELAY = 500 -SUBMIT_POLL_TIMEOUT = 30.0