[build-system] build-backend = "maturin" requires = ["maturin>=1.5.0,<2.0.0"] [project] authors = [{name = "Eventual Inc", email = "daft@eventualcomputing.com"}] dependencies = [ "pyarrow >= 16.0.0,<26.0.0", "tqdm<4.68.0", "typing-extensions >= 4.0.0; python_version < '3.12'", "packaging" ] description = "Distributed Dataframes for Multimodal Data" dynamic = ["version"] license = {file = "LICENSE"} maintainers = [ {name = "Sammy Sidhu", email = "sammy@eventualcomputing.com"}, {name = "Jay Chia", email = "jay@eventualcomputing.com"} ] name = "daft" readme = "README.rst" requires-python = ">=3.10,<3.15" [project.scripts] daft = "daft.cli:main" [project.urls] homepage = "https://www.daft.ai" repository = "https://github.com/Eventual-Inc/Daft" [project.optional-dependencies] all = ["daft[audio, aws, azure, clickhouse, deltalake, google, gravitino, hdf5, http, huggingface, iceberg, jev, kafka, lance, mcap, numpy, openai, pandas, postgres, ray, sql, transformers, turbopuffer, unity, video]"] audio = ["soundfile >= 0.13.0,<0.14.0", "librosa >= 0.11.0,<0.12.0"] aws = ["boto3<1.44.0", "mypy-boto3-glue"] azure = ["fsspec<2026.8.0", "adlfs<2026.5.0"] clickhouse = ["clickhouse_connect<1.1.0"] deltalake = ["deltalake >= 1.6.0,< 1.7.0"] gcp = [] google = ["google-genai<2.7.0", "numpy<2.4.0", "pillow<13"] gravitino = ["requests>=2.28.0,<3.0.0"] hdf5 = ["h5py>=3.16.0,<4.0.0", "numpy<2.4.0"] http = ["fsspec[http]<2026.8.0"] hudi = [] huggingface = ["huggingface-hub<2", "datasets<4.9.0", "fsspec<2026.8.0"] iceberg = ["pyiceberg >= 0.7.0, != 0.9.1, != 0.10.0, <= 0.11.1"] jev = ["typesafe-sdk >= 0.7.2, < 0.8.0"] kafka = ["confluent-kafka"] lance = ["daft-lance>=0.5.0,<0.6.0"] # The reader is native. Retain the extra as a no-op for installation compatibility. mcap = [] numpy = ["numpy<2.4.0"] openai = ["openai<2.39.0", "numpy<2.4.0", "pillow<13"] pandas = ["pandas<2.4.0"] postgres = ["psycopg[binary]<3.4.0", "pgvector<0.5.0", "sqlglot<30.9.0", "connectorx>=0.4.4,<0.5.0"] ray = [ # floor is 2.11: flotilla uses ray.exceptions.ActorUnavailableError, added in ray 2.11 # Inherit existing Ray version. Get the "default" extra for the Ray dashboard. 'ray[data, client]>=2.11.0,<2.60.0' ] transformers = ["transformers<5.20.0", "sentence-transformers<5.7.0", "torch<2.15.0", "torchvision<0.30.0", "pillow<13"] # connectorx 0.4.4 is needed for pgvector support. sql = ["connectorx>=0.4.4,<0.5.0", "sqlalchemy<2.1.0", "sqlglot<30.9.0"] turbopuffer = ["turbopuffer<2.2.0"] unity = ["httpx<=0.28.1", "unitycatalog<0.2.0", "deltalake>=1.6.0,<1.7.0"] video = ["av >= 15.0.0,< 17.1.0", "pillow<13"] viz = [] [dependency-groups] dev = [ "ipdb==0.13.13", "maturin==1.15.0", "pre-commit==4.6.2", "ruff==0.15.14", "mypy==2.4.0", # Pinned aiohttp due to Ray connection issue in aiohttp==3.12.6 "aiohttp==3.14.5", # Pinned httpx due to unitycatalog-python issue: https://github.com/unitycatalog/unitycatalog-python/issues/9 "httpx==0.28.1", # Tracing "orjson==3.11.9", "py-spy==0.4.2", "viztracer==1.1.1", # Testing frameworks "hypothesis==6.148.1", "pytest==9.0.3", "pytest-benchmark==5.2.3", "pytest-codspeed==5.0.3", "pytest-cov==7.1.0", "pytest-profiling>=1.8.1", "pytest-xdist[psutil]>=3.8.0", "pytest-timeout>=2.3.0", "memray==1.19.3; platform_system != \"Windows\"", # Testing dependencies "lxml==6.1.1", "dask[dataframe]==2025.11.0", "numpy==2.2.6; python_version >= '3.13'", "numpy==2.2.6; python_version < '3.13'", "pandas==2.3.3; python_version >= '3.13'", "pandas==2.2.3; python_version < '3.13'", "pandas-stubs==2.3.3.260113", "xxhash==3.7.0", "pillow==12.3.0", "reportlab==4.5.1", "opencv-python==4.13.0.92", "tiktoken==0.13.0", "duckdb==1.5.3", "datasets==4.8.5", "torch==2.13.0", "torchvision==0.28.0", "jax==0.6.2", "jaxtyping==0.3.7", "docker==7.2.0", # Pyarrow "pyarrow >= 16.0.0,<26.0.0", "pyarrow-stubs==20.0.0.20251215", # Ray "ray[data, client]==2.59.0", # Lance "daft-lance==0.5.0", # Iceberg "pyiceberg==0.11.1", "pydantic==2.12.4", "tenacity==9.1.4", # Delta Lake "deltalake==1.6.0", # Databricks "databricks-sdk==0.154.0", "unitycatalog==0.1.1", # SQL "sqlalchemy==2.0.49", "connectorx==0.4.5; platform_system == \"Linux\" and platform_machine == \"aarch64\"", "connectorx==0.4.5; platform_system != \"Linux\" or platform_machine != \"aarch64\"", "trino[sqlalchemy]==0.337.0", "PyMySQL==1.2.0", "psycopg2-binary==2.9.12", "sqlglot==30.8.0", "pyodbc==5.3.0", # AWS "s3fs==2024.9.0", "boto3==1.36.2", "boto3-stubs[essential,glue,s3,s3tables]==1.38.46", "moto[glue,s3,server]==5.1.21", # Azure "adlfs==2024.7.0", "azure-storage-blob==12.27.1", # GCS "gcsfs==2024.9.0.post1", # Hugging Face "huggingface-hub==1.33.0", # AI # vllm (and its CUDA deps, e.g. nvidia-cudnn-frontend) ship no macOS/Windows wheels; gate to Linux. "vllm==0.31.0; sys_platform == 'linux'", "openai==2.38.0", "google-genai==2.6.0", "typesafe-sdk==0.7.2", # AV "av==17.0.1", "h5py==3.16.0", "soundfile==0.13.1", "librosa==0.11.0", # Clickhouse "clickhouse-connect==1.0.1", # mcap "mcap==1.3.1", "mcap-ros2-support==0.5.7", "mcap-protobuf-support==0.5.4", # BigTable "google-cloud-bigtable==2.38.0" ] docs = [ "markdown-exec==1.12.1", "mkdocs-jupyter==0.26.3", "mkdocs-material==9.7.6", "mkdocs-macros-plugin==1.5.0", "mkdocs-simple-hooks==0.1.5", "pymdown-extensions==10.21.3", # NOTE: [imaging] extra removed because it pins pillow<12.0, conflicting with pillow==12.3.0 (security fix). # Image optimization for docs is not critical. Re-add when mkdocs-material supports Pillow 12+. # "mkdocs-material[imaging]==9.7.6", "mkdocstrings-python==2.0.3", "mkdocs-minify-plugin==0.8.0", "mkdocs-redirects==1.2.3", "mkdocs-gen-files==0.6.1", "griffe==2.0.2", "mkdocs-literate-nav==0.6.3", "Jinja2==3.1.6" ] [tool] [tool.codespell] check-filenames = true check-hidden = true ignore-words-list = "crate,arithmetics,ser,acter,MOR,NotIn,caf" # Feel free to un-skip examples, and experimental, you will just need to # work through many typos (--write-changes and --interactive will help) skip = "tests/series/*,target,.git,.venv,venv,data,*.csv,*.csv.*,*.html,*.json,*.jsonl,*.pdf,*.txt,*.ipynb,*.tiktoken,*.sql,tests/table/utf8/*,tests/table/binary/*,*.warc,tests/ai/*" [tool.maturin] # "python" tells pyo3 we want to build an extension module (skips linking against libpython.so) features = ["python"] # Include pre-built dashboard frontend assets in the sdist so they're available # inside maturin's Docker container for manylinux builds (the assets are gitignored # but built in a prior CI step). include = [{path = "src/daft-dashboard/frontend/out/**/*", format = "sdist"}] [tool.mypy] exclude = ['daft/pickle/*.py$'] files = ["daft/**/*.py", "daft/**/*.pyx", "tests/**/*.py"] python_version = "3.10" warn_return_any = true warn_unused_configs = true [[tool.mypy.overrides]] ignore_missing_imports = true module = [ "pyarrow.*", "fsspec.*", "viztracer.*" ] [[tool.mypy.overrides]] enable_error_code = ["attr-defined"] module = 'daft.*' warn_return_any = false [tool.pyright] typeCheckingMode = "off" venv = ".venv" venvPath = "." [[tool.pyright.executionEnvironments]] root = ".github/ci-scripts" [[tool.pyright.executionEnvironments]] root = "tools" [[tool.pyright.executionEnvironments]] root = "daft_dashboard" [tool.pytest.ini_options] addopts = "-m 'not (integration or benchmark or hypothesis)'" minversion = "6.0" testpaths = [ "tests" ] [tool.uv] required-version = ">=0.12.0" [tool.uv.sources.daft_dashboard] workspace = true [tool.uv.workspace] members = ["daft_dashboard"]