Python parser for ROS message definitions and Foxglove message path syntax
Project description
ROS Parser
A Python parser for ROS message definitions and Foxglove message path syntax.
Installation
uv add ros-parser
Parsers
- ros1_msg: Parses ROS1 message definition files (.msg)
- ros2_msg: Parses ROS2 message definition files (.msg)
- message_path: Parses Foxglove message path syntax for data access and filtering
Usage
Parsing ROS2 Messages
from ros_parser import ros2_msg
definition = ros2_msg.parse_message_string("""
float64 x
float64 y
float64 z
""")
for field in definition.fields:
print(f"{field.name}: {field.type}")
Parsing ROS1 Messages
from ros_parser import ros1_msg
definition = ros1_msg.parse_message_string("""
Header header
float64 x
float64 y
float64 z
""")
for field in definition.fields:
print(f"{field.name}: {field.type}")
Parsing Schema with Dependencies
from ros_parser import parse_schema_to_definitions
# Parse a full schema including embedded type definitions
definitions = parse_schema_to_definitions(
"geometry_msgs/msg/Pose",
schema_data
)
Regenerating Standalone Parsers
The project uses Lark to generate standalone parsers from grammar files. If you modify any .lark grammar file, regenerate the parsers:
uv run _generate_standalone.py \
src/ros_parser/ros1_msg/grammar.lark \
src/ros_parser/ros2_msg/grammar.lark \
src/ros_parser/message_path/grammar.lark \
--output-dir src/ros_parser \
--lexer contextual
For more details on the message path syntax, see src/ros_parser/message_path/README.md.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ros_parser-0.2.0.tar.gz.
File metadata
- Download URL: ros_parser-0.2.0.tar.gz
- Upload date:
- Size: 71.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f70ec3da377a34f47ab3429f88d92088e0da1280f839c798079157e9cab4fc05
|
|
| MD5 |
d38d777144e0209906d96ff66b3bd5b9
|
|
| BLAKE2b-256 |
be3c1072dcea3d13beda165ae9c72646c5174013ca15600e86f98b9f9a21a7a1
|
File details
Details for the file ros_parser-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ros_parser-0.2.0-py3-none-any.whl
- Upload date:
- Size: 79.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.10.10 {"installer":{"name":"uv","version":"0.10.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd6075e7b98a3b35b7b71a3cda21e3e215f160ab894957e6f34c72ec783e80d0
|
|
| MD5 |
ca5f4497cc17c76a3ffa4c13025271d6
|
|
| BLAKE2b-256 |
42e3af460e1b7e3597740c22a562c18dbf873966213e79995c5720e40e819d65
|