docs: def remove_edge(self, u, v, key=None):
          """Version of remove_edge that's much like normal networkx but only
          deletes once, since the database doesn't keep separate adj and
          succ mappings
  
          """
          try:
              d = self.adj[u][v]
          except KeyError:
              raise NetworkXError(
                  "The edge {}-{} is not in the graph.".format(u, v)
              )
          if key is None:
              d.popitem()
          else:
              try:
                  del d[key]
              except KeyError:
                  raise NetworkXError(
                      "The edge {}-{} with key {} is not in the graph.".format
                      (u, v, key)
                  )
          if len(d) == 0:
              del self.succ[u][v]