From ccf453327f50ad2b15a24ca468cc4b03f0b00c07 Mon Sep 17 00:00:00 2001 From: Michel Hidalgo Date: Fri, 20 Oct 2023 13:55:36 +0000 Subject: [PATCH] Validate automatic naming in process-wide machinery Signed-off-by: Michel Hidalgo --- bdai_ros2_wrappers/bdai_ros2_wrappers/process.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/bdai_ros2_wrappers/bdai_ros2_wrappers/process.py b/bdai_ros2_wrappers/bdai_ros2_wrappers/process.py index a22c7e4..b633888 100644 --- a/bdai_ros2_wrappers/bdai_ros2_wrappers/process.py +++ b/bdai_ros2_wrappers/bdai_ros2_wrappers/process.py @@ -6,11 +6,15 @@ import sys import threading import typing +import warnings import rclpy import rclpy.executors import rclpy.logging import rclpy.node +from rclpy.exceptions import InvalidNamespaceException, InvalidNodeNameException +from rclpy.validate_namespace import validate_namespace +from rclpy.validate_node_name import validate_node_name import bdai_ros2_wrappers.context as context import bdai_ros2_wrappers.scope as scope @@ -79,9 +83,17 @@ def __init__( program_name = cli.prog name, _ = os.path.splitext(program_name) if prebaked is True: - prebaked = name + try: + validate_node_name(name) + prebaked = name + except InvalidNodeNameException: + warnings.warn(f"'{name}' cannot be used as node name, using scope default") if namespace is True: - namespace = name + try: + validate_namespace(name) + namespace = name + except InvalidNamespaceException: + warnings.warn(f"'{name}' cannot be used as namespace, using scope default") if forward_logging is None: forward_logging = bool(prebaked) if autospin is None: