Got rid of error with channels and cells not being subscriptable, but now getting -3 error trying to set eq.channel[0].cell[0].on

This commit is contained in:
William Young 2025-06-15 11:48:17 -05:00
parent f8f10e358f
commit f702b4feb3
4 changed files with 47 additions and 80 deletions

View File

@ -88,6 +88,25 @@ class Bus(IRemote):
class BusEQ(IRemote): class BusEQ(IRemote):
@classmethod
def make(cls, remote, i):
"""
Factory method for BusEQ.
Returns a BusEQ class.
"""
kls = (cls,)
return type(
'BusEQ',
kls,
{
'channel': tuple(
BusEQCh.make(remote, j)
for j in range(remote.kind.channels)
)
},
)
@property @property
def identifier(self) -> str: def identifier(self) -> str:
return f'Bus[{self.index}].eq' return f'Bus[{self.index}].eq'
@ -109,15 +128,34 @@ class BusEQ(IRemote):
self.setter('ab', 1 if val else 0) self.setter('ab', 1 if val else 0)
class BusEQCh(IRemote): class BusEQCh(IRemote):
@classmethod
def make(cls, remote, i):
"""
Factory method for Bus EQ channel.
Returns a BusEQCh class.
"""
kls = (cls,)
return type(
'BusEQCh',
kls,
{
'cell': tuple(
BusEQChCell(remote, k)
for k in range(remote.kind.cells)
)
},
)
@property @property
def identifier(self) -> str: def identifier(self) -> str:
return f'Bus[{self.index}].eq.channel[{self.index}]' return f'channel[{self.index}]'
class BusEQChCell(IRemote): class BusEQChCell(IRemote):
@property @property
def identifier(self) -> str: def identifier(self) -> str:
return f'Bus[{self.index}].eq.channel[{self.index}].cell[{self.kndex}]' return f'cell[{self.index}]'
@property @property
def on(self) -> bool: def on(self) -> bool:
@ -300,20 +338,6 @@ def make_bus_level_map(kind):
_make_bus_level_maps = {kind.name: make_bus_level_map(kind) for kind in kinds.all} _make_bus_level_maps = {kind.name: make_bus_level_map(kind) for kind in kinds.all}
def _make_bus_eq(remote, i):
"""
Factory function for bus.eq.
Returns a BusEQ class of a kind.
"""
return type(
'BusEQ',
(),
{
'channel': BusEQCh(remote, i)
},
)
def _make_bus_mode_mixin(): def _make_bus_mode_mixin():
"""Creates a mixin of Bus Modes.""" """Creates a mixin of Bus Modes."""
@ -379,14 +403,13 @@ def bus_factory(is_phys_bus, remote, i) -> Union[PhysicalBus, VirtualBus]:
else VirtualBus.make(remote, i, remote.kind) else VirtualBus.make(remote, i, remote.kind)
) )
BUSMODEMIXIN_cls = _make_bus_mode_mixin() BUSMODEMIXIN_cls = _make_bus_mode_mixin()
BUSEQ_cls = _make_bus_eq(remote, i)
return type( return type(
f'{BUS_cls.__name__}{remote.kind}', f'{BUS_cls.__name__}{remote.kind}',
(BUS_cls,), (BUS_cls,),
{ {
'levels': BusLevel(remote, i), 'levels': BusLevel(remote, i),
'mode': BUSMODEMIXIN_cls(remote, i), 'mode': BUSMODEMIXIN_cls(remote, i),
'eq': BUSEQ_cls, 'eq': BusEQ.make(remote, i),
}, },
)(remote, i) )(remote, i)
@ -398,29 +421,3 @@ def request_bus_obj(phys_bus, remote, i) -> Bus:
Returns a reference to a bus subclass of a kind Returns a reference to a bus subclass of a kind
""" """
return bus_factory(phys_bus, remote, i) return bus_factory(phys_bus, remote, i)
def request_busCh_obj(channel, remote, i) -> BusEQCh:
"""
Bus EQ Channel entry point. Wraps factory method
Returns a reference to a bus EQ channel subcless of a kind
"""
kls = ()
BusEQChCls = type('channel',kls,{})
return type(
f'{BusEQChCls.__name__}{remote.kind}',
(BusEQChCls,){},
)()
def request_busChCe_obj(cell, remote, i) -> BusEQChCell:
"""
Bus EQ Channel Cell entry point. Wraps factory method
Returns a reference to a bus EQ channel cell subcless of a kind
"""
kls = ()
BusEQCellCls = type('cell',kls,{})
return type(
f'{BusEQCellCls.__name__}{remote.kind}',
(BusEQCellCls,){},
)()

