diff options
author | Damien George <damien.p.george@gmail.com> | 2014-06-05 19:44:54 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-06-05 19:44:54 +0100 |
commit | d4c2bddd0c768da12d0cefd3c405b10e75fa5aa9 (patch) | |
tree | 9ea99b56e2d86d20f785cbfbeced2645a2bcfeb0 | |
parent | f675ff39576137e44a2fa6416619fe9a59cf2a0b (diff) | |
download | micropython-d4c2bddd0c768da12d0cefd3c405b10e75fa5aa9.tar.gz micropython-d4c2bddd0c768da12d0cefd3c405b10e75fa5aa9.zip |
py: Raise TypeError when trying to format non-int with %x,%o,%X.
This behaviour follows Python 3.5 standard (in 3.4 it's a
DeprecationWarning which we'd rather make a TypeError).
-rw-r--r-- | py/objstr.c | 4 | ||||
-rw-r--r-- | tests/float/string-format-modulo.py | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/py/objstr.c b/py/objstr.c index 4100b69beb..593c39cb09 100644 --- a/py/objstr.c +++ b/py/objstr.c @@ -1273,7 +1273,7 @@ not_enough_args: if (alt) { flags |= (PF_FLAG_SHOW_PREFIX | PF_FLAG_SHOW_OCTAL_LETTER); } - pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 8, 'a', flags, fill, width); + pfenv_print_mp_int(&pfenv_vstr, arg, 1, 8, 'a', flags, fill, width); break; case 'r': @@ -1296,7 +1296,7 @@ not_enough_args: case 'X': case 'x': - pfenv_print_mp_int(&pfenv_vstr, arg_as_int(arg), 1, 16, *str - ('X' - 'A'), flags | alt, fill, width); + pfenv_print_mp_int(&pfenv_vstr, arg, 1, 16, *str - ('X' - 'A'), flags | alt, fill, width); break; default: diff --git a/tests/float/string-format-modulo.py b/tests/float/string-format-modulo.py index 549b09c1c0..ddca0b5555 100644 --- a/tests/float/string-format-modulo.py +++ b/tests/float/string-format-modulo.py @@ -5,6 +5,12 @@ print("%d" % 1.0) print("%i" % 1.0) print("%u" % 1.0) +# these 3 have different behaviour in Python 3.x versions +# uPy raises a TypeError, following Python 3.5 (earlier versions don't) +#print("%x" % 18.0) +#print("%o" % 18.0) +#print("%X" % 18.0) + print("%e" % 1.23456) print("%E" % 1.23456) print("%f" % 1.23456) |