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
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.
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;
}