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, [])
Exemple #2
0
    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)
Exemple #4
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)
Exemple #5
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
Exemple #6
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 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, [])
Exemple #8
0
    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, [])
Exemple #9
0
    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)
Exemple #10
0
    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)
Exemple #11
0
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')