# encoding: utf-8 """Storage for the responses from the interpreter.""" __docformat__ = "restructuredtext en" #------------------------------------------------------------------------------- # Copyright (C) 2008 The IPython Development Team # # Distributed under the terms of the BSD License. The full license is in # the file COPYING, distributed as part of this software. #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Imports #------------------------------------------------------------------------------- class IMessageCache(object): """ Storage for the response from the interpreter. """ def add_message(self, i, message): """ Add a message dictionary to the cache. Parameters ---------- i : int message : dict """ def get_message(self, i=None): """ Get the message from the cache. Parameters ---------- i : int, optional The number of the message. If not provided, return the highest-numbered message. Returns ------- message : dict Raises ------ IndexError if the message does not exist in the cache. """ class SimpleMessageCache(object): """ Simple dictionary-based, in-memory storage of the responses from the interpreter. """ def __init__(self): self.cache = {} def add_message(self, i, message): """ Add a message dictionary to the cache. Parameters ---------- i : int message : dict """ self.cache[i] = message def get_message(self, i=None): """ Get the message from the cache. Parameters ---------- i : int, optional The number of the message. If not provided, return the highest-numbered message. Returns ------- message : dict Raises ------ IndexError if the message does not exist in the cache. """ if i is None: keys = self.cache.keys() if len(keys) == 0: raise IndexError("index %r out of range" % i) else: i = max(self.cache.keys()) try: return self.cache[i] except KeyError: # IndexError is more appropriate, here. raise IndexError("index %r out of range" % i)