code: def test_non_square_matrix(self):
      A = matrix("A", dtype=config.floatX)
      Q = matrix_power(A, 3)
      f = function([A], [Q])
      a = np.array(
          [
              [0.47497769, 0.81869379],
              [0.74387558, 0.31780172],
              [0.54381007, 0.28153101],
          ]
      ).astype(config.floatX)
      with pytest.raises(ValueError):
          f(a)
  
imports: import numpy
  import numpy.linalg
  import pytest
  from numpy import inf
  from numpy.testing import assert_array_almost_equal
  import pytensor
  from pytensor import function
  from pytensor.configdefaults import config
  from pytensor.tensor.math import _allclose
  from pytensor.tensor.nlinalg import SVD, Eig, MatrixInverse, TensorInv, det, eig, eigh, lstsq, matrix_dot, matrix_inverse, matrix_power, norm, pinv, qr, slogdet, svd, tensorinv, tensorsolve, trace
  from pytensor.tensor.type import lmatrix, lscalar, matrix, scalar, tensor3, tensor4, vector
  from tests import unittest_tools
label_desc: Use image node_id 2 for calling the TestMatrixPower obj's underlying member method code with example usage: obj.test_non_square_matrix() without return types