[build-system]
requires = ["maturin>=1.8.1"]
build-backend = "maturin"
[project]
name = "datafusion"
description = "Build and run queries against data"
readme = "README.md"
license = { file = "LICENSE.txt" }
requires-python = ">=3.9"
keywords = ["datafusion", "dataframe", "rust", "query-engine"]
classifiers = [
"Development Status :: 2 - Pre-Alpha",
"Intended Audience :: Developers",
"License :: OSI Approved :: Apache Software License",
"License :: OSI Approved",
"Operating System :: MacOS",
"Operating System :: Microsoft :: Windows",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python",
"Programming Language :: Rust",
]
dependencies = ["pyarrow>=11.0.0", "typing-extensions;python_version<'3.13'"]
dynamic = ["version"]
[project.urls]
homepage = "https://datafusion.apache.org/python"
documentation = "https://datafusion.apache.org/python"
repository = "https://github.com/apache/datafusion-python"
[tool.isort]
profile = "black"
[tool.maturin]
python-source = "python"
module-name = "datafusion._internal"
include = [{ path = "Cargo.lock", format = "sdist" }]
exclude = [".github/**", "ci/**", ".asf.yaml"]
locked = true
features = ["substrait"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
asyncio_default_fixture_loop_scope = "function"
[tool.ruff.lint]
select = ["ALL" ]
ignore = [
"A001",
"A002",
"ANN401",
"COM812",
"FIX002",
"FBT001",
"FBT002",
"ISC001",
"SLF001",
"TD002",
"TD003",
"UP007",
"PLR0913",
"TRY003",
"PLR2004",
"PD901",
"ERA001",
"ANN001",
"ANN202",
"PTH",
"N812",
"INP001",
"DTZ007",
"RUF015",
"A005",
"TC001",
"UP035",
]
[tool.ruff.lint.pydocstyle]
convention = "google"
[tool.ruff.lint.pycodestyle]
max-doc-length = 88
[tool.ruff.lint.per-file-ignores]
"python/tests/*" = [
"ANN",
"ARG",
"BLE001",
"D",
"S101",
"SLF",
"PD",
"PLR2004",
"PT011",
"RUF015",
"S608",
"PLR0913",
"PT004",
]
"examples/*" = ["D", "W505", "E501", "T201", "S101"]
"dev/*" = ["D", "E", "T", "S", "PLR", "C", "SIM", "UP", "EXE", "N817"]
"benchmarks/*" = ["D", "F", "T", "BLE", "FURB", "PLR", "E", "TD", "TRY", "S", "SIM", "EXE", "UP"]
"docs/*" = ["D"]
[dependency-groups]
dev = [
"maturin>=1.8.1",
"numpy>1.25.0",
"pre-commit>=4.0.0",
"pytest>=7.4.4",
"pytest-asyncio>=0.23.3",
"ruff>=0.9.1",
"toml>=0.10.2",
"pygithub==2.5.0",
]
docs = [
"sphinx>=7.1.2",
"pydata-sphinx-theme==0.8.0",
"myst-parser>=3.0.1",
"jinja2>=3.1.5",
"ipython>=8.12.3",
"pandas>=2.0.3",
"pickleshare>=0.7.5",
"sphinx-autoapi>=3.4.0",
"setuptools>=75.3.0",
]