From 593ad6b45cb2890428a5902d968432be2e537c2e Mon Sep 17 00:00:00 2001 From: ilia Date: Tue, 24 Oct 2023 10:28:38 +0300 Subject: [PATCH] rewrite get_descriptors to use __dict__ --- turtle/equipment/turtle_device.py | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) diff --git a/turtle/equipment/turtle_device.py b/turtle/equipment/turtle_device.py index 0946afd..39b922f 100644 --- a/turtle/equipment/turtle_device.py +++ b/turtle/equipment/turtle_device.py @@ -7,6 +7,7 @@ import inspect class TurtleDevice(SynchronyDevice): def open(self): + self.turtle = Turtle() super().open() def close(self): @@ -38,38 +39,25 @@ class TurtleDevice(SynchronyDevice): def get_descriptors(self): descriptors = dict(actions=dict(), traits=dict()) + for k, v in self.turtle.__dict__.items(): + if not k.startswith("_"): + descriptors["traits"][k] = v + for m_name, member in inspect.getmembers(Turtle): if m_name.startswith("_"): continue if m_name.lower() != m_name: continue doc = inspect.getdoc(member) if doc is None: continue - first_line_doc = inspect.getdoc(member).lower().split("\n")[0] - print(first_line_doc) if not inspect.isfunction(member): descriptors["traits"][m_name] = TraitDescriptor(m_name, doc, readable=True, writable=False) - print(m_name) - continue - if inspect.ismethod(member): - print(m_name) - return_in_doc = ("return" in first_line_doc) - set_in_doc = ("set" in first_line_doc) - - if return_in_doc or set_in_doc: - descriptors["traits"][m_name] = TraitDescriptor(m_name, - doc, - readable=return_in_doc, - writable=set_in_doc) - print("TRAIT") else: sig = inspect.signature(member) params_dict = dict(sig.parameters) descriptors["actions"][m_name] = ActionDescriptor(m_name, arguments=params_dict, info=doc) - print("ACTION") - print("------------------------------------------") return descriptors