Dependency Compatibility Matrix¶
BenchBox ships a single source of dependency metadata in pyproject.toml.
The resolved versions are captured in uv.lock, which is consumed by CI and
local development through uv. Dependency validation now happens via an
explicit check so changes cannot drift silently.
Supported Python Versions¶
Declared range:
>=3.9,<3.15Solver markers (from
uv.lock):python_full_version >= '3.14' and platform_python_implementation != 'PyPy'python_full_version == '3.13.*' and platform_python_implementation != 'PyPy'python_full_version >= '3.13' and platform_python_implementation == 'PyPy'python_full_version == '3.12.*'python_full_version == '3.11.*'python_full_version == '3.10.*'python_full_version < '3.10'
These markers mirror the lock file resolution and offer early warning if a future interpreter release needs bespoke packaging rules.
Core Dependencies¶
Package |
Specifier |
|---|---|
sqlglot |
|
pytest-xdist |
|
pytest-benchmark |
|
pytest-cov |
|
click |
|
rich |
|
psutil |
|
pydantic |
|
pyyaml |
|
packaging |
|
duckdb |
|
Optional Extras¶
Extra |
Dependencies |
|---|---|
all |
|
bigquery |
|
clickhouse |
|
cloud |
|
databricks |
|
dev |
|
docs |
|
redshift |
|
snowflake |
|
Running the Validation Command¶
Use the new Makefile target to validate dependencies and show the compatibility
matrix:
make dependency-check # Validate lock vs. pyproject specs
make dependency-check ARGS=--matrix # Also print compatibility summary
Under the hood this calls python -m benchbox.utils.dependency_validation,
which parses both files and fails fast if a declared dependency has no matching
locked version. Incorporate the command into feature branches whenever
dependencies change, and expect CI to run it automatically.