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

message schema

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

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

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
25/100
issue の種類
ドキュメント
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
javascript, jupyter-notebook, python

調査の方向性

ファイル、テスト、エントリーポイントは指定されていません。まず Python-to-JavaScript および JavaScript-to-Python のメッセージ処理を見つけ、次に実装された payloads とここに列挙された schemas を比較してください。メッセージスキーマが文書化され、実際のプロトコルと整合していれば完了です。

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

説明

At the request of @rgbkrk

Messages sent from python to js

  • the data field in sent messages is either a string with format
    "data:image/png;base64,{0}" or a dictionary
  • if a string, the {0} entry is a base64 encoded string of the image data
    • maybe a full image or a diff.
    • image is png encoded
  • if a dictionary then it will follow the schema
  {'type': 'object',
   'properties': {
       'type': {'type': 'str'}
   }
  }

Depending on the value of 'type', the schema for the rest of the dict/object


{'cursor': {'properties': {'cursor': {'type': int}, 'type': {'type': str}},
  'type': 'object'},
 'draw': {'properties': {'type': {'type': str}}, 'type': 'object'},
 'figure_label': {'properties': {'label': {'type': str},
   'type': {'type': str}},
  'type': 'object'},
 'image_mode': {'properties': {'mode': {'type': str}, 'type': {'type': str}},
  'type': 'object'},
 'message': {'properties': {'message': {'type': str}, 'type': {'type': str}},
  'type': 'object'},
 'refresh': {'properties': {'type': {'type': str}}, 'type': 'object'},
 'resize': {'properties': {'size': {'type': list}, 'type': {'type': str}},
  'type': 'object'},
 'rubberband': {'properties': {'type': {'type': str},
   'x0': {'type': float},
   'x1': {'type': float},
   'y0': {'type': float},
   'y1': {'type': float}},
  'type': 'object'},
 'save': {'properties': {'type': {'type': str}}, 'type': 'object'}}

Messages received by python from js

All of the messages seem to have


  {('msg_id',
    'parent_header',
    'buffers',
    'header',
    'content',
    'msg_type',
    'metadata')}

everything but 'content' looks like it is comm-related overhead

In 'content' there is 'data' and 'comm_id' (which is clearly comm overhead)

Inside of 'data'

  {'type': 'object',
   'properties': {
       'data': {'type': 'object',
                'properties': {
                    'type': {'type': 'str'}
                }
               }
       'comm_id': {'type': 'str'}
   }
  }

Depending on the value of 'type' (the entry in the message) it will
conform to one of the following specs


  {'ack': {'properties': {'figure_id': {'type': str}, 'type': {'type': str}},
    'type': 'object'},
   'button_press': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'button_release': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'closing': {'properties': {'figure_id': {'type': str}, 'type': {'type': str}},
    'type': 'object'},
   'draw': {'properties': {'figure_id': {'type': str}, 'type': {'type': str}},
    'type': 'object'},
   'figure_enter': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'figure_leave': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'key_press': {'properties': {'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'key': {'type': str},
     'type': {'type': str}},
    'type': 'object'},
   'key_release': {'properties': {'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'key': {'type': str},
     'type': {'type': str}},
    'type': 'object'},
   'motion_notify': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'refresh': {'properties': {'figure_id': {'type': str}, 'type': {'type': str}},
    'type': 'object'},
   'scroll': {'properties': {'button': {'type': int},
     'figure_id': {'type': str},
     'guiEvent': {'type': dict},
     'step': {'type': int},
     'type': {'type': str},
     'x': {'type': float},
     'y': {'type': float}},
    'type': 'object'},
   'send_image_mode': {'properties': {'figure_id': {'type': str},
     'type': {'type': str}},
    'type': 'object'},
   'set_dpi_ratio': {'properties': {'dpi_ratio': {'type': float},
     'figure_id': {'type': str},
     'type': {'type': str}},
    'type': 'object'},
   'supports_binary': {'properties': {'figure_id': {'type': str},
     'type': {'type': str},
     'value': {'type': bool}},
    'type': 'object'},
   'toolbar_button': {'properties': {'figure_id': {'type': str},
     'name': {'type': str},
     'type': {'type': str}},
    'type': 'object'}}

主要言語
Jupyter Notebook
スター
1.7k
フォーク
234
PR マージ指標
30日以内にマージされた PR はありません

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

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

matplotlib/ipympl のほかの issue

matplotlib/ipympl の issue をすべて見る

似ている issue

Backend & API Design の issue をもっと見る

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

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