From 5d62fda35e0a7bafdc2277c5d25459da722d951b Mon Sep 17 00:00:00 2001 From: Stefan Behnel Date: Wed, 14 May 2008 21:39:24 +0200 Subject: [PATCH] __setslice__ and __delslice__ were removed in Py3 --- Cython/Compiler/ModuleNode.py | 3 ++- Cython/Compiler/TypeSlots.py | 10 +++++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py index 6a0aaf07..3a25b73e 100644 --- a/Cython/Compiler/ModuleNode.py +++ b/Cython/Compiler/ModuleNode.py @@ -20,7 +20,7 @@ import PyrexTypes import TypeSlots import Version -from Errors import error +from Errors import error, warning from PyrexTypes import py_object_type from Cython.Utils import open_new_file, replace_suffix @@ -707,6 +707,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") self.generate_ass_slice_function(scope, code) if scope.defines_any(["__getattr__","__getattribute__"]): self.generate_getattro_function(scope, code) diff --git a/Cython/Compiler/TypeSlots.py b/Cython/Compiler/TypeSlots.py index 63439e94..d05edb61 100644 --- a/Cython/Compiler/TypeSlots.py +++ b/Cython/Compiler/TypeSlots.py @@ -212,8 +212,8 @@ class InternalMethodSlot(SlotDescriptor): # # slot_name string Member name of the slot in the type object - def __init__(self, slot_name): - SlotDescriptor.__init__(self, slot_name) + def __init__(self, slot_name, py3k = True): + SlotDescriptor.__init__(self, slot_name, py3k = py3k) def slot_code(self, scope): return scope.mangle_internal(self.slot_name) @@ -271,8 +271,8 @@ class SyntheticSlot(InternalMethodSlot): # alternative default value will be placed in the type # slot. - def __init__(self, slot_name, user_methods, default_value): - InternalMethodSlot.__init__(self, slot_name) + def __init__(self, slot_name, user_methods, default_value, py3k = True): + InternalMethodSlot.__init__(self, slot_name, py3k = py3k) self.user_methods = user_methods self.default_value = default_value @@ -574,7 +574,7 @@ PySequenceMethods = ( SyntheticSlot("sq_item", ["__getitem__"], "0"), #EmptySlot("sq_item"), # mp_subscript used instead MethodSlot(ssizessizeargfunc, "sq_slice", "__getslice__"), EmptySlot("sq_ass_item"), # mp_ass_subscript used instead - SyntheticSlot("sq_ass_slice", ["__setslice__", "__delslice__"], "0"), + SyntheticSlot("sq_ass_slice", ["__setslice__", "__delslice__"], "0", py3k = False), MethodSlot(cmpfunc, "sq_contains", "__contains__"), EmptySlot("sq_inplace_concat"), # nb_inplace_add used instead EmptySlot("sq_inplace_repeat"), # nb_inplace_multiply used instead -- 2.26.2