Skip to content

Commit abe32e6

Browse files
committed
fix: final bits, hopefully ok
1 parent c38fce0 commit abe32e6

File tree

4 files changed

+14
-23
lines changed

4 files changed

+14
-23
lines changed

src/input/datetime.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -113,27 +113,21 @@ impl<'a> EitherTimedelta<'a> {
113113
pub fn total_seconds(&self) -> PyResult<f64> {
114114
match self {
115115
Self::Raw(timedelta) => {
116-
let mut days: f64 = timedelta.day as f64;
117-
let mut seconds: f64 = timedelta.second as f64;
118-
let mut microseconds: f64 = timedelta.microsecond as f64;
119-
let mut total_seconds: f64 = if !timedelta.positive {
116+
let days: f64 = f64::from(timedelta.day);
117+
let seconds: f64 = f64::from(timedelta.second);
118+
let microseconds: f64 = f64::from(timedelta.microsecond);
119+
let total_seconds: f64 = if !timedelta.positive {
120120
-1.0 * (86400.0 * days + seconds + microseconds / 1_000_000.0)
121121
} else {
122122
86400.0 * days + seconds + microseconds / 1_000_000.0
123123
};
124124
Ok(total_seconds)
125125
}
126126
Self::PyExact(py_timedelta) => {
127-
let mut days: f64 = py_timedelta.get_days() as f64; // -999999999 to 999999999
128-
let mut seconds: f64 = py_timedelta.get_seconds() as f64; // 0 through 86399
129-
let mut microseconds: f64 = py_timedelta.get_microseconds() as f64; // 0 through 999999
130-
let positive = days >= 0.0;
131-
let total_seconds: f64 = if !positive {
132-
86400.0 * days + seconds + microseconds / 1_000_000.0
133-
} else {
134-
86400.0 * days + seconds + microseconds / 1_000_000.0
135-
};
136-
Ok(total_seconds)
127+
let days: f64 = f64::from(py_timedelta.get_days()); // -999999999 to 999999999
128+
let seconds: f64 = f64::from(py_timedelta.get_seconds()); // 0 through 86399
129+
let microseconds: f64 = f64::from(py_timedelta.get_microseconds()); // 0 through 999999
130+
Ok(86400.0 * days + seconds + microseconds / 1_000_000.0)
137131
}
138132
Self::PySubclass(py_timedelta) => {
139133
let total_seconds: f64 = py_timedelta

src/serializers/config.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use std::str::{from_utf8, FromStr, Utf8Error};
44
use base64::Engine;
55
use pyo3::intern;
66
use pyo3::prelude::*;
7-
use pyo3::types::{PyDelta, PyDict, PyFloat, PyString};
7+
use pyo3::types::{PyDict, PyFloat, PyString};
88

99
use serde::ser::Error;
1010

@@ -132,7 +132,7 @@ impl TimedeltaMode {
132132
}
133133
}
134134

135-
pub fn json_key<'py>(self, py: Python, either_delta: &EitherTimedelta) -> PyResult<Cow<'py, str>> {
135+
pub fn json_key<'py>(self, either_delta: &EitherTimedelta) -> PyResult<Cow<'py, str>> {
136136
match self {
137137
Self::Iso8601 => {
138138
let d = either_delta.to_duration()?;
@@ -152,7 +152,6 @@ impl TimedeltaMode {
152152

153153
pub fn timedelta_serialize<S: serde::ser::Serializer>(
154154
self,
155-
py: Python,
156155
either_delta: &EitherTimedelta,
157156
serializer: S,
158157
) -> Result<S::Ok, S::Error> {

src/serializers/infer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ pub(crate) fn infer_serialize_known<S: Serializer>(
477477
extra
478478
.config
479479
.timedelta_mode
480-
.timedelta_serialize(value.py(), &either_delta, serializer)
480+
.timedelta_serialize(&either_delta, serializer)
481481
}
482482
ObType::Url => {
483483
let py_url: PyUrl = value.extract().map_err(py_err_se_err)?;
@@ -655,7 +655,7 @@ pub(crate) fn infer_json_key_known<'a>(
655655
}
656656
ObType::Timedelta => {
657657
let either_delta = EitherTimedelta::try_from(key)?;
658-
extra.config.timedelta_mode.json_key(key.py(), &either_delta)
658+
extra.config.timedelta_mode.json_key(&either_delta)
659659
}
660660
ObType::Url => {
661661
let py_url: PyUrl = key.extract()?;

src/serializers/type_serializers/timedelta.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ impl TypeSerializer for TimeDeltaSerializer {
5454

5555
fn json_key<'a>(&self, key: &'a Bound<'_, PyAny>, extra: &Extra) -> PyResult<Cow<'a, str>> {
5656
match EitherTimedelta::try_from(key) {
57-
Ok(either_timedelta) => self.timedelta_mode.json_key(key.py(), &either_timedelta),
57+
Ok(either_timedelta) => self.timedelta_mode.json_key(&either_timedelta),
5858
Err(_) => {
5959
extra.warnings.on_fallback_py(self.get_name(), key, extra)?;
6060
infer_json_key(key, extra)
@@ -71,9 +71,7 @@ impl TypeSerializer for TimeDeltaSerializer {
7171
extra: &Extra,
7272
) -> Result<S::Ok, S::Error> {
7373
match EitherTimedelta::try_from(value) {
74-
Ok(either_timedelta) => self
75-
.timedelta_mode
76-
.timedelta_serialize(value.py(), &either_timedelta, serializer),
74+
Ok(either_timedelta) => self.timedelta_mode.timedelta_serialize(&either_timedelta, serializer),
7775
Err(_) => {
7876
extra.warnings.on_fallback_ser::<S>(self.get_name(), value, extra)?;
7977
infer_serialize(value, serializer, include, exclude, extra)

0 commit comments

Comments
 (0)