From 94a4ebd8e29124006df92559f3614e492586ce30 Mon Sep 17 00:00:00 2001 From: Andrea Richichi Date: Wed, 18 Mar 2026 00:55:54 +0100 Subject: [PATCH 1/3] Add type hints to minimal publisher rclpy example Signed-off-by: Andrea Richichi --- .../publisher_member_function.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py index 5ea61a5d..994ad4a5 100644 --- a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py +++ b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py @@ -12,31 +12,35 @@ # See the License for the specific language governing permissions and # limitations under the License. +from typing import List, Optional + import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node +from rclpy.publisher import Publisher +from rclpy.timer import Timer from std_msgs.msg import String class MinimalPublisher(Node): - def __init__(self): + def __init__(self) -> None: super().__init__('minimal_publisher') - self.publisher_ = self.create_publisher(String, 'topic', 10) + self.publisher_: Publisher[String] = self.create_publisher(String, 'topic', 10) timer_period = 0.5 # seconds - self.timer = self.create_timer(timer_period, self.timer_callback) + self.timer: Timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 - def timer_callback(self): - msg = String() + def timer_callback(self) -> None: + msg: String = String() msg.data = 'Hello World: %d' % self.i self.publisher_.publish(msg) self.get_logger().info('Publishing: "%s"' % msg.data) self.i += 1 -def main(args=None): +def main(args: Optional[List[str]] = None) -> None: try: with rclpy.init(args=args): minimal_publisher = MinimalPublisher() From 587d5c1a59e133f41b71d5d4551e0142868be8e6 Mon Sep 17 00:00:00 2001 From: Andrea Richichi Date: Fri, 20 Mar 2026 09:08:06 +0100 Subject: [PATCH 2/3] Simplify typing in minimal publisher example Signed-off-by: Andrea Richichi --- .../publisher_member_function.py | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py index 994ad4a5..65f703bd 100644 --- a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py +++ b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py @@ -12,13 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from typing import List, Optional - import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node -from rclpy.publisher import Publisher -from rclpy.timer import Timer from std_msgs.msg import String @@ -27,20 +23,20 @@ class MinimalPublisher(Node): def __init__(self) -> None: super().__init__('minimal_publisher') - self.publisher_: Publisher[String] = self.create_publisher(String, 'topic', 10) + self.publisher_ = self.create_publisher(String, 'topic', 10) timer_period = 0.5 # seconds - self.timer: Timer = self.create_timer(timer_period, self.timer_callback) + self.timer = self.create_timer(timer_period, self.timer_callback) self.i = 0 def timer_callback(self) -> None: - msg: String = String() + msg = String() msg.data = 'Hello World: %d' % self.i self.publisher_.publish(msg) self.get_logger().info('Publishing: "%s"' % msg.data) self.i += 1 -def main(args: Optional[List[str]] = None) -> None: +def main(args=None) -> None: try: with rclpy.init(args=args): minimal_publisher = MinimalPublisher() From b5c93b11bfc23fcb104574eee82edbc9e9296b7d Mon Sep 17 00:00:00 2001 From: Andrea Richichi Date: Fri, 20 Mar 2026 16:48:06 +0100 Subject: [PATCH 3/3] Add type hint for main args in minimal publisher --- .../publisher_member_function.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py index 65f703bd..66583532 100644 --- a/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py +++ b/rclpy/topics/minimal_publisher/examples_rclpy_minimal_publisher/publisher_member_function.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. +from typing import List, Optional + import rclpy from rclpy.executors import ExternalShutdownException from rclpy.node import Node @@ -36,7 +38,7 @@ def timer_callback(self) -> None: self.i += 1 -def main(args=None) -> None: +def main(args: Optional[List[str]] = None) -> None: try: with rclpy.init(args=args): minimal_publisher = MinimalPublisher()