code: def test_svd_simple(self, A, k, real, transpose, lo_type):
      if self.solver == "propack":
          if not has_propack:
              pytest.skip("PROPACK not available")
  
      A = np.asarray(A)
      A = np.real(A) if real else A
      A = A.T if transpose else A
      A2 = lo_type(A)
  
      # could check for the appropriate errors, but that is tested above
      if k > min(A.shape):
          pytest.skip("`k` cannot be greater than `min(A.shape)`")
      if self.solver != "propack" and k >= min(A.shape):
          pytest.skip("Only PROPACK supports complete SVD")
      if self.solver == "arpack" and not real and k == min(A.shape) - 1:
          pytest.skip("#16725")
  
      if self.solver == "propack" and (
          np.intp(0).itemsize < 8 and not real
      ):
          pytest.skip(
              "PROPACK complex-valued SVD methods not available "
              "for 32-bit builds"
          )
  
      if self.solver == "lobpcg":
          with pytest.warns(UserWarning, match="The problem size"):
              u, s, vh = svds(A2, k, solver=self.solver)
      else:
          u, s, vh = svds(A2, k, solver=self.solver)
      _check_svds(A, k, u, s, vh, atol=3e-10)
  
imports: import os
  import re
  import copy
  import numpy
  from numpy.testing import assert_allclose, assert_equal, assert_array_equal
  import pytest
  from scipy.linalg import svd, null_space
  from scipy.sparse import csc_matrix, issparse, spdiags, random
  from scipy.sparse.linalg import LinearOperator, aslinearoperator
  from scipy.sparse.linalg import svds
  from scipy.sparse.linalg._eigen.arpack import ArpackNoConvergence
label_desc: Use image node_id 21 for calling the SVDSCommonTests obj's underlying member method code with example usage: obj.test_svd_simple(A, k, real, transpose, lo_type) without return types