├── .checkignore ├── .codecov.yml ├── .coveragerc ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── AUTHORS ├── CHANGES ├── LICENSE ├── README.rst ├── docs ├── Makefile ├── environment.yml ├── make.bat └── source │ ├── api_builder.py │ ├── api_docs │ ├── app │ │ ├── app_extensions.rst │ │ ├── app_manifest.rst │ │ ├── app_plugin.rst │ │ ├── dependencies │ │ │ ├── dependencies.rst │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ └── plugin.rst │ │ ├── errors │ │ │ ├── errors.rst │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ ├── plugin.rst │ │ │ └── widgets.rst │ │ ├── index.rst │ │ ├── log │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ ├── plugin.rst │ │ │ └── tools.rst │ │ ├── packages │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ └── plugin.rst │ │ ├── preferences │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ ├── plugin.rst │ │ │ └── preferences.rst │ │ └── states │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ ├── plugin.rst │ │ │ └── state.rst │ ├── index.rst │ ├── instruments │ │ ├── connections │ │ │ ├── base_connection.rst │ │ │ ├── index.rst │ │ │ └── visa_connections.rst │ │ ├── drivers │ │ │ ├── driver_decl.rst │ │ │ └── index.rst │ │ ├── index.rst │ │ ├── infos.rst │ │ ├── manifest.rst │ │ ├── manufacturer_aliases.rst │ │ ├── plugin.rst │ │ ├── settings │ │ │ ├── base_settings.rst │ │ │ └── index.rst │ │ ├── starters │ │ │ ├── base_starter.rst │ │ │ ├── exceptions.rst │ │ │ └── index.rst │ │ ├── user.rst │ │ └── widgets │ │ │ ├── browsing.rst │ │ │ ├── index.rst │ │ │ ├── instrument_selection.rst │ │ │ ├── profile_edition.rst │ │ │ └── profile_selection.rst │ ├── measure │ │ ├── base_tool.rst │ │ ├── container.rst │ │ ├── editors │ │ │ ├── base_editor.rst │ │ │ ├── database_access_editor │ │ │ │ ├── editor.rst │ │ │ │ ├── editor_model.rst │ │ │ │ └── index.rst │ │ │ ├── execution_editor │ │ │ │ ├── editor.rst │ │ │ │ ├── editor_model.rst │ │ │ │ └── index.rst │ │ │ ├── index.rst │ │ │ └── standard_editor.rst │ │ ├── engines │ │ │ ├── base_engine.rst │ │ │ ├── index.rst │ │ │ ├── process_engine │ │ │ │ ├── engine.rst │ │ │ │ ├── engine_declaration.rst │ │ │ │ ├── index.rst │ │ │ │ └── subprocess.rst │ │ │ ├── selection.rst │ │ │ └── utils.rst │ │ ├── hooks │ │ │ ├── base_hooks.rst │ │ │ ├── index.rst │ │ │ └── internal_checks.rst │ │ ├── index.rst │ │ ├── manifest.rst │ │ ├── measure.rst │ │ ├── monitors │ │ │ ├── base_monitor.rst │ │ │ ├── index.rst │ │ │ └── text_monitor │ │ │ │ ├── custom_entry_edition.rst │ │ │ │ ├── entry.rst │ │ │ │ ├── index.rst │ │ │ │ ├── manifest.rst │ │ │ │ ├── monitor.rst │ │ │ │ ├── monitor_views.rst │ │ │ │ ├── plugin.rst │ │ │ │ └── rules │ │ │ │ ├── base.rst │ │ │ │ ├── base_views.rst │ │ │ │ ├── edition_views.rst │ │ │ │ ├── index.rst │ │ │ │ ├── infos.rst │ │ │ │ ├── std_rules.rst │ │ │ │ └── std_views.rst │ │ ├── plugin.rst │ │ ├── processor.rst │ │ └── workspace │ │ │ ├── checks_display.rst │ │ │ ├── content.rst │ │ │ ├── index.rst │ │ │ ├── manifest.rst │ │ │ ├── measure_edition.rst │ │ │ ├── measure_execution.rst │ │ │ ├── measure_tracking.rst │ │ │ ├── monitors_window.rst │ │ │ ├── tools_edition.rst │ │ │ └── workspace.rst │ ├── tasks │ │ ├── configs │ │ │ ├── base_config_views.rst │ │ │ ├── base_configs.rst │ │ │ ├── index.rst │ │ │ ├── loop_config.rst │ │ │ └── loop_config_view.rst │ │ ├── declarations.rst │ │ ├── filters.rst │ │ ├── index.rst │ │ ├── infos.rst │ │ ├── manifest.rst │ │ ├── plugin.rst │ │ ├── tasks │ │ │ ├── base_tasks.rst │ │ │ ├── base_views.rst │ │ │ ├── database.rst │ │ │ ├── decorators.rst │ │ │ ├── index.rst │ │ │ ├── instr_task.rst │ │ │ ├── instr_view.rst │ │ │ ├── logic │ │ │ │ ├── conditional_task.rst │ │ │ │ ├── declarations.rst │ │ │ │ ├── index.rst │ │ │ │ ├── loop_exceptions.rst │ │ │ │ ├── loop_exceptions_tasks.rst │ │ │ │ ├── loop_iterable_interface.rst │ │ │ │ ├── loop_linspace_interface.rst │ │ │ │ ├── loop_task.rst │ │ │ │ ├── views │ │ │ │ │ ├── conditional_view.rst │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── loop_exceptions_views.rst │ │ │ │ │ ├── loop_iterable_view.rst │ │ │ │ │ ├── loop_linspace_view.rst │ │ │ │ │ ├── loop_view.rst │ │ │ │ │ └── while_view.rst │ │ │ │ └── while_task.rst │ │ │ ├── shared_resources.rst │ │ │ ├── string_evaluation.rst │ │ │ ├── task_editor.rst │ │ │ ├── task_interface.rst │ │ │ ├── util │ │ │ │ ├── declarations.rst │ │ │ │ ├── definition_task.rst │ │ │ │ ├── formula_task.rst │ │ │ │ ├── index.rst │ │ │ │ ├── log_task.rst │ │ │ │ ├── sleep_task.rst │ │ │ │ └── views │ │ │ │ │ ├── definition_view.rst │ │ │ │ │ ├── formula_view.rst │ │ │ │ │ ├── index.rst │ │ │ │ │ ├── log_view.rst │ │ │ │ │ └── sleep_view.rst │ │ │ └── validators.rst │ │ ├── utils │ │ │ ├── building.rst │ │ │ ├── index.rst │ │ │ ├── saving.rst │ │ │ └── templates.rst │ │ └── widgets │ │ │ ├── browsing.rst │ │ │ ├── building.rst │ │ │ ├── index.rst │ │ │ └── saving.rst │ ├── testing │ │ ├── fixtures.rst │ │ ├── index.rst │ │ ├── instruments │ │ │ ├── fixtures.rst │ │ │ └── index.rst │ │ ├── measure │ │ │ ├── contributions.rst │ │ │ ├── dummies.rst │ │ │ ├── fixtures.rst │ │ │ ├── index.rst │ │ │ ├── monitors │ │ │ │ ├── index.rst │ │ │ │ └── text_monitor │ │ │ │ │ ├── fixtures.rst │ │ │ │ │ └── index.rst │ │ │ └── workspace │ │ │ │ ├── fixtures.rst │ │ │ │ └── index.rst │ │ ├── tasks │ │ │ ├── fixtures.rst │ │ │ ├── index.rst │ │ │ └── util.rst │ │ ├── util.rst │ │ └── windows.rst │ ├── utils │ │ ├── atom_util.rst │ │ ├── configobj_ops.rst │ │ ├── container_change.rst │ │ ├── declarator.rst │ │ ├── enaml_destroy_hook.rst │ │ ├── flags.rst │ │ ├── index.rst │ │ ├── mapping_utils.rst │ │ ├── plugin_tools.rst │ │ ├── priority_heap.rst │ │ ├── transformers.rst │ │ ├── watchdog.rst │ │ └── widgets │ │ │ ├── dict_editor.rst │ │ │ ├── dict_tree_view.rst │ │ │ ├── index.rst │ │ │ ├── list_editor.rst │ │ │ ├── qt_autoscroll_html.rst │ │ │ ├── qt_clipboard.rst │ │ │ ├── qt_completers.rst │ │ │ ├── qt_list_str_widget.rst │ │ │ ├── qt_tree_menu.rst │ │ │ ├── qt_tree_widget.rst │ │ │ └── tree_nodes.rst │ └── version.rst │ ├── conf.py │ ├── dev_guide │ ├── application.rst │ ├── atom_enaml.rst │ ├── glossary.rst │ ├── index.rst │ ├── instruments.rst │ ├── measurement.rst │ ├── style_guide.rst │ ├── tasks.rst │ └── testing.rst │ ├── faqs │ └── index.rst │ ├── index.rst │ ├── substitutions.sub │ └── user_guide │ ├── first_steps.rst │ ├── index.rst │ ├── installation.rst │ ├── instruments.rst │ └── measure_edition.rst ├── exopy ├── __init__.py ├── __main__.py ├── app │ ├── __init__.py │ ├── api.py │ ├── app_extensions.py │ ├── app_manifest.enaml │ ├── app_plugin.py │ ├── dependencies │ │ ├── __init__.py │ │ ├── api.py │ │ ├── dependencies.py │ │ ├── manifest.enaml │ │ └── plugin.py │ ├── errors │ │ ├── __init__.py │ │ ├── api.py │ │ ├── errors.py │ │ ├── manifest.enaml │ │ ├── plugin.py │ │ └── widgets.enaml │ ├── headless │ │ ├── __init__.py │ │ ├── autoclose.py │ │ └── manifest.enaml │ ├── icons │ │ ├── __init__.py │ │ ├── api.py │ │ ├── icon_theme.py │ │ ├── manifest.enaml │ │ └── plugin.py │ ├── log │ │ ├── __init__.py │ │ ├── manifest.enaml │ │ ├── plugin.py │ │ ├── tools.py │ │ └── widgets.enaml │ ├── packages │ │ ├── __init__.py │ │ ├── manifest.enaml │ │ └── plugin.py │ ├── preferences │ │ ├── __init__.py │ │ ├── api.py │ │ ├── manifest.enaml │ │ ├── plugin.py │ │ └── preferences.py │ └── states │ │ ├── __init__.py │ │ ├── api.py │ │ ├── manifest.enaml │ │ ├── plugin.py │ │ └── state.py ├── instruments │ ├── __init__.py │ ├── api.py │ ├── connections │ │ ├── __init__.py │ │ ├── base_connection.py │ │ ├── dll_connection.enaml │ │ └── visa_connections.enaml │ ├── drivers │ │ ├── __init__.py │ │ └── driver_decl.py │ ├── infos.py │ ├── manifest.enaml │ ├── manufacturer_aliases.py │ ├── plugin.py │ ├── settings │ │ ├── __init__.py │ │ └── base_settings.py │ ├── starters │ │ ├── __init__.py │ │ ├── base_starter.py │ │ └── exceptions.py │ ├── user.py │ └── widgets │ │ ├── __init__.py │ │ ├── browsing.enaml │ │ ├── instrument_selection.enaml │ │ ├── profile_edition.enaml │ │ └── profile_selection.enaml ├── measurement │ ├── __init__.py │ ├── base_tool.py │ ├── container.py │ ├── editors │ │ ├── __init__.py │ │ ├── api.py │ │ ├── base_editor.py │ │ ├── database_access_editor │ │ │ ├── __init__.py │ │ │ ├── editor.enaml │ │ │ └── editor_model.py │ │ ├── execution_editor │ │ │ ├── __init__.py │ │ │ ├── editor.enaml │ │ │ └── editor_model.py │ │ └── standard_editor.enaml │ ├── engines │ │ ├── __init__.py │ │ ├── api.py │ │ ├── base_engine.py │ │ ├── process_engine │ │ │ ├── __init__.py │ │ │ ├── engine.py │ │ │ ├── engine_declaration.enaml │ │ │ └── subprocess.py │ │ ├── selection.enaml │ │ └── utils.py │ ├── hooks │ │ ├── __init__.py │ │ ├── api.py │ │ ├── base_hooks.py │ │ └── internal_checks.py │ ├── manifest.enaml │ ├── measurement.py │ ├── monitors │ │ ├── __init__.py │ │ ├── api.py │ │ ├── base_monitor.py │ │ └── text_monitor │ │ │ ├── __init__.py │ │ │ ├── api.py │ │ │ ├── custom_entry_edition.enaml │ │ │ ├── entry.py │ │ │ ├── manifest.enaml │ │ │ ├── monitor.py │ │ │ ├── monitor_views.enaml │ │ │ ├── plugin.py │ │ │ └── rules │ │ │ ├── __init__.py │ │ │ ├── base.py │ │ │ ├── base_views.enaml │ │ │ ├── edition_views.enaml │ │ │ ├── infos.py │ │ │ ├── std_rules.py │ │ │ └── std_views.enaml │ ├── plugin.py │ ├── processor.py │ └── workspace │ │ ├── __init__.py │ │ ├── checks_display.enaml │ │ ├── content.enaml │ │ ├── manifest.enaml │ │ ├── measurement_edition.enaml │ │ ├── measurement_execution.enaml │ │ ├── measurement_tracking.py │ │ ├── monitors_window.enaml │ │ ├── tools_edition.enaml │ │ └── workspace.py ├── tasks │ ├── __init__.py │ ├── api.py │ ├── configs │ │ ├── __init__.py │ │ ├── base_config_views.enaml │ │ ├── base_configs.py │ │ ├── loop_config.py │ │ └── loop_config_view.enaml │ ├── declarations.py │ ├── filters.py │ ├── infos.py │ ├── manifest.enaml │ ├── plugin.py │ ├── tasknames.txt │ ├── tasks │ │ ├── __init__.py │ │ ├── base_tasks.py │ │ ├── base_views.enaml │ │ ├── database.py │ │ ├── decorators.py │ │ ├── instr_task.py │ │ ├── instr_view.enaml │ │ ├── logic │ │ │ ├── __init__.py │ │ │ ├── conditional_task.py │ │ │ ├── declarations.enaml │ │ │ ├── loop_exceptions.py │ │ │ ├── loop_exceptions_tasks.py │ │ │ ├── loop_geomspace_interface.py │ │ │ ├── loop_iterable_interface.py │ │ │ ├── loop_linspace_interface.py │ │ │ ├── loop_task.py │ │ │ ├── views │ │ │ │ ├── __init__.py │ │ │ │ ├── conditional_view.enaml │ │ │ │ ├── loop_exceptions_views.enaml │ │ │ │ ├── loop_geomspace_view.enaml │ │ │ │ ├── loop_iterable_view.enaml │ │ │ │ ├── loop_linspace_view.enaml │ │ │ │ ├── loop_view.enaml │ │ │ │ └── while_view.enaml │ │ │ └── while_task.py │ │ ├── shared_resources.py │ │ ├── string_evaluation.py │ │ ├── task_editor.enaml │ │ ├── task_interface.py │ │ ├── util │ │ │ ├── __init__.py │ │ │ ├── declarations.enaml │ │ │ ├── definition_task.py │ │ │ ├── formula_task.py │ │ │ ├── log_task.py │ │ │ ├── sleep_task.py │ │ │ └── views │ │ │ │ ├── __init__.py │ │ │ │ ├── definition_view.enaml │ │ │ │ ├── formula_view.enaml │ │ │ │ ├── log_view.enaml │ │ │ │ └── sleep_view.enaml │ │ └── validators.py │ ├── utils │ │ ├── __init__.py │ │ ├── building.py │ │ ├── saving.py │ │ └── templates.py │ └── widgets │ │ ├── __init__.py │ │ ├── browsing.enaml │ │ ├── building.enaml │ │ └── saving.enaml ├── testing │ ├── __init__.py │ ├── broken_enaml.enaml │ ├── broken_module.py │ ├── fixtures.py │ ├── instruments │ │ ├── __init__.py │ │ ├── fixtures.py │ │ └── util.py │ ├── measurement │ │ ├── __init__.py │ │ ├── contributions.enaml │ │ ├── dummies.py │ │ ├── fixtures.py │ │ ├── monitors │ │ │ ├── __init__.py │ │ │ └── text_monitor │ │ │ │ ├── __init__.py │ │ │ │ └── fixtures.py │ │ └── workspace │ │ │ ├── __init__.py │ │ │ └── fixtures.py │ ├── tasks │ │ ├── __init__.py │ │ ├── fixtures.py │ │ └── util.py │ ├── util.py │ └── windows.enaml └── utils │ ├── __init__.py │ ├── atom_util.py │ ├── configobj_ops.py │ ├── container_change.py │ ├── declarator.py │ ├── enaml_destroy_hook.py │ ├── flags.py │ ├── mapping_utils.py │ ├── plugin_tools.py │ ├── priority_heap.py │ ├── traceback.py │ ├── transformers.py │ ├── watchdog.py │ └── widgets │ ├── __init__.py │ ├── dict_editor.enaml │ ├── dict_tree_view.enaml │ ├── list_editor.enaml │ ├── qt_autoscroll_html.py │ ├── qt_clipboard.py │ ├── qt_completers.py │ ├── qt_list_str_widget.py │ ├── qt_tree_menu.enaml │ ├── qt_tree_widget.py │ └── tree_nodes.py ├── pyproject.toml ├── readthedocs.yml ├── release_guide.rst ├── scripts └── get_physics_laureates.py ├── setup.cfg ├── setup.py ├── test_requirements.txt └── tests ├── app ├── __init__.py ├── app_helpers.enaml ├── dependencies │ ├── __init__.py │ ├── dependencies_utils.enaml │ └── test_plugin.py ├── errors │ ├── __init__.py │ └── test_plugin.py ├── icons │ ├── __init__.py │ ├── conftest.py │ ├── contributions.enaml │ ├── test_api.py │ ├── test_icon_theme.py │ └── test_plugin.py ├── log │ ├── __init__.py │ ├── test_plugin.py │ └── test_tools.py ├── packages │ ├── __init__.py │ ├── packages_utils.enaml │ └── test_plugin.py ├── preferences │ ├── __init__.py │ ├── pref_utils.enaml │ └── test_prefs.py ├── states │ ├── __init__.py │ ├── states_utils.enaml │ └── test_states.py ├── test_api.py ├── test_app_plugin.py └── test_main_window.py ├── conftest.py ├── instruments ├── __init__.py ├── conftest.py ├── connections │ ├── __init__.py │ └── test_visa_connections.py ├── contributors.enaml ├── false_driver.py ├── false_profile.instr.ini ├── fp.instr.ini ├── settings │ ├── __init__.py │ └── test_base_settings.py ├── test_api.py ├── test_driver_decl.py ├── test_infos.py ├── test_manifest.py ├── test_plugin.py └── widgets │ ├── __init__.py │ ├── test_browsing.py │ ├── test_instrument_selection.py │ ├── test_profile_edition.py │ └── test_profile_selection.py ├── measurement ├── __init__.py ├── conftest.py ├── editors │ ├── __init__.py │ ├── test_database_editor.py │ └── test_execution_editor.py ├── engines │ ├── __init__.py │ ├── test_process_engine.py │ └── test_utils.py ├── hooks │ ├── __init__.py │ └── test_internal_checks.py ├── monitors │ ├── __init__.py │ └── text_monitor │ │ ├── __init__.py │ │ ├── conftest.py │ │ ├── contributed_rules.enaml │ │ ├── rules │ │ ├── __init__.py │ │ ├── test_base.py │ │ ├── test_edition.py │ │ └── test_std.py │ │ ├── test_api.py │ │ ├── test_custom.py │ │ ├── test_entry.py │ │ ├── test_manifest.py │ │ ├── test_monitor.py │ │ └── test_plugin.py ├── test_base_tool.py ├── test_container.py ├── test_measurement.py ├── test_plugin.py ├── test_processor.py └── workspace │ ├── __init__.py │ ├── test_checks_display.py │ ├── test_commands.py │ ├── test_content.py │ ├── test_measurement_edition.py │ ├── test_measurement_execution.py │ ├── test_measurement_tracking.py │ ├── test_tools_edition.py │ └── test_workspace.py ├── tasks ├── __init__.py ├── configs │ ├── __init__.py │ ├── test_base_configs.py │ ├── test_loop_config.py │ └── test_template.task.ini ├── conftest.py ├── tasks │ ├── __init__.py │ ├── false_driver.py │ ├── fp.instr.ini │ ├── instrument_contributor.enaml │ ├── logic │ │ ├── __init__.py │ │ ├── test_conditional_task.py │ │ ├── test_loop_exceptions_tasks.py │ │ ├── test_loop_task.py │ │ └── test_while_task.py │ ├── test_base_tasks.py │ ├── test_base_views.py │ ├── test_database.py │ ├── test_execution.py │ ├── test_instr_task.py │ ├── test_instr_view.py │ ├── test_shared_resources.py │ ├── test_string_ops.py │ ├── test_task_interfaces.py │ ├── test_validators.py │ └── util │ │ ├── __init__.py │ │ ├── test_definition_task.py │ │ ├── test_formula_task.py │ │ ├── test_log_task.py │ │ └── test_sleep_task.py ├── test_api.py ├── test_declarations.py ├── test_dependencies.py ├── test_filters.py ├── test_infos.py ├── test_plugin.py ├── utils │ ├── __init__.py │ ├── test_building.py │ ├── test_saving.py │ └── test_templates.py └── widgets │ ├── __init__.py │ ├── test_browsing.py │ ├── test_building.py │ └── test_saving.py ├── test___main__.py └── utils ├── __init__.py ├── config_test.ini ├── plugin_tools_testing.enaml ├── test_atom_util.py ├── test_configobj_ops.py ├── test_container_change.py ├── test_declarator.py ├── test_enaml_destroy_hook.py ├── test_flags.py ├── test_mapping_utils.py ├── test_plugin_tools.py ├── test_priority_heap.py ├── test_transformers.py ├── test_watchdog.py └── widgets ├── __init__.py ├── test_autoscroll_html.enaml ├── test_completers.enaml ├── test_dict_editor.enaml ├── test_dict_tree_view.enaml ├── test_list_str_widget.enaml ├── test_tree_widget.enaml └── test_widgets.py /.checkignore: -------------------------------------------------------------------------------- 1 | # Ignore folder content 2 | tests/* 3 | docs/* -------------------------------------------------------------------------------- /.codecov.yml: -------------------------------------------------------------------------------- 1 | comment: 2 | layout: header, changes, diff 3 | coverage: 4 | status: 5 | patch: false 6 | fixes: 7 | - "~/anaconda/envs/travisci/Lib/site-packages/::" -------------------------------------------------------------------------------- /.coveragerc: -------------------------------------------------------------------------------- 1 | [run] 2 | branch = True 3 | source = exopy 4 | omit = 5 | */exopy/testing/* 6 | *exopy/version.py 7 | */exopy/utils/widgets/* 8 | */__init__.py 9 | plugins = 10 | enaml_coverage_plugin 11 | 12 | [report] 13 | # Regexes for lines to exclude from consideration 14 | exclude_lines = 15 | # Have to re-enable the standard pragma 16 | pragma: no cover 17 | 18 | # Don't complain if tests don't hit defensive assertion code: 19 | raise NotImplementedError 20 | pass 21 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | * text=auto 3 | 4 | # Explicitly declare text files you want to always be normalized and converted 5 | # to native line endings on checkout. 6 | *.py text 7 | *.enaml text 8 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [MatthieuDartiailh] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: Continuous Integration 2 | on: 3 | schedule: 4 | - cron: '0 0 * * 2' 5 | push: 6 | branches: 7 | - main 8 | pull_request: 9 | branches: 10 | - main 11 | paths: 12 | - .github/workflows/ci.yml 13 | - "exopy/**" 14 | - "tests/**" 15 | - setup.py 16 | - pyproject.toml 17 | 18 | jobs: 19 | tests: 20 | name: Unit tests 21 | runs-on: windows-latest 22 | strategy: 23 | matrix: 24 | python-version: ['3.8', '3.9', '3.10'] 25 | fail-fast: false 26 | steps: 27 | - name: Checkout branch 28 | uses: actions/checkout@v3 29 | - name: Get history and tags for SCM versioning to work 30 | run: | 31 | git fetch --prune --unshallow 32 | git fetch --depth=1 origin +refs/tags/*:refs/tags/* 33 | - name: Set up Python ${{ matrix.python-version }} 34 | uses: actions/setup-python@v4 35 | with: 36 | python-version: ${{ matrix.python-version }} 37 | - name: Install dependencies 38 | run: | 39 | python -m pip install --upgrade pip 40 | - name: Install project 41 | run: | 42 | pip install -e . 43 | - name: Install test requirements 44 | run: | 45 | python -m pip install -r test_requirements.txt 46 | - name: Run tests 47 | timeout-minutes: 20 48 | run: python -X dev -m pytest tests -v -W error --cov --cov-report xml 49 | - name: Upload coverage to Codecov 50 | uses: codecov/codecov-action@v3 51 | if: matrix.os != 'windows-latest' 52 | with: 53 | token: ${{ secrets.CODECOV_TOKEN }} 54 | flags: unittests 55 | name: codecov-umbrella 56 | fail_ci_if_error: true 57 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | __enamlcache__/ 4 | *.py[cod] 5 | *$py.class 6 | 7 | # Preferences 8 | *app_directory.ini 9 | 10 | # C extensions 11 | *.so 12 | 13 | # Distribution / packaging 14 | .Python 15 | env/ 16 | build/ 17 | develop-eggs/ 18 | dist/ 19 | downloads/ 20 | eggs/ 21 | .eggs/ 22 | lib/ 23 | lib64/ 24 | parts/ 25 | sdist/ 26 | var/ 27 | *.egg-info/ 28 | .installed.cfg 29 | *.egg 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .coverage.* 40 | .cache 41 | nosetests.xml 42 | coverage.xml 43 | *,cover 44 | 45 | # Sphinx documentation 46 | docs/_build/ 47 | docs/build 48 | 49 | #Editors 50 | *.idea 51 | *.idea 52 | .spyderproject 53 | .spyderworkspace 54 | .spyproject 55 | .mypy_cache/ 56 | .vscode/ -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | Exopy is developed and maintained by Matthieu C. Dartiailh. 2 | 3 | Other contributors, listed alphabetically, are: 4 | 5 | (If you think that your name belongs here, please let the maintainer know) -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015-2018-2018, Exopy authors 2 | All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions are met: 6 | 7 | * Redistributions of source code must retain the above copyright notice, this 8 | list of conditions and the following disclaimer. 9 | 10 | * Redistributions in binary form must reproduce the above copyright notice, 11 | this list of conditions and the following disclaimer in the documentation 12 | and/or other materials provided with the distribution. 13 | 14 | * Neither the name of Exopy nor the names of its 15 | contributors may be used to endorse or promote products derived from 16 | this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 21 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 22 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 25 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 26 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /docs/environment.yml: -------------------------------------------------------------------------------- 1 | channels: 2 | - exopy 3 | - defaults 4 | 5 | dependencies: 6 | - alabaster 7 | - babel 8 | - cairo 9 | - configobj 10 | - docutils 11 | - argh 12 | - atom 13 | - enaml 14 | - enaml-pygments 15 | - kiwisolver 16 | - pathtools 17 | - watchdog 18 | - fontconfig 19 | - freetype 20 | - glib 21 | - harfbuzz 22 | - imagesize 23 | - jinja2 24 | - libffi 25 | - libpng 26 | - libxml2 27 | - markupsafe 28 | - mkl 29 | - numpy 30 | - openssl 31 | - pango 32 | - pip 33 | - pixman 34 | - ply 35 | - py 36 | - pygments 37 | - pyqt 38 | - pytest 39 | - python=3.6 40 | - pytz 41 | - pyyaml 42 | - qt 43 | - readline 44 | - setuptools 45 | - sip 46 | - six 47 | - snowballstemmer 48 | - sphinx 49 | - sphinx_rtd_theme 50 | - sqlite 51 | - tk 52 | - wheel 53 | - xz 54 | - yaml 55 | - zlib 56 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/app_extensions.rst: -------------------------------------------------------------------------------- 1 | exopy.app.app_extensions module 2 | ============================== 3 | 4 | .. automodule:: exopy.app.app_extensions 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/app_manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.app_manifest module 2 | ============================ 3 | 4 | .. automodule:: exopy.app.app_manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/app_plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.app_plugin module 2 | ========================== 3 | 4 | .. automodule:: exopy.app.app_plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/dependencies/dependencies.rst: -------------------------------------------------------------------------------- 1 | exopy.app.dependencies.dependencies module 2 | ========================================= 3 | 4 | .. automodule:: exopy.app.dependencies.dependencies 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/dependencies/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.dependencies package 2 | ============================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | dependencies 10 | manifest 11 | plugin 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/dependencies/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.dependencies.manifest module 2 | ===================================== 3 | 4 | .. automodule:: exopy.app.dependencies.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/dependencies/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.dependencies.plugin module 2 | =================================== 3 | 4 | .. automodule:: exopy.app.dependencies.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/errors/errors.rst: -------------------------------------------------------------------------------- 1 | exopy.app.errors.errors module 2 | ============================= 3 | 4 | .. automodule:: exopy.app.errors.errors 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/errors/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.errors package 2 | ======================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | errors 10 | manifest 11 | plugin 12 | widgets 13 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/errors/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.errors.manifest module 2 | =============================== 3 | 4 | .. automodule:: exopy.app.errors.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/errors/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.errors.plugin module 2 | ============================= 3 | 4 | .. automodule:: exopy.app.errors.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/errors/widgets.rst: -------------------------------------------------------------------------------- 1 | exopy.app.errors.widgets module 2 | ============================== 3 | 4 | .. automodule:: exopy.app.errors.widgets 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app package 2 | ================ 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | dependencies 11 | errors 12 | log 13 | packages 14 | preferences 15 | states 16 | 17 | Submodules 18 | ---------- 19 | 20 | .. toctree:: 21 | 22 | app_extensions 23 | app_manifest 24 | app_plugin 25 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/log/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.log package 2 | ==================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | manifest 10 | plugin 11 | tools 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/log/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.log.manifest module 2 | ============================ 3 | 4 | .. automodule:: exopy.app.log.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/log/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.log.plugin module 2 | ========================== 3 | 4 | .. automodule:: exopy.app.log.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/log/tools.rst: -------------------------------------------------------------------------------- 1 | exopy.app.log.tools module 2 | ========================= 3 | 4 | .. automodule:: exopy.app.log.tools 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/packages/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.packages package 2 | ========================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | manifest 10 | plugin 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/packages/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.packages.manifest module 2 | ================================= 3 | 4 | .. automodule:: exopy.app.packages.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/packages/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.packages.plugin module 2 | =============================== 3 | 4 | .. automodule:: exopy.app.packages.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/preferences/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.preferences package 2 | ============================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | manifest 10 | plugin 11 | preferences 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/preferences/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.preferences.manifest module 2 | ==================================== 3 | 4 | .. automodule:: exopy.app.preferences.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/preferences/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.preferences.plugin module 2 | ================================== 3 | 4 | .. automodule:: exopy.app.preferences.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/preferences/preferences.rst: -------------------------------------------------------------------------------- 1 | exopy.app.preferences.preferences module 2 | ======================================= 3 | 4 | .. automodule:: exopy.app.preferences.preferences 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/states/index.rst: -------------------------------------------------------------------------------- 1 | exopy.app.states package 2 | ======================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | manifest 11 | plugin 12 | state 13 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/states/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.app.states.manifest module 2 | =============================== 3 | 4 | .. automodule:: exopy.app.states.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/states/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.app.states.plugin module 2 | ============================= 3 | 4 | .. automodule:: exopy.app.states.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/app/states/state.rst: -------------------------------------------------------------------------------- 1 | exopy.app.states.state module 2 | ============================ 3 | 4 | .. automodule:: exopy.app.states.state 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/index.rst: -------------------------------------------------------------------------------- 1 | API Documentation 2 | ================= 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | app 11 | instruments 12 | measurement 13 | tasks 14 | testing 15 | utils 16 | 17 | Submodules 18 | ---------- 19 | 20 | .. toctree:: 21 | 22 | version 23 | 24 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/connections/base_connection.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.connections.base_connection module 2 | =================================================== 3 | 4 | .. automodule:: exopy.instruments.connections.base_connection 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/connections/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.connections package 2 | ==================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base_connection 10 | visa_connections 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/connections/visa_connections.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.connections.visa_connections module 2 | ==================================================== 3 | 4 | .. automodule:: exopy.instruments.connections.visa_connections 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/drivers/driver_decl.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.drivers.driver_decl module 2 | =========================================== 3 | 4 | .. automodule:: exopy.instruments.drivers.driver_decl 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/drivers/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.drivers package 2 | ================================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | driver_decl 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments package 2 | ======================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | connections 11 | drivers 12 | settings 13 | starters 14 | widgets 15 | 16 | Submodules 17 | ---------- 18 | 19 | .. toctree:: 20 | 21 | infos 22 | manifest 23 | manufacturer_aliases 24 | plugin 25 | user 26 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/infos.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.infos module 2 | ============================= 3 | 4 | .. automodule:: exopy.instruments.infos 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.manifest module 2 | ================================ 3 | 4 | .. automodule:: exopy.instruments.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/manufacturer_aliases.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.manufacturer_aliases module 2 | ============================================ 3 | 4 | .. automodule:: exopy.instruments.manufacturer_aliases 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.plugin module 2 | ============================== 3 | 4 | .. automodule:: exopy.instruments.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/settings/base_settings.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.settings.base_settings module 2 | ============================================== 3 | 4 | .. automodule:: exopy.instruments.settings.base_settings 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/settings/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.settings package 2 | ================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base_settings 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/starters/base_starter.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.starters.base_starter module 2 | ============================================= 3 | 4 | .. automodule:: exopy.instruments.starters.base_starter 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/starters/exceptions.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.starters.exceptions module 2 | =========================================== 3 | 4 | .. automodule:: exopy.instruments.starters.exceptions 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/starters/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.starters package 2 | ================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base_starter 10 | exceptions 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/user.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.user module 2 | ============================ 3 | 4 | .. automodule:: exopy.instruments.user 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/widgets/browsing.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.widgets.browsing module 2 | ======================================== 3 | 4 | .. automodule:: exopy.instruments.widgets.browsing 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/widgets/index.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.widgets package 2 | ================================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | browsing 10 | instrument_selection 11 | profile_edition 12 | profile_selection 13 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/widgets/instrument_selection.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.widgets.instrument_selection module 2 | ==================================================== 3 | 4 | .. automodule:: exopy.instruments.widgets.instrument_selection 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/widgets/profile_edition.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.widgets.profile_edition module 2 | =============================================== 3 | 4 | .. automodule:: exopy.instruments.widgets.profile_edition 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/instruments/widgets/profile_selection.rst: -------------------------------------------------------------------------------- 1 | exopy.instruments.widgets.profile_selection module 2 | ================================================= 3 | 4 | .. automodule:: exopy.instruments.widgets.profile_selection 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/base_tool.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.base_tool module 2 | ============================= 3 | 4 | .. automodule:: exopy.measurement.base_tool 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/container.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.container module 2 | ============================= 3 | 4 | .. automodule:: exopy.measurement.container 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/base_editor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.base_editor module 2 | ======================================= 3 | 4 | .. automodule:: exopy.measurement.editors.base_editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/database_access_editor/editor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.database_access_editor.editor module 2 | ========================================================= 3 | 4 | .. automodule:: exopy.measurement.editors.database_access_editor.editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/database_access_editor/editor_model.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.database_access_editor.editor_model module 2 | =============================================================== 3 | 4 | .. automodule:: exopy.measurement.editors.database_access_editor.editor_model 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/database_access_editor/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.database_access_editor package 2 | =================================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | editor 10 | editor_model 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/execution_editor/editor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.execution_editor.editor module 2 | =================================================== 3 | 4 | .. automodule:: exopy.measurement.editors.execution_editor.editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/execution_editor/editor_model.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.execution_editor.editor_model module 2 | ========================================================= 3 | 4 | .. automodule:: exopy.measurement.editors.execution_editor.editor_model 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/execution_editor/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.execution_editor package 2 | ============================================= 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | editor 10 | editor_model 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors package 2 | ============================ 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | database_access_editor 10 | execution_editor 11 | 12 | Submodules 13 | ---------- 14 | 15 | .. toctree:: 16 | 17 | base_editor 18 | standard_editor 19 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/editors/standard_editor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.editors.standard_editor module 2 | =========================================== 3 | 4 | .. automodule:: exopy.measurement.editors.standard_editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/base_engine.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.base_engine module 2 | ======================================= 3 | 4 | .. automodule:: exopy.measurement.engines.base_engine 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines package 2 | ============================ 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | process_engine 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | base_engine 17 | selection 18 | utils 19 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/process_engine/engine.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.process_engine.engine module 2 | ================================================= 3 | 4 | .. automodule:: exopy.measurement.engines.process_engine.engine 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/process_engine/engine_declaration.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.process_engine.engine_declaration module 2 | ============================================================= 3 | 4 | .. automodule:: exopy.measurement.engines.process_engine.engine_declaration 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/process_engine/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.process_engine package 2 | =========================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | engine 10 | engine_declaration 11 | subprocess 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/process_engine/subprocess.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.process_engine.subprocess module 2 | ===================================================== 3 | 4 | .. automodule:: exopy.measurement.engines.process_engine.subprocess 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/selection.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.selection module 2 | ===================================== 3 | 4 | .. automodule:: exopy.measurement.engines.selection 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/engines/utils.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.engines.utils module 2 | ================================= 3 | 4 | .. automodule:: exopy.measurement.engines.utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/hooks/base_hooks.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.hooks.base_hooks module 2 | ==================================== 3 | 4 | .. automodule:: exopy.measurement.hooks.base_hooks 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/hooks/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.hooks package 2 | ========================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base_hooks 10 | internal_checks 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/hooks/internal_checks.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.hooks.internal_checks module 2 | ========================================= 3 | 4 | .. automodule:: exopy.measurement.hooks.internal_checks 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement package 2 | ==================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | editors 10 | engines 11 | hooks 12 | monitors 13 | workspace 14 | 15 | Submodules 16 | ---------- 17 | 18 | .. toctree:: 19 | 20 | base_tool 21 | container 22 | manifest 23 | measurement 24 | plugin 25 | processor 26 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.manifest module 2 | ============================ 3 | 4 | .. automodule:: exopy.measurement.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/measure.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.measurement module 2 | =========================== 3 | 4 | .. automodule:: exopy.measurement.measurement 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/base_monitor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.base_monitor module 2 | ========================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.base_monitor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors package 2 | ============================= 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | text_monitor 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | base_monitor 17 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/custom_entry_edition.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.custom_entry_edition module 2 | ============================================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.custom_entry_edition 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/entry.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.entry module 2 | =============================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.entry 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor package 2 | ========================================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | rules 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | custom_entry_edition 17 | entry 18 | manifest 19 | monitor 20 | monitor_views 21 | plugin 22 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.manifest module 2 | ================================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/monitor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.monitor module 2 | ================================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.monitor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/monitor_views.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.monitor_views module 2 | ======================================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.monitor_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.plugin module 2 | ================================================ 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/base.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.base module 2 | ==================================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.base 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/base_views.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.base_views module 2 | ========================================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.base_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/edition_views.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.edition_views module 2 | ============================================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.edition_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules package 2 | ================================================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base 10 | base_views 11 | edition_views 12 | infos 13 | std_rules 14 | std_views 15 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/infos.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.infos module 2 | ===================================================== 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.infos 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/std_rules.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.std_rules module 2 | ========================================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.std_rules 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/monitors/text_monitor/rules/std_views.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.monitors.text_monitor.rules.std_views module 2 | ========================================================= 3 | 4 | .. automodule:: exopy.measurement.monitors.text_monitor.rules.std_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.plugin module 2 | ========================== 3 | 4 | .. automodule:: exopy.measurement.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/processor.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.processor module 2 | ============================= 3 | 4 | .. automodule:: exopy.measurement.processor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/checks_display.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.checks_display module 2 | ============================================ 3 | 4 | .. automodule:: exopy.measurement.workspace.checks_display 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/content.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.content module 2 | ===================================== 3 | 4 | .. automodule:: exopy.measurement.workspace.content 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/index.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace package 2 | ============================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | checks_display 10 | content 11 | manifest 12 | measurement_edition 13 | measurement_execution 14 | measurement_tracking 15 | monitors_window 16 | tools_edition 17 | workspace 18 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.manifest module 2 | ====================================== 3 | 4 | .. automodule:: exopy.measurement.workspace.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/measure_edition.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.measurement_edition module 2 | ============================================= 3 | 4 | .. automodule:: exopy.measurement.workspace.measurement_edition 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/measure_execution.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.measurement_execution module 2 | =============================================== 3 | 4 | .. automodule:: exopy.measurement.workspace.measurement_execution 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/measure_tracking.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.measurement_tracking module 2 | ============================================== 3 | 4 | .. automodule:: exopy.measurement.workspace.measurement_tracking 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/monitors_window.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.monitors_window module 2 | ============================================= 3 | 4 | .. automodule:: exopy.measurement.workspace.monitors_window 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/tools_edition.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.tools_edition module 2 | =========================================== 3 | 4 | .. automodule:: exopy.measurement.workspace.tools_edition 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/measure/workspace/workspace.rst: -------------------------------------------------------------------------------- 1 | exopy.measurement.workspace.workspace module 2 | ======================================= 3 | 4 | .. automodule:: exopy.measurement.workspace.workspace 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/configs/base_config_views.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.configs.base_config_views module 2 | =========================================== 3 | 4 | .. automodule:: exopy.tasks.configs.base_config_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/configs/base_configs.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.configs.base_configs module 2 | ====================================== 3 | 4 | .. automodule:: exopy.tasks.configs.base_configs 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/configs/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.configs package 2 | ========================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | base_config_views 10 | base_configs 11 | loop_config 12 | loop_config_view 13 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/configs/loop_config.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.configs.loop_config module 2 | ===================================== 3 | 4 | .. automodule:: exopy.tasks.configs.loop_config 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/configs/loop_config_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.configs.loop_config_view module 2 | ========================================== 3 | 4 | .. automodule:: exopy.tasks.configs.loop_config_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/declarations.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.declarations module 2 | ============================== 3 | 4 | .. automodule:: exopy.tasks.declarations 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/filters.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.filters module 2 | ========================= 3 | 4 | .. automodule:: exopy.tasks.filters 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks package 2 | ================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | configs 11 | tasks 12 | utils 13 | widgets 14 | 15 | Submodules 16 | ---------- 17 | 18 | .. toctree:: 19 | 20 | declarations 21 | filters 22 | infos 23 | manifest 24 | plugin 25 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/infos.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.infos module 2 | ======================= 3 | 4 | .. automodule:: exopy.tasks.infos 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/manifest.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.manifest module 2 | ========================== 3 | 4 | .. automodule:: exopy.tasks.manifest 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/plugin.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.plugin module 2 | ======================== 3 | 4 | .. automodule:: exopy.tasks.plugin 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/base_tasks.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.base_tasks module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.base_tasks 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/base_views.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.base_views module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.base_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/database.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.database module 2 | ================================ 3 | 4 | .. automodule:: exopy.tasks.tasks.database 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/decorators.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.decorators module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.decorators 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks package 2 | ======================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | logic 11 | util 12 | 13 | Submodules 14 | ---------- 15 | 16 | .. toctree:: 17 | 18 | base_tasks 19 | base_views 20 | database 21 | decorators 22 | instr_task 23 | instr_view 24 | shared_resources 25 | string_evaluation 26 | task_editor 27 | task_interface 28 | validators 29 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/instr_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.instr_task module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.instr_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/instr_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.instr_view module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.instr_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/conditional_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.conditional_task module 2 | ============================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.conditional_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/declarations.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.declarations module 2 | ========================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.declarations 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic package 2 | ============================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | views 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | conditional_task 17 | declarations 18 | loop_exceptions 19 | loop_exceptions_tasks 20 | loop_iterable_interface 21 | loop_linspace_interface 22 | loop_task 23 | while_task 24 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/loop_exceptions.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.loop_exceptions module 2 | ============================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.loop_exceptions 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/loop_exceptions_tasks.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.loop_exceptions_tasks module 2 | =================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.loop_exceptions_tasks 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/loop_iterable_interface.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.loop_iterable_interface module 2 | ===================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.loop_iterable_interface 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/loop_linspace_interface.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.loop_linspace_interface module 2 | ===================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.loop_linspace_interface 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/loop_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.loop_task module 2 | ======================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.loop_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/conditional_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.conditional_view module 2 | ==================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.conditional_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views package 2 | ==================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | conditional_view 10 | loop_exceptions_views 11 | loop_iterable_view 12 | loop_linspace_view 13 | loop_view 14 | while_view 15 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/loop_exceptions_views.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.loop_exceptions_views module 2 | ========================================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.loop_exceptions_views 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/loop_iterable_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.loop_iterable_view module 2 | ====================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.loop_iterable_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/loop_linspace_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.loop_linspace_view module 2 | ====================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.loop_linspace_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/loop_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.loop_view module 2 | ============================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.loop_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/views/while_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.views.while_view module 2 | ============================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.views.while_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/logic/while_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.logic.while_task module 2 | ======================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.logic.while_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/shared_resources.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.shared_resources module 2 | ======================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.shared_resources 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/string_evaluation.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.string_evaluation module 2 | ========================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.string_evaluation 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/task_editor.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.task_editor module 2 | =================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.task_editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/task_interface.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.task_interface module 2 | ====================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.task_interface 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/declarations.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.declarations module 2 | ========================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.util.declarations 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/definition_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.definition_task module 2 | ============================================ 3 | 4 | .. automodule:: exopy.tasks.tasks.util.definition_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/formula_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.formula_task module 2 | ========================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.util.formula_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util package 2 | ============================= 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | views 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | declarations 17 | definition_task 18 | formula_task 19 | log_task 20 | sleep_task 21 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/log_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.log_task module 2 | ===================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.util.log_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/sleep_task.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.sleep_task module 2 | ======================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.util.sleep_task 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/views/definition_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.views.definition_view module 2 | ================================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.util.views.definition_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/views/formula_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.views.formula_view module 2 | =============================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.util.views.formula_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/views/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.views package 2 | =================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | definition_view 10 | formula_view 11 | log_view 12 | sleep_view 13 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/views/log_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.views.log_view module 2 | =========================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.util.views.log_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/util/views/sleep_view.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.util.views.sleep_view module 2 | ============================================= 3 | 4 | .. automodule:: exopy.tasks.tasks.util.views.sleep_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/tasks/validators.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.tasks.validators module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.tasks.validators 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/utils/building.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.utils.building module 2 | ================================ 3 | 4 | .. automodule:: exopy.tasks.utils.building 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/utils/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.utils package 2 | ======================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | building 10 | saving 11 | templates 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/utils/saving.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.utils.saving module 2 | ============================== 3 | 4 | .. automodule:: exopy.tasks.utils.saving 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/utils/templates.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.utils.templates module 2 | ================================= 3 | 4 | .. automodule:: exopy.tasks.utils.templates 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/widgets/browsing.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.widgets.browsing module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.widgets.browsing 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/widgets/building.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.widgets.building module 2 | ================================== 3 | 4 | .. automodule:: exopy.tasks.widgets.building 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/widgets/index.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.widgets package 2 | ========================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | browsing 10 | building 11 | saving 12 | -------------------------------------------------------------------------------- /docs/source/api_docs/tasks/widgets/saving.rst: -------------------------------------------------------------------------------- 1 | exopy.tasks.widgets.saving module 2 | ================================ 3 | 4 | .. automodule:: exopy.tasks.widgets.saving 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.fixtures module 2 | ============================ 3 | 4 | .. automodule:: exopy.testing.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing package 2 | ==================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | instruments 11 | measurement 12 | tasks 13 | 14 | Submodules 15 | ---------- 16 | 17 | .. toctree:: 18 | 19 | fixtures 20 | util 21 | windows 22 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/instruments/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.instruments.fixtures module 2 | ======================================== 3 | 4 | .. automodule:: exopy.testing.instruments.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/instruments/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.instruments package 2 | ================================ 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | fixtures 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/contributions.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.contributions module 2 | ========================================= 3 | 4 | .. automodule:: exopy.testing.measurement.contributions 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/dummies.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.dummies module 2 | =================================== 3 | 4 | .. automodule:: exopy.testing.measurement.dummies 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.fixtures module 2 | ==================================== 3 | 4 | .. automodule:: exopy.testing.measurement.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement package 2 | ============================ 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | :maxdepth: 2 9 | 10 | monitors 11 | workspace 12 | 13 | Submodules 14 | ---------- 15 | 16 | .. toctree:: 17 | 18 | contributions 19 | dummies 20 | fixtures 21 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/monitors/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.monitors package 2 | ===================================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | text_monitor 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/monitors/text_monitor/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.monitors.text_monitor.fixtures module 2 | ========================================================== 3 | 4 | .. automodule:: exopy.testing.measurement.monitors.text_monitor.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/monitors/text_monitor/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.monitors.text_monitor package 2 | ================================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | fixtures 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/workspace/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.workspace.fixtures module 2 | ============================================== 3 | 4 | .. automodule:: exopy.testing.measurement.workspace.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/measure/workspace/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.measurement.workspace package 2 | ====================================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | fixtures 10 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/tasks/fixtures.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.tasks.fixtures module 2 | ================================== 3 | 4 | .. automodule:: exopy.testing.tasks.fixtures 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/tasks/index.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.tasks package 2 | ========================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | fixtures 10 | util 11 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/tasks/util.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.tasks.util module 2 | ============================== 3 | 4 | .. automodule:: exopy.testing.tasks.util 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/util.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.util module 2 | ======================== 3 | 4 | .. automodule:: exopy.testing.util 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/testing/windows.rst: -------------------------------------------------------------------------------- 1 | exopy.testing.windows module 2 | =========================== 3 | 4 | .. automodule:: exopy.testing.windows 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/atom_util.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.atom_util module 2 | =========================== 3 | 4 | .. automodule:: exopy.utils.atom_util 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/configobj_ops.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.configobj_ops module 2 | =============================== 3 | 4 | .. automodule:: exopy.utils.configobj_ops 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/container_change.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.container_change module 2 | ================================== 3 | 4 | .. automodule:: exopy.utils.container_change 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/declarator.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.declarator module 2 | ============================ 3 | 4 | .. automodule:: exopy.utils.declarator 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/enaml_destroy_hook.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.enaml_destroy_hook module 2 | ==================================== 3 | 4 | .. automodule:: exopy.utils.enaml_destroy_hook 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/flags.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.flags module 2 | ======================= 3 | 4 | .. automodule:: exopy.utils.flags 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/index.rst: -------------------------------------------------------------------------------- 1 | exopy.utils package 2 | ================== 3 | 4 | Subpackages 5 | ----------- 6 | 7 | .. toctree:: 8 | 9 | widgets 10 | 11 | Submodules 12 | ---------- 13 | 14 | .. toctree:: 15 | 16 | atom_util 17 | configobj_ops 18 | container_change 19 | declarator 20 | enaml_destroy_hook 21 | flags 22 | mapping_utils 23 | plugin_tools 24 | priority_heap 25 | transformers 26 | watchdog 27 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/mapping_utils.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.mapping_utils module 2 | =============================== 3 | 4 | .. automodule:: exopy.utils.mapping_utils 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/plugin_tools.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.plugin_tools module 2 | ============================== 3 | 4 | .. automodule:: exopy.utils.plugin_tools 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/priority_heap.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.priority_heap module 2 | =============================== 3 | 4 | .. automodule:: exopy.utils.priority_heap 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/transformers.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.transformers module 2 | ============================== 3 | 4 | .. automodule:: exopy.utils.transformers 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/watchdog.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.watchdog module 2 | ========================== 3 | 4 | .. automodule:: exopy.utils.watchdog 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/dict_editor.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.dict_editor module 2 | ===================================== 3 | 4 | .. automodule:: exopy.utils.widgets.dict_editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/dict_tree_view.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.dict_tree_view module 2 | ======================================== 3 | 4 | .. automodule:: exopy.utils.widgets.dict_tree_view 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/index.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets package 2 | ========================== 3 | 4 | Submodules 5 | ---------- 6 | 7 | .. toctree:: 8 | 9 | dict_editor 10 | dict_tree_view 11 | list_editor 12 | qt_autoscroll_html 13 | qt_clipboard 14 | qt_completers 15 | qt_list_str_widget 16 | qt_tree_menu 17 | qt_tree_widget 18 | tree_nodes 19 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/list_editor.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.list_editor module 2 | ===================================== 3 | 4 | .. automodule:: exopy.utils.widgets.list_editor 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_autoscroll_html.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_autoscroll_html module 2 | ============================================ 3 | 4 | .. automodule:: exopy.utils.widgets.qt_autoscroll_html 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_clipboard.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_clipboard module 2 | ====================================== 3 | 4 | .. automodule:: exopy.utils.widgets.qt_clipboard 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_completers.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_completers module 2 | ======================================= 3 | 4 | .. automodule:: exopy.utils.widgets.qt_completers 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_list_str_widget.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_list_str_widget module 2 | ============================================ 3 | 4 | .. automodule:: exopy.utils.widgets.qt_list_str_widget 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_tree_menu.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_tree_menu module 2 | ====================================== 3 | 4 | .. automodule:: exopy.utils.widgets.qt_tree_menu 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/qt_tree_widget.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.qt_tree_widget module 2 | ======================================== 3 | 4 | .. automodule:: exopy.utils.widgets.qt_tree_widget 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/utils/widgets/tree_nodes.rst: -------------------------------------------------------------------------------- 1 | exopy.utils.widgets.tree_nodes module 2 | ==================================== 3 | 4 | .. automodule:: exopy.utils.widgets.tree_nodes 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/api_docs/version.rst: -------------------------------------------------------------------------------- 1 | exopy.version module 2 | =================== 3 | 4 | .. automodule:: exopy.version 5 | :members: 6 | :undoc-members: 7 | :show-inheritance: 8 | -------------------------------------------------------------------------------- /docs/source/dev_guide/atom_enaml.rst: -------------------------------------------------------------------------------- 1 | .. dev_atom_enaml: 2 | 3 | Atom and Enaml 4 | ============== 5 | 6 | .. contents:: 7 | 8 | Atom 9 | ---- 10 | 11 | Atom allow to create memory efficient python object by specifying in the class 12 | the members (rather than allowing dynamic attributes). Atom can also be used to 13 | add type checking to object members. This goes against the notion of 14 | duck-typing but tends to make the code easier to read. Note also that metadata 15 | can be added to a member using the :py:meth:tag method. Metadata are 16 | extensively used in Exopy. 17 | 18 | 19 | Enaml 20 | ----- 21 | 22 | .. todo:: 23 | 24 | Need to describe the syntax for overriding declarative functions. 25 | -------------------------------------------------------------------------------- /docs/source/dev_guide/index.rst: -------------------------------------------------------------------------------- 1 | .. _dev_guide: 2 | 3 | Extending Exopy 4 | ============== 5 | 6 | Exopy is designed with the idea that user should be able to extend it to fit 7 | their own needs. The following section will describe how one should proceed to 8 | do so. The three first sections describe general concepts which are always 9 | applicable, the following ones are dedicated to the extension of specific part 10 | of the application. 11 | 12 | If you need to extend the functionalities provided by an extension package 13 | please refer to its documentation for the specifics of the procedure. 14 | 15 | .. toctree:: 16 | :numbered: 17 | :maxdepth: 2 18 | 19 | glossary 20 | application 21 | tasks 22 | instruments 23 | measurement 24 | testing 25 | style_guide 26 | atom_enaml 27 | 28 | .. note:: 29 | 30 | When writing code for Exopy, or an extension packages you should follow the 31 | project style guides described in :doc:`style_guide`. Of course if you are 32 | developing a private extension you are free to do as you see fit but in 33 | order for a contribution to Exopy or one of its official extension package 34 | to be accepted it must follow those style guides. 35 | 36 | .. note:: 37 | 38 | Exopy does not export any name in the \_\_init\_\_.py module. However for 39 | ease of use the objects necessary to extend Exopy functionality are exported 40 | in the api.py file associated with each plugin. 41 | 42 | .. note:: 43 | 44 | Exopy is built on top of Atom and Enaml. Please have a look at 45 | :doc:`atom_enaml` for an explanation on how this influence the code. 46 | -------------------------------------------------------------------------------- /docs/source/faqs/index.rst: -------------------------------------------------------------------------------- 1 | .. _faqs: 2 | 3 | FAQS 4 | ==== 5 | -------------------------------------------------------------------------------- /docs/source/index.rst: -------------------------------------------------------------------------------- 1 | .. Exopy documentation master file, created by 2 | sphinx-quickstart on Mon Apr 27 20:35:05 2015-2018 3 | 4 | Welcome to Exopy's documentation! 5 | ================================ 6 | 7 | Exopy is a versatile data acquisition software. 8 | 9 | 10 | .. toctree:: 11 | :hidden: 12 | 13 | User guide 14 | Developer guide 15 | FAQS 16 | API reference 17 | 18 | - :doc:`user_guide/index` 19 | 20 | How to set up Exopy and use it in your lab. 21 | 22 | - :doc:`dev_guide/index` 23 | 24 | You need to extend Exopy functionalities, you should definitively start here. 25 | 26 | - :doc:`faqs/index` 27 | 28 | Some questions that might have occurred to others too. 29 | 30 | - :doc:`api_docs/index` 31 | 32 | When all else fails, consult the API docs to find the answer you need. 33 | The API docs also include convenient links to the most definitive 34 | Exopy documentation: the source. 35 | 36 | 37 | Indices and tables 38 | ================== 39 | 40 | * :ref:`genindex` 41 | * :ref:`modindex` 42 | * :ref:`search` 43 | 44 | -------------------------------------------------------------------------------- /docs/source/user_guide/index.rst: -------------------------------------------------------------------------------- 1 | .. _user_guide: 2 | 3 | User guide for Exopy 4 | =================== 5 | 6 | Exopy high quality graphical user interface should make it quite intuitive to 7 | work with. However it can take some time to discover all its capabilities (who wants 8 | to search all the menus and tabs !). This guide should help you get started and 9 | master the different capabilities of the software. 10 | 11 | .. toctree:: 12 | :numbered: 13 | 14 | installation 15 | first_steps 16 | instruments 17 | measurement_edition 18 | -------------------------------------------------------------------------------- /exopy/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Exopy : Experiment control in Python. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/app/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app : Application management plugins. 10 | 11 | The app package contains the main plugins driving the application. Nothing 12 | linked to measurements. 13 | 14 | """ 15 | -------------------------------------------------------------------------------- /exopy/app/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """All possible contributions to plugin of the app package. 10 | 11 | """ 12 | from .app_extensions import AppStartup, AppClosing, AppClosed 13 | 14 | __all__ = ['AppStartup', 'AppClosing', 'AppClosed'] 15 | -------------------------------------------------------------------------------- /exopy/app/dependencies/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.dependencies : 10 | 11 | Analyse and collect dependencies in object so that they can be rebuild and make 12 | to work in an environment lacking an active workbench. 13 | 14 | """ 15 | -------------------------------------------------------------------------------- /exopy/app/dependencies/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """All possible contributions to plugin of the app package. 10 | 11 | """ 12 | from .dependencies import (BuildDependency, RuntimeDependencyCollector, 13 | RuntimeDependencyAnalyser) 14 | 15 | __all__ = ['BuildDependency', 'RuntimeDependencyCollector', 16 | 'RuntimeDependencyAnalyser'] 17 | -------------------------------------------------------------------------------- /exopy/app/errors/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.errors : Error reporting system 10 | 11 | Error reporting logging and displaying dialogs automatically. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/app/errors/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """All possible contributions to plugin of the app package. 10 | 11 | """ 12 | from .errors import ErrorHandler 13 | 14 | __all__ = ['ErrorHandler'] 15 | -------------------------------------------------------------------------------- /exopy/app/headless/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2022 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Minimal plugin to allow running exopy in headless mode. 10 | 11 | """ -------------------------------------------------------------------------------- /exopy/app/headless/autoclose.py: -------------------------------------------------------------------------------- 1 | from ...measurement.hooks.base_hooks import BasePostExecutionHook 2 | 3 | class AutoClose(BasePostExecutionHook): 4 | def run(self, workbench, engine): 5 | ui = workbench.get_plugin(u'enaml.workbench.ui') 6 | ui.stop_application() 7 | -------------------------------------------------------------------------------- /exopy/app/icons/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.icons : Application icons management plugins. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/app/icons/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Api of the icon plugin. 10 | 11 | """ 12 | from .icon_theme import IconTheme, Icon 13 | 14 | 15 | def get_icon(workbench, icon_id): 16 | """Utility function querying an icon. 17 | 18 | This function is provided to be more compact than using the core plugin. 19 | All widgets if the main application window is one of their parent can 20 | access the workbench thanks to dynamic scoping. 21 | 22 | """ 23 | plugin = workbench.get_plugin('exopy.app.icons') 24 | return plugin.get_icon(icon_id) 25 | 26 | 27 | __all__ = ['IconTheme', 'Icon', 'get_icon'] 28 | -------------------------------------------------------------------------------- /exopy/app/log/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.log 10 | 11 | Logging handling with possibility to add custom handlers, filters and 12 | formatters. 13 | 14 | """ 15 | -------------------------------------------------------------------------------- /exopy/app/log/widgets.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Widget used to display a log file. 10 | 11 | """ 12 | from enaml.widgets.api import (Container, Dialog, MultilineField, ScrollArea) 13 | 14 | 15 | enamldef LogDialog(Dialog): 16 | """Dialog presenting a log file.. 17 | 18 | """ 19 | title = 'Log viewer' 20 | 21 | #: Log displayed 22 | attr log = "" 23 | 24 | Container: 25 | padding = 0 26 | ScrollArea: 27 | constraints = [width >= 800, height >=600] 28 | Container: 29 | padding = 0 30 | MultilineField: 31 | read_only = True 32 | text = log 33 | -------------------------------------------------------------------------------- /exopy/app/packages/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.packages : Loading extension packages at startup. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/app/preferences/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.preferences : Plugin preferences saving/loading. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/app/preferences/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """All possible contributions to plugin of the app package. 10 | 11 | """ 12 | from .preferences import Preferences 13 | 14 | __all__ = ['Preferences'] 15 | -------------------------------------------------------------------------------- /exopy/app/states/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.app.states : Plugin states sharing (complement to core plugin). 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/app/states/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """All possible contributions to plugin of the app package. 10 | 11 | """ 12 | from .state import State 13 | 14 | __all__ = ['State'] 15 | -------------------------------------------------------------------------------- /exopy/app/states/state.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """State plugin extension declaration. 10 | 11 | """ 12 | from atom.api import (List, Str) 13 | from enaml.core.api import Declarative, d_ 14 | 15 | 16 | class State(Declarative): 17 | """Declarative class for defining a workbench state. 18 | 19 | State objects can be contributed as extensions child to the 'states' 20 | extension point of a state plugin. 21 | 22 | """ 23 | #: The globally unique identifier for the state 24 | id = d_(Str()) 25 | 26 | #: An optional description of what the state provides. 27 | description = d_(Str()) 28 | 29 | #: The list of plugin members whose values should be reflected in the 30 | #: state object 31 | sync_members = d_(List(Str())) 32 | -------------------------------------------------------------------------------- /exopy/instruments/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Intruments registering and permissions manager. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/instruments/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Extension API for the instrument plugin. 10 | 11 | """ 12 | from .user import InstrUser 13 | 14 | from .drivers.driver_decl import Driver, Drivers 15 | from .starters.base_starter import BaseStarter, Starter 16 | from .starters.exceptions import InstrIOError 17 | from .connections.base_connection import BaseConnection, Connection 18 | from .settings.base_settings import BaseSettings, Settings 19 | from .manufacturer_aliases import ManufacturerAlias 20 | 21 | __all__ = ['Driver', 'Drivers', 'InstrUser', 'BaseConnection', 'Connection', 22 | 'Settings', 'BaseSettings', 'Starter', 'BaseStarter', 23 | 'ManufacturerAlias', 'InstrIOError'] 24 | -------------------------------------------------------------------------------- /exopy/instruments/connections/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Connection information edition tools. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/instruments/connections/dll_connection.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Dynamic linking library connection information edition tools. 10 | 11 | """ 12 | from .base_connection import BaseConnection 13 | 14 | 15 | enamldef DLLConnection(BaseConnection): 16 | """ 17 | """ 18 | pass 19 | -------------------------------------------------------------------------------- /exopy/instruments/drivers/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Driver declarations. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/instruments/manufacturer_aliases.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Declarative object use to declare aliases of a manufacturer name. 10 | 11 | ex : Keysight : aliases Agilent, HP 12 | 13 | """ 14 | from atom.api import Str, List 15 | from enaml.core.api import Declarative, d_ 16 | 17 | 18 | class ManufacturerAlias(Declarative): 19 | """Declares that a manufacturer may be known under different names. 20 | 21 | """ 22 | #: Main name under which the vendor is expected to be known 23 | id = d_(Str()) 24 | 25 | #: List of aliased names. 26 | aliases = d_(List()) 27 | -------------------------------------------------------------------------------- /exopy/instruments/settings/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Settings allow to add driver sepcific settings in a profile. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/instruments/starters/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Starters declarations. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/instruments/starters/exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Tool handling initializind/finalizing a driver. 10 | 11 | """ 12 | 13 | 14 | class InstrIOError(Exception): 15 | """Exception used by starters to report an IO error. 16 | 17 | """ 18 | pass 19 | -------------------------------------------------------------------------------- /exopy/instruments/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Widgets used to browse the known drivers, connections and settings 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/measurement/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement : Measurement edition and execution 10 | 11 | The measurement plugin handles the edition and execution of a measurement 12 | centered on a task. A measurement execution can be customized using hooks 13 | adding operations before and after the main task, can be monitored also. The 14 | edition of the main task is customizable. 15 | 16 | """ 17 | 18 | 19 | def list_manifests(): 20 | """List all the manifests to register at startup. 21 | 22 | """ 23 | import enaml 24 | with enaml.imports(): 25 | from .manifest import MeasurementManifest 26 | from .monitors.text_monitor.manifest import TextMonitorManifest 27 | 28 | return [MeasurementManifest, TextMonitorManifest] 29 | -------------------------------------------------------------------------------- /exopy/measurement/editors/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.editors : GUI to edit task hierarchy. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/measurement/editors/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Editors allow to customize the edition of the task hierarchy. 10 | 11 | They can apply to all tasks or only to a subset, in the later case they are 12 | only available when the task is selected. 13 | 14 | """ 15 | from .base_editor import BaseEditor, Editor 16 | 17 | 18 | __all__ = ['BaseEditor', 'Editor'] 19 | -------------------------------------------------------------------------------- /exopy/measurement/editors/database_access_editor/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Editor allowing to extend the accessibility of database entries. 10 | 11 | """ 12 | import enaml 13 | with enaml.imports(): 14 | from .editor import DatabaseAccessEditor 15 | 16 | __all__ = ['DatabaseAccessEditor'] 17 | -------------------------------------------------------------------------------- /exopy/measurement/editors/execution_editor/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Editor allowing to customize the execution parameters of a task. 10 | """ 11 | import enaml 12 | with enaml.imports(): 13 | from .editor import ExecutionEditor 14 | 15 | __all__ = ['ExecutionEditor'] 16 | -------------------------------------------------------------------------------- /exopy/measurement/engines/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.engines : Running tasks in an isolated fashion. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/measurement/engines/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Engines are responsible for the execution of tasks. 10 | 11 | """ 12 | from .base_engine import BaseEngine, Engine, ExecutionInfos 13 | 14 | 15 | __all__ = ['BaseEngine', 'Engine', 'ExecutionInfos'] 16 | -------------------------------------------------------------------------------- /exopy/measurement/engines/process_engine/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.engines.process_engine : 10 | 11 | Engine executing the measurement in a different process. 12 | 13 | """ 14 | import enaml 15 | with enaml.imports(): 16 | from .engine_declaration import ProcessEngine 17 | 18 | __all__ = ['ProcessEngine'] 19 | -------------------------------------------------------------------------------- /exopy/measurement/hooks/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.hooks : Pre/post main tasks execution customization. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/measurement/hooks/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Measurement hooks are used to add actions performed before and after a 10 | measurement is run. 11 | 12 | """ 13 | from .base_hooks import (BasePreExecutionHook, BasePostExecutionHook, 14 | PreExecutionHook, PostExecutionHook) 15 | 16 | 17 | __all__ = ['BasePreExecutionHook', 'BasePostExecutionHook', 18 | 'PreExecutionHook', 'PostExecutionHook'] 19 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.monitors : Measurement progress monitoring. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """A measurement monitor is used to follow the measurement progress. 10 | 11 | It can simply displays some database values or request the plotting of some 12 | data. 13 | 14 | """ 15 | from .base_monitor import BaseMonitor, BaseMonitorItem, Monitor 16 | 17 | __all__ = ['BaseMonitor', 'BaseMonitorItem', 'Monitor'] 18 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/text_monitor/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.monitors.text_monitor : 10 | 11 | Textual display of a measurement progress. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/text_monitor/api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Text monitor API allowing to extend it through plugin contributions. 10 | 11 | """ 12 | import enaml 13 | 14 | from .rules.base import BaseRule, RuleType, RuleConfig 15 | with enaml.imports(): 16 | from .rules.base_views import BaseRuleView 17 | 18 | __all__ = ['BaseRule', 'RuleType', 'RuleConfig', 'BaseRuleView'] 19 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/text_monitor/entry.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Entries that can be displayed by the text monitor. 10 | 11 | """ 12 | from atom.api import (Str, List) 13 | from enaml.application import deferred_call 14 | 15 | from exopy.utils.atom_util import HasPrefAtom 16 | 17 | 18 | class MonitoredEntry(HasPrefAtom): 19 | """Entry to display by the text monitor. 20 | 21 | """ 22 | #: User understandable name of the monitored entry. 23 | name = Str().tag(pref=True) 24 | 25 | #: Full name of the entry as found or built from the database. 26 | path = Str().tag(pref=True) 27 | 28 | #: Formatting of the entry. 29 | formatting = Str().tag(pref=True) 30 | 31 | #: Current value that the monitor should display. 32 | value = Str() 33 | 34 | #: List of database entries the entry depend_on. 35 | depend_on = List().tag(pref=True) 36 | 37 | def update(self, database_vals): 38 | """ Method updating the value of the entry given the current state of 39 | the database. 40 | 41 | """ 42 | # TODO : handle evaluation delimited by $. Imply a try except 43 | vals = {d: database_vals[d] for d in self.depend_on} 44 | new_val = self.formatting.format(**vals) 45 | deferred_call(setattr, self, 'value', new_val) 46 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/text_monitor/rules/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.monitors.text_monitor.rules : 10 | 11 | Automatic entries filtering rules. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/measurement/monitors/text_monitor/rules/infos.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Container object to store rules declarations. 10 | 11 | """ 12 | import enaml 13 | from atom.api import Atom, Subclass 14 | 15 | from .base import BaseRule 16 | with enaml.imports(): 17 | from .base_views import BaseRuleView 18 | 19 | 20 | class RuleInfos(Atom): 21 | """Container object to store rules declarations. 22 | 23 | """ 24 | #: Class implementing the logic of the rule. 25 | cls = Subclass(BaseRule) 26 | 27 | #: Enaml widget used to edit the rules parameters. 28 | view = Subclass(BaseRuleView) 29 | -------------------------------------------------------------------------------- /exopy/measurement/workspace/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.measurement.workspace : Measurement workspace for measurements edition 10 | and execution. 11 | 12 | """ 13 | -------------------------------------------------------------------------------- /exopy/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks : Backbone of Exopy measurement description. 10 | 11 | Tasks are organized hierarchically and can be nested to any level. Each one 12 | describe one step of the experiment. 13 | 14 | """ 15 | -------------------------------------------------------------------------------- /exopy/tasks/configs/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.configs : Task initialisation GUI interface. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.tasks : Standard library of tasks 10 | 11 | All task implemented here are declared in the manager manifest. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.tasks.logic : Logic tasks. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/conditional_task.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Task equivalent to an if statement. 10 | 11 | """ 12 | from atom.api import (Str) 13 | 14 | from ..validators import Feval 15 | from ..base_tasks import ComplexTask 16 | 17 | 18 | class ConditionalTask(ComplexTask): 19 | """Task calling its children only if a given condition is met. 20 | 21 | """ 22 | #: Condition to meet in order to perform the children tasks. 23 | condition = Str().tag(pref=True, feval=Feval()) 24 | 25 | def perform(self): 26 | """Call the children task if the condition evaluate to True. 27 | 28 | """ 29 | if self.format_and_eval_string(self.condition): 30 | for child in self.children: 31 | child.perform_() 32 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/loop_exceptions.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Exceptions used to interact with looping tasks. 10 | 11 | """ 12 | 13 | 14 | class LoopException(BaseException): 15 | """Base exception used for control flows in tasks. 16 | 17 | """ 18 | pass 19 | 20 | 21 | class BreakException(LoopException): 22 | """Exception used to signal a looping task it should break. 23 | 24 | """ 25 | pass 26 | 27 | 28 | class ContinueException(LoopException): 29 | """Exception used to signal a looping task it should continue. 30 | 31 | """ 32 | pass 33 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/views/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.tasks.logic.views : Logic tasks views. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/views/conditional_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the ConditionalTask. 10 | 11 | """ 12 | from enaml.widgets.api import (GroupBox, Label) 13 | from enaml.layout.api import hbox, vbox, align 14 | from inspect import cleandoc 15 | 16 | from .....utils.widgets.qt_completers import QtLineCompleter 17 | from ...string_evaluation import EVALUATER_TOOLTIP 18 | from ...base_views import ComplexTaskView 19 | 20 | 21 | enamldef ConditionalView(ComplexTaskView): view: 22 | """View for ConditionalTask. 23 | 24 | """ 25 | constraints = [vbox(hbox(cond_lab, cond_val), editor), 26 | align('v_center', cond_val, cond_lab)] 27 | 28 | Label: cond_lab: 29 | text = 'Condition' 30 | QtLineCompleter: cond_val: 31 | text := task.condition 32 | entries_updater = task.list_accessible_database_entries 33 | tool_tip = EVALUATER_TOOLTIP 34 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/views/loop_iterable_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the LoopIterableInterface. 10 | 11 | """ 12 | from enaml.widgets.api import Label 13 | 14 | from .....utils.widgets.qt_completers import QtLineCompleter 15 | from ...string_evaluation import EVALUATER_TOOLTIP 16 | 17 | 18 | enamldef IterableLoopLabel(Label): 19 | """Label for IterableLoopÎnterface. 20 | 21 | """ 22 | #: Reference to the interface to which this view is linked. 23 | attr interface 24 | 25 | #: Reference to the root view. 26 | attr root 27 | 28 | attr inline = True 29 | 30 | text = 'Iterable' 31 | 32 | 33 | enamldef IterableLoopField(QtLineCompleter): 34 | """Field for IterableLoopÎnterface. 35 | 36 | """ 37 | #: Reference to the interface to which this view is linked. 38 | attr interface 39 | 40 | #: Reference to the root view. 41 | attr root 42 | 43 | text := interface.iterable 44 | entries_updater << interface.task.list_accessible_database_entries 45 | tool_tip = EVALUATER_TOOLTIP 46 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/views/while_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ============================================================================= 3 | # module : while_task_view.py 4 | # author : Matthieu Dartiailh 5 | # license : MIT license 6 | # ============================================================================= 7 | """View for the WhileTask. 8 | 9 | """ 10 | from enaml.widgets.api import (GroupBox, Label) 11 | from enaml.layout.api import hbox, vbox, align 12 | from inspect import cleandoc 13 | 14 | from .....utils.widgets.qt_completers import QtLineCompleter 15 | from ...string_evaluation import EVALUATER_TOOLTIP 16 | from ...base_views import ComplexTaskView 17 | 18 | 19 | enamldef WhileView(ComplexTaskView): 20 | """View for the WhileTask. 21 | 22 | """ 23 | 24 | constraints = [vbox(hbox(cond_lab, cond_val), editor), 25 | align('v_center', cond_lab, cond_val)] 26 | 27 | Label: cond_lab: 28 | text = 'Condition' 29 | QtLineCompleter: cond_val: 30 | text := task.condition 31 | entries_updater << task.list_accessible_database_entries 32 | tool_tip = EVALUATER_TOOLTIP 33 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/logic/while_task.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Task allowing to use a while statement. 10 | 11 | """ 12 | from atom.api import (Str, set_default) 13 | 14 | from ..validators import Feval 15 | from ..base_tasks import ComplexTask 16 | from .loop_exceptions import BreakException, ContinueException 17 | from ..decorators import handle_stop_pause 18 | 19 | 20 | class WhileTask(ComplexTask): 21 | """ Task breaking out of a loop when a condition is met. 22 | 23 | See Python break statement documenttaion. 24 | 25 | """ 26 | #: Condition under which to continue looping. 27 | condition = Str().tag(pref=True, feval=Feval()) 28 | 29 | database_entries = set_default({'index': 1}) 30 | 31 | def perform(self): 32 | """Loop as long as condition evaluates to True. 33 | 34 | """ 35 | i = 1 36 | root = self.root 37 | while True: 38 | self.write_in_database('index', i) 39 | i += 1 40 | if not self.format_and_eval_string(self.condition): 41 | break 42 | 43 | if handle_stop_pause(root): 44 | return 45 | 46 | try: 47 | for child in self.children: 48 | child.perform_() 49 | except BreakException: 50 | break 51 | except ContinueException: 52 | continue 53 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.tasks.util : Utility tasks. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/declarations.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Utilities tasks declarations included in the task manager manifest. 10 | 11 | """ 12 | from ...api import Tasks, Task, Interface 13 | 14 | 15 | enamldef UtilTasks(Tasks): 16 | """Utilities tasks declarations. 17 | 18 | """ 19 | path = 'exopy.tasks.tasks.util' 20 | group = 'util' 21 | 22 | Task: 23 | task = 'sleep_task:SleepTask' 24 | view = 'views.sleep_view:SleepView' 25 | Task: 26 | task = 'log_task:LogTask' 27 | view = 'views.log_view:LogView' 28 | Task: 29 | task = 'definition_task:DefinitionTask' 30 | view = 'views.definition_view:DefinitionView' 31 | Task: 32 | task = 'formula_task:FormulaTask' 33 | view = 'views.formula_view:FormulaView' 34 | 35 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/log_task.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Logging Task. 10 | 11 | """ 12 | from atom.api import (Str, set_default) 13 | import logging 14 | 15 | from ..base_tasks import SimpleTask 16 | 17 | 18 | class LogTask(SimpleTask): 19 | """ Task logging a message. Loopable. 20 | 21 | """ 22 | #: Message to log when the task is executed. 23 | message = Str().tag(pref=True, fmt=True) 24 | 25 | database_entries = set_default({'message': ''}) 26 | 27 | wait = set_default({'activated': True}) # Wait on all pools by default. 28 | 29 | def perform(self, *args, **kwargs): 30 | """ Format the message and log it. 31 | 32 | """ 33 | mess = self.format_string(self.message) 34 | self.write_in_database('message', mess) 35 | logging.info(mess) 36 | return True 37 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/sleep_task.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Task that makes the system wait on all multithreading pools 10 | for a set amount of time. 11 | 12 | """ 13 | import numbers 14 | from atom.api import (Str, set_default) 15 | from time import sleep 16 | 17 | from ..base_tasks import SimpleTask 18 | from ..validators import Feval 19 | 20 | 21 | class SleepTask(SimpleTask): 22 | """Simply sleeps for the specified amount of time. 23 | Wait for any parallel operation before execution by default. 24 | """ 25 | # Time to wait 26 | time = Str().tag(pref=True, feval=Feval(types=numbers.Real)) 27 | 28 | wait = set_default({'': True}) 29 | 30 | database_entries = set_default({'time': 1}) 31 | 32 | def perform(self): 33 | t = self.format_and_eval_string(self.time) 34 | self.write_in_database('time', t) 35 | sleep(t) 36 | 37 | def check(self, *args, **kwargs): 38 | """ Check if time > 0 39 | 40 | """ 41 | test, tb = super(SleepTask, self).check(*args, **kwargs) 42 | 43 | if test and self.format_and_eval_string(self.time) < 0: 44 | tb[self.get_error_path()] = 'Sleep time must be positive.' 45 | test = False 46 | 47 | return test, tb 48 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/views/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.tasks.util.views : Utility tasks views. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/views/definition_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the DefinitionView. 10 | 11 | """ 12 | from ...base_views import BaseTaskView 13 | from exopy.utils.widgets.dict_editor import (DictEditor, FieldFieldEditor) 14 | 15 | 16 | enamldef DefinitionView(BaseTaskView): 17 | """View for DefinitionView. 18 | 19 | """ 20 | 21 | DictEditor(FieldFieldEditor): de: 22 | de.mapping := task.definitions 23 | de.operations = ['add','move','remove'] 24 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/views/formula_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the Sleep Task. 10 | 11 | """ 12 | from ...string_evaluation import EVALUATER_TOOLTIP 13 | 14 | from ...base_views import BaseTaskView 15 | from exopy.utils.widgets.dict_editor import (DictEditor, 16 | FieldFieldCompleterEditor) 17 | 18 | 19 | enamldef FormulaView(BaseTaskView): 20 | """View for Formulas Task. 21 | 22 | """ 23 | 24 | DictEditor(FieldFieldCompleterEditor): de: 25 | de.attributes = { 26 | 'entries_updater' : task.list_accessible_database_entries, 27 | 'evaluater_tooltip' : EVALUATER_TOOLTIP} 28 | de.mapping := task.formulas 29 | de.operations = ['add','move','remove'] 30 | 31 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/views/log_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the Log Task. 10 | 11 | """ 12 | from enaml.widgets.api import Label 13 | from enaml.layout.api import hbox 14 | 15 | from .....utils.widgets.qt_completers import QtLineCompleter 16 | from ...string_evaluation import EVALUATER_TOOLTIP 17 | from ...base_views import BaseTaskView 18 | 19 | 20 | enamldef LogView(BaseTaskView): 21 | """View for Log Task. 22 | 23 | """ 24 | constraints = [ hbox(desc, msg) ] 25 | 26 | Label: desc: 27 | text = 'Message:' 28 | QtLineCompleter: msg: 29 | text := task.message 30 | entries_updater = task.list_accessible_database_entries 31 | tool_tip = EVALUATER_TOOLTIP 32 | -------------------------------------------------------------------------------- /exopy/tasks/tasks/util/views/sleep_view.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """View for the Sleep Task. 10 | 11 | """ 12 | from enaml.widgets.api import Label 13 | from enaml.layout.api import hbox 14 | 15 | from .....utils.widgets.qt_completers import QtLineCompleter 16 | from ...string_evaluation import EVALUATER_TOOLTIP 17 | from ...base_views import BaseTaskView 18 | 19 | 20 | enamldef SleepView(BaseTaskView): 21 | """View for Sleep Task. 22 | 23 | """ 24 | constraints = [ hbox(desc, time, unit) ] 25 | 26 | Label: desc: 27 | text = 'Time to sleep:' 28 | QtLineCompleter: time: 29 | text := task.time 30 | entries_updater = task.list_accessible_database_entries 31 | tool_tip = EVALUATER_TOOLTIP 32 | Label: unit: 33 | text = 's' 34 | -------------------------------------------------------------------------------- /exopy/tasks/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.utils : Utility functions. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/tasks/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.tasks.widgets : Widgets for browsing/building/saving 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/testing/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing : Testing tools re-usable in extension packages. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/testing/broken_enaml.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Enaml module raising a name error when imported. Used for testing 10 | (declarators mostly). 11 | 12 | """ 13 | 14 | a 15 | -------------------------------------------------------------------------------- /exopy/testing/broken_module.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Module raising a name error when imported. Used for testing (declarators 10 | mostly). 11 | 12 | """ 13 | 14 | a 15 | -------------------------------------------------------------------------------- /exopy/testing/instruments/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Instrument plugin testing tools. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/testing/instruments/util.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Utility function used for testing instruments. 10 | 11 | """ 12 | import os 13 | 14 | 15 | def add_profile(workbench, profile_config, names): 16 | """Add a profile to the instrument plugin. 17 | 18 | Parameters 19 | ---------- 20 | workbench : Workbench 21 | Workbench of the application 22 | 23 | source_path : str 24 | Path to the source file for the profiles. 25 | 26 | names : list 27 | List of names under which the profiles should be added. 28 | 29 | """ 30 | p = workbench.get_plugin('exopy.instruments') 31 | p._unbind_observers() 32 | # Test observation of profiles folders 33 | for n in names: 34 | with open(os.path.join(p._profiles_folders[0], n + '.instr.ini'), 35 | 'wb') as f: 36 | profile_config.write(f) 37 | p._refresh_profiles() 38 | p._bind_observers() 39 | -------------------------------------------------------------------------------- /exopy/testing/measurement/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing.measurement : Tools for testing measurement plugin related 10 | code. 11 | 12 | """ 13 | -------------------------------------------------------------------------------- /exopy/testing/measurement/monitors/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing.measurement.monitors : 10 | 11 | Tools for testing measurement monitors related code. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/testing/measurement/monitors/text_monitor/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing.measurement.monitors.text_monitor : 10 | 11 | Tools for testing extension to the text monitor. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/testing/measurement/monitors/text_monitor/fixtures.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Fixtures used to test text monitor related systems. 10 | 11 | """ 12 | import pytest 13 | 14 | 15 | pytest_plugins = str('exopy.testing.measurement.fixtures'), 16 | 17 | 18 | @pytest.fixture 19 | def text_monitor_workbench(exopy_qtbot, measurement_workbench): 20 | """Register the text monitor manifest. 21 | 22 | """ 23 | return measurement_workbench 24 | -------------------------------------------------------------------------------- /exopy/testing/measurement/workspace/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing.measurement.workspace : 10 | 11 | Tools for testing measurement workspace related code. 12 | 13 | """ 14 | -------------------------------------------------------------------------------- /exopy/testing/tasks/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.testing.tasks : Task testing tools. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/testing/tasks/util.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Utility object to test the execution of tasks. 10 | 11 | """ 12 | from atom.api import Value, Int, Callable 13 | 14 | from exopy.tasks.tasks.base_tasks import SimpleTask 15 | 16 | 17 | class CheckTask(SimpleTask): 18 | """Task keeping track of check and perform call and value passed to perform 19 | 20 | """ 21 | #: Number of time the check method has been called. 22 | check_called = Int() 23 | 24 | #: Number of time the perform method has been called. 25 | perform_called = Int() 26 | 27 | #: Value passed to the perform method. 28 | perform_value = Value() 29 | 30 | #: Function to call in the perform method 31 | custom = Callable(lambda t, x: None) 32 | 33 | def check(self, *args, **kwargs): 34 | 35 | self.check_called += 1 36 | return super(CheckTask, self).check(*args, **kwargs) 37 | 38 | def perform(self, value=None): 39 | 40 | self.perform_called += 1 41 | self.perform_value = value 42 | self.custom(self, value) 43 | 44 | 45 | class ExceptionTask(SimpleTask): 46 | """Task raising an exception when executed. 47 | 48 | """ 49 | 50 | def perform(self): 51 | raise Exception() 52 | -------------------------------------------------------------------------------- /exopy/testing/windows.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Window used to test widget. 10 | 11 | """ 12 | from enaml.core.api import Include 13 | from enaml.widgets.api import Window, Container, Notebook, DockArea 14 | from enaml.layout.api import HSplitLayout 15 | 16 | 17 | enamldef ContainerTestingWindow(Window): 18 | """Window used to test a container. 19 | 20 | """ 21 | attr workbench 22 | attr widget 23 | 24 | Container: 25 | Include: 26 | objects << [widget] 27 | 28 | 29 | enamldef PageTestingWindow(Window): 30 | """Window used to test a page. 31 | 32 | """ 33 | attr workbench 34 | attr widget 35 | 36 | Container: 37 | Notebook: 38 | Include: 39 | objects << [widget] 40 | 41 | 42 | enamldef DockItemTestingWindow(Window): 43 | """Window used to test a dock item. 44 | 45 | """ 46 | attr workbench 47 | attr widget 48 | widget :: 49 | set_layout() 50 | 51 | alias area : area_ 52 | 53 | initialized :: 54 | set_layout() 55 | 56 | func set_layout(): 57 | # Define explicitely the layout 58 | area_.layout = HSplitLayout(widget.name) 59 | 60 | Container: 61 | DockArea: area_: 62 | style = 'metro' 63 | Include: 64 | objects << [widget] 65 | -------------------------------------------------------------------------------- /exopy/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.utils : Generic tools used through exopy. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/utils/enaml_destroy_hook.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Mixin class to provide declarative finalization customisations capabilities. 10 | 11 | """ 12 | from atom.api import Event 13 | from enaml.core.api import d_ 14 | 15 | 16 | def add_destroy_hook(cls): 17 | """Add a declarative event signaling that an object will be destroyed. 18 | 19 | """ 20 | class Destroyable(cls): 21 | """Subclass overriding the destroy method to emit 'ended' before 22 | destroying. 23 | 24 | """ 25 | #: Event emitted just before destroying the object. 26 | ended = d_(Event()) 27 | 28 | def destroy(self): 29 | """Re-implemented to emit ended before cleaning up the declarative 30 | structure. 31 | 32 | """ 33 | self.ended = True 34 | super(Destroyable, self).destroy() 35 | 36 | return Destroyable 37 | -------------------------------------------------------------------------------- /exopy/utils/mapping_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Mapping related utility functions. 10 | 11 | """ 12 | from collections.abc import Mapping 13 | 14 | 15 | def recursive_update(to_update, data): 16 | """Update a dictionary and all the mapping found as values. 17 | 18 | Parameters 19 | ---------- 20 | to_update : Mapping 21 | Mapping whose content should be updated. 22 | 23 | data : Mapping 24 | Mapping to use from which to pull new values. 25 | 26 | """ 27 | for k, v in data.items(): 28 | if isinstance(v, Mapping): 29 | if k not in to_update: 30 | to_update[k] = {} 31 | recursive_update(to_update[k], v) 32 | else: 33 | to_update[k] = v 34 | -------------------------------------------------------------------------------- /exopy/utils/traceback.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Utility functions to generate well behaved tracebacks 10 | 11 | """ 12 | from traceback import format_exc, format_tb 13 | 14 | __all__ = ['format_exc', 'format_tb'] 15 | -------------------------------------------------------------------------------- /exopy/utils/watchdog.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Collections of useful watchdog file system observers. 10 | 11 | """ 12 | from watchdog.events import (FileSystemEventHandler, FileCreatedEvent, 13 | FileDeletedEvent, FileMovedEvent) 14 | 15 | 16 | class SystematicFileUpdater(FileSystemEventHandler): 17 | """Simple watchdog handler calling always the same function no matter the 18 | event 19 | 20 | """ 21 | def __init__(self, handler): 22 | self.handler = handler 23 | 24 | def on_created(self, event): 25 | """Called on creation of a file. 26 | 27 | """ 28 | super(SystematicFileUpdater, self).on_created(event) 29 | if isinstance(event, FileCreatedEvent): 30 | self.handler() 31 | 32 | def on_deleted(self, event): 33 | """Called on deletion of a file. 34 | 35 | """ 36 | super(SystematicFileUpdater, self).on_deleted(event) 37 | if isinstance(event, FileDeletedEvent): 38 | self.handler() 39 | 40 | def on_moved(self, event): 41 | """Called on displacement of a file. 42 | 43 | """ 44 | super(SystematicFileUpdater, self).on_moved(event) 45 | if isinstance(event, FileMovedEvent): 46 | self.handler() 47 | -------------------------------------------------------------------------------- /exopy/utils/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """exopy.utils.widgets : Custom widgets used in exopy. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /exopy/utils/widgets/qt_autoscroll_html.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Html widget automatically scrolling ot show latest added text. 10 | 11 | """ 12 | from atom.api import Str 13 | from enaml.core.declarative import d_ 14 | from enaml.qt import QtGui, QtWidgets 15 | from enaml.widgets.api import RawWidget 16 | 17 | 18 | class QtAutoscrollHtml(RawWidget): 19 | """ Custom Html display which scrolls down to the last line on update. 20 | 21 | Carriage returns are automatically converted to '
' so that there 22 | is no issue in the Html rendering. 23 | 24 | """ 25 | #: Text displayed by the widget. Any Html mark up will be rendered. 26 | text = d_(Str()) 27 | 28 | hug_width = 'ignore' 29 | hug_height = 'ignore' 30 | 31 | def create_widget(self, parent): 32 | """Finishes initializing the editor by creating the underlying toolkit 33 | widget. 34 | 35 | """ 36 | widget = QtWidgets.QTextEdit(parent) 37 | widget.setReadOnly(True) 38 | widget.setHtml(self.text) 39 | return widget 40 | 41 | def _post_setattr_text(self, old, new): 42 | """Updates the editor when the object trait changes externally to the 43 | editor. 44 | 45 | """ 46 | if self.proxy_is_active: 47 | widget = self.get_widget() 48 | text = new.replace('\n', '
') 49 | widget.setHtml(text) 50 | widget.moveCursor(QtGui.QTextCursor.End) 51 | -------------------------------------------------------------------------------- /readthedocs.yml: -------------------------------------------------------------------------------- 1 | formats: 2 | - epub 3 | 4 | conda: 5 | file: docs/environment.yml 6 | -------------------------------------------------------------------------------- /release_guide.rst: -------------------------------------------------------------------------------- 1 | Cutting release memento 2 | ======================= 3 | 4 | Prepare the release 5 | ------------------- 6 | 7 | - update the version number 8 | - update the dependencies in setup.py 9 | - run checks in a clean environment 10 | - check that the release notes are up to date 11 | 12 | Test source distribution 13 | ------------------------ 14 | 15 | - clean/delete the dist directory 16 | - build the source release distribution:: 17 | python setup.py sdist 18 | - check the content of the created archive 19 | - upload the package on Test PyPI using twine:: 20 | twine upload --repository-url https://test.pypi.org/legacy/ dist/* 21 | - test the package from PyPI, installing using:: 22 | pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple your-package 23 | - fix any issue that show up and re-test (from the beginning of the section) 24 | 25 | Cut the final release 26 | --------------------- 27 | 28 | - commit the last changes 29 | - add a tag with the new version number 30 | - push the tag and then push the commit 31 | (this way Travis build has the proper git version) 32 | - push the release to PyPI using twine 33 | twine upload dist/* 34 | 35 | 36 | -------------------------------------------------------------------------------- /scripts/get_physics_laureates.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env/python3 2 | 3 | import json 4 | import requests 5 | 6 | data = requests.get("http://api.nobelprize.org/v1/laureate.json").json() 7 | for i in data['laureates']: 8 | # Only check the first prize (works for Curie) 9 | if(i['prizes'][0]['category'] == 'physics'): 10 | print(i['surname']) 11 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bdist_wheel] 2 | universal=1 -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -------------------------------------------------------------------------------------- 3 | # Copyright (c) 2015-2022, Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the Modified BSD License. 6 | # 7 | # The full license is in the file LICENSE, distributed with this software. 8 | # -------------------------------------------------------------------------------------- 9 | from setuptools import setup 10 | 11 | setup() 12 | -------------------------------------------------------------------------------- /test_requirements.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | pytest-cov 3 | pytest-qt 4 | pytest-timeout 5 | enaml_coverage_plugin -------------------------------------------------------------------------------- /tests/app/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/app/__init__.py -------------------------------------------------------------------------------- /tests/app/dependencies/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/app/errors/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/app/icons/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/app/icons/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Configuartion of the test of the icon manager plugin. 10 | 11 | """ 12 | import pytest 13 | import enaml 14 | 15 | with enaml.imports(): 16 | from enaml.workbench.core.core_manifest import CoreManifest 17 | from exopy.app.preferences.manifest import PreferencesManifest 18 | from exopy.app.icons.manifest import IconManagerManifest 19 | 20 | 21 | @pytest.fixture 22 | def icon_workbench(workbench, app_dir): 23 | """Register the icon mannager plugin and dependencies. 24 | 25 | """ 26 | workbench.register(CoreManifest()) 27 | workbench.register(PreferencesManifest()) 28 | workbench.register(IconManagerManifest()) 29 | 30 | yield workbench 31 | 32 | for m_id in ('exopy.app.icons', 'exopy.app.preferences'): 33 | try: 34 | workbench.unregister(m_id) 35 | except Exception: 36 | pass 37 | -------------------------------------------------------------------------------- /tests/app/icons/test_api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the api module and get_icon helper function. 10 | 11 | """ 12 | from exopy.app.icons.api import get_icon 13 | 14 | 15 | def test_get_icon(app, icon_workbench): 16 | """Test getting an icon using the helper function. 17 | 18 | """ 19 | assert get_icon(icon_workbench, 'folder-open') 20 | -------------------------------------------------------------------------------- /tests/app/icons/test_icon_theme.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the icon theme basic capabilities. 10 | 11 | """ 12 | import enaml 13 | 14 | with enaml.imports(): 15 | from .contributions import (DummyTheme, DummyThemeExtension, DumbIcon) 16 | 17 | 18 | def test_icon_theme(): 19 | """Test getting an icon from a theme. 20 | 21 | """ 22 | theme = DummyTheme() 23 | 24 | icon = theme.get_icon(None, 'dumb1') 25 | assert isinstance(icon, DumbIcon) 26 | assert icon.id == 'dumb1' 27 | 28 | assert theme.get_icon(None, '__non_existing__') is None 29 | 30 | 31 | def test_icon_theme_extension(): 32 | """Test listing the icons in an icon theme extension. 33 | 34 | """ 35 | ext = DummyThemeExtension() 36 | assert len(ext.icons()) == 1 37 | -------------------------------------------------------------------------------- /tests/app/log/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/app/log/__init__.py -------------------------------------------------------------------------------- /tests/app/packages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/app/packages/__init__.py -------------------------------------------------------------------------------- /tests/app/packages/packages_utils.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Manifest used to test the PackagesPlugin 10 | 11 | """ 12 | from enaml.workbench.api import PluginManifest 13 | 14 | enamldef Manifest1(PluginManifest): 15 | """Dummy manifest not declaring a priority. 16 | 17 | """ 18 | id = 'exopy.test1' 19 | 20 | 21 | enamldef Manifest2(PluginManifest): 22 | """Dummy manifest declaring a priority. 23 | 24 | """ 25 | id = 'exopy.test2' 26 | attr priority = 0 27 | -------------------------------------------------------------------------------- /tests/app/preferences/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/app/preferences/__init__.py -------------------------------------------------------------------------------- /tests/app/states/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/app/states/__init__.py -------------------------------------------------------------------------------- /tests/app/states/states_utils.enaml: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Dummy plugin to test the state plugin. 10 | 11 | """ 12 | from atom.api import Atom, Str 13 | from enaml.workbench.api import PluginManifest, Plugin, Extension 14 | 15 | from exopy.app.states.state import State 16 | 17 | 18 | class _State(Plugin): 19 | """Dummy plugin having a string member. 20 | 21 | """ 22 | string = Str('init') 23 | 24 | 25 | enamldef StateContributor(PluginManifest): 26 | """Plugin contributing a state object. 27 | 28 | """ 29 | id = u'test.states' 30 | factory = _State 31 | 32 | Extension: 33 | id = 'state' 34 | point = u'exopy.app.states.state' 35 | State: 36 | id = 'test.states.state' 37 | sync_members = ['string'] 38 | -------------------------------------------------------------------------------- /tests/app/test_api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Check that the api module can be imported. 10 | 11 | """ 12 | from exopy.app import api 13 | -------------------------------------------------------------------------------- /tests/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Pytest fixtures. 10 | 11 | """ 12 | import os 13 | from enaml.qt import QT_API 14 | os.environ.setdefault('PYTEST_QT_API', QT_API) 15 | 16 | pytest_plugins = ('exopy.testing.fixtures', 17 | 'exopy.testing.instruments.fixtures', 18 | 'exopy.testing.measurement.fixtures', 19 | 'exopy.testing.measurement.workspace.fixtures', 20 | 'exopy.testing.measurement.monitors.text_monitor.fixtures', 21 | 'exopy.testing.tasks.fixtures') 22 | 23 | def pytest_configure(config): 24 | config.addinivalue_line( 25 | "markers", "ui: mark test involving ui display" 26 | ) 27 | -------------------------------------------------------------------------------- /tests/instruments/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/instruments/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Fixture for testing the instruments manager plugin. 10 | 11 | """ 12 | import os 13 | 14 | import enaml 15 | import pytest 16 | from configobj import ConfigObj 17 | 18 | with enaml.imports(): 19 | from .contributors import InstrContributor1 20 | 21 | from exopy.testing.instruments.util import add_profile 22 | 23 | PROFILE_PATH = os.path.join(os.path.dirname(__file__), 24 | 'fp.instr.ini') 25 | 26 | 27 | @pytest.fixture 28 | def prof_plugin(app, instr_workbench): 29 | """Start the instrument plugin and add some profiles. 30 | 31 | """ 32 | instr_workbench.register(InstrContributor1()) 33 | c = ConfigObj(PROFILE_PATH, encoding='utf-8') 34 | add_profile(instr_workbench, c, ['fp1', 'fp2', 'fp3', 'fp4']) 35 | return instr_workbench.get_plugin('exopy.instruments') 36 | -------------------------------------------------------------------------------- /tests/instruments/connections/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/instruments/false_driver.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """False driver to test the declarator. 10 | 11 | """ 12 | from exopy.instruments.api import BaseStarter 13 | 14 | 15 | class FalseDriver(object): 16 | """False driver to test the declarator. 17 | 18 | """ 19 | pass 20 | 21 | 22 | class FalseDriver2(object): 23 | """False driver to test the declarator. 24 | 25 | """ 26 | pass 27 | 28 | 29 | class FalseDriver3(object): 30 | """False driver to test the declarator. 31 | 32 | """ 33 | pass 34 | 35 | 36 | class FalseDriver4(object): 37 | """False driver to test the declarator. 38 | 39 | """ 40 | pass 41 | 42 | 43 | class FalseDriver5(object): 44 | """False driver to test the declarator. 45 | 46 | """ 47 | pass 48 | 49 | 50 | class FalseDriver6(object): 51 | """False driver to test the declarator. 52 | 53 | """ 54 | pass 55 | 56 | 57 | class DummyStarter(BaseStarter): 58 | """Dummy starter for testing purposes. 59 | 60 | """ 61 | def start(self, driver, connection, settings): 62 | pass 63 | 64 | def check_infos(self, driver, connection, settings): 65 | return True, '' 66 | 67 | def reset(self, driver): 68 | pass 69 | 70 | def stop(self, driver): 71 | pass 72 | -------------------------------------------------------------------------------- /tests/instruments/false_profile.instr.ini: -------------------------------------------------------------------------------- 1 | id = 'profile' 2 | model_id = 'manufacturer.model' 3 | [connections] 4 | [[visa_tcpip]] 5 | address = '192.168.0.1' 6 | [[visa_usb]] 7 | resource = 'INSTR' 8 | [settings] 9 | [[lantz]] 10 | lib = 'visa.dll' 11 | id = 'false_settings' 12 | user_id = 'false_settings' 13 | [[lantz-sim]] 14 | lib = 'sim.yaml' 15 | id = 'false_settings' 16 | user_id = 'false_settings2' 17 | -------------------------------------------------------------------------------- /tests/instruments/fp.instr.ini: -------------------------------------------------------------------------------- 1 | id = 'fp' 2 | model_id = 'Dummy.001' 3 | [connections] 4 | [[false_connection]] 5 | address = '192.168.0.1' 6 | [[false_connection2]] 7 | resource = 'INSTR' 8 | [[false_connection3]] 9 | resource = 'INSTR' 10 | [settings] 11 | [[false_settings]] 12 | lib = 'visa.dll' 13 | id = 'false_settings' 14 | user_id = 'false_settings' 15 | [[false_settings2]] 16 | lib = 'sim.yaml' 17 | id = 'false_settings2' 18 | user_id = 'false_settings2' 19 | [[false_settings3]] 20 | lib = 'sim.yaml' 21 | id = 'false_settings3' 22 | user_id = 'false_settings3' 23 | -------------------------------------------------------------------------------- /tests/instruments/settings/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/instruments/settings/test_base_settings.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test for the base settings. 10 | 11 | """ 12 | from exopy.instruments.settings.base_settings import BaseSettings, Settings 13 | 14 | 15 | def test_base_settings(): 16 | """Test the base settings functions. 17 | 18 | """ 19 | s = BaseSettings(user_id='Dummy', declaration=Settings(id='test')) 20 | del s.title 21 | assert s.title == 'Dummy (test)' 22 | s.user_id = 'D' 23 | assert s.title == 'D (test)' 24 | assert 'id' in s.gather_infos() 25 | -------------------------------------------------------------------------------- /tests/instruments/test_api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test that the API can be imported. 10 | 11 | """ 12 | from exopy.instruments.api import * 13 | -------------------------------------------------------------------------------- /tests/instruments/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | -------------------------------------------------------------------------------- /tests/measurement/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/measurement/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Fixture for testing the measurement plugin. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /tests/measurement/editors/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/engines/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/hooks/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/monitors/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Load common fixture used to test text monitor capabilities. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/rules/__init__.py: -------------------------------------------------------------------------------- 1 | # -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/test_api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Simply test that the api module is not broken. 10 | 11 | """ 12 | 13 | 14 | def test_api_import(): 15 | """Test importing all the names defined in the api module. 16 | 17 | """ 18 | from exopy.measurement.monitors.text_monitor.api import BaseRule 19 | -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/test_entry.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the MonitoredEntry class. 10 | 11 | """ 12 | from exopy.measurement.monitors.text_monitor.entry import MonitoredEntry 13 | 14 | 15 | def test_entry_formatting(exopy_qtbot): 16 | """Test that we can correctly format an entry. 17 | 18 | """ 19 | e = MonitoredEntry(name='test', formatting='{a} = {b}', 20 | depend_on=['a', 'b']) 21 | 22 | e.update(dict(a=1, b=2, c=3)) 23 | 24 | def assert_value(): 25 | assert e.value == '1 = 2' 26 | exopy_qtbot.wait_until(assert_value) 27 | -------------------------------------------------------------------------------- /tests/measurement/monitors/text_monitor/test_manifest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the declarative function present in the manifest. 10 | 11 | """ 12 | import enaml 13 | 14 | from exopy.measurement.monitors.text_monitor.monitor import TextMonitor 15 | with enaml.imports(): 16 | from exopy.testing.util import show_and_close_widget 17 | from exopy.testing.windows import DockItemTestingWindow 18 | from exopy.measurement.monitors.text_monitor.monitor_views\ 19 | import TextMonitorEdit, TextMonitorItem 20 | 21 | 22 | def test_text_monitor_declration_functions(text_monitor_workbench, 23 | exopy_qtbot): 24 | """Test that we can create a monitor and its views. 25 | 26 | """ 27 | m_p = text_monitor_workbench.get_plugin('exopy.measurement') 28 | decl = m_p.get_declarations('monitor', 29 | ['exopy.text_monitor'])['exopy.text_monitor'] 30 | mon = decl.new(text_monitor_workbench, False) 31 | assert isinstance(mon, TextMonitor) 32 | edit_view = decl.make_view(text_monitor_workbench, mon) 33 | assert isinstance(edit_view, TextMonitorEdit) 34 | item = decl.create_item(text_monitor_workbench, None) 35 | assert isinstance(item, TextMonitorItem) 36 | show_and_close_widget(exopy_qtbot, DockItemTestingWindow(widget=item)) 37 | -------------------------------------------------------------------------------- /tests/measurement/test_base_tool.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the basic tools functionality. 10 | 11 | """ 12 | from atom.api import Int 13 | 14 | from exopy.measurement.base_tool import BaseMeasureTool, BaseToolDeclaration 15 | 16 | 17 | class ToolTester(BaseMeasureTool): 18 | 19 | test = Int().tag(pref=True) 20 | 21 | 22 | def test_check(): 23 | """Test that by default checks pass. 24 | 25 | """ 26 | res, _ = ToolTester().check(None) 27 | assert res 28 | 29 | 30 | def test_state_handling(): 31 | """Test basic getting/setting state. 32 | 33 | """ 34 | tool = ToolTester() 35 | tool.test = 1 36 | state = tool.get_state() 37 | assert state['test'] == '1' 38 | 39 | tool.test = 2 40 | tool.set_state(state) 41 | assert tool.test == 1 42 | 43 | 44 | def test_default_linking(measurement): 45 | """Test default linking to measurement. 46 | 47 | """ 48 | tool = ToolTester() 49 | tool.link_to_measurement(measurement) 50 | assert tool.measurement 51 | tool.unlink_from_measurement() 52 | assert not tool.measurement 53 | 54 | 55 | def test_has_view(): 56 | """Test that the has_view member of a BaseToolDeclaration is correctly set. 57 | 58 | """ 59 | class D(BaseToolDeclaration): 60 | pass 61 | 62 | assert not D().has_view 63 | 64 | class D2(BaseToolDeclaration): 65 | def make_view(self, tool): 66 | pass 67 | 68 | assert D2().has_view 69 | -------------------------------------------------------------------------------- /tests/measurement/workspace/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/measurement/workspace/test_commands.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/tasks/__init__.py -------------------------------------------------------------------------------- /tests/tasks/configs/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/configs/test_template.task.ini: -------------------------------------------------------------------------------- 1 | # Dummy comments 2 | task_id = exopy.ComplexTask 3 | task_name = Root 4 | dep_type = exopy.task 5 | [children_0] 6 | dep_type = exopy.task 7 | task_step = 0.001 8 | task_start = 4.0 9 | timing = False 10 | task_id = exopy.LoopTask 11 | task_name = Freq 12 | task_stop = 8.0 13 | -------------------------------------------------------------------------------- /tests/tasks/conftest.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Fixture for testing the task manager plugin. 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /tests/tasks/tasks/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/tasks/tasks/__init__.py -------------------------------------------------------------------------------- /tests/tasks/tasks/false_driver.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """False driver to test the declarator. 10 | 11 | """ 12 | from exopy.instruments.api import BaseStarter 13 | 14 | 15 | class FalseDriver(object): 16 | """False driver to test the declarator. 17 | 18 | """ 19 | pass 20 | 21 | 22 | class FalseDriver2(object): 23 | """False driver to test the declarator. 24 | 25 | """ 26 | pass 27 | 28 | 29 | class FalseDriver3(object): 30 | """False driver to test the declarator. 31 | 32 | """ 33 | pass 34 | 35 | 36 | class FalseDriver4(object): 37 | """False driver to test the declarator. 38 | 39 | """ 40 | pass 41 | 42 | 43 | class FalseDriver5(object): 44 | """False driver to test the declarator. 45 | 46 | """ 47 | pass 48 | 49 | 50 | class FalseDriver6(object): 51 | """False driver to test the declarator. 52 | 53 | """ 54 | pass 55 | 56 | 57 | class DummyStarter(BaseStarter): 58 | """Dummy starter for testing purposes. 59 | 60 | """ 61 | def start(self, driver, connection, settings): 62 | pass 63 | 64 | def check_infos(self, driver, connection, settings): 65 | return True, '' 66 | 67 | def reset(self, driver): 68 | pass 69 | 70 | def stop(self, driver): 71 | pass 72 | -------------------------------------------------------------------------------- /tests/tasks/tasks/fp.instr.ini: -------------------------------------------------------------------------------- 1 | id = 'fp' 2 | model_id = 'Dummy.001' 3 | [connections] 4 | [[false_connection]] 5 | address = '192.168.0.1' 6 | [[false_connection2]] 7 | resource = 'INSTR' 8 | [[false_connection3]] 9 | resource = 'INSTR' 10 | [settings] 11 | [[false_settings]] 12 | lib = 'visa.dll' 13 | id = 'false_settings' 14 | user_id = 'false_settings' 15 | [[false_settings2]] 16 | lib = 'sim.yaml' 17 | id = 'false_settings2' 18 | user_id = 'false_settings2' 19 | [[false_settings3]] 20 | lib = 'sim.yaml' 21 | id = 'false_settings3' 22 | user_id = 'false_settings3' 23 | -------------------------------------------------------------------------------- /tests/tasks/tasks/logic/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/tasks/test_shared_resources.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test for the shared ressources. 10 | 11 | Given how messy it is to properly test thread-safety I don't try and just 12 | check that in single thread things work. 13 | 14 | """ 15 | from exopy.tasks.tasks.shared_resources import SharedCounter, SharedDict 16 | 17 | 18 | def test_shared_counter(): 19 | """Test the shared counter. 20 | 21 | """ 22 | counter = SharedCounter() 23 | 24 | assert counter.count == 0 25 | counter.increment() 26 | assert counter.count == 1 27 | counter.decrement() 28 | assert counter.count == 0 29 | 30 | 31 | def test_shared_dict(): 32 | """Test the shared dict implementation. 33 | 34 | """ 35 | sdict = SharedDict() 36 | sdict = SharedDict(set) 37 | with sdict.safe_access('test') as v: 38 | assert v == set() 39 | v.add(1) 40 | 41 | with sdict.locked(): 42 | assert sdict['test'] == set([1]) 43 | assert sdict.get('test2') is None 44 | 45 | assert len(sdict) == 1 46 | sdict['test2'] = set([2]) 47 | assert sdict['test2'] == set([2]) 48 | del sdict['test2'] 49 | assert sdict['test2'] == set() 50 | assert 'test' in sdict 51 | 52 | for i in sdict: 53 | pass 54 | -------------------------------------------------------------------------------- /tests/tasks/tasks/util/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """tests.tasks.tasks.util : Tests for Util tasks 10 | 11 | """ 12 | -------------------------------------------------------------------------------- /tests/tasks/test_api.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test that the API can be imported. 10 | 11 | """ 12 | 13 | from exopy.tasks.api import * 14 | -------------------------------------------------------------------------------- /tests/tasks/test_infos.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test of the functionality of task, interface and config infos. 10 | 11 | """ 12 | from exopy.tasks.infos import ObjectDependentInfos, TaskInfos 13 | 14 | 15 | def test_dependencies_handling(): 16 | """Check that dependencies are correctly updated when instruments are. 17 | 18 | """ 19 | infos = TaskInfos(dependencies=['test']) 20 | 21 | infos.instruments = ['e'] 22 | 23 | assert len(infos.dependencies) == 3 24 | 25 | infos.instruments.update(['t', 'y']) 26 | 27 | assert len(infos.dependencies) == 3 28 | 29 | infos.instruments = [] 30 | 31 | assert set(['test']) == infos.dependencies 32 | 33 | 34 | def test_interfaces_walking(): 35 | """Check that interfaces walking does yield interfaces and respect depth. 36 | 37 | """ 38 | ints = {'interface1': 39 | ObjectDependentInfos(interfaces={'i': ObjectDependentInfos()}), 40 | 'interface2': ObjectDependentInfos()} 41 | infos = ObjectDependentInfos(interfaces=ints) 42 | print(list(zip(*infos.walk_interfaces()))) 43 | assert (sorted(list(zip(*infos.walk_interfaces()))[0]) == 44 | sorted(('interface1', 'i', 'interface2'))) 45 | 46 | assert (sorted(list(zip(*infos.walk_interfaces(0)))[0]) == 47 | sorted(('interface1', 'interface2'))) 48 | -------------------------------------------------------------------------------- /tests/tasks/utils/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/utils/test_templates.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test templates utility functions. 10 | 11 | """ 12 | from configobj import ConfigObj 13 | 14 | from exopy.tasks.utils.templates import save_template, load_template 15 | 16 | 17 | def test_save_template(tmpdir): 18 | """Test saving a template. 19 | 20 | """ 21 | path = str(tmpdir.join('test.template.ini')) 22 | save_template(path, {'test': 'é'}, 'à'*100) 23 | 24 | conf = ConfigObj(path) 25 | assert 'test' in conf 26 | assert len(conf.initial_comment) == 2 27 | 28 | 29 | def test_load_template(tmpdir): 30 | """Test loading a template. 31 | 32 | """ 33 | path = str(tmpdir.join('test.template.ini')) 34 | doc = 'à\nb\nc' 35 | save_template(path, {'test': 'é'}, doc) 36 | 37 | conf, docl = load_template(path) 38 | assert 'test' in conf 39 | assert docl == doc.replace('\n', ' ') 40 | -------------------------------------------------------------------------------- /tests/tasks/widgets/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/widgets/test_browsing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/widgets/test_building.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/tasks/widgets/test_saving.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | -------------------------------------------------------------------------------- /tests/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/utils/__init__.py -------------------------------------------------------------------------------- /tests/utils/config_test.ini: -------------------------------------------------------------------------------- 1 | default_path = F:\Anaconda\Spyder\Hqc_enaml\TESTs 2 | task_id = ComplexTask 3 | task_name = Root 4 | [children_task_0] 5 | task_step = 0.001 6 | task_start = 4.0 7 | timing = False 8 | task_id = LoopTask 9 | task_name = Freq 10 | task_stop = 8.0 11 | [[children_task_0]] 12 | mode = X 13 | task_id = LockInMeasureTask 14 | selected_profile = Lock8 15 | task_name = LockX 16 | selected_driver = SR7265-LI 17 | waiting_time = 0.0 18 | [[children_task_1]] 19 | mode = X 20 | task_id = LockInMeasureTask 21 | selected_profile = Lock12 22 | task_name = LockY 23 | selected_driver = SR7265-LI 24 | waiting_time = 0.0 25 | [[children_task_2]] 26 | array_size = {Freq_point_number} 27 | filename = test_cav1.dat 28 | task_id = SaveTask 29 | header = "" 30 | task_name = Save 31 | saving_target = File 32 | folder = {default_path} 33 | saved_values = "[(u'Freq', '{Freq_frequency}'), (u'X', '{LockX_x}'), (u'Y', '{LockY_x}'), (u'MLin', 'sqrt({LockX_x}**2 + {LockY_x}**2)'), (u'Phase', 'atan2({LockY_x}, {LockX_x})*180/Pi')]" 34 | [[task]] 35 | task_name = Freq 36 | task_id = RFSourceSetFrequencyTask 37 | frequency = "" 38 | selected_profile = RF19 39 | auto_start = False 40 | selected_driver = AgilentE8257D 41 | unit = GHz 42 | [children_task_1] 43 | task_id = FormulaTask 44 | formulas = "[(u'ba', '2.0*5.0')]" 45 | task_name = b 46 | [children_task_2] 47 | array_size = "" 48 | filename = "" 49 | task_id = SaveTask 50 | header = "" 51 | task_name = c 52 | saving_target = File 53 | folder = "" 54 | saved_values = "[(u'ca', '{a_aa}*{b_ba}')]" -------------------------------------------------------------------------------- /tests/utils/test_configobj_ops.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test operation on ConfigObj objects. 10 | 11 | """ 12 | import os 13 | from configobj import ConfigObj 14 | 15 | from exopy.utils.configobj_ops import traverse_config, include_configobj 16 | 17 | 18 | def test_include(): 19 | 20 | a = ConfigObj() 21 | a['r'] = 2 22 | b = ConfigObj() 23 | b['a'] = {} 24 | b['a']['t'] = 3 25 | 26 | include_configobj(a, b) 27 | assert a == {'r': 2, 'a': {'t': 3}} 28 | 29 | 30 | def test_traverse_configobj(): 31 | """Test looking for specific keys in a ConfigObj object. 32 | 33 | """ 34 | config = ConfigObj(os.path.join(os.path.dirname(__file__), 35 | 'config_test.ini')) 36 | 37 | ite = traverse_config(config) 38 | assert len(list(ite)) == 8 39 | 40 | assert len(list(traverse_config(config, 0))) == 4 41 | -------------------------------------------------------------------------------- /tests/utils/test_enaml_destroy_hook.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test the add_destroy_hook class generator. 10 | 11 | """ 12 | from enaml.widgets.api import Window 13 | 14 | from exopy.utils.enaml_destroy_hook import add_destroy_hook 15 | 16 | 17 | def test_destroy_hook(): 18 | """Check that the ended event is emitted in destroy. 19 | 20 | """ 21 | DestroyableWindow = add_destroy_hook(Window) 22 | 23 | assert 'd_member' in DestroyableWindow.ended.metadata 24 | 25 | test = DestroyableWindow() 26 | 27 | def observer(change): 28 | """Observer observing the ended event. 29 | 30 | """ 31 | observer.i += 1 32 | 33 | observer.i = 0 34 | 35 | test.observe('ended', observer) 36 | test.destroy() 37 | assert observer.i == 1 38 | -------------------------------------------------------------------------------- /tests/utils/test_mapping_utils.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test for the mapping utilities functions. 10 | 11 | """ 12 | from exopy.utils.mapping_utils import recursive_update 13 | 14 | 15 | def test_recurvise_update(): 16 | a = {'a': {'a1': 1}} 17 | b = {'b': True} 18 | c = {'a': {'a1': 2, 'c': 1}} 19 | 20 | recursive_update(a, b) 21 | assert a == {'a': {'a1': 1}, 'b': True} 22 | 23 | recursive_update(a, c) 24 | assert a == {'a': {'a1': 2, 'c': 1}, 'b': True} 25 | 26 | 27 | def test_recurvise_update2(): 28 | a = {} 29 | b = {'b': True} 30 | c = {'a': {'a1': 2, 'c': 1}} 31 | 32 | recursive_update(a, b) 33 | assert a == {'b': True} 34 | 35 | recursive_update(a, c) 36 | assert a == {'a': {'a1': 2, 'c': 1}, 'b': True} 37 | -------------------------------------------------------------------------------- /tests/utils/test_watchdog.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # ----------------------------------------------------------------------------- 3 | # Copyright 2015-2018 by Exopy Authors, see AUTHORS for more details. 4 | # 5 | # Distributed under the terms of the BSD license. 6 | # 7 | # The full license is in the file LICENCE, distributed with this software. 8 | # ----------------------------------------------------------------------------- 9 | """Test for the watchdog utilities. 10 | 11 | """ 12 | import pytest 13 | 14 | from watchdog.events import FileCreatedEvent, FileDeletedEvent, FileMovedEvent 15 | 16 | from exopy.utils.watchdog import SystematicFileUpdater 17 | 18 | 19 | @pytest.fixture 20 | def updater(): 21 | 22 | class Tester(SystematicFileUpdater): 23 | 24 | def __init__(self): 25 | self.counter = 0 26 | super(Tester, self).__init__(lambda: setattr(self, 'counter', 27 | self.counter + 1)) 28 | 29 | return Tester() 30 | 31 | 32 | def test_file_creation(updater): 33 | 34 | updater.on_created(FileCreatedEvent('')) 35 | assert updater.counter == 1 36 | 37 | 38 | def test_file_deletion(updater): 39 | 40 | updater.on_deleted(FileDeletedEvent('')) 41 | assert updater.counter == 1 42 | 43 | 44 | def test_file_moved(updater): 45 | 46 | updater.on_moved(FileMovedEvent('', '')) 47 | assert updater.counter == 1 48 | -------------------------------------------------------------------------------- /tests/utils/widgets/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Exopy/exopy/21e61430a23fe6ffe2edaeedb12d963c2c97dc2e/tests/utils/widgets/__init__.py --------------------------------------------------------------------------------