in :data:`~dis.hasarg` instead.
(Contributed by Irit Katriel in :gh:`109319`.)
+* Deprecate non-standard format specifier "N" for :class:`decimal.Decimal`.
+ It was not documented and only supported in the C implementation.
+ (Contributed by Serhiy Storchaka in :gh:`89902`.)
+
Pending Removal in Python 3.14
------------------------------
self.assertEqual(get_fmt(Decimal('-1.5'), dotsep_wide, '020n'),
'-0\u00b4000\u00b4000\u00b4000\u00b4001\u00bf5')
+ def test_deprecated_N_format(self):
+ Decimal = self.decimal.Decimal
+ h = Decimal('6.62607015e-34')
+ if self.decimal == C:
+ with self.assertWarns(DeprecationWarning) as cm:
+ r = format(h, 'N')
+ self.assertEqual(cm.filename, __file__)
+ self.assertEqual(r, format(h, 'n').upper())
+ with self.assertWarns(DeprecationWarning) as cm:
+ r = format(h, '010.3N')
+ self.assertEqual(cm.filename, __file__)
+ self.assertEqual(r, format(h, '010.3n').upper())
+ else:
+ self.assertRaises(ValueError, format, h, 'N')
+ self.assertRaises(ValueError, format, h, '010.3N')
+
+
@run_with_locale('LC_ALL', 'ps_AF')
def test_wide_char_separator_decimal_point(self):
# locale with wide char separator and decimal point
if (replace_fillchar) {
dec_replace_fillchar(decstring);
}
+ if (strchr(fmt, 'N') != NULL) {
+ if (PyErr_WarnEx(PyExc_DeprecationWarning,
+ "Format specifier 'N' is deprecated", 1) < 0) {
+ goto finish;
+ }
+ }
result = PyUnicode_DecodeUTF8(decstring, size, NULL);