aws / aws/aws-step-functions-data-science-sdk-python

render_graph() has hidden dependencies

オープン
#189 コメント 1 件 リアクション 3 件 担当者 0 名 GitHub で見る
bug
主要言語
Python
スター
299
フォーク
84
PR マージ指標
30日以内にマージされた PR はありません

説明

render_graph() is improperly documented and is not portable

### Use Case

Better support for render_graph() allows not just exploration through notebooks, it enables real production software projects. It provides feedback that doesn't require deployment in the AWS Console or through an automated deployment pipeline. It helps with documentation and code reviews.

It's a highly valuable tool in the SDK that only works in a notebook.

### Proposed Solution

Update the docs:

- https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/workflow.html#stepfunctions.workflow.Workflow.render_graph
- https://aws-step-functions-data-science-sdk.readthedocs.io/en/stable/readmelink.html#visualizing-a-workflow

The second link says it doesn't work in JupyterLab but it doesn't explicitly say that it only works in Jupyter Notebooks. I believe SageMaker and EMR Notebooks both use JupyterLab at this point.

If nothing is going to be done, this implementation should at least be deprecated because it's so selectively useful and is a red herring for people looking for this functionality.

### Other

The current render_graph() method provides very unclear documentation. There is no mention of the Ipython requirement and the logs warning the user can easily be silenced without them ever knowing.

If you try to dig into the render_graph() method, you'll find the WorkflowGraphWidget and the show() method that generates some HTML object for IPython. In order to get something potentially useful, I checked out the "data" attribute of the HTML that was generated and found a CSS link and a JS script tag and a div with an svg tag. It appears that the widget generates the html containing javascript to generate the definition.

This could be much better. For one, the docs need to be updated to reflect the dependencies.

For actual rendering, you could:
- Use an explicitly imported Python library
- Generate HTML that works outside of IPython
- Add a function in Boto3 to fetch the image URL or bytes
- Add a publicly accessible endpoint that accepts the definition JSON

* [ ] :wave: I may be able to implement this feature request
* [ ] :warning: This feature might incur a breaking change

---

This is a :rocket: Feature Request

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

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

調査の方向性

まず Workflow.render_graph() のドキュメントと issue からリンクされている README のセクションを確認し、その後 WorkflowGraphWidget とその show() メソッドを調べます。IPython、ノートブック、JavaScript、CSS、移植性に関するどの制限を文書化または対処する必要があるかを判断します。対応する環境と依存関係が明示されるか、具体的なレンダリング方法について合意して実装されれば完了です。

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

評価

技術スタック
aws, jupyter, jupyter-notebook, python
領域
cloud, developer-experience, documentation
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
28/100

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

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