mirror of
https://github.com/python/cpython.git
synced 2025-08-03 08:34:29 +00:00
Issue #7094: Add alternate ('#') flag to __format__ methods for float, complex and Decimal. Allows greater control over when decimal points appear. Added to make transitioning from %-formatting easier. '#g' still has a problem with Decimal which I'll fix soon.
This commit is contained in:
parent
c1d98d6850
commit
984bb58000
9 changed files with 87 additions and 36 deletions
|
@ -941,13 +941,8 @@ format_float_internal(PyObject *value,
|
|||
from a hard-code pseudo-locale */
|
||||
LocaleInfo locale;
|
||||
|
||||
/* Alternate is not allowed on floats. */
|
||||
if (format->alternate) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"Alternate form (#) not allowed in float format "
|
||||
"specifier");
|
||||
goto done;
|
||||
}
|
||||
if (format->alternate)
|
||||
flags |= Py_DTSF_ALT;
|
||||
|
||||
if (type == '\0') {
|
||||
/* Omitted type specifier. Behaves in the same way as repr(x)
|
||||
|
@ -1104,15 +1099,7 @@ format_complex_internal(PyObject *value,
|
|||
from a hard-code pseudo-locale */
|
||||
LocaleInfo locale;
|
||||
|
||||
/* Alternate is not allowed on complex. */
|
||||
if (format->alternate) {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"Alternate form (#) not allowed in complex format "
|
||||
"specifier");
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Neither is zero pading. */
|
||||
/* Zero padding is not allowed. */
|
||||
if (format->fill_char == '0') {
|
||||
PyErr_SetString(PyExc_ValueError,
|
||||
"Zero padding is not allowed in complex format "
|
||||
|
@ -1135,6 +1122,9 @@ format_complex_internal(PyObject *value,
|
|||
if (im == -1.0 && PyErr_Occurred())
|
||||
goto done;
|
||||
|
||||
if (format->alternate)
|
||||
flags |= Py_DTSF_ALT;
|
||||
|
||||
if (type == '\0') {
|
||||
/* Omitted type specifier. Should be like str(self). */
|
||||
type = 'r';
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue