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
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)
#
# 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)
# 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
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