Calling TM.dfd() a second time returns an empty diagram
Los mantenedores suelen responder en 3 días
Nadie ha tomado este issue todavía.
- #386 de @markthomaschurch — cerrado sin fusionar
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- python
- Área
- data-visualization, security
Línea de trabajo
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().
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Python
- Estrellas
- 1.2k
- Forks
- 237
- Merge medio
- 4 d 2 h
- PR fusionados (30 d)
- 9
Preparar el entorno
Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de OWASP/pytm
-
Dataflow defaults overwrite values the model set explicitlyPosiblemente ocupada @markthomaschurch la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 30/100
Los mantenedores suelen responder en 3 días
-
Datastore icon is missing from SVG diagrams (absolute PNG path)Posiblemente ocupada @markthomaschurch la tomó hace 3 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 20/100
Los mantenedores suelen responder en 3 días
-
Long boundary names render a literal "\n" in the DFDQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Los mantenedores suelen responder en 3 días
-
`TM.check()` overwrites explicit Dataflow `protocol`, `dstPort` and `controls.isEncrypted` with sink defaults (regression in 1.4.0)Posiblemente ocupada @Svastikkka la tomó hace 14 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 75/100
OWASP/pytm#373 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
Los mantenedores suelen responder en 3 días
Todos los issues de OWASP/pytm
Issues similares
-
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
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Huerte/algo-solutions-python#254 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 86/100
MichaelYcJo/SpecSeal#1543 ·
-
size/s
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
sipyourdrink-ltd/bernstein#7179 ·
Los mantenedores suelen responder en 1 día
-
good first issue help wanted python up-for-grabs
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
andrewsiah/agentswarm-data-tasks#309 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día