docs: def travel_to(self, dest, weight=None, graph=None):
          """Find the shortest path to the given :class:`Place` from where I am
          now, and follow it.
  
          If supplied, the ``weight`` stat of the :class:`Portal`s along
          the path will be used in pathfinding, and for deciding how
          long to stay in each Place along the way.
  
          The ``graph`` argument may be any NetworkX-style graph. It
          will be used for pathfinding if supplied, otherwise I'll use
          my :class:`Character`. In either case, however, I will attempt
          to actually follow the path using my :class:`Character`, which
          might not be possible if the supplied ``graph`` and my
          :class:`Character` are too different. If it's not possible,
          I'll raise a :class:`TravelException`, whose ``subpath``
          attribute holds the part of the path that I *can* follow. To
          make me follow it, pass it to my ``follow_path`` method.
  
          Return value is the number of turns the travel will take.
  
          """
          destn = dest.name if hasattr(dest, 'name') else dest
          if destn == self.location.name:
              raise ValueError("I'm already at {}".format(destn))
          graph = self.character if graph is None else graph
          path = nx.shortest_path(graph, self["location"], destn, weight)
          return self.follow_path(path, weight)