Source code for ars.utils.containers

import collections # High-performance container datatypes


[docs]class Queue(object): """FIFO""" def __init__(self): self._queue = collections.deque()
[docs] def pull(self): """Remove and return the first element of the queue""" try: # Remove and return an element from the left side of the deque element = self._queue.popleft() except IndexError: raise Exception('no elements are present') return element
[docs] def put(self, element): """Appends the element as the last object of the queue""" self._queue.append(element) # Add x to the right side of the deque
[docs] def is_empty(self): return len(self._queue) == 0
[docs] def count(self): return len(self._queue)
[docs] def clear(self): """Remove all elements of the queue""" self._queue.clear()
[docs] def convert_to_list(self): """Return the elements in an ordered list""" return list(self._queue)
def __str__(self): line = '' data_list = self.convert_to_list() for item in data_list: line += '%s\n' % str(item) return line
# class Stack(Queue) # override 'put' and 'pull' methods, and change deque's called methods