def svd(A: LinearOperator, k: int, which: str, alg: Auto):
    """ Auto:
        - if A is small, use dense SVD
        - if A is large, use Lanczos
    """
    match bool(np.prod(A.shape) <= 1e6):
        case True:
            alg = DenseSVD()
        case False:
            alg = Lanczos(**alg.__dict__)
    return svd(A, k, which, alg)
 Auto:
        - if A is small, use dense SVD
        - if A is large, use Lanczos
    
cola/linalg/svd/svd.py