def test_context_manager_batched_watch_reuse(self): accumulator = Accumulator() obj = SimpleWatchExample() obj.param.watch(accumulator, ['a', 'b']) obj.param.watch(accumulator, ['c']) with param.batch_watch(obj): obj.a = 23 obj.b = 42 obj.c = 99 self.assertEqual(accumulator.call_count(), 2) # Order may be undefined for Python <3.6 for args in [accumulator.args_for_call(i) for i in [0, 1]]: if len(args) == 1: # ['c'] self.assertEqual(args[0].name, 'c') self.assertEqual(args[0].old, 0) self.assertEqual(args[0].new, 99) self.assertEqual(args[0].type, 'changed') elif len(args) == 2: # ['a', 'b'] self.assertEqual(args[0].name, 'a') self.assertEqual(args[0].old, 0) self.assertEqual(args[0].new, 23) self.assertEqual(args[0].type, 'changed') self.assertEqual(args[1].name, 'b') self.assertEqual(args[1].old, 0) self.assertEqual(args[1].new, 42) self.assertEqual(args[0].type, 'changed') else: raise Exception('Invalid number of arguments')
def _update_cmap_names(self): with param.batch_watch(self): self._name = None if self._provider is not None: self.param._name.precedence = 1 self.param._name.objects = [None] + list_cmaps(self._provider) else: self.param._name.precedence = -1 self.param._name.objects = [None]
def test_simple_trigger_when_batched(self): accumulator = Accumulator() obj = SimpleWatchExample() obj.param.watch(accumulator, ['a']) with param.batch_watch(obj): obj.param.trigger('a') self.assertEqual(accumulator.call_count(), 1) args = accumulator.args_for_call(0) self.assertEqual(args[0].name, 'a') self.assertEqual(args[0].old, 0) self.assertEqual(args[0].new, 0) # Note: This is not strictly correct self.assertEqual(args[0].type, 'changed')
def test_batched_watch_context_manager(self): accumulator = Accumulator() obj = SimpleWatchExample() obj.param.watch(accumulator, ['a', 'b']) with param.batch_watch(obj): obj.a = 2 obj.b = 3 self.assertEqual(accumulator.call_count(), 1) args = accumulator.args_for_call(0) self.assertEqual(len(args), 2) self.assertEqual(args[0].name, 'a') self.assertEqual(args[0].old, 0) self.assertEqual(args[0].new, 2) self.assertEqual(args[0].type, 'changed') self.assertEqual(args[1].name, 'b') self.assertEqual(args[1].old, 0) self.assertEqual(args[1].new, 3) self.assertEqual(args[1].type, 'changed')
def test_batched_watch_context_manager(self): accumulator = Accumulator() obj = SimpleWatchExample() obj.param.watch(accumulator, ['a','b']) with param.batch_watch(obj): obj.a = 2 obj.b = 3 self.assertEqual(accumulator.call_count(), 1) args = accumulator.args_for_call(0) self.assertEqual(len(args), 2) self.assertEqual(args[0].name, 'a') self.assertEqual(args[0].old, 0) self.assertEqual(args[0].new, 2) self.assertEqual(args[0].type, 'changed') self.assertEqual(args[1].name, 'b') self.assertEqual(args[1].old, 0) self.assertEqual(args[1].new, 3) self.assertEqual(args[1].type, 'changed')