mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
Issue #26331: Implement the parsing part of PEP 515.
Thanks to Georg Brandl for the patch.
This commit is contained in:
parent
ee73a65745
commit
a721abac29
22 changed files with 743 additions and 205 deletions
|
@ -1,4 +1,3 @@
|
|||
|
||||
import fractions
|
||||
import operator
|
||||
import os
|
||||
|
@ -9,6 +8,8 @@ import time
|
|||
import unittest
|
||||
|
||||
from test import support
|
||||
from test.test_grammar import (VALID_UNDERSCORE_LITERALS,
|
||||
INVALID_UNDERSCORE_LITERALS)
|
||||
from math import isinf, isnan, copysign, ldexp
|
||||
|
||||
INF = float("inf")
|
||||
|
@ -60,6 +61,27 @@ class GeneralFloatCases(unittest.TestCase):
|
|||
float(b'.' + b'1'*1000)
|
||||
float('.' + '1'*1000)
|
||||
|
||||
def test_underscores(self):
|
||||
for lit in VALID_UNDERSCORE_LITERALS:
|
||||
if not any(ch in lit for ch in 'jJxXoObB'):
|
||||
self.assertEqual(float(lit), eval(lit))
|
||||
self.assertEqual(float(lit), float(lit.replace('_', '')))
|
||||
for lit in INVALID_UNDERSCORE_LITERALS:
|
||||
if lit in ('0_7', '09_99'): # octals are not recognized here
|
||||
continue
|
||||
if not any(ch in lit for ch in 'jJxXoObB'):
|
||||
self.assertRaises(ValueError, float, lit)
|
||||
# Additional test cases; nan and inf are never valid as literals,
|
||||
# only in the float() constructor, but we don't allow underscores
|
||||
# in or around them.
|
||||
self.assertRaises(ValueError, float, '_NaN')
|
||||
self.assertRaises(ValueError, float, 'Na_N')
|
||||
self.assertRaises(ValueError, float, 'IN_F')
|
||||
self.assertRaises(ValueError, float, '-_INF')
|
||||
self.assertRaises(ValueError, float, '-INF_')
|
||||
# Check that we handle bytes values correctly.
|
||||
self.assertRaises(ValueError, float, b'0_.\xff9')
|
||||
|
||||
def test_non_numeric_input_types(self):
|
||||
# Test possible non-numeric types for the argument x, including
|
||||
# subclasses of the explicitly documented accepted types.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue