Accept Unicode legacy strings in the Decimal constructor.
This commit is contained in:
parent
6b0bdab429
commit
6e467049c6
|
@ -35,7 +35,7 @@ import locale
|
||||||
from test.support import (run_unittest, run_doctest, is_resource_enabled,
|
from test.support import (run_unittest, run_doctest, is_resource_enabled,
|
||||||
requires_IEEE_754)
|
requires_IEEE_754)
|
||||||
from test.support import (check_warnings, import_fresh_module, TestFailed,
|
from test.support import (check_warnings, import_fresh_module, TestFailed,
|
||||||
run_with_locale)
|
run_with_locale, cpython_only)
|
||||||
import random
|
import random
|
||||||
import time
|
import time
|
||||||
import warnings
|
import warnings
|
||||||
|
@ -574,6 +574,15 @@ class ExplicitConstructionTest(unittest.TestCase):
|
||||||
# embedded NUL
|
# embedded NUL
|
||||||
self.assertRaises(InvalidOperation, Decimal, "12\u00003")
|
self.assertRaises(InvalidOperation, Decimal, "12\u00003")
|
||||||
|
|
||||||
|
@cpython_only
|
||||||
|
def test_from_legacy_strings(self):
|
||||||
|
import _testcapi
|
||||||
|
Decimal = self.decimal.Decimal
|
||||||
|
context = self.decimal.Context()
|
||||||
|
|
||||||
|
s = _testcapi.unicode_legacy_string('9.999999')
|
||||||
|
self.assertEqual(str(Decimal(s)), '9.999999')
|
||||||
|
self.assertEqual(str(context.create_decimal(s)), '9.999999')
|
||||||
|
|
||||||
def test_explicit_from_tuples(self):
|
def test_explicit_from_tuples(self):
|
||||||
Decimal = self.decimal.Decimal
|
Decimal = self.decimal.Decimal
|
||||||
|
|
|
@ -1892,7 +1892,9 @@ numeric_as_ascii(const PyObject *u, int strip_ws)
|
||||||
Py_ssize_t j, len;
|
Py_ssize_t j, len;
|
||||||
int d;
|
int d;
|
||||||
|
|
||||||
assert(PyUnicode_IS_READY(u));
|
if (PyUnicode_READY(u) == -1) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
kind = PyUnicode_KIND(u);
|
kind = PyUnicode_KIND(u);
|
||||||
data = PyUnicode_DATA(u);
|
data = PyUnicode_DATA(u);
|
||||||
|
|
Loading…
Reference in New Issue