What happens?
I wanted to try making a proof of concept for #370. To do this, I need a python 3.14 dev environment. So I started following https://duckdb.org/docs/stable/dev/building/python, checked out the 1.5 branch (which looks like where development is happening), and ran uv sync --no-install-project --python 3.14 (on macOS). This gave:
Error Log
$ uv sync --no-install-project --python 3.14
Using CPython 3.14.2 interpreter at: /opt/homebrew/opt/python@3.14/bin/python3.14
Removed virtual environment at: .venv
Creating virtual environment at: .venv
× No solution found when resolving dependencies for split (markers: python_full_version >= '3.14' and platform_machine == 'ARM64' and sys_platform
│ == 'win32'):
╰─▶ Because only the following versions of torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32')
or (python_full_version < '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and
platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform ==
'win32') or (python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'win32')} are available:
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}<=2.2.2
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.2.2+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.3.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.3.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.3.1
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.3.1+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.4.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.4.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.4.1
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.4.1+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.5.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.5.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.5.1
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.5.1+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.6.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.6.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.7.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.7.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.7.1
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.7.1+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.8.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.8.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.9.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.9.0+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.9.1
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.9.1+cpu
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.10.0
torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14' and
sys_platform != 'darwin' and sys_platform != 'win32')}==2.10.0+cpu
and torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32') or (python_full_version < '3.14' and
platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and platform_machine == 'x86_64' and sys_platform
== 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform == 'win32') or (python_full_version < '3.14'
and sys_platform != 'darwin' and sys_platform != 'win32')}>=2.2.2 has no `python_full_version >= '3.11' and platform_machine == 'ARM64' and
sys_platform == 'win32'`-compatible wheels, we can conclude that torch{(python_full_version >= '3.12' and python_full_version < '3.14' and
sys_platform == 'win32') or (python_full_version < '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version
< '3.13' and platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and
sys_platform == 'win32') or (python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'win32')}>=2.2.2 cannot be used.
And because duckdb:dev depends on torch{(python_full_version >= '3.12' and python_full_version < '3.14' and sys_platform == 'win32')
or (python_full_version < '3.14' and platform_machine != 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.13' and
platform_machine == 'x86_64' and sys_platform == 'darwin') or (python_full_version < '3.14' and platform_machine != 'ARM64' and sys_platform ==
'win32') or (python_full_version < '3.14' and sys_platform != 'darwin' and sys_platform != 'win32')}>=2.2.2 and your project requires duckdb:dev,
we can conclude that your project's requirements are unsatisfiable.
hint: The resolution failed for an environment that is not the current one, consider limiting the environments with `tool.uv.environments`.
Which if I am interpreting right, is caused by this line:
"torch>=2.2.2; python_version < '3.14' and ( sys_platform != 'darwin' or platform_machine != 'x86_64' or python_version < '3.13' ) and ( sys_platform != 'win32' or platform_machine != 'ARM64' or python_version > '3.11' )",
in the test dependency group in our pyproject.toml
If I understand pytorch/pytorch#156856 and https://github.com/pytorch/pytorch/releases/tag/v2.10.0 correctly, then pytorch>=2.10.0 should work with python 3.14. Can we adjust our above version requirement so that my UV successfully pulls in this new pytorch version, so that I can use 3.14 for dev?
To Reproduce
(on MacOS):
uv sync --no-install-project --python 3.14
I'm not sure if there are uv flags where you can mock being on macOS? I tried all variations of
uv sync --no-install-project --python 3.14 --python-platform [all of linux, macos, windows]
and I got a similar error for all of them. So not sure if I am providing the flags wrong, or if we truly can't resolve the deps on all platforms.
OS:
OSX 26.3.1
DuckDB Package Version:
main
Python Version:
3.14
Full Name:
Nick Crews
Affiliation:
Ship Creek Group
What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.
I have tested with a source build
Did you include all relevant data sets for reproducing the issue?
Yes
Did you include all code required to reproduce the issue?
Did you include all relevant configuration to reproduce the issue?
What happens?
I wanted to try making a proof of concept for #370. To do this, I need a python 3.14 dev environment. So I started following https://duckdb.org/docs/stable/dev/building/python, checked out the 1.5 branch (which looks like where development is happening), and ran
uv sync --no-install-project --python 3.14(on macOS). This gave:Error Log
Which if I am interpreting right, is caused by this line:
in the
testdependency group in our pyproject.tomlIf I understand pytorch/pytorch#156856 and https://github.com/pytorch/pytorch/releases/tag/v2.10.0 correctly, then pytorch>=2.10.0 should work with python 3.14. Can we adjust our above version requirement so that my UV successfully pulls in this new pytorch version, so that I can use 3.14 for dev?
To Reproduce
(on MacOS):
I'm not sure if there are uv flags where you can mock being on macOS? I tried all variations of
and I got a similar error for all of them. So not sure if I am providing the flags wrong, or if we truly can't resolve the deps on all platforms.
OS:
OSX 26.3.1
DuckDB Package Version:
main
Python Version:
3.14
Full Name:
Nick Crews
Affiliation:
Ship Creek Group
What is the latest build you tested with? If possible, we recommend testing with the latest nightly build.
I have tested with a source build
Did you include all relevant data sets for reproducing the issue?
Yes
Did you include all code required to reproduce the issue?
Did you include all relevant configuration to reproduce the issue?