Commit 5d62fda3 authored by Stefan Behnel's avatar Stefan Behnel

__setslice__ and __delslice__ were removed in Py3

parent 5cb5c685
...@@ -20,7 +20,7 @@ import PyrexTypes ...@@ -20,7 +20,7 @@ import PyrexTypes
import TypeSlots import TypeSlots
import Version import Version
from Errors import error from Errors import error, warning
from PyrexTypes import py_object_type from PyrexTypes import py_object_type
from Cython.Utils import open_new_file, replace_suffix from Cython.Utils import open_new_file, replace_suffix
...@@ -707,6 +707,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode): ...@@ -707,6 +707,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
if scope.defines_any(["__setitem__", "__delitem__"]): if scope.defines_any(["__setitem__", "__delitem__"]):
self.generate_ass_subscript_function(scope, code) self.generate_ass_subscript_function(scope, code)
if scope.defines_any(["__setslice__", "__delslice__"]): 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) self.generate_ass_slice_function(scope, code)
if scope.defines_any(["__getattr__","__getattribute__"]): if scope.defines_any(["__getattr__","__getattribute__"]):
self.generate_getattro_function(scope, code) self.generate_getattro_function(scope, code)
......
...@@ -212,8 +212,8 @@ class InternalMethodSlot(SlotDescriptor): ...@@ -212,8 +212,8 @@ class InternalMethodSlot(SlotDescriptor):
# #
# slot_name string Member name of the slot in the type object # slot_name string Member name of the slot in the type object
def __init__(self, slot_name): def __init__(self, slot_name, py3k = True):
SlotDescriptor.__init__(self, slot_name) SlotDescriptor.__init__(self, slot_name, py3k = py3k)
def slot_code(self, scope): def slot_code(self, scope):
return scope.mangle_internal(self.slot_name) return scope.mangle_internal(self.slot_name)
...@@ -271,8 +271,8 @@ class SyntheticSlot(InternalMethodSlot): ...@@ -271,8 +271,8 @@ class SyntheticSlot(InternalMethodSlot):
# alternative default value will be placed in the type # alternative default value will be placed in the type
# slot. # slot.
def __init__(self, slot_name, user_methods, default_value): def __init__(self, slot_name, user_methods, default_value, py3k = True):
InternalMethodSlot.__init__(self, slot_name) InternalMethodSlot.__init__(self, slot_name, py3k = py3k)
self.user_methods = user_methods self.user_methods = user_methods
self.default_value = default_value self.default_value = default_value
...@@ -574,7 +574,7 @@ PySequenceMethods = ( ...@@ -574,7 +574,7 @@ PySequenceMethods = (
SyntheticSlot("sq_item", ["__getitem__"], "0"), #EmptySlot("sq_item"), # mp_subscript used instead SyntheticSlot("sq_item", ["__getitem__"], "0"), #EmptySlot("sq_item"), # mp_subscript used instead
MethodSlot(ssizessizeargfunc, "sq_slice", "__getslice__"), MethodSlot(ssizessizeargfunc, "sq_slice", "__getslice__"),
EmptySlot("sq_ass_item"), # mp_ass_subscript used instead 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__"), MethodSlot(cmpfunc, "sq_contains", "__contains__"),
EmptySlot("sq_inplace_concat"), # nb_inplace_add used instead EmptySlot("sq_inplace_concat"), # nb_inplace_add used instead
EmptySlot("sq_inplace_repeat"), # nb_inplace_multiply used instead EmptySlot("sq_inplace_repeat"), # nb_inplace_multiply used instead
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment