Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions src/classes/date.rs
Original file line number Diff line number Diff line change
Expand Up @@ -280,8 +280,7 @@ fn __new__(cls: HeapType<Date>, args: PyTuple, kwargs: Option<PyDict>) -> PyRetu
if eq(key, kwname) {
if arg_obj[i].replace(value).is_some() {
raise_type_err(format!(
"Date() got multiple values for argument {}",
kwname
"Date() got multiple values for argument {kwname}"
))?;
}
return Ok(true);
Expand Down Expand Up @@ -333,7 +332,7 @@ fn __str__(_: PyType, slf: Date) -> PyReturn {
}

fn __repr__(_: PyType, slf: Date) -> PyReturn {
format!("Date({})", slf).to_py()
format!("Date({slf})").to_py()
}

extern "C" fn __hash__(slf: PyObj) -> Py_hash_t {
Expand Down Expand Up @@ -396,7 +395,7 @@ fn month_day(cls: HeapType<Date>, Date { month, day, .. }: Date) -> PyReturn {
}

fn format_common_iso(_: PyType, slf: Date) -> PyReturn {
format!("{}", slf).to_py()
format!("{slf}").to_py()
}

fn parse_common_iso(cls: HeapType<Date>, s: PyObj) -> PyReturn {
Expand All @@ -405,7 +404,7 @@ fn parse_common_iso(cls: HeapType<Date>, s: PyObj) -> PyReturn {
.ok_or_type_err("argument must be str")?
.as_utf8()?,
)
.ok_or_else_value_err(|| format!("Invalid format: {}", s))?
.ok_or_else_value_err(|| format!("Invalid format: {s}"))?
.to_obj(cls)
}

Expand Down Expand Up @@ -471,7 +470,7 @@ fn __sub__(obj_a: PyObj, obj_b: PyObj) -> PyReturn {
obj_b
.extract(state.date_delta_type)
.ok_or_else_type_err(|| {
format!("unsupported operand type(s) for -: 'Date' and '{}'", type_b)
format!("unsupported operand type(s) for -: 'Date' and '{type_b}'")
})?;
date.shift_months(-months)
.and_then(|date| date.shift_days(-days))
Expand All @@ -495,7 +494,7 @@ fn __add__(obj_a: PyObj, obj_b: PyObj) -> PyReturn {
obj_b
.extract(state.date_delta_type)
.ok_or_else_type_err(|| {
format!("unsupported operand type(s) for +: 'Date' and '{}'", type_b)
format!("unsupported operand type(s) for +: 'Date' and '{type_b}'")
})?;
// SAFETY: at least one of the operands must be a Date
date.shift_months(months)
Expand Down Expand Up @@ -529,7 +528,7 @@ fn _shift_method(
let delta_type = cls.state().date_delta_type;
let DateDelta { months, days } = arg
.extract(delta_type)
.ok_or_type_err(format!("{}() argument must be a whenever.DateDelta", fname))?;
.ok_or_type_err(format!("{fname}() argument must be a whenever.DateDelta"))?;
(months, days)
}
([], _) => {
Expand All @@ -543,8 +542,7 @@ fn _shift_method(
handle_datedelta_kwargs(fname, kwargs, str_years, str_months, str_days, str_weeks)?
}
_ => raise_type_err(format!(
"{}() takes either only kwargs or 1 positional arg",
fname
"{fname}() takes either only kwargs or 1 positional arg"
))?,
};
if negate {
Expand Down
13 changes: 6 additions & 7 deletions src/classes/date_delta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,13 @@ pub(crate) fn format_components(delta: DateDelta, s: &mut String) {
let years = months / 12;
months %= 12;
if years != 0 {
s.push_str(&format!("{}Y", years));
s.push_str(&format!("{years}Y"));
}
if months != 0 {
s.push_str(&format!("{}M", months));
s.push_str(&format!("{months}M"));
}
if days != 0 {
s.push_str(&format!("{}D", days));
s.push_str(&format!("{days}D"));
}
}

Expand Down Expand Up @@ -309,7 +309,7 @@ fn __neg__(cls: HeapType<DateDelta>, d: DateDelta) -> PyReturn {
}

fn __repr__(_: PyType, d: DateDelta) -> PyReturn {
format!("DateDelta({})", d).to_py()
format!("DateDelta({d})").to_py()
}

fn __str__(_: PyType, d: DateDelta) -> PyReturn {
Expand Down Expand Up @@ -396,8 +396,7 @@ fn _add_method(obj_a: PyObj, obj_b: PyObj, negate: bool) -> PyReturn {
})?
} else {
raise_type_err(format!(
"unsupported operand type(s) for +/-: {} and {}",
type_a, type_b
"unsupported operand type(s) for +/-: {type_a} and {type_b}"
))?
}
.to_obj(state.datetime_delta_type)
Expand Down Expand Up @@ -547,7 +546,7 @@ pub(crate) fn parse_component(s: &mut &[u8]) -> Option<(i32, Unit)> {
fn parse_common_iso(cls: HeapType<DateDelta>, arg: PyObj) -> PyReturn {
let py_str = arg.cast::<PyStr>().ok_or_type_err("argument must be str")?;
let s = &mut py_str.as_utf8()?;
let err = || format!("Invalid format: {}", arg);
let err = || format!("Invalid format: {arg}");
if s.len() < 3 {
// at least `P0D`
raise_value_err(err())?
Expand Down
13 changes: 6 additions & 7 deletions src/classes/datetime_delta.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,15 +115,15 @@ pub(crate) fn handle_exact_unit(
(-max..=max)
.contains(&i)
.then(|| i as i128 * factor)
.ok_or_else_value_err(|| format!("{} out of range", name))
.ok_or_else_value_err(|| format!("{name} out of range"))
} else if let Some(py_float) = value.cast::<PyFloat>() {
let f = py_float.to_f64()?;
(-max as f64..=max as f64)
.contains(&f)
.then_some((f * factor as f64) as i128)
.ok_or_else_value_err(|| format!("{} out of range", name))
.ok_or_else_value_err(|| format!("{name} out of range"))
} else {
raise_value_err(format!("{} must be an integer or float", name))?
raise_value_err(format!("{name} must be an integer or float"))?
}
}

Expand Down Expand Up @@ -301,7 +301,7 @@ extern "C" fn __bool__(slf: PyObj) -> c_int {
}

fn __repr__(_: PyType, d: DateTimeDelta) -> PyReturn {
format!("DateTimeDelta({})", d).to_py()
format!("DateTimeDelta({d})").to_py()
}

fn __str__(_: PyType, d: DateTimeDelta) -> PyReturn {
Expand Down Expand Up @@ -370,8 +370,7 @@ fn _add_method(obj_a: PyObj, obj_b: PyObj, negate: bool) -> PyReturn {
} else {
// We can safely discount other types within our module
return raise_value_err(format!(
"unsupported operand type(s) for +/-: {} and {}",
type_a, type_b
"unsupported operand type(s) for +/-: {type_a} and {type_b}"
));
};
// SAFETY: at least one of the objects is a DateTimeDelta
Expand Down Expand Up @@ -482,7 +481,7 @@ fn parse_common_iso(cls: HeapType<DateTimeDelta>, arg: PyObj) -> PyReturn {
.ok_or_value_err("argument must be str")?;

let s = &mut binding.as_utf8()?;
let err = || format!("Invalid format or out of range: {}", arg);
let err = || format!("Invalid format or out of range: {arg}");
if s.len() < 3 {
// at least `P0D`
raise_value_err(err())?
Expand Down
14 changes: 7 additions & 7 deletions src/classes/instant.rs
Original file line number Diff line number Diff line change
Expand Up @@ -241,12 +241,12 @@ impl PyWrapped for Instant {}

fn __repr__(_: PyType, i: Instant) -> PyReturn {
let DateTime { date, time } = i.to_datetime();
format!("Instant({} {}Z)", date, time).to_py()
format!("Instant({date} {time}Z)").to_py()
}

fn __str__(_: PyType, i: Instant) -> PyReturn {
let DateTime { date, time } = i.to_datetime();
format!("{}T{}Z", date, time).to_py()
format!("{date}T{time}Z").to_py()
}

fn __richcmp__(cls: HeapType<Instant>, inst_a: Instant, b_obj: PyObj, op: c_int) -> PyReturn {
Expand Down Expand Up @@ -482,7 +482,7 @@ fn py_datetime(cls: HeapType<Instant>, slf: Instant) -> PyReturn {
fn from_py_datetime(cls: HeapType<Instant>, obj: PyObj) -> PyReturn {
if let Some(dt) = obj.cast_allow_subclass::<PyDateTime>() {
Instant::from_py(dt)?
.ok_or_else_value_err(|| format!("datetime {} out of range", dt))?
.ok_or_else_value_err(|| format!("datetime {dt} out of range"))?
.to_obj(cls)
} else {
raise_type_err("Expected a datetime object")
Expand All @@ -504,7 +504,7 @@ fn parse_common_iso(cls: HeapType<Instant>, s_obj: PyObj) -> PyReturn {
.ok_or_type_err("Expected a string")?
.as_utf8()?,
)
.ok_or_else_value_err(|| format!("Invalid format: {}", s_obj))?
.ok_or_else_value_err(|| format!("Invalid format: {s_obj}"))?
.instant()
.to_obj(cls)
}
Expand Down Expand Up @@ -543,7 +543,7 @@ fn _shift_method(
let mut nanos: i128 = 0;

if !args.is_empty() {
raise_type_err(format!("{}() takes no positional arguments", fname))?;
raise_type_err(format!("{fname}() takes no positional arguments"))?;
}
handle_kwargs(fname, kwargs, |key, value, eq| {
if eq(key, str_hours) {
Expand Down Expand Up @@ -644,8 +644,8 @@ fn format_rfc2822(_: PyType, slf: Instant) -> PyReturn {

fn parse_rfc2822(cls: HeapType<Instant>, s_obj: PyObj) -> PyReturn {
let s = s_obj.cast::<PyStr>().ok_or_type_err("Expected a string")?;
let (date, time, offset) = rfc2822::parse(s.as_utf8()?)
.ok_or_else_value_err(|| format!("Invalid format: {}", s_obj))?;
let (date, time, offset) =
rfc2822::parse(s.as_utf8()?).ok_or_else_value_err(|| format!("Invalid format: {s_obj}"))?;
OffsetDateTime::new(date, time, offset)
.ok_or_value_err("Instant out of range")?
.instant()
Expand Down
6 changes: 3 additions & 3 deletions src/classes/monthday.rs
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ fn __new__(cls: HeapType<MonthDay>, args: PyTuple, kwargs: Option<PyDict>) -> Py
}

fn __repr__(_: PyType, slf: MonthDay) -> PyReturn {
format!("MonthDay({})", slf).to_py()
format!("MonthDay({slf})").to_py()
}

extern "C" fn __hash__(slf: PyObj) -> Py_hash_t {
Expand All @@ -98,7 +98,7 @@ extern "C" fn __hash__(slf: PyObj) -> Py_hash_t {
}

fn __str__(_: PyType, slf: MonthDay) -> PyReturn {
format!("{}", slf).to_py()
format!("{slf}").to_py()
}

fn __richcmp__(cls: HeapType<MonthDay>, a: MonthDay, b_obj: PyObj, op: c_int) -> PyReturn {
Expand Down Expand Up @@ -159,7 +159,7 @@ fn parse_common_iso(cls: HeapType<MonthDay>, s: PyObj) -> PyReturn {
.ok_or_type_err("argument must be str")?
.as_utf8()?,
)
.ok_or_else_value_err(|| format!("Invalid format: {}", s))?
.ok_or_else_value_err(|| format!("Invalid format: {s}"))?
.to_obj(cls)
}

Expand Down
25 changes: 11 additions & 14 deletions src/classes/offset_datetime.rs
Original file line number Diff line number Diff line change
Expand Up @@ -239,8 +239,7 @@ impl Offset {
}
} else {
raise_type_err(format!(
"offset must be an integer or TimeDelta instance, got {}",
obj
"offset must be an integer or TimeDelta instance, got {obj}"
))?
}
}
Expand All @@ -262,7 +261,7 @@ impl PyWrapped for OffsetDateTime {}
impl Display for OffsetDateTime {
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
let &OffsetDateTime { date, time, offset } = self;
write!(f, "{}T{}{}", date, time, offset)
write!(f, "{date}T{time}{offset}")
}
}

Expand Down Expand Up @@ -304,11 +303,11 @@ fn __new__(cls: HeapType<OffsetDateTime>, args: PyTuple, kwargs: Option<PyDict>)

fn __repr__(_: PyType, slf: OffsetDateTime) -> PyReturn {
let OffsetDateTime { date, time, offset } = slf;
format!("OffsetDateTime({} {}{})", date, time, offset).to_py()
format!("OffsetDateTime({date} {time}{offset})").to_py()
}

fn __str__(_: PyType, slf: OffsetDateTime) -> PyReturn {
format!("{}", slf).to_py()
format!("{slf}").to_py()
}

fn __richcmp__(
Expand Down Expand Up @@ -393,8 +392,7 @@ fn __sub__(obj_a: PyObj, obj_b: PyObj) -> PyReturn {
)?
} else {
raise_type_err(format!(
"unsupported operand type(s) for +/-: {} and {}",
type_a, type_b
"unsupported operand type(s) for +/-: {type_a} and {type_b}"
))?
};
(state, slf.instant(), inst_b)
Expand Down Expand Up @@ -555,7 +553,7 @@ pub(crate) fn check_ignore_dst_kwarg(
{
Ok(())
}
Some((key, _)) => raise_type_err(format!("Unknown keyword argument: {}", key)),
Some((key, _)) => raise_type_err(format!("Unknown keyword argument: {key}")),
_ => raise(exc_implicitly_ignoring_dst.as_ptr(), msg),
}
}
Expand Down Expand Up @@ -776,8 +774,7 @@ fn _shift_method(
}
None => {}
_ => raise_type_err(format!(
"{}() can't mix positional and keyword arguments",
fname
"{fname}() can't mix positional and keyword arguments"
))?,
}
if let Some(tdelta) = arg.extract(state.time_delta_type) {
Expand All @@ -790,7 +787,7 @@ fn _shift_method(
days = dt.ddelta.days;
nanos = dt.tdelta.total_nanos();
} else {
raise_type_err(format!("{}() argument must be a delta", fname))?
raise_type_err(format!("{fname}() argument must be a delta"))?
}
}
[] => {
Expand Down Expand Up @@ -839,7 +836,7 @@ fn _shift_method(
.shift_date(months, days)
.and_then(|dt| dt.shift_nanos(nanos))
.and_then(|dt| dt.with_offset(offset))
.ok_or_else_value_err(|| format!("Result of {}() out of range", fname))?
.ok_or_else_value_err(|| format!("Result of {fname}() out of range"))?
.to_obj(cls)
}

Expand Down Expand Up @@ -1000,7 +997,7 @@ fn parse_common_iso(cls: HeapType<OffsetDateTime>, arg: PyObj) -> PyReturn {
.ok_or_type_err("Expected a string")?
.as_utf8()?,
)
.ok_or_else_value_err(|| format!("Invalid format: {}", arg))?
.ok_or_else_value_err(|| format!("Invalid format: {arg}"))?
.to_obj(cls)
}

Expand Down Expand Up @@ -1040,7 +1037,7 @@ fn format_rfc2822(_: PyType, slf: OffsetDateTime) -> PyReturn {
fn parse_rfc2822(cls: HeapType<OffsetDateTime>, arg: PyObj) -> PyReturn {
let s = arg.cast::<PyStr>().ok_or_type_err("Expected a string")?;
let (date, time, offset) =
rfc2822::parse(s.as_utf8()?).ok_or_else_value_err(|| format!("Invalid format: {}", arg))?;
rfc2822::parse(s.as_utf8()?).ok_or_else_value_err(|| format!("Invalid format: {arg}"))?;
OffsetDateTime::new(date, time, offset)
.ok_or_value_err("Instant out of range")?
.to_obj(cls)
Expand Down
Loading
Loading