major version bump due to dependency change.

now packaged with poetry.
added to pypi.

major version bump due to dependency change.

interface reworked to match the remote-api interface.

readme updated with changes to installation

pre-commit hook temporarily removed
This commit is contained in:
onyx-and-iris
2022-06-16 16:10:06 +01:00
parent 933d182f60
commit b9db01c8f4
35 changed files with 1800 additions and 1251 deletions

49
vban_cmd/command.py Normal file
View File

@@ -0,0 +1,49 @@
from .error import VMCMDErrors
from .iremote import IRemote
from .meta import action_prop
class Command(IRemote):
"""
Implements the common interface
Defines concrete implementation for command
"""
@classmethod
def make(cls, remote):
"""
Factory function for command class.
Returns a Command class of a kind.
"""
CMD_cls = type(
f"Command{remote.kind}",
(cls,),
{
**{
param: action_prop(param)
for param in ["show", "shutdown", "restart"]
},
"hide": action_prop("show", val=0),
},
)
return CMD_cls(remote)
@property
def identifier(self) -> str:
return "Command"
def set_showvbanchat(self, val: bool):
if not isinstance(val, bool) and val not in (0, 1):
raise VMCMDErrors("showvbanchat is a boolean parameter")
self.setter("DialogShow.VBANCHAT", 1 if val else 0)
showvbanchat = property(fset=set_showvbanchat)
def set_lock(self, val: bool):
if not isinstance(val, bool) and val not in (0, 1):
raise VMCMDErrors("lock is a boolean parameter")
self.setter("lock", 1 if val else 0)
lock = property(fset=set_lock)