message schema
まだ誰も着手していません。
評価
- 難易度
- 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 はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
matplotlib/ipympl のほかの issue
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
matplotlib/ipympl#623 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
matplotlib/ipympl#622 · コメント 13 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
matplotlib/ipympl#612 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 45/100
matplotlib/ipympl#611 · コメント 4 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
matplotlib/ipympl#609 · コメント 7 件 ·
matplotlib/ipympl の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
speaches-ai/speaches#678 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
[BUG] ECR GetAuthorizationToken returns a proxyEndpoint for the default region, not the request's オープンbug ecr
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
conda-forge/spacy-feedstock#177 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100