code: def test_empty_edge_cases(self):
      a = np.empty([0, 0])
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(0, 0), dtype=np.float64))
      assert_allclose(l, np.empty(shape=(0, 0), dtype=np.float64))
      assert_allclose(u, np.empty(shape=(0, 0), dtype=np.float64))
  
      a = np.empty([0, 3], dtype=np.float16)
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(0, 0), dtype=np.float32))
      assert_allclose(l, np.empty(shape=(0, 0), dtype=np.float32))
      assert_allclose(u, np.empty(shape=(0, 3), dtype=np.float32))
  
      a = np.empty([3, 0], dtype=np.complex64)
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(0, 0), dtype=np.float32))
      assert_allclose(l, np.empty(shape=(3, 0), dtype=np.complex64))
      assert_allclose(u, np.empty(shape=(0, 0), dtype=np.complex64))
      p, l, u = lu(a, p_indices=True)
      assert_allclose(p, np.empty(shape=(0,), dtype=int))
      assert_allclose(l, np.empty(shape=(3, 0), dtype=np.complex64))
      assert_allclose(u, np.empty(shape=(0, 0), dtype=np.complex64))
      pl, u = lu(a, permute_l=True)
      assert_allclose(pl, np.empty(shape=(3, 0), dtype=np.complex64))
      assert_allclose(u, np.empty(shape=(0, 0), dtype=np.complex64))
  
      a = np.empty([3, 0, 0], dtype=np.complex64)
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(3, 0, 0), dtype=np.float32))
      assert_allclose(l, np.empty(shape=(3, 0, 0), dtype=np.complex64))
      assert_allclose(u, np.empty(shape=(3, 0, 0), dtype=np.complex64))
  
      a = np.empty([0, 0, 3])
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(0, 0, 0)))
      assert_allclose(l, np.empty(shape=(0, 0, 0)))
      assert_allclose(u, np.empty(shape=(0, 0, 3)))
  
      with assert_raises(ValueError, match="at least two-dimensional"):
          lu(np.array([]))
  
      a = np.array([[]])
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(0, 0)))
      assert_allclose(l, np.empty(shape=(1, 0)))
      assert_allclose(u, np.empty(shape=(0, 0)))
  
      a = np.array([[[]]])
      p, l, u = lu(a)
      assert_allclose(p, np.empty(shape=(1, 0, 0)))
      assert_allclose(l, np.empty(shape=(1, 1, 0)))
      assert_allclose(u, np.empty(shape=(1, 0, 0)))
  
imports: import pytest
  from pytest import raises
  import numpy
  from scipy.linalg import lu, lu_factor, lu_solve, get_lapack_funcs, solve
  from numpy.testing import assert_allclose, assert_array_equal
label_desc: Use image node_id 6 for calling the TestLU obj's underlying member method code with example usage: obj.test_empty_edge_cases() without return types