summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2008-03-18 04:42:22 (GMT)
committerGuido van Rossum <guido@python.org>2008-03-18 04:42:22 (GMT)
commit6d91be37586ba93cb7c5fa6d5da15cf5b9a19892 (patch)
tree5847d95b3dbae4d914a47bfba6a750b26ea3d75b
parent0bfc896979c94b02fe34cbad246b14b9d82ec40a (diff)
downloadcpython-6d91be37586ba93cb7c5fa6d5da15cf5b9a19892.zip
cpython-6d91be37586ba93cb7c5fa6d5da15cf5b9a19892.tar.gz
cpython-6d91be37586ba93cb7c5fa6d5da15cf5b9a19892.tar.bz2
- Issue 2379: Raise a Py3K warning for __getitem__ or __getslice__ on
exception instances.
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/exceptions.c12
2 files changed, 15 insertions, 0 deletions
diff --git a/Misc/NEWS b/Misc/NEWS
index 5436c25..2975c15 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 2?
Core and builtins
-----------------
+- Issue 2379: Raise a Py3K warning for __getitem__ or __getslice__ on
+ exception instances.
+
- Issue #2371: Add a Py3k warning when catching an exception that
doesn't derive from BaseException. Issue #2341: Add a Py3k warning
when raising an exception that doesn't derive from BaseException.
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
index b1d5d0b..aa9f516 100644
--- a/Objects/exceptions.c
+++ b/Objects/exceptions.c
@@ -189,6 +189,12 @@ static PyMethodDef BaseException_methods[] = {
static PyObject *
BaseException_getitem(PyBaseExceptionObject *self, Py_ssize_t index)
{
+ if (Py_Py3kWarningFlag) {
+ if (PyErr_Warn(PyExc_DeprecationWarning,
+ "In 3.x, __getitem__ is not supported for exception "
+ "classes, use args attribute") == -1)
+ return NULL;
+ }
return PySequence_GetItem(self->args, index);
}
@@ -196,6 +202,12 @@ static PyObject *
BaseException_getslice(PyBaseExceptionObject *self,
Py_ssize_t start, Py_ssize_t stop)
{
+ if (Py_Py3kWarningFlag) {
+ if (PyErr_Warn(PyExc_DeprecationWarning,
+ "In 3.x, __getslice__ is not supported for exception "
+ "classes, use args attribute") == -1)
+ return NULL;
+ }
return PySequence_GetSlice(self->args, start, stop);
}