12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- # -*- coding: utf-8 -*-
- """Payload system for IPython.
- Authors:
- * Fernando Perez
- * Brian Granger
- """
- #-----------------------------------------------------------------------------
- # Copyright (C) 2008-2011 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
- #-----------------------------------------------------------------------------
- from traitlets.config.configurable import Configurable
- from traitlets import List
- #-----------------------------------------------------------------------------
- # Main payload class
- #-----------------------------------------------------------------------------
- class PayloadManager(Configurable):
- _payload = List([])
- def write_payload(self, data, single=True):
- """Include or update the specified `data` payload in the PayloadManager.
- If a previous payload with the same source exists and `single` is True,
- it will be overwritten with the new one.
- """
- if not isinstance(data, dict):
- raise TypeError('Each payload write must be a dict, got: %r' % data)
- if single and 'source' in data:
- source = data['source']
- for i, pl in enumerate(self._payload):
- if 'source' in pl and pl['source'] == source:
- self._payload[i] = data
- return
- self._payload.append(data)
- def read_payload(self):
- return self._payload
- def clear_payload(self):
- self._payload = []
|