class_docstr: Check the construction of MaskInfo from Mask.
class_docstr_tok: ["Check","the","construction","of","MaskInfo","from","Mask","."]
docstr: Masks with of an all-0 row causes undefined softmax, reject them.
docstr_tok: ["Masks","with","of","an","all-0","row","causes","undefined","softmax",",","reject","them","."]
code: def test_process_invalid_mask(self):
      """Masks with of an all-0 row causes undefined softmax, reject them."""
      sequence_length = 32
  
      invalid_mask = np.ones(
          (4, sequence_length, sequence_length), dtype=np.bool_
      )
      invalid_mask[2, 14, :] = False
  
      invalid_mask = mask_lib.MultiHeadMask(
          [mask_lib.NumpyMask(head_mask) for head_mask in invalid_mask]
      )
  
      with self.assertRaises(ValueError) as ctx:
          for mask in invalid_mask.masks:
              mask_info_lib._check_mask(mask)
  
      self.assertIn("softmax", str(ctx.exception))
  
imports: from __future__ import annotations
  from typing import List
  from absl.testing import absltest
  from absl.testing import parameterized
  import jax
  from jax.experimental.pallas.ops.tpu.splash_attention import splash_attention_mask
  from jax.experimental.pallas.ops.tpu.splash_attention import splash_attention_mask_info
  from jax._src import test_util
  import numpy
label_desc: Use image node_id 22 for calling the SplashAttentionMaskInfoTest obj's underlying member method code with example usage: obj.test_process_invalid_mask() without return types