diff options
-rw-r--r-- | Lib/test/test_getargs2.py | 17 | ||||
-rw-r--r-- | Misc/NEWS | 5 | ||||
-rw-r--r-- | Python/getargs.c | 20 |
3 files changed, 9 insertions, 33 deletions
diff --git a/Lib/test/test_getargs2.py b/Lib/test/test_getargs2.py index 7fa5983..baf70d1 100644 --- a/Lib/test/test_getargs2.py +++ b/Lib/test/test_getargs2.py @@ -1,7 +1,6 @@ import unittest from test import support from _testcapi import getargs_keywords -import warnings """ > How about the following counterproposal. This also changes some of @@ -190,21 +189,7 @@ class LongLong_TestCase(unittest.TestCase): from _testcapi import getargs_L # L returns 'long long', and does range checking (LLONG_MIN # ... LLONG_MAX) - with warnings.catch_warnings(): - warnings.filterwarnings( - "ignore", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module=__name__) - self.assertEqual(3, getargs_L(3.14)) - with warnings.catch_warnings(): - warnings.filterwarnings( - "error", - category=DeprecationWarning, - message=".*integer argument expected, got float", - module="unittest") - self.assertRaises(DeprecationWarning, getargs_L, 3.14) - + self.assertRaises(TypeError, getargs_L, 3.14) self.assertRaises(TypeError, getargs_L, "Hello") self.assertEqual(99, getargs_L(Int())) @@ -12,6 +12,11 @@ What's New in Python 3.2 Alpha 1? Core and Builtins ----------------- +- Issue #8950: (See also issue #5080). Py_ArgParse*() functions now + raise TypeError instead of giving a DeprecationWarning when a float + is parsed using the 'L' code (for long long). (All other integer + codes already raise TypeError in this case.) + - Issue #8922: Normalize the encoding name in PyUnicode_AsEncodedString() to enable shortcuts for upper case encoding name. Add also a shortcut for "iso-8859-1" in PyUnicode_AsEncodedString() and PyUnicode_Decode(). diff --git a/Python/getargs.c b/Python/getargs.c index 2a26a8f..127b147 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -582,19 +582,6 @@ converterr(const char *expected, PyObject *arg, char *msgbuf, size_t bufsize) #define CONV_UNICODE "(unicode conversion error)" -/* explicitly check for float arguments when integers are expected. For now - * signal a warning. Returns true if an exception was raised. */ -static int -float_argument_warning(PyObject *arg) -{ - if (PyFloat_Check(arg) && - PyErr_Warn(PyExc_DeprecationWarning, - "integer argument expected, got float" )) - return 1; - else - return 0; -} - /* Explicitly check for float arguments when integers are expected. Return 1 for error, 0 if ok. */ static int @@ -791,14 +778,13 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, case 'L': {/* PY_LONG_LONG */ PY_LONG_LONG *p = va_arg( *p_va, PY_LONG_LONG * ); PY_LONG_LONG ival; - if (float_argument_warning(arg)) + if (float_argument_error(arg)) return converterr("long<L>", arg, msgbuf, bufsize); ival = PyLong_AsLongLong(arg); - if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred() ) { + if (ival == (PY_LONG_LONG)-1 && PyErr_Occurred()) return converterr("long<L>", arg, msgbuf, bufsize); - } else { + else *p = ival; - } break; } |