[Python-3000-checkins] r57028 - in python/branches/py3k: Lib/test/test_builtin.py Python/traceback.c
collin.winter
python-3000-checkins at python.org
Tue Aug 14 19:53:56 CEST 2007
Author: collin.winter
Date: Tue Aug 14 19:53:54 2007
New Revision: 57028
Modified:
python/branches/py3k/Lib/test/test_builtin.py
python/branches/py3k/Python/traceback.c
Log:
Bug #1772489: make dir() work on traceback objects again.
Modified: python/branches/py3k/Lib/test/test_builtin.py
==============================================================================
--- python/branches/py3k/Lib/test/test_builtin.py (original)
+++ python/branches/py3k/Lib/test/test_builtin.py Tue Aug 14 19:53:54 2007
@@ -283,6 +283,13 @@
f = Foo()
self.assertRaises(TypeError, dir, f)
+ # dir(traceback)
+ try:
+ raise IndexError
+ except:
+ self.assertEqual(len(dir(sys.exc_info()[2])), 4)
+
+
def test_divmod(self):
self.assertEqual(divmod(12, 7), (1, 5))
self.assertEqual(divmod(-12, 7), (-2, 2))
Modified: python/branches/py3k/Python/traceback.c
==============================================================================
--- python/branches/py3k/Python/traceback.c (original)
+++ python/branches/py3k/Python/traceback.c Tue Aug 14 19:53:54 2007
@@ -11,6 +11,18 @@
#define OFF(x) offsetof(PyTracebackObject, x)
+static PyObject *
+tb_dir(PyTracebackObject *self)
+{
+ return Py_BuildValue("[ssss]", "tb_frame", "tb_next",
+ "tb_lasti", "tb_lineno");
+}
+
+static PyMethodDef tb_methods[] = {
+ {"__dir__", (PyCFunction)tb_dir, METH_NOARGS},
+ {NULL, NULL, 0, NULL},
+};
+
static PyMemberDef tb_memberlist[] = {
{"tb_next", T_OBJECT, OFF(tb_next), READONLY},
{"tb_frame", T_OBJECT, OFF(tb_frame), READONLY},
@@ -73,7 +85,7 @@
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
- 0, /* tp_methods */
+ tb_methods, /* tp_methods */
tb_memberlist, /* tp_members */
0, /* tp_getset */
0, /* tp_base */
More information about the Python-3000-checkins
mailing list