5 releases (breaking)

Uses new Rust 2024

0.5.0 Dec 30, 2025
0.4.0 Nov 20, 2023
0.3.0 Mar 11, 2023
0.2.0 Mar 4, 2023
0.1.0 Feb 18, 2023

#316 in Parser implementations

Download history 4421/week @ 2025-12-27 9167/week @ 2026-01-03 9984/week @ 2026-01-10 14970/week @ 2026-01-17 15262/week @ 2026-01-24 25143/week @ 2026-01-31 50687/week @ 2026-02-07 56356/week @ 2026-02-14 79791/week @ 2026-02-21 86580/week @ 2026-02-28 104025/week @ 2026-03-07 71888/week @ 2026-03-14 47789/week @ 2026-03-21 45767/week @ 2026-03-28 67853/week @ 2026-04-04 58150/week @ 2026-04-11

228,565 downloads per month
Used in 3 crates

MPL-2.0 license

20KB
410 lines

pep-508

Rust implementation of Python dependency parser for PEP 508

version deps license ci

Documentation

Usage

let dep = "requests[security, socks] <= 2.28.1, == 2.28.*; python_version > '3.7' and extra == 'http'";
let parsed = parse(dep).unwrap();
let expected = Dependency {
    name: "requests",
    extras: vec!["security", "socks"],
    spec: Some(Spec::Version(vec![
        VersionSpec {
            comparator: Comparator::Le,
            version: "2.28.1",
        },
        VersionSpec {
            comparator: Comparator::Eq,
            version: "2.28.*",
        },
    ])),
    marker: Some(Marker::And(
        Box::new(Marker::Operator(
            Variable::PythonVersion,
            Operator::Comparator(Comparator::Gt),
            Variable::String("3.7"),
        )),
        Box::new(Marker::Operator(
            Variable::Extra,
            Operator::Comparator(Comparator::Eq),
            Variable::String("http"),
        )),
    )),
};
assert_eq!(parsed, expected);

Changelog

See CHANGELOG.md

Dependencies

~2–12MB
~89K SLoC