Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/IPython/core/payload.py: 42%
19 statements
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-20 06:09 +0000
« prev ^ index » next coverage.py v7.4.4, created at 2024-04-20 06:09 +0000
1# -*- coding: utf-8 -*-
2"""Payload system for IPython.
4Authors:
6* Fernando Perez
7* Brian Granger
8"""
10#-----------------------------------------------------------------------------
11# Copyright (C) 2008-2011 The IPython Development Team
12#
13# Distributed under the terms of the BSD License. The full license is in
14# the file COPYING, distributed as part of this software.
15#-----------------------------------------------------------------------------
17#-----------------------------------------------------------------------------
18# Imports
19#-----------------------------------------------------------------------------
21from traitlets.config.configurable import Configurable
22from traitlets import List
24#-----------------------------------------------------------------------------
25# Main payload class
26#-----------------------------------------------------------------------------
28class PayloadManager(Configurable):
30 _payload = List([])
32 def write_payload(self, data, single=True):
33 """Include or update the specified `data` payload in the PayloadManager.
35 If a previous payload with the same source exists and `single` is True,
36 it will be overwritten with the new one.
37 """
39 if not isinstance(data, dict):
40 raise TypeError('Each payload write must be a dict, got: %r' % data)
42 if single and 'source' in data:
43 source = data['source']
44 for i, pl in enumerate(self._payload):
45 if 'source' in pl and pl['source'] == source:
46 self._payload[i] = data
47 return
49 self._payload.append(data)
51 def read_payload(self):
52 return self._payload
54 def clear_payload(self):
55 self._payload = []