From d6556de97925ef0f407ce95e8e7ff879dee3f63e Mon Sep 17 00:00:00 2001 From: mikolaj92 Date: Sun, 18 Oct 2026 20:16:30 +0200 Subject: [PATCH 1/2] lokay build --- src/datasource_kit/report.py | 3 ++- tests/test_cli.py | 50 ++++++++++++------------------------ 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/src/datasource_kit/report.py b/src/datasource_kit/report.py index aedfebc..bbeeb56 100644 --- a/src/datasource_kit/report.py +++ b/src/datasource_kit/report.py @@ -4,6 +4,7 @@ import json from dataclasses import dataclass, field +from importlib.metadata import version from pathlib import Path from typing import Any @@ -11,7 +12,7 @@ __all__ = ["IngestReport"] -_KIT_VERSION = "0.15.0" +_KIT_VERSION = version("datasource-kit") @dataclass diff --git a/tests/test_cli.py b/tests/test_cli.py index dc3b19a..db3f802 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -4,16 +4,14 @@ import json import tomllib +from importlib.metadata import version from pathlib import Path import pytest from datasource_kit.cli import EXAMPLE_ROOT, main from datasource_kit.providers import builtin_registry - -# --------------------------------------------------------------------------- -# Helpers -# --------------------------------------------------------------------------- +from datasource_kit.report import IngestReport @pytest.fixture() @@ -58,11 +56,6 @@ def demo_batch(tmp_path: Path) -> Path: return tmp_path -# --------------------------------------------------------------------------- -# validate verb -# --------------------------------------------------------------------------- - - def test_validate_demo_scraper_ok(demo_scraper: Path) -> None: assert main(["validate", str(demo_scraper)]) == 0 @@ -90,11 +83,6 @@ def test_validate_unknown_provider_nonzero(tmp_path: Path) -> None: assert main(["validate", str(tmp_path)]) != 0 -# --------------------------------------------------------------------------- -# run verb -# --------------------------------------------------------------------------- - - def test_run_writes_json(demo_scraper: Path, tmp_path: Path) -> None: out = tmp_path / "report.json" rc = main(["run", str(demo_scraper), "--out", str(out)]) @@ -104,6 +92,20 @@ def test_run_writes_json(demo_scraper: Path, tmp_path: Path) -> None: assert data["source_name"] == "test-scraper" assert data["windows_processed"] > 0 assert data["records_fetched"] > 0 + expected = version("datasource-kit") + project = tomllib.loads((Path(__file__).parents[1] / "pyproject.toml").read_text()) + assert data["kit_version"] == expected == project["project"]["version"] + for report in (IngestReport("test-scraper"), IngestReport.from_dict({})): + assert report.as_dict()["kit_version"] == expected + report.save_json(out) + assert IngestReport.load_json(out).kit_version == expected + for report in ( + IngestReport("old", kit_version="0.14.0"), + IngestReport.from_dict({"source_name": "old", "kit_version": "0.14.0"}), + ): + report.save_json(out) + assert json.loads(out.read_text())["kit_version"] == "0.14.0" + assert IngestReport.load_json(out).as_dict() == report.as_dict() def test_run_stdout(demo_scraper: Path, capsys: pytest.CaptureFixture) -> None: @@ -114,11 +116,6 @@ def test_run_stdout(demo_scraper: Path, capsys: pytest.CaptureFixture) -> None: assert "source_name" in data -# --------------------------------------------------------------------------- -# coverage report verb -# --------------------------------------------------------------------------- - - def test_coverage_report(demo_scraper: Path, tmp_path: Path, capsys: pytest.CaptureFixture) -> None: out = tmp_path / "report.json" main(["run", str(demo_scraper), "--out", str(out)]) @@ -129,11 +126,6 @@ def test_coverage_report(demo_scraper: Path, tmp_path: Path, capsys: pytest.Capt assert "records_fetched" in captured.out -# --------------------------------------------------------------------------- -# explain verb -# --------------------------------------------------------------------------- - - def test_explain(demo_scraper: Path, tmp_path: Path, capsys: pytest.CaptureFixture) -> None: out = tmp_path / "report.json" main(["run", str(demo_scraper), "--out", str(out)]) @@ -145,11 +137,6 @@ def test_explain(demo_scraper: Path, tmp_path: Path, capsys: pytest.CaptureFixtu assert f"kit_version: {project['project']['version']}" in captured.out -# --------------------------------------------------------------------------- -# examples run verb (shipped demo profiles) -# --------------------------------------------------------------------------- - - def test_examples_run_demo_scraper() -> None: assert EXAMPLE_ROOT.exists(), f"EXAMPLE_ROOT missing: {EXAMPLE_ROOT}" rc = main(["examples", "run", "demo-scraper"]) @@ -185,11 +172,6 @@ def test_examples_run_unknown_name_nonzero() -> None: assert rc != 0 -# --------------------------------------------------------------------------- -# Dep-free standalone assertion -# --------------------------------------------------------------------------- - - def test_builtin_registry_stdlib_only() -> None: """builtin_registry() must not require any third-party package.""" reg = builtin_registry() From cd4402603f99586d0631320aabe82b93e1c661ec Mon Sep 17 00:00:00 2001 From: mikolaj92 Date: Sun, 18 Oct 2026 20:22:05 +0200 Subject: [PATCH 2/2] lokay fix --- tests/test_cli.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/tests/test_cli.py b/tests/test_cli.py index db3f802..1ac7de0 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -14,6 +14,9 @@ from datasource_kit.report import IngestReport +# Helpers + + @pytest.fixture() def demo_scraper(tmp_path: Path) -> Path: """A minimal scraper profile in a temp folder.""" @@ -56,6 +59,9 @@ def demo_batch(tmp_path: Path) -> Path: return tmp_path +# validate verb + + def test_validate_demo_scraper_ok(demo_scraper: Path) -> None: assert main(["validate", str(demo_scraper)]) == 0 @@ -83,6 +89,9 @@ def test_validate_unknown_provider_nonzero(tmp_path: Path) -> None: assert main(["validate", str(tmp_path)]) != 0 +# run verb + + def test_run_writes_json(demo_scraper: Path, tmp_path: Path) -> None: out = tmp_path / "report.json" rc = main(["run", str(demo_scraper), "--out", str(out)]) @@ -95,16 +104,13 @@ def test_run_writes_json(demo_scraper: Path, tmp_path: Path) -> None: expected = version("datasource-kit") project = tomllib.loads((Path(__file__).parents[1] / "pyproject.toml").read_text()) assert data["kit_version"] == expected == project["project"]["version"] - for report in (IngestReport("test-scraper"), IngestReport.from_dict({})): - assert report.as_dict()["kit_version"] == expected - report.save_json(out) - assert IngestReport.load_json(out).kit_version == expected - for report in ( - IngestReport("old", kit_version="0.14.0"), - IngestReport.from_dict({"source_name": "old", "kit_version": "0.14.0"}), + for report, expected_version in ( + (IngestReport("test-scraper"), expected), (IngestReport.from_dict({}), expected), + (IngestReport("old", kit_version="0.14.0"), "0.14.0"), + (IngestReport.from_dict({"source_name": "old", "kit_version": "0.14.0"}), "0.14.0"), ): report.save_json(out) - assert json.loads(out.read_text())["kit_version"] == "0.14.0" + assert json.loads(out.read_text())["kit_version"] == expected_version assert IngestReport.load_json(out).as_dict() == report.as_dict()