Depending on ('' in 'abc') (empty string in string) to be true breaks my brain and IMO not readable. This is an alternate implementation that avoids that.

This commit is contained in:
Charles Haley 2025-07-10 12:41:45 +01:00
parent 4fe197b813
commit 9d1b02acd2

View File

@ -3489,19 +3489,16 @@ This can be useful to truncate a value.
pat = re.compile(r'\[(.)(:(.*?))?\]') pat = re.compile(r'\[(.)(:(.*?))?\]')
if not largest_unit: if not largest_unit:
highest_index = 0
for m in pat.finditer(template): for m in pat.finditer(template):
fmt_char = m.group(1) try:
match fmt_char.lower(): # We know that m.group(1) is a single character so the only
case 'w' if largest_unit in 'dhms': # exception possible is that the character is not in the string
largest_unit = 'w' dex = 'smhdw'.index(m.group(1).lower())
case 'd' if largest_unit in 'hms': highest_index = dex if dex > highest_index else highest_index
largest_unit = 'd' except Exception:
case 'h' if largest_unit in 'ms': raise ValueError(_('The {} format specifier is not valid').format(m.group()))
largest_unit = 'h' largest_unit = 'smhdw'[highest_index]
case 'm' if largest_unit in 's':
largest_unit = 'm'
case 's' if not largest_unit:
largest_unit = 's'
int_val = remainder = round(float(value)) if value else 0 int_val = remainder = round(float(value)) if value else 0
weeks,remainder = divmod(remainder, 60*60*24*7) if largest_unit == 'w' else (-1,remainder) weeks,remainder = divmod(remainder, 60*60*24*7) if largest_unit == 'w' else (-1,remainder)