class_docstr: Assemble DOT source code.
class_docstr_tok: ["Assemble","DOT","source","code","."]
docstr: Yield the DOT source code line by line (as graph or subgraph).
  
  Yields: Line ending with a newline (``'\n'``).
docstr_tok: ["Yield","the","DOT","source","code","line","by","line","(","as","graph","or","subgraph",")",".","Yields",":","Line","ending","with","a","newline","(","``","'\\n","'","``",")","."]
code: def __iter__(self, subgraph: bool = False) -> typing.Iterator[str]:
      r"""Yield the DOT source code line by line (as graph or subgraph).
  
      Yields: Line ending with a newline (``'\n'``).
      """
      if self.comment:
          yield self._comment(self.comment)
  
      if subgraph:
          if self.strict:
              raise ValueError("subgraphs cannot be strict")
          head = self._subgraph if self.name else self._subgraph_plain
      else:
          head = self._head_strict if self.strict else self._head
      yield head(self._quote(self.name) + " " if self.name else "")
  
      for kw in ("graph", "node", "edge"):
          attrs = getattr(self, f"{kw}_attr")
          if attrs:
              yield self._attr(kw, self._attr_list(None, kwargs=attrs))
  
      yield from self.body
  
      yield self._tail
  
imports: import contextlib
  import typing
  from .None import _tools
  from .None import base
  from .None import quoting
label_desc: Use image node_id 9 for calling the Dot obj's underlying member method code with example usage: obj.__iter__(subgraph) without return types