mirror of
https://github.com/open-jarvis/OpenJarvis.git
synced 2026-07-31 03:12:16 +00:00
refactor: move evals/ into src/openjarvis/evals/ as proper subpackage
Move the standalone evals framework from the project root into the openjarvis package. Rewrite all ~50+ import statements from 'from evals.' to 'from openjarvis.evals.' across the package, CLI, and tests. Remove the evals-specific pyproject.toml (no longer a standalone package). Update ruff per-file-ignores paths and fix line-length violations introduced by the longer import paths. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.6
parent
99d8f39613
commit
a9518e1574
@@ -1,6 +0,0 @@
|
||||
"""Allow running as ``python -m evals``."""
|
||||
|
||||
from evals.cli import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,24 +0,0 @@
|
||||
[project]
|
||||
name = "openjarvis-evals"
|
||||
version = "0.1.0"
|
||||
description = "Evaluation framework for OpenJarvis"
|
||||
requires-python = ">=3.10"
|
||||
dependencies = [
|
||||
"openjarvis>=1.0.0",
|
||||
"click>=8",
|
||||
"datasets>=2.14",
|
||||
"huggingface-hub>=0.20",
|
||||
"tqdm>=4.65",
|
||||
"rich>=13",
|
||||
"tomli>=2.0; python_version < '3.11'",
|
||||
]
|
||||
|
||||
[project.optional-dependencies]
|
||||
dev = ["pytest>=8", "pytest-cov>=5"]
|
||||
|
||||
[project.scripts]
|
||||
openjarvis-eval = "evals.cli:main"
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
+2
-2
@@ -132,5 +132,5 @@ src = ["src", "tests"]
|
||||
select = ["E", "F", "I", "W"]
|
||||
|
||||
[tool.ruff.lint.per-file-ignores]
|
||||
"evals/datasets/*.py" = ["E501"]
|
||||
"evals/scorers/*.py" = ["E501"]
|
||||
"src/openjarvis/evals/datasets/*.py" = ["E501"]
|
||||
"src/openjarvis/evals/scorers/*.py" = ["E501"]
|
||||
|
||||
@@ -135,7 +135,7 @@ def eval_run(
|
||||
# Config-driven mode: load TOML suite, expand, run all
|
||||
if config_path is not None:
|
||||
try:
|
||||
from evals.core.config import expand_suite, load_eval_config
|
||||
from openjarvis.evals.core.config import expand_suite, load_eval_config
|
||||
except ImportError:
|
||||
console.print(
|
||||
"[red]Eval framework not available. "
|
||||
@@ -159,7 +159,7 @@ def eval_run(
|
||||
)
|
||||
|
||||
try:
|
||||
from evals.cli import _run_single
|
||||
from openjarvis.evals.cli import _run_single
|
||||
except ImportError:
|
||||
console.print(
|
||||
"[red]Eval CLI module not available.[/red]"
|
||||
@@ -195,7 +195,7 @@ def eval_run(
|
||||
)
|
||||
|
||||
try:
|
||||
from evals.core.types import RunConfig
|
||||
from openjarvis.evals.core.types import RunConfig
|
||||
except ImportError:
|
||||
console.print(
|
||||
"[red]Eval framework not available. "
|
||||
@@ -219,7 +219,7 @@ def eval_run(
|
||||
)
|
||||
|
||||
try:
|
||||
from evals.cli import _run_single
|
||||
from openjarvis.evals.cli import _run_single
|
||||
|
||||
console.print(
|
||||
f"[cyan]Benchmark:[/cyan] {benchmark}\n"
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
"""Allow running as ``python -m openjarvis.evals``."""
|
||||
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
import time
|
||||
from typing import Any, Dict, List, Optional
|
||||
|
||||
from evals.core.backend import InferenceBackend
|
||||
from openjarvis.evals.core.backend import InferenceBackend
|
||||
|
||||
|
||||
class JarvisAgentBackend(InferenceBackend):
|
||||
@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
import time
|
||||
from typing import Any, Dict, Optional
|
||||
|
||||
from evals.core.backend import InferenceBackend
|
||||
from openjarvis.evals.core.backend import InferenceBackend
|
||||
|
||||
|
||||
class JarvisDirectBackend(InferenceBackend):
|
||||
@@ -17,7 +17,7 @@ from rich.progress import (
|
||||
TimeRemainingColumn,
|
||||
)
|
||||
|
||||
from evals.core.display import (
|
||||
from openjarvis.evals.core.display import (
|
||||
print_banner,
|
||||
print_completion,
|
||||
print_full_results,
|
||||
@@ -72,7 +72,7 @@ def _build_backend(backend_name: str, engine_key: Optional[str],
|
||||
telemetry: bool = False, gpu_metrics: bool = False):
|
||||
"""Construct the appropriate backend."""
|
||||
if backend_name == "jarvis-agent":
|
||||
from evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
from openjarvis.evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
return JarvisAgentBackend(
|
||||
engine_key=engine_key,
|
||||
agent_name=agent_name,
|
||||
@@ -81,7 +81,7 @@ def _build_backend(backend_name: str, engine_key: Optional[str],
|
||||
gpu_metrics=gpu_metrics,
|
||||
)
|
||||
else:
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
return JarvisDirectBackend(
|
||||
engine_key=engine_key,
|
||||
telemetry=telemetry,
|
||||
@@ -92,49 +92,51 @@ def _build_backend(backend_name: str, engine_key: Optional[str],
|
||||
def _build_dataset(benchmark: str):
|
||||
"""Construct the dataset provider for a benchmark."""
|
||||
if benchmark == "supergpqa":
|
||||
from evals.datasets.supergpqa import SuperGPQADataset
|
||||
from openjarvis.evals.datasets.supergpqa import SuperGPQADataset
|
||||
return SuperGPQADataset()
|
||||
elif benchmark == "gpqa":
|
||||
from evals.datasets.gpqa import GPQADataset
|
||||
from openjarvis.evals.datasets.gpqa import GPQADataset
|
||||
return GPQADataset()
|
||||
elif benchmark == "mmlu-pro":
|
||||
from evals.datasets.mmlu_pro import MMLUProDataset
|
||||
from openjarvis.evals.datasets.mmlu_pro import MMLUProDataset
|
||||
return MMLUProDataset()
|
||||
elif benchmark == "math500":
|
||||
from evals.datasets.math500 import MATH500Dataset
|
||||
from openjarvis.evals.datasets.math500 import MATH500Dataset
|
||||
return MATH500Dataset()
|
||||
elif benchmark == "natural-reasoning":
|
||||
from evals.datasets.natural_reasoning import NaturalReasoningDataset
|
||||
from openjarvis.evals.datasets.natural_reasoning import NaturalReasoningDataset
|
||||
return NaturalReasoningDataset()
|
||||
elif benchmark == "hle":
|
||||
from evals.datasets.hle import HLEDataset
|
||||
from openjarvis.evals.datasets.hle import HLEDataset
|
||||
return HLEDataset()
|
||||
elif benchmark == "simpleqa":
|
||||
from evals.datasets.simpleqa import SimpleQADataset
|
||||
from openjarvis.evals.datasets.simpleqa import SimpleQADataset
|
||||
return SimpleQADataset()
|
||||
elif benchmark == "wildchat":
|
||||
from evals.datasets.wildchat import WildChatDataset
|
||||
from openjarvis.evals.datasets.wildchat import WildChatDataset
|
||||
return WildChatDataset()
|
||||
elif benchmark == "ipw":
|
||||
from evals.datasets.ipw_mixed import IPWDataset
|
||||
from openjarvis.evals.datasets.ipw_mixed import IPWDataset
|
||||
return IPWDataset()
|
||||
elif benchmark == "gaia":
|
||||
from evals.datasets.gaia import GAIADataset
|
||||
from openjarvis.evals.datasets.gaia import GAIADataset
|
||||
return GAIADataset()
|
||||
elif benchmark == "frames":
|
||||
from evals.datasets.frames import FRAMESDataset
|
||||
from openjarvis.evals.datasets.frames import FRAMESDataset
|
||||
return FRAMESDataset()
|
||||
elif benchmark == "swebench":
|
||||
from evals.datasets.swebench import SWEBenchDataset
|
||||
from openjarvis.evals.datasets.swebench import SWEBenchDataset
|
||||
return SWEBenchDataset()
|
||||
elif benchmark == "swefficiency":
|
||||
from evals.datasets.swefficiency import SWEfficiencyDataset
|
||||
from openjarvis.evals.datasets.swefficiency import SWEfficiencyDataset
|
||||
return SWEfficiencyDataset()
|
||||
elif benchmark == "terminalbench":
|
||||
from evals.datasets.terminalbench import TerminalBenchDataset
|
||||
from openjarvis.evals.datasets.terminalbench import TerminalBenchDataset
|
||||
return TerminalBenchDataset()
|
||||
elif benchmark == "terminalbench-native":
|
||||
from evals.datasets.terminalbench_native import TerminalBenchNativeDataset
|
||||
from openjarvis.evals.datasets.terminalbench_native import (
|
||||
TerminalBenchNativeDataset,
|
||||
)
|
||||
return TerminalBenchNativeDataset()
|
||||
else:
|
||||
raise click.ClickException(f"Unknown benchmark: {benchmark}")
|
||||
@@ -143,46 +145,46 @@ def _build_dataset(benchmark: str):
|
||||
def _build_scorer(benchmark: str, judge_backend, judge_model: str):
|
||||
"""Construct the scorer for a benchmark."""
|
||||
if benchmark == "supergpqa":
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
return SuperGPQAScorer(judge_backend, judge_model)
|
||||
elif benchmark == "gpqa":
|
||||
from evals.scorers.gpqa_mcq import GPQAScorer
|
||||
from openjarvis.evals.scorers.gpqa_mcq import GPQAScorer
|
||||
return GPQAScorer(judge_backend, judge_model)
|
||||
elif benchmark == "mmlu-pro":
|
||||
from evals.scorers.mmlu_pro_mcq import MMLUProScorer
|
||||
from openjarvis.evals.scorers.mmlu_pro_mcq import MMLUProScorer
|
||||
return MMLUProScorer(judge_backend, judge_model)
|
||||
elif benchmark == "math500" or benchmark == "natural-reasoning":
|
||||
from evals.scorers.reasoning_judge import ReasoningJudgeScorer
|
||||
from openjarvis.evals.scorers.reasoning_judge import ReasoningJudgeScorer
|
||||
return ReasoningJudgeScorer(judge_backend, judge_model)
|
||||
elif benchmark == "hle":
|
||||
from evals.scorers.hle_judge import HLEScorer
|
||||
from openjarvis.evals.scorers.hle_judge import HLEScorer
|
||||
return HLEScorer(judge_backend, judge_model)
|
||||
elif benchmark == "simpleqa":
|
||||
from evals.scorers.simpleqa_judge import SimpleQAScorer
|
||||
from openjarvis.evals.scorers.simpleqa_judge import SimpleQAScorer
|
||||
return SimpleQAScorer(judge_backend, judge_model)
|
||||
elif benchmark == "wildchat":
|
||||
from evals.scorers.wildchat_judge import WildChatScorer
|
||||
from openjarvis.evals.scorers.wildchat_judge import WildChatScorer
|
||||
return WildChatScorer(judge_backend, judge_model)
|
||||
elif benchmark == "ipw":
|
||||
from evals.scorers.ipw_mixed import IPWMixedScorer
|
||||
from openjarvis.evals.scorers.ipw_mixed import IPWMixedScorer
|
||||
return IPWMixedScorer(judge_backend, judge_model)
|
||||
elif benchmark == "gaia":
|
||||
from evals.scorers.gaia_exact import GAIAScorer
|
||||
from openjarvis.evals.scorers.gaia_exact import GAIAScorer
|
||||
return GAIAScorer(judge_backend, judge_model)
|
||||
elif benchmark == "frames":
|
||||
from evals.scorers.frames_judge import FRAMESScorer
|
||||
from openjarvis.evals.scorers.frames_judge import FRAMESScorer
|
||||
return FRAMESScorer(judge_backend, judge_model)
|
||||
elif benchmark == "swebench":
|
||||
from evals.scorers.swebench_structural import SWEBenchScorer
|
||||
from openjarvis.evals.scorers.swebench_structural import SWEBenchScorer
|
||||
return SWEBenchScorer(judge_backend, judge_model)
|
||||
elif benchmark == "swefficiency":
|
||||
from evals.scorers.swefficiency_structural import SWEfficiencyScorer
|
||||
from openjarvis.evals.scorers.swefficiency_structural import SWEfficiencyScorer
|
||||
return SWEfficiencyScorer(judge_backend, judge_model)
|
||||
elif benchmark == "terminalbench":
|
||||
from evals.scorers.terminalbench_judge import TerminalBenchScorer
|
||||
from openjarvis.evals.scorers.terminalbench_judge import TerminalBenchScorer
|
||||
return TerminalBenchScorer(judge_backend, judge_model)
|
||||
elif benchmark == "terminalbench-native":
|
||||
from evals.scorers.terminalbench_native_structural import (
|
||||
from openjarvis.evals.scorers.terminalbench_native_structural import (
|
||||
TerminalBenchNativeScorer,
|
||||
)
|
||||
return TerminalBenchNativeScorer(judge_backend, judge_model)
|
||||
@@ -192,7 +194,7 @@ def _build_scorer(benchmark: str, judge_backend, judge_model: str):
|
||||
|
||||
def _build_judge_backend(judge_model: str):
|
||||
"""Build the judge backend (always cloud for LLM-as-judge)."""
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
return JarvisDirectBackend(engine_key="cloud")
|
||||
|
||||
|
||||
@@ -217,7 +219,7 @@ def _print_summary(
|
||||
|
||||
def _run_single(config, console: Optional[Console] = None) -> object:
|
||||
"""Run a single eval from a RunConfig and return the summary."""
|
||||
from evals.core.runner import EvalRunner
|
||||
from openjarvis.evals.core.runner import EvalRunner
|
||||
|
||||
if console is None:
|
||||
console = Console()
|
||||
@@ -264,7 +266,7 @@ def _run_single(config, console: Optional[Console] = None) -> object:
|
||||
|
||||
def _run_from_config(config_path: str, verbose: bool) -> None:
|
||||
"""Load a TOML config and run the full models x benchmarks matrix."""
|
||||
from evals.core.config import expand_suite, load_eval_config
|
||||
from openjarvis.evals.core.config import expand_suite, load_eval_config
|
||||
|
||||
console = Console()
|
||||
|
||||
@@ -381,7 +383,7 @@ def run(ctx, config_path, benchmark, backend, model, engine_key, agent_name,
|
||||
"(required when --config is not provided)"
|
||||
)
|
||||
|
||||
from evals.core.types import RunConfig
|
||||
from openjarvis.evals.core.types import RunConfig
|
||||
|
||||
tool_list = [t.strip() for t in tools.split(",") if t.strip()] if tools else []
|
||||
|
||||
@@ -451,8 +453,8 @@ def run_all(model, engine_key, max_samples, max_workers, judge_model,
|
||||
"""Run all benchmarks."""
|
||||
_setup_logging(verbose)
|
||||
|
||||
from evals.core.runner import EvalRunner
|
||||
from evals.core.types import RunConfig
|
||||
from openjarvis.evals.core.runner import EvalRunner
|
||||
from openjarvis.evals.core.types import RunConfig
|
||||
|
||||
console = Console()
|
||||
|
||||
@@ -7,7 +7,7 @@ import sys
|
||||
from pathlib import Path
|
||||
from typing import List
|
||||
|
||||
from evals.core.types import (
|
||||
from openjarvis.evals.core.types import (
|
||||
BenchmarkConfig,
|
||||
DefaultsConfig,
|
||||
EvalSuiteConfig,
|
||||
@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Iterable, Optional
|
||||
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
class DatasetProvider(ABC):
|
||||
@@ -12,7 +12,7 @@ from rich.table import Table
|
||||
if TYPE_CHECKING:
|
||||
from pathlib import Path
|
||||
|
||||
from evals.core.types import MetricStats, RunSummary
|
||||
from openjarvis.evals.core.types import MetricStats, RunSummary
|
||||
|
||||
OPENJARVIS_BANNER = r"""
|
||||
___ _ _
|
||||
@@ -11,10 +11,10 @@ from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from pathlib import Path
|
||||
from typing import Any, Callable, Dict, List, Optional
|
||||
|
||||
from evals.core.backend import InferenceBackend
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.scorer import Scorer
|
||||
from evals.core.types import EvalRecord, EvalResult, MetricStats, RunConfig, RunSummary
|
||||
from openjarvis.evals.core.backend import InferenceBackend
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.scorer import Scorer
|
||||
from openjarvis.evals.core.types import EvalRecord, EvalResult, MetricStats, RunConfig, RunSummary
|
||||
|
||||
try:
|
||||
from openjarvis.telemetry.efficiency import compute_efficiency
|
||||
@@ -5,8 +5,8 @@ from __future__ import annotations
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.backend import InferenceBackend
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.backend import InferenceBackend
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
class Scorer(ABC):
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_DEFAULT_INPUT_PROMPT = """Please answer the question below. You should:
|
||||
|
||||
@@ -11,8 +11,8 @@ import shutil
|
||||
from pathlib import Path
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_DEFAULT_CACHE_DIR = Path.home() / ".cache" / "gaia_benchmark"
|
||||
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
def _format_options(options: Iterable[str]) -> str:
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
# Fields whose presence signals a multimodal row.
|
||||
_MULTIMODAL_FIELDS = frozenset(
|
||||
@@ -13,8 +13,8 @@ import random
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_PROMPT_TEMPLATE = (
|
||||
"Solve the following math problem step by step. "
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
def _format_options(options: Iterable[str]) -> str:
|
||||
+2
-2
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_PROMPT_TEMPLATE = (
|
||||
"Please solve the following reasoning problem. "
|
||||
@@ -9,8 +9,8 @@ import ast
|
||||
import random
|
||||
from typing import Any, Dict, Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_PROMPT_TEMPLATE = """Please answer the following question with a short, factual response.
|
||||
Your answer should be a word, phrase, name, number, or date.
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
def _format_options(options: Iterable[str]) -> str:
|
||||
@@ -9,8 +9,8 @@ import json
|
||||
import random
|
||||
from typing import Any, Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_HF_PATHS = {
|
||||
"verified": "princeton-nlp/SWE-bench_Verified",
|
||||
@@ -9,8 +9,8 @@ import json
|
||||
import random
|
||||
from typing import Any, Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_HF_PATH = "swefficiency/swefficiency"
|
||||
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
try:
|
||||
from datasets import load_dataset as _load_dataset # noqa: F401
|
||||
+2
-2
@@ -10,8 +10,8 @@ import random
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, Iterable, List, Optional
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
try:
|
||||
from terminal_bench import Task, TaskPaths
|
||||
@@ -8,8 +8,8 @@ from __future__ import annotations
|
||||
import random
|
||||
from typing import Iterable, List, MutableMapping, Optional, Sequence
|
||||
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
class WildChatDataset(DatasetProvider):
|
||||
@@ -9,8 +9,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -10,8 +10,8 @@ import re
|
||||
import string
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -9,8 +9,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,9 +11,9 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.reasoning_judge import reasoning_exact_match
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.reasoning_judge import reasoning_exact_match
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,8 +11,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -9,8 +9,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,8 +11,8 @@ import re
|
||||
import string
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,8 +11,8 @@ import re
|
||||
import string
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -9,8 +9,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
+2
-2
@@ -11,8 +11,8 @@ from __future__ import annotations
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import Scorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import Scorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_DIFF_MARKERS = [
|
||||
r"^---\s",
|
||||
+2
-2
@@ -12,8 +12,8 @@ from __future__ import annotations
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import Scorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import Scorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
_DIFF_MARKERS = [
|
||||
r"^---\s",
|
||||
+2
-2
@@ -10,8 +10,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
+2
-2
@@ -9,8 +9,8 @@ from __future__ import annotations
|
||||
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import Scorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import Scorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
|
||||
class TerminalBenchNativeScorer(Scorer):
|
||||
@@ -9,8 +9,8 @@ import logging
|
||||
import re
|
||||
from typing import Any, Dict, Optional, Tuple
|
||||
|
||||
from evals.core.scorer import LLMJudgeScorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.scorer import LLMJudgeScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
LOGGER = logging.getLogger(__name__)
|
||||
|
||||
@@ -11,10 +11,10 @@ import pytest
|
||||
# Ensure evals package is importable from the repo root
|
||||
sys.path.insert(0, str(Path(__file__).resolve().parent.parent.parent))
|
||||
|
||||
from evals.core.backend import InferenceBackend
|
||||
from evals.core.dataset import DatasetProvider
|
||||
from evals.core.scorer import Scorer
|
||||
from evals.core.types import EvalRecord
|
||||
from openjarvis.evals.core.backend import InferenceBackend
|
||||
from openjarvis.evals.core.dataset import DatasetProvider
|
||||
from openjarvis.evals.core.scorer import Scorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Mock backend
|
||||
@@ -16,7 +16,7 @@ class TestJarvisDirectBackend:
|
||||
mock_builder.build.return_value = mock_system
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
|
||||
backend = JarvisDirectBackend()
|
||||
assert backend.backend_id == "jarvis-direct"
|
||||
@@ -33,7 +33,7 @@ class TestJarvisDirectBackend:
|
||||
mock_builder.build.return_value = MagicMock()
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
|
||||
JarvisDirectBackend(engine_key="cloud")
|
||||
mock_builder.engine.assert_called_with("cloud")
|
||||
@@ -54,7 +54,7 @@ class TestJarvisDirectBackend:
|
||||
mock_builder.build.return_value = mock_system
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
|
||||
backend = JarvisDirectBackend()
|
||||
result = backend.generate_full("What is 2+2?", model="test-model")
|
||||
@@ -77,7 +77,7 @@ class TestJarvisDirectBackend:
|
||||
mock_builder.build.return_value = mock_system
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
from openjarvis.evals.backends.jarvis_direct import JarvisDirectBackend
|
||||
|
||||
backend = JarvisDirectBackend()
|
||||
text = backend.generate("Capital of France?", model="m")
|
||||
@@ -96,7 +96,7 @@ class TestJarvisAgentBackend:
|
||||
mock_builder.build.return_value = MagicMock()
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
from openjarvis.evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
|
||||
backend = JarvisAgentBackend(
|
||||
engine_key="cloud", agent_name="orchestrator",
|
||||
@@ -128,7 +128,7 @@ class TestJarvisAgentBackend:
|
||||
mock_builder.build.return_value = mock_system
|
||||
mock_builder_cls.return_value = mock_builder
|
||||
|
||||
from evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
from openjarvis.evals.backends.jarvis_agent import JarvisAgentBackend
|
||||
|
||||
backend = JarvisAgentBackend(agent_name="orchestrator")
|
||||
result = backend.generate_full("What is 2+2?", model="gpt-4o")
|
||||
@@ -4,7 +4,7 @@ from __future__ import annotations
|
||||
|
||||
from click.testing import CliRunner
|
||||
|
||||
from evals.cli import main
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
|
||||
class TestCompactFlag:
|
||||
@@ -7,8 +7,8 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
from evals.core.config import EvalConfigError, expand_suite, load_eval_config
|
||||
from evals.core.types import (
|
||||
from openjarvis.evals.core.config import EvalConfigError, expand_suite, load_eval_config
|
||||
from openjarvis.evals.core.types import (
|
||||
BenchmarkConfig,
|
||||
DefaultsConfig,
|
||||
EvalSuiteConfig,
|
||||
@@ -597,7 +597,7 @@ class TestExpandSuite:
|
||||
class TestCLIConfig:
|
||||
def test_run_missing_benchmark_and_config(self):
|
||||
from click.testing import CliRunner
|
||||
from evals.cli import main
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["run", "-m", "qwen3:8b"])
|
||||
@@ -606,7 +606,7 @@ class TestCLIConfig:
|
||||
|
||||
def test_run_missing_model_and_config(self):
|
||||
from click.testing import CliRunner
|
||||
from evals.cli import main
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["run", "-b", "supergpqa"])
|
||||
@@ -615,7 +615,7 @@ class TestCLIConfig:
|
||||
|
||||
def test_run_config_file_not_found(self):
|
||||
from click.testing import CliRunner
|
||||
from evals.cli import main
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
runner = CliRunner()
|
||||
result = runner.invoke(main, ["run", "--config", "/nonexistent.toml"])
|
||||
@@ -630,7 +630,7 @@ class TestCLIConfig:
|
||||
from unittest.mock import patch
|
||||
|
||||
from click.testing import CliRunner
|
||||
from evals.cli import main
|
||||
from openjarvis.evals.cli import main
|
||||
|
||||
p = _write_toml(tmp_path, """\
|
||||
[meta]
|
||||
@@ -6,7 +6,7 @@ from io import StringIO
|
||||
|
||||
from rich.console import Console
|
||||
|
||||
from evals.core.display import (
|
||||
from openjarvis.evals.core.display import (
|
||||
print_accuracy_panel,
|
||||
print_energy_table,
|
||||
print_latency_table,
|
||||
@@ -14,7 +14,7 @@ from evals.core.display import (
|
||||
print_compact_table,
|
||||
print_full_results,
|
||||
)
|
||||
from evals.core.types import MetricStats, RunSummary
|
||||
from openjarvis.evals.core.types import MetricStats, RunSummary
|
||||
|
||||
|
||||
def _make_summary(**overrides) -> RunSummary:
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.frames_judge import _GRADER_TEMPLATE, FRAMESScorer
|
||||
from evals.tests.conftest import MockBackend
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.frames_judge import _GRADER_TEMPLATE, FRAMESScorer
|
||||
from openjarvis.evals.tests.conftest import MockBackend
|
||||
|
||||
|
||||
class TestGraderTemplate:
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.gaia_exact import (
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.gaia_exact import (
|
||||
GAIAScorer,
|
||||
_is_float,
|
||||
_normalize_number_str,
|
||||
@@ -11,7 +11,7 @@ from evals.scorers.gaia_exact import (
|
||||
_split_string,
|
||||
exact_match,
|
||||
)
|
||||
from evals.tests.conftest import MockBackend
|
||||
from openjarvis.evals.tests.conftest import MockBackend
|
||||
|
||||
|
||||
class TestNormalization:
|
||||
@@ -6,9 +6,13 @@ import json
|
||||
|
||||
import pytest
|
||||
|
||||
from evals.core.runner import EvalRunner, _metric_stats, _metric_stats_to_dict
|
||||
from evals.core.types import EvalRecord, MetricStats, RunConfig
|
||||
from evals.tests.conftest import MockBackend, MockDataset, MockScorer
|
||||
from openjarvis.evals.core.runner import (
|
||||
EvalRunner,
|
||||
_metric_stats,
|
||||
_metric_stats_to_dict,
|
||||
)
|
||||
from openjarvis.evals.core.types import EvalRecord, MetricStats, RunConfig
|
||||
from openjarvis.evals.tests.conftest import MockBackend, MockDataset, MockScorer
|
||||
|
||||
|
||||
class TestEvalRunner:
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.tests.conftest import MockBackend
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.tests.conftest import MockBackend
|
||||
|
||||
|
||||
class TestSuperGPQAScorer:
|
||||
@@ -25,7 +25,7 @@ class TestSuperGPQAScorer:
|
||||
)
|
||||
|
||||
def test_correct_extraction(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend(responses={})
|
||||
backend._default_response = "B"
|
||||
@@ -39,7 +39,7 @@ class TestSuperGPQAScorer:
|
||||
assert meta["candidate_letter"] == "B"
|
||||
|
||||
def test_incorrect_extraction(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend()
|
||||
backend._default_response = "A"
|
||||
@@ -52,7 +52,7 @@ class TestSuperGPQAScorer:
|
||||
assert meta["candidate_letter"] == "A"
|
||||
|
||||
def test_missing_reference(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend()
|
||||
scorer = SuperGPQAScorer(backend, "gpt-4o")
|
||||
@@ -64,7 +64,7 @@ class TestSuperGPQAScorer:
|
||||
assert meta["reason"] == "missing_reference_letter"
|
||||
|
||||
def test_no_extraction(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend()
|
||||
backend._default_response = "NONE"
|
||||
@@ -77,7 +77,7 @@ class TestSuperGPQAScorer:
|
||||
assert meta["reason"] == "no_choice_letter_extracted"
|
||||
|
||||
def test_valid_letters_from_options(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend()
|
||||
scorer = SuperGPQAScorer(backend, "gpt-4o")
|
||||
@@ -92,7 +92,7 @@ class TestSuperGPQAScorer:
|
||||
assert letters == "ABCD"
|
||||
|
||||
def test_extraction_with_verbose_response(self):
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
|
||||
backend = MockBackend()
|
||||
backend._default_response = "THE ANSWER IS: C"
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from evals.core.types import (
|
||||
from openjarvis.evals.core.types import (
|
||||
BenchmarkConfig,
|
||||
DefaultsConfig,
|
||||
EvalRecord,
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.wildchat_judge import WildChatScorer
|
||||
from evals.tests.conftest import MockBackend
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.wildchat_judge import WildChatScorer
|
||||
from openjarvis.evals.tests.conftest import MockBackend
|
||||
|
||||
|
||||
class TestVerdictParsing:
|
||||
@@ -23,91 +23,91 @@ class TestDatasetInstantiation:
|
||||
"""Verify each dataset class can be instantiated with correct attributes."""
|
||||
|
||||
def test_supergpqa(self) -> None:
|
||||
from evals.datasets.supergpqa import SuperGPQADataset
|
||||
from openjarvis.evals.datasets.supergpqa import SuperGPQADataset
|
||||
ds = SuperGPQADataset()
|
||||
assert ds.dataset_id == "supergpqa"
|
||||
assert ds.dataset_name == "SuperGPQA"
|
||||
|
||||
def test_gpqa(self) -> None:
|
||||
from evals.datasets.gpqa import GPQADataset
|
||||
from openjarvis.evals.datasets.gpqa import GPQADataset
|
||||
ds = GPQADataset()
|
||||
assert ds.dataset_id == "gpqa"
|
||||
assert ds.dataset_name == "GPQA"
|
||||
|
||||
def test_mmlu_pro(self) -> None:
|
||||
from evals.datasets.mmlu_pro import MMLUProDataset
|
||||
from openjarvis.evals.datasets.mmlu_pro import MMLUProDataset
|
||||
ds = MMLUProDataset()
|
||||
assert ds.dataset_id == "mmlu-pro"
|
||||
assert ds.dataset_name == "MMLU-Pro"
|
||||
|
||||
def test_math500(self) -> None:
|
||||
from evals.datasets.math500 import MATH500Dataset
|
||||
from openjarvis.evals.datasets.math500 import MATH500Dataset
|
||||
ds = MATH500Dataset()
|
||||
assert ds.dataset_id == "math500"
|
||||
assert ds.dataset_name == "MATH-500"
|
||||
|
||||
def test_natural_reasoning(self) -> None:
|
||||
from evals.datasets.natural_reasoning import NaturalReasoningDataset
|
||||
from openjarvis.evals.datasets.natural_reasoning import NaturalReasoningDataset
|
||||
ds = NaturalReasoningDataset()
|
||||
assert ds.dataset_id == "natural-reasoning"
|
||||
assert ds.dataset_name == "Natural Reasoning"
|
||||
|
||||
def test_hle(self) -> None:
|
||||
from evals.datasets.hle import HLEDataset
|
||||
from openjarvis.evals.datasets.hle import HLEDataset
|
||||
ds = HLEDataset()
|
||||
assert ds.dataset_id == "hle"
|
||||
assert ds.dataset_name == "HLE"
|
||||
|
||||
def test_simpleqa(self) -> None:
|
||||
from evals.datasets.simpleqa import SimpleQADataset
|
||||
from openjarvis.evals.datasets.simpleqa import SimpleQADataset
|
||||
ds = SimpleQADataset()
|
||||
assert ds.dataset_id == "simpleqa"
|
||||
assert ds.dataset_name == "SimpleQA"
|
||||
|
||||
def test_wildchat(self) -> None:
|
||||
from evals.datasets.wildchat import WildChatDataset
|
||||
from openjarvis.evals.datasets.wildchat import WildChatDataset
|
||||
ds = WildChatDataset()
|
||||
assert ds.dataset_id == "wildchat"
|
||||
assert ds.dataset_name == "WildChat"
|
||||
|
||||
def test_ipw(self) -> None:
|
||||
from evals.datasets.ipw_mixed import IPWDataset
|
||||
from openjarvis.evals.datasets.ipw_mixed import IPWDataset
|
||||
ds = IPWDataset()
|
||||
assert ds.dataset_id == "ipw"
|
||||
assert ds.dataset_name == "IPW"
|
||||
|
||||
def test_gaia(self) -> None:
|
||||
from evals.datasets.gaia import GAIADataset
|
||||
from openjarvis.evals.datasets.gaia import GAIADataset
|
||||
ds = GAIADataset()
|
||||
assert ds.dataset_id == "gaia"
|
||||
assert ds.dataset_name == "GAIA"
|
||||
|
||||
def test_frames(self) -> None:
|
||||
from evals.datasets.frames import FRAMESDataset
|
||||
from openjarvis.evals.datasets.frames import FRAMESDataset
|
||||
ds = FRAMESDataset()
|
||||
assert ds.dataset_id == "frames"
|
||||
assert ds.dataset_name == "FRAMES"
|
||||
|
||||
def test_swebench(self) -> None:
|
||||
from evals.datasets.swebench import SWEBenchDataset
|
||||
from openjarvis.evals.datasets.swebench import SWEBenchDataset
|
||||
ds = SWEBenchDataset()
|
||||
assert ds.dataset_id == "swebench"
|
||||
assert ds.dataset_name == "SWE-bench"
|
||||
|
||||
def test_swefficiency(self) -> None:
|
||||
from evals.datasets.swefficiency import SWEfficiencyDataset
|
||||
from openjarvis.evals.datasets.swefficiency import SWEfficiencyDataset
|
||||
ds = SWEfficiencyDataset()
|
||||
assert ds.dataset_id == "swefficiency"
|
||||
assert ds.dataset_name == "SWEfficiency"
|
||||
|
||||
def test_terminalbench(self) -> None:
|
||||
from evals.datasets.terminalbench import TerminalBenchDataset
|
||||
from openjarvis.evals.datasets.terminalbench import TerminalBenchDataset
|
||||
ds = TerminalBenchDataset()
|
||||
assert ds.dataset_id == "terminalbench"
|
||||
assert ds.dataset_name == "TerminalBench"
|
||||
|
||||
def test_terminalbench_native(self) -> None:
|
||||
from evals.datasets.terminalbench_native import (
|
||||
from openjarvis.evals.datasets.terminalbench_native import (
|
||||
TerminalBenchNativeDataset,
|
||||
)
|
||||
ds = TerminalBenchNativeDataset()
|
||||
@@ -131,74 +131,74 @@ class TestScorerInstantiation:
|
||||
"""Verify each scorer class can be constructed."""
|
||||
|
||||
def test_supergpqa_scorer(self) -> None:
|
||||
from evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
from openjarvis.evals.scorers.supergpqa_mcq import SuperGPQAScorer
|
||||
s = SuperGPQAScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "supergpqa"
|
||||
|
||||
def test_gpqa_scorer(self) -> None:
|
||||
from evals.scorers.gpqa_mcq import GPQAScorer
|
||||
from openjarvis.evals.scorers.gpqa_mcq import GPQAScorer
|
||||
s = GPQAScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "gpqa"
|
||||
|
||||
def test_mmlu_pro_scorer(self) -> None:
|
||||
from evals.scorers.mmlu_pro_mcq import MMLUProScorer
|
||||
from openjarvis.evals.scorers.mmlu_pro_mcq import MMLUProScorer
|
||||
s = MMLUProScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "mmlu-pro"
|
||||
|
||||
def test_reasoning_judge_scorer(self) -> None:
|
||||
from evals.scorers.reasoning_judge import ReasoningJudgeScorer
|
||||
from openjarvis.evals.scorers.reasoning_judge import ReasoningJudgeScorer
|
||||
s = ReasoningJudgeScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "reasoning_judge"
|
||||
|
||||
def test_hle_scorer(self) -> None:
|
||||
from evals.scorers.hle_judge import HLEScorer
|
||||
from openjarvis.evals.scorers.hle_judge import HLEScorer
|
||||
s = HLEScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "hle"
|
||||
|
||||
def test_simpleqa_scorer(self) -> None:
|
||||
from evals.scorers.simpleqa_judge import SimpleQAScorer
|
||||
from openjarvis.evals.scorers.simpleqa_judge import SimpleQAScorer
|
||||
s = SimpleQAScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "simpleqa"
|
||||
|
||||
def test_wildchat_scorer(self) -> None:
|
||||
from evals.scorers.wildchat_judge import WildChatScorer
|
||||
from openjarvis.evals.scorers.wildchat_judge import WildChatScorer
|
||||
s = WildChatScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "wildchat"
|
||||
|
||||
def test_ipw_mixed_scorer(self) -> None:
|
||||
from evals.scorers.ipw_mixed import IPWMixedScorer
|
||||
from openjarvis.evals.scorers.ipw_mixed import IPWMixedScorer
|
||||
s = IPWMixedScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "ipw"
|
||||
|
||||
def test_gaia_scorer(self) -> None:
|
||||
from evals.scorers.gaia_exact import GAIAScorer
|
||||
from openjarvis.evals.scorers.gaia_exact import GAIAScorer
|
||||
s = GAIAScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "gaia"
|
||||
|
||||
def test_frames_scorer(self) -> None:
|
||||
from evals.scorers.frames_judge import FRAMESScorer
|
||||
from openjarvis.evals.scorers.frames_judge import FRAMESScorer
|
||||
s = FRAMESScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "frames"
|
||||
|
||||
def test_swebench_scorer(self) -> None:
|
||||
from evals.scorers.swebench_structural import SWEBenchScorer
|
||||
from openjarvis.evals.scorers.swebench_structural import SWEBenchScorer
|
||||
s = SWEBenchScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "swebench"
|
||||
|
||||
def test_swefficiency_scorer(self) -> None:
|
||||
from evals.scorers.swefficiency_structural import (
|
||||
from openjarvis.evals.scorers.swefficiency_structural import (
|
||||
SWEfficiencyScorer,
|
||||
)
|
||||
s = SWEfficiencyScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "swefficiency"
|
||||
|
||||
def test_terminalbench_scorer(self) -> None:
|
||||
from evals.scorers.terminalbench_judge import TerminalBenchScorer
|
||||
from openjarvis.evals.scorers.terminalbench_judge import TerminalBenchScorer
|
||||
s = TerminalBenchScorer(_mock_backend(), "test-model")
|
||||
assert s.scorer_id == "terminalbench"
|
||||
|
||||
def test_terminalbench_native_scorer(self) -> None:
|
||||
from evals.scorers.terminalbench_native_structural import (
|
||||
from openjarvis.evals.scorers.terminalbench_native_structural import (
|
||||
TerminalBenchNativeScorer,
|
||||
)
|
||||
s = TerminalBenchNativeScorer(_mock_backend(), "test-model")
|
||||
@@ -222,7 +222,7 @@ class TestCLIFactories:
|
||||
|
||||
@pytest.mark.parametrize("benchmark", ALL_BENCHMARKS)
|
||||
def test_build_dataset(self, benchmark: str) -> None:
|
||||
from evals.cli import _build_dataset
|
||||
from openjarvis.evals.cli import _build_dataset
|
||||
ds = _build_dataset(benchmark)
|
||||
assert ds is not None
|
||||
assert hasattr(ds, "load")
|
||||
@@ -231,20 +231,20 @@ class TestCLIFactories:
|
||||
|
||||
@pytest.mark.parametrize("benchmark", ALL_BENCHMARKS)
|
||||
def test_build_scorer(self, benchmark: str) -> None:
|
||||
from evals.cli import _build_scorer
|
||||
from openjarvis.evals.cli import _build_scorer
|
||||
scorer = _build_scorer(benchmark, _mock_backend(), "test-model")
|
||||
assert scorer is not None
|
||||
assert hasattr(scorer, "score")
|
||||
|
||||
def test_build_dataset_unknown(self) -> None:
|
||||
import click
|
||||
from evals.cli import _build_dataset
|
||||
from openjarvis.evals.cli import _build_dataset
|
||||
with pytest.raises(click.ClickException, match="Unknown benchmark"):
|
||||
_build_dataset("nonexistent")
|
||||
|
||||
def test_build_scorer_unknown(self) -> None:
|
||||
import click
|
||||
from evals.cli import _build_scorer
|
||||
from openjarvis.evals.cli import _build_scorer
|
||||
with pytest.raises(click.ClickException, match="Unknown benchmark"):
|
||||
_build_scorer("nonexistent", _mock_backend(), "test-model")
|
||||
|
||||
@@ -258,12 +258,12 @@ class TestConfigBenchmarks:
|
||||
"""Verify KNOWN_BENCHMARKS includes all 15 benchmarks."""
|
||||
|
||||
def test_all_benchmarks_known(self) -> None:
|
||||
from evals.core.config import KNOWN_BENCHMARKS
|
||||
from openjarvis.evals.core.config import KNOWN_BENCHMARKS
|
||||
for b in ALL_BENCHMARKS:
|
||||
assert b in KNOWN_BENCHMARKS, f"{b} missing from KNOWN_BENCHMARKS"
|
||||
|
||||
def test_benchmarks_count(self) -> None:
|
||||
from evals.core.config import KNOWN_BENCHMARKS
|
||||
from openjarvis.evals.core.config import KNOWN_BENCHMARKS
|
||||
assert len(KNOWN_BENCHMARKS) == 15
|
||||
|
||||
|
||||
@@ -276,8 +276,8 @@ class TestStructuralScorers:
|
||||
"""Test structural scorers that don't need LLM calls."""
|
||||
|
||||
def test_swebench_empty_response(self) -> None:
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.swebench_structural import SWEBenchScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.swebench_structural import SWEBenchScorer
|
||||
scorer = SWEBenchScorer(_mock_backend(), "test-model")
|
||||
record = EvalRecord(
|
||||
record_id="swe-1", problem="Fix bug", reference="patch",
|
||||
@@ -288,8 +288,8 @@ class TestStructuralScorers:
|
||||
assert meta["reason"] == "empty_response"
|
||||
|
||||
def test_swebench_with_diff(self) -> None:
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.swebench_structural import SWEBenchScorer
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.swebench_structural import SWEBenchScorer
|
||||
scorer = SWEBenchScorer(_mock_backend(), "test-model")
|
||||
record = EvalRecord(
|
||||
record_id="swe-2", problem="Fix bug", reference="patch",
|
||||
@@ -302,8 +302,8 @@ class TestStructuralScorers:
|
||||
assert meta["has_diff_markers"] is True
|
||||
|
||||
def test_terminalbench_native_no_results(self) -> None:
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.terminalbench_native_structural import (
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.terminalbench_native_structural import (
|
||||
TerminalBenchNativeScorer,
|
||||
)
|
||||
scorer = TerminalBenchNativeScorer(_mock_backend(), "test-model")
|
||||
@@ -316,8 +316,8 @@ class TestStructuralScorers:
|
||||
assert meta["reason"] == "no_test_results"
|
||||
|
||||
def test_terminalbench_native_resolved(self) -> None:
|
||||
from evals.core.types import EvalRecord
|
||||
from evals.scorers.terminalbench_native_structural import (
|
||||
from openjarvis.evals.core.types import EvalRecord
|
||||
from openjarvis.evals.scorers.terminalbench_native_structural import (
|
||||
TerminalBenchNativeScorer,
|
||||
)
|
||||
scorer = TerminalBenchNativeScorer(_mock_backend(), "test-model")
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
"""Tests for the Rich display helpers in evals.core.display."""
|
||||
"""Tests for the Rich display helpers in openjarvis.evals.core.display."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from io import StringIO
|
||||
from pathlib import Path
|
||||
|
||||
from evals.core.display import (
|
||||
from openjarvis.evals.core.display import (
|
||||
print_banner,
|
||||
print_completion,
|
||||
print_metrics_table,
|
||||
@@ -14,7 +14,7 @@ from evals.core.display import (
|
||||
print_subject_table,
|
||||
print_suite_summary,
|
||||
)
|
||||
from evals.core.types import MetricStats, RunSummary
|
||||
from openjarvis.evals.core.types import MetricStats, RunSummary
|
||||
from rich.console import Console
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user