From b107092fac64339db7cdaa73a94f49bd1733a324 Mon Sep 17 00:00:00 2001 From: maximlt Date: Thu, 29 Jun 2023 01:08:59 +0200 Subject: [PATCH] remove _internal_name Parameter slot --- param/__init__.py | 2 +- param/parameterized.py | 23 ++++++++++------------- tests/testaddparameter.py | 2 -- tests/testdynamicparams.py | 2 +- 4 files changed, 12 insertions(+), 17 deletions(-) diff --git a/param/__init__.py b/param/__init__.py index 6bdaf6199..65b88f9d3 100644 --- a/param/__init__.py +++ b/param/__init__.py @@ -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 diff --git a/param/parameterized.py b/param/parameterized.py index 3e6554a3e..e95d8cbbf 100644 --- a/param/parameterized.py +++ b/param/parameterized.py @@ -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'] @@ -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) @@ -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 @@ -1396,10 +1395,10 @@ 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: @@ -1407,8 +1406,8 @@ def __set__(self, obj, val): _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) @@ -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): """ @@ -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: @@ -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 diff --git a/tests/testaddparameter.py b/tests/testaddparameter.py index d9e93ac2a..4b0a0deef 100644 --- a/tests/testaddparameter.py +++ b/tests/testaddparameter.py @@ -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(): @@ -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(): diff --git a/tests/testdynamicparams.py b/tests/testdynamicparams.py index 5644f1835..a25e9ce4a 100644 --- a/tests/testdynamicparams.py +++ b/tests/testdynamicparams.py @@ -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): """