| digraph "Life Events" { | |
| graph [ | |
| fontnames="svg" | |
| fontsize=12.0 | |
| id="life_events_graph" | |
| layout="dot" | |
| margin="0,0" | |
| ranksep=0.25 | |
| stylesheet="lifecycle.dot.css" | |
| ] | |
| node [ | |
| fontname="Courier" | |
| fontsize=12.0 | |
| ] | |
| edge [ | |
| fontname="Times-Italic" | |
| fontsize=12.0 | |
| ] | |
| "start" [fontname="Times-Italic" shape=plain label=< start > style=invis] | |
| { | |
| rank="same" | |
| "tp_new" [href="typeobj.html#c.PyTypeObject.tp_new" target="_top"] | |
| "tp_alloc" [href="typeobj.html#c.PyTypeObject.tp_alloc" target="_top"] | |
| } | |
| "tp_init" [href="typeobj.html#c.PyTypeObject.tp_init" target="_top"] | |
| "reachable" [fontname="Times-Italic" shape=box] | |
| "tp_traverse" [ | |
| href="typeobj.html#c.PyTypeObject.tp_traverse" | |
| ordering="in" | |
| target="_top" | |
| ] | |
| "finalized?" [ | |
| fontname="Times-Italic" | |
| label=<marked as<br/>finalized?> | |
| ordering="in" | |
| shape=diamond | |
| tooltip="marked as finalized?" | |
| ] | |
| "tp_finalize" [ | |
| href="typeobj.html#c.PyTypeObject.tp_finalize" | |
| ordering="in" | |
| target="_top" | |
| ] | |
| "tp_clear" [href="typeobj.html#c.PyTypeObject.tp_clear" target="_top"] | |
| "uncollectable" [ | |
| fontname="Times-Italic" | |
| label=<uncollectable<br/>(leaked)> | |
| shape=box | |
| tooltip="uncollectable (leaked)" | |
| ] | |
| "tp_dealloc" [ | |
| href="typeobj.html#c.PyTypeObject.tp_dealloc" | |
| ordering="in" | |
| target="_top" | |
| ] | |
| "tp_free" [href="typeobj.html#c.PyTypeObject.tp_free" target="_top"] | |
| "start" -> "tp_new" [ | |
| label=< type call > | |
| ] | |
| "tp_new" -> "tp_alloc" [ | |
| label=< direct call > arrowhead=empty | |
| labeltooltip="tp_new to tp_alloc: direct call" | |
| tooltip="tp_new to tp_alloc: direct call" | |
| ] | |
| "tp_new" -> "tp_init" [tooltip="tp_new to tp_init"] | |
| "tp_init" -> "reachable" [tooltip="tp_init to reachable"] | |
| "reachable" -> "tp_traverse" [ | |
| dir="back" | |
| label=< not in a <br/> cyclic <br/> isolate > | |
| labeltooltip="tp_traverse to reachable: not in a cyclic isolate" | |
| tooltip="tp_traverse to reachable: not in a cyclic isolate" | |
| ] | |
| "reachable" -> "tp_traverse" [ | |
| label=< periodic <br/> cyclic isolate <br/> detection > | |
| labeltooltip="reachable to tp_traverse: periodic cyclic isolate detection" | |
| tooltip="reachable to tp_traverse: periodic cyclic isolate detection" | |
| ] | |
| "reachable" -> "tp_init" [tooltip="reachable to tp_init"] | |
| "reachable" -> "tp_finalize" [ | |
| dir="back" | |
| label=< resurrected <br/> (maybe remove <br/> finalized mark) > | |
| labeltooltip="tp_finalize to reachable: resurrected (maybe remove finalized mark)" | |
| tooltip="tp_finalize to reachable: resurrected (maybe remove finalized mark)" | |
| ] | |
| "tp_traverse" -> "finalized?" [ | |
| label=< cyclic <br/> isolate > | |
| labeltooltip="tp_traverse to finalized?: cyclic isolate" | |
| tooltip="tp_traverse to finalized?: cyclic isolate" | |
| ] | |
| "reachable" -> "finalized?" [ | |
| label=< no refs > | |
| labeltooltip="reachable to finalized?: no refs" | |
| tooltip="reachable to finalized?: no refs" | |
| ] | |
| "finalized?" -> "tp_finalize" [ | |
| label=< no (mark <br/> as finalized) > | |
| labeltooltip="finalized? to tp_finalize: no (mark as finalized)" | |
| tooltip="finalized? to tp_finalize: no (mark as finalized)" | |
| ] | |
| "finalized?" -> "tp_clear" [ | |
| label=< yes > | |
| labeltooltip="finalized? to tp_clear: yes" | |
| tooltip="finalized? to tp_clear: yes" | |
| ] | |
| "tp_finalize" -> "tp_clear" [ | |
| label=< no refs or <br/> cyclic isolate > | |
| labeltooltip="tp_finalize to tp_clear: no refs or cyclic isolate" | |
| tooltip="tp_finalize to tp_clear: no refs or cyclic isolate" | |
| ] | |
| "tp_finalize" -> "tp_dealloc" [ | |
| arrowtail=empty | |
| dir="back" | |
| href="lifecycle.html#c.PyObject_CallFinalizerFromDealloc" | |
| style=dashed | |
| label=< recommended<br/> call (see<br/> explanation)> | |
| labeltooltip="tp_dealloc to tp_finalize: recommended call (see explanation)" | |
| target="_top" | |
| tooltip="tp_dealloc to tp_finalize: recommended call (see explanation)" | |
| ] | |
| "tp_finalize" -> "tp_dealloc" [ | |
| label=< no refs > | |
| labeltooltip="tp_finalize to tp_dealloc: no refs" | |
| tooltip="tp_finalize to tp_dealloc: no refs" | |
| ] | |
| "tp_clear" -> "tp_dealloc" [ | |
| label=< no refs > | |
| labeltooltip="tp_clear to tp_dealloc: no refs" | |
| tooltip="tp_clear to tp_dealloc: no refs" | |
| ] | |
| "tp_clear" -> "uncollectable" [ | |
| label=< cyclic <br/> isolate > | |
| labeltooltip="tp_clear to uncollectable: cyclic isolate" | |
| tooltip="tp_clear to uncollectable: cyclic isolate" | |
| ] | |
| "uncollectable" -> "tp_dealloc" [ | |
| style=invis | |
| tooltip="uncollectable to tp_dealloc" | |
| ] | |
| "reachable" -> "uncollectable" [ | |
| label=< cyclic <br/> isolate <br/> (no GC <br/> support) > | |
| labeltooltip="reachable to uncollectable: cyclic isolate (no GC support)" | |
| tooltip="reachable to uncollectable: cyclic isolate (no GC support)" | |
| ] | |
| "reachable" -> "tp_dealloc" [ | |
| label=< no refs> | |
| labeltooltip="reachable to tp_dealloc: no refs" | |
| ] | |
| "tp_dealloc" -> "tp_free" [ | |
| arrowhead=empty | |
| label=< direct call > | |
| labeltooltip="tp_dealloc to tp_free: direct call" | |
| tooltip="tp_dealloc to tp_free: direct call" | |
| ] | |
| } |