[Python-checkins] r81873 - in python/branches/py3k: Lib/test/test_getargs2.py Misc/NEWS Python/getargs.c
mark.dickinson
python-checkins at python.org
Thu Jun 10 18:05:10 CEST 2010
Author: mark.dickinson
Date: Thu Jun 10 18:05:10 2010
New Revision: 81873
Log:
Issue #8950: Make PyArg_Parse* with 'L' code raise for float inputs,
instead of warning. This makes it consistent with the other integer
codes.
Modified:
python/branches/py3k/Lib/test/test_getargs2.py
python/branches/py3k/Misc/NEWS
python/branches/py3k/Python/getargs.c
Modified: python/branches/py3k/Lib/test/test_getargs2.py
==============================================================================
--- python/branches/py3k/Lib/test/test_getargs2.py (original)
+++ python/branches/py3k/Lib/test/test_getargs2.py Thu Jun 10 18:05:10 2010
@@ -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 @@
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()))
Modified: python/branches/py3k/Misc/NEWS
==============================================================================
--- python/branches/py3k/Misc/NEWS (original)
+++ python/branches/py3k/Misc/NEWS Thu Jun 10 18:05:10 2010
@@ -12,6 +12,11 @@
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().
Modified: python/branches/py3k/Python/getargs.c
==============================================================================
--- python/branches/py3k/Python/getargs.c (original)
+++ python/branches/py3k/Python/getargs.c Thu Jun 10 18:05:10 2010
@@ -582,19 +582,6 @@
#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 @@
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;
}
More information about the Python-checkins
mailing list