| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| [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"] |
| # Require Cargo.lock is up to date |
| locked = true |
| features = ["substrait"] |
| |
| [tool.pytest.ini_options] |
| asyncio_mode = "auto" |
| asyncio_default_fixture_loop_scope = "function" |
| |
| # Enable docstring linting using the google style guide |
| [tool.ruff.lint] |
| select = ["ALL" ] |
| ignore = [ |
| "A001", # Allow using words like min as variable names |
| "A002", # Allow using words like filter as variable names |
| "ANN401", # Allow Any for wrapper classes |
| "COM812", # Recommended to ignore these rules when using with ruff-format |
| "FIX002", # Allow TODO lines - consider removing at some point |
| "FBT001", # Allow boolean positional args |
| "FBT002", # Allow boolean positional args |
| "ISC001", # Recommended to ignore these rules when using with ruff-format |
| "SLF001", # Allow accessing private members |
| "TD002", |
| "TD003", # Allow TODO lines |
| "UP007", # Disallowing Union is pedantic |
| # TODO: Enable all of the following, but this PR is getting too large already |
| "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 |
| |
| # Disable docstring checking for these directories |
| [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"] |
| |
| [tool.codespell] |
| skip = [ |
| "./target", |
| "uv.lock", |
| "./python/tests/test_functions.py" |
| ] |
| count = true |
| ignore-words-list = [ |
| "ans", |
| "IST" |
| ] |
| |
| [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", |
| "codespell==2.4.1", |
| ] |
| 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", |
| ] |