Esempio n. 1
0
    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)
Esempio n. 2
0
	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)
Esempio n. 3
0
	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)
Esempio n. 4
0
	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)
Esempio n. 5
0
    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)
Esempio n. 6
0
    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)
Esempio n. 7
0
    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)
Esempio n. 8
0
	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)
Esempio n. 9
0
	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)
Esempio n. 10
0
    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)