Remove serde::Serialize implementations for rkyv-able structs (#7663)

## Summary

Random, but I noticed that we can remove a ton of serialize and
deserialize derives by using `rkyv` for the flat-index caches. (We
already use `rkyv` for these same structs in the registry cache.)
This commit is contained in:
Charlie Marsh 2024-09-24 13:23:47 -04:00 committed by GitHub
parent c4c5378c0b
commit 538b0f1099
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 31 additions and 32 deletions

View file

@ -11,7 +11,7 @@ use uv_cache::{Cache, CacheBucket};
use crate::cached_client::{CacheControl, CachedClientError};
use crate::html::SimpleHtml;
use crate::{Connectivity, Error, ErrorKind, RegistryClient};
use crate::{Connectivity, Error, ErrorKind, OwnedArchive, RegistryClient};
#[derive(Debug, thiserror::Error)]
pub enum FlatIndexError {
@ -170,7 +170,7 @@ impl<'a> FlatIndexClient<'a> {
let SimpleHtml { base, files } = SimpleHtml::parse(&text, &url)
.map_err(|err| Error::from_html_err(err, url.clone()))?;
let files: Vec<File> = files
let unarchived: Vec<File> = files
.into_iter()
.filter_map(|file| {
match File::try_from(file, base.as_url()) {
@ -183,7 +183,7 @@ impl<'a> FlatIndexClient<'a> {
}
})
.collect();
Ok::<Vec<File>, CachedClientError<Error>>(files)
OwnedArchive::from_unarchived(&unarchived)
}
.boxed_local()
.instrument(info_span!("parse_flat_index_html", url = % url))
@ -191,7 +191,7 @@ impl<'a> FlatIndexClient<'a> {
let response = self
.client
.cached_client()
.get_serde(
.get_cacheable(
flat_index_request,
&cache_entry,
cache_control,
@ -201,7 +201,11 @@ impl<'a> FlatIndexClient<'a> {
match response {
Ok(files) => {
let files = files
.into_iter()
.iter()
.map(|file| {
rkyv::deserialize::<File, rkyv::rancor::Error>(file)
.expect("archived version always deserializes")
})
.filter_map(|file| {
Some((
DistFilename::try_from_normalized_filename(&file.filename)?,

View file

@ -8,7 +8,6 @@ use futures::{FutureExt, TryStreamExt};
use http::HeaderMap;
use reqwest::{Client, Response, StatusCode};
use reqwest_middleware::ClientWithMiddleware;
use serde::{Deserialize, Serialize};
use tracing::{info_span, instrument, trace, warn, Instrument};
use url::Url;
@ -723,9 +722,7 @@ impl RegistryClient {
}
}
#[derive(
Default, Debug, Serialize, Deserialize, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize,
)]
#[derive(Default, Debug, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[rkyv(derive(Debug))]
pub struct VersionFiles {
pub wheels: Vec<VersionWheel>,
@ -756,27 +753,25 @@ impl VersionFiles {
}
}
#[derive(Debug, Serialize, Deserialize, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[derive(Debug, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[rkyv(derive(Debug))]
pub struct VersionWheel {
pub name: WheelFilename,
pub file: File,
}
#[derive(Debug, Serialize, Deserialize, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[derive(Debug, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[rkyv(derive(Debug))]
pub struct VersionSourceDist {
pub name: SourceDistFilename,
pub file: File,
}
#[derive(
Default, Debug, Serialize, Deserialize, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize,
)]
#[derive(Default, Debug, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[rkyv(derive(Debug))]
pub struct SimpleMetadata(Vec<SimpleMetadatum>);
#[derive(Debug, Serialize, Deserialize, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[derive(Debug, rkyv::Archive, rkyv::Deserialize, rkyv::Serialize)]
#[rkyv(derive(Debug))]
pub struct SimpleMetadatum {
pub version: Version,