Skip to content

Commit a6c3d94

Browse files
Owen-LiuyuxuanOwen-LiuyuxuanHinsRyu
committed
feat(include_launch_description): only check required arguments in the local launch file (#1)
* only check arguments with the first inclusion and only search local argument --------- Signed-off-by: Owen-Liuyuxuan <[email protected]> Co-authored-by: Owen-Liuyuxuan <[email protected]> Co-authored-by: Yuxuan Liu <[email protected]>
1 parent 89cd36f commit a6c3d94

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

launch/launch/actions/include_launch_description.py

+6-2
Original file line numberDiff line numberDiff line change
@@ -161,14 +161,18 @@ def execute(self, context: LaunchContext) -> List[LaunchDescriptionEntity]:
161161
for arg_name, arg_value in self.launch_arguments
162162
]
163163
declared_launch_arguments = (
164-
launch_description.get_launch_arguments_with_include_launch_description_actions())
164+
launch_description.get_launch_arguments_with_include_launch_description_actions(
165+
only_search_local=True)
166+
)
165167
for argument, ild_actions in declared_launch_arguments:
166168
if argument._conditionally_included or argument.default_value is not None:
167169
continue
168170
argument_names = my_argument_names
169171
if ild_actions is not None:
170172
for ild_action in ild_actions:
171-
argument_names.extend(ild_action._try_get_arguments_names_without_context())
173+
argument_names.extend(
174+
ild_action._try_get_arguments_names_without_context()
175+
)
172176
if argument.name not in argument_names:
173177
raise RuntimeError(
174178
"Included launch description missing required argument '{}' "

launch/launch/launch_description.py

+12-5
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ def get_launch_arguments(self, conditional_inclusion=False) -> List[DeclareLaunc
9191
]
9292

9393
def get_launch_arguments_with_include_launch_description_actions(
94-
self, conditional_inclusion=False
94+
self, conditional_inclusion=False, only_search_local=False
9595
) -> List[Tuple[DeclareLaunchArgument, List['IncludeLaunchDescription']]]:
9696
"""
9797
Return a list of launch arguments with its associated include launch descriptions actions.
@@ -128,7 +128,8 @@ def get_launch_arguments_with_include_launch_description_actions(
128128
Tuple[DeclareLaunchArgument, List[IncludeLaunchDescription]]] = []
129129
from .actions import ResetLaunchConfigurations
130130

131-
def process_entities(entities, *, _conditional_inclusion, nested_ild_actions=None):
131+
def process_entities(entities, *, _conditional_inclusion, nested_ild_actions=None,
132+
only_search_local=False):
132133
for entity in entities:
133134
if isinstance(entity, DeclareLaunchArgument):
134135
# Avoid duplicate entries with the same name.
@@ -139,6 +140,9 @@ def process_entities(entities, *, _conditional_inclusion, nested_ild_actions=Non
139140
entity._conditionally_included = _conditional_inclusion
140141
entity._conditionally_included |= entity.condition is not None
141142
declared_launch_arguments.append((entity, nested_ild_actions))
143+
if only_search_local:
144+
if isinstance(entity, IncludeLaunchDescription):
145+
continue
142146
if isinstance(entity, ResetLaunchConfigurations):
143147
# Launch arguments after this cannot be set directly by top level arguments
144148
return
@@ -151,14 +155,17 @@ def process_entities(entities, *, _conditional_inclusion, nested_ild_actions=Non
151155
process_entities(
152156
entity.describe_sub_entities(),
153157
_conditional_inclusion=False,
154-
nested_ild_actions=next_nested_ild_actions)
158+
nested_ild_actions=next_nested_ild_actions,
159+
only_search_local=only_search_local)
155160
for conditional_sub_entity in entity.describe_conditional_sub_entities():
156161
process_entities(
157162
conditional_sub_entity[1],
158163
_conditional_inclusion=True,
159-
nested_ild_actions=next_nested_ild_actions)
164+
nested_ild_actions=next_nested_ild_actions,
165+
only_search_local=only_search_local)
160166

161-
process_entities(self.entities, _conditional_inclusion=conditional_inclusion)
167+
process_entities(self.entities, _conditional_inclusion=conditional_inclusion,
168+
only_search_local=only_search_local)
162169

163170
return declared_launch_arguments
164171

0 commit comments

Comments
 (0)