Skip to content

Commit

Permalink
Stop using deprecated chrono's api.
Browse files Browse the repository at this point in the history
Upgrade to chrono 0.4.35

Signed-off-by: David Calavera <[email protected]>
  • Loading branch information
calavera committed Mar 12, 2024
1 parent f610ff6 commit 773c921
Show file tree
Hide file tree
Showing 6 changed files with 32 additions and 29 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
2 changes: 1 addition & 1 deletion lambda-events/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
40 changes: 21 additions & 19 deletions lambda-events/src/encodings/time.rs
Original file line number Diff line number Diff line change
@@ -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},
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -144,7 +144,7 @@ where
.ok_or_else(|| D::Error::custom("invalid timestamp"))
}

fn serialize_duration_seconds<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
fn serialize_duration_seconds<S>(duration: &TimeDelta, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
Expand All @@ -153,15 +153,16 @@ where
serializer.serialize_i64(seconds)
}

fn deserialize_duration_seconds<'de, D>(deserializer: D) -> Result<Duration, D::Error>
fn deserialize_duration_seconds<'de, D>(deserializer: D) -> Result<TimeDelta, D::Error>
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<S>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error>
fn serialize_duration_minutes<S>(duration: &TimeDelta, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
Expand All @@ -170,12 +171,13 @@ where
serializer.serialize_i64(minutes)
}

fn deserialize_duration_minutes<'de, D>(deserializer: D) -> Result<Duration, D::Error>
fn deserialize_duration_minutes<'de, D>(deserializer: D) -> Result<TimeDelta, D::Error>
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>
Expand Down Expand Up @@ -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,
Expand All @@ -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}"#));
Expand All @@ -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,
Expand All @@ -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}"#));
Expand Down
2 changes: 1 addition & 1 deletion lambda-extension/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"] }
Expand Down
4 changes: 2 additions & 2 deletions lambda-extension/src/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,7 @@ where
#[cfg(test)]
mod tests {
use super::*;
use chrono::{Duration, TimeZone};
use chrono::{TimeDelta, TimeZone};

#[test]
fn deserialize_full() {
Expand All @@ -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()),
};
Expand Down
12 changes: 6 additions & 6 deletions lambda-extension/src/telemetry.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,)*) => {
Expand Down Expand Up @@ -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
},
Expand All @@ -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
},
Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -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
},
Expand All @@ -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
},
Expand Down

0 comments on commit 773c921

Please sign in to comment.