Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Appendix C: Dependency Managers

Batuta detects dependencies in source projects by analyzing manifest and lock files from multiple package managers, then maps them to Rust crate equivalents.

Supported Managers

ManagerLanguageManifest FileLock File
pipPythonrequirements.txt, pyproject.tomlrequirements.txt
poetryPythonpyproject.tomlpoetry.lock
npmJavaScriptpackage.jsonpackage-lock.json
makeC/C++MakefileN/A
cmakeC/C++CMakeLists.txtN/A

Detection and Cargo.toml Generation

batuta analyze --dependencies /path/to/project

Batuta generates a Cargo.toml from detected dependencies:

[dependencies]
trueno = "0.14"           # from: numpy >= 1.24.0
aprender = "0.24"         # from: scikit-learn ~= 1.3
realizar = "0.5"          # from: torch >= 2.0
reqwest = "0.12"          # from: requests >= 2.28
serde = { version = "1", features = ["derive"] }  # from: json (stdlib)

Version Constraint Mapping

Python SyntaxMeaningRust Equivalent
== 1.2.3Exact= "1.2.3"
>= 1.2.0Minimum">= 1.2.0"
~= 1.2Compatible (>= 1.2, < 2.0)"1.2"

Common Python-to-Rust Mappings

PythonRust CrateNotes
numpytruenoStack native
scikit-learnaprenderStack native
torchrealizarInference only
pandaspolars / alimentaralimentar for Arrow
requestsreqwestAsync HTTP
flask / fastapiaxumAsync web framework
clickclapCLI argument parsing
pydanticserdeSerialization
pytest(built-in)#[test] + proptest
loggingtracingStructured logging

Custom Mappings

Override or extend defaults in batuta.toml:

[dependencies.mapping]
my_internal_lib = { crate = "my-rust-lib", version = "0.5" }
boto3 = { crate = "aws-sdk-s3", version = "1", features = ["behavior-version-latest"] }
setuptools = { ignore = true }

Navigate: Table of Contents