From b6f3398bbce99e6cc9f1ff277236bca937f3df4d Mon Sep 17 00:00:00 2001 From: Barrett Ruth Date: Wed, 18 Feb 2026 14:07:53 -0500 Subject: [PATCH] fix(ci): formatting and typing --- lua/cp/scraper.lua | 7 ++++++- scrapers/codeforces.py | 2 +- tests/test_scrapers.py | 24 +++++++++--------------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/lua/cp/scraper.lua b/lua/cp/scraper.lua index 4771cc1..10fc7b7 100644 --- a/lua/cp/scraper.lua +++ b/lua/cp/scraper.lua @@ -44,7 +44,12 @@ local function run_scraper(platform, subcommand, args, opts) local handle handle = uv.spawn( cmd[1], - { args = vim.list_slice(cmd, 2), stdio = { nil, stdout, stderr }, env = env, cwd = plugin_path }, + { + args = vim.list_slice(cmd, 2), + stdio = { nil, stdout, stderr }, + env = env, + cwd = plugin_path, + }, function(code, signal) if buf ~= '' and opts.on_event then local ok_tail, ev_tail = pcall(vim.json.decode, buf) diff --git a/scrapers/codeforces.py b/scrapers/codeforces.py index 1d01b8d..a67489f 100644 --- a/scrapers/codeforces.py +++ b/scrapers/codeforces.py @@ -78,7 +78,7 @@ def _extract_title(block: Tag) -> tuple[str, str]: def _extract_samples(block: Tag) -> tuple[list[TestCase], bool]: st = block.find("div", class_="sample-test") - if not st: + if not isinstance(st, Tag): return [], False input_pres: list[Tag] = [ diff --git a/tests/test_scrapers.py b/tests/test_scrapers.py index 75f3cb0..8ce468f 100644 --- a/tests/test_scrapers.py +++ b/tests/test_scrapers.py @@ -6,11 +6,6 @@ from scrapers.models import ( TestsResult, ) -MODEL_FOR_MODE = { - "metadata": MetadataResult, - "contests": ContestListResult, -} - MATRIX = { "cses": { "metadata": ("introductory_problems",), @@ -43,17 +38,16 @@ def test_scraper_offline_fixture_matrix(run_scraper_offline, scraper, mode): assert rc in (0, 1), f"Bad exit code {rc}" assert objs, f"No JSON output for {scraper}:{mode}" - if mode in ("metadata", "contests"): - Model = MODEL_FOR_MODE[mode] - model = Model.model_validate(objs[-1]) - assert model is not None + if mode == "metadata": + model = MetadataResult.model_validate(objs[-1]) assert model.success is True - if mode == "metadata": - assert model.url - assert len(model.problems) >= 1 - assert all(isinstance(p.id, str) and p.id for p in model.problems) - else: - assert len(model.contests) >= 1 + assert model.url + assert len(model.problems) >= 1 + assert all(isinstance(p.id, str) and p.id for p in model.problems) + elif mode == "contests": + model = ContestListResult.model_validate(objs[-1]) + assert model.success is True + assert len(model.contests) >= 1 else: assert len(objs) >= 1, "No test objects returned" validated_any = False