Skip to content

Commit 429c0ca

Browse files
committed
Improve implementation of syntactic sugars
1 parent 8464243 commit 429c0ca

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

dataikuapi/dss/ml.py

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -924,24 +924,23 @@ def __init__(self, raw_settings, hyperparameter_search_params):
924924
self._hyperparameters_registry = dict()
925925

926926
def __setattr__(self, key, value):
927-
if key in {"_hyperparameters_registry", "_hyperparameter_search_params"} or key in {"enabled", "strategy"}:
928-
# attributes and properties of the PredictionAlgorithmSettings object must be handled separately
927+
if not hasattr(self, key):
928+
# call from __init__
929929
super(PredictionAlgorithmSettings, self).__setattr__(key, value)
930-
elif key in self._hyperparameters_registry or (key=="lambda_" and "lambda" in self._hyperparameters_registry):
931-
if isinstance(value, HyperparameterSettings):
932-
# call from a PredictionAlgorithmSettings child's __init__
933-
super(PredictionAlgorithmSettings, self).__setattr__(key, value)
930+
elif key in self._hyperparameters_registry:
931+
# syntactic sugars
932+
target = self._hyperparameters_registry[key]
933+
if isinstance(target, (SingleValueHyperparameterSettings, SingleCategoryHyperparameterSettings)):
934+
target.set_value(value)
935+
elif isinstance(target, CategoricalHyperparameterSettings):
936+
target.set_values(value)
934937
else:
935-
# syntactic sugars
936-
target = self._hyperparameters_registry[key]
937-
if isinstance(target, (SingleValueHyperparameterSettings, SingleCategoryHyperparameterSettings)):
938-
target.set_value(value)
939-
elif isinstance(target, CategoricalHyperparameterSettings):
940-
target.set_values(value)
941-
else:
942-
raise Exception("Invalid type for assignment of a NumericalHyperparameterSettings object")
938+
raise Exception("Invalid assignment of a NumericalHyperparameterSettings object")
939+
elif key == "lambda_":
940+
raise Exception("Invalid assignment of a NumericalHyperparameterSettings object")
943941
else:
944-
raise Exception("Unknown hyperparameter: \"{}\"".format(key))
942+
# other cases (properties setter, new attribute...)
943+
super(PredictionAlgorithmSettings, self).__setattr__(key, value)
945944

946945
def _register_numerical_hyperparameter(self, name):
947946
self._hyperparameters_registry[name] = NumericalHyperparameterSettings(name, self)

0 commit comments

Comments
 (0)