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"
   ]
}
