Beispiel #1
0
def task_workbench(monkeypatch, app_dir):
    """Setup the workbench in such a way that the task manager can be tested.

    """
    def exit_err(self):
        if self._delayed:
            raise Exception('Unexpected exceptions occured :\n' +
                            pformat(self._delayed))

    monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_err)
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(AppManifest())
    workbench.register(PreferencesManifest())
    workbench.register(ErrorsManifest())
    workbench.register(DependenciesManifest())
    workbench.register(TasksManagerManifest())

    yield workbench

    for m_id in ('ecpy.tasks', 'ecpy.app.dependencies', 'ecpy.app.errors',
                 'ecpy.app.preferences', 'ecpy.app'):
        try:
            workbench.unregister(m_id)
        except ValueError:
            pass
Beispiel #2
0
def initialize_default(extra_manifests, workspace='psi.experiment.workspace'):

    with enaml.imports():
        from enaml.workbench.core.core_manifest import CoreManifest
        from enaml.workbench.ui.ui_manifest import UIManifest

        from psi.context.manifest import ContextManifest
        from psi.data.manifest import DataManifest
        from psi.experiment.manifest import ExperimentManifest

    with warnings.catch_warnings():
        warnings.simplefilter('ignore')

        workbench = Workbench()
        workbench.register(CoreManifest())
        workbench.register(UIManifest())
        workbench.register(ContextManifest())
        workbench.register(DataManifest())
        workbench.register(ExperimentManifest())
        for manifest in extra_manifests:
            workbench.register(manifest())

        core = workbench.get_plugin('enaml.workbench.core')
        ui = workbench.get_plugin('enaml.workbench.ui')
        ui.show_window()
        core.invoke_command('enaml.workbench.ui.select_workspace',
                            {'workspace': workspace})

        experiment = workbench.get_plugin('psi.experiment')
        return workbench
Beispiel #3
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(DependenciesManifest())
Beispiel #4
0
 def setup(self):
     self.workbench = Workbench()
     self.workbench.register(CoreManifest())
     self.workbench.register(AppManifest())
     self.workbench.register(PreferencesManifest())
     self.workbench.register(StateManifest())
     self.workbench.register(LogManifest())
Beispiel #5
0
def measure_workbench(monkeypatch, app_dir):
    """Setup the workbench in such a way that the measure plugin can be tested.

    """
    def exit_err(self):
        self._gathering_counter -= 1
        if self._gathering_counter < 1:
            self._gathering_counter = 0
            if self._delayed:
                msg = 'Unexpected exceptions occured :\n'
                raise ErrorDialogException(msg + pformat(self._delayed))

    monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_err)
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(AppManifest())
    workbench.register(PreferencesManifest())
    workbench.register(ErrorsManifest())
    workbench.register(DependenciesManifest())
    workbench.register(MeasureManifest())

    yield workbench

    for m_id in ('ecpy.measure', 'ecpy.app.dependencies', 'ecpy.app.errors',
                 'ecpy.app.preferences', 'ecpy.app'):
        try:
            workbench.unregister(m_id)
        except ValueError:
            pass
Beispiel #6
0
def workbench():
    """Create a workbench and register basic manifests.

    """
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(ErrorsManifest())
    workbench.register(PackagesManifest())
    return workbench
    def setup(self):
        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(TaskManagerManifest())

        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = self.excep_class(task_name='Test', condition='rr')
        self.root.children_task.append(self.task)
Beispiel #8
0
    def setup(self):
        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(TaskManagerManifest())

        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveArrayTask(task_name='Test')
        self.root.children_task.append(self.task)
Beispiel #9
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(DependenciesManifest())
        self.workbench.register(TaskManagerManifest())
        self.workbench.register(MeasureManifest())
        self.workbench.register(TestSuiteManifest())
