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( name: PackageName(
"foo", "foo",
), ),
version: Version { version: "1.2.3",
epoch: 0,
release: [
1,
2,
3,
],
pre: None,
post: None,
dev: None,
local: None,
},
python_tag: [ python_tag: [
"python", "python",
], ],

View file

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

View file

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

View file

@ -11,7 +11,7 @@ use serde::{de, Deserialize, Deserializer, Serialize, Serializer};
use std::cmp::{max, Ordering}; use std::cmp::{max, Ordering};
#[cfg(feature = "pyo3")] #[cfg(feature = "pyo3")]
use std::collections::hash_map::DefaultHasher; use std::collections::hash_map::DefaultHasher;
use std::fmt::{Display, Formatter}; use std::fmt::{Debug, Display, Formatter};
use std::hash::{Hash, Hasher}; use std::hash::{Hash, Hasher};
use std::iter; use std::iter;
use std::str::FromStr; use std::str::FromStr;
@ -259,7 +259,7 @@ impl FromStr for LocalSegment {
/// ///
/// let version = Version::from_str("1.19").unwrap(); /// let version = Version::from_str("1.19").unwrap();
/// ``` /// ```
#[derive(Debug, Clone)] #[derive(Clone)]
pub struct Version { pub struct Version {
/// The [versioning epoch](https://peps.python.org/pep-0440/#version-epochs). Normally just 0, /// 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. /// 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 /// Compare the release parts of two versions, e.g. `4.3.1` > `4.2`, `1.1.0` == `1.1` and
/// `1.16` < `1.19` /// `1.16` < `1.19`
pub(crate) fn compare_release(this: &[u64], other: &[u64]) -> Ordering { 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; use once_cell::sync::Lazy;
/// A PubGrub-compatible wrapper around a PEP 440 version. /// 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); pub struct PubGrubVersion(pep440_rs::Version);
impl PubGrubVersion { 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 { impl pubgrub::version::Version for PubGrubVersion {
fn lowest() -> Self { fn lowest() -> Self {
MIN_VERSION.to_owned() MIN_VERSION.to_owned()

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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