From 773c92148377edeb0bae12cd572a919b2b60eced Mon Sep 17 00:00:00 2001 From: David Calavera Date: Mon, 11 Mar 2024 18:28:54 -0700 Subject: [PATCH] Stop using deprecated chrono's api. Upgrade to chrono 0.4.35 Signed-off-by: David Calavera --- Cargo.toml | 1 + lambda-events/Cargo.toml | 2 +- lambda-events/src/encodings/time.rs | 40 +++++++++++++++-------------- lambda-extension/Cargo.toml | 2 +- lambda-extension/src/logs.rs | 4 +-- lambda-extension/src/telemetry.rs | 12 ++++----- 6 files changed, 32 insertions(+), 29 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 51d57ff4..cba3ba3b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ exclude = ["examples"] [workspace.dependencies] base64 = "0.21" bytes = "1" +chrono = "0.4.35" futures = "0.3" futures-channel = "0.3" futures-util = "0.3" diff --git a/lambda-events/Cargo.toml b/lambda-events/Cargo.toml index 2144a9a9..eb5d9c31 100644 --- a/lambda-events/Cargo.toml +++ b/lambda-events/Cargo.toml @@ -18,7 +18,7 @@ edition = "2021" [dependencies] base64 = { workspace = true } bytes = { workspace = true, features = ["serde"], optional = true } -chrono = { version = "0.4.31", default-features = false, features = [ +chrono = { workspace = true, default-features = false, features = [ "clock", "serde", "std", diff --git a/lambda-events/src/encodings/time.rs b/lambda-events/src/encodings/time.rs index 203aff75..6d77b5cf 100644 --- a/lambda-events/src/encodings/time.rs +++ b/lambda-events/src/encodings/time.rs @@ -1,4 +1,4 @@ -use chrono::{DateTime, Duration, TimeZone, Utc}; +use chrono::{DateTime, TimeDelta, TimeZone, Utc}; use serde::ser::Serializer; use serde::{ de::{Deserializer, Error as DeError}, @@ -55,11 +55,11 @@ impl DerefMut for SecondTimestamp { pub struct SecondDuration( #[serde(deserialize_with = "deserialize_duration_seconds")] #[serde(serialize_with = "serialize_duration_seconds")] - pub Duration, + pub TimeDelta, ); impl Deref for SecondDuration { - type Target = Duration; + type Target = TimeDelta; fn deref(&self) -> &Self::Target { &self.0 @@ -77,11 +77,11 @@ impl DerefMut for SecondDuration { pub struct MinuteDuration( #[serde(deserialize_with = "deserialize_duration_minutes")] #[serde(serialize_with = "serialize_duration_minutes")] - pub Duration, + pub TimeDelta, ); impl Deref for MinuteDuration { - type Target = Duration; + type Target = TimeDelta; fn deref(&self) -> &Self::Target { &self.0 @@ -144,7 +144,7 @@ where .ok_or_else(|| D::Error::custom("invalid timestamp")) } -fn serialize_duration_seconds(duration: &Duration, serializer: S) -> Result +fn serialize_duration_seconds(duration: &TimeDelta, serializer: S) -> Result where S: Serializer, { @@ -153,15 +153,16 @@ where serializer.serialize_i64(seconds) } -fn deserialize_duration_seconds<'de, D>(deserializer: D) -> Result +fn deserialize_duration_seconds<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { let seconds = f64::deserialize(deserializer)?; - Ok(Duration::seconds(seconds as i64)) + TimeDelta::try_seconds(seconds as i64) + .ok_or_else(|| D::Error::custom(format!("invalid time delta seconds `{}`", seconds))) } -fn serialize_duration_minutes(duration: &Duration, serializer: S) -> Result +fn serialize_duration_minutes(duration: &TimeDelta, serializer: S) -> Result where S: Serializer, { @@ -170,12 +171,13 @@ where serializer.serialize_i64(minutes) } -fn deserialize_duration_minutes<'de, D>(deserializer: D) -> Result +fn deserialize_duration_minutes<'de, D>(deserializer: D) -> Result where D: Deserializer<'de>, { let minutes = f64::deserialize(deserializer)?; - Ok(Duration::minutes(minutes as i64)) + TimeDelta::try_minutes(minutes as i64) + .ok_or_else(|| D::Error::custom(format!("invalid time delta minutes `{}`", minutes))) } fn normalize_timestamp<'de, D>(deserializer: D) -> Result<(u64, u64), D::Error> @@ -291,10 +293,10 @@ mod test { #[derive(Deserialize)] struct Test { #[serde(deserialize_with = "deserialize_duration_seconds")] - v: Duration, + v: TimeDelta, } - let expected = Duration::seconds(36); + let expected = TimeDelta::try_seconds(36).unwrap(); let data = serde_json::json!({ "v": 36, @@ -314,10 +316,10 @@ mod test { #[derive(Serialize)] struct Test { #[serde(serialize_with = "serialize_duration_seconds")] - v: Duration, + v: TimeDelta, } let instance = Test { - v: Duration::seconds(36), + v: TimeDelta::try_seconds(36).unwrap(), }; let encoded = serde_json::to_string(&instance).unwrap(); assert_eq!(encoded, String::from(r#"{"v":36}"#)); @@ -328,10 +330,10 @@ mod test { #[derive(Deserialize)] struct Test { #[serde(deserialize_with = "deserialize_duration_minutes")] - v: Duration, + v: TimeDelta, } - let expected = Duration::minutes(36); + let expected = TimeDelta::try_minutes(36).unwrap(); let data = serde_json::json!({ "v": 36, @@ -351,10 +353,10 @@ mod test { #[derive(Serialize)] struct Test { #[serde(serialize_with = "serialize_duration_minutes")] - v: Duration, + v: TimeDelta, } let instance = Test { - v: Duration::minutes(36), + v: TimeDelta::try_minutes(36).unwrap(), }; let encoded = serde_json::to_string(&instance).unwrap(); assert_eq!(encoded, String::from(r#"{"v":36}"#)); diff --git a/lambda-extension/Cargo.toml b/lambda-extension/Cargo.toml index a7523e17..fba19357 100644 --- a/lambda-extension/Cargo.toml +++ b/lambda-extension/Cargo.toml @@ -20,7 +20,7 @@ tracing = ["lambda_runtime_api_client/tracing"] [dependencies] async-stream = "0.3" bytes = { workspace = true } -chrono = { version = "0.4", features = ["serde"] } +chrono = { workspace = true, features = ["serde"] } http = { workspace = true } http-body-util = { workspace = true } hyper = { workspace = true, features = ["http1", "client", "server"] } diff --git a/lambda-extension/src/logs.rs b/lambda-extension/src/logs.rs index 4d1948a0..c3b0cda2 100644 --- a/lambda-extension/src/logs.rs +++ b/lambda-extension/src/logs.rs @@ -233,7 +233,7 @@ where #[cfg(test)] mod tests { use super::*; - use chrono::{Duration, TimeZone}; + use chrono::{TimeDelta, TimeZone}; #[test] fn deserialize_full() { @@ -242,7 +242,7 @@ mod tests { time: Utc .with_ymd_and_hms(2020, 8, 20, 12, 31, 32) .unwrap() - .checked_add_signed(Duration::milliseconds(123)) + .checked_add_signed(TimeDelta::try_milliseconds(123).unwrap()) .unwrap(), record: LambdaLogRecord::Function("hello world".to_string()), }; diff --git a/lambda-extension/src/telemetry.rs b/lambda-extension/src/telemetry.rs index cfb4dde2..a7760892 100644 --- a/lambda-extension/src/telemetry.rs +++ b/lambda-extension/src/telemetry.rs @@ -316,7 +316,7 @@ where #[cfg(test)] mod deserialization_tests { use super::*; - use chrono::{Duration, TimeZone}; + use chrono::{TimeDelta, TimeZone}; macro_rules! deserialize_tests { ($($name:ident: $value:expr,)*) => { @@ -385,7 +385,7 @@ mod deserialization_tests { start: Utc .with_ymd_and_hms(2022, 10, 21, 14, 5, 3) .unwrap() - .checked_add_signed(Duration::milliseconds(165)) + .checked_add_signed(TimeDelta::try_milliseconds(165).unwrap()) .unwrap(), duration_ms: 2598.0 }, @@ -394,7 +394,7 @@ mod deserialization_tests { start: Utc .with_ymd_and_hms(2022, 10, 21, 14, 5, 5) .unwrap() - .checked_add_signed(Duration::milliseconds(763)) + .checked_add_signed(TimeDelta::try_milliseconds(763).unwrap()) .unwrap(), duration_ms: 0.0 }, @@ -473,7 +473,7 @@ mod deserialization_tests { #[cfg(test)] mod serialization_tests { - use chrono::{Duration, TimeZone}; + use chrono::{TimeDelta, TimeZone}; use super::*; macro_rules! serialize_tests { @@ -557,7 +557,7 @@ mod serialization_tests { start: Utc .with_ymd_and_hms(2022, 10, 21, 14, 5, 3) .unwrap() - .checked_add_signed(Duration::milliseconds(165)) + .checked_add_signed(TimeDelta::try_milliseconds(165).unwrap()) .unwrap(), duration_ms: 2598.0 }, @@ -566,7 +566,7 @@ mod serialization_tests { start: Utc .with_ymd_and_hms(2022, 10, 21, 14, 5, 5) .unwrap() - .checked_add_signed(Duration::milliseconds(763)) + .checked_add_signed(TimeDelta::try_milliseconds(763).unwrap()) .unwrap(), duration_ms: 0.0 },