Package Summary

Version 1.0.16
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version humble
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Michel Hidalgo

Authors

  • Ivan Paunovic
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</node>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

1.0.16 (2026-10-23)

1.0.15 (2026-09-06)

1.0.14 (2026-01-12)

  • [humble] Allow Path in substitutions, instead of requiring cast to str (backport #873) (#926)
  • Contributors: mergify[bot]

1.0.13 (2025-11-07)

1.0.12 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#913)
  • Contributors: mergify[bot]

1.0.11 (2025-10-06)

1.0.10 (2025-07-16)

1.0.9 (2025-06-06)

  • Expose emulate_tty to xml and yaml launch (#669) (#869)
  • Let XML executables/nodes be "required" (like in ROS 1) (#751) (#863)
  • Contributors: Emerson Knapp

1.0.8 (2025-03-25)

1.0.7 (2024-11-25)

1.0.6 (2024-05-17)

1.0.5 (2024-02-16)

  • Backport error message improvements (#754)
  • Contributors: David Yackzan

1.0.4 (2023-01-10)

1.0.3 (2022-10-18)

1.0.2 (2022-05-10)

1.0.1 (2022-04-13)

1.0.0 (2022-04-12)

0.23.1 (2022-04-08)

  • Fix sphinx directive to cross-ref Launch method (#605)
  • Contributors: Abrar Rahman Protyasha

0.23.0 (2022-03-30)

  • Add boolean substitutions (#598)
  • Contributors: Kenji Miyake

0.22.0 (2022-03-28)

  • Support scoping environment variables (#601)
  • Contributors: Jacob Perron

0.21.1 (2022-03-01)

  • 'output' is expanded as a substitution in XML/YAML files (#577)
  • Contributors: Khush Jain

0.21.0 (2022-01-14)

0.20.0 (2021-11-29)

  • Declare frontend group dependency & use explicit dependencies in launch_testing (#520)
  • Update maintainers to Aditya Pande and Michel Hidalgo (#559)
  • Updated maintainers (#555)
  • Add AppendEnvironmentVariable action (#543)
  • Feature clear launch configs (#515)
  • Fix [DeclareLaunchArgument]{.title-ref} xml parsing and constructor (#529)
  • Add 'launch' to sets of launch file extensions (#518)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 3.4.13
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version jazzy
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</executable>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

3.4.13 (2026-10-23)

3.4.12 (2026-09-18)

3.4.11 (2026-06-02)

3.4.10 (2026-01-12)

  • [jazzy] Allow Path in substitutions, instead of requiring cast to str (backport #873) (#927)
  • Contributors: mergify[bot]

3.4.9 (2025-11-07)

3.4.8 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#912)
  • Contributors: mergify[bot]

3.4.7 (2025-10-06)

  • Allow providing launch args to include using let in frontends (backport #848) (#910)
  • Contributors: mergify[bot]

3.4.6 (2025-08-06)

3.4.5 (2025-06-23)

3.4.4 (2025-04-02)

3.4.3 (2024-12-18)

3.4.2 (2024-04-16)

3.4.1 (2024-03-28)

  • launch_xml: fix xml syntax in README (#770)
  • Contributors: Steve Peters

3.4.0 (2024-02-07)

3.3.0 (2024-01-24)

  • Let XML executables/nodes be "required" (like in ROS 1) (#751) * Let XML nodes be "required" Essentially on_exit="shutdown" is equivalent to ROS 1 required="true". This feature is implemented using the python launchfile on_exit mechanism. Right now "shutdown" is the only action accepted by on_exit, but theoretically more "on_exit" actions could be added later. Example: <executable cmd="ls" on_exit="shutdown"/>
    • Added tests for yaml
  • Contributors: Matthew Elwin

3.2.1 (2023-12-26)

3.2.0 (2023-10-04)

3.1.0 (2023-09-08)

3.0.1 (2023-09-07)

3.0.0 (2023-08-21)

2.2.1 (2023-07-11)

  • Improve launch file parsing error messages (#626)
  • Contributors: Timon Engelke

2.2.0 (2023-06-07)

2.1.0 (2023-04-27)

2.0.1 (2023-04-12)

2.0.0 (2023-04-11)

1.4.1 (2023-02-24)

  • Fixed typos (#692)
  • Contributors: Alejandro Hernández Cordero

1.4.0 (2023-02-14)

  • Expose emulate_tty to xml and yaml launch (#669)
  • Expose sigterm_timeout and sigkill_timeout to xml frontend (#667)
  • [rolling] Update maintainers - 2022-11-07 (#671)
  • Contributors: Aditya Pande, Audrow Nash

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 3.8.10
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version kilted
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</executable>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

3.8.10 (2026-10-23)

3.8.9 (2026-09-18)

3.8.8 (2026-07-14)

  • Correct typos (backport #961) (#962)
  • Contributors: mergify[bot]

3.8.7 (2026-01-12)

  • Merge pull request #928 from ros2/mergify/bp/kilted/pr-873
  • Allow Path in substitutions, instead of requiring cast to str (#873)
  • Contributors: Emerson Knapp

3.8.6 (2025-11-07)

3.8.5 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#911)
  • Contributors: mergify[bot]

3.8.4 (2025-10-06)

  • Allow providing launch args to include using let in frontends (#848) (#909)
  • Contributors: mergify[bot]

3.8.3 (2025-09-11)

3.8.2 (2025-06-23)

3.8.1 (2025-04-18)

3.8.0 (2025-02-27)

  • Add ForEach action to repeat entities using iteration-specific values (#802)
  • Stop loading extensions during launch_{xml,yaml} tests. (#820)
  • Cleanup the launch dependencies. (#819)
  • Contributors: Chris Lalancette, Christophe Bedard

3.7.1 (2024-12-20)

3.7.0 (2024-11-20)

  • Add test_xmllint to all of the ament_python packages. (#804)
  • Contributors: Chris Lalancette

3.6.1 (2024-07-29)

3.6.0 (2024-06-25)

3.5.1 (2024-06-17)

3.5.0 (2024-04-26)

3.4.2 (2024-04-16)

3.4.1 (2024-03-28)

  • launch_xml: fix xml syntax in README (#770)
  • Contributors: Steve Peters

3.4.0 (2024-02-07)

3.3.0 (2024-01-24)

  • Let XML executables/nodes be "required" (like in ROS 1) (#751) * Let XML nodes be "required" Essentially on_exit="shutdown" is equivalent to ROS 1 required="true". This feature is implemented using the python launchfile on_exit mechanism. Right now "shutdown" is the only action accepted by on_exit, but theoretically more "on_exit" actions could be added later. Example: <executable cmd="ls" on_exit="shutdown"/>
    • Added tests for yaml
  • Contributors: Matthew Elwin

3.2.1 (2023-12-26)

3.2.0 (2023-10-04)

3.1.0 (2023-09-08)

3.0.1 (2023-09-07)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 3.9.9
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version lyrical
Last Updated 2026-10-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</executable>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

3.9.9 (2026-10-23)

  • Add boolean launch argument frontend tests (#1043) (#1046)
  • Contributors: mergify[bot]

3.9.8 (2026-07-14)

3.9.7 (2026-04-09)

  • Correct typos (#961)
  • Support frontends for PathJoinSubstitution (#943)
  • Contributors: Auguste Lalande, Christophe Bedard

3.9.6 (2026-01-12)

  • Capture the environment variables in TimerAction (#728)
  • Contributors: Sebastian Javier D'Alessandro Szymanowski

3.9.5 (2025-11-07)

  • Expose StringJoinSubstitution to frontend (#857)
  • Contributors: Christian Ruf

3.9.4 (2025-10-17)

  • Fix all/any in xml and yaml launch files (#906)
  • Contributors: Matthijs van der Burgh

3.9.3 (2025-10-06)

  • Allow providing launch args to include using let in frontends (#848)
  • Contributors: Christophe Bedard

3.9.2 (2025-07-29)

  • Fix Setuptoolsdeprecations (#898)
  • Contributors: mosfet80

3.9.1 (2025-06-19)

  • Make sure to install py.typed files (#886)
  • Add remaining [py.typed]{.title-ref} (#884)
  • Fix [log_*]{.title-ref} warnings (#883)
  • Allow Path in substitutions, instead of requiring cast to str (#873)
  • Other Logging Implementations with [getLevelNamesMapping]{.title-ref} fix (#866)
  • Revert "Add Other Logging Implementations (#858)" (#865) This reverts commit b7b31c45b0eb350deedd282b88398d1ca0d5faf4.
  • Add Other Logging Implementations (#858)
  • Contributors: Christophe Bedard, Emerson Knapp, Michael Carlstrom

3.9.0 (2025-04-24)

3.8.1 (2025-04-18)

3.8.0 (2025-02-27)

  • Add ForEach action to repeat entities using iteration-specific values (#802)
  • Stop loading extensions during launch_{xml,yaml} tests. (#820)
  • Cleanup the launch dependencies. (#819)
  • Contributors: Chris Lalancette, Christophe Bedard

3.7.1 (2024-12-20)

3.7.0 (2024-11-20)

  • Add test_xmllint to all of the ament_python packages. (#804)
  • Contributors: Chris Lalancette

3.6.1 (2024-07-29)

3.6.0 (2024-06-25)

3.5.1 (2024-06-17)

3.5.0 (2024-04-26)

3.4.2 (2024-04-16)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 3.10.3
License Apache-2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version rolling
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</executable>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

3.10.3 (2026-10-23)

  • Add boolean launch argument frontend tests (#1043)
  • Contributors: Om Vaghasiya

3.10.2 (2026-10-01)

  • Make level attribute required on log action and remove log_info.py (#1024)
  • Reject invalid executable boolean attributes (#1004)
  • Use the SPDX identifier Apache-2.0 in license declarations (#1013)
  • Reject invalid GroupAction boolean attributes (#1003)
  • Sandbox environment variables in launch_xml/launch_yaml tests (#1001)
  • Contributors: Michael Carroll, Peace. A, 渠超胜

3.10.1 (2026-09-02)

  • Add string strip substitution (#997)
  • Contributors: Dylan Gallagher

3.10.0 (2026-05-07)

3.9.7 (2026-04-09)

  • Correct typos (#961)
  • Support frontends for PathJoinSubstitution (#943)
  • Contributors: Auguste Lalande, Christophe Bedard

3.9.6 (2026-01-12)

  • Capture the environment variables in TimerAction (#728)
  • Contributors: Sebastian Javier D'Alessandro Szymanowski

3.9.5 (2025-11-07)

  • Expose StringJoinSubstitution to frontend (#857)
  • Contributors: Christian Ruf

3.9.4 (2025-10-17)

  • Fix all/any in xml and yaml launch files (#906)
  • Contributors: Matthijs van der Burgh

3.9.3 (2025-10-06)

  • Allow providing launch args to include using let in frontends (#848)
  • Contributors: Christophe Bedard

3.9.2 (2025-07-29)

  • Fix Setuptoolsdeprecations (#898)
  • Contributors: mosfet80

3.9.1 (2025-06-19)

  • Make sure to install py.typed files (#886)
  • Add remaining [py.typed]{.title-ref} (#884)
  • Fix [log_*]{.title-ref} warnings (#883)
  • Allow Path in substitutions, instead of requiring cast to str (#873)
  • Other Logging Implementations with [getLevelNamesMapping]{.title-ref} fix (#866)
  • Revert "Add Other Logging Implementations (#858)" (#865) This reverts commit b7b31c45b0eb350deedd282b88398d1ca0d5faf4.
  • Add Other Logging Implementations (#858)
  • Contributors: Christophe Bedard, Emerson Knapp, Michael Carlstrom

3.9.0 (2025-04-24)

3.8.1 (2025-04-18)

3.8.0 (2025-02-27)

  • Add ForEach action to repeat entities using iteration-specific values (#802)
  • Stop loading extensions during launch_{xml,yaml} tests. (#820)
  • Cleanup the launch dependencies. (#819)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package symbol

launch_xml package from bitbots_main repo

bitbots_blackboard bitbots_body_behavior bitbots_bringup bitbots_diagnostic bitbots_docs bitbots_education bitbots_extrinsic_calibration bitbots_ipm bitbots_parameter_blackboard bitbots_player_state bitbots_robot_description bitbots_teleop bitbots_tts bitbots_utils bitbots_whistle_detector system_monitor bitbots_animation_rqt bitbots_animation_server bitbots_emergency bitbots_hcm bitbots_head_mover bitbots_rl_motion bitbots_splines bitbots_msgs bitbots_localization bitbots_localization_handler bitbots_odometry bitbots_path_planning piplus_animations piplus_description bitbots_mujoco_sim bitbots_team_communication bitbots_team_data_sim_rqt bitbots_vision bitbots_ball_filter bitbots_robot_filter audio_common audio_common_msgs biped_interfaces bitbots_tf_buffer domain_bridge dynamic_stack_decider dynamic_stack_decider_visualization game_controller_hsl game_controller_hsl_interfaces humanoid_base_footprint imu_complementary_filter rviz_imu_plugin ipm_image_node ipm_interfaces ipm_library ipm_service launch launch_pytest launch_testing launch_testing_ament_cmake launch_xml launch_yaml test_launch_testing livelybot_bringup livelybot_msg livelybot_oled livelybot_power livelybot_serial serial yesense_imu particle_filter ros2_numpy ros2_python_extension rot_conv soccer_field_map_generator soccer_geometry_msgs soccer_interfaces soccer_model_msgs soccer_vision_2d_msgs soccer_vision_3d_msgs soccer_vision_attribute_msgs soccer_ipm soccer_vision_3d_rviz_markers udp_bridge zed_msgs zed_components zed_ros2 zed_wrapper

ROS Distro
github

Package Summary

Version 3.4.11
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/bit-bots/bitbots_main.git
VCS Type git
VCS Version main
Last Updated 2026-10-24
Dev Status UNKNOWN
Released UNRELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</executable>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

3.4.11 (2026-06-02)

3.4.10 (2026-01-12)

  • [jazzy] Allow Path in substitutions, instead of requiring cast to str (backport #873) (#927)
  • Contributors: mergify[bot]

3.4.9 (2025-11-07)

3.4.8 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#912)
  • Contributors: mergify[bot]

3.4.7 (2025-10-06)

  • Allow providing launch args to include using let in frontends (backport #848) (#910)
  • Contributors: mergify[bot]

3.4.6 (2025-08-06)

3.4.5 (2025-06-23)

3.4.4 (2025-04-02)

3.4.3 (2024-12-18)

3.4.2 (2024-04-16)

3.4.1 (2024-03-28)

  • launch_xml: fix xml syntax in README (#770)
  • Contributors: Steve Peters

3.4.0 (2024-02-07)

3.3.0 (2024-01-24)

  • Let XML executables/nodes be "required" (like in ROS 1) (#751) * Let XML nodes be "required" Essentially on_exit="shutdown" is equivalent to ROS 1 required="true". This feature is implemented using the python launchfile on_exit mechanism. Right now "shutdown" is the only action accepted by on_exit, but theoretically more "on_exit" actions could be added later. Example: <executable cmd="ls" on_exit="shutdown"/>
    • Added tests for yaml
  • Contributors: Matthew Elwin

3.2.1 (2023-12-26)

3.2.0 (2023-10-04)

3.1.0 (2023-09-08)

3.0.1 (2023-09-07)

3.0.0 (2023-08-21)

2.2.1 (2023-07-11)

  • Improve launch file parsing error messages (#626)
  • Contributors: Timon Engelke

2.2.0 (2023-06-07)

2.1.0 (2023-04-27)

2.0.1 (2023-04-12)

2.0.0 (2023-04-11)

1.4.1 (2023-02-24)

  • Fixed typos (#692)
  • Contributors: Alejandro Hernández Cordero

1.4.0 (2023-02-14)

  • Expose emulate_tty to xml and yaml launch (#669)
  • Expose sigterm_timeout and sigkill_timeout to xml frontend (#667)
  • [rolling] Update maintainers - 2022-11-07 (#671)
  • Contributors: Aditya Pande, Audrow Nash

1.3.0 (2022-11-02)

1.2.0 (2022-09-13)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 0.17.2
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version galactic
Last Updated 2022-12-02
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • William Woodall
  • Michel Hidalgo

Authors

  • Ivan Paunovic

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</node>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

0.17.2 (2022-12-02)

  • Support scoping environment variables (#631)
  • Contributors: Jacob Perron

0.17.1 (2022-04-28)

0.17.0 (2021-04-06)

0.16.0 (2021-03-19)

0.15.0 (2021-01-25)

0.14.0 (2020-12-08)

  • Add frontend support for LogInfo action (#467)
  • Contributors: Jacob Perron

0.13.0 (2020-11-04)

  • Validate unparsed attributes and subentities in launch_xml and launch_yaml (#468)
  • Add test for launch.actions.TimerAction (#470)
  • Update package maintainers (#465)
  • Contributors: Ivan Santiago Paunovic, Michel Hidalgo

0.12.0 (2020-08-18)

0.11.1 (2020-08-14)

0.11.0 (2020-08-04)

  • Use new type_utils functions (#438)
  • Add pytest.ini so local tests don't display warning (#428)
  • Contributors: Chris Lalancette, Ivan Santiago Paunovic

0.10.2 (2020-05-26)

0.10.1 (2020-05-08)

0.10.0 (2020-04-24)

  • more verbose test_flake8 error messages (same as ros2/launch_ros#135)
  • Use imperative mood in docstrings. (#362)
  • Contributors: Dirk Thomas, Steven! Ragnarök

0.9.5 (2019-11-13)

0.9.4 (2019-11-08)

0.9.3 (2019-10-23)

0.9.2 (2019-10-23)

  • install resource marker file for packages (#341)
  • Contributors: Dirk Thomas

0.9.1 (2019-09-25)

0.9.0 (2019-09-18)

  • install package manifest (#330)
  • Add deprecated argument to LaunchDescriptionn (#291)
  • Add support for not optional environment variable substitution (#288)
  • Add parsing methods for SetEnviromentVariable and UnsetEnviromentVariable (#272)
  • Add parsing method for [DeclareLaunchArgument]{.title-ref} (#270)
  • Add frontend module in launch, launch_xml and launch_yaml packages (#226)
  • Contributors: Dirk Thomas, ivanpauno

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

Package Summary

Version 2.0.4
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version iron
Last Updated 2024-06-24
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Brandon Ong
  • William Woodall

Authors

  • Ivan Paunovic
  • Michel Hidalgo
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</node>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

2.0.4 (2024-06-24)

2.0.3 (2024-04-19)

  • Backport Iron: Let XML executables/nodes be "required" (like in ROS 1) (#764)
  • Contributors: Matthew Elwin, Tim Clephas

2.0.2 (2023-07-14)

2.0.1 (2023-04-12)

2.0.0 (2023-04-11)

1.4.1 (2023-02-24)

  • Fixed typos (#692)
  • Contributors: Alejandro Hernández Cordero

1.4.0 (2023-02-14)

  • Expose emulate_tty to xml and yaml launch (#669)
  • Expose sigterm_timeout and sigkill_timeout to xml frontend (#667)
  • [rolling] Update maintainers - 2022-11-07 (#671)
  • Contributors: Aditya Pande, Audrow Nash

1.3.0 (2022-11-02)

1.2.0 (2022-09-13)

1.1.0 (2022-04-29)

1.0.1 (2022-04-13)

1.0.0 (2022-04-12)

0.23.1 (2022-04-08)

  • Fix sphinx directive to cross-ref Launch method (#605)
  • Contributors: Abrar Rahman Protyasha

0.23.0 (2022-03-30)

  • Add boolean substitutions (#598)
  • Contributors: Kenji Miyake

0.22.0 (2022-03-28)

  • Support scoping environment variables (#601)
  • Contributors: Jacob Perron

0.21.1 (2022-03-01)

  • 'output' is expanded as a substitution in XML/YAML files (#577)
  • Contributors: Khush Jain

0.21.0 (2022-01-14)

0.20.0 (2021-11-29)

  • Declare frontend group dependency & use explicit dependencies in launch_testing (#520)
  • Update maintainers to Aditya Pande and Michel Hidalgo (#559)
  • Updated maintainers (#555)
  • Add AppendEnvironmentVariable action (#543)
  • Feature clear launch configs (#515)
  • Fix [DeclareLaunchArgument]{.title-ref} xml parsing and constructor (#529)
  • Add 'launch' to sets of launch file extensions (#518)
  • Contributors: Aditya Pande, Audrow Nash, Christophe Bedard, Derek Chopp, Ivan Santiago Paunovic

0.19.0 (2021-07-15)

  • Make each parser extension provide a set of file extensions (#516)
  • Contributors: Christophe Bedard

0.18.0 (2021-06-18)

0.17.0 (2021-04-06)

0.16.0 (2021-03-19)

0.15.0 (2021-01-25)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 1.0.16
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version humble
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Michel Hidalgo

Authors

  • Ivan Paunovic
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</node>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

1.0.16 (2026-10-23)

1.0.15 (2026-09-06)

1.0.14 (2026-01-12)

  • [humble] Allow Path in substitutions, instead of requiring cast to str (backport #873) (#926)
  • Contributors: mergify[bot]

1.0.13 (2025-11-07)

1.0.12 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#913)
  • Contributors: mergify[bot]

1.0.11 (2025-10-06)

1.0.10 (2025-07-16)

1.0.9 (2025-06-06)

  • Expose emulate_tty to xml and yaml launch (#669) (#869)
  • Let XML executables/nodes be "required" (like in ROS 1) (#751) (#863)
  • Contributors: Emerson Knapp

1.0.8 (2025-03-25)

1.0.7 (2024-11-25)

1.0.6 (2024-05-17)

1.0.5 (2024-02-16)

  • Backport error message improvements (#754)
  • Contributors: David Yackzan

1.0.4 (2023-01-10)

1.0.3 (2022-10-18)

1.0.2 (2022-05-10)

1.0.1 (2022-04-13)

1.0.0 (2022-04-12)

0.23.1 (2022-04-08)

  • Fix sphinx directive to cross-ref Launch method (#605)
  • Contributors: Abrar Rahman Protyasha

0.23.0 (2022-03-30)

  • Add boolean substitutions (#598)
  • Contributors: Kenji Miyake

0.22.0 (2022-03-28)

  • Support scoping environment variables (#601)
  • Contributors: Jacob Perron

0.21.1 (2022-03-01)

  • 'output' is expanded as a substitution in XML/YAML files (#577)
  • Contributors: Khush Jain

0.21.0 (2022-01-14)

0.20.0 (2021-11-29)

  • Declare frontend group dependency & use explicit dependencies in launch_testing (#520)
  • Update maintainers to Aditya Pande and Michel Hidalgo (#559)
  • Updated maintainers (#555)
  • Add AppendEnvironmentVariable action (#543)
  • Feature clear launch configs (#515)
  • Fix [DeclareLaunchArgument]{.title-ref} xml parsing and constructor (#529)
  • Add 'launch' to sets of launch file extensions (#518)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.

Package Summary

Version 1.0.16
License Apache License 2.0
Build type AMENT_PYTHON
Use RECOMMENDED

Repository Summary

Description
Checkout URI https://github.com/ros2/launch.git
VCS Type git
VCS Version humble
Last Updated 2026-10-23
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

XML frontend for the launch package.

Maintainers

  • Aditya Pande
  • Michel Hidalgo

Authors

  • Ivan Paunovic
  • William Woodall

launch_xml

This package provides an abstraction of the XML tree.

XML front-end mapping rules

Accessing xml attributes

When having an xml tag like:

<tag value="2"/>

If the entity e is wrapping it, the following statements will be true:

e.get_attr('value') == '2'
e.get_attr('value', data_type=int) == 2
e.get_attr('value', data_type=float) == 2.0

By default, the value of the attribute is returned as a string.

Allowed types are: - scalar types: str, int, float, bool - An uniform list, e.g.: List[int]. - The list of entities type: List[Entity] (see below).

List is the usual object from the typing package. data_type can also be set to None, in which case yaml rules will be used.

For handling lists, the *-sep attribute is used. e.g.:

<tag value="2,3,4" value-sep=","/>
<tag2 value="2 3 4" value-sep=" "/>
<tag3 value="2, 3, 4" value-sep=", "/>

tag.get_attr('value', data_type=List[int]) == [2, 3, 4]
tag2.get_attr('value', data_type=List[float]) == [2.0, 3.0, 4.0]
tag3.get_attr('value', data_type=List[str]) == ['2', '3', '4']

In the case a value can be either an instance of a type or a substitution, the can_be_str argument of get_attr must be used, followed by a call to parser.parse_if_substitutions:

value = e.get_attr('value2', data_type=int, can_be_str=True)
normalized_value = parser.parse_if_substitutions(value)

For checking if an attribute exists, use an optional argument:

value = e.get_attr('value', optional=True)
if value is not None:
    do_something(value)

With optional=False (default), AttributeError is raised if the specified attribute is not found.

Accessing XML children as attributes:

In this xml:

<executable cmd="ls">
    <env name="a" value="100"/>
    <env name="b" value="stuff"/>
</node>

The env children could be accessed like:

env = e.get_attr('env', data_type=List[Entity])
len(env) == 2
env[0].get_attr('name') == 'a'
env[0].get_attr('value') == '100'
env[1].get_attr('name') == 'b'
env[1].get_attr('value') == 'stuff'

In these cases, e.env is a list of entities, that can be accessed in the same abstract way.

Accessing all the XML children:

All the children can be directly accessed:

e.children

It returns a list of launch_xml.Entity wrapping each of the XML children.

Built-in substitutions

See this document.

CHANGELOG

Changelog for package launch_xml

1.0.16 (2026-10-23)

1.0.15 (2026-09-06)

1.0.14 (2026-01-12)

  • [humble] Allow Path in substitutions, instead of requiring cast to str (backport #873) (#926)
  • Contributors: mergify[bot]

1.0.13 (2025-11-07)

1.0.12 (2025-10-17)

  • Fix all/any in xml and yaml launch files (backport #906) (#913)
  • Contributors: mergify[bot]

1.0.11 (2025-10-06)

1.0.10 (2025-07-16)

1.0.9 (2025-06-06)

  • Expose emulate_tty to xml and yaml launch (#669) (#869)
  • Let XML executables/nodes be "required" (like in ROS 1) (#751) (#863)
  • Contributors: Emerson Knapp

1.0.8 (2025-03-25)

1.0.7 (2024-11-25)

1.0.6 (2024-05-17)

1.0.5 (2024-02-16)

  • Backport error message improvements (#754)
  • Contributors: David Yackzan

1.0.4 (2023-01-10)

1.0.3 (2022-10-18)

1.0.2 (2022-05-10)

1.0.1 (2022-04-13)

1.0.0 (2022-04-12)

0.23.1 (2022-04-08)

  • Fix sphinx directive to cross-ref Launch method (#605)
  • Contributors: Abrar Rahman Protyasha

0.23.0 (2022-03-30)

  • Add boolean substitutions (#598)
  • Contributors: Kenji Miyake

0.22.0 (2022-03-28)

  • Support scoping environment variables (#601)
  • Contributors: Jacob Perron

0.21.1 (2022-03-01)

  • 'output' is expanded as a substitution in XML/YAML files (#577)
  • Contributors: Khush Jain

0.21.0 (2022-01-14)

0.20.0 (2021-11-29)

  • Declare frontend group dependency & use explicit dependencies in launch_testing (#520)
  • Update maintainers to Aditya Pande and Michel Hidalgo (#559)
  • Updated maintainers (#555)
  • Add AppendEnvironmentVariable action (#543)
  • Feature clear launch configs (#515)
  • Fix [DeclareLaunchArgument]{.title-ref} xml parsing and constructor (#529)
  • Add 'launch' to sets of launch file extensions (#518)

File truncated at 100 lines see the full file

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged launch_xml at Robotics Stack Exchange