def test_set_show_name(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10)) pane = Param(Test()) model = pane.get_root(document, comm=comm) assert len(model.children) == 2 title, widget = model.children assert isinstance(title, Div) assert isinstance(widget, Slider) pane.show_name = False assert len(model.children) == 1 assert isinstance(model.children[0], Slider)
def test_param_js_callbacks(document, comm): class JsButton(param.Parameterized): param_btn = param.Action(lambda self: print('Action Python Response'), label='Action') param_button = Param(JsButton()) code = "console.log('Action button clicked')" param_button[1].js_on_click(code=code) model = param_button.get_root(document, comm=comm) button = model.children[1] assert len(button.js_event_callbacks) == 1 callbacks = button.js_event_callbacks assert 'button_click' in callbacks assert len(callbacks['button_click']) == 1 assert code in callbacks['button_click'][0].code
def test_set_show_labels(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10)) pane = Param(Test()) model = pane._get_root(document, comm=comm) assert len(model.children) == 2 title, widget = model.children assert isinstance(title, Div) assert isinstance(widget, Slider) assert widget.title == 'A' pane.show_labels = False assert len(model.children) == 2 assert isinstance(model.children[1], Slider) assert model.children[1].title == ''
def test_numberinput_bounds(): class Test(param.Parameterized): num = param.Number(default=5, bounds=(0, 5)) test = Test() p = Param(test, widgets={'num': NumberInput}) numinput = p.layout[1] assert numinput.start == 0 assert numinput.end == 5
def test_sorted(): class MyClass(param.Parameterized): valueb = param.Integer(label="zzz") valuez = param.String(label="aaa") valuea = param.Integer(label="bbb") my_class = MyClass() _, input1, input2, input3 = Param(my_class, sort=True) assert input1.name=="aaa" assert input2.name=="bbb" assert input3.name=="zzz"
def test_set_display_threshold(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10), precedence=1) b = param.String(default='A', precedence=2) pane = Param(Test()) model = pane.get_root(document, comm=comm) assert len(model.children) == 3 title, slider, text = model.children assert isinstance(title, Div) assert isinstance(slider, Slider) assert isinstance(text, TextInput) pane.display_threshold = 1.5 assert len(model.children) == 2 title, text = model.children assert isinstance(title, Div) assert isinstance(text, TextInput)
def test_set_parameters(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10)) b = param.String(default='A') pane = Param(Test()) model = pane.get_root(document, comm=comm) assert len(model.children) == 3 title, slider, text = model.children assert isinstance(title, Div) assert isinstance(slider, Slider) assert isinstance(text, TextInput) pane.parameters = ['b'] assert len(model.children) == 2 title, text = model.children assert isinstance(title, Div) assert isinstance(text, TextInput)
def test_replace_param_object(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10)) pane = Param() model = pane.get_root(document, comm=comm) assert model.children == [] pane.object = Test() assert len(model.children) == 2 title, widget = model.children assert isinstance(title, Div) assert title.text == '<b>Test</b>' assert isinstance(widget, Slider) assert widget.start == 0 assert widget.end == 10
def test_trigger_parameters(document, comm): class Test(param.Parameterized): a = param.ListSelector(objects=[1, 2, 3, 4], default=list()) t = Test() t.a.append(4) pane = Param(t.param.a) t.a.append(1) t.param.trigger('a') assert pane[0].value == [4, 1]
def test_sorted_func(): class MyClass(param.Parameterized): valueb = param.Integer(label="bac") valuez = param.String(label="acb") valuea = param.Integer(label="cba") my_class = MyClass() def sort_func(x): return x[1].label[::-1] _, input1, input2, input3 = Param(my_class, sort=sort_func) assert input1.name=="cba" assert input2.name=="acb" assert input3.name=="bac"
def test_set_widgets(document, comm): class Test(param.Parameterized): a = param.Number(default=1, bounds=(0, 10), precedence=1) b = param.String(default='A', precedence=2) pane = Param(Test()) model = pane.get_root(document, comm=comm) assert len(model.children) == 3 title, slider, text = model.children assert isinstance(title, Div) assert isinstance(slider, Slider) assert isinstance(text, TextInput) pane.widgets = {'a': LiteralInput(value=1, type=(float, int))} assert len(model.children) == 3 title, number, text = model.children assert isinstance(title, Div) assert isinstance(number, TextInput) assert isinstance(text, TextInput)
def test_set_widgets_throttled(document, comm): class Test(param.Parameterized): a = param.Number(default=0, bounds=(0, 10), precedence=1) test = Test() pane = Param(test) model = pane.get_root(document, comm=comm) pane.widgets = {"a": {"throttled": False}} assert len(model.children) == 2 _, number = model.children number.value = 1 assert number.value == 1 assert number.value_throttled != 1 assert test.a == 1 test.a = 2 assert number.value == 2 assert number.value_throttled != 2 assert test.a == 2 # By setting throttled to true, # `test.a` is linked to `number.value_throttled` # instead of `number.value`. pane.widgets = {"a": {"throttled": True}} assert len(model.children) == 2 _, number = model.children number.value_throttled = 3 assert number.value != 3 assert number.value_throttled == 3 assert test.a == 3 test.a = 4 assert number.value != 4 assert number.value_throttled == 4 assert test.a == 4
def test_set_name(document, comm): class Test(param.Parameterized): a = param.Number(bounds=(0, 10)) b = param.String(default='A') pane = Param(Test(), name='First') model = pane.get_root(document, comm=comm) assert len(model.children) == 3 title, slider, text = model.children assert isinstance(title, Div) # Check setting name displays in as a title assert title.text == '<b>First</b>' assert isinstance(slider, Slider) assert isinstance(text, TextInput) pane.name = 'Second' assert len(model.children) == 3 title, _, _ = model.children assert isinstance(title, Div) # Check the title updates with name assert title.text == '<b>Second</b>'
def test_rerender_bounded_widget_when_bounds_set_and_unset(): class Test(param.Parameterized): num = param.Range() test = Test() p = Param(test) assert isinstance(p._widgets['num'], LiteralInput) assert p._widgets['num'] in p._widget_box test.param.num.bounds = (0, 5) assert isinstance(p._widgets['num'], RangeSlider) assert p._widgets['num'] in p._widget_box test.param.num.bounds = (None, 5) assert isinstance(p._widgets['num'], LiteralInput) assert p._widgets['num'] in p._widget_box
def control_panel(self): return Param(self.param, parameters=self.controls, sizing_mode='stretch_width')
def __init__(self, **params): super(TestClass, self).__init__(**params) self._layout = Row(Param(self.param, parameters=['select']), self.select)
def __init__(self, **params): params["text"] = TextModel(text="Original Text") super().__init__(**params) self.text_pane = Param(self.text, parameters=["text"])