code: def test_outer(
      self, func, nin, nout, identity, lhs_shape, rhs_shape, dtype
  ):
      if (nin, nout) != (2, 1):
          self.skipTest(
              f"outer requires (nin, nout)=(2, 1); got {(nin, nout)=}"
          )
      jnp_fun = jnp.frompyfunc(
          func, nin=nin, nout=nout, identity=identity
      ).outer
      np_fun = cast_outputs(
          np.frompyfunc(
              func, nin=nin, nout=nout, identity=identity
          ).outer
      )
  
      rng = jtu.rand_default(self.rng())
      args_maker = lambda: [
          rng(lhs_shape, dtype),
          rng(rhs_shape, dtype),
      ]
  
      self._CheckAgainstNumpy(jnp_fun, np_fun, args_maker)
      self._CompileAndCheck(jnp_fun, args_maker)
  
imports: from functools import partial
  from absl.testing import absltest
  import numpy
  import jax
  import jax.numpy
  from jax._src import test_util
  from jax._src.numpy.ufunc_api import get_if_single_primitive
  from jax import config
label_desc: Use image node_id 5 for calling the LaxNumpyUfuncTests obj's underlying member method code with example usage: obj.test_outer(func, nin, nout, identity, lhs_shape, rhs_shape, dtype) without return types