Skip to content

Commit e25899f

Browse files
committed
Disambiguate attr_name and json_key in PredictionAlgorithmSettings.__setattr__
1 parent a2838f7 commit e25899f

File tree

1 file changed

+10
-7
lines changed

1 file changed

+10
-7
lines changed

dataikuapi/dss/ml.py

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -949,10 +949,12 @@ def __setattr__(self, attr_name, value):
949949
else:
950950
if attr_name in self._attr_to_json_remapping:
951951
# attribute name and json key mismatch (e.g. "lambda", "alphaMode")
952-
attr_name = self._attr_to_json_remapping[attr_name]
953-
if attr_name in self._hyperparameters_registry:
952+
json_key = self._attr_to_json_remapping[attr_name]
953+
else:
954+
json_key = attr_name
955+
if json_key in self._hyperparameters_registry:
954956
# syntactic sugars
955-
target = self._hyperparameters_registry[attr_name]
957+
target = self._hyperparameters_registry[json_key]
956958
if isinstance(target, (SingleValueHyperparameterSettings, SingleCategoryHyperparameterSettings)):
957959
target.set_value(value)
958960
elif isinstance(target, CategoricalHyperparameterSettings):
@@ -962,9 +964,9 @@ def __setattr__(self, attr_name, value):
962964
else:
963965
# simple parameter
964966
assert isinstance(value, type(target)), "Invalid type {} for parameter {}: expected {}".format(type(value), attr_name, type(target))
965-
super(PredictionAlgorithmSettings, self).__setattr__(attr_name, value)
966-
self[attr_name] = value
967-
self._hyperparameters_registry[attr_name] = value
967+
super(PredictionAlgorithmSettings, self).__setattr__(attr_name, value) # update attribute value
968+
self[json_key] = value # update underlying dict value for key json_key
969+
self._hyperparameters_registry[json_key] = value
968970
else:
969971
# other cases (properties setter, new attribute...)
970972
super(PredictionAlgorithmSettings, self).__setattr__(attr_name, value)
@@ -993,7 +995,8 @@ def _register_single_value_hyperparameter(self, json_key, accepted_types=None, a
993995
self._hyperparameters_registry[json_key] = SingleValueHyperparameterSettings(json_key, self, accepted_types=accepted_types)
994996
return self._hyperparameters_registry[json_key]
995997

996-
def _register_simple_parameter(self, json_key):
998+
def _register_simple_parameter(self, json_key, attr_name=None):
999+
self._maybe_register_attr_json_mismatch(json_key, attr_name)
9971000
self._hyperparameters_registry[json_key] = self[json_key]
9981001
return self._hyperparameters_registry[json_key]
9991002

0 commit comments

Comments
 (0)