Source code for bibliopixel.drivers.mirror

from .. project import construct
from . driver_base import DriverBase

import copy


[docs]class Mirror(DriverBase):
[docs] @staticmethod def pre_recursion(desc): if 'drivers' not in desc: raise ValueError('MirrorDriver must have a drivers section') DriverBase.pre_recursion(desc) old_desc, desc = desc, {} for name in 'typename', 'datatype', 'drivers': value = old_desc.pop(name, None) if value is not None: desc[name] = value desc['drivers'] = [construct.to_type(d) for d in desc['drivers']] desc['drivers'] = [dict(d, **old_desc) for d in desc['drivers']] desc['num'] = old_desc['num'] return desc
CHILDREN = 'drivers', def __init__(self, num=0, *, drivers, **kwds): super().__init__(num, **kwds) self.drivers = drivers def forward(name): def method(*args, **kwds): for d in self.drivers: getattr(d, name)(*args, **kwds) return method self.cleanup = forward('cleanup') self.set_colors = forward('set_colors') self.set_pixel_positions = forward('set_pixel_positions') self.start = forward('start') self.sync = forward('sync') self.update_colors = forward('update_colors')
from .. util import deprecated if deprecated.allowed(): # pragma: no cover MirrorDriver = Mirror