diff --git a/skglm/__init__.py b/skglm/__init__.py index c134c98f2..d80de3c17 100644 --- a/skglm/__init__.py +++ b/skglm/__init__.py @@ -1,4 +1,4 @@ -__version__ = '0.3.2dev' +__version__ = '0.4dev' from skglm.estimators import ( # noqa F401 Lasso, WeightedLasso, ElasticNet, MCPRegression, MultiTaskLasso, LinearSVC, diff --git a/skglm/solvers/anderson_cd.py b/skglm/solvers/anderson_cd.py index 44cc3b35c..67b244621 100644 --- a/skglm/solvers/anderson_cd.py +++ b/skglm/solvers/anderson_cd.py @@ -285,7 +285,7 @@ def custom_compatibility_check(self, X, y, datafit, penalty): if self.ws_strategy == "subdiff" and not hasattr(penalty, "subdiff_distance"): raise AttributeError( "Penalty must implement `subdiff_distance` " - "to use self.ws_strategy='subdiff'." + "to use ws_strategy='subdiff' in solver AndersonCD." ) diff --git a/skglm/solvers/fista.py b/skglm/solvers/fista.py index 33e2be46e..e4956f574 100644 --- a/skglm/solvers/fista.py +++ b/skglm/solvers/fista.py @@ -121,5 +121,5 @@ def custom_compatibility_check(self, X, y, datafit, penalty): if self.opt_strategy == "subdiff" and not hasattr(penalty, "subdiff_distance"): raise AttributeError( "Penalty must implement `subdiff_distance` " - "to use self.opt_strategy='subdiff'." + "to use `opt_strategy='subdiff'` in Fista solver." ) diff --git a/skglm/solvers/gram_cd.py b/skglm/solvers/gram_cd.py index e3e3e69b0..242dbff60 100644 --- a/skglm/solvers/gram_cd.py +++ b/skglm/solvers/gram_cd.py @@ -137,10 +137,10 @@ def solve(self, X, y, datafit, penalty, w_init=None, Xw_init=None): p_objs_out.append(p_obj) return w, np.array(p_objs_out), stop_crit - def custom_compatibility_check(self, X, y, datafit): + def custom_compatibility_check(self, X, y, datafit, penalty): if not isinstance(datafit, Quadratic): raise AttributeError( - f"`GramCD` supports only `Quadratic` datafit, got {datafit}" + f"`GramCD` supports only `Quadratic` datafit, got {datafit}." ) diff --git a/skglm/utils/validation.py b/skglm/utils/validation.py index 117fcedb4..f04913356 100644 --- a/skglm/utils/validation.py +++ b/skglm/utils/validation.py @@ -77,12 +77,12 @@ def check_obj_solver_attr(obj, solver, required_attr, support_sparse=False): solver_name = name_matcher.search(str(solver.__class__)).group(1) if not support_sparse: - err_message = f"{obj_name} is not compatible with {solver_name}." + err_message = f"{obj_name} is not compatible with solver {solver_name}." else: - err_message = (f"{obj_name} is not compatible with {solver_name}" + err_message = (f"{obj_name} is not compatible with solver {solver_name} " "with sparse data.") - err_message += (f" It must implement {' and '.join(required_attr)}\n" + err_message += (f" It must implement {' and '.join(required_attr)}.\n" f"Missing {' and '.join(missing_attrs)}.") raise AttributeError(err_message)