Commit 5cfa8044 authored by Mark Dickinson's avatar Mark Dickinson

Issue #6857: Fix Decimal formatting to be consistent with existing float

formatting:  both are now right-aligned by default.
parent 81809a42
...@@ -5497,7 +5497,10 @@ def _parse_format_specifier(format_spec, _localeconv=None): ...@@ -5497,7 +5497,10 @@ def _parse_format_specifier(format_spec, _localeconv=None):
raise ValueError("Alignment conflicts with '0' in " raise ValueError("Alignment conflicts with '0' in "
"format specifier: " + format_spec) "format specifier: " + format_spec)
format_dict['fill'] = fill or ' ' format_dict['fill'] = fill or ' '
format_dict['align'] = align or '<' # PEP 3101 originally specified that the default alignment should
# be left; it was later agreed that right-aligned makes more sense
# for numeric types. See http://bugs.python.org/issue6857.
format_dict['align'] = align or '>'
# default sign handling: '-' for negative, '' for positive # default sign handling: '-' for negative, '' for positive
if format_dict['sign'] is None: if format_dict['sign'] is None:
......
...@@ -712,6 +712,7 @@ class DecimalFormatTest(unittest.TestCase): ...@@ -712,6 +712,7 @@ class DecimalFormatTest(unittest.TestCase):
('', '1.00', '1.00'), ('', '1.00', '1.00'),
# test alignment and padding # test alignment and padding
('6', '123', ' 123'),
('<6', '123', '123 '), ('<6', '123', '123 '),
('>6', '123', ' 123'), ('>6', '123', ' 123'),
('^6', '123', ' 123 '), ('^6', '123', ' 123 '),
...@@ -741,7 +742,7 @@ class DecimalFormatTest(unittest.TestCase): ...@@ -741,7 +742,7 @@ class DecimalFormatTest(unittest.TestCase):
(',', '-1234567', '-1,234,567'), (',', '-1234567', '-1,234,567'),
(',', '-123456', '-123,456'), (',', '-123456', '-123,456'),
('7,', '123456', '123,456'), ('7,', '123456', '123,456'),
('8,', '123456', '123,456 '), ('8,', '123456', ' 123,456'),
('08,', '123456', '0,123,456'), # special case: extra 0 needed ('08,', '123456', '0,123,456'), # special case: extra 0 needed
('+08,', '123456', '+123,456'), # but not if there's a sign ('+08,', '123456', '+123,456'), # but not if there's a sign
(' 08,', '123456', ' 123,456'), (' 08,', '123456', ' 123,456'),
......
...@@ -366,6 +366,9 @@ Core and Builtins ...@@ -366,6 +366,9 @@ Core and Builtins
Library Library
------- -------
- Issue #6857: Default format() alignment should be '>' for Decimal
instances.
- Issue #6795: int(Decimal('nan')) now raises ValueError instead of - Issue #6795: int(Decimal('nan')) now raises ValueError instead of
returning NaN or raising InvalidContext. Also, fix infinite recursion returning NaN or raising InvalidContext. Also, fix infinite recursion
in long(Decimal('nan')). in long(Decimal('nan')).
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment