summaryrefslogtreecommitdiff
path: root/Objects/floatobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r--Objects/floatobject.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 0606f29ff5..828bde18df 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -215,7 +215,7 @@ PyFloat_FromString(PyObject *v)
}
else {
PyErr_Format(PyExc_TypeError,
- "float() argument must be a string or a number, not '%.200s'",
+ "float() argument must be a string or a real number, not '%.200s'",
Py_TYPE(v)->tp_name);
return NULL;
}
@@ -1649,6 +1649,24 @@ float_subtype_new(PyTypeObject *type, PyObject *x)
return newobj;
}
+static PyObject *
+float_vectorcall(PyObject *type, PyObject * const*args,
+ size_t nargsf, PyObject *kwnames)
+{
+ if (!_PyArg_NoKwnames("float", kwnames)) {
+ return NULL;
+ }
+
+ Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
+ if (!_PyArg_CheckPositional("float", nargs, 0, 1)) {
+ return NULL;
+ }
+
+ PyObject *x = nargs >= 1 ? args[0] : _PyLong_Zero;
+ return float_new_impl((PyTypeObject *)type, x);
+}
+
+
/*[clinic input]
float.__getnewargs__
[clinic start generated code]*/
@@ -1937,6 +1955,7 @@ PyTypeObject PyFloat_Type = {
0, /* tp_init */
0, /* tp_alloc */
float_new, /* tp_new */
+ .tp_vectorcall = (vectorcallfunc)float_vectorcall,
};
int