Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python docstring for message documentation #196

Open
guillaumeautran opened this issue Jun 13, 2023 · 0 comments
Open

Python docstring for message documentation #196

guillaumeautran opened this issue Jun 13, 2023 · 0 comments

Comments

@guillaumeautran
Copy link

Enhancement Request

Required Info:

  • Operating System:
    • Ubuntu 20.04
  • Installation type:
    • Source
  • Version or commit hash:
    • git branch: Humble
  • DDS implementation:
    • N/A
  • Client library (if applicable):
    • rclpy

Steps to reproduce issue

When looking at a message class documentation in Python, the message comments don't really show making it more complicated to understand the message.

For example take the statistics_msgs/MetricsMessage, the source file has lots of good documentation for the message itself as well as for each of the fields contained in the message.
When looking at the python documentation for the message, we see:

Help on class MetricsMessage in module statistics_msgs.msg._metrics_message:

class MetricsMessage(builtins.object)
 |  MetricsMessage(**kwargs)
 |  
 |  Message class 'MetricsMessage'.
 |  
 |  Methods defined here:
 |  
 |  __eq__(self, other)
 |      Return self==value.
 |  
 |  __init__(self, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  __repr__(self)
 |      Return repr(self).
 |  
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |  
 |  get_fields_and_field_types() from statistics_msgs.msg._metrics_message.Metaclass_MetricsMessage
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |  
 |  measurement_source_name
 |      Message field 'measurement_source_name'.
 |  
 |  metrics_source
 |      Message field 'metrics_source'.
 |  
 |  statistics
 |      Message field 'statistics'.
 |  
 |  unit
 |      Message field 'unit'.
 |  
 |  window_start
 |      Message field 'window_start'.
 |  
 |  window_stop
 |      Message field 'window_stop'.
 |  
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |  
 |  SLOT_TYPES = (<rosidl_parser.definition.UnboundedString object>, <rosi...
 |  
 |  __hash__ = None

All of this without any of the message creator help data.

Expected behavior

Instead, we could build in the documentation comments from the original message documentation into the python class docstring making it better for developers to access the documentation.
A potential outcome for this message type:

 Help on class MetricsMessage in module statistics_msgs.msg._metrics_message:

class MetricsMessage(builtins.object)
 |  MetricsMessage(**kwargs)
 |  
 |  Message class 'MetricsMessage'.
 |  
 |  A generic metrics message providing statistics for measurements from different sources. For example,
 |  
 |  measure a system's CPU % for a given window yields the following data points over a window of time:
 |    - average cpu %
 |    - std deviation
 |    - min
 |    - max
 |    - sample count
 | 
 |  These are all represented as different 'StatisticDataPoint's.
 |  
 |  Fields:
 |    measurement_source_name (string): Name metric measurement source, e.g., node, topic, or process name
 |    metrics_source (string): Name of the metric being measured, e.g. cpu_percentage, free_memory_mb, message_age, etc.
 |    unit (string): Unit of measure of the metric, e.g. percent, mb, seconds, etc.
 |    window_start (builtin_interfaces/Time): Measurement window start time
 |    window_stop (builtin_interfaces/Time): Measurement window end time
 |    statistics (sequence<statistics_msgs/StatisticDataPoint>): A list of statistics data point, defined in StatisticDataPoint.msg
 |  
 |  Methods defined here:
 |  
 |  __eq__(self, other)
 |      Return self==value.
 |  
 |  __init__(self, **kwargs)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |  
 |  __repr__(self)
 |      Return repr(self).
 |  
 |  ----------------------------------------------------------------------
 |  Class methods defined here:
 |  
 |  get_fields_and_field_types() from statistics_msgs.msg._metrics_message.Metaclass_MetricsMessage
 |  
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
<..snip..>

Feature request

Feature description

Transfer message file documentation into python docstrings for the corresponding message.

guillaumeautran added a commit to clearpathrobotics/rosidl_python that referenced this issue Jun 13, 2023
issue: ros2#196

Transcribed the original message comments in the python docstring
guillaumeautran added a commit to clearpathrobotics/rosidl_python that referenced this issue Jun 13, 2023
issue: ros2#196

Transcribed the original message comments in the python docstring
guillaumeautran added a commit to clearpathrobotics/rosidl_python that referenced this issue Jun 15, 2023
issue: ros2#196

Transcribed the original message comments in the python docstring
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant