docs: def evaluate_partition(self, direction, mechanism, purview, partition,
                             repertoire=None):
          """Return the |small_phi| of a mechanism over a purview for the given
          partition.
  
          Args:
              direction (Direction): |CAUSE| or |EFFECT|.
              mechanism (tuple[int]): The nodes in the mechanism.
              purview (tuple[int]): The nodes in the purview.
              partition (Bipartition): The partition to evaluate.
  
          Keyword Args:
              repertoire (np.array): The unpartitioned repertoire.
                  If not supplied, it will be computed.
  
          Returns:
              tuple[int, np.ndarray]: The distance between the unpartitioned and
              partitioned repertoires, and the partitioned repertoire.
          """
          if repertoire is None:
              repertoire = self.repertoire(direction, mechanism, purview)
  
          partitioned_repertoire = self.partitioned_repertoire(direction,
                                                               partition)
  
          phi = repertoire_distance(
              direction, repertoire, partitioned_repertoire)
  
          return (phi, partitioned_repertoire)