From ee9a073033f738343b6595aa58ea034a2003f3e4 Mon Sep 17 00:00:00 2001 From: Robert Bradshaw Date: Thu, 22 Oct 2009 22:39:44 -0700 Subject: [PATCH] Fix ticket #215, explicit error for __getslice__, __delslice__ in Py3. --- Cython/Compiler/ModuleNode.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index 1db9b6fc..bb93e7b0 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -870,7 +870,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): if scope.defines_any(["__setitem__", "__delitem__"]): self.generate_ass_subscript_function(scope, code) if scope.defines_any(["__setslice__", "__delslice__"]): - warning(self.pos, "__setslice__ and __delslice__ are not supported by Python 3", 1) + warning(self.pos, "__setslice__ and __delslice__ are not supported by Python 3, use __setitem__ and __getitem__ instead", 1) self.generate_ass_slice_function(scope, code) if scope.defines_any(["__getattr__","__getattribute__"]): self.generate_getattro_function(scope, code) @@ -1197,6 +1197,9 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): # Setting and deleting a slice are both done through # the ass_slice method, so we dispatch to user's __setslice__ # or __delslice__, or raise an exception. + code.putln("#if PY_MAJOR_VERSION >= 3") + code.putln("#error __setslice__ and __delslice__ not supported in Python 3.") + code.putln("#endif") base_type = scope.parent_type.base_type set_entry = scope.lookup_here("__setslice__") del_entry = scope.lookup_here("__delslice__") -- 2.26.2