PEP440 in rust

Crates.io PyPI

A library for python version numbers and specifiers, implementing PEP 440. See Reimplementing PEP 440 for some background.

Higher level bindings to the requirements syntax are available in pep508_rs.

```rust use std::str::FromStr; use pep440rs::{parseversion_specifiers, Version, VersionSpecifier};

let version = Version::fromstr("1.19").unwrap(); let versionspecifier = VersionSpecifier::fromstr("==1.*").unwrap(); assert!(versionspecifier.contains(&version)); let versionspecifiers = parseversionspecifiers(">=1.16, <2.0").unwrap(); assert!(versionspecifiers.iter().all(|specifier| specifier.contains(&version))); ```

In python (pip install pep440_rs):

```python from pep440_rs import Version, VersionSpecifier

assert Version("1.1a1").anyprerelease() assert Version("1.1.dev2").anyprerelease() assert not Version("1.1").any_prerelease() assert VersionSpecifier(">=1.0").contains(Version("1.1a1")) assert not VersionSpecifier(">=1.1").contains(Version("1.1a1"))

Note that python comparisons are the version ordering, not the version specifiers operators

assert Version("1.1") >= Version("1.1a1") assert Version("2.0") in VersionSpecifier("==2") ```

PEP 440 has a lot of unintuitive features, including: