mirror of
https://github.com/onyx-and-iris/xair-api-python.git
synced 2024-11-22 04:40:58 +00:00
f8c6659fd8
now packaged with poetry and added to pypi using tomllib, requires python 3.11 readme, changelog updated to reflect changes major version bump
61 lines
1.5 KiB
Python
61 lines
1.5 KiB
Python
import abc
|
|
|
|
from .errors import XAirRemoteError
|
|
from .shared import EQ, GEQ, Automix, Config, Dyn, Gate, Group, Insert, Mix, Preamp
|
|
|
|
|
|
class ILR(abc.ABC):
|
|
"""Abstract Base Class for buses"""
|
|
|
|
def __init__(self, remote):
|
|
self._remote = remote
|
|
|
|
def getter(self, param: str):
|
|
self._remote.send(f"{self.address}/{param}")
|
|
return self._remote.info_response
|
|
|
|
def setter(self, param: str, val: int):
|
|
self._remote.send(f"{self.address}/{param}", val)
|
|
|
|
@abc.abstractmethod
|
|
def address(self):
|
|
pass
|
|
|
|
|
|
class LR(ILR):
|
|
"""Concrete class for buses"""
|
|
|
|
@classmethod
|
|
def make(cls, remote):
|
|
"""
|
|
Factory function for LR
|
|
|
|
Creates a mixin of shared subclasses, sets them as class attributes.
|
|
|
|
Returns an LR class of a kind.
|
|
"""
|
|
LR_cls = type(
|
|
f"LR{remote.kind}",
|
|
(cls,),
|
|
{
|
|
**{
|
|
_cls.__name__.lower(): type(
|
|
f"{_cls.__name__}{remote.kind}", (_cls, cls), {}
|
|
)(remote)
|
|
for _cls in (
|
|
Config,
|
|
Dyn,
|
|
Insert,
|
|
GEQ.make(),
|
|
EQ.make_sixband(cls, remote),
|
|
Mix,
|
|
)
|
|
},
|
|
},
|
|
)
|
|
return LR_cls(remote)
|
|
|
|
@property
|
|
def address(self) -> str:
|
|
return f"/lr"
|