[Python-checkins] r43496 - in python/trunk: Lib/test/test_builtin.py Misc/NEWS Python/bltinmodule.c
georg.brandl
python-checkins at python.org
Fri Mar 31 20:54:54 CEST 2006
Author: georg.brandl
Date: Fri Mar 31 20:54:53 2006
New Revision: 43496
Modified:
python/trunk/Lib/test/test_builtin.py
python/trunk/Misc/NEWS
python/trunk/Python/bltinmodule.c
Log:
Patch #1460496: round() now accepts keyword arguments.
Modified: python/trunk/Lib/test/test_builtin.py
==============================================================================
--- python/trunk/Lib/test/test_builtin.py (original)
+++ python/trunk/Lib/test/test_builtin.py Fri Mar 31 20:54:53 2006
@@ -1395,6 +1395,9 @@
self.assertEqual(round(-8.0, -1), -10.0)
+ # test new kwargs
+ self.assertEqual(round(number=-8.0, ndigits=-1), -10.0)
+
self.assertRaises(TypeError, round)
def test_setattr(self):
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Fri Mar 31 20:54:53 2006
@@ -12,6 +12,8 @@
Core and builtins
-----------------
+- Patch #1460496: round() now accepts keyword arguments.
+
- Fixed bug #1459029 - unicode reprs were double-escaped.
- Patch #1396919: The system scope threads are reenabled on FreeBSD
Modified: python/trunk/Python/bltinmodule.c
==============================================================================
--- python/trunk/Python/bltinmodule.c (original)
+++ python/trunk/Python/bltinmodule.c Fri Mar 31 20:54:53 2006
@@ -1870,32 +1870,34 @@
static PyObject *
-builtin_round(PyObject *self, PyObject *args)
+builtin_round(PyObject *self, PyObject *args, PyObject *kwds)
{
- double x;
+ double number;
double f;
int ndigits = 0;
int i;
+ static char *kwlist[] = {"number", "ndigits", 0};
- if (!PyArg_ParseTuple(args, "d|i:round", &x, &ndigits))
- return NULL;
+ if (!PyArg_ParseTupleAndKeywords(args, kwds, "d|i:round",
+ kwlist, &number, &ndigits))
+ return NULL;
f = 1.0;
i = abs(ndigits);
while (--i >= 0)
f = f*10.0;
if (ndigits < 0)
- x /= f;
+ number /= f;
else
- x *= f;
- if (x >= 0.0)
- x = floor(x + 0.5);
+ number *= f;
+ if (number >= 0.0)
+ number = floor(number + 0.5);
else
- x = ceil(x - 0.5);
+ number = ceil(number - 0.5);
if (ndigits < 0)
- x *= f;
+ number *= f;
else
- x /= f;
- return PyFloat_FromDouble(x);
+ number /= f;
+ return PyFloat_FromDouble(number);
}
PyDoc_STRVAR(round_doc,
@@ -2248,7 +2250,7 @@
{"reduce", builtin_reduce, METH_VARARGS, reduce_doc},
{"reload", builtin_reload, METH_O, reload_doc},
{"repr", builtin_repr, METH_O, repr_doc},
- {"round", builtin_round, METH_VARARGS, round_doc},
+ {"round", (PyCFunction)builtin_round, METH_VARARGS | METH_KEYWORDS, round_doc},
{"setattr", builtin_setattr, METH_VARARGS, setattr_doc},
{"sorted", (PyCFunction)builtin_sorted, METH_VARARGS | METH_KEYWORDS, sorted_doc},
{"sum", builtin_sum, METH_VARARGS, sum_doc},
More information about the Python-checkins
mailing list