__all__ = ['make_scanner']
NUMBER_RE = re.compile(
- r'(-?(?:0|[1-9]\d*))(\.\d+)?([eE][-+]?\d+)?',
+ r'(-?(?:0|[1-9][0-9]*))(\.[0-9]+)?([eE][-+]?[0-9]+)?',
(re.VERBOSE | re.MULTILINE | re.DOTALL))
def py_make_scanner(context):
self.assertIsInstance(rval, float)
self.assertEqual(rval, 1.0)
+ def test_nonascii_digits_rejected(self):
+ # JSON specifies only ascii digits, see gh-125687
+ for num in ["1\uff10", "0.\uff10", "0e\uff10"]:
+ with self.assertRaises(self.JSONDecodeError):
+ self.loads(num)
+
def test_bytes(self):
self.assertEqual(self.loads(b"1"), 1)