summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2008-08-24 18:10:20 (GMT)
committerBenjamin Peterson <benjamin@python.org>2008-08-24 18:10:20 (GMT)
commit712ee923092ef1b47c72914c5e2950be2f05f527 (patch)
tree9d6052ea7c1f7dc65c45568f847f762de71f8871 /Objects
parenta403e4141afb5dfff41d5844e32d94bc7d341c17 (diff)
downloadcpython-712ee923092ef1b47c72914c5e2950be2f05f527.zip
cpython-712ee923092ef1b47c72914c5e2950be2f05f527.tar.gz
cpython-712ee923092ef1b47c72914c5e2950be2f05f527.tar.bz2
generate py3k warnings on __getslice__, __delslice__, and __setslice__
Reviewer: Brett Cannon
Diffstat (limited to 'Objects')
-rw-r--r--Objects/classobject.c27
-rw-r--r--Objects/typeobject.c28
2 files changed, 47 insertions, 8 deletions
diff --git a/Objects/classobject.c b/Objects/classobject.c
index caf6b3e..7d3d048 100644
--- a/Objects/classobject.c
+++ b/Objects/classobject.c
@@ -1174,8 +1174,15 @@ instance_slice(PyInstanceObject *inst, Py_ssize_t i, Py_ssize_t j)
if (func == NULL)
return NULL;
arg = Py_BuildValue("(N)", _PySlice_FromIndices(i, j));
- } else
+ }
+ else {
+ if (PyErr_WarnPy3k("in 3.x, __getslice__ has been removed; "
+ "use __getitem__", 1) < 0) {
+ Py_DECREF(func);
+ return NULL;
+ }
arg = Py_BuildValue("(nn)", i, j);
+ }
if (arg == NULL) {
Py_DECREF(func);
@@ -1257,8 +1264,15 @@ instance_ass_slice(PyInstanceObject *inst, Py_ssize_t i, Py_ssize_t j, PyObject
arg = Py_BuildValue("(N)",
_PySlice_FromIndices(i, j));
- } else
+ }
+ else {
+ if (PyErr_WarnPy3k("in 3.x, __delslice__ has been "
+ "removed; use __delitem__", 1) < 0) {
+ Py_DECREF(func);
+ return -1;
+ }
arg = Py_BuildValue("(nn)", i, j);
+ }
}
else {
if (setslicestr == NULL) {
@@ -1284,8 +1298,15 @@ instance_ass_slice(PyInstanceObject *inst, Py_ssize_t i, Py_ssize_t j, PyObject
arg = Py_BuildValue("(NO)",
_PySlice_FromIndices(i, j), value);
- } else
+ }
+ else {
+ if (PyErr_WarnPy3k("in 3.x, __setslice__ has been "
+ "removed; use __setitem__", 1) < 0) {
+ Py_DECREF(func);
+ return -1;
+ }
arg = Py_BuildValue("(nnO)", i, j, value);
+ }
}
if (arg == NULL) {
Py_DECREF(func);
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index 42974f8..02b5012 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4897,7 +4897,17 @@ slot_sq_item(PyObject *self, Py_ssize_t i)
return NULL;
}
-SLOT2(slot_sq_slice, "__getslice__", Py_ssize_t, Py_ssize_t, "nn")
+static PyObject*
+slot_sq_slice(PyObject *self, Py_ssize_t i, Py_ssize_t j)
+{
+ static PyObject *getslice_str;
+
+ if (PyErr_WarnPy3k("in 3.x, __getslice__ has been removed; "
+ "use __getitem__", 1) < 0)
+ return NULL;
+ return call_method(self, "__getslice__", &getslice_str,
+ "nn", i, j);
+}
static int
slot_sq_ass_item(PyObject *self, Py_ssize_t index, PyObject *value)
@@ -4922,13 +4932,21 @@ slot_sq_ass_slice(PyObject *self, Py_ssize_t i, Py_ssize_t j, PyObject *value)
{
PyObject *res;
static PyObject *delslice_str, *setslice_str;
-
- if (value == NULL)
+
+ if (value == NULL) {
+ if (PyErr_WarnPy3k("in 3.x, __delslice__ has been removed; "
+ "use __delitem__", 1) < 0)
+ return -1;
res = call_method(self, "__delslice__", &delslice_str,
"(nn)", i, j);
- else
+ }
+ else {
+ if (PyErr_WarnPy3k("in 3.x, __setslice__ has been removed; "
+ "use __setitem__", 1) < 0)
+ return -1;
res = call_method(self, "__setslice__", &setslice_str,
- "(nnO)", i, j, value);
+ "(nnO)", i, j, value);
+ }
if (res == NULL)
return -1;
Py_DECREF(res);