payload.py
55 lines
| 1.7 KiB
| text/x-python
|
PythonLexer
Brian Granger
|
r2807 | # -*- coding: utf-8 -*- | ||
"""Payload system for IPython. | ||||
Authors: | ||||
* Fernando Perez | ||||
* Brian Granger | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
Matthias BUSSONNIER
|
r5390 | # Copyright (C) 2008-2011 The IPython Development Team | ||
Brian Granger
|
r2807 | # | ||
# Distributed under the terms of the BSD License. The full license is in | ||||
# the file COPYING, distributed as part of this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
from IPython.config.configurable import Configurable | ||||
Brian Granger
|
r2812 | from IPython.utils.traitlets import List | ||
Brian Granger
|
r2807 | |||
#----------------------------------------------------------------------------- | ||||
# Main payload class | ||||
#----------------------------------------------------------------------------- | ||||
class PayloadManager(Configurable): | ||||
Brian Granger
|
r2812 | _payload = List([]) | ||
Brian Granger
|
r2807 | |||
Pablo de Oliveira
|
r12933 | def write_payload(self, data, single=True): | ||
"""Include or update the specified `data` payload in the PayloadManager. | ||||
Pablo de Oliveira
|
r12952 | If a previous payload with the same source exists and `single` is True, | ||
it will be overwritten with the new one. | ||||
Pablo de Oliveira
|
r12933 | """ | ||
Brian Granger
|
r2812 | if not isinstance(data, dict): | ||
raise TypeError('Each payload write must be a dict, got: %r' % data) | ||||
Pablo de Oliveira
|
r12931 | |||
Pablo de Oliveira
|
r12933 | if single and 'source' in data: | ||
Pablo de Oliveira
|
r12931 | source = data['source'] | ||
Pablo de Oliveira
|
r12932 | for i, pl in enumerate(self._payload): | ||
Pablo de Oliveira
|
r12931 | if 'source' in pl and pl['source'] == source: | ||
self._payload[i] = data | ||||
return | ||||
Brian Granger
|
r2814 | self._payload.append(data) | ||
Brian Granger
|
r2807 | |||
def read_payload(self): | ||||
return self._payload | ||||
Brian Granger
|
r2814 | |||
def clear_payload(self): | ||||
self._payload = [] | ||||