From b3f98d5e05e8160255ec2a75fb2af8bbcd348e72 Mon Sep 17 00:00:00 2001 From: Charlie Marsh Date: Tue, 16 Apr 2024 21:13:39 -0400 Subject: [PATCH] Use kebab-case for serde enums (#3080) By default, these serialize as (e.g.) `LowestDirect`. This now matches the format we use in Ruff. --- crates/install-wheel-rs/src/linker.rs | 1 + crates/uv-configuration/src/authentication.rs | 4 ++++ crates/uv-configuration/src/build_options.rs | 4 ++++ crates/uv-resolver/src/prerelease_mode.rs | 4 ++++ crates/uv-resolver/src/resolution.rs | 4 ++++ crates/uv-resolver/src/resolution_mode.rs | 4 ++++ 6 files changed, 21 insertions(+) diff --git a/crates/install-wheel-rs/src/linker.rs b/crates/install-wheel-rs/src/linker.rs index 6c6682fb0..0c456d489 100644 --- a/crates/install-wheel-rs/src/linker.rs +++ b/crates/install-wheel-rs/src/linker.rs @@ -203,6 +203,7 @@ fn parse_scripts( } #[derive(Debug, Clone, Copy, Serialize, Deserialize)] +#[serde(deny_unknown_fields, rename_all = "kebab-case")] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] pub enum LinkMode { /// Clone (i.e., copy-on-write) packages from the wheel into the site packages. diff --git a/crates/uv-configuration/src/authentication.rs b/crates/uv-configuration/src/authentication.rs index 2832aaee8..cf907abc7 100644 --- a/crates/uv-configuration/src/authentication.rs +++ b/crates/uv-configuration/src/authentication.rs @@ -4,6 +4,10 @@ use uv_auth::{self, KeyringProvider}; #[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] +#[cfg_attr( + feature = "serde", + serde(deny_unknown_fields, rename_all = "kebab-case") +)] pub enum KeyringProviderType { /// Do not use keyring for credential lookup. #[default] diff --git a/crates/uv-configuration/src/build_options.rs b/crates/uv-configuration/src/build_options.rs index 01710dd43..371123ff5 100644 --- a/crates/uv-configuration/src/build_options.rs +++ b/crates/uv-configuration/src/build_options.rs @@ -199,6 +199,10 @@ impl NoBuild { #[derive(Debug, Default, Clone, Hash, Eq, PartialEq)] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] +#[cfg_attr( + feature = "serde", + serde(deny_unknown_fields, rename_all = "kebab-case") +)] pub enum IndexStrategy { /// Only use results from the first index that returns a match for a given package name. /// diff --git a/crates/uv-resolver/src/prerelease_mode.rs b/crates/uv-resolver/src/prerelease_mode.rs index db79e7c0d..9d887a37a 100644 --- a/crates/uv-resolver/src/prerelease_mode.rs +++ b/crates/uv-resolver/src/prerelease_mode.rs @@ -8,6 +8,10 @@ use crate::Manifest; #[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] +#[cfg_attr( + feature = "serde", + serde(deny_unknown_fields, rename_all = "kebab-case") +)] pub enum PreReleaseMode { /// Disallow all pre-release versions. Disallow, diff --git a/crates/uv-resolver/src/resolution.rs b/crates/uv-resolver/src/resolution.rs index 8446bd82c..86980cf67 100644 --- a/crates/uv-resolver/src/resolution.rs +++ b/crates/uv-resolver/src/resolution.rs @@ -36,6 +36,10 @@ use crate::{Manifest, ResolveError}; #[derive(Debug, Default, Copy, Clone, PartialEq)] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] +#[cfg_attr( + feature = "serde", + serde(deny_unknown_fields, rename_all = "kebab-case") +)] pub enum AnnotationStyle { /// Render the annotations on a single, comma-separated line. Line, diff --git a/crates/uv-resolver/src/resolution_mode.rs b/crates/uv-resolver/src/resolution_mode.rs index 7183cd4b3..f18331b00 100644 --- a/crates/uv-resolver/src/resolution_mode.rs +++ b/crates/uv-resolver/src/resolution_mode.rs @@ -8,6 +8,10 @@ use crate::Manifest; #[derive(Debug, Default, Clone, Copy, PartialEq, Eq)] #[cfg_attr(feature = "clap", derive(clap::ValueEnum))] #[cfg_attr(feature = "serde", derive(serde::Deserialize))] +#[cfg_attr( + feature = "serde", + serde(deny_unknown_fields, rename_all = "kebab-case") +)] pub enum ResolutionMode { /// Resolve the highest compatible version of each package. #[default]