deps-pypi

Crates.iodeps-pypi
lib.rsdeps-pypi
version0.5.4
created_at2025-12-22 16:25:42.262549+00
updated_at2026-01-15 17:17:50.698+00
descriptionPyPI/Python support for deps-lsp
homepage
repositoryhttps://github.com/bug-ops/deps-lsp
max_upload_size
id1999983
size230,231
Andrei G (bug-ops)

documentation

README

deps-pypi

Crates.io docs.rs codecov License: MIT

PyPI/Python support for deps-lsp.

This crate provides parsing and registry integration for Python's PyPI ecosystem.

Features

  • PEP 621 Support — Parse [project.dependencies] and [project.optional-dependencies]
  • PEP 735 Support — Parse [dependency-groups] (new standard)
  • Poetry Support — Parse [tool.poetry.dependencies] and groups
  • Lock File Parsing — Extract resolved versions from poetry.lock and uv.lock
  • PEP 508 Parsing — Handle complex dependency specifications with extras and markers
  • PEP 440 Versions — Validate and compare Python version specifiers
  • PyPI API Client — Fetch package metadata from PyPI JSON API
  • EcosystemHandler — Implements deps_core::EcosystemHandler trait

Usage

[dependencies]
deps-pypi = "0.5"
use deps_pypi::{parse_pyproject_toml, PyPiRegistry};

let dependencies = parse_pyproject_toml(content)?;
let registry = PyPiRegistry::new(cache);
let versions = registry.get_versions("requests").await?;

Supported Formats

PEP 621 (Standard)

[project]
dependencies = [
    "requests>=2.28.0,<3.0",
    "flask[async]>=3.0",
]

[project.optional-dependencies]
dev = ["pytest>=7.0", "mypy>=1.0"]

PEP 735 (Dependency Groups)

[dependency-groups]
test = ["pytest>=7.0", "coverage"]
dev = [{include-group = "test"}, "mypy>=1.0"]

Poetry

[tool.poetry.dependencies]
python = "^3.9"
requests = "^2.28.0"

[tool.poetry.group.dev.dependencies]
pytest = "^7.0"

Benchmarks

cargo bench -p deps-pypi

Parsing performance: ~5μs for PEP 621, ~8μs for Poetry format.

License

MIT

Commit count: 63

cargo fmt