CHANGELOG
Changelog for package launch
3.8.6 (2025-11-07)
3.8.5 (2025-10-17)
3.8.4 (2025-10-06)
3.8.3 (2025-09-11)
3.8.2 (2025-06-23)
3.8.1 (2025-04-18)
Provide copy of launch configs to TimerAction’s entities (#836)
Allow concatenating each path component of PathJoinSubstitution (#838)
Add StringJoinSubstitution substitution (#843)
Add missing test_depend for launch (#850)
Document substitutions concatenation in architecture doc (#845)
Update docs to use proper RST literals (#837)
Fix function params indentation (#833)
Contributors: Christian Ruf, Christophe Bedard, Michael Carlstrom
3.8.0 (2025-02-27)
Add ForEach action to repeat entities using iteration-specific values (#802)
Create py.typed (#828)
Improve error reporting by adding file locations to exceptions (#823)
add test coverage for substitution edgecases involving E notation (#824)
Cleanup the launch dependencies. (#819)
Contributors: Chris Lalancette, Christophe Bedard, Michael Carlstrom, Roland Arsenault, danielcranston
3.7.1 (2024-12-20)
Fix ‘set up’ typo (#813)
Contributors: Christophe Bedard
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)
Fix typo in comment (#783)
Contributors: Christophe Bedard
3.5.0 (2024-04-26)
3.4.2 (2024-04-16)
(launch) fix describe of PathJoinSubstitution (#771)
Contributors: Matthijs van der Burgh
3.4.1 (2024-03-28)
Small fixes for modern flake8. (#772)
Cleanup some type annotations.
Contributors: Chris Lalancette
3.4.0 (2024-02-07)
3.3.0 (2024-01-24)
Let XML executables/nodes be “required” (like in ROS 1) (#751)
Contributors: Matthew Elwin
3.2.1 (2023-12-26)
3.2.0 (2023-10-04)
Add conditional substitution (#734)
Contributors: Nick Lamprianidis
3.1.0 (2023-09-08)
Add maximum times for a process to respawn (#696)
Contributors: Santti4go
3.0.1 (2023-09-07)
Add in a timeout for launch pytests. (#725)
Contributors: Chris Lalancette
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)
Add file-content launch substitution (#708)
Contributors: Scott K Logan
2.1.0 (2023-04-27)
2.0.1 (2023-04-12)
Document LaunchService.{run,run_async}() return value (#702)
Contributors: Christophe Bedard
2.0.0 (2023-04-11)
[rosdoc2] Fix document generation on buildfarm (#701)
Enable document generation using rosdoc2 for ament_python pkgs (#697)
Remove the import of Literal from entity.py. (#694)
Fix flake8 errors. (#695)
add symlink to latest log directory (#686)
Improve type checking (#679)
Contributors: Chris Lalancette, Hervé Audren, Welte, Yadu
1.4.1 (2023-02-24)
Fixed typos (#692)
Contributors: Alejandro Hernández Cordero
1.4.0 (2023-02-14)
Pass modules to PythonExpression (#655)
Allow ReadyToTest() usage in event handler (#665)
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, Blake Anderson, Nikolai Morin
1.3.0 (2022-11-02)
Expect deprecation warnings in tests (#657)
Fix the restoring of os.environ to maintain type. (#656)
Implement Any, All, Equals, and NotEquals substitutions (#649)
add LaunchLogDir substitution, replacing log_dir frontend only substitution (#652)
Add special cases to coerce “1” and “0” to bool when using bool coercion only (#651)
Contributors: Chris Lalancette, Jacob Perron, William Woodall, methylDragon
1.2.0 (2022-09-13)
Update launch/test/launch/test_execute_local.py
Added unit test ensuring that output dictionary works with ExecuteLocal
Addresses issue #588, allowing dict for ‘output’
Contributors: Matthew Elwin, Michael Jeronimo
1.1.0 (2022-04-29)
1.0.1 (2022-04-13)
Sandbox environment in tests to fix repeated job failures (#609)
Contributors: Shane Loretz
1.0.0 (2022-04-12)
0.23.1 (2022-04-08)
0.23.0 (2022-03-30)
Add boolean substitutions (#598)
Contributors: Kenji Miyake
0.22.0 (2022-03-28)
0.21.1 (2022-03-01)
0.21.0 (2022-01-14)
Use asyncio.wait with timeout rather than sleep (#576)
Make test_parser compatible with Python older than 3.8 (#575)
Propagate exceptions of completed actions to launch service main loop (#566)
Warn when loading launch extensions fails (#572)
Add in two fixes for Jammy (#571)
Contributors: Chris Lalancette, Scott K Logan, Shane Loretz, tumtom
0.20.0 (2021-11-29)
Evaluate math symbols and functions in python expression (#557)
Document TimerAction params (#558)
Improve launch arguments introspection (#556)
Update maintainers to Aditya Pande and Michel Hidalgo (#559)
Updated maintainers (#555)
First prototype of native pytest plugin for launch based tests (#528)
Allow for raw path specification in IncludeLaunchDescription (#544)
Adding Executable description class (#454)
event handlers: Allow to match the target action with a callable and not only with an object instance (#540)
Add AppendEnvironmentVariable action (#543)
Document EnvironmentVariable substitution resolution context caveat (#541)
Feature clear launch configs (#515)
Add examples to ExecuteProcess docs (#525)
Fix DeclareLaunchArgument xml parsing and constructor (#529)
Fix pytest run on Windows (#526)
Improving docs (#523)
Add filtering mechanism for executable prefix application (#522)
Contributors: Aditya Pande, Audrow Nash, Cameron Miller, Christophe Bedard, David V. Lu!!, Derek Chopp, Immanuel Martini, Ivan Santiago Paunovic, roger-strain
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)
Only try to wrap the fd in a socket on Windows (#498)
Close the socket pair used for signal management (#497)
Remove is_winsock_handle() and instead test if wrapping the handle in a socket.socket() works (#494)
Add frontend substitution for logging directory (#490)
Contributors: Ivan Santiago Paunovic, Jacob Perron
0.16.0 (2021-03-19)
Add arg_choice arg to DeclareLaunchArguments (#483)
Contributors: Victor Lopez
0.15.0 (2021-01-25)
0.14.0 (2020-12-08)
0.13.0 (2020-11-04)
Validate unparsed attributes and subentities in launch_xml and launch_yaml (#468)
Fix bug in launch.actions.TimerAction.parse() (#470)
Allow configuring logging directory through environment variables (#460)
Update package maintainers (#465)
Expose Timer action in launch xml (#462)
Fix dollar symbols in substitution grammar (#461)
Contributors: Christophe Bedard, Ivan Santiago Paunovic, Michel Hidalgo
0.12.0 (2020-08-18)
Add new conditions for checking launch configuration values (#453)
Contributors: Jacob Perron
0.11.1 (2020-08-14)
0.11.0 (2020-08-04)
Handle empty strings in type coercion. (#443)
Consolidate type_utils in a way that can be reused in substitution results that need to be coerced to a specific type (#438)
Delete unnecessary loading of ‘launch.frontend.interpolate_substitution_method’ entry point that was never used (#434)
Avoid side effect, defer until needed (#432)
Remove pkg_resources, replace it with the use of the more modern importlib* libraries. (#430)
Remove the asyncio.wait loop parameter. (#429)
Add pytest.ini so local tests don’t display warning (#428)
Defer shutdown if already running (#427)
Add respawn and respawn_delay support (#426)
Fix up parser.py (#414)
Contributors: CHEN, Chris Lalancette, Dan Rose, Dirk Thomas, Ivan Santiago Paunovic, Jorge Perez, Michel Hidalgo
0.10.2 (2020-05-26)
Fix new flake8 errors. (#420)
Contributors: Michel Hidalgo
0.10.1 (2020-05-08)
0.10.0 (2020-04-24)
remove Python 3.5 specific logic (#401)
use typing.TYPE_CHECKING to avoid flake8 failure (#398)
Suppress flake8 A003 warning (#395)
more verbose test_flake8 error messages (same as ros2/launch_ros#135)
Remove unnecessary overloads (#389)
Simplify type annotation (#388)
Add support for anon substitution (#384)
Make RegisterEventHandler describe its sub-entities (#386)
Fix parsing of cmd line arguments in XML and yaml file (#379)
Only allow ExecuteProcess actions to execute once (#375)
Fix grammar in docstring (#373)
Release loop lock before waiting for it to do work (#369)
Adds Command substitution (#367)
Handle case where output buffer is closed during shutdown (#365)
Use imperative mood in docstrings. (#362)
Contributors: Dirk Thomas, Ivan Santiago Paunovic, Jacob Perron, Jorge Perez, Peter Baughman, Shane Loretz, Steven! Ragnarök, William Woodall
0.9.5 (2019-11-13)
0.9.4 (2019-11-08)
Fix ExecuteProcess.get_sub_entities() implementation. (#353)
Contributors: Michel Hidalgo
0.9.3 (2019-10-23)
0.9.2 (2019-10-23)
0.9.1 (2019-09-25)
Fix error in ExecuteProcess parse classmethod (#339)
Add support to ignore fields when parsing ExecuteProcess. (#336)
Make parse_substitution handle zero-width text. (#335)
Fix InvalidLaunchFileError error message. (#333)
Fix default Action describe_conditional_sub_entities() implementation. (#334)
Contributors: Michel Hidalgo, ivanpauno
0.9.0 (2019-09-18)
Fix “‘GroupAction’ object has no attribute ‘actions’” error (#327)
install package marker and manifest (#323)
Make IncludeLaunchDescription force launch_arguments (#284)
fix expectation for test on Windows (#319)
Improve error message when a failing to include launch file (#315)
Fix launch argument listing/checking issues (#310)
Support LaunchService injection into pre-shutdown tests. (#308)
Fix test_expose_decorators failures (#307)
Add assertWaitForStartup method to match assertWaitForShutdown (#278)
Add support for conditions in IncludeLaunchDescription actions (#304)
Convert list comprehension to generator (#300)
Don’t create a log directory every time the launch logger is imported. (#299)
Avoid registering atexit on windows (#297)
Correct launch service sigterm handling (#294)
fix encoding handling when writing to stdout and log files (#280)
More idiomatic typecheck-only imports (#285)
Add deprecated argument to LaunchDescriptionn (#291)
Add support for not optional environment variable substitution (#288)
Add parsing method to PythonExpression substitution (#281)
Revert “Revert “[execute_process] emulate_tty configurable and defaults to true”” (#277)
Refactor launch.frontend file loading (#271)
Revert “[execute_process] emulate_tty configurable and defaults to true (#265)” (#276)
fix linter warnings (#274)
[execute_process] emulate_tty configurable and defaults to true (#265)
Add parsing method for dirname substitution (#273)
Add parsing methods for SetEnviromentVariable and UnsetEnviromentVariable (#272)
Add parsing method for DeclareLaunchArgument (#270)
Add frontend module in launch, launch_xml and launch_yaml packages (#226)
Add PathJoinSubstitution (#266)
Fix EventHandler type hints (#264)
Fix get_launch_arguments to not crash on conditional sub entities (#257)
Use stderr logger instead of buffer (#258)
Line buffering of logger output (#255)
Contributors: Chris Lalancette, Dan Rose, Daniel Stonier, Dirk Thomas, Jacob Perron, Michel Hidalgo, Peter Baughman, Scott K Logan, William Woodall, ivanpauno
0.8.3 (2019-05-29)
Changed IncludeLaunchDescription to not check declared arguments of subentities in order to work around an issue preventing nested arugments until a better fix can be done. (#249)
Fixed a bug where logging messages could be duplicated and improved logging’s apperance on the CLI. (#250)
Contributors: Michel Hidalgo, ivanpauno
0.8.2 (2019-05-20)
0.8.1 (2019-05-08)
0.8.0 (2019-04-13)
Added SetEnvironmentVariable and UnsetEnvironmentVariable actions #164 (#216)
Used one sentence per line in docs. (#219)
Added support for external ExecuteProcess output overrides. (#218)
Logged the launch logging config before running. (#217)
Fixed treating stderr output separate from stdout. (#212)
Replaced characters with marker when there is a decoding error. (#202)
Added LaunchLogger class. (#145)
Added test actions. (#178)
Fixed to close subprocess transport on execute action cleanup. (#198)
Updated logger.warn (deprecated) to logger.warning. (#199)
Dropped legacy launch package. (#191)
Migrated legacy launch API tests. (#167)
Updated to cancel Timers on shutdown. (#181)
Fixed timer global init of event handler. (#184)
Added support for required nodes (#179)
Updated to ensure event handlers add event to context locals. (#177)
Added OnProcessStart event handler. (#171)
Corrected OnProcessExit typing for Callable. (#170)
Removed whitespace in keyword arg. (#169)
Contributors: Dirk Thomas, Jacob Perron, Kyle Fazzari, Michel Hidalgo, Peter Baughman, Shane Loretz, William Woodall, ivanpauno, oswinso
0.7.3 (2018-12-13)
Fixed deprecation warning related to collections.abc (#158)
Contributors: William Woodall
0.7.2 (2018-12-06)
Changed the signit handler os it executes the shutdown event synchronously (#156)
Contributors: Jonathan Chapple, Steven! Ragnarök, William Woodall
0.7.1 (2018-11-16)
Fixed setup.py versions (#155)
Contributors: Steven! Ragnarök
0.7.0 (2018-11-16)
Fixed a bug to ensure that shutdown event is handled correctly (#154) * There was a potential race condition in between when the shutdown event is emitted and the rest of the shutdown handling code. * This introduces an additional await to ensure that the event is emitted before proceeding.
Fixed example to always use shell to avoid inconsistency of time being a shell command or executable (#150)
Added tests for class_tools module and fix is_a_subclass() (#142)
Added tests for the utilities module (#143)
Added ‘handle_once’ property for unregistering an EventHandler after one event (#141)
Added UnregisterEventHandler action (#110)
Changed LaunchService so that it returns
1on caught exceptions from within launch (#136)Added ability to define and pass launch arguments to launch files (#123) * Added self descriptions for substitutions * Added tracebacks back to the output by default * Added new actions for declaring launch arguments * Added new method on LaunchDescription which gets all declared arguments within * Added ability to pass arguments when including a launch description * Added description for local variables used in Node action * Added ability to show and pass launch arguments on the command line * Added an accessor for the Condition of an Action * Signed-off-by: William Woodall <william@osrfoundation.org>
Added UnsetLaunchConfiguration action and tests (#134) * Signed-off-by: William Woodall <william@osrfoundation.org>
Added GroupAction for conditionally including other actions and scoping (#133) * Signed-off-by: William Woodall <william@osrfoundation.org>
Added optional name argument to ExecuteProcess (#129) * Signed-off-by: William Woodall <william@osrfoundation.org>
Added a new pair of actions for pushing and popping launch configurations (#128) * Signed-off-by: William Woodall <william@osrfoundation.org>
Contributors: Dirk Thomas, Jacob Perron, Michael Carroll, William Woodall, dhood
0.6.0 (2018-08-20)
Added a way to include other Python launch files (#122) * Signed-off-by: William Woodall <william@osrfoundation.org>
Implemented the concept of Action conditions (#121) * Signed-off-by: William Woodall <william@osrfoundation.org>
Added IncludeLaunchDescription action (#120) * fixes #115 * Signed-off-by: William Woodall <william@osrfoundation.org>
Contributors: William Woodall
0.5.2 (2018-07-17)
0.5.1 (2018-06-27)
Changed the behavior when signaling SIGINT to subprocesses on Windows, where it now does SIGTERM instead, because SIGINT causes a ValueError about SIGINT being an unsupported signal number. (#94)
Fixed a bug by avoiding reentrancy in the SIGINT signal handler. (#92)
Various Windows fixes. (#87) * LaunchService.run() now returns non-0 when there are exceptions in coroutines. * Updated
launch_counters.pyexample for Windows. * Fixed a bug that would cause mismatched asyncio loops in some futures. * Addressed the fact thatsignal.SIGKILLdoesn’t exist on Windows, so emulate it in our Event. * Fixed an issue that resulted in spurious asyncio errors in LaunchService test.Contributors: William Woodall, dhood
0.5.0 (2018-06-19)
Fixed a bug where unclosed asyncio loops caused a traceback on the terminal on exit, but only in Python 3.5 (#85)
Changed to use variable typing in comments to support python 3.5 (#81)
New launch API (#74) * See pull request for more details and links to architecture documentation and the design doc.
Moved launch source files into launch.legacy namespace (#73) * This was in preparation for the new launch API.
[for launch.legacy] fixed a flake8 warning (#72)
[for launch.legacy] set zip_safe to avoid warning during installation (#71)
[for launch.legacy] Fix hang on keyboard interrupt (#69) * When keyboard interrupt exception occurs loop.run_forever is called. But there is no loop.stop call. This causes a hang.
Contributors: Devin, Dirk Thomas, William Woodall, dhood