docs: def graph_from_file(filename, bidirectional=False, simplify=True,
                      retain_all=False, name='unnamed'):
      """
      Create a networkx graph from OSM data in an XML file.
  
      Parameters
      ----------
      filename : string
          the name of a file containing OSM XML data
      bidirectional : bool
          if True, create bidirectional edges for one-way streets
      simplify : bool
          if True, simplify the graph topology
      retain_all : bool
          if True, return the entire graph even if it is not connected
      name : string
          the name of the graph
  
      Returns
      -------
      networkx multidigraph
      """
      # transmogrify file of OSM XML data into JSON
      response_jsons = [overpass_json_from_file(filename)]
  
      # create graph using this response JSON
      G = create_graph(response_jsons, bidirectional=bidirectional,
                       retain_all=retain_all, name=name)
  
      # simplify the graph topology as the last step.
      if simplify:
          G = simplify_graph(G)
  
      log('graph_from_file() returning graph with {:,} nodes and {:,} edges'.format(len(list(G.nodes())), len(list(G.edges()))))
      return G