View File

@ -6,8 +6,6 @@ from typing import Iterable
from . import misc from . import misc
from .bus import request_bus_obj as bus from .bus import request_bus_obj as bus
from .bus import request_busCh_obj as channel
from .bus import request_busChCe_obj as cell
from .command import Command from .command import Command
from .config import request_config as configs from .config import request_config as configs
from .device import Device from .device import Device
@ -32,7 +30,7 @@ class FactoryBuilder:
BuilderProgress = IntEnum( BuilderProgress = IntEnum(
'BuilderProgress', 'BuilderProgress',
'strip bus channels cells command macrobutton vban device option recorder patch fx', 'strip bus command macrobutton vban device option recorder patch fx',
start=0, start=0,
) )
@ -42,8 +40,6 @@ class FactoryBuilder:
self._info = ( self._info = (
f'Finished building strips for {self._factory}', f'Finished building strips for {self._factory}',
f'Finished building buses for {self._factory}', f'Finished building buses for {self._factory}',
f'Finished building channels for {self._factory}',
f'Finished building cells for {self._factory}',
f'Finished building commands for {self._factory}', f'Finished building commands for {self._factory}',
f'Finished building macrobuttons for {self._factory}', f'Finished building macrobuttons for {self._factory}',
f'Finished building vban in/out streams for {self._factory}', f'Finished building vban in/out streams for {self._factory}',
@ -74,20 +70,6 @@ class FactoryBuilder:
) )
return self return self
def make_channels(self):
self._factory.channels = tuple(
channel(i < self.kind.channels, self._factory, i)
for i in range(self.kind.channels)
)
return self
def make_cells(self):
self._factory.cells = tuple(
cell(i < self.kind.cells, self._factory, i)
for i in range(self.kind.cells)
)
return self
def make_command(self): def make_command(self):
self._factory.command = Command.make(self._factory) self._factory.command = Command.make(self._factory)
return self return self
@ -144,8 +126,6 @@ class FactoryBase(Remote):
self._steps = ( self._steps = (
self.builder.make_strip, self.builder.make_strip,
self.builder.make_bus, self.builder.make_bus,
self.builder.make_channels,
self.builder.make_cells,
self.builder.make_command, self.builder.make_command,
self.builder.make_macrobutton, self.builder.make_macrobutton,
self.builder.make_vban, self.builder.make_vban,

View File

@ -12,11 +12,9 @@ class IRemote(metaclass=ABCMeta):
Provides some default implementation Provides some default implementation
""" """
def __init__(self, remote, index=None):#, jndex = None, kndex = None): def __init__(self, remote, index=None):
self._remote = remote self._remote = remote
self.index = index self.index = index
#self.jndex = jndex
#self.kndex = kndex
self.logger = logger.getChild(self.__class__.__name__) self.logger = logger.getChild(self.__class__.__name__)
def getter(self, param, **kwargs): def getter(self, param, **kwargs):

View File

@ -66,14 +66,6 @@ class KindMapClass(metaclass=SingletonType):
def num_bus_levels(self) -> int: def num_bus_levels(self) -> int:
return 8 * (self.phys_out + self.virt_out) return 8 * (self.phys_out + self.virt_out)
@property
def num_bus_channels(self) -> int:
return self.channels
@property
def num_bus_cells(self) -> int:
return self.cells
def __str__(self) -> str: def __str__(self) -> str:
return self.name.capitalize() return self.name.capitalize()
@ -86,8 +78,8 @@ class BasicMap(KindMapClass):
asio: tuple = (0, 0) asio: tuple = (0, 0)
insert: int = 0 insert: int = 0
composite: int = 0 composite: int = 0
channels: int = 8 channels: int = 0
cells: int = 7 cells: int = 0
@dataclass(frozen=True) @dataclass(frozen=True)
@ -110,8 +102,8 @@ class PotatoMap(KindMapClass):
asio: tuple = (10, 8) asio: tuple = (10, 8)
insert: int = 34 insert: int = 34
composite: int = 8 composite: int = 8
channels: int = 0 channels: int = 9
cells: int = 0 cells: int = 7
def kind_factory(kind_id): def kind_factory(kind_id):