# 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.5.1,<1.6.0"] build-backend = "maturin" [project] name = "datafusion" description = "Build and run queries against data" readme = "README.md" license = { file = "LICENSE.txt" } requires-python = ">=3.7" keywords = ["datafusion", "dataframe", "rust", "query-engine"] classifier = [ "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.7", "Programming Language :: Python :: 3.8", "Programming Language :: Python :: 3.9", "Programming Language :: Python :: 3.10", "Programming Language :: Python", "Programming Language :: Rust", ] dependencies = ["pyarrow>=11.0.0", "typing-extensions;python_version<'3.13'"] [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"] # Enable docstring linting using the google style guide [tool.ruff.lint] select = ["E4", "E7", "E9", "F", "D", "W"] [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/*" = ["D"] "examples/*" = ["D", "W505"] "dev/*" = ["D"] "benchmarks/*" = ["D", "F"] "docs/*" = ["D"]