1616# under the License.
1717
1818[build-system ]
19- requires = [" maturin>=1.8.1" ]
19+ requires = [
20+ " maturin>=1.8.1" ,
21+ ]
2022build-backend = " maturin"
2123
2224[project ]
@@ -25,7 +27,12 @@ description = "Build and run queries against data"
2527readme = " README.md"
2628license = { file = " LICENSE.txt" }
2729requires-python = " >=3.10"
28- keywords = [" datafusion" , " dataframe" , " rust" , " query-engine" ]
30+ keywords = [
31+ " dataframe" ,
32+ " datafusion" ,
33+ " query-engine" ,
34+ " rust" ,
35+ ]
2936classifiers = [
3037 " Development Status :: 2 - Pre-Alpha" ,
3138 " Intended Audience :: Developers" ,
@@ -48,7 +55,9 @@ dependencies = [
4855 " pyarrow>=22.0.0;python_version>='3.14'" ,
4956 " typing-extensions;python_version<'3.13'" ,
5057]
51- dynamic = [" version" ]
58+ dynamic = [
59+ " version" ,
60+ ]
5261
5362[project .urls ]
5463homepage = " https://datafusion.apache.org/python"
@@ -61,35 +70,45 @@ profile = "black"
6170[tool .maturin ]
6271python-source = " python"
6372module-name = " datafusion._internal"
64- include = [{ path = " Cargo.lock" , format = " sdist" }]
65- exclude = [" .github/**" , " ci/**" , " .asf.yaml" ]
73+ include = [
74+ { path = " Cargo.lock" , format = " sdist" },
75+ ]
76+ exclude = [
77+ " .asf.yaml" ,
78+ " .github/**" ,
79+ " ci/**" ,
80+ ]
6681# Require Cargo.lock is up to date
6782locked = true
68- features = [" substrait" ]
83+ features = [
84+ " substrait" ,
85+ ]
6986
7087[tool .pytest .ini_options ]
7188asyncio_mode = " auto"
7289asyncio_default_fixture_loop_scope = " function"
7390
7491# Enable docstring linting using the google style guide
7592[tool .ruff .lint ]
76- select = [" ALL" ]
93+ select = [
94+ " ALL" ,
95+ ]
7796ignore = [
7897 " A001" , # Allow using words like min as variable names
7998 " A002" , # Allow using words like filter as variable names
99+ " A005" , # Allow module named io
80100 " ANN401" , # Allow Any for wrapper classes
81101 " COM812" , # Recommended to ignore these rules when using with ruff-format
82- " FIX002" , # Allow TODO lines - consider removing at some point
83102 " FBT001" , # Allow boolean positional args
84103 " FBT002" , # Allow boolean positional args
104+ " FIX002" , # Allow TODO lines - consider removing at some point
85105 " ISC001" , # Recommended to ignore these rules when using with ruff-format
106+ " N812" , # Allow importing functions as `F`
107+ " PD901" , # Allow variable name df
108+ " PLR0913" , # Allow many arguments in function definition
86109 " SLF001" , # Allow accessing private members
87110 " TD002" , # Do not require author names in TODO statements
88111 " TD003" , # Allow TODO lines
89- " PLR0913" , # Allow many arguments in function definition
90- " PD901" , # Allow variable name df
91- " N812" , # Allow importing functions as `F`
92- " A005" , # Allow module named io
93112]
94113
95114[tool .ruff .lint .pydocstyle ]
@@ -99,7 +118,10 @@ convention = "google"
99118max-doc-length = 88
100119
101120[tool .ruff .lint .flake8-boolean-trap ]
102- extend-allowed-calls = [" lit" , " datafusion.lit" ]
121+ extend-allowed-calls = [
122+ " datafusion.lit" ,
123+ " lit" ,
124+ ]
103125
104126# Disable docstring checking for these directories
105127[tool .ruff .lint .per-file-ignores ]
@@ -108,68 +130,82 @@ extend-allowed-calls = ["lit", "datafusion.lit"]
108130 " ARG" ,
109131 " BLE001" ,
110132 " D" ,
111- " S101" ,
112- " SLF" ,
113133 " PD" ,
134+ " PLC0415" ,
135+ " PLR0913" ,
114136 " PLR2004" ,
137+ " PT004" ,
115138 " PT011" ,
116139 " RUF015" ,
140+ " S101" ,
117141 " S608" ,
118- " PLR0913" ,
119- " PT004" ,
142+ " SLF" ,
120143]
121144"examples/*" = [
122- " D" ,
123- " W505" ,
124- " E501" ,
125- " T201" ,
126- " S101" ,
127- " PLR2004" ,
128145 " ANN001" ,
129146 " ANN202" ,
130- " INP001 " ,
147+ " D " ,
131148 " DTZ007" ,
149+ " E501" ,
150+ " INP001" ,
151+ " PLR2004" ,
132152 " RUF015" ,
153+ " S101" ,
154+ " T201" ,
155+ " W505" ,
133156]
134157"dev/*" = [
158+ " ANN001" ,
159+ " C" ,
135160 " D" ,
136161 " E" ,
137- " T" ,
138- " S" ,
162+ " ERA001" ,
163+ " EXE" ,
164+ " N817" ,
139165 " PLR" ,
140- " C " ,
166+ " S " ,
141167 " SIM" ,
168+ " T" ,
142169 " UP" ,
143- " EXE" ,
144- " N817" ,
145- " ERA001" ,
146- " ANN001" ,
147170]
148171"benchmarks/*" = [
172+ " ANN001" ,
173+ " BLE" ,
149174 " D" ,
175+ " E" ,
176+ " ERA001" ,
177+ " EXE" ,
150178 " F" ,
151- " T" ,
152- " BLE" ,
153179 " FURB" ,
180+ " INP001" ,
154181 " PLR" ,
155- " E" ,
156- " TD" ,
157- " TRY" ,
158182 " S" ,
159183 " SIM" ,
160- " EXE" ,
184+ " T" ,
185+ " TD" ,
186+ " TRY" ,
161187 " UP" ,
162- " ERA001" ,
188+ ]
189+ "docs/*" = [
190+ " D" ,
191+ ]
192+ "docs/source/conf.py" = [
163193 " ANN001" ,
194+ " ERA001" ,
164195 " INP001" ,
165196]
166- "docs/*" = [" D" ]
167- "docs/source/conf.py" = [" ERA001" , " ANN001" , " INP001" ]
168197
169198[tool .codespell ]
170- skip = [" ./target" , " uv.lock" , " ./python/tests/test_functions.py" ]
199+ skip = [
200+ " ./python/tests/test_functions.py" ,
201+ " ./target" ,
202+ " uv.lock" ,
203+ ]
171204count = true
172- ignore-words-list = [" ans" , " IST" ]
205+ ignore-words-list = [
206+ " IST" ,
207+ " ans" ,
208+ ]
173209
174210[dependency-groups ]
175211dev = [
@@ -182,8 +218,8 @@ dev = [
182218 " pre-commit>=4.3.0" ,
183219 " pyarrow>=19.0.0" ,
184220 " pygithub==2.5.0" ,
185- " pytest>=7.4.4" ,
186221 " pytest-asyncio>=0.23.3" ,
222+ " pytest>=7.4.4" ,
187223 " pyyaml>=6.0.3" ,
188224 " ruff>=0.9.1" ,
189225 " toml>=0.10.2" ,
@@ -196,6 +232,6 @@ docs = [
196232 " pickleshare>=0.7.5" ,
197233 " pydata-sphinx-theme==0.8.0" ,
198234 " setuptools>=75.3.0" ,
199- " sphinx>=7.1.2" ,
200235 " sphinx-autoapi>=3.4.0" ,
236+ " sphinx>=7.1.2" ,
201237]
0 commit comments