def test_defer_add_event(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True context['a'] = 'foo' context.defer_events = False self.assertEqual(self.event_count, 1) self.assertEqual(self.last_event.added, ['a']) self.assertEqual(self.last_event.modified, []) self.assertEqual(self.last_event.removed, [])
def test_defer_add_event(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True context['a'] = 'foo' context.defer_events = False self.assertEqual(self.event_count, 1) self.assertEqual(self.last_event.added, ['a']) self.assertEqual(self.last_event.modified, []) self.assertEqual(self.last_event.removed, [])
def test_delete_after_add(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') self.assertEqual(self.event_count, 0) context.defer_events = True self.assertEqual(self.event_count, 0) context['a'] = 'foo' self.assertEqual(self.event_count, 0) del context['a'] self.assertEqual(self.event_count, 0) context.defer_events = False self.assertEqual(self.event_count, 0)
def test_delete_after_add(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') self.assertEqual(self.event_count, 0) context.defer_events = True self.assertEqual(self.event_count, 0) context['a'] = 'foo' self.assertEqual(self.event_count, 0) del context['a'] self.assertEqual(self.event_count, 0) context.defer_events = False self.assertEqual(self.event_count, 0)
def hardcode_vars(): ### Setup execution block ############################################### # Context setup. context = DataContext(name='Data') context['a'] = 0.5 context['b'] = 3.0 context['c'] = 4.0 """ context.defer_events = True x = arange(0,10,.01) context['a'] = 1.0 context['b'] = array([1, 2, 3]) context['c'] = array([4, 5, 6]) context.defer_events = False """ context.defer_events = False code = "from blockcanvas.debug.my_operator import add, mul\n" \ "from numpy import arange\n" \ "x = arange(0,10,.1)\n" \ "c1 = mul(a,a)\n" \ "x1 = mul(x,x)\n" \ "t1 = mul(c1,x1)\n" \ "t2 = mul(b, x)\n" \ "t3 = add(t1,t2)\n" \ "y = add(t3,c)\n" return code, context
def hardcode_vars(): ### Setup execution block ############################################### # Context setup. context = DataContext(name='Data') context['a'] = 0.5 context['b'] = 3.0 context['c'] = 4.0 """ context.defer_events = True x = arange(0,10,.01) context['a'] = 1.0 context['b'] = array([1, 2, 3]) context['c'] = array([4, 5, 6]) context.defer_events = False """ context.defer_events = False code = "from blockcanvas.debug.my_operator import add, mul\n" \ "from numpy import arange\n" \ "x = arange(0,10,.1)\n" \ "c1 = mul(a,a)\n" \ "x1 = mul(x,x)\n" \ "t1 = mul(c1,x1)\n" \ "t2 = mul(b, x)\n" \ "t3 = add(t1,t2)\n" \ "y = add(t3,c)\n" return code, context
def test_defer_multiple_events(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True self.assertEqual(self.event_count, 0) context['a'] = 'foo' self.assertEqual(self.event_count, 0) context['a'] = 'foo2' self.assertEqual(self.event_count, 0) context['b'] = 'bar' self.assertEqual(self.event_count, 0) context.defer_events = False # the modified will be empty, because it was also added self.assertEqual(self.event_count, 1) self.assertEqual(set(self.last_event.added), set(['a', 'b'])) self.assertEqual(self.last_event.modified, []) self.assertEqual(self.last_event.removed, [])
def test_defer_multiple_events(self): context = DataContext() context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True self.assertEqual(self.event_count, 0) context['a'] = 'foo' self.assertEqual(self.event_count, 0) context['a'] = 'foo2' self.assertEqual(self.event_count, 0) context['b'] = 'bar' self.assertEqual(self.event_count, 0) context.defer_events = False # the modified will be empty, because it was also added self.assertEqual(self.event_count, 1) self.assertEqual(set(self.last_event.added), set(['a', 'b'])) self.assertEqual(self.last_event.modified, []) self.assertEqual(self.last_event.removed, [])
def test_block_events(self): import numpy from codetools.blocks.api import Block context = DataContext(name="data") context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True context['a'] = 4 context['b'] = numpy.array((1, 2, 3)) context.defer_events = False self.assertEqual(self.event_count, 1) multi_context = MultiContext(context, name="multi") multi_context.on_trait_change(self.event_listener, 'items_modified') block = Block("c = a * b") block.execute(multi_context) # we expect one event from data context, one from multi context self.assertEqual(self.event_count, 3)
def test_block_events(self): import numpy from codetools.blocks.api import Block context = DataContext(name="data") context.on_trait_change(self.event_listener, 'items_modified') context.defer_events = True context['a'] = 4 context['b'] = numpy.array((1,2,3)) context.defer_events = False self.assertEqual(self.event_count, 1) multi_context = MultiContext(context, name="multi") multi_context.on_trait_change(self.event_listener, 'items_modified') block = Block("c = a * b") block.execute(multi_context) # we expect one event from data context, one from multi context self.assertEqual(self.event_count, 3)
def main(): # Search boxes for finding functions to place on module. function_search = HandledFunctionSearch() ### Setup execution block ############################################### # Context setup. context = DataContext(name='Data') context['a'] = 1.0 context.defer_events = False ### Setup the main application object ################################### # Reload from a file # Note: test case for block persistence, set the file_path to '' if # persistence need not be tested file_path = '' if not os.path.isfile(file_path): code = "from numpy import arange\n" \ "b=3\n" \ "c=4\n" \ "x = arange(0,10,.1)\n" \ "y = a*x**2 + b*x + c\n" bu = BlockUnit(code=code, data_context=context) else: bu = BlockUnit(data_context=context) bu.load_block_from_file(file_path) def loop_interactor(interactor): import time import numpy time.sleep(1) for i in range(1,100): interactor.interactor_shadow.input_a = numpy.sin(i/10) time.sleep(0.1) print "done" import sys sys.exit(0) from blockcanvas.interactor.configurable_interactor import ConfigurableInteractor from blockcanvas.interactor.shadow_interactor import ShadowInteractor from blockcanvas.interactor.interactor_config import PlotConfig, InteractorConfig, VariableConfig from blockcanvas.plot.configurable_context_plot import ConfigurableContextPlot from blockcanvas.block_display.block_unit_variables import \ BlockUnitVariableList from threading import Thread vars = BlockUnitVariableList(block = bu.codeblock.block, context = bu._exec_context) config = InteractorConfig(vars = vars.variables, var_configs=[VariableConfig(name='a', type="Shadow")], plot_configs=[PlotConfig(x='x', y='y')]) interactor = ConfigurableInteractor(context = bu._exec_context, block = bu.codeblock.block, interactor_config = config) # Thread(target=loop_interactor, args=(interactor,)).start() interactor.edit_traits(kind='livemodal')
def main(): # Search boxes for finding functions to place on module. function_search = HandledFunctionSearch() ### Setup execution block ############################################### # Context setup. context = DataContext(name='Data') context['a'] = 1.0 context.defer_events = False ### Setup the main application object ################################### # Reload from a file # Note: test case for block persistence, set the file_path to '' if # persistence need not be tested file_path = '' if not os.path.isfile(file_path): code = "from numpy import arange\n" \ "b=3\n" \ "c=4\n" \ "x = arange(0,10,.1)\n" \ "y = a*x**2 + b*x + c\n" bu = BlockUnit(code=code, data_context=context) else: bu = BlockUnit(data_context=context) bu.load_block_from_file(file_path) def loop_interactor(interactor): import time import numpy time.sleep(1) for i in range(1, 100): interactor.interactor_shadow.input_a = numpy.sin(i / 10) time.sleep(0.1) print "done" import sys sys.exit(0) from blockcanvas.interactor.configurable_interactor import ConfigurableInteractor from blockcanvas.interactor.shadow_interactor import ShadowInteractor from blockcanvas.interactor.interactor_config import PlotConfig, InteractorConfig, VariableConfig from blockcanvas.plot.configurable_context_plot import ConfigurableContextPlot from blockcanvas.block_display.block_unit_variables import \ BlockUnitVariableList from threading import Thread vars = BlockUnitVariableList(block=bu.codeblock.block, context=bu._exec_context) config = InteractorConfig( vars=vars.variables, var_configs=[VariableConfig(name='a', type="Shadow")], plot_configs=[PlotConfig(x='x', y='y')]) interactor = ConfigurableInteractor(context=bu._exec_context, block=bu.codeblock.block, interactor_config=config) # Thread(target=loop_interactor, args=(interactor,)).start() interactor.edit_traits(kind='livemodal')