From 985e5f840fcb1e2114c7a11db4c1e96b588f4e4b Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 13:28:36 +0100 Subject: [PATCH 1/7] Defined label_formatter parameter on Widgets --- parambokeh/__init__.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/parambokeh/__init__.py b/parambokeh/__init__.py index f3cda44..8ca8eb5 100644 --- a/parambokeh/__init__.py +++ b/parambokeh/__init__.py @@ -29,6 +29,23 @@ __version__ = '0.2.1-unknown' +class default_label_formatter(param.ParameterizedFunction): + "Default formatter to turn parameter names into appropriate widget labels." + + capitalize = param.Boolean(default=True, doc=""" + Whether or not the label should be capitalized.""") + + replace_underscores = param.Boolean(default=True, doc=""" + Whether of not underscores should be replaces with spaces.""") + + def __call__(self, label): + if self.replace_underscores: + label = label.replace('_',' ') + if self.capitalize: + label = label.capitalize() + return label + + class Widgets(param.ParameterizedFunction): callback = param.Callable(default=None, doc=""" @@ -93,6 +110,9 @@ class Widgets(param.ParameterizedFunction): width = param.Integer(default=300, bounds=(0, None), doc=""" Width of widgetbox the parameter widgets are displayed in.""") + label_formatter = param.Callable(default=default_label_formatter, doc=""" + Callable used to format the parameter names into widget labels.""" ) + # Timeout if a notebook comm message is swallowed timeout = 20000 @@ -265,7 +285,7 @@ def _make_widget(self, p_name): kw = dict(value=value) - kw['title'] = p_name + kw['title'] = self.p.label_formatter(p_name) if hasattr(p_obj, 'get_range') and not isinstance(kw['value'], dict): options = named_objs(p_obj.get_range().items()) From 881f393cc1cb9d97a7e7b0121757545f832976f4 Mon Sep 17 00:00:00 2001 From: "James A. Bednar" Date: Wed, 16 May 2018 07:40:50 -0500 Subject: [PATCH 2/7] Fixed typos --- parambokeh/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/parambokeh/__init__.py b/parambokeh/__init__.py index 8ca8eb5..7ecdb30 100644 --- a/parambokeh/__init__.py +++ b/parambokeh/__init__.py @@ -33,10 +33,10 @@ class default_label_formatter(param.ParameterizedFunction): "Default formatter to turn parameter names into appropriate widget labels." capitalize = param.Boolean(default=True, doc=""" - Whether or not the label should be capitalized.""") + Whether or not the label should be capitalized.""") replace_underscores = param.Boolean(default=True, doc=""" - Whether of not underscores should be replaces with spaces.""") + Whether or not underscores should be replaced with spaces.""") def __call__(self, label): if self.replace_underscores: From 8dc28162af79bb7114283d0bbadfd5f354650a47 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 13:45:13 +0100 Subject: [PATCH 3/7] Added support for None to disable label formatter --- parambokeh/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/parambokeh/__init__.py b/parambokeh/__init__.py index 7ecdb30..2ed0971 100644 --- a/parambokeh/__init__.py +++ b/parambokeh/__init__.py @@ -110,8 +110,8 @@ class Widgets(param.ParameterizedFunction): width = param.Integer(default=300, bounds=(0, None), doc=""" Width of widgetbox the parameter widgets are displayed in.""") - label_formatter = param.Callable(default=default_label_formatter, doc=""" - Callable used to format the parameter names into widget labels.""" ) + label_formatter = param.Callable(default=default_label_formatter, allow_None=True, + doc="Callable used to format the parameter names into widget labels.") # Timeout if a notebook comm message is swallowed timeout = 20000 @@ -285,7 +285,10 @@ def _make_widget(self, p_name): kw = dict(value=value) - kw['title'] = self.p.label_formatter(p_name) + if self.p.label_formatter is not None: + kw['title'] = self.p.label_formatter(p_name) + else: + kw['title'] = p_name if hasattr(p_obj, 'get_range') and not isinstance(kw['value'], dict): options = named_objs(p_obj.get_range().items()) From a008e86975e58fde34c97a9aca8514031b930059 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 13:51:46 +0100 Subject: [PATCH 4/7] Added overrides parameter for arbitrary label mapping --- parambokeh/__init__.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/parambokeh/__init__.py b/parambokeh/__init__.py index 2ed0971..671d5bf 100644 --- a/parambokeh/__init__.py +++ b/parambokeh/__init__.py @@ -38,12 +38,20 @@ class default_label_formatter(param.ParameterizedFunction): replace_underscores = param.Boolean(default=True, doc=""" Whether or not underscores should be replaced with spaces.""") - def __call__(self, label): + overrides = param.Dict(default={}, doc=""" + Allows custom labels to be specified for specific parameter + names using a dictionary where key is the parameter name and the + value is the desired label.""") + + def __call__(self, pname): + + if pname in self.overrides: + return self.overrides[pname] if self.replace_underscores: - label = label.replace('_',' ') + pname = pname.replace('_',' ') if self.capitalize: - label = label.capitalize() - return label + pname = pname.capitalize() + return pname class Widgets(param.ParameterizedFunction): From 2e1036588a5f226d5eb4cb4cdb3999eca8549ea6 Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 16:01:28 +0100 Subject: [PATCH 5/7] Fixed issue with using title as a key --- parambokeh/__init__.py | 2 ++ parambokeh/widgets.py | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/parambokeh/__init__.py b/parambokeh/__init__.py index 671d5bf..73a9296 100644 --- a/parambokeh/__init__.py +++ b/parambokeh/__init__.py @@ -298,6 +298,8 @@ def _make_widget(self, p_name): else: kw['title'] = p_name + kw['name'] = p_name + if hasattr(p_obj, 'get_range') and not isinstance(kw['value'], dict): options = named_objs(p_obj.get_range().items()) value = kw['value'] diff --git a/parambokeh/widgets.py b/parambokeh/widgets.py index 75d41e5..d493b15 100644 --- a/parambokeh/widgets.py +++ b/parambokeh/widgets.py @@ -94,10 +94,10 @@ def RangeWidget(*args, **kw): return RangeSlider(*args, **kw) def PlotWidget(*args, **kw): - return column(name=kw['title']) + return column(name=kw['name']) def HTMLWidget(*args, **kw): - return Div(name=kw['title']) + return Div(name=kw['name']) ptype2wtype = { From 8241d52c65df84e01665903f05470b8e21cb8f4c Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 16:12:43 +0100 Subject: [PATCH 6/7] Removed outdated use of __call__ for holoviews objects --- examples/user_guide/View_Parameters.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/user_guide/View_Parameters.ipynb b/examples/user_guide/View_Parameters.ipynb index 2b9e8e6..8c2463a 100644 --- a/examples/user_guide/View_Parameters.ipynb +++ b/examples/user_guide/View_Parameters.ipynb @@ -76,7 +76,7 @@ " \n", " def view(self, *args, **kwargs):\n", " return self.element(self.amplitude*np.sin(np.linspace(0, np.pi*self.frequency)),\n", - " vdims=[hv.Dimension('y', range=(-5, 5))])(style=dict(color=self.color))\n", + " vdims=[hv.Dimension('y', range=(-5, 5))]).opts(style=dict(color=self.color))\n", " \n", " def event(self, **kwargs):\n", " if not self.output or any(k in kwargs for k in ['color', 'element']):\n", From 5619157f9a0f2d439b84a3cec6e5549edf3c023f Mon Sep 17 00:00:00 2001 From: jlstevens Date: Wed, 16 May 2018 16:24:44 +0100 Subject: [PATCH 7/7] Attempt at fixing sphinx requirement of nbsite --- dodo.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dodo.py b/dodo.py index 3b7d027..128b961 100644 --- a/dodo.py +++ b/dodo.py @@ -21,8 +21,8 @@ def task_install_doc_dependencies(): # would not need to exist if nbsite had conda package return { 'actions': [ - 'conda install -y -q -c conda-forge notebook ipython sphinx beautifulsoup4 graphviz selenium phantomjs', - 'pip install nbsite sphinx_ioam_theme'], + 'conda install -y -q -c conda-forge notebook ipython sphinx=1.6 beautifulsoup4 graphviz selenium phantomjs', + 'pip install https://github.com/pyviz/nbsite/archive/master.zip sphinx_ioam_theme'], 'task_dep': ['install_test_dependencies'] }