[formatter] implement 'A' format specifier (#6036)

This commit is contained in:
Mike Fährmann
2024-08-16 20:34:23 +02:00
parent 01e8433889
commit 78ae0ba9f7
3 changed files with 30 additions and 0 deletions

View File

@@ -325,6 +325,23 @@ def _parse_slice(format_spec, default):
return apply_slice
def _parse_arithmetic(format_spec, default):
op, _, format_spec = format_spec.partition(_SEPARATOR)
fmt = _build_format_func(format_spec, default)
value = int(op[2:])
op = op[1]
if op == "+":
return lambda obj: fmt(obj + value)
if op == "-":
return lambda obj: fmt(obj - value)
if op == "*":
return lambda obj: fmt(obj * value)
return fmt
def _parse_conversion(format_spec, default):
conversions, _, format_spec = format_spec.partition(_SEPARATOR)
convs = [_CONVERSIONS[c] for c in conversions[1:]]
@@ -480,6 +497,7 @@ _CONVERSIONS = {
_FORMAT_SPECIFIERS = {
"?": _parse_optional,
"[": _parse_slice,
"A": _parse_arithmetic,
"C": _parse_conversion,
"D": _parse_datetime,
"J": _parse_join,