docs: def irreducible_purviews(cm, direction, mechanism, purviews):
      """Return all purviews which are irreducible for the mechanism.
  
      Args:
          cm (np.ndarray): An |N x N| connectivity matrix.
          direction (Direction): |CAUSE| or |EFFECT|.
          purviews (list[tuple[int]]): The purviews to check.
          mechanism (tuple[int]): The mechanism in question.
  
      Returns:
          list[tuple[int]]: All purviews in ``purviews`` which are not reducible
          over ``mechanism``.
  
      Raises:
          ValueError: If ``direction`` is invalid.
      """
      def reducible(purview):
          """Return ``True`` if purview is trivially reducible."""
          _from, to = direction.order(mechanism, purview)
          return connectivity.block_reducible(cm, _from, to)
  
      return [purview for purview in purviews if not reducible(purview)]