diff --git a/CHANGELOG.md b/CHANGELOG.md index 784e95222..16e6f6926 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,13 @@ these packages. All five distributions share one version and one entry. value that cannot be read as its type, such as a `run_mode` that is not text, is refused with `INVALID_REQUEST` before sending, where a NIM answered `422 VALIDATION_FAILED`. +- The `duckdb` extra holds `duckdb` below 2. The 2.0 release warns on the + Arrow fetch the relational engine reads DuckDB tables through, and this + release is tested against 1.5. +- `structured-data-models-client` and the relational engine hold `pandas` + below 3.1. The 3.1 release raises taking a date offset from the earliest + timestamp, which the engine does for every graph without a time column, + and this release is tested against 3.0. ### Fixed diff --git a/packages/structured-data-models-client/pyproject.toml b/packages/structured-data-models-client/pyproject.toml index 9dfbb274b..42c700625 100644 --- a/packages/structured-data-models-client/pyproject.toml +++ b/packages/structured-data-models-client/pyproject.toml @@ -41,7 +41,10 @@ classifiers = [ dependencies = [ "structured-data-models-api==1.0.0", "structured-data-models-pql==1.0.0", - "pandas>=2.2.2", + # 3.1 builds a frame around an integer past the float range where earlier + # releases refused one, and a request's description relies on that + # refusal to leave out the table carrying it. + "pandas>=2.2.2,<3.1", "numpy>=1.23", "requests>=2.28", "urllib3>=1.26", diff --git a/packages/structured-data-models-connectors/pyproject.toml b/packages/structured-data-models-connectors/pyproject.toml index b96d010d4..6bce18c6a 100644 --- a/packages/structured-data-models-connectors/pyproject.toml +++ b/packages/structured-data-models-connectors/pyproject.toml @@ -61,7 +61,10 @@ sqlite = [ "adbc-driver-sqlite", ] duckdb = [ - "duckdb>=1.5.0", + # 2.0 warns on an Arrow fetch from a DB-API cursor, which the engine + # makes for every table and sample it reads. Lifting this moves those + # reads off the cursor. + "duckdb>=1.5.0,<2", ] snowflake = [ # 5.0 empties `DEFAULT_CONFIGURATION` and rewrites keyword names through diff --git a/packages/structured-data-models-relational-engine/setup.py b/packages/structured-data-models-relational-engine/setup.py index 0f289c9a9..65c1aa3a5 100644 --- a/packages/structured-data-models-relational-engine/setup.py +++ b/packages/structured-data-models-relational-engine/setup.py @@ -39,7 +39,9 @@ setup( install_requires=[ 'numpy', - 'pandas', + # 3.1 raises taking a `DateOffset` from `Timestamp.min`, which is the + # anchor time of every graph without a time column. + 'pandas<3.1', # The warehouse backends read results as `pd.ArrowDtype`, which pandas # refuses below pyarrow 10.0.1. Databricks Runtime 14.3 LTS and # serverless environment 1 ship pyarrow 8, and failed there on import. diff --git a/uv.lock b/uv.lock index be6a79353..ba3219cb0 100644 --- a/uv.lock +++ b/uv.lock @@ -3166,7 +3166,7 @@ test = [ requires-dist = [ { name = "databricks-sdk", marker = "extra == 'databricks-serving'", specifier = ">=0.68.0,<1.0" }, { name = "numpy", specifier = ">=1.23" }, - { name = "pandas", specifier = ">=2.2.2" }, + { name = "pandas", specifier = ">=2.2.2,<3.1" }, { name = "pytest", marker = "extra == 'test'" }, { name = "requests", specifier = ">=2.28" }, { name = "requests-mock", marker = "extra == 'test'" }, @@ -3241,7 +3241,7 @@ requires-dist = [ { name = "databricks-sdk", marker = "extra == 'databricks'", specifier = ">=0.89,<1.0" }, { name = "databricks-sdk", marker = "extra == 'lakebase'", specifier = ">=0.89,<1.0" }, { name = "databricks-sql-connector", marker = "extra == 'databricks'", specifier = ">=4.1.3" }, - { name = "duckdb", marker = "extra == 'duckdb'", specifier = ">=1.5.0" }, + { name = "duckdb", marker = "extra == 'duckdb'", specifier = ">=1.5.0,<2" }, { name = "moto", extras = ["server"], marker = "extra == 'test'", specifier = ">=5" }, { name = "pandas", specifier = ">=2.2.2" }, { name = "psycopg", marker = "extra == 'lakebase'", specifier = ">=3.1" }, @@ -3348,7 +3348,7 @@ requires-dist = [ { name = "numpy" }, { name = "openai", marker = "extra == 'explain'", specifier = ">=1.40" }, { name = "packaging", marker = "extra == 'test'" }, - { name = "pandas" }, + { name = "pandas", specifier = "<3.1" }, { name = "pooch", marker = "extra == 'relbench'" }, { name = "pooch", marker = "extra == 'test'" }, { name = "pyarrow", specifier = ">=10.0.1" },