Beispiel #10
0
    def setup(self):
        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(UIManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(LogManifest())
        self.workbench.register(MeasureManifest())

        # Needed otherwise the monitor manifest is not registered.
        self.workbench.get_plugin(u'hqc_meas.measure')
Beispiel #11
0
    def setup(self):
        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(InstrManagerManifest())
        self.workbench.register(TaskManagerManifest())

        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = MeasDCVoltageTask(task_name='Test')
        self.root.children_task.append(self.task)
        self.root.run_time['drivers'] = {'Test': InstrHelper}
Beispiel #12
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(UIManifest())
        self.workbench.register(HqcAppManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(LogManifest())
        self.workbench.register(TaskManagerManifest())
        self.workbench.register(InstrManagerManifest())
        self.workbench.register(MeasureManifest())
        self.workbench.register(TestSuiteManifest())
Beispiel #13
0
def workbench():
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(ContextManifest())
    workbench.register(TestManifest())

    context = workbench.get_plugin('psi.context')
    print context.selectors['default'].order
    print context.selectors['default'].parameters
    print context.context_items['repetitions'].rove
    for r in (20, 15, 10, 2):
        context.selectors['default'].add_setting(dict(repetitions=r))
    return workbench
Beispiel #14
0
def dep_workbench():
    """Setup the workbench to test dependencies related capabilities.

    """
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(DependenciesManifest())
    workbench.register(BuildDep())
    workbench.register(RuntimeDep())

    yield workbench

    workbench.unregister('ecpy.app.dependencies')
    workbench.unregister('enaml.workbench.core')
def test_registration(windows):
    """Test that the manifest is properly regsistered.

    """
    w = Workbench()
    w.register(CoreManifest())
    w.register(ErrorsManifest())
    w.register(PackagesManifest())

    with signal_error_raise():
        w.get_plugin('exopy.app.packages').collect_and_register()

    # Edit the name of the package
    assert w.get_plugin('exopy_ext_demo')
Beispiel #16
0
def workbench(app):
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(ContextManifest())
    workbench.register(DataManifest())
    workbench.register(TokenManifest())
    workbench.register(ExperimentManifest())
    workbench.register(HelperManifest())

    context = workbench.get_plugin('psi.context')
    item = context.context_items['repetitions']
    item.rove = True
    for r in (20, 15, 10, 2, 20):
        context.selectors['default'].add_setting({'repetitions': r})
    return workbench
Beispiel #17
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        self.workbench.register(UIManifest())
        self.workbench.register(HqcAppManifest())
        self.workbench.register(StateManifest())
        self.workbench.register(PreferencesManifest())
        self.workbench.register(LogManifest())
        self.workbench.register(DependenciesManifest())
        self.workbench.register(TaskManagerManifest())
        self.workbench.register(InstrManagerManifest())
        self.workbench.register(MeasureManifest())
        self.workbench.register(TestSuiteManifest())

        # Adding by hand the false instr task.
        plugin = self.workbench.get_plugin('hqc_meas.task_manager')
        plugin._py_tasks['False instr'] = FalseInstrTask
Beispiel #18
0
def pulses_workbench(monkeypatch, app_dir):
    """Setup the workbench in such a way that the pulses manager can be tested.

    """
    monkeypatch.setattr(ErrorsPlugin, 'exit_error_gathering', exit_on_err)
    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(AppManifest())
    workbench.register(PreferencesManifest())
    workbench.register(ErrorsManifest())
    workbench.register(StateManifest())
    workbench.register(DependenciesManifest())
    workbench.register(MeasureManifest())
    workbench.register(PulsesManagerManifest())

    yield workbench

    for m_id in ('exopy.pulses', 'exopy.app.dependencies', 'exopy.app.errors',
                 'exopy.app.preferences', 'exopy.app'):
        try:
            workbench.unregister(m_id)
        except Exception:
            pass
Beispiel #19
0
    def setup(self):

        self.workbench = Workbench()
        self.workbench.register(CoreManifest())
        # Creating an empty config file.
        ConfigObj(os.path.join(self.test_dir, 'default_test.ini')).write()
Beispiel #20
0
from enaml.workbench.api import Workbench

if __name__ == '__main__':
    with enaml.imports():
        from enaml.workbench.core.core_manifest import CoreManifest
        from enaml.workbench.ui.ui_manifest import UIManifest

        from psi.setting.manifest import SettingManifest
        from psi.data.manifest import DataManifest
        from psi.controller.manifest import ControllerManifest
        from psi.experiment.manifest import ExperimentManifest

    with warnings.catch_warnings():
        warnings.simplefilter('ignore')

        workbench = Workbench()
        workbench.register(CoreManifest())
        workbench.register(UIManifest())

        workbench.register(SettingManifest())
        workbench.register(DataManifest())
        workbench.register(ControllerManifest())
        workbench.register(ExperimentManifest())

        core = workbench.get_plugin('enaml.workbench.core')
        ui = workbench.get_plugin('enaml.workbench.ui')

        parameters = core.invoke_command('psi.setting.get_parameters')
        parameters[0].rove = True
        name = parameters[0].name
Beispiel #21
0
def workbench():
    """Create a workbench instance.

    """
    workbench = Workbench()
    return workbench
Beispiel #22
0
 def setup(self):
     self.workbench = Workbench()
     self.workbench.register(CoreManifest())
     self.workbench.register(ErrorsManifest())
     self.workbench.register(DeclaratorManifest())
Beispiel #23
0
 def setup(self):
     self.workbench = Workbench()
     self.workbench.register(CoreManifest())
     self.workbench.register(StateManifest())
     self.workbench.register(StateContributor())
Beispiel #24
0
def main(cmd_line_args=None):
    """Main entry point of the Oculy application."""
    # Build parser from ArgParser and parse arguments
    parser = ArgParser()
    parser.add_choice("workspaces", "oculy.simple_viewer", "simple")
    parser.add_argument(
        "-d",
        "--debug",
        help=
        "Don't capture stdout/stderr, and do not catch top level exceptions",
        action="store_true",
    )
    parser.add_argument(
        "-w",
        "--workspace",
        help="Select start-up workspace",
        default="simple",
        choices="workspaces",
    )
    parser.add_argument(
        "-r",
        "--reset-app-folder",
        help="Reset the application startup folder.",
        action="store_true",
    )

    extend_parser(
        parser,
        "oculy_cmdline_args",
        lambda title, content, details, exception:
        display_startup_error_dialog(title, content, details),
    )

    try:
        args = parser.parse_args(cmd_line_args)
    except BaseException as e:
        if self.debug:
            raise
        if e.args == (0, ):
            sys.exit(0)
        text = "Failed to parse cmd line arguments"
        content = ("The following error occurred when trying to parse the "
                   "command line arguments :\n {}".format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    # Patch Thread to use sys.excepthook
    if not args.debug:
        setup_thread_excepthook()

    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(UIManifest())
    workbench.register(LifecycleManifest())
    workbench.register(StateManifest())
    workbench.register(ErrorsManifest())
    workbench.register(PreferencesManifest(application_name="oculy"))
    workbench.register(IconManagerManifest())
    workbench.register(LogManifest(no_capture=args.debug))
    workbench.register(PackagesManifest())
    workbench.register(OculyManifest())
    workbench.register(DataStorageManifest())
    workbench.register(IOManifest())
    workbench.register(PlottingManifest())
    workbench.register(DataTransformerManifest())
    workbench.register(SimpleViewerManifest())

    ui = workbench.get_plugin(u"enaml.workbench.ui")  # Create the application

    try:
        app = workbench.get_plugin("glaze.lifecycle")
        app.run_app_startup(args)
    except Exception as e:
        if args.debug:
            raise
        text = "Error starting plugins"
        content = ("The following error occurred when executing plugins "
                   "application start ups :\n {}".format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    core = workbench.get_plugin("enaml.workbench.core")

    # Install global except hook.
    if not args.debug:
        core.invoke_command("glaze.errors.install_excepthook", {})

    # Select workspace
    core.invoke_command("enaml.workbench.ui.select_workspace",
                        {"workspace": args.workspace}, workbench)

    ui = workbench.get_plugin(u"enaml.workbench.ui")
    ui.show_window()
    ui.window.maximize()
    ui.start_application()

    core.invoke_command("enaml.workbench.ui.close_workspace", {}, workbench)

    # Unregister all contributed packages
    workbench.unregister("oculy.workspaces.simple_viewer")
    workbench.unregister("oculy.data")
    workbench.unregister("oculy.io")
    workbench.unregister("oculy.plotting")
    workbench.unregister("oculy.transformers")
    workbench.unregister("glaze.packages")
    workbench.unregister("glaze.icons")
    workbench.unregister("glaze.states")
    workbench.unregister("glaze.errors")
    workbench.unregister("glaze.logging")
    workbench.unregister("oculy")
    workbench.unregister("glaze.preferences")
    workbench.unregister("glaze.lifecycle")
    workbench.unregister("enaml.workbench.ui")
    workbench.unregister("enaml.workbench.core")
Beispiel #25
0
 def setup(self):
     self.workbench = Workbench()
     self.workbench.register(AppManifest())
     self.workbench.register(CoreManifest())
     self.workbench.register(ErrorsManifest())
Beispiel #26
0
 def setup(self):
     self.workbench = Workbench()
Beispiel #27
0
def main(cmd_line_args=None):
    """Main entry point of the Exopy application.

    """
    # Build parser from ArgParser and parse arguemnts
    parser = ArgParser()
    parser.add_choice('workspaces', 'exopy.measurement.workspace',
                      'measurement')
    parser.add_argument("-s",
                        "--nocapture",
                        help="Don't capture stdout/stderr",
                        action='store_true')
    parser.add_argument("-w",
                        "--workspace",
                        help='Select start-up workspace',
                        default='measurement',
                        choices='workspaces')
    parser.add_argument("-r",
                        "--reset-app-folder",
                        help='Reset the application startup folder.',
                        action='store_true')

    modifiers = []
    for i, ep in enumerate(iter_entry_points('exopy_cmdline_args')):

        try:
            modifier, priority = ep.load(require=False)
            modifiers.append((ep, modifier, priority, i))
        except Exception as e:
            text = 'Error loading extension %s' % ep.name
            content = ('The following error occurred when trying to load the '
                       'entry point {} :\n {}'.format(ep.name, e))
            details = format_exc()
            display_startup_error_dialog(text, content, details)

    modifiers.sort(key=itemgetter(1, 2))
    try:
        for m in modifiers:
            m[1](parser)
    except Exception as e:
        text = 'Error modifying cmd line arguments'
        content = ('The following error occurred when the entry point {} '
                   'tried to add cmd line options :\n {}'.format(ep.name, e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    try:
        args = parser.parse_args(cmd_line_args)
    except BaseException as e:
        if e.args == (0, ):
            sys.exit(0)
        text = 'Failed to parse cmd line arguments'
        content = ('The following error occurred when trying to parse the '
                   'command line arguments :\n {}'.format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    # Patch Thread to use sys.excepthook
    setup_thread_excepthook()

    workbench = Workbench()
    workbench.register(CoreManifest())
    workbench.register(UIManifest())
    workbench.register(AppManifest())
    workbench.register(StateManifest())
    workbench.register(ErrorsManifest())
    workbench.register(PreferencesManifest())
    workbench.register(IconManagerManifest())
    workbench.register(LogManifest())
    workbench.register(PackagesManifest())
    workbench.register(DependenciesManifest())
    workbench.register(InstrumentManagerManifest())
    workbench.register(TasksManagerManifest())
    workbench.register(MeasureManifest())
    workbench.register(TextMonitorManifest())

    ui = workbench.get_plugin(u'enaml.workbench.ui')  # Create the application

    try:
        app = workbench.get_plugin('exopy.app')
        app.run_app_startup(args)
    except Exception as e:
        text = 'Error starting plugins'
        content = ('The following error occurred when executing plugins '
                   'application start ups :\n {}'.format(e))
        details = format_exc()
        display_startup_error_dialog(text, content, details)

    core = workbench.get_plugin('enaml.workbench.core')

    # Install global except hook.
    if not args.nocapture:
        core.invoke_command('exopy.app.errors.install_excepthook', {})

    # Select workspace
    core.invoke_command('enaml.workbench.ui.select_workspace',
                        {'workspace': args.workspace}, workbench)

    ui = workbench.get_plugin(u'enaml.workbench.ui')
    ui.show_window()
    ui.window.maximize()
    ui.start_application()

    core.invoke_command('enaml.workbench.ui.close_workspace', {}, workbench)

    # Unregister all contributed packages
    workbench.unregister('exopy.app.packages')
    workbench.unregister('exopy.measurement.monitors.text_monitor')
    workbench.unregister('exopy.measurement')
    workbench.unregister('exopy.tasks')
    workbench.unregister('exopy.instruments')
    workbench.unregister('exopy.app.icons')
    workbench.unregister('exopy.app.preferences')
    workbench.unregister('exopy.app.states')
    workbench.unregister('exopy.app.dependencies')
    workbench.unregister('exopy.app.errors')
    workbench.unregister('exopy.app.logging')
    workbench.unregister('exopy.app')
    workbench.unregister(u'enaml.workbench.ui')
    workbench.unregister(u'enaml.workbench.core')