docs: def write_dot(build_context, conf: Config, out_f):
      """Write build graph in dot format to `out_f` file-like object."""
      not_buildenv_targets = get_not_buildenv_targets(build_context)
      prebuilt_targets = get_prebuilt_targets(build_context)
      out_f.write('strict digraph  {\n')
      for node in build_context.target_graph.nodes:
          if conf.show_buildenv_deps or node in not_buildenv_targets:
              cached = node in prebuilt_targets
              fillcolor = 'fillcolor="grey",style=filled' if cached else ''
              color = TARGETS_COLORS.get(
                  build_context.targets[node].builder_name, 'black')
              out_f.write('  "{}" [color="{}",{}];\n'.format(node, color,
                                                             fillcolor))
      out_f.writelines('  "{}" -> "{}";\n'.format(u, v)
                       for u, v in build_context.target_graph.edges
                       if conf.show_buildenv_deps or
                       (u in not_buildenv_targets and v in not_buildenv_targets))
      out_f.write('}\n\n')