Issue #28203: Merge from 3.6
This commit is contained in:
commit
3992d6e5e1
|
@ -328,6 +328,14 @@ class ComplexTest(unittest.TestCase):
|
||||||
self.assertRaises(ValueError, complex, "1e1ej")
|
self.assertRaises(ValueError, complex, "1e1ej")
|
||||||
self.assertRaises(ValueError, complex, "1e++1ej")
|
self.assertRaises(ValueError, complex, "1e++1ej")
|
||||||
self.assertRaises(ValueError, complex, ")1+2j(")
|
self.assertRaises(ValueError, complex, ")1+2j(")
|
||||||
|
self.assertRaisesRegex(
|
||||||
|
TypeError,
|
||||||
|
"first argument must be a string or a number, not 'dict'",
|
||||||
|
complex, {1:2}, 1)
|
||||||
|
self.assertRaisesRegex(
|
||||||
|
TypeError,
|
||||||
|
"second argument must be a number, not 'dict'",
|
||||||
|
complex, 1, {1:2})
|
||||||
# the following three are accepted by Python 2.6
|
# the following three are accepted by Python 2.6
|
||||||
self.assertRaises(ValueError, complex, "1..1j")
|
self.assertRaises(ValueError, complex, "1..1j")
|
||||||
self.assertRaises(ValueError, complex, "1.11.1j")
|
self.assertRaises(ValueError, complex, "1.11.1j")
|
||||||
|
|
|
@ -1369,6 +1369,7 @@ Daniel Shahaf
|
||||||
Mark Shannon
|
Mark Shannon
|
||||||
Ha Shao
|
Ha Shao
|
||||||
Richard Shapiro
|
Richard Shapiro
|
||||||
|
Soumya Sharma
|
||||||
Varun Sharma
|
Varun Sharma
|
||||||
Daniel Shaulov
|
Daniel Shaulov
|
||||||
Vlad Shcherbina
|
Vlad Shcherbina
|
||||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.7.0 alpha 1
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #28203: Fix incorrect type in complex(1.0, {2:3}) error message.
|
||||||
|
Patch by Soumya Sharma.
|
||||||
|
|
||||||
- Issue #28086: Single var-positional argument of tuple subtype was passed
|
- Issue #28086: Single var-positional argument of tuple subtype was passed
|
||||||
unscathed to the C-defined function. Now it is converted to exact tuple.
|
unscathed to the C-defined function. Now it is converted to exact tuple.
|
||||||
|
|
||||||
|
|
|
@ -965,18 +965,29 @@ complex_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
}
|
}
|
||||||
|
|
||||||
nbr = r->ob_type->tp_as_number;
|
nbr = r->ob_type->tp_as_number;
|
||||||
if (i != NULL)
|
if (nbr == NULL || nbr->nb_float == NULL) {
|
||||||
nbi = i->ob_type->tp_as_number;
|
|
||||||
if (nbr == NULL || nbr->nb_float == NULL ||
|
|
||||||
((i != NULL) && (nbi == NULL || nbi->nb_float == NULL))) {
|
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
"complex() argument must be a string or a number, not '%.200s'",
|
"complex() first argument must be a string or a number, "
|
||||||
Py_TYPE(r)->tp_name);
|
"not '%.200s'",
|
||||||
|
Py_TYPE(r)->tp_name);
|
||||||
if (own_r) {
|
if (own_r) {
|
||||||
Py_DECREF(r);
|
Py_DECREF(r);
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (i != NULL) {
|
||||||
|
nbi = i->ob_type->tp_as_number;
|
||||||
|
if (nbi == NULL || nbi->nb_float == NULL) {
|
||||||
|
PyErr_Format(PyExc_TypeError,
|
||||||
|
"complex() second argument must be a number, "
|
||||||
|
"not '%.200s'",
|
||||||
|
Py_TYPE(i)->tp_name);
|
||||||
|
if (own_r) {
|
||||||
|
Py_DECREF(r);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* If we get this far, then the "real" and "imag" parts should
|
/* If we get this far, then the "real" and "imag" parts should
|
||||||
both be treated as numbers, and the constructor should return a
|
both be treated as numbers, and the constructor should return a
|
||||||
|
|
Loading…
Reference in New Issue