def __setitem__(self, i, item): if isinstance(i, slice): start, stop, step = i.indices(len(self)) items = item if self.__class__.is_heading(items): items = (items, ) items = flatten_list(items) for head in items: if not self.__class__.is_heading(head): raise ValueError( u'List contains items that are not a heading!') self._add_to_deleted_headings(self[i]) self._associate_heading( items, self[start - 1] if start - 1 >= 0 else None, self[stop] if stop < len(self) else None) MultiPurposeList.__setitem__(self, i, items) else: if not self.__class__.is_heading(item): raise ValueError(u'Item is not a heading!') if item in self: raise ValueError(u'Heading is already part of this list!') self._add_to_deleted_headings(self[i]) self._associate_heading(item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if isinstance(i, slice): o = item if self.__class__.is_domobj(o): o = (o,) o = flatten_list(o) for item in o: if not self.__class__.is_domobj(item): raise ValueError(u'List contains items that are not a Dom obj!') # self._add_to_deleted_domobjs(self[i:j]) # self._associate_domobj(o, \ # self[i - 1] if i - 1 >= 0 and i < len(self) else None, \ # self[j] if j >= 0 and j < len(self) else None) MultiPurposeList.__setitem__(self, i, o) else: if not self.__class__.is_domobj(item): raise ValueError(u'Item is not a Dom obj!') if item in self: raise ValueError(u'Dom obj is already part of this list!') # self._add_to_deleted_domobjs(self[i]) # self._associate_domobj(item, \ # self[i - 1] if i - 1 >= 0 else None, \ # self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if isinstance(i, slice): o = item if self.__class__.is_domobj(o): o = (o, ) o = flatten_list(o) for item in o: if not self.__class__.is_domobj(item): raise ValueError(u'List contains items that are not a Dom obj!') # self._add_to_deleted_domobjs(self[i:j]) # self._associate_domobj(o, \ # self[i - 1] if i - 1 >= 0 and i < len(self) else None, \ # self[j] if j >= 0 and j < len(self) else None) MultiPurposeList.__setitem__(self, i, o) else: if not self.__class__.is_domobj(item): raise ValueError(u'Item is not a Dom obj!') if item in self: raise ValueError(u'Dom obj is already part of this list!') # self._add_to_deleted_domobjs(self[i]) # self._associate_domobj(item, \ # self[i - 1] if i - 1 >= 0 else None, \ # self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if isinstance(i, slice): start, stop, step = i.indices(len(self)) items = item if self.__class__.is_heading(items): items = (items, ) items = flatten_list(items) for head in items: if not self.__class__.is_heading(head): raise ValueError(u'List contains items that are not a heading!') self._add_to_deleted_headings(self[i]) self._associate_heading( items, self[start - 1] if start - 1 >= 0 else None, self[stop] if stop < len(self) else None) MultiPurposeList.__setitem__(self, i, items) else: if not self.__class__.is_heading(item): raise ValueError(u'Item is not a heading!') if item in self: raise ValueError(u'Heading is already part of this list!') self._add_to_deleted_headings(self[i]) self._associate_heading( item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if not self.__class__.is_heading(item): raise ValueError(u"Item is not a heading!") if item in self: raise ValueError(u"Heading is already part of this list!") self._add_to_deleted_headings(self[i]) self._associate_heading(item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if not self.__class__.is_heading(item): raise ValueError(u'Item is not a heading!') if item in self: raise ValueError(u'Heading is already part of this list!') self._add_to_deleted_headings(self[i]) self._associate_heading(item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if not self.__class__.is_domobj(item): raise ValueError(u'Item is not a Dom obj!') if item in self: raise ValueError(u'Dom obj is already part of this list!') # self._add_to_deleted_domobjs(self[i]) # self._associate_domobj(item, \ # self[i - 1] if i - 1 >= 0 else None, \ # self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): if not self.__class__.is_domobj(item): raise ValueError(u'Item is not a Dom obj!') if item in self: raise ValueError(u'Dom obj is already part of this list!') # self._add_to_deleted_domobjs(self[i]) # self._associate_domobj(item, \ # self[i - 1] if i - 1 >= 0 else None, \ # self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): # TODO rewrite this so that it can work when item is a tuple and i is slice # it should be made to work with any item that is iterable # It is also very poor design to just check for tuple and not raise any # errors otherwise or implement list also # TODO slice must differentiate between couple of cases: # slice(None,None) # slice(int, None) # slice(None, int) # this must be done because of _associate_heading and other methods # that dont take into account slicing if isinstance(i, slice): # TODO fix this mess it is only copy pasted from setslice sl = i o = item if self.__class__.is_heading(o): o = (o, ) o = flatten_list(o) for head in o: if not self.__class__.is_heading(head): raise ValueError(u'List contains items that are not a heading!') i = sl.start if sl.start is not None else 0 j = sl.stop if sl.stop is not None else len(self) - 1 self._add_to_deleted_headings(self[sl]) self._associate_heading( o, self[i - 1] if i - 1 >= 0 and i < len(self) else None, self[j] if j >= 0 and j < len(self) else None) MultiPurposeList.__setitem__(self, sl, o) else: if not self.__class__.is_heading(item): raise ValueError(u'Item is not a heading!') if item in self: raise ValueError(u'Heading is already part of this list!') self._add_to_deleted_headings(self[i]) self._associate_heading( item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)
def __setitem__(self, i, item): # TODO rewrite this so that it can work when item is a tuple and i is slice # it should be made to work with any item that is iterable # It is also very poor design to just check for tuple and not raise any # errors otherwise or implement list also # TODO slice must differentiate between couple of cases: # slice(None,None) # slice(int, None) # slice(None, int) # this must be done because of _associate_heading and other methods # that dont take into account slicing if isinstance(i, slice): # TODO fix this mess it is only copy pasted from setslice sl = i o = item if self.__class__.is_heading(o): o = (o, ) o = flatten_list(o) for head in o: if not self.__class__.is_heading(head): raise ValueError( u'List contains items that are not a heading!') i = sl.start if sl.start is not None else 0 j = sl.stop if sl.stop is not None else len(self) - 1 self._add_to_deleted_headings(self[sl]) self._associate_heading( o, self[i - 1] if i - 1 >= 0 and i < len(self) else None, self[j] if j >= 0 and j < len(self) else None) MultiPurposeList.__setitem__(self, sl, o) else: if not self.__class__.is_heading(item): raise ValueError(u'Item is not a heading!') if item in self: raise ValueError(u'Heading is already part of this list!') self._add_to_deleted_headings(self[i]) self._associate_heading(item, self[i - 1] if i - 1 >= 0 else None, self[i + 1] if i + 1 < len(self) else None) MultiPurposeList.__setitem__(self, i, item)