code: def __new__(cls, base, exp, evaluate=False, **options):
      base = _sympify(base)
      if not base.is_Matrix:
          raise TypeError("MatPow base should be a matrix")
  
      if base.is_square is False:
          raise NonSquareMatrixError(
              "Power of non-square matrix %s" % base
          )
  
      exp = _sympify(exp)
      obj = super().__new__(cls, base, exp)
  
      if evaluate:
          obj = obj.doit(deep=False)
  
      return obj
  
imports: from .matexpr import MatrixExpr
  from .special import Identity
  from sympy.core import S
  from sympy.core.expr import ExprBuilder
  from sympy.core.cache import cacheit
  from sympy.core.power import Pow
  from sympy.core.sympify import _sympify
  from sympy.matrices import MatrixBase
  from sympy.matrices.exceptions import NonSquareMatrixError
label_desc: Use image node_id 1 for calling the MatPow obj's underlying member method code with example usage: obj.__new__(cls, base, exp, evaluate) and returns: obj