advanced-python-homework-2023/scada_system/equipment/turtle_device.py

41 lines
1.1 KiB
Python
Raw Normal View History

2023-10-27 00:21:53 +03:00
import turtle
from typing import Optional, Collection, Any
from controls.device import SynchronyDevice
import time
import inspect
class TurtleDevice(SynchronyDevice):
def open(self):
super().open()
turtle.Turtle()
def close(self):
super().close()
turtle.bye()
def execute(self, action_name: str, *args, **kwargs):
getattr(turtle, action_name)(args[0], *kwargs)
def read(self, trait_name: str):
pass
def write(self, trait_name: str, value: Any) -> bool:
pass
def invalidate(self, trait_name: str):
pass
def trait_descriptors(self):
traits = [attr for attr in turtle.Turtle.__dict__
if attr.startswith('__') and not attr.startswith('_')]
return traits
def action_descriptors(self):
actions = [(name, func.__doc__) for name, func in inspect.getmembers(turtle.Turtle)
if callable(func) and not name.startswith('__') and not name.startswith('_')]
return actions
def __getitem__(self, trait_name: str):
"""Return logical state of trait `trait_name`."""
pass