Skip to content

Cannot run on Python 3.14 because cargo is oudated!? #1786

@hmpf

Description

@hmpf

If you have a version of cargo (rust package manager) locally that some dependency of argus doesn't like, you may get:

Preparing metadata (pyproject.toml) ... error

  error: subprocess-exited-with-error
  
  × Preparing metadata (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [10 lines of output]
      error: failed to parse lock file at: /tmp/pip-install-4pnjjimz/rpds-py_f9148f64ac0f4f339de1d5fa79acc01c/Cargo.lock
      
      Caused by:
        lock file version `4` was found, but this version of Cargo does not understand this lock file, perhaps Cargo needs to be updated?
      💥 maturin failed
        Caused by: Cargo metadata failed. Does your crate compile with `cargo build`?
        Caused by: `cargo metadata` exited with an error:
      Error running maturin: Command '['maturin', 'pep517', 'write-dist-info', '--metadata-directory', '/tmp/pip-modern-metadata-xhk0hmfh', '--interpreter', '/../Argus/.tox/py314-django52/bin/python']' returned non-zero exit status 1.
      Checking for Rust toolchain....
      Running `maturin pep517 write-dist-info --metadata-directory /tmp/pip-modern-metadata-xhk0hmfh --interpreter /../Argus/.tox/py314-django52/bin/python`
      [end of output]

Removing local cargo you may get:

Failed to build pydantic-core
…
      Checking if cargo is installed
      cargo 1.93.1 (083ac5135 2025-12-15)
      📦 Including license file `LICENSE`
      🍹 Building a mixed python/rust project
      🔗 Found pyo3 bindings
      🐍 Found CPython 3.14 at /../Argus/.tox/py314-django52/bin/python
      📡 Using build options features, bindings from pyproject.toml
…
         Compiling pydantic-core v2.33.2 (/tmp/pip-install-kya4gwz6/pydantic-core_d88eac0a65ef49c39e451285a956b483)
      error: failed to run custom build command for `pyo3-ffi v0.24.1`
      
      Caused by:
        process didn't exit successfully: `/tmp/pip-install-kya4gwz6/pydantic-core_d88eac0a65ef49c39e451285a956b483/target/release/build/pyo3-ffi-5b9f6eb12e1a3d87/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...
      💥 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="/../Argus/.tox/py314-django52/bin/python" PYTHON_SYS_EXECUTABLE="/../Argus/.tox/py314-django52/bin/python" "cargo" "rustc" "--profile" "release" "--features" "pyo3/extension-module" "--message-format" "json-render-diagnostics" "--manifest-path" "/tmp/pip-install-kya4gwz6/pydantic-core_d88eac0a65ef49c39e451285a956b483/Cargo.toml" "--lib" "--crate-type" "cdylib"`
      Rust not found, installing into a temporary directory
      Error: command ['maturin', 'pep517', 'build-wheel', '-i', '/../Argus/.tox/py314-django52/bin/python', '--compatibility', 'off'] returned non-zero exit status 1
      [end of output]

It's a known problem:

Metadata

Metadata

Assignees

No one assigned

    Labels

    pythonPull requests that update Python code

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions