mirror of
https://github.com/astral-sh/uv.git
synced 2025-10-27 18:36:44 +00:00
Remove serialize traits from verbatim URL (#5501)
This commit is contained in:
parent
4f3dde34dc
commit
8f16f1b746
3 changed files with 2 additions and 38 deletions
|
|
@ -197,7 +197,7 @@ impl<T: Pep508Url + Display> Display for Requirement<T> {
|
|||
}
|
||||
|
||||
/// <https://github.com/serde-rs/serde/issues/908#issuecomment-298027413>
|
||||
impl<'de, T: Pep508Url + Deserialize<'de>> Deserialize<'de> for Requirement<T> {
|
||||
impl<'de, T: Pep508Url> Deserialize<'de> for Requirement<T> {
|
||||
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
|
||||
where
|
||||
D: Deserializer<'de>,
|
||||
|
|
|
|||
|
|
@ -13,14 +13,10 @@ use uv_fs::{normalize_absolute_path, normalize_url_path};
|
|||
use crate::Pep508Url;
|
||||
|
||||
/// A wrapper around [`Url`] that preserves the original string.
|
||||
#[derive(Debug, Clone, Eq, derivative::Derivative, serde::Deserialize, serde::Serialize)]
|
||||
#[derive(Debug, Clone, Eq, derivative::Derivative)]
|
||||
#[derivative(PartialEq, Hash, Ord)]
|
||||
pub struct VerbatimUrl {
|
||||
/// The parsed URL.
|
||||
#[serde(
|
||||
serialize_with = "Url::serialize_internal",
|
||||
deserialize_with = "Url::deserialize_internal"
|
||||
)]
|
||||
url: Url,
|
||||
/// The URL as it was provided by the user.
|
||||
#[derivative(PartialEq = "ignore")]
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
use std::fmt::{Display, Formatter};
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
use thiserror::Error;
|
||||
use url::{ParseError, Url};
|
||||
|
||||
|
|
@ -138,37 +137,6 @@ impl Display for VerbatimParsedUrl {
|
|||
}
|
||||
}
|
||||
|
||||
impl TryFrom<VerbatimUrl> for VerbatimParsedUrl {
|
||||
type Error = ParsedUrlError;
|
||||
|
||||
fn try_from(verbatim_url: VerbatimUrl) -> Result<Self, Self::Error> {
|
||||
let parsed_url = ParsedUrl::try_from(verbatim_url.to_url())?;
|
||||
Ok(Self {
|
||||
parsed_url,
|
||||
verbatim: verbatim_url,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl serde::ser::Serialize for VerbatimParsedUrl {
|
||||
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
|
||||
where
|
||||
S: serde::ser::Serializer,
|
||||
{
|
||||
self.verbatim.serialize(serializer)
|
||||
}
|
||||
}
|
||||
|
||||
impl<'de> serde::de::Deserialize<'de> for VerbatimParsedUrl {
|
||||
fn deserialize<D>(deserializer: D) -> Result<VerbatimParsedUrl, D::Error>
|
||||
where
|
||||
D: serde::de::Deserializer<'de>,
|
||||
{
|
||||
let verbatim_url = VerbatimUrl::deserialize(deserializer)?;
|
||||
Self::try_from(verbatim_url).map_err(serde::de::Error::custom)
|
||||
}
|
||||
}
|
||||
|
||||
/// We support three types of URLs for distributions:
|
||||
/// * The path to a file or directory (`file://`)
|
||||
/// * A Git repository (`git+https://` or `git+ssh://`), optionally with a subdirectory and/or
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue