@@ -10,7 +10,7 @@ dynamic = ["version"]
1010description = " DuckDB in-process database"
1111readme = " README.md"
1212keywords = [" DuckDB" , " Database" , " SQL" , " OLAP" ]
13- requires-python = " >=3.9 .0"
13+ requires-python = " >=3.10 .0"
1414classifiers = [
1515 " Development Status :: 5 - Production/Stable" ,
1616 " License :: OSI Approved :: MIT License" ,
@@ -25,7 +25,6 @@ classifiers = [
2525 " Programming Language :: Python" ,
2626 " Programming Language :: Python :: 3" ,
2727 " Programming Language :: Python :: 3 :: Only" ,
28- " Programming Language :: Python :: 3.9" ,
2928 " Programming Language :: Python :: 3.10" ,
3029 " Programming Language :: Python :: 3.11" ,
3130 " Programming Language :: Python :: 3.12" ,
@@ -176,12 +175,12 @@ exclude = [
176175#
177176# This section has dependency groups for testing and development. Tread carefully, the current setup makes sure that
178177# test dependencies can be installed on as many platforms we build wheel for. Especially picky are:
179- # - tensorflow: we can only run tests on cp39 -cp311, for osx there is no tensorflow-cpu, for windows we need
178+ # - tensorflow: we can only run tests on cp310 -cp311, for osx there is no tensorflow-cpu, for windows we need
180179# tensorflow-cpu-aws and there is no distribution availalbe for Linux aarch64.
181180# - torch: since we can't use gpu acceleration, we need to rely on torch-cpu, which isn't available on pypi. We use
182181# `tool.uv.index` and `tool.uv.sources` to make sure the official pytorch index is used. Even there, we don't
183182# have a wheel available for x86_64 OSX + cp313.
184- # - numpy: tensorflow doesn't play nice with numpy>2 so for every platform that can run tensorflow (cp39 -cp311) we use
183+ # - numpy: tensorflow doesn't play nice with numpy>2 so for every platform that can run tensorflow (cp310 -cp311) we use
185184# numpy<2. numpy<2 has no wheels for cp31[2|3], meaning an sdist will be used. However, on Windows amd64 +
186185# cp313 this results in a segfault / access violation. To get around this, we install numpy>=2 on all >=cp312
187186# platforms. Then for windows arm64, for which there is no tensorflow, we only allow numpy>=2.3 because that
@@ -195,20 +194,20 @@ default-groups = ["dev"]
195194# build wheels for.
196195# See https://docs.astral.sh/uv/concepts/resolution/#universal-resolution
197196environments = [ # no need to resolve packages beyond these platforms with uv...
198- " python_version >= '3.9 ' and sys_platform == 'darwin' and platform_machine == 'arm64'" ,
199- " python_version >= '3.9 ' and sys_platform == 'darwin' and platform_machine == 'x86_64'" ,
200- " python_version >= '3.9 ' and sys_platform == 'win32' and platform_machine == 'AMD64'" ,
197+ " python_version >= '3.10 ' and sys_platform == 'darwin' and platform_machine == 'arm64'" ,
198+ " python_version >= '3.10 ' and sys_platform == 'darwin' and platform_machine == 'x86_64'" ,
199+ " python_version >= '3.10 ' and sys_platform == 'win32' and platform_machine == 'AMD64'" ,
201200 " python_version >= '3.11' and sys_platform == 'win32' and platform_machine == 'ARM64'" ,
202- " python_version >= '3.9 ' and sys_platform == 'linux' and platform_machine == 'x86_64'" ,
203- " python_version >= '3.9 ' and sys_platform == 'linux' and platform_machine == 'aarch64'" ,
201+ " python_version >= '3.10 ' and sys_platform == 'linux' and platform_machine == 'x86_64'" ,
202+ " python_version >= '3.10 ' and sys_platform == 'linux' and platform_machine == 'aarch64'" ,
204203]
205204required-environments = [ # ... but do always resolve for all of them
206- " python_version >= '3.9 ' and sys_platform == 'darwin' and platform_machine == 'arm64'" ,
207- " python_version >= '3.9 ' and sys_platform == 'darwin' and platform_machine == 'x86_64'" ,
208- " python_version >= '3.9 ' and sys_platform == 'win32' and platform_machine == 'AMD64'" ,
205+ " python_version >= '3.10 ' and sys_platform == 'darwin' and platform_machine == 'arm64'" ,
206+ " python_version >= '3.10 ' and sys_platform == 'darwin' and platform_machine == 'x86_64'" ,
207+ " python_version >= '3.10 ' and sys_platform == 'win32' and platform_machine == 'AMD64'" ,
209208 " python_version >= '3.11' and sys_platform == 'win32' and platform_machine == 'ARM64'" ,
210- " python_version >= '3.9 ' and sys_platform == 'linux' and platform_machine == 'x86_64'" ,
211- " python_version >= '3.9 ' and sys_platform == 'linux' and platform_machine == 'aarch64'" ,
209+ " python_version >= '3.10 ' and sys_platform == 'linux' and platform_machine == 'x86_64'" ,
210+ " python_version >= '3.10 ' and sys_platform == 'linux' and platform_machine == 'aarch64'" ,
212211]
213212
214213# We just need pytorch for tests, wihtout GPU acceleration. PyPI doesn't host a cpu-only version for Linux, so we have
@@ -330,7 +329,7 @@ packages = ["duckdb", "_duckdb"]
330329strict = true
331330warn_unreachable = true
332331pretty = true
333- python_version = " 3.9 "
332+ python_version = " 3.10 "
334333exclude = [
335334 " duckdb/experimental/" , # not checking the pyspark API
336335 " duckdb/query_graph/" , # old and unmaintained (should probably remove)
@@ -363,7 +362,7 @@ source = ["duckdb"]
363362[tool .ruff ]
364363line-length = 120
365364indent-width = 4
366- target-version = " py39 "
365+ target-version = " py310 "
367366fix = true
368367exclude = [' external/duckdb' , ' sqllogic' ]
369368
0 commit comments