Issue #21720: Improve exception message when the type of fromlist is unicode
This commit is contained in:
parent
197332ae5a
commit
05b84439a3
|
@ -415,6 +415,14 @@ class ImportTests(unittest.TestCase):
|
|||
finally:
|
||||
rmtree(dir_name)
|
||||
|
||||
def test_fromlist_type(self):
|
||||
with self.assertRaises(TypeError) as cm:
|
||||
__import__('encodings', fromlist=[u'aliases'])
|
||||
self.assertIn('must be str, not unicode', str(cm.exception))
|
||||
with self.assertRaises(TypeError) as cm:
|
||||
__import__('encodings', fromlist=[1])
|
||||
self.assertIn('must be str, not int', str(cm.exception))
|
||||
|
||||
|
||||
class PycRewritingTests(unittest.TestCase):
|
||||
# Test that the `co_filename` attribute on code objects always points
|
||||
|
|
|
@ -10,6 +10,11 @@ What's New in Python 2.7.13?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #21720: Improve exception message when the type of fromlist is unicode.
|
||||
fromlist parameter of __import__() only accepts str in Python 2 and this
|
||||
will help to identify the problem especially when the unicode_literals
|
||||
future import is used.
|
||||
|
||||
- Issue #26906: Resolving special methods of uninitialized type now causes
|
||||
implicit initialization of the type instead of a fail.
|
||||
|
||||
|
|
|
@ -2591,8 +2591,9 @@ ensure_fromlist(PyObject *mod, PyObject *fromlist, char *buf, Py_ssize_t buflen,
|
|||
return 0;
|
||||
}
|
||||
if (!PyString_Check(item)) {
|
||||
PyErr_SetString(PyExc_TypeError,
|
||||
"Item in ``from list'' not a string");
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"Item in ``from list'' must be str, not %.200s",
|
||||
Py_TYPE(item)->tp_name);
|
||||
Py_DECREF(item);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue