# -*- coding: utf-8 -*-
[docs]class Signal(object):
"""Signal class
Provides interfaces for set and get some globally shared variables(signals).
Attributes:
signals: A dict of all signal names and values.
init_status: The initial values of all signals.
"""
def __init__(self):
"""Init Signal with empty dicts"""
self._signals = {}
self._init_status = {}
[docs] def set(self, **signals):
"""Set signals.
Args:
signals: A dict(key-value pairs) of all signals. For example
{'signal1': True, 'signal2': 10}
"""
for name in signals:
if name not in self._signals:
self._init_status[name] = signals[name]
self._signals[name] = signals[name]
[docs] def reset(self):
"""Reset signals with their initial values"""
self._signals = self._init_status.copy()
[docs] def get(self, name):
"""Get a signal value by its name.
Args:
name: a string indicating the signal name.
Returns:
Value of the signal or None if the name is invalid.
"""
if name in self._signals:
return self._signals[name]
else:
return None
[docs] def names(self):
"""Return all the signal names"""
return self._signals.keys()