From 2858ae6063293d3ed3316096ec00688cd24dd3c7 Mon Sep 17 00:00:00 2001 From: Philipp Rudiger Date: Sun, 2 Mar 2025 13:34:42 +0100 Subject: [PATCH] Do not sync parameters mapped to None --- panel/custom.py | 15 +++++++++------ panel/io/datamodel.py | 2 +- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/panel/custom.py b/panel/custom.py index 8c09c170a6..9011e9a843 100644 --- a/panel/custom.py +++ b/panel/custom.py @@ -170,7 +170,10 @@ def __init__(mcs, name: str, bases: tuple[type, ...], dict_: Mapping[str, Any]): # Create model with unique name ReactiveMetaBase._name_counter[name] += 1 model_name = f'{name}{ReactiveMetaBase._name_counter[name]}' - ignored = [p for p in Reactive.param if not issubclass(type(mcs.param[p].owner), ReactiveESMMetaclass)] + ignored = [ + p for p in Reactive.param + if not issubclass(type(mcs.param[p].owner), ReactiveESMMetaclass) + ] mcs._data_model = construct_data_model( mcs, name=model_name, ignore=ignored, extras={'esm_constants': param.Dict} ) @@ -426,10 +429,10 @@ def _get_properties(self, doc: Document | None) -> dict[str, Any]: ] for k, v in self.param.values().items(): p = self.param[k] - is_viewable = is_viewable_param(p) - if (k in ignored and k != 'name') or ((p.precedence or 0) < 0) or is_viewable: - if is_viewable and k in props: - props.pop(k) + if is_viewable_param(p) or type(self)._property_mapping.get(k, "") is None: + props.pop(k, None) + continue + elif (k in ignored and k != 'name') or ((p.precedence or 0) < 0): continue if k in props: props.pop(k) @@ -486,7 +489,7 @@ def _get_children(self, data_model, doc, root, parent, comm) -> dict[str, list[U children = {} for k, v in self.param.values().items(): p = self.param[k] - if not is_viewable_param(p): + if not is_viewable_param(p) or type(self)._property_mapping.get(k, "") is None: continue children[k] = self._get_child_model(v, doc, root, parent, comm) return children diff --git a/panel/io/datamodel.py b/panel/io/datamodel.py index 0246d270be..91c0c517d3 100644 --- a/panel/io/datamodel.py +++ b/panel/io/datamodel.py @@ -183,7 +183,7 @@ def construct_data_model(parameterized, name=None, ignore=[], types={}, extras={ ptype = types.get(pname, type(p)) prop = PARAM_MAPPING.get(ptype) if isinstance(parameterized, Syncable): - pname = parameterized._rename.get(pname, pname) + pname = parameterized._property_mapping.get(pname, pname) if pname == 'name' or pname is None: continue nullable = getattr(p, 'allow_None', False)