-
Notifications
You must be signed in to change notification settings - Fork 886
Open
Labels
Description
Bug Description
Encountering this with uv add spyder
in a Python project where I am trying to use Python 3.14.
Spyder depends on jellyfish, and the latter uses maturin/PyO3 to build. With Python 3.14 the build fails because "the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version".
The suggestion to use PYO3_USE_ABI3_FORWARD_COMPATIBILITY
provided in the error messages is useful, however, it does not explain what the fundamental issue is:
- Is it the latest version of PyO3 to still not support Python 3.14?
- Is it jellyfish declaring dependencies in such a way that a not completely up to date version of PyO3 is used for the build?
This would be useful to know.
Steps to Reproduce
- mkdir TEST
- cd TEST
- uv init -p 3.14
- uv add spyder
Backtrace
Not really a backtrace, but possibly a useful log
Failed to build `jellyfish==1.2.0`
├─▶ The build backend returned an error
╰─▶ Call to `maturin.build_wheel` failed (exit status: 1)
[stdout]
Running `maturin pep517 build-wheel -i /home/callegar/.cache/uv/builds-v0/.tmp6wvEH9/bin/python --compatibility off`
cargo 1.90.0 (840b83a10 2025-07-30)
Rust not found, installing into a temporary directory
[stderr]
Python reports SOABI: cpython-314-x86_64-linux-gnu
Computed rustc target triple: x86_64-unknown-linux-gnu
Installation directory: /home/callegar/.cache/puccinialin
Rustup already downloaded
Installing rust to /home/callegar/.cache/puccinialin/rustup
warn: It looks like you have an existing rustup settings file at:
warn: /home/callegar/.rustup/settings.toml
warn: Rustup will install the default toolchain as specified in the settings file,
warn: instead of the one inferred from the default host triple.
info: profile set to 'minimal'
info: default host triple is x86_64-unknown-linux-gnu
warn: Updating existing toolchain, profile choice will be ignored
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'
Checking if cargo is installed
📦 Including license file `LICENSE`
🍹 Building a mixed python/rust project
🔗 Found pyo3 bindings
🐍 Found CPython 3.14 at /home/callegar/.cache/uv/builds-v0/.tmp6wvEH9/bin/python
📡 Using build options features from pyproject.toml
Compiling pyo3-build-config v0.24.0
Compiling pyo3-ffi v0.24.0
Compiling pyo3-macros-backend v0.24.0
Compiling pyo3 v0.24.0
error: failed to run custom build command for `pyo3-ffi v0.24.0`
Caused by:
process didn't exit successfully: `/home/callegar/.cache/uv/sdists-v9/pypi/jellyfish/1.2.0/JvaEWZSRN1nPpzVm0ZvYv/src/target/release/build/pyo3-ffi-138abd82707af033/build-script-build` (exit status: 1)
--- stdout
cargo:rustc-check-cfg=cfg(Py_LIMITED_API)
cargo:rustc-check-cfg=cfg(Py_GIL_DISABLED)
cargo:rustc-check-cfg=cfg(PyPy)
cargo:rustc-check-cfg=cfg(GraalPy)
cargo:rustc-check-cfg=cfg(py_sys_config, values("Py_DEBUG", "Py_REF_DEBUG", "Py_TRACE_REFS", "COUNT_ALLOCS"))
cargo:rustc-check-cfg=cfg(invalid_from_utf8_lint)
cargo:rustc-check-cfg=cfg(pyo3_disable_reference_pool)
cargo:rustc-check-cfg=cfg(pyo3_leak_on_drop_without_reference_pool)
cargo:rustc-check-cfg=cfg(diagnostic_namespace)
cargo:rustc-check-cfg=cfg(c_str_lit)
cargo:rustc-check-cfg=cfg(rustc_has_once_lock)
cargo:rustc-check-cfg=cfg(rustc_has_extern_c_unwind)
cargo:rustc-check-cfg=cfg(io_error_more)
cargo:rustc-check-cfg=cfg(fn_ptr_eq)
cargo:rustc-check-cfg=cfg(Py_3_7)
cargo:rustc-check-cfg=cfg(Py_3_8)
cargo:rustc-check-cfg=cfg(Py_3_9)
cargo:rustc-check-cfg=cfg(Py_3_10)
cargo:rustc-check-cfg=cfg(Py_3_11)
cargo:rustc-check-cfg=cfg(Py_3_12)
cargo:rustc-check-cfg=cfg(Py_3_13)
cargo:rustc-check-cfg=cfg(Py_3_14)
cargo:rerun-if-env-changed=PYO3_CROSS
cargo:rerun-if-env-changed=PYO3_CROSS_LIB_DIR
cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_VERSION
cargo:rerun-if-env-changed=PYO3_CROSS_PYTHON_IMPLEMENTATION
cargo:rerun-if-env-changed=PYO3_PRINT_CONFIG
cargo:rerun-if-env-changed=PYO3_USE_ABI3_FORWARD_COMPATIBILITY
--- stderr
error: the configured Python interpreter version (3.14) is newer than PyO3's maximum supported version (3.13)
= help: please check if an updated version of PyO3 is available. Current version: 0.24.0
= help: set PYO3_USE_ABI3_FORWARD_COMPATIBILITY=1 to suppress this check and build anyway using the stable ABI
warning: build failed, waiting for other jobs to finish...
💥 maturin failed
Caused by: Failed to build a native library through cargo
Caused by: Cargo build finished with "exit status: 101": `env -u CARGO PYO3_BUILD_EXTENSION_MODULE="1" PYO3_ENVIRONMENT_SIGNATURE="cpython-3.14-64bit"
PYO3_PYTHON="/home/callegar/.cache/uv/builds-v0/.tmp6wvEH9/bin/python" PYTHON_SYS_EXECUTABLE="/home/callegar/.cache/uv/builds-v0/.tmp6wvEH9/bin/python" "cargo" "rustc" "--features"
"pyo3/extension-module" "--features" "python" "--message-format" "json-render-diagnostics" "--manifest-path" "/home/callegar/.cache/uv/sdists-v9/pypi/jellyfish/1.2.0/JvaEWZSRN1nPpzVm0ZvYv/src/Cargo.toml"
"--release" "--lib"`
Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/home/callegar/.cache/uv/builds-v0/.tmp6wvEH9/bin/python', '--compatibility', 'off'] returned non-zero exit status 1
hint: This usually indicates a problem with the package or the build environment.
help: If you want to add the package regardless of the failed resolution, provide the `--frozen` flag to skip locking and syncing.
Your operating system and version
Linux/Manjaro
Your Python version (python --version
)
Python 3.14.0
Your Rust version (rustc --version
)
The one that gets automatically installed by maturin
Your PyO3 version
0.24.0
How did you install python? Did you use a virtualenv?
uv
Additional Info
No response