docs: def memoized_concentric_hexagons(radius):
      """A memoized wrapper around :py:func:`rig.geometry.concentric_hexagons`
      which memoizes the coordinates and stores them as a tuple. Note that the
      caller must manually offset the coordinates as required.
  
      This wrapper is used to avoid the need to repeatedly call
      :py:func:`rig.geometry.concentric_hexagons` for every sink in a network.
      This results in a relatively minor speedup (but at equally minor cost) in
      large networks.
      """
      out = _concentric_hexagons.get(radius)
      if out is None:
          out = tuple(concentric_hexagons(radius))
          _concentric_hexagons[radius] = out
      return out