Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Python docstring for message documentation

オープン
#196 コメント 0 件 リアクション 1 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
45/100
issue の種類
機能追加
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
python

調査の方向性

statistics_msgs/msg/MetricsMessage.msg のソースコメントと、issue に示されている生成済みの statistics_msgs.msg._metrics_message クラスを比較します。まず、このクラスを生成する rosidl の Python 生成パスを特定し、次に既存の生成テストを確認します。ソースのメッセージおよびフィールドのドキュメントが対応する Python docstrings に現れ、テストでカバーされていれば完了です。

索引モデルが issue の本文から書いたものです。

説明

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.

主要言語
EmberScript
スター
26
フォーク
68
平均マージ
1日 9時間
マージ済み PR(30日)
3

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

ros2/rosidl_python のほかの issue

ros2/rosidl_python の issue をすべて見る

似ている issue

Documentation の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。