Calling TM.dfd() a second time returns an empty diagram
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
- #386 @markthomaschurch による — マージされずにクローズ
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 停滞
- 技術スタック
- python
調査の方向性
A linked pull request, #386, is already open for this issue, so the work is under way. The report identifies TM.dfd() and each element's dfd() state as the relevant entry points; review the pull request to see how it handles repeated renders and preserves state set by check().
索引モデルが issue の本文から書いたものです。
説明
Description
Calling tm.dfd() a second time in the same process returns a diagram with no elements, only the empty digraph wrapper.
Reproduction
from pytm import TM, Actor, Server, Dataflow
tm = TM("example", description="d")
Dataflow(Actor("User"), Server("Web"), "Request")
tm.check()
first = tm.dfd()
second = tm.dfd() # or tm.dfd(colormap=True), tm.dfd(levels=[1])
assert "actor_" in first
assert "actor_" in second # fails: no nodes or edges
This affects scripts and tools that render more than one variant of the DFD from one model, such as plain and colormap versions, several levels, or per-element diagrams.
Cause
Each element's dfd() sets is_drawn = True, to avoid drawing it twice within a single pass, and nothing resets it. On the next call, every element is skipped.
Proposed fix
TM.dfd() saves each element's is_drawn before drawing and restores it afterwards. State set before drawing is preserved: duplicates hidden by onDuplicates=Action.IGNORE during check() stay hidden.
- 主要言語
- Python
- スター
- 1.2k
- フォーク
- 237
- 平均マージ
- 4日 2時間
- マージ済み PR(30日)
- 9
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OWASP/pytm のほかの issue
-
Dataflow defaults overwrite values the model set explicitly対応中かも @markthomaschurch が 1 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 30/100
メンテナーはふだん 3 日以内に返信
-
Datastore icon is missing from SVG diagrams (absolute PNG path)対応中かも @markthomaschurch が 3 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 20/100
メンテナーはふだん 3 日以内に返信
-
Long boundary names render a literal "\n" in the DFD再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
メンテナーはふだん 3 日以内に返信
-
`TM.check()` overwrites explicit Dataflow `protocol`, `dstPort` and `controls.isEncrypted` with sink defaults (regression in 1.4.0)対応中かも @Svastikkka が 14 日前に担当しました。 オープン
難易度 3/5 1〜2日 初心者へのやさしさ 75/100
メンテナーはふだん 3 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
メンテナーはふだん 3 日以内に返信
似ている issue
-
15-minutes 5-minutes algorithm any-language beginner-friendly c cpp csharp easy go good first issue hacktoberfest help wanted java javascript kotlin python rust swift typescript
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
Huerte/algo-solutions-python#254 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 86/100
MichaelYcJo/SpecSeal#1543 ·
-
size/s
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
sipyourdrink-ltd/bernstein#7179 ·
メンテナーはふだん 1 日以内に返信
-
good first issue help wanted python up-for-grabs
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
andrewsiah/agentswarm-data-tasks#309 ·
メンテナーはふだん 1 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信