diff --git a/CHANGELOG.md b/CHANGELOG.md index a689d722..7f65707c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - (Your now removed features here) ### Fixed -- (Your bug fixes here) +- Pin minimum `datasets` version to `>=3.0.0` to avoid import failures with `pyarrow>=21` (AttributeError: `pyarrow.PyExtensionType`). This ensures compatibility when installing via pip/uv in clean CI environments. ### Security - (Your vulnerabilities patched here) diff --git a/pyproject.toml b/pyproject.toml index 46b66d77..97998892 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,8 @@ dependencies = [ "aiohttp", "mcp>=1.9.2", "PyYAML>=5.0", - "datasets", + # Pin minimum datasets to avoid pyarrow API mismatch (PyExtensionType removal in pyarrow>=21) + "datasets>=3.0.0", "fsspec", "hydra-core>=1.3.2", "omegaconf>=2.3.0", @@ -49,6 +50,7 @@ dependencies = [ "websockets>=15.0.1", "fastapi>=0.116.1", "pytest>=6.0.0", + "pytest-asyncio>=0.21.0", "peewee>=3.18.2", ] @@ -59,7 +61,6 @@ Homepage = "https://github.com/fireworks-ai/eval-protocol" dev = [ "build", "twine", - "pytest-asyncio", "pytest-httpserver", "werkzeug>=2.0.0", "ruff>=0.5.0", @@ -103,12 +104,14 @@ langfuse = [ "langfuse>=2.0.0", ] huggingface = [ - "datasets>=2.0.0", + # Keep in sync with core dependency to ensure compatibility with latest pyarrow + "datasets>=3.0.0", "transformers>=4.0.0", ] adapters = [ "langfuse>=2.0.0", - "datasets>=2.0.0", + # Keep in sync with core dependency to ensure compatibility with latest pyarrow + "datasets>=3.0.0", "transformers>=4.0.0", ] bigquery = [ diff --git a/uv.lock b/uv.lock index 6758d24c..035b9f37 100644 --- a/uv.lock +++ b/uv.lock @@ -1108,6 +1108,7 @@ dependencies = [ { name = "psutil" }, { name = "pydantic" }, { name = "pytest" }, + { name = "pytest-asyncio" }, { name = "python-dotenv" }, { name = "pyyaml" }, { name = "requests" }, @@ -1143,7 +1144,6 @@ dev = [ { name = "pip" }, { name = "pre-commit" }, { name = "pyright" }, - { name = "pytest-asyncio" }, { name = "pytest-cov" }, { name = "pytest-httpserver" }, { name = "pytest-xdist" }, @@ -1198,9 +1198,9 @@ requires-dist = [ { name = "anthropic", specifier = ">=0.59.0" }, { name = "build", marker = "extra == 'dev'" }, { name = "dataclasses-json", specifier = ">=0.5.7" }, - { name = "datasets" }, - { name = "datasets", marker = "extra == 'adapters'", specifier = ">=2.0.0" }, - { name = "datasets", marker = "extra == 'huggingface'", specifier = ">=2.0.0" }, + { name = "datasets", specifier = ">=3.0.0" }, + { name = "datasets", marker = "extra == 'adapters'", specifier = ">=3.0.0" }, + { name = "datasets", marker = "extra == 'huggingface'", specifier = ">=3.0.0" }, { name = "deepdiff", specifier = ">=6.0.0" }, { name = "docker", marker = "extra == 'dev'", specifier = "==7.1.0" }, { name = "docstring-parser", specifier = ">=0.15" }, @@ -1238,7 +1238,7 @@ requires-dist = [ { name = "pydantic", specifier = ">=2.0.0" }, { name = "pyright", marker = "extra == 'dev'", specifier = ">=1.1.365" }, { name = "pytest", specifier = ">=6.0.0" }, - { name = "pytest-asyncio", marker = "extra == 'dev'" }, + { name = "pytest-asyncio", specifier = ">=0.21.0" }, { name = "pytest-cov", marker = "extra == 'dev'" }, { name = "pytest-httpserver", marker = "extra == 'dev'" }, { name = "pytest-xdist", marker = "extra == 'dev'" },