Skip to content

Commit 78d0cdb

Browse files
committed
fixed imports and pip speeds
1 parent e118f0e commit 78d0cdb

6 files changed

Lines changed: 37 additions & 73 deletions

File tree

eval_protocol/__init__.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,6 @@
2323
test_mcp,
2424
)
2525
from .data_loader import DynamicDataLoader, InlineDataLoader
26-
27-
# Try to import FireworksPolicy if available
28-
try:
29-
from .mcp_env import FireworksPolicy
30-
31-
_FIREWORKS_AVAILABLE = True
32-
except (ImportError, AttributeError):
33-
_FIREWORKS_AVAILABLE = False
34-
# Import submodules to make them available via eval_protocol.rewards, etc.
3526
from . import mcp, rewards
3627
from .models import EvaluateResult, Message, MetricResult, EvaluationRow, InputMetadata
3728
from .playback_policy import PlaybackPolicyBase
@@ -42,6 +33,13 @@
4233
from .pytest import evaluation_test, SingleTurnRolloutProcessor, RemoteRolloutProcessor
4334
from .pytest.parameterize import DefaultParameterIdGenerator
4435

36+
from .types.remote_rollout_processor import (
37+
InitRequest,
38+
RolloutMetadata,
39+
StatusResponse,
40+
create_langfuse_config_tags,
41+
)
42+
4543
try:
4644
from .adapters import OpenAIResponsesAdapter
4745
except ImportError:
@@ -62,14 +60,6 @@
6260
except ImportError:
6361
LangSmithAdapter = None
6462

65-
# Remote server types
66-
from .types.remote_rollout_processor import (
67-
InitRequest,
68-
RolloutMetadata,
69-
StatusResponse,
70-
create_langfuse_config_tags,
71-
)
72-
7363
warnings.filterwarnings("default", category=DeprecationWarning, module="eval_protocol")
7464

7565
__all__ = [

eval_protocol/adapters/huggingface.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,9 @@
1313
logger = logging.getLogger(__name__)
1414

1515
try:
16-
from datasets import Dataset, DatasetDict, load_dataset
17-
18-
DATASETS_AVAILABLE = True
16+
from datasets import Dataset, DatasetDict, load_dataset # pyright: ignore[reportAttributeAccessIssue]
1917
except ImportError:
20-
DATASETS_AVAILABLE = False
21-
logger.warning("HuggingFace datasets not installed. Install with: pip install 'eval-protocol[huggingface]'")
18+
raise ImportError("HuggingFace datasets not installed. Install with: pip install 'eval-protocol[huggingface]'")
2219

2320
# Type alias for transformation function
2421
TransformFunction = Callable[[Dict[str, Any]], Dict[str, Any]]
@@ -80,11 +77,6 @@ def __init__(
8077
revision: Optional dataset revision/commit hash
8178
**load_dataset_kwargs: Additional arguments to pass to load_dataset
8279
"""
83-
if not DATASETS_AVAILABLE:
84-
raise ImportError(
85-
"HuggingFace datasets not installed. Install with: pip install 'eval-protocol[huggingface]'"
86-
)
87-
8880
self.dataset_id = dataset_id
8981
self.transform_fn = transform_fn
9082
self.config_name = config_name

eval_protocol/execution/pipeline.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
import aiohttp
1414
import hydra
15-
from datasets import Dataset, DatasetDict
1615
from hydra.errors import InstantiationException
1716
from omegaconf import DictConfig, OmegaConf
1817

@@ -24,6 +23,14 @@
2423
from eval_protocol.utils.module_loader import load_function as load_reward_function
2524
from eval_protocol.utils.packaging_utils import install_requirements
2625

26+
try:
27+
from datasets import Dataset, DatasetDict # pyright: ignore[reportAttributeAccessIssue]
28+
except ImportError:
29+
raise ImportError(
30+
"The 'datasets' package is required to use this function. "
31+
"Please install it with 'pip install \"eval-protocol[huggingface]\"'"
32+
)
33+
2734
logger = logging.getLogger(__name__)
2835

2936

eval_protocol/mcp/execution/manager.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
import anyio
1818
from openai.types import CompletionUsage
1919

20-
from vendor.tau2.data_model.message import AssistantMessage, UserMessage
21-
from vendor.tau2.user.user_simulator import UserSimulator
22-
2320
from ...models import EvaluationRow, InputMetadata, Message, Status
2421
from ...types import TerminationReason, Trajectory, NonSkippableException
2522

@@ -234,6 +231,10 @@ def extract_text_content(msg_dict):
234231

235232
# If user simulation is enabled, initial message is from the simulated user
236233
if dataset_row.user_simulation and dataset_row.user_simulation.get("enabled", False):
234+
# Lazy import vendor.tau2 - only load when user simulation is actually used
235+
from vendor.tau2.data_model.message import AssistantMessage, UserMessage
236+
from vendor.tau2.user.user_simulator import UserSimulator
237+
237238
user_simulator = UserSimulator(
238239
instructions=dataset_row.user_simulation.get("system_prompt"),
239240
llm=dataset_row.user_simulation.get("llm", "gpt-4.1"),
@@ -598,6 +599,9 @@ def _get_user_simulator_messages(self, conversation_history: List[Dict[str, Any]
598599
"""
599600
Filter conversation history for user simulator and convert to tau2-bench format.
600601
"""
602+
# Lazy import vendor.tau2 types
603+
from vendor.tau2.data_model.message import AssistantMessage, UserMessage
604+
601605
tau2_messages = []
602606

603607
for message in conversation_history:

pyproject.toml

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,32 +27,25 @@ dependencies = [
2727
"aiohttp",
2828
"mcp>=1.9.2",
2929
"PyYAML>=5.0",
30-
# Pin minimum datasets to avoid pyarrow API mismatch (PyExtensionType removal in pyarrow>=21)
31-
"datasets>=3.0.0",
32-
"fsspec",
3330
"hydra-core>=1.3.2",
3431
"omegaconf>=2.3.0",
35-
"gymnasium>=0.29.0",
3632
"httpx>=0.24.0",
3733
"anthropic>=0.59.0",
38-
"ipykernel>=6.30.0",
39-
"jupyter>=1.1.1",
34+
"litellm<1.75.0",
35+
"pytest>=6.0.0",
36+
"pytest-asyncio>=0.21.0",
37+
"peewee>=3.18.2",
38+
"backoff>=2.2.0",
4039
# Dependencies for vendored tau2 package
4140
"toml>=0.10.0",
4241
"loguru>=0.6.0",
4342
"docstring-parser>=0.15",
4443
"rich>=12.0.0",
4544
"psutil>=5.8.0",
46-
"litellm<1.75.0",
4745
"addict>=2.4.0",
4846
"deepdiff>=6.0.0",
49-
"pandas>=1.5.0",
5047
"websockets>=15.0.1",
5148
"fastapi>=0.116.1",
52-
"pytest>=6.0.0",
53-
"pytest-asyncio>=0.21.0",
54-
"peewee>=3.18.2",
55-
"backoff>=2.2.0",
5649
]
5750

5851
[project.urls]
@@ -66,6 +59,7 @@ dev = [
6659
"werkzeug>=2.0.0",
6760
"ruff>=0.5.0",
6861
"transformers>=4.0.0",
62+
"pandas>=1.5.0",
6963
"types-setuptools",
7064
"types-requests",
7165
"types-PyYAML",
@@ -109,12 +103,6 @@ huggingface = [
109103
"datasets>=3.0.0",
110104
"transformers>=4.0.0",
111105
]
112-
adapters = [
113-
"langfuse>=2.0.0",
114-
# Keep in sync with core dependency to ensure compatibility with latest pyarrow
115-
"datasets>=3.0.0",
116-
"transformers>=4.0.0",
117-
]
118106
langsmith = [
119107
"langsmith>=0.1.86",
120108
]

uv.lock

Lines changed: 7 additions & 24 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)