Skip to content

Commit 26babc3

Browse files
authored
Fix FastLanes runner dependency isolation (#170)
1 parent d5489ab commit 26babc3

4 files changed

Lines changed: 46 additions & 3 deletions

File tree

‎.github/workflows/benchmark-fastlanes.yml‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,13 @@ jobs:
314314
from pathlib import Path
315315
316316
results = json.loads(Path(sys.argv[1]).read_text())
317-
evidence = results.get("evidence", {})
317+
evidence = results.get("evidence")
318+
if evidence is None:
319+
raise SystemExit(
320+
"FastLanes claim "
321+
f"{results.get('status', 'UNKNOWN')}: "
322+
f"{results.get('failure_reason', 'no failure reason recorded')}"
323+
)
318324
if evidence.get("status") != "MEASURED":
319325
raise SystemExit(f"FastLanes claim status: {evidence.get('status')}")
320326
mixed = evidence.get("mixed", {})
Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
1+
from __future__ import annotations
2+
3+
from typing import TYPE_CHECKING
4+
15
from .fastlanes import run_fastlanes_claim
2-
from .tsfile import run_tsfile_claim
3-
from .vortex import run_vortex_stress
6+
7+
if TYPE_CHECKING:
8+
from .tsfile import run_tsfile_claim
9+
from .vortex import run_vortex_stress
410

511
__all__ = ["run_fastlanes_claim", "run_tsfile_claim", "run_vortex_stress"]
12+
13+
14+
def __getattr__(name: str):
15+
if name == "run_tsfile_claim":
16+
from .tsfile import run_tsfile_claim
17+
18+
return run_tsfile_claim
19+
if name == "run_vortex_stress":
20+
from .vortex import run_vortex_stress
21+
22+
return run_vortex_stress
23+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")

‎tests/test_claims_import.py‎

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import subprocess
2+
import sys
3+
4+
5+
def test_fastlanes_claim_import_does_not_require_tsfile_dependencies() -> None:
6+
code = """
7+
import sys
8+
sys.modules["pyarrow"] = None
9+
from format_bench.claims.fastlanes import run_fastlanes_claim
10+
assert callable(run_fastlanes_claim)
11+
"""
12+
completed = subprocess.run(
13+
[sys.executable, "-c", code],
14+
check=False,
15+
capture_output=True,
16+
text=True,
17+
)
18+
assert completed.returncode == 0, completed.stderr

‎tests/test_fastlanes_workflow.py‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,5 @@ def test_fastlanes_retry_workflow_preserves_build_and_measurement_logs() -> None
3737
assert '"status": "UNSUPPORTED" if not available else "FAILED"' in workflow
3838
assert "case_hash_algorithm" in workflow
3939
assert "input/data.csv" in workflow
40+
assert "no failure reason recorded" in workflow
4041
assert "if: always()" in workflow

0 commit comments

Comments
 (0)