Skip to content

Python 3.14 support #4349

@hongbo-miao

Description

@hongbo-miao

It would be great to support Python 3.14, thanks! ☺️

https://pypi.org/project/pyturso/

Right now it fails with

  × Failed to build `pyturso==0.3.2`
  ├─▶ The build backend returned an error
  ╰─▶ Call to `maturin.build_wheel` failed (exit status: 1)

      [stdout]
      Running `maturin pep517 build-wheel -i
      /Users/hongbo-miao/.cache/uv/builds-v0/.tmpSpRVEO/bin/python
      --compatibility off`

      [stderr]
      🍹 Building a mixed python/rust project
      🔗 Found pyo3 bindings
      🐍 Found CPython 3.14 at
      /Users/hongbo-miao/.cache/uv/builds-v0/.tmpSpRVEO/bin/python
      📡 Using build options features, bindings from pyproject.toml
      💻 Using `MACOSX_DEPLOYMENT_TARGET=11.0` for aarch64-apple-darwin by
      default
      warning: profile package spec `similar` in profile `dev` did not match
      any packages
         Compiling pyo3-build-config v0.24.1
         Compiling icu_locid v1.5.0
         Compiling chrono v0.4.42
         Compiling rand v0.9.2
         Compiling rustix v1.0.7
         Compiling ctr v0.9.2
         Compiling aes v0.8.4
         Compiling aead v0.5.2
         Compiling sha1_smol v1.0.1
         Compiling byteorder v1.5.0
         Compiling fastrand v2.3.0
         Compiling uuid v1.17.0
         Compiling turso_parser v0.3.2
      (/Users/hongbo-miao/.cache/uv/sdists-v9/pypi/pyturso/0.3.2/8C9biKfdGFhPpCT403Daf/src/parser)
         Compiling roaring v0.11.2
         Compiling aes-gcm v0.10.3
         Compiling polling v3.7.4
         Compiling aegis v0.9.0
         Compiling icu_provider v1.5.0
         Compiling twox-hash v2.1.1
         Compiling crossbeam-skiplist v0.1.3
         Compiling simsimd v6.5.3
         Compiling libm v0.2.11
         Compiling parking_lot v0.12.4
         Compiling turso_ext v0.3.2
      (/Users/hongbo-miao/.cache/uv/sdists-v9/pypi/pyturso/0.3.2/8C9biKfdGFhPpCT403Daf/src/extensions/core)
         Compiling pyo3-macros-backend v0.24.1
         Compiling pyo3-ffi v0.24.1
         Compiling icu_locid_transform v1.5.0
         Compiling pyo3 v0.24.1
         Compiling py-turso v0.3.2
      (/Users/hongbo-miao/.cache/uv/sdists-v9/pypi/pyturso/0.3.2/8C9biKfdGFhPpCT403Daf/src/bindings/python)
         Compiling uncased v0.9.10
         Compiling regex v1.11.1
         Compiling paste v1.0.15
         Compiling anyhow v1.0.98
      warning: value assigned to `parsed_offset` is never read
        --> parser/src/error.rs:97:9
         |
      97 |         parsed_offset: miette::SourceSpan,
         |         ^^^^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?
         = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on
      by default

      warning: value assigned to `got` is never read
        --> parser/src/error.rs:99:9
         |
      99 |         got: TokenType,
         |         ^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `expected` is never read
         --> parser/src/error.rs:100:9
          |
      100 |         expected: &'static [TokenType],
          |         ^^^^^^^^
          |
          = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
         --> parser/src/error.rs:102:9
          |
      102 |         offset: usize,
          |         ^^^^^^
          |
          = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:13:9
         |
      13 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:14:9
         |
      14 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:21:9
         |
      21 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:22:9
         |
      22 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:29:9
         |
      29 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:30:9
         |
      30 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:37:9
         |
      37 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:38:9
         |
      38 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:45:9
         |
      45 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:46:9
         |
      46 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:53:9
         |
      53 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:54:9
         |
      54 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:61:9
         |
      61 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:62:9
         |
      62 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:69:9
         |
      69 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:70:9
         |
      70 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:77:9
         |
      77 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:78:9
         |
      78 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
        --> parser/src/error.rs:85:9
         |
      85 |         token_text: String,
         |         ^^^^^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `offset` is never read
        --> parser/src/error.rs:86:9
         |
      86 |         offset: usize,
         |         ^^^^^^
         |
         = help: maybe it is overwritten before being read?

      warning: value assigned to `token_text` is never read
         --> parser/src/error.rs:101:9
          |
      101 |         token_text: String,
          |         ^^^^^^^^^^
          |
          = help: maybe it is overwritten before being read?

      warning: value assigned to `expected_display` is never read
         --> parser/src/error.rs:103:9
          |
      103 |         expected_display: String,
          |         ^^^^^^^^^^^^^^^^
          |
          = help: maybe it is overwritten before being read?

      error: failed to run custom build command for `pyo3-ffi v0.24.1`

      Caused by:
        process didn't exit successfully:
      `/Users/hongbo-miao/.cache/uv/sdists-v9/pypi/pyturso/0.3.2/8C9biKfdGFhPpCT403Daf/src/target/release/build/pyo3-ffi-98a80ee7462595ba/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(pyo3_disable_reference_pool)
        cargo:rustc-check-cfg=cfg(pyo3_leak_on_drop_without_reference_pool)
        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.1
        = 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...
      warning: `turso_parser` (lib) generated 26 warnings
      💥 maturin failed
        Caused by: Failed to build a native library through cargo
        Caused by: Cargo build finished with "exit status: 101": `env -u
      CARGO MACOSX_DEPLOYMENT_TARGET="11.0" PYO3_BUILD_EXTENSION_MODULE="1"
      PYO3_ENVIRONMENT_SIGNATURE="cpython-3.14-64bit"
      PYO3_PYTHON="/Users/hongbo-miao/.cache/uv/builds-v0/.tmpSpRVEO/bin/python"
      PYTHON_SYS_EXECUTABLE="/Users/hongbo-miao/.cache/uv/builds-v0/.tmpSpRVEO/bin/python"
      "cargo" "rustc" "--profile" "release" "--features" "pyo3/extension-module"
      "--message-format" "json-render-diagnostics" "--manifest-path"
      "/Users/hongbo-miao/.cache/uv/sdists-v9/pypi/pyturso/0.3.2/8C9biKfdGFhPpCT403Daf/src/bindings/python/Cargo.toml"
      "--lib" "--" "-C" "link-arg=-undefined" "-C" "link-arg=dynamic_lookup" "-C"
      "link-args=-Wl,-install_name,@rpath/turso._turso.cpython-314-darwin.so"`
      Error: command ['maturin', 'pep517', 'build-wheel', '-i',
      '/Users/hongbo-miao/.cache/uv/builds-v0/.tmpSpRVEO/bin/python',
      '--compatibility', 'off'] returned non-zero exit status 1

      hint: This usually indicates a problem with the package or the build
      environment.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions