Skip to content

Commit

Permalink
remove _internal_name Parameter slot
Browse files Browse the repository at this point in the history
  • Loading branch information
maximlt committed Jun 28, 2023
1 parent d5dee3b commit b107092
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 17 deletions.
2 changes: 1 addition & 1 deletion param/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2970,7 +2970,7 @@ def _reset_event(self, obj, val):
if obj is None:
self.default = val
else:
obj._param__private.values[self._internal_name] = val
obj._param__private.values[self.name] = val
self._post_setter(obj, val)

@instance_descriptor
Expand Down
23 changes: 10 additions & 13 deletions param/parameterized.py
Original file line number Diff line number Diff line change
Expand Up @@ -1093,7 +1093,7 @@ class Foo(Bar):
# attributes. Using __slots__ requires special support for
# operations to copy and restore Parameters (e.g. for Python
# persistent storage pickling); see __getstate__ and __setstate__.
__slots__ = ['name', '_internal_name', 'default', 'doc',
__slots__ = ['name', 'default', 'doc',
'precedence', 'instantiate', 'constant', 'readonly',
'pickle_default_value', 'allow_None', 'per_instance',
'watchers', 'owner', '_label']
Expand Down Expand Up @@ -1207,7 +1207,6 @@ class hierarchy (see ParameterizedMetaclass).
self.constant = constant is True or readonly is True # readonly => constant
self.readonly = readonly
self._label = label
self._internal_name = None
self._set_instantiate(instantiate)
self.pickle_default_value = pickle_default_value
self._set_allow_None(allow_None)
Expand Down Expand Up @@ -1344,7 +1343,7 @@ def __get__(self, obj, objtype): # pylint: disable-msg=W0613
if obj is None: # e.g. when __get__ called for a Parameterized class
result = self.default
else:
result = obj._param__private.values.get(self._internal_name, self.default)
result = obj._param__private.values.get(self.name, self.default)
return result

@instance_descriptor
Expand Down Expand Up @@ -1396,19 +1395,19 @@ def __set__(self, obj, val):
_old = self.default
self.default = val
elif not obj._param__private.initialized:
_old = obj._param__private.values.get(self._internal_name, self.default)
obj._param__private.values[self._internal_name] = val
_old = obj._param__private.values.get(self.name, self.default)
obj._param__private.values[self.name] = val
else:
_old = obj._param__private.values.get(self._internal_name, self.default)
_old = obj._param__private.values.get(self.name, self.default)
if val is not _old:
raise TypeError("Constant parameter '%s' cannot be modified"%self.name)
else:
if obj is None:
_old = self.default
self.default = val
else:
_old = obj._param__private.values.get(self._internal_name, self.default)
obj._param__private.values[self._internal_name] = val
_old = obj._param__private.values.get(self.name, self.default)
obj._param__private.values[self.name] = val

self._post_setter(obj, val)

Expand Down Expand Up @@ -1463,7 +1462,6 @@ def _set_names(self, attrib_name):
'instance for each new class.'.format(type(self).__name__, self.name,
self.owner.name, attrib_name))
self.name = attrib_name
self._internal_name = "_%s_param_value" % attrib_name

def __getstate__(self):
"""
Expand Down Expand Up @@ -1845,7 +1843,7 @@ def _instantiate_param(self_, param_obj, dict_=None, key=None):
# under the parameter's _internal_name (or key if supplied)
self = self_.self
dict_ = dict_ or self._param__private.values
key = key or param_obj._internal_name
key = key or param_obj.name
if shared_parameters._share:
param_key = (str(type(self)), param_obj.name)
if param_key in shared_parameters._shared_cache:
Expand Down Expand Up @@ -2420,11 +2418,10 @@ def get_value_generator(self_,name): # pylint: disable-msg=E0213

# Dynamic Parameter...
else:
internal_name = "_%s_param_value" % name
# TODO: is this always an instance?
if isinstance(cls_or_slf, Parameterized) and internal_name in cls_or_slf._param__private.values:
if isinstance(cls_or_slf, Parameterized) and name in cls_or_slf._param__private.values:
# dealing with object and it's been set on this object
value = cls_or_slf._param__private.values[internal_name]
value = cls_or_slf._param__private.values[name]
else:
# dealing with class or isn't set on the object
value = param_obj.default
Expand Down
2 changes: 0 additions & 2 deletions tests/testaddparameter.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ class P(param.Parameterized):
assert 'y' in P.param
# Check the name is set
assert P.param.y.name == 'y'
assert P.param.y._internal_name == '_y_param_value'


def test_add_parameter_instance():
Expand All @@ -53,7 +52,6 @@ class P(param.Parameterized):

assert 'y' in p.param
assert p.param.y.name == 'y'
assert p.param.y._internal_name == '_y_param_value'


def test_add_parameter_class_validation():
Expand Down
2 changes: 1 addition & 1 deletion tests/testdynamicparams.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def test_dynamic_value_setting(self):
def test_setting_y_param_numbergen(self):
self.TestPO2.y=numbergen.UniformRandom() # now the Parameter instantiate should be true
t9 = self.TestPO2()
self.assertEqual('_y_param_value' in t9._param__private.values, True)
self.assertEqual('y' in t9._param__private.values, True)

def test_shared_numbergen(self):
"""
Expand Down

0 comments on commit b107092

Please sign in to comment.