Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
c47870c
fix: add url_path parameter in rosbridge_websocket_launch.xml (#963)
seanpai96 Oct 13, 2024
c1bfc2f
Update ROS 2 distros in README.md (#968)
sea-bass Oct 13, 2024
1de6896
Remove first handler update as queue update is blocked (#974)
lboorman Nov 16, 2024
460d202
Add namespace and respawn parameters to the nodes in the launch file …
FlorianLebecque Nov 28, 2024
25fe570
Drop support for ROS 2 Iron (#981)
sea-bass Dec 25, 2024
5444d9b
Add ament_mypy test and fix all mypy errors (#980)
bjsowa Dec 25, 2024
3b30f44
Use monotonic clock for time measuring (#982)
bjsowa Dec 25, 2024
ffa2675
Fix infinite loop in QueueMessageHandler (#983)
bjsowa Dec 25, 2024
a000226
Add new service to retrieve the different interfaces in the ROS Netwo…
FlorianLebecque Jan 4, 2025
0af768d
Add namespace to services names (#992)
FlorianLebecque Jan 20, 2025
673fc05
Add timeout option to call_service messages (#984)
bjsowa Jan 20, 2025
52bbb78
Bump actions/stale from 9.0.0 to 9.1.0 (#995)
dependabot[bot] Jan 22, 2025
528b21f
Call services and send action goals in new threads by default (#996)
bjsowa Jan 23, 2025
0d96ae5
Prevent parameter retrieval crashes (#978)
Mehsias Jan 25, 2025
cced3fb
Update maintainers (#1000)
bjsowa Feb 6, 2025
f5953a8
Fix randomly failing subscribe unsubscribe test (#1008)
bjsowa Feb 12, 2025
28d80f6
Bump ros-tooling/action-ros-ci from 0.3 to 0.4 (#1009)
dependabot[bot] Feb 13, 2025
52d39c1
New async rosapi params module implementation (#1001)
bjsowa Feb 17, 2025
3e784b1
Fix action cancelling/aborting (#1013)
bjsowa Feb 26, 2025
ceb3f7d
Default subscriber QOS to BestEffort, account for TRANSIENT_LOCAL (#991)
ewak Feb 26, 2025
00e30e3
Release 2.2.0 (#1016)
bjsowa Feb 26, 2025
23888e2
Fix array-like parameter serialization in rosbridge get_param (#1018)
noah-wardlow Mar 21, 2025
fde7509
Add services to return Action interface details (#1021)
davidferlop Mar 28, 2025
fbb0769
Don't subscribe with Transient local QoS when there are volatile publ…
Egoless41 Apr 14, 2025
c489ed5
Add missing service timeout parameter to conditional launch (#1028)
ana-GT Apr 30, 2025
005747b
Handle extra IDL slots when doing array introspection (#1031)
scottbell May 18, 2025
e5a672f
Release 2.3.0 (#1034)
bjsowa May 19, 2025
54f823d
fix: ament_mypy errors (#1039)
bjsowa Jun 4, 2025
279f8dd
chore: Add kilted workflow (#1038)
bjsowa Jun 4, 2025
f3baaf2
fix: Support remapping service names (#1041)
bjsowa Jun 7, 2025
fb157a0
fix: Correct JSON serialization in PNG compression and update tests (…
electronicofive Jun 15, 2025
2ed864b
feat: Add interface and service for retrieving action type (#1046)
chaitanya-mandala Jun 20, 2025
21f665f
fix: Clean up package dependencies (#1053)
bjsowa Jul 27, 2025
5c6ecb5
Add pydocstyle lint checks and fix rosdoc2 warnings (#1056)
bjsowa Aug 5, 2025
c8f2a2f
chore: Use ruff to replace other linters used in pre-commit hook (#1058)
bjsowa Aug 7, 2025
cb94ab9
fix: rosbridge_websocket cooperative shutdown (#1048)
cyan-at Aug 7, 2025
1101795
refactor: Enable various ruff checks and fix lint errors (#1059)
bjsowa Aug 8, 2025
98ecb04
Bump actions/checkout from 4 to 5 (#1061)
dependabot[bot] Aug 12, 2025
b1f6b4c
fix: Change warn to warning (#1067)
pascalauroboa Aug 28, 2025
3020ee7
fix: Add delays to tests after subscribing/unsubscribing topics (#1071)
bjsowa Sep 2, 2025
bc09fd4
chore: Bump actions/setup-python from 5 to 6 (#1073)
dependabot[bot] Sep 4, 2025
b9c7b57
chore: Bump actions/stale from 9.1.0 to 10.0.0 (#1074)
dependabot[bot] Sep 4, 2025
ff21908
chore: Remove jazzy ci workflow (#1075)
bjsowa Sep 10, 2025
5818880
refactor: Add type annotations to all functions and methods (#1069)
bjsowa Sep 18, 2025
949d7c3
feat: New parameter and cli arguments handling (#1060)
bjsowa Oct 7, 2025
05cd355
chore: Bump actions/stale from 10.0.0 to 10.1.0 (#1080)
dependabot[bot] Oct 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- uses: actions/setup-python@v5
- uses: actions/setup-python@v6
with:
python-version: '3.10'

Expand All @@ -21,10 +21,8 @@ jobs:
include:
# Test supported ROS 2 distributions
# https://docs.ros.org/en/rolling/Releases.html
# NOTE: Humble does not work on the `ros2` branch, so it is tested in its own branch.
- ros: iron
os: ubuntu-22.04
- ros: jazzy
# NOTE: Humble and Jazzy do not work on the `ros2` branch, so they are tested in their own branches.
- ros: kilted
os: ubuntu-24.04
- ros: rolling
os: ubuntu-24.04
Expand All @@ -33,12 +31,12 @@ jobs:
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
path: ros_ws/src

- uses: ros-tooling/[email protected]

- uses: ros-tooling/action-ros-ci@v0.3
- uses: ros-tooling/action-ros-ci@v0.4
with:
target-ros2-distro: ${{ matrix.ros }}
2 changes: 1 addition & 1 deletion .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9.0.0
- uses: actions/stale@v10.1.0
with:
stale-issue-message: "This issue has been marked as stale because there has been no activity in the past 12 months. Please add a comment to keep it open."
stale-issue-label: stale
Expand Down
27 changes: 6 additions & 21 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,28 +15,13 @@ repos:
- id: mixed-line-ending
- id: trailing-whitespace

- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort

- repo: https://github.com/psf/black
rev: 24.8.0
hooks:
- id: black

- repo: https://github.com/PyCQA/flake8
rev: 7.1.1
hooks:
- id: flake8

- repo: https://github.com/PyCQA/bandit
rev: 1.7.10
hooks:
- id: bandit
args: ["--skip", "B101,B110,B311"]

- repo: https://github.com/codespell-project/codespell
rev: v2.3.0
hooks:
- id: codespell

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.12.7
hooks:
- id: ruff-format
- id: ruff-check
1 change: 1 addition & 0 deletions AUTHORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,4 @@
- Matthias Gruhler <[email protected]>
- Russell Toris <[email protected]>
- Travis Prosser <[email protected]>
- Błażej Sowa <[email protected]>
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
rosbridge_suite
===============

[![ROS Foxy version](https://img.shields.io/ros/v/foxy/rosbridge_suite)](https://index.ros.org/p/rosbridge_suite/github-RobotWebTools-rosbridge_suite/#foxy)
[![ROS Galactic version](https://img.shields.io/ros/v/galactic/rosbridge_suite)](https://index.ros.org/p/rosbridge_suite/github-RobotWebTools-rosbridge_suite/#galactic)
[![ROS Humble version](https://img.shields.io/ros/v/humble/rosbridge_suite)](https://index.ros.org/p/rosbridge_suite/github-RobotWebTools-rosbridge_suite/#humble)
[![ROS Jazzy version](https://img.shields.io/ros/v/jazzy/rosbridge_suite)](https://index.ros.org/p/rosbridge_suite/github-RobotWebTools-rosbridge_suite/#jazzy)
[![ROS Rolling version](https://img.shields.io/ros/v/rolling/rosbridge_suite)](https://index.ros.org/p/rosbridge_suite/github-RobotWebTools-rosbridge_suite/#rolling)


Expand Down Expand Up @@ -55,8 +54,11 @@ Releasing requires push access to [RobotWebTools/rosbridge_suite](https://github
2. Manually edit and clean up the changelogs. Commit the changes.
3. Run `catkin_prepare_release --bump [major/minor/patch]` to bump versions in package.xml and push changes to origin.
4. Run bloom-release commands to create PRs to update rosdistro:
- `bloom-release --rosdistro foxy --track foxy rosbridge_suite`
- `bloom-release --rosdistro galactic --track galactic rosbridge_suite`
- `bloom-release --rosdistro rolling --track rolling rosbridge_suite`
- `bloom-release --rosdistro humble rosbridge_suite`
- `bloom-release --rosdistro jazzy rosbridge_suite`
- `bloom-release --rosdistro rolling rosbridge_suite`

Once the PRs are merged, packages will be available for each distro after the next sync. Build/sync status can be viewed at: [foxy](http://repo.ros2.org/status_page/ros_foxy_default.html), [galactic](http://repo.ros2.org/status_page/ros_galactic_default.html), [rolling](http://repo.ros2.org/status_page/ros_rolling_default.html).
Note that right now, the Humble release is tracked in the `humble` branch, while Jazzy and later are tracked in the `ros2` branch.

Once the PRs are merged, packages will be available for each distro after the next sync.
Build/sync status can be viewed at: [humble](http://repo.ros2.org/status_page/ros_humble_default.html), [jazzy](http://repo.ros2.org/status_page/ros_jazzy_default.html), and [rolling](http://repo.ros2.org/status_page/ros_rolling_default.html).
4 changes: 3 additions & 1 deletion ROSBRIDGE_PROTOCOL.md
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,8 @@ Calls a ROS service.
"service": <string>,
(optional) "args": <list<json>>,
(optional) "fragment_size": <int>,
(optional) "compression": <string>
(optional) "compression": <string>,
(optional) "timeout": <float>
}
```

Expand All @@ -449,6 +450,7 @@ Calls a ROS service.
before it is fragmented
* **compression** – an optional string to specify the compression scheme to be
used on messages. Valid values are "none" and "png"
* **timeout** – the time, in seconds, to wait for a response from the server


Stops advertising an external ROS service server
Expand Down
113 changes: 111 additions & 2 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,114 @@
[tool.bandit]
skips = ["B101", "B110", "B311"]
[project]
name = "rosbridge_suite"
requires-python = ">=3.10"

[tool.black]
# We use ruff for formatting, but black formatter should be compatible with ruff.
line-length = 100

[tool.ruff]
line-length = 100

[tool.ruff.lint]
select = [
# "AIR", # Airflow, We don't use this framework
# "ERA", # Eradicate, We allow commented-out code
# "FAST", # FastAPI, We don't use this framework

# flake8 extensions
"YTT", # flake8-2020
"ANN", # flake8-annotations,
"ASYNC", # flake8-async
"S", # flake8-bandit
# "BLE", # flake8-blind-except, Too much hassle to fix (TODO)
# "FBT", # flake8-boolean-trap, We allow boolean traps
"B", # flake8-bugbear
"A", # flake8-builtins
# "COM", # flake8-commas, We don't require trailing commas
"C4", # flake8-comprehensions
# "CPY", # flake8-copyright, preview feature
"DTZ", # flake8-datetimez
"T10", # flake8-debugger
# "DJ", # flake8-django, We don't use this framework
"EM", # flake8-errmsg
"EXE", # flake8-executable
# "FIX", # flake8-fixme, too many TODOs to fix them now
"FA", # flake8-future-annotations
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"ICN", # flake8-import-conventions
"LOG", # flake8-logging
"G", # flake8-logging-format
# "INP", # flake8-no-pep420, false positives with launch tests
"PIE", # flake8-pie
# "T20", # flake8-print, We allow some print statements
"PYI", # flake8-pyi
# "PT", # flake8-pytest-style, Too many errors to fix for now (TODO)
"Q", # flake8-quotes
"RSE", # flake8-raise
"RET", # flake8-return
# "SLF", # flake8-self, Too many "Private member accessed" errors (TODO)
"SIM", # flake8-simplify
"SLOT", # flake8-slots
"TID", # flake8-tidy-imports
# "TD", # flake8-todos, We don't enforce format for TODO comments
"TC", # flake8-type-checking
"ARG", # flake8-unused-arguments
"PTH", # flake8-use-pathlib

"FLY", # flynt
"I", # isort
"C90", # mccabe
"NPY", # numpy
"PD", # pandas-vet
# "N", # pep8-naming, Can't fix without breaking API
"PERF", # Perflint
"E", # pycodestyle errors
"W", # pycodestyle warnings
# "DOC", # pydoclint, preview feature
"D", # pydocstyle
"F", # pyflakes
"PGH", # pygrep-hooks
"PL", # pylint
"UP", # pyupgrade
"FURB", # refurb
"RUF", # ruff
# "TRY", # tryceratops, Too many "Create your own exception" errors (TODO)
]
ignore = [
"SIM108", # Opinionated: ternary operator does not always look simpler

# Undocumented code
"D100",
"D101",
"D102",
"D103",
"D104",
"D105",
"D106",
"D107",

# Conflicting pydocstyle rules
"D203", # incorrect-blank-line-before-class
"D212", # multi-line-summary-first-line

"S101", # assert
"S110", # try-except-pass
"S311", # suspicious-non-cryptographic-random-usage

# Pylint "too-many" errors
"PLR0911",
"PLR0912",
"PLR0913",
"PLR0914",
"PLR0915",
"PLR0916",
"PLR0917",

"PLR2004", # magic-value-comparison, Too many to fix for now (TODO)
"PLW0603", # global-statement, Will need a more sophisticated solution to fix this (TODO)
]

mccabe.max-complexity = 36

pycodestyle.max-line-length = 120
17 changes: 17 additions & 0 deletions rosapi/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,23 @@
Changelog for package rosapi
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

2.3.0 (2025-05-19)
------------------
* Handle extra IDL slots when doing array introspection (`#1031 <https://github.com/RobotWebTools/rosbridge_suite/issues/1031>`_)
* Add services to return Action interface details (`#1021 <https://github.com/RobotWebTools/rosbridge_suite/issues/1021>`_)
* Fix array-like parameter serialization in rosbridge get_param (`#1018 <https://github.com/RobotWebTools/rosbridge_suite/issues/1018>`_)
* Contributors: David Fernàndez López, Noah Wardlow, Scott Bell, Błażej Sowa

2.2.0 (2025-02-26)
------------------
* New async rosapi params module implementation (`#1001 <https://github.com/RobotWebTools/rosbridge_suite/issues/1001>`_)
* Update maintainers (`#1000 <https://github.com/RobotWebTools/rosbridge_suite/issues/1000>`_)
* Prevent parameter retrieval crashes (`#978 <https://github.com/RobotWebTools/rosbridge_suite/issues/978>`_)
* Add namespace to services names (`#992 <https://github.com/RobotWebTools/rosbridge_suite/issues/992>`_)
* Add new service to retrieve the different interfaces in the ROS Network (`#988 <https://github.com/RobotWebTools/rosbridge_suite/issues/988>`_)
* Add ament_mypy test and fix all mypy errors (`#980 <https://github.com/RobotWebTools/rosbridge_suite/issues/980>`_)
* Contributors: Błażej Sowa, Lebecque Florian, Mehsias, Matthias Rathauscher, Lebecque Florian

2.1.0 (2024-10-08)
------------------
* Fix invalid import of get_parameter_value in rosapi for ROS2 Jazzy. (`#932 <https://github.com/RobotWebTools/rosbridge_suite/issues/932>`_)
Expand Down
6 changes: 5 additions & 1 deletion rosapi/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
cmake_minimum_required(VERSION 3.5)
project(rosapi)

find_package(ament_cmake_ros REQUIRED)
find_package(ament_cmake REQUIRED)
find_package(ament_cmake_python REQUIRED)

if(NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
Expand All @@ -25,4 +26,7 @@ if(BUILD_TESTING)
find_package(ament_cmake_pytest REQUIRED)
ament_add_pytest_test(${PROJECT_NAME}_test_stringify_field_types test/test_stringify_field_types.py)
ament_add_pytest_test(${PROJECT_NAME}_test_typedefs test/test_typedefs.py)

find_package(ament_cmake_mypy REQUIRED)
ament_mypy()
endif()
Loading