From f1407f1d9c2c6f87c06ade995e4affaef4461139 Mon Sep 17 00:00:00 2001 From: David Vo Date: Sat, 11 Jan 2025 23:27:01 +1100 Subject: [PATCH 1/3] pyntcore: Add repr for entries and topics --- .../pyntcore/gen/NetworkTableEntry.yml | 4 ++++ subprojects/pyntcore/gen/Topic.yml | 18 ++++++++++++++++++ subprojects/pyntcore/tests/test_entry.py | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+) diff --git a/subprojects/pyntcore/gen/NetworkTableEntry.yml b/subprojects/pyntcore/gen/NetworkTableEntry.yml index cb9e5887a..a771367bd 100644 --- a/subprojects/pyntcore/gen/NetworkTableEntry.yml +++ b/subprojects/pyntcore/gen/NetworkTableEntry.yml @@ -100,3 +100,7 @@ classes: GetTopic: operator==: operator!=: + inline_code: | + .def("__repr__", [](const NetworkTableEntry &self) { + return py::str("").format(self.GetName()); + }) diff --git a/subprojects/pyntcore/gen/Topic.yml b/subprojects/pyntcore/gen/Topic.yml index 335f9f80e..74d55c898 100644 --- a/subprojects/pyntcore/gen/Topic.yml +++ b/subprojects/pyntcore/gen/Topic.yml @@ -44,6 +44,12 @@ classes: std::string_view, const PubSubOptions&: operator==: operator!=: + inline_code: | + .def("__repr__", [](py::handle self) { + py::object type_name = self.get_type().attr("__qualname__"); + std::string name = self.cast().GetName(); + return py::str("<{} {}>").format(type_name, name); + }) Subscriber: attributes: m_subHandle: @@ -59,6 +65,12 @@ classes: ignore: true NT_Subscriber: ignore: true + inline_code: | + .def("__repr__", [](py::handle self) { + py::object type_name = self.get_type().attr("__qualname__"); + auto topic = self.cast().GetTopic(); + return py::str("<{} {}>").format(type_name, topic.GetName()); + }) Publisher: attributes: m_pubHandle: @@ -72,3 +84,9 @@ classes: ignore: true NT_Publisher: ignore: true + inline_code: | + .def("__repr__", [](py::handle self) { + py::object type_name = self.get_type().attr("__qualname__"); + auto topic = self.cast().GetTopic(); + return py::str("<{} {}>").format(type_name, topic.GetName()); + }) diff --git a/subprojects/pyntcore/tests/test_entry.py b/subprojects/pyntcore/tests/test_entry.py index 4094e9c6a..d664bc26b 100644 --- a/subprojects/pyntcore/tests/test_entry.py +++ b/subprojects/pyntcore/tests/test_entry.py @@ -3,6 +3,25 @@ # +def test_entry_repr(nt): + e = nt.getEntry("/k1") + assert repr(e) == "" + + +def test_topic_repr(nt): + topic = nt.getIntegerTopic("/int") + assert repr(topic) == "" + + pub = topic.publish() + assert repr(pub) == "" + + entry = topic.getEntry(0) + assert repr(entry) == "" + + generic_entry = topic.getGenericEntry() + assert repr(generic_entry) == "" + + def test_entry_string(nt): e = nt.getEntry("/k1") assert e.getString(None) is None From 1687e1e6a1cda8561fa5b42e61dcd5753f154666 Mon Sep 17 00:00:00 2001 From: David Vo Date: Sun, 12 Jan 2025 00:58:39 +1100 Subject: [PATCH 2/3] repr key --- subprojects/pyntcore/gen/NetworkTableEntry.yml | 2 +- subprojects/pyntcore/gen/Topic.yml | 6 +++--- subprojects/pyntcore/tests/test_entry.py | 10 +++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/subprojects/pyntcore/gen/NetworkTableEntry.yml b/subprojects/pyntcore/gen/NetworkTableEntry.yml index a771367bd..ca7afeb98 100644 --- a/subprojects/pyntcore/gen/NetworkTableEntry.yml +++ b/subprojects/pyntcore/gen/NetworkTableEntry.yml @@ -102,5 +102,5 @@ classes: operator!=: inline_code: | .def("__repr__", [](const NetworkTableEntry &self) { - return py::str("").format(self.GetName()); + return py::str("").format(self.GetName()); }) diff --git a/subprojects/pyntcore/gen/Topic.yml b/subprojects/pyntcore/gen/Topic.yml index 74d55c898..791822687 100644 --- a/subprojects/pyntcore/gen/Topic.yml +++ b/subprojects/pyntcore/gen/Topic.yml @@ -48,7 +48,7 @@ classes: .def("__repr__", [](py::handle self) { py::object type_name = self.get_type().attr("__qualname__"); std::string name = self.cast().GetName(); - return py::str("<{} {}>").format(type_name, name); + return py::str("<{} {!r}>").format(type_name, name); }) Subscriber: attributes: @@ -69,7 +69,7 @@ classes: .def("__repr__", [](py::handle self) { py::object type_name = self.get_type().attr("__qualname__"); auto topic = self.cast().GetTopic(); - return py::str("<{} {}>").format(type_name, topic.GetName()); + return py::str("<{} {!r}>").format(type_name, topic.GetName()); }) Publisher: attributes: @@ -88,5 +88,5 @@ classes: .def("__repr__", [](py::handle self) { py::object type_name = self.get_type().attr("__qualname__"); auto topic = self.cast().GetTopic(); - return py::str("<{} {}>").format(type_name, topic.GetName()); + return py::str("<{} {!r}>").format(type_name, topic.GetName()); }) diff --git a/subprojects/pyntcore/tests/test_entry.py b/subprojects/pyntcore/tests/test_entry.py index d664bc26b..514227519 100644 --- a/subprojects/pyntcore/tests/test_entry.py +++ b/subprojects/pyntcore/tests/test_entry.py @@ -5,21 +5,21 @@ def test_entry_repr(nt): e = nt.getEntry("/k1") - assert repr(e) == "" + assert repr(e) == "" def test_topic_repr(nt): topic = nt.getIntegerTopic("/int") - assert repr(topic) == "" + assert repr(topic) == "" pub = topic.publish() - assert repr(pub) == "" + assert repr(pub) == "" entry = topic.getEntry(0) - assert repr(entry) == "" + assert repr(entry) == "" generic_entry = topic.getGenericEntry() - assert repr(generic_entry) == "" + assert repr(generic_entry) == "" def test_entry_string(nt): From a7af0b634d1639d76274e8fc52c7116ed943c429 Mon Sep 17 00:00:00 2001 From: David Vo Date: Sun, 12 Jan 2025 15:13:55 +1100 Subject: [PATCH 3/3] pass by value is cheaper for these --- subprojects/pyntcore/gen/NetworkTableEntry.yml | 2 +- subprojects/pyntcore/gen/Topic.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/subprojects/pyntcore/gen/NetworkTableEntry.yml b/subprojects/pyntcore/gen/NetworkTableEntry.yml index ca7afeb98..e1f340311 100644 --- a/subprojects/pyntcore/gen/NetworkTableEntry.yml +++ b/subprojects/pyntcore/gen/NetworkTableEntry.yml @@ -101,6 +101,6 @@ classes: operator==: operator!=: inline_code: | - .def("__repr__", [](const NetworkTableEntry &self) { + .def("__repr__", [](NetworkTableEntry self) { return py::str("").format(self.GetName()); }) diff --git a/subprojects/pyntcore/gen/Topic.yml b/subprojects/pyntcore/gen/Topic.yml index 791822687..71216356b 100644 --- a/subprojects/pyntcore/gen/Topic.yml +++ b/subprojects/pyntcore/gen/Topic.yml @@ -47,7 +47,7 @@ classes: inline_code: | .def("__repr__", [](py::handle self) { py::object type_name = self.get_type().attr("__qualname__"); - std::string name = self.cast().GetName(); + std::string name = self.cast().GetName(); return py::str("<{} {!r}>").format(type_name, name); }) Subscriber: