Impl Version debug as display (#606)

Currently, `dbg!` is hard to read because versions are verbose, showing
all optional fields, and we have a lot of versions. Changing debug
formatting to displaying the version number (which can be losslessly
converted to the struct and back) makes this more readable.

See e.g.
https://gist.github.com/konstin/38c0f32b109dffa73b3aa0ab86b9662b

**Before**

```text
version: Version {
    epoch: 0,
    release: [
        1,
        2,
        3,
    ],
    pre: None,
    post: None,
    dev: None,
    local: None,
},
```

**After**

```text
version: "1.2.3",
```
This commit is contained in:
konsti 2023-12-11 16:38:14 +01:00 committed by GitHub
parent 00f1703111
commit b84fbb86b2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 64 additions and 571 deletions

View file

@ -7,18 +7,7 @@ Ok(
name: PackageName(
"foo",
),
version: Version {
epoch: 0,
release: [
1,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.2.3",
python_tag: [
"python",
],

View file

@ -7,18 +7,7 @@ Ok(
name: PackageName(
"foo",
),
version: Version {
epoch: 0,
release: [
1,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.2.3",
python_tag: [
"ab",
"cd",

View file

@ -7,18 +7,7 @@ Ok(
name: PackageName(
"foo",
),
version: Version {
epoch: 0,
release: [
1,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.2.3",
python_tag: [
"foo",
],

View file

@ -11,7 +11,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
use std::cmp::{max, Ordering};
#[cfg(feature = "pyo3")]
use std::collections::hash_map::DefaultHasher;
use std::fmt::{Display, Formatter};
use std::fmt::{Debug, Display, Formatter};
use std::hash::{Hash, Hasher};
use std::iter;
use std::str::FromStr;
@ -259,7 +259,7 @@ impl FromStr for LocalSegment {
///
/// let version = Version::from_str("1.19").unwrap();
/// ```
#[derive(Debug, Clone)]
#[derive(Clone)]
pub struct Version {
/// The [versioning epoch](https://peps.python.org/pep-0440/#version-epochs). Normally just 0,
/// but you can increment it if you switched the versioning scheme.
@ -533,6 +533,12 @@ impl Display for Version {
}
}
impl Debug for Version {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
write!(f, "\"{}\"", self)
}
}
/// Compare the release parts of two versions, e.g. `4.3.1` > `4.2`, `1.1.0` == `1.1` and
/// `1.16` < `1.19`
pub(crate) fn compare_release(this: &[u64], other: &[u64]) -> Ordering {

View file

@ -3,7 +3,7 @@ use std::str::FromStr;
use once_cell::sync::Lazy;
/// A PubGrub-compatible wrapper around a PEP 440 version.
#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct PubGrubVersion(pep440_rs::Version);
impl PubGrubVersion {
@ -32,6 +32,12 @@ impl std::fmt::Display for PubGrubVersion {
}
}
impl std::fmt::Debug for PubGrubVersion {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
}
}
impl pubgrub::version::Version for PubGrubVersion {
fn lowest() -> Self {
MIN_VERSION.to_owned()

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
24,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.24.2",
},
],
),
@ -50,18 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
0,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.0.0",
},
],
),
@ -84,18 +62,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
8,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.8.2",
},
],
),
@ -118,17 +85,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),
@ -151,18 +108,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
16,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.16.0",
},
],
),
@ -185,17 +131,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,17 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: LessThan,
version: Version {
epoch: 0,
release: [
2,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.2",
},
],
),
@ -50,18 +40,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
1,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.1.15",
},
],
),
@ -80,17 +59,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
1,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.1.15",
},
],
),
@ -50,17 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
0,
5,
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "0.5.1",
},
],
),
@ -50,17 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
0,
4,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "0.4",
},
],
),
@ -101,29 +80,11 @@ RequirementsTxt {
[
VersionSpecifier {
operator: GreaterThanEqual,
version: Version {
epoch: 0,
release: [
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1",
},
VersionSpecifier {
operator: LessThan,
version: Version {
epoch: 0,
release: [
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2",
},
],
),

View file

@ -28,18 +28,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
24,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.24.2",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.2.3",
},
],
),
@ -79,18 +68,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
26,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.26.15",
},
],
),
@ -142,18 +120,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
89,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.89.0",
},
],
),
@ -216,18 +183,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
3,
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.3.1",
},
],
),
@ -280,18 +236,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
9,
5,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.9.5",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
4,
65,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "4.65.0",
},
],
),
@ -50,18 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
0,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.0.0",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
24,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.24.2",
},
],
),
@ -50,18 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
0,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.0.0",
},
],
),
@ -84,18 +62,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
8,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.8.2",
},
],
),
@ -118,17 +85,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),
@ -151,18 +108,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
16,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.16.0",
},
],
),
@ -185,17 +131,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,17 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: LessThan,
version: Version {
epoch: 0,
release: [
2,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.2",
},
],
),
@ -50,18 +40,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
1,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.1.15",
},
],
),
@ -80,17 +59,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
1,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.1.15",
},
],
),
@ -50,17 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2023,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2023.3",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
0,
5,
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "0.5.1",
},
],
),
@ -50,17 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
0,
4,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "0.4",
},
],
),
@ -101,29 +80,11 @@ RequirementsTxt {
[
VersionSpecifier {
operator: GreaterThanEqual,
version: Version {
epoch: 0,
release: [
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1",
},
VersionSpecifier {
operator: LessThan,
version: Version {
epoch: 0,
release: [
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2",
},
],
),

View file

@ -28,18 +28,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
24,
2,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.24.2",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.2.3",
},
],
),
@ -79,18 +68,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
26,
15,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.26.15",
},
],
),
@ -142,18 +120,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
89,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.89.0",
},
],
),
@ -216,18 +183,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
3,
1,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.3.1",
},
],
),
@ -280,18 +236,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
2,
9,
5,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "2.9.5",
},
],
),

View file

@ -16,18 +16,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
4,
65,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "4.65.0",
},
],
),
@ -50,18 +39,7 @@ RequirementsTxt {
[
VersionSpecifier {
operator: Equal,
version: Version {
epoch: 0,
release: [
1,
0,
0,
],
pre: None,
post: None,
dev: None,
local: None,
},
version: "1.0.0",
},
],
),