diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 02bd00b0..4badb737 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -82,3 +82,46 @@ jobs: python -m build twine check dist/* python scripts/verify_publishable_dist.py dist + + gepa-release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - uses: pnpm/action-setup@v4 + + - uses: actions/setup-node@v4 + with: + node-version: 22 + cache: pnpm + + - uses: actions/setup-python@v5 + with: + python-version: '3.12' + + - uses: astral-sh/setup-uv@v6 + with: + enable-cache: true + cache-dependency-glob: clients/python/uv.lock + + - run: pnpm install --frozen-lockfile + + - name: Install published GEPA + working-directory: clients/python + run: uv sync --frozen --extra dev --group gepa-release + + - name: Test published GEPA compatibility + working-directory: clients/python + env: + AGENT_EVAL_EXPECT_GEPA_RELEASE: '1' + run: >- + uv run --frozen --extra dev --group gepa-release + pytest -v + tests/test_gepa_release_compatibility.py + tests/test_gepa_bridge.py + tests/test_official_optimizer_compatibility.py::test_agent_eval_gepa_bridge_resumes_state_from_a_real_prior_run + + - name: Test TypeScript bridge with published GEPA + env: + AGENT_EVAL_TEST_PYTHON: ${{ github.workspace }}/clients/python/.venv/bin/python + run: pnpm exec vitest run tests/campaign/gepa-official-integration.test.ts diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 6c6e14d3..8a0a5753 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -86,6 +86,26 @@ jobs: tests/campaign/gepa-official-integration.test.ts tests/campaign/skillopt-official-integration.test.ts + - name: Install published GEPA + working-directory: clients/python + run: uv sync --frozen --extra dev --group gepa-release + + - name: Test published GEPA compatibility + working-directory: clients/python + env: + AGENT_EVAL_EXPECT_GEPA_RELEASE: '1' + run: >- + uv run --frozen --extra dev --group gepa-release + pytest -v + tests/test_gepa_release_compatibility.py + tests/test_gepa_bridge.py + tests/test_official_optimizer_compatibility.py::test_agent_eval_gepa_bridge_resumes_state_from_a_real_prior_run + + - name: Test TypeScript bridge with published GEPA + env: + AGENT_EVAL_TEST_PYTHON: ${{ github.workspace }}/clients/python/.venv/bin/python + run: pnpm exec vitest run tests/campaign/gepa-official-integration.test.ts + - name: Install DSPy environment working-directory: clients/python run: uv sync --frozen --extra dev --extra dspy diff --git a/CHANGELOG.md b/CHANGELOG.md index 24f9e16e..9effc868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ All notable changes to `@tangle-network/agent-eval` and its sibling `agent-eval- --- +## [0.126.5] - 2026-07-24 - published GEPA compatibility + +### Fixed + +- The standard GEPA engine now runs against the published `gepa[full]==0.1.4` package instead of requiring an unreleased source API. +- GEPA source-only engines and composition functions still fail explicitly unless the documented official source revision is installed. + ## [0.126.4] - 2026-07-24 - train-only GEPA optimization ### Fixed diff --git a/README.md b/README.md index cd4a637f..aa19d28b 100644 --- a/README.md +++ b/README.md @@ -33,16 +33,21 @@ python -m pip install agent-eval-rpc python -m pip install \ "skillopt @ git+https://github.com/microsoft/SkillOpt.git@61735e3922efc2b90c6d6cab561e62e98452ca90" -# GEPA Optimize Anything at the source revision tested by this release +# Standard GEPA engine from the published package python -m pip install agent-eval-rpc -python -m pip install "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f" +python -m pip install "gepa[full]==0.1.4" + +# GEPA Omni and source-only engines +python -m pip install \ + "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f" # DSPy 3.2.1 with Agent Eval metrics python -m pip install "agent-eval-rpc[dspy]" ``` -The published `gepa==0.1.4` wheel does not contain the Optimize Anything API used here. -The Git revision is intentional and should move only after compatibility tests pass. +The published GEPA package supports the standard `gepa` engine. +Sequential, adaptive, best-of, vote, Omni, AutoResearch, Meta Harness, and Best-of-N currently require the tested official source revision. +Move that revision only after both release and source compatibility tests pass. The published `skillopt==0.2.0` wheel omits the prompt files required by `ReflACTTrainer`, so the tested SkillOpt source revision is also intentional. DSPy 3.2.1 requires GEPA 0.0.27, while the general bridge requires GEPA 0.1.4. Install the DSPy adapter and the general GEPA bridge in separate Python environments. @@ -373,6 +378,11 @@ Python compatibility tests use the locked dependencies: ```sh cd clients/python +uv sync --frozen --extra dev --group gepa-release +AGENT_EVAL_EXPECT_GEPA_RELEASE=1 \ + uv run --frozen --extra dev --group gepa-release \ + pytest tests/test_gepa_release_compatibility.py tests/test_gepa_bridge.py + uv sync --frozen --extra dev --group skillopt-source --group gepa-source uv run --frozen pytest diff --git a/clients/python/README.md b/clients/python/README.md index 547941eb..e6b050fe 100644 --- a/clients/python/README.md +++ b/clients/python/README.md @@ -146,20 +146,25 @@ The Python client does not reimplement either algorithm. ### GEPA -Install the client and the exact GEPA source revision tested by Agent Eval: +Install the client and published GEPA package for the standard engine: ```sh python -m pip install agent-eval-rpc +python -m pip install "gepa[full]==0.1.4" +``` + +The published package runs direct recipes with the standard `gepa` engine. +Sequential, adaptive, best-of, vote, Omni, AutoResearch, Meta Harness, and Best-of-N currently require this tested official source revision: + +```sh python -m pip install \ "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f" ``` -The published `gepa==0.1.4` wheel does not contain the Optimize Anything API used by `gepaOptimizationMethod()`. -PyPI package metadata cannot depend directly on a Git URL, so GEPA is a separate install. - -From an Agent Eval source checkout, install the same revision with: +From an Agent Eval source checkout: ```sh +uv sync --frozen --group gepa-release uv sync --frozen --group gepa-source ``` @@ -245,6 +250,11 @@ DSPy 3.2.1 pins GEPA 0.0.27. The general Optimize Anything bridge uses GEPA 0.1.4, so repository checks install them in separate environments: ```sh +uv sync --frozen --extra dev --group gepa-release +AGENT_EVAL_EXPECT_GEPA_RELEASE=1 \ + uv run --frozen --extra dev --group gepa-release \ + pytest tests/test_gepa_release_compatibility.py tests/test_gepa_bridge.py + uv sync --frozen --extra dev --group skillopt-source --group gepa-source uv run --frozen pytest diff --git a/clients/python/pyproject.toml b/clients/python/pyproject.toml index 98ffcee6..842c7ca4 100644 --- a/clients/python/pyproject.toml +++ b/clients/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "agent-eval-rpc" -version = "0.126.4" +version = "0.126.5" description = "Python RPC client, official optimizer bridge, and DSPy metric adapter for @tangle-network/agent-eval." readme = "README.md" requires-python = ">=3.10" @@ -45,6 +45,9 @@ skillopt-source = [ gepa-source = [ "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f", ] +gepa-release = [ + "gepa[full]==0.1.4", +] [project.urls] Homepage = "https://github.com/tangle-network/agent-eval" @@ -63,6 +66,14 @@ conflicts = [ { extra = "dspy" }, { group = "gepa-source" }, ], + [ + { extra = "dspy" }, + { group = "gepa-release" }, + ], + [ + { group = "gepa-source" }, + { group = "gepa-release" }, + ], ] [tool.ruff] diff --git a/clients/python/src/agent_eval_rpc/__init__.py b/clients/python/src/agent_eval_rpc/__init__.py index 81146922..dc94df26 100644 --- a/clients/python/src/agent_eval_rpc/__init__.py +++ b/clients/python/src/agent_eval_rpc/__init__.py @@ -53,7 +53,7 @@ try: __version__ = version("agent-eval-rpc") except PackageNotFoundError: - __version__ = "0.126.4" + __version__ = "0.126.5" __all__ = [ "Client", diff --git a/clients/python/src/agent_eval_rpc/gepa_api.py b/clients/python/src/agent_eval_rpc/gepa_api.py new file mode 100644 index 00000000..3b155b80 --- /dev/null +++ b/clients/python/src/agent_eval_rpc/gepa_api.py @@ -0,0 +1,56 @@ +"""Resolve the installed GEPA Optimize Anything API without replacing its search.""" + +from __future__ import annotations + +import importlib +from dataclasses import dataclass +from types import ModuleType +from typing import Any, Literal + + +@dataclass(frozen=True) +class GepaApi: + module: ModuleType + config_class: Any + config_shape: Literal["engine", "launcher"] + + @property + def optimize_anything(self) -> Any: + return self.module.optimize_anything + + def composition(self, name: str) -> Any | None: + return getattr(self.module, name, None) + + +def load_gepa_api() -> GepaApi: + try: + module = importlib.import_module("gepa.optimize_anything") + except ImportError as error: + raise RuntimeError( + "GEPA bridge requires the official gepa package. " + 'Install "gepa[full]==0.1.4" or the documented source revision.' + ) from error + + optimize_anything = getattr(module, "optimize_anything", None) + if not callable(optimize_anything): + raise RuntimeError("Installed GEPA package does not expose optimize_anything()") + + engine_config = getattr(module, "OptimizeAnythingConfig", None) + if engine_config is not None: + return GepaApi( + module=module, + config_class=engine_config, + config_shape="engine", + ) + + launcher_config = getattr(module, "GEPAConfig", None) + if launcher_config is not None: + return GepaApi( + module=module, + config_class=launcher_config, + config_shape="launcher", + ) + + raise RuntimeError( + "Installed GEPA package exposes neither OptimizeAnythingConfig nor GEPAConfig" + ) diff --git a/clients/python/src/agent_eval_rpc/gepa_bridge.py b/clients/python/src/agent_eval_rpc/gepa_bridge.py index 3decdc88..07f0a6bd 100644 --- a/clients/python/src/agent_eval_rpc/gepa_bridge.py +++ b/clients/python/src/agent_eval_rpc/gepa_bridge.py @@ -16,6 +16,7 @@ import httpx +from agent_eval_rpc.gepa_api import GepaApi, load_gepa_api from agent_eval_rpc.gepa_bridge_contract import ( _import_engine_modules as _import_engine_modules, ) @@ -49,7 +50,7 @@ def _require_model_proxy_dependencies(input_value: dict[str, Any]) -> None: except ImportError as error: raise RuntimeError( "GEPA model-backed reflection requires the full GEPA dependency set. " - "Install gepa[full] from the documented source revision." + 'Install "gepa[full]==0.1.4" or the documented source revision.' ) from error @@ -78,14 +79,7 @@ def _main() -> None: return _validate_input(input_value) _import_engine_modules(input_value["engineModules"]) - - try: - from gepa.optimize_anything import OptimizeAnythingConfig, optimize_anything - except ImportError as error: - raise RuntimeError( - "GEPA bridge requires GEPA's Optimize Anything source version. " - "Install the commit documented in the agent-eval-rpc README." - ) from error + api = load_gepa_api() _require_model_proxy_dependencies(input_value) evaluation_count = 0 @@ -129,9 +123,7 @@ def evaluate( return ( sum(score for score, _ in rows) / len(rows), { - "comparison": ( - "selection-set" if selection_set else "train-set-fallback" - ), + "comparison": ("selection-set" if selection_set else "train-set-fallback"), "examples": [ {"id": item["id"], "score": score, "info": info} for item, (score, info) in zip(comparison_set, rows, strict=True) @@ -190,8 +182,7 @@ def evaluate( objective=input_value["objective"], background=input_value.get("background", ""), output_dir=run.run_dir, - config_class=OptimizeAnythingConfig, - optimize_anything_fn=optimize_anything, + api=api, model_proxy=model_proxy, proxy_usage=proxy_usage, ) @@ -207,8 +198,7 @@ def evaluate( objective=input_value["objective"], background=input_value.get("background", ""), output_dir=run.run_dir, - config_class=OptimizeAnythingConfig, - optimize_anything_fn=optimize_anything, + api=api, model_proxy=model_proxy, proxy_usage=proxy_usage, ) @@ -238,10 +228,14 @@ def evaluate( proxy_snapshot = proxy_usage.snapshot() if proxy_usage is not None else None if proxy_snapshot is not None: proxy_cost = proxy_snapshot["costUsd"] - if ( - proposer_cost is None - or not isinstance(proxy_cost, float) - or not math.isclose(proposer_cost, proxy_cost, rel_tol=1e-9, abs_tol=1e-12) + if proposer_cost is not None and ( + not isinstance(proxy_cost, float) + or not math.isclose( + proposer_cost, + proxy_cost, + rel_tol=1e-9, + abs_tol=1e-12, + ) ): raise RuntimeError( f"GEPA reported proposer cost {proposer_cost!r}, " @@ -296,8 +290,7 @@ def _run_recipe( objective: str, background: str, output_dir: Path, - config_class: Any, - optimize_anything_fn: Any, + api: GepaApi, model_proxy: dict[str, Any] | None, proxy_usage: _ProxyUsage | None, ) -> tuple[Any, list[Any]]: @@ -317,7 +310,7 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: bounded_run.get("maxConcurrency", 1) - 1, ) return _engine_config( - config_class, + api, bounded_run, path, model_proxy=model_proxy, @@ -325,7 +318,7 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: ) if recipe["kind"] == "engine": - result = optimize_anything_fn( + result = api.optimize_anything( seed_candidate, **task, config=engine_config(recipe["run"], output_dir / "engine"), @@ -333,10 +326,9 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: return result, [result] if recipe["kind"] == "sequential": - try: - from gepa.optimize_anything import optimize_sequential - except ImportError as error: - raise _missing_composition(recipe["kind"]) from error + optimize_sequential = api.composition("optimize_sequential") + if optimize_sequential is None: + raise _missing_composition(recipe["kind"]) configs = [ engine_config(run, output_dir / f"stage-{index}") for index, run in enumerate(recipe["runs"]) @@ -345,10 +337,9 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: return result, _nested_results(result, "all_results") if recipe["kind"] == "adaptive-sequential": - try: - from gepa.optimize_anything import optimize_adaptive_sequential - except ImportError as error: - raise _missing_composition(recipe["kind"]) from error + optimize_adaptive_sequential = api.composition("optimize_adaptive_sequential") + if optimize_adaptive_sequential is None: + raise _missing_composition(recipe["kind"]) configs = [ engine_config(run, output_dir / f"stage-{index}") for index, run in enumerate(recipe["runs"]) @@ -373,10 +364,10 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: return result, [result] if recipe["kind"] in {"best-of", "vote"}: - try: - from gepa.optimize_anything import optimize_best_of, optimize_vote - except ImportError as error: - raise _missing_composition(recipe["kind"]) from error + optimize_best_of = api.composition("optimize_best_of") + optimize_vote = api.composition("optimize_vote") + if optimize_best_of is None or optimize_vote is None: + raise _missing_composition(recipe["kind"]) configs = [ engine_config(run, output_dir / f"engine-{index}") for index, run in enumerate(recipe["runs"]) @@ -388,10 +379,9 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: result = choose(seed_candidate, **task, **kwargs) return result, _nested_results(result, "all_results") - try: - from gepa.optimize_anything import optimize_best_of, optimize_vote - except ImportError as error: - raise _missing_composition(recipe["kind"]) from error + optimize_best_of = api.composition("optimize_best_of") + if optimize_best_of is None: + raise _missing_composition(recipe["kind"]) explore_configs = [ engine_config(run, output_dir / f"explore-{index}") for index, run in enumerate(recipe["explore"]) @@ -401,7 +391,7 @@ def engine_config(run: dict[str, Any], path: Path) -> Any: explore_kwargs["max_workers"] = recipe["maxWorkers"] explore = optimize_best_of(seed_candidate, **task, **explore_kwargs) explore_results = _nested_results(explore, "all_results") - continuation = optimize_anything_fn( + continuation = api.optimize_anything( explore.best_candidate, **task, config=engine_config(recipe["continueWith"], output_dir / "continue"), @@ -420,17 +410,26 @@ def _upstream_evaluation_limit(hard_limit: int, concurrency_slack: int) -> int: def _selected_candidate(result: Any, recipe_kind: str) -> Any: - metadata = result.metadata if isinstance(result.metadata, dict) else {} + metadata = _result_metadata(result) if recipe_kind in {"sequential", "adaptive-sequential"}: return metadata.get("best_stage_candidate", result.best_candidate) return result.best_candidate def _selected_score(result: Any, recipe_kind: str) -> Any: - metadata = result.metadata if isinstance(result.metadata, dict) else {} + metadata = _result_metadata(result) if recipe_kind in {"sequential", "adaptive-sequential"}: - return metadata.get("best_stage_score", result.best_score) - return result.best_score + stage_score = metadata.get("best_stage_score") + if stage_score is not None: + return stage_score + best_score = getattr(result, "best_score", None) + if best_score is not None: + return best_score + scores = getattr(result, "val_aggregate_scores", None) + best_index = getattr(result, "best_idx", None) + if isinstance(scores, list) and isinstance(best_index, int) and 0 <= best_index < len(scores): + return scores[best_index] + return None def _missing_composition(kind: str) -> RuntimeError: @@ -442,7 +441,7 @@ def _missing_composition(kind: str) -> RuntimeError: def _engine_config( - config_class: Any, + api: GepaApi, run: dict[str, Any], output_dir: Path, *, @@ -469,26 +468,47 @@ def _engine_config( shared_usage=proxy_usage, ) - kwargs: dict[str, Any] = { - "engine": run["engine"], - "max_evals": run.get("maxEvaluations"), - "max_token_cost": run["maxProposerCostUsd"], - "output_dir": output_dir / "evaluations", - "run_dir": str(output_dir / "state"), - "engine_config": engine_config, - } - kwargs["max_concurrency"] = run.get("maxConcurrency", 1) + if api.config_shape == "engine": + kwargs: dict[str, Any] = { + "engine": run["engine"], + "max_evals": run.get("maxEvaluations"), + "max_token_cost": run["maxProposerCostUsd"], + "output_dir": output_dir / "evaluations", + "run_dir": str(output_dir / "state"), + "engine_config": engine_config, + "max_concurrency": run.get("maxConcurrency", 1), + } + if run.get("stopAtScore") is not None: + kwargs["stop_at_score"] = run["stopAtScore"] + if run.get("sandbox") is not None: + kwargs["sandbox"] = run["sandbox"] + return api.config_class(**kwargs) + + if run["engine"] != "gepa": + raise RuntimeError( + f"GEPA engine '{run['engine']}' requires the documented official source revision; " + "the published package supports the standard 'gepa' engine" + ) + nested_engine = engine_config.setdefault("engine", {}) + if not isinstance(nested_engine, dict): + raise ValueError("GEPA engineConfig.engine must be an object") + nested_engine["max_metric_calls"] = run.get("maxEvaluations") + nested_engine["max_reflection_cost"] = run["maxProposerCostUsd"] + nested_engine["run_dir"] = str(output_dir / "state") + nested_engine["max_workers"] = run.get("maxConcurrency", 1) if run.get("stopAtScore") is not None: - kwargs["stop_at_score"] = run["stopAtScore"] - if run.get("sandbox") is not None: - kwargs["sandbox"] = run["sandbox"] - return config_class( - **kwargs, - ) + if "stop_callbacks" in engine_config: + raise ValueError( + "GEPA engineConfig.stop_callbacks cannot be serialized; use stopAtScore" + ) + from gepa.utils import ScoreThresholdStopper + + engine_config["stop_callbacks"] = [ScoreThresholdStopper(run["stopAtScore"])] + return api.config_class(**engine_config) def _nested_results(result: Any, key: str) -> list[Any]: - metadata = result.metadata if isinstance(result.metadata, dict) else {} + metadata = _result_metadata(result) results = metadata.get(key) if not isinstance(results, list) or not results: raise RuntimeError(f"GEPA recipe returned no {key}") @@ -496,7 +516,9 @@ def _nested_results(result: Any, key: str) -> list[Any]: def _result_evaluations(result: Any) -> int: - total_evaluations = result.total_evals + total_evaluations = getattr(result, "total_evals", None) + if total_evaluations is None: + total_evaluations = getattr(result, "total_metric_calls", None) if ( isinstance(total_evaluations, bool) or not isinstance(total_evaluations, int) @@ -509,7 +531,7 @@ def _result_evaluations(result: Any) -> int: def _reported_proposer_cost(results: list[Any]) -> float | None: costs: list[float] = [] for result in results: - metadata = result.metadata if isinstance(result.metadata, dict) else {} + metadata = _result_metadata(result) adapter_cost = metadata.get("adapter_cost") if isinstance(adapter_cost, bool) or not isinstance(adapter_cost, (float, int)): return None @@ -520,6 +542,11 @@ def _reported_proposer_cost(results: list[Any]) -> float | None: return sum(costs) +def _result_metadata(result: Any) -> dict[str, Any]: + metadata = getattr(result, "metadata", None) + return metadata if isinstance(metadata, dict) else {} + + def _supports_resume(recipe: dict[str, Any]) -> bool: return recipe["kind"] == "engine" and recipe["run"]["engine"] == "gepa" diff --git a/clients/python/src/agent_eval_rpc/gepa_compat_0_1_4.py b/clients/python/src/agent_eval_rpc/gepa_compat_0_1_4.py index a3011d21..15622911 100644 --- a/clients/python/src/agent_eval_rpc/gepa_compat_0_1_4.py +++ b/clients/python/src/agent_eval_rpc/gepa_compat_0_1_4.py @@ -80,10 +80,11 @@ def load_restore_observer( "for state created locally in a directory you control" ) _validate_local_state_permissions(run_dir, state_path) - if upstream.get("version") != GEPA_VERSION or upstream.get("revision") != GEPA_REVISION: + revision = upstream.get("revision") + if upstream.get("version") != GEPA_VERSION or revision not in {None, GEPA_REVISION}: raise RuntimeError( - "GEPA resume observation supports only " - f"version {GEPA_VERSION} at revision {GEPA_REVISION}" + "GEPA resume observation supports only the published " + f"{GEPA_VERSION} package or revision {GEPA_REVISION}" ) try: from gepa.core.state import GEPAState diff --git a/clients/python/tests/test_gepa_bridge.py b/clients/python/tests/test_gepa_bridge.py index 011c362b..f07f7c09 100644 --- a/clients/python/tests/test_gepa_bridge.py +++ b/clients/python/tests/test_gepa_bridge.py @@ -12,6 +12,7 @@ import pytest from agent_eval_rpc import gepa_bridge, gepa_bridge_contract +from agent_eval_rpc.gepa_api import GepaApi from agent_eval_rpc.gepa_compat_0_1_4 import ( GEPA_REVISION, GEPA_VERSION, @@ -61,11 +62,111 @@ def test_upstream_evaluation_limit_reserves_concurrent_overshoot() -> None: gepa_bridge._upstream_evaluation_limit(4, 4) +def test_published_gepa_config_maps_budgets_and_result_fields( + monkeypatch, + tmp_path: Path, +) -> None: + config_calls: list[dict[str, Any]] = [] + + class FakeLauncherConfig: + def __init__(self, **kwargs: Any) -> None: + config_calls.append(kwargs) + self.kwargs = kwargs + + class FakeScoreThresholdStopper: + def __init__(self, threshold: float) -> None: + self.threshold = threshold + + optimize_module = types.ModuleType("gepa.optimize_anything") + optimize_module.optimize_anything = lambda *_args, **_kwargs: None + optimize_module.GEPAConfig = FakeLauncherConfig + utils_module = types.ModuleType("gepa.utils") + utils_module.ScoreThresholdStopper = FakeScoreThresholdStopper + gepa_module = types.ModuleType("gepa") + gepa_module.__path__ = [] # type: ignore[attr-defined] + monkeypatch.setitem(sys.modules, "gepa", gepa_module) + monkeypatch.setitem(sys.modules, "gepa.utils", utils_module) + + api = GepaApi( + module=optimize_module, + config_class=FakeLauncherConfig, + config_shape="launcher", + ) + config = gepa_bridge._engine_config( + api, + { + "engine": "gepa", + "engineConfig": { + "engine": { + "parallel": False, + "seed": 7, + }, + "reflection": { + "reflection_minibatch_size": 1, + }, + }, + "maxConcurrency": 2, + "maxEvaluations": 8, + "maxProposerCostUsd": 1.25, + "stopAtScore": 0.9, + }, + tmp_path / "published", + model_proxy=None, + proxy_usage=None, + ) + + assert config.kwargs == config_calls[0] + assert config_calls[0]["engine"] == { + "max_metric_calls": 8, + "max_reflection_cost": 1.25, + "max_workers": 2, + "parallel": False, + "run_dir": str(tmp_path / "published" / "state"), + "seed": 7, + } + assert config_calls[0]["reflection"] == {"reflection_minibatch_size": 1} + stoppers = config_calls[0]["stop_callbacks"] + assert len(stoppers) == 1 + assert stoppers[0].threshold == 0.9 + + result = SimpleNamespace( + best_candidate="published-winner", + best_idx=1, + total_metric_calls=8, + val_aggregate_scores=[0.2, 0.9], + ) + assert gepa_bridge._selected_candidate(result, "engine") == "published-winner" + assert gepa_bridge._selected_score(result, "engine") == 0.9 + assert gepa_bridge._result_evaluations(result) == 8 + assert gepa_bridge._reported_proposer_cost([result]) is None + + +def test_published_gepa_rejects_source_only_engines(tmp_path: Path) -> None: + api = GepaApi( + module=types.ModuleType("gepa.optimize_anything"), + config_class=lambda **kwargs: kwargs, + config_shape="launcher", + ) + with pytest.raises(RuntimeError, match="requires the documented official source revision"): + gepa_bridge._engine_config( + api, + { + "engine": "autoresearch", + "engineConfig": {}, + "maxEvaluations": 2, + "maxProposerCostUsd": 1, + }, + tmp_path, + model_proxy=None, + proxy_usage=None, + ) + + def test_model_proxy_requires_full_gepa_dependencies( monkeypatch: pytest.MonkeyPatch, ) -> None: monkeypatch.setitem(sys.modules, "litellm", None) - with pytest.raises(RuntimeError, match=r"Install gepa\[full\]"): + with pytest.raises(RuntimeError, match=r"gepa\[full\]==0\.1\.4"): gepa_bridge._require_model_proxy_dependencies({"modelProxy": {}}) gepa_bridge._require_model_proxy_dependencies({}) @@ -325,7 +426,10 @@ def test_bridge_runs_source_pinned_gepa_omni_recipe_without_a_model( monkeypatch, tmp_path: Path, ) -> None: - from gepa.optimize_anything import OptimizeAnythingConfig + try: + from gepa.optimize_anything import OptimizeAnythingConfig + except ImportError: + pytest.skip("requires GEPA's official source composition API") assert OptimizeAnythingConfig is not None input_path = tmp_path / "input.json" @@ -427,6 +531,8 @@ def vote(*args: Any, **kwargs: Any) -> SimpleNamespace: optimize_module = types.ModuleType("gepa.optimize_anything") optimize_module.optimize_best_of = best_of optimize_module.optimize_vote = vote + optimize_module.optimize_anything = lambda *_args, **_kwargs: result("unexpected") + optimize_module.OptimizeAnythingConfig = lambda **kwargs: SimpleNamespace(**kwargs) monkeypatch.setitem(sys.modules, "gepa", gepa_module) monkeypatch.setitem(sys.modules, "gepa.optimize_anything", optimize_module) @@ -438,8 +544,11 @@ def vote(*args: Any, **kwargs: Any) -> SimpleNamespace: "objective": "Improve.", "background": "", "output_dir": tmp_path, - "config_class": lambda **kwargs: SimpleNamespace(**kwargs), - "optimize_anything_fn": lambda *_args, **_kwargs: result("unexpected"), + "api": GepaApi( + module=optimize_module, + config_class=optimize_module.OptimizeAnythingConfig, + config_shape="engine", + ), "model_proxy": None, "proxy_usage": None, } diff --git a/clients/python/tests/test_gepa_release_compatibility.py b/clients/python/tests/test_gepa_release_compatibility.py new file mode 100644 index 00000000..1c355a8c --- /dev/null +++ b/clients/python/tests/test_gepa_release_compatibility.py @@ -0,0 +1,81 @@ +from __future__ import annotations + +import json +import os +from importlib.metadata import distribution, version +from pathlib import Path + +import pytest + +pytestmark = pytest.mark.skipif( + os.environ.get("AGENT_EVAL_EXPECT_GEPA_RELEASE") != "1", + reason="runs in the dedicated published-GEPA environment", +) + + +def test_published_gepa_performs_nonzero_optimize_anything_work(tmp_path: Path) -> None: + from gepa.optimize_anything import EngineConfig, GEPAConfig, ReflectionConfig, optimize_anything + + from agent_eval_rpc.gepa_api import load_gepa_api + + assert version("gepa") == "0.1.4" + direct_url = distribution("gepa").read_text("direct_url.json") + assert direct_url is None or "vcs_info" not in json.loads(direct_url) + assert load_gepa_api().config_shape == "launcher" + + class DeterministicModel: + def __init__(self) -> None: + self.calls = 0 + + @property + def total_cost(self) -> float: + return 0.0 + + def __call__(self, _prompt: object) -> str: + self.calls += 1 + return "```\nALWAYS_RETURN_READY\n```" + + model = DeterministicModel() + evaluations: list[tuple[str, str]] = [] + + def evaluate(candidate: str, example: dict[str, str]) -> tuple[float, dict[str, str]]: + evaluations.append((candidate, example["id"])) + score = 1.0 if "ALWAYS_RETURN_READY" in candidate else 0.0 + return score, {"feedback": "Add ALWAYS_RETURN_READY."} + + result = optimize_anything( + "BASELINE", + evaluator=evaluate, + dataset=[{"id": "train"}], + valset=[{"id": "selection"}], + objective="Add the required response rule.", + config=GEPAConfig( + engine=EngineConfig( + capture_stdio=False, + max_metric_calls=4, + max_reflection_cost=1, + max_workers=1, + parallel=False, + raise_on_exception=True, + run_dir=str(tmp_path / "state"), + seed=7, + ), + reflection=ReflectionConfig( + reflection_lm=model, + reflection_minibatch_size=1, + skip_perfect_score=False, + ), + ), + ) + + assert result.best_candidate == "ALWAYS_RETURN_READY" + assert result.val_aggregate_scores[result.best_idx] == 1.0 + assert result.total_metric_calls == 4 + assert model.calls == 1 + assert evaluations == [ + ("BASELINE", "selection"), + ("BASELINE", "train"), + ("ALWAYS_RETURN_READY", "train"), + ("ALWAYS_RETURN_READY", "selection"), + ] + assert (tmp_path / "state" / "gepa_state.bin").stat().st_size > 0 diff --git a/clients/python/tests/test_official_optimizer_compatibility.py b/clients/python/tests/test_official_optimizer_compatibility.py index b0294d56..1c36a066 100644 --- a/clients/python/tests/test_official_optimizer_compatibility.py +++ b/clients/python/tests/test_official_optimizer_compatibility.py @@ -60,6 +60,20 @@ def _assert_installed_git_package( } +def _assert_installed_gepa_runtime() -> None: + if os.environ.get("AGENT_EVAL_EXPECT_GEPA_RELEASE") == "1": + assert version("gepa") == "0.1.4" + direct_url = distribution("gepa").read_text("direct_url.json") + assert direct_url is None or "vcs_info" not in json.loads(direct_url) + return + _assert_installed_git_package( + "gepa", + "0.1.4", + "https://github.com/gepa-ai/gepa.git", + "f919db0a622e2e9f9204779b81fe00cc1b2d808f", + ) + + class _DeterministicReflectionModel: def __init__(self) -> None: self.prompts: list[Any] = [] @@ -408,8 +422,9 @@ def test_agent_eval_gepa_proxy_drives_the_official_engine( tmp_path: Path, ) -> None: from gepa.lm import LM - from gepa.optimize_anything import OptimizeAnythingConfig, optimize_anything + from gepa.optimize_anything import optimize_anything + from agent_eval_rpc.gepa_api import load_gepa_api from agent_eval_rpc.gepa_bridge import _engine_config, _ProxyUsage evaluations: list[tuple[str, str]] = [] @@ -425,7 +440,7 @@ def evaluate(candidate: str, example: dict[str, str]) -> tuple[float, dict[str, model_requests, ): config = _engine_config( - OptimizeAnythingConfig, + load_gepa_api(), { "engine": "gepa", "engineConfig": { @@ -509,12 +524,7 @@ def test_agent_eval_gepa_bridge_resumes_state_from_a_real_prior_run( from agent_eval_rpc import gepa_bridge from agent_eval_rpc.gepa_compat_0_1_4 import load_restore_observer - _assert_installed_git_package( - "gepa", - "0.1.4", - "https://github.com/gepa-ai/gepa.git", - "f919db0a622e2e9f9204779b81fe00cc1b2d808f", - ) + _assert_installed_gepa_runtime() def callback_post(url: str, **kwargs: Any) -> httpx.Response: candidate = kwargs["json"]["candidate"] @@ -616,7 +626,7 @@ def run_bridge(attempt_id: str) -> dict[str, Any]: first = run_bridge("first-run") first_run_dir = output_root / "runs" / first["runId"] - with pytest.raises(RuntimeError, match="supports only version 0.1.4"): + with pytest.raises(RuntimeError, match="supports only the published 0.1.4"): load_restore_observer( first_run_dir, { diff --git a/clients/python/uv.lock b/clients/python/uv.lock index 678d5e4b..e4f13100 100644 --- a/clients/python/uv.lock +++ b/clients/python/uv.lock @@ -2,27 +2,39 @@ version = 1 revision = 3 requires-python = ">=3.10" resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version < '3.11' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version < '3.11' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version < '3.11' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version < '3.11' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version < '3.11' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", ] conflicts = [[ { package = "agent-eval-rpc", extra = "dspy" }, { package = "agent-eval-rpc", group = "gepa-source" }, +], [ + { package = "agent-eval-rpc", extra = "dspy" }, + { package = "agent-eval-rpc", group = "gepa-release" }, +], [ + { package = "agent-eval-rpc", group = "gepa-release" }, + { package = "agent-eval-rpc", group = "gepa-source" }, ]] [[package]] name = "agent-eval-rpc" -version = "0.126.4" +version = "0.126.5" source = { editable = "." } dependencies = [ { name = "filelock" }, @@ -41,8 +53,11 @@ dspy = [ ] [package.dev-dependencies] +gepa-release = [ + { name = "gepa", version = "0.1.4", source = { registry = "https://pypi.org/simple" }, extra = ["full"], marker = "extra == 'group-14-agent-eval-rpc-gepa-release' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, +] gepa-source = [ - { name = "gepa", version = "0.1.4", source = { git = "https://github.com/gepa-ai/gepa.git?rev=f919db0a622e2e9f9204779b81fe00cc1b2d808f#f919db0a622e2e9f9204779b81fe00cc1b2d808f" }, extra = ["full"], marker = "extra == 'group-14-agent-eval-rpc-gepa-source'" }, + { name = "gepa", version = "0.1.4", source = { git = "https://github.com/gepa-ai/gepa.git?rev=f919db0a622e2e9f9204779b81fe00cc1b2d808f#f919db0a622e2e9f9204779b81fe00cc1b2d808f" }, extra = ["full"], marker = "(extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] skillopt-source = [ { name = "skillopt" }, @@ -61,6 +76,7 @@ requires-dist = [ provides-extras = ["dev", "dspy"] [package.metadata.requires-dev] +gepa-release = [{ name = "gepa", extras = ["full"], specifier = "==0.1.4" }] gepa-source = [{ name = "gepa", extras = ["full"], git = "https://github.com/gepa-ai/gepa.git?rev=f919db0a622e2e9f9204779b81fe00cc1b2d808f" }] skillopt-source = [{ name = "skillopt", git = "https://github.com/microsoft/SkillOpt.git?rev=61735e3922efc2b90c6d6cab561e62e98452ca90" }] @@ -261,9 +277,9 @@ name = "anyio" version = "4.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "idna" }, - { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/19/14/2c5dd9f512b66549ae92767a9c7b330ae88e1932ca57876909410251fe13/anyio-4.13.0.tar.gz", hash = "sha256:334b70e641fd2221c1505b3890c69882fe4a2df910cba14d97019b90b24439dc", size = 231622, upload-time = "2026-03-24T12:59:09.671Z" } wheels = [ @@ -319,8 +335,8 @@ version = "1.25.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "azure-core" }, - { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source') or (extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "msal" }, { name = "msal-extensions" }, { name = "typing-extensions" }, @@ -371,7 +387,7 @@ name = "cffi" version = "2.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "pycparser", marker = "implementation_name != 'PyPy' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/57/5f/ff100cae70ebe9d8df1c01a00e510e45d9adb5c1fdda84791b199141de97/cffi-2.1.0.tar.gz", hash = "sha256:efc1cdd798b1aaf39b4610bba7aad28c9bea9b910f25c784ccf9ec1fa719d1f9", size = 531036, upload-time = "2026-07-06T21:34:30.382Z" } wheels = [ @@ -672,8 +688,8 @@ resolution-markers = [ "python_full_version == '3.11.*'", ] dependencies = [ - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/58/01/1253e6698a07380cd31a736d248a3f2a50a7c88779a1813da27503cadc2a/contourpy-1.3.3.tar.gz", hash = "sha256:083e12155b210502d0bca491432bb04d56dc3432f95a979b429f2848c3dbe880", size = 13466174, upload-time = "2025-07-26T12:03:12.549Z" } wheels = [ @@ -760,8 +776,8 @@ resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ - { name = "cffi", marker = "(python_full_version < '3.12' and platform_python_implementation != 'PyPy') or (python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cffi", marker = "(python_full_version < '3.12' and platform_python_implementation != 'PyPy') or (python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and platform_python_implementation != 'PyPy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/12/45/870e7f4bef50e5f53b9f51d4428aee5290eedf58ba443f16b1ebb7ab8e66/cryptography-48.0.1.tar.gz", hash = "sha256:266f4ee051abb2f725b74ef8072b521ce1feacf685a3364fa6a6b45548db791a", size = 832989, upload-time = "2026-06-09T22:32:31.8Z" } wheels = [ @@ -820,14 +836,17 @@ name = "cryptography" version = "49.0.0" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", ] dependencies = [ - { name = "cffi", marker = "(python_full_version >= '3.14' and platform_python_implementation != 'PyPy') or (python_full_version >= '3.12' and platform_python_implementation != 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.12' and platform_python_implementation != 'PyPy' and extra != 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cffi", marker = "(python_full_version >= '3.14' and platform_python_implementation != 'PyPy') or (python_full_version >= '3.12' and platform_python_implementation != 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.12' and platform_python_implementation != 'PyPy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (platform_python_implementation == 'PyPy' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (platform_python_implementation == 'PyPy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz", hash = "sha256:f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493", size = 854345, upload-time = "2026-06-12T20:02:30.512Z" } wheels = [ @@ -909,18 +928,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "dill" }, { name = "filelock" }, - { name = "fsspec", extra = ["http"], marker = "extra == 'group-14-agent-eval-rpc-gepa-source'" }, + { name = "fsspec", extra = ["http"], marker = "extra == 'group-14-agent-eval-rpc-gepa-release' or extra == 'group-14-agent-eval-rpc-gepa-source'" }, { name = "httpx" }, { name = "huggingface-hub" }, { name = "multiprocess" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "packaging" }, - { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "pandas", version = "3.0.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "pyarrow", version = "24.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "pyarrow", version = "25.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "pandas", version = "3.0.5", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "pyarrow", version = "24.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "pyarrow", version = "25.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "pyyaml" }, { name = "requests" }, { name = "tqdm" }, @@ -982,12 +1001,12 @@ dependencies = [ { name = "cachetools" }, { name = "cloudpickle" }, { name = "diskcache" }, - { name = "gepa", version = "0.0.27", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-agent-eval-rpc-dspy'" }, + { name = "gepa", version = "0.0.27", source = { registry = "https://pypi.org/simple" }, marker = "extra == 'extra-14-agent-eval-rpc-dspy' or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "json-repair" }, { name = "litellm" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "openai" }, { name = "orjson" }, { name = "pydantic" }, @@ -1017,7 +1036,7 @@ name = "exceptiongroup" version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } wheels = [ @@ -1349,6 +1368,38 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a3/bd/f9e83519099a9fd5d090520ab0c51a6278e473b914a9b32d1e812662dd3b/gepa-0.0.27-py3-none-any.whl", hash = "sha256:592beb084fd638d525edae84ca75ad8e9e9c3758e5498b933c17153addf5dd2d", size = 146454, upload-time = "2026-01-28T00:33:50.262Z" }, ] +[[package]] +name = "gepa" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.14' and sys_platform == 'win32'", + "python_full_version >= '3.14' and sys_platform == 'emscripten'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32'", + "python_full_version >= '3.12' and python_full_version < '3.14'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", +] +sdist = { url = "https://files.pythonhosted.org/packages/95/56/925779e5690971f1b022f7d107caf015c33ec09560261273ec137e23a8f2/gepa-0.1.4.tar.gz", hash = "sha256:6dd153a676ae5481764860d19286a9c0e8ddb5ef70d7f13044faf24978bdb6b8", size = 351343, upload-time = "2026-07-15T14:53:59.929Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/77/5b3a281cfd9caaa9e68349b434cf27f1ca448003ee0067a1ae2184dc52d1/gepa-0.1.4-py3-none-any.whl", hash = "sha256:12b971039599625c156d2231f6d72a29c31a22e9c237689459b5f1a3c353f532", size = 290167, upload-time = "2026-07-15T14:53:58.422Z" }, +] + +[package.optional-dependencies] +full = [ + { name = "cloudpickle" }, + { name = "datasets" }, + { name = "litellm" }, + { name = "mlflow", marker = "python_full_version < '3.14'" }, + { name = "mlflow-skinny", marker = "python_full_version >= '3.14'" }, + { name = "pandas", version = "3.0.5", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, + { name = "pyarrow", version = "25.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14'" }, + { name = "pydantic", marker = "python_full_version >= '3.14'" }, + { name = "tiktoken", marker = "python_full_version >= '3.14'" }, + { name = "tqdm" }, + { name = "wandb" }, +] + [[package]] name = "gepa" version = "0.1.4" @@ -1406,8 +1457,8 @@ name = "google-auth" version = "2.56.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "pyasn1-modules" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c7/33/dbc946a407401b975f0719658f18e664ece2109f79ffd1ff3bf226c205f4/google_auth-2.56.2.tar.gz", hash = "sha256:e28f103ca8091fb7012b99c44243d7366c29863713b8e34a220c3322b7a07051", size = 365820, upload-time = "2026-07-21T21:53:28.188Z" } @@ -1815,8 +1866,8 @@ dependencies = [ { name = "attrs" }, { name = "jsonschema-specifications" }, { name = "referencing" }, - { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "rpds-py", version = "2026.6.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "rpds-py", version = "2026.6.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/b3/fc/e067678238fa451312d4c62bf6e6cf5ec56375422aee02f9cb5f909b3047/jsonschema-4.26.0.tar.gz", hash = "sha256:0c26707e2efad8aa1bfc5b7ce170f3fccc2e4918ff85989ba9ffa9facb2be326", size = 366583, upload-time = "2026-01-07T13:41:07.246Z" } wheels = [ @@ -2168,8 +2219,8 @@ dependencies = [ { name = "cycler", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, { name = "fonttools", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, { name = "kiwisolver", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "packaging", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, { name = "pillow", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, { name = "pyparsing", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, @@ -2238,20 +2289,20 @@ dependencies = [ { name = "graphene", marker = "python_full_version < '3.14'" }, { name = "gunicorn", marker = "python_full_version < '3.14' and sys_platform != 'win32'" }, { name = "huey", marker = "python_full_version < '3.14'" }, - { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "matplotlib", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "matplotlib", version = "3.10.9", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "matplotlib", version = "3.11.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "mlflow-skinny", marker = "python_full_version < '3.14'" }, { name = "mlflow-tracing", marker = "python_full_version < '3.14'" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "pandas", version = "2.3.3", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, { name = "pyarrow", version = "24.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.14'" }, - { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "skops", marker = "python_full_version < '3.14'" }, { name = "sqlalchemy", marker = "python_full_version < '3.14'" }, { name = "waitress", marker = "python_full_version < '3.14' and sys_platform == 'win32'" }, @@ -2316,8 +2367,8 @@ name = "msal" version = "1.37.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source') or (extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "pyjwt", extra = ["crypto"] }, { name = "requests" }, ] @@ -2660,12 +2711,16 @@ name = "numpy" version = "2.5.1" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", ] sdist = { url = "https://files.pythonhosted.org/packages/22/fd/89965aa4ac08c74998539fcbf24fa3540f3e15237fbeb6bcf9c908f4aade/numpy-2.5.1.tar.gz", hash = "sha256:a48a113e6afea91f5608793bafa7ef2ad481fefbda87ec5069f483de61cb9fa3", size = 20755553, upload-time = "2026-07-04T17:08:00.933Z" } wheels = [ @@ -2896,9 +2951,9 @@ resolution-markers = [ "python_full_version < '3.11'", ] dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "python-dateutil", marker = "python_full_version < '3.14'" }, { name = "pytz", marker = "python_full_version < '3.14'" }, { name = "tzdata", marker = "python_full_version < '3.14'" }, @@ -3572,7 +3627,7 @@ name = "pyjwt" version = "2.13.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "typing-extensions", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/3b/81/58d0ac84e1ef3a3843791d6954d94c0b33d526c75eeb1efbce9d0a4c4077/pyjwt-2.13.0.tar.gz", hash = "sha256:41571c89ca91598c79e8ef18a2d07367d4810fbbd6f637794879baf1b7703423", size = 107515, upload-time = "2026-05-21T19:54:36.618Z" } wheels = [ @@ -3581,8 +3636,8 @@ wheels = [ [package.optional-dependencies] crypto = [ - { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "48.0.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.12' or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "cryptography", version = "49.0.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.14' or (python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.12' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source') or (extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] [[package]] @@ -3599,13 +3654,13 @@ name = "pytest" version = "9.0.3" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, { name = "pygments" }, - { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "tomli", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" } wheels = [ @@ -3617,9 +3672,9 @@ name = "pytest-asyncio" version = "1.4.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "backports-asyncio-runner", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "backports-asyncio-runner", marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "pytest" }, - { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "typing-extensions", marker = "python_full_version < '3.13' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/43/7c/d36d04db312ecf4298932ef77e6e4a9e8ad017906e24e34f0b0c361a2473/pytest_asyncio-1.4.0.tar.gz", hash = "sha256:c6c0d2259945122819f171a32ecea2c349ead889ee28176caaf492143424be42", size = 58514, upload-time = "2026-05-26T09:56:04.083Z" } wheels = [ @@ -3751,8 +3806,8 @@ version = "0.37.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, - { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "rpds-py", version = "2026.6.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "rpds-py", version = "0.30.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "rpds-py", version = "2026.6.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and extra == 'extra-14-agent-eval-rpc-dspy') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/22/f5/df4e9027acead3ecc63e50fe1e36aca1523e1719559c499951bb4b53188f/referencing-0.37.0.tar.gz", hash = "sha256:44aefc3142c5b842538163acb373e24cce6632bd54bdb01b21ad5863489f50d8", size = 78036, upload-time = "2025-10-13T15:30:48.871Z" } @@ -4026,13 +4081,18 @@ name = "rpds-py" version = "2026.6.3" source = { registry = "https://pypi.org/simple" } resolution-markers = [ - "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", - "python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra == 'extra-14-agent-eval-rpc-dspy' and extra != 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform == 'emscripten' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.14' and sys_platform != 'emscripten' and sys_platform != 'win32' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version >= '3.12' and python_full_version < '3.14' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", + "python_full_version == '3.11.*' and extra != 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra != 'group-14-agent-eval-rpc-gepa-source'", ] sdist = { url = "https://files.pythonhosted.org/packages/aa/2a/9618a122aeb2a169a28b03889a2995fe297588964333d4a7d67bdf46e147/rpds_py-2026.6.3.tar.gz", hash = "sha256:1cebd1337c242e4ec2293e541f712b2da849b29f48f0c293684b71c0632625d4", size = 64051, upload-time = "2026-06-30T07:17:53.009Z" } wheels = [ @@ -4236,10 +4296,10 @@ resolution-markers = [ dependencies = [ { name = "joblib", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, { name = "narwhals", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "threadpoolctl", marker = "python_full_version >= '3.11' and python_full_version < '3.14'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/fa/6f/37092bdb25f712817231799fc5674d8e704066a8a70c1d2d40517e18b4ab/scikit_learn-1.9.0.tar.gz", hash = "sha256:8833266989d3a5110178a9fae30783675460724d0e1efb13b14901d2c660c557", size = 7750767, upload-time = "2026-06-02T11:54:32.706Z" } @@ -4493,9 +4553,9 @@ dependencies = [ { name = "azure-core" }, { name = "azure-identity" }, { name = "httpx" }, - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version == '3.11.*' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.12' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "openai" }, { name = "openpyxl" }, { name = "pyyaml" }, @@ -4506,16 +4566,16 @@ name = "skops" version = "0.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.4.6", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "numpy", version = "2.5.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, { name = "packaging", marker = "python_full_version < '3.14'" }, { name = "prettytable", marker = "python_full_version < '3.14'" }, - { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, - { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scikit-learn", version = "1.7.2", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scikit-learn", version = "1.9.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.11' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.15.3", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.11' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.17.1", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version == '3.11.*' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "scipy", version = "1.18.0", source = { registry = "https://pypi.org/simple" }, marker = "(python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.12' and python_full_version < '3.14' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version < '3.12' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version < '3.12' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (python_full_version >= '3.14' and extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (python_full_version >= '3.14' and extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/c8/9f/46448c4e41a4c5ee4bdb74b3758af48e5ff0faeffe40f4e301bfc7594894/skops-0.14.0.tar.gz", hash = "sha256:6c8c0e047f691a3a582c3258943eecafcbfd79c8c7eef66260f3703e363254f0", size = 608084, upload-time = "2026-04-20T18:23:55.336Z" } wheels = [ @@ -4782,7 +4842,7 @@ name = "tqdm" version = "4.69.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, + { name = "colorama", marker = "sys_platform == 'win32' or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-release') or (extra == 'extra-14-agent-eval-rpc-dspy' and extra == 'group-14-agent-eval-rpc-gepa-source') or (extra == 'group-14-agent-eval-rpc-gepa-release' and extra == 'group-14-agent-eval-rpc-gepa-source')" }, ] sdist = { url = "https://files.pythonhosted.org/packages/8c/69/40407dfc835517f058b603dbf37a6df094d8582b015a51eddc988febbcb7/tqdm-4.69.0.tar.gz", hash = "sha256:700c5e85dcd5f009dd6222588a29180a193a748247a5d855b4d67db93d79a53b", size = 792569, upload-time = "2026-07-17T18:09:06.2Z" } wheels = [ diff --git a/docs/campaign-proposers.md b/docs/campaign-proposers.md index 84cc6061..74d89868 100644 --- a/docs/campaign-proposers.md +++ b/docs/campaign-proposers.md @@ -199,20 +199,25 @@ The runnable version is in [`examples/compare-optimization-methods`](../examples ## Install Official GEPA -Install the bridge and the source revision tested by this release: +Install the bridge and the published GEPA package for the standard engine: ```sh python -m pip install agent-eval-rpc -python -m pip install "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f" +python -m pip install "gepa[full]==0.1.4" ``` -The published `gepa==0.1.4` wheel does not contain the required Optimize Anything API. -The Agent Eval Python package cannot declare a Git dependency in its PyPI metadata, so the GEPA source install is separate. +Use the tested official source revision for composed recipes and the source-only engines: + +```sh +python -m pip install \ + "gepa[full] @ git+https://github.com/gepa-ai/gepa.git@f919db0a622e2e9f9204779b81fe00cc1b2d808f" +``` From this repository: ```sh cd clients/python +uv sync --frozen --group gepa-release uv sync --frozen --group gepa-source ``` diff --git a/package.json b/package.json index cabf82b5..e9b1ddca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tangle-network/agent-eval", - "version": "0.126.4", + "version": "0.126.5", "description": "Evaluate and improve AI agents from runs, traces, judges, and feedback. Compare candidates, cluster failures, measure lift, and gate releases.", "homepage": "https://github.com/tangle-network/agent-eval#readme", "repository": {