enthought / envisage

Envisage is a Python-based framework for building applications whose functionalities can be extended by adding "plug-ins".
http://docs.enthought.com/envisage/
Other
82 stars 26 forks source link

Make sure test suite passes when ipykernel >= 6 is installed #456

Closed mdickinson closed 2 years ago

mdickinson commented 2 years ago

[From #448]

The IPython-related portions of Envisage currently require ipykernel < 6; changing that requires substantial effort.

To avoid this limitation holding back other users of Envisage who aren't interested in the IPython compatibility, we should ensure that Envisage and its test suite continue to function in an environment where ipykernel >= 6 is installed. In such an environment, functionality related to IPython should be disabled, and tests for that functionality should be skipped.

mdickinson commented 2 years ago

I can reproduce the issue on my macOS / zsh machine using the following shell commands from the root of the repository:

On my machine, this causes 20 test failures+errors, all IPython-related. Those tests should be being skipped.

Full shell session ``` mdickinson@mirzakhani envisage % python -m venv --clear ~/.venvs/envisage && source ~/.venvs/envisage/bin/activate (envisage) mdickinson@mirzakhani envisage % python -m pip install --upgrade pip setuptools wheel Requirement already satisfied: pip in /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages (21.2.4) Collecting pip Using cached pip-21.3.1-py3-none-any.whl (1.7 MB) Requirement already satisfied: setuptools in /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages (58.1.0) Collecting setuptools Using cached setuptools-60.5.0-py3-none-any.whl (958 kB) Collecting wheel Using cached wheel-0.37.1-py2.py3-none-any.whl (35 kB) Installing collected packages: wheel, setuptools, pip Attempting uninstall: setuptools Found existing installation: setuptools 58.1.0 Uninstalling setuptools-58.1.0: Successfully uninstalled setuptools-58.1.0 Attempting uninstall: pip Found existing installation: pip 21.2.4 Uninstalling pip-21.2.4: Successfully uninstalled pip-21.2.4 Successfully installed pip-21.3.1 setuptools-60.5.0 wheel-0.37.1 (envisage) mdickinson@mirzakhani envisage % python -m pip install -e . Obtaining file:///Users/mdickinson/Enthought/ETS/envisage Preparing metadata (setup.py) ... done Collecting apptools Using cached apptools-5.1.0.tar.gz (177 kB) Preparing metadata (setup.py) ... done Requirement already satisfied: setuptools in /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages (from envisage==6.1.0.dev844) (60.5.0) Collecting traits>=6.2 Using cached traits-6.3.2-cp310-cp310-macosx_10_9_x86_64.whl (5.0 MB) Collecting configobj Using cached configobj-5.0.6.tar.gz (33 kB) Preparing metadata (setup.py) ... done Collecting traitsui Using cached traitsui-7.2.1.tar.gz (6.7 MB) Preparing metadata (setup.py) ... done Collecting six Using cached six-1.16.0-py2.py3-none-any.whl (11 kB) Collecting pyface>=7.3.0 Using cached pyface-7.3.0.tar.gz (6.1 MB) Preparing metadata (setup.py) ... done Collecting importlib-metadata Using cached importlib_metadata-4.10.1-py3-none-any.whl (17 kB) Collecting importlib-resources>=1.1.0 Using cached importlib_resources-5.4.0-py3-none-any.whl (28 kB) Collecting zipp>=0.5 Using cached zipp-3.7.0-py3-none-any.whl (5.3 kB) Building wheels for collected packages: apptools, configobj, traitsui, pyface Building wheel for apptools (setup.py) ... done Created wheel for apptools: filename=apptools-5.1.0-py3-none-any.whl size=228775 sha256=ef02cbdddd0dae6d878f032527fa4601f80a182a9c7036096b4c982dd32fee30 Stored in directory: /Users/mdickinson/Library/Caches/pip/wheels/84/56/81/00eaf5bf241302a5d871a7d3757365b37215656b6f398366c7 Building wheel for configobj (setup.py) ... done Created wheel for configobj: filename=configobj-5.0.6-py3-none-any.whl size=34547 sha256=5c391ef4d82d7faeeb243c838e6c59bdfe41e1ef1186950800815b3da1834073 Stored in directory: /Users/mdickinson/Library/Caches/pip/wheels/90/cd/58/816b023d3eb0e2c9c6e0cd834a10a53e932e29d7c719298216 Building wheel for traitsui (setup.py) ... done Created wheel for traitsui: filename=traitsui-7.2.1-py3-none-any.whl size=1485989 sha256=62ae3375c15a3c080e45b42831bcce12ecda2afc7adce70964ee995b259d753c Stored in directory: /Users/mdickinson/Library/Caches/pip/wheels/40/ee/3b/498367f9d1d4f3c5bb095bc0cd42d576b6fe6ca83da587cfe3 Building wheel for pyface (setup.py) ... done Created wheel for pyface: filename=pyface-7.3.0-py3-none-any.whl size=1206711 sha256=4d384fce2c2668b6b1c5ad2ed3df978a8b06ec0a685bd94ad15664f1650f83e5 Stored in directory: /Users/mdickinson/Library/Caches/pip/wheels/c2/fe/c3/4ccd5990e0b14906b670713da24d7f2add6f28f98af06fead7 Successfully built apptools configobj traitsui pyface Installing collected packages: zipp, traits, importlib-resources, importlib-metadata, six, pyface, traitsui, configobj, apptools, envisage Running setup.py develop for envisage Successfully installed apptools-5.1.0 configobj-5.0.6 envisage-6.1.0.dev844 importlib-metadata-4.10.1 importlib-resources-5.4.0 pyface-7.3.0 six-1.16.0 traits-6.3.2 traitsui-7.2.1 zipp-3.7.0 (envisage) mdickinson@mirzakhani envisage % mkdir testdir; cd testdir (envisage) mdickinson@mirzakhani testdir % python -m unittest discover -v envisage test_sys_path_inserted (envisage.examples.tests.test__demo.TestDemoUtilities) ... ok test_info (envisage.examples.tests.test_etsdemo_info.TestETSDemoInfo) ... ok test_init_ipkernel_with_explicit_gui_backend (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_initial_namespace (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_initialize_twice (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_io_pub_thread_stopped (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_ipykernel_live_objects (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_ipython_util_io_globals_restored (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_ipython_util_io_globals_restored_if_they_dont_exist (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_lifecycle (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_no_new_atexit_handlers (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_no_threads_leaked (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_shutdown_closes_console_pipes (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_shutdown_restores_displayhook_and_excepthook (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_shutdown_restores_output_streams (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_shutdown_restores_sys_modules_main (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_shutdown_restores_sys_path (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_zmq_sockets_closed (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... skipped 'skipping tests that require the ipykernel package' test_get_service_twice (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_import_from_api (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_kernel_namespace_extension_point (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_kernel_service (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_no_init (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_service_not_used (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_service_used (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... skipped 'skipping tests that require the ipykernel package' test_file_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) file resource ... ok test_http_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) http resource ... ok test_no_such_file_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such file resource ... ok test_no_such_http_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such http resource ... ok test_no_such_package_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such package resource ... ok test_package_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) package resource ... ok test_unknown_protocol (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) unknown protocol ... ok test_add_extension_point_listener (envisage.tests.test_application.ApplicationTestCase) add extension point listener ... ok test_add_plugin (envisage.tests.test_application.ApplicationTestCase) add plugin ... ok test_extension_point (envisage.tests.test_application.ApplicationTestCase) extension point ... ok test_extension_point_resolution_occurs_after_plugin_start (envisage.tests.test_application.ApplicationTestCase) ... ok test_get_plugin (envisage.tests.test_application.ApplicationTestCase) get plugin ... ok test_home (envisage.tests.test_application.ApplicationTestCase) home ... ok test_no_plugins (envisage.tests.test_application.ApplicationTestCase) no plugins ... ok test_remove_extension_point_listener (envisage.tests.test_application.ApplicationTestCase) remove extension point listener ... ok test_remove_plugin (envisage.tests.test_application.ApplicationTestCase) remove plugin ... ok test_set_plugin_manager_at_contruction_time (envisage.tests.test_application.ApplicationTestCase) set plugin manager at construction time ... ok test_start_and_stop_errors (envisage.tests.test_application.ApplicationTestCase) start and stop errors ... ok test_veto_starting (envisage.tests.test_application.ApplicationTestCase) veto starting ... ok test_veto_stopping (envisage.tests.test_application.ApplicationTestCase) veto stopping ... ok test_application_gets_propogated_to_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_correct_exception_propagated_from_plugin_manager (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_no_plugins_if_there_are_no_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_no_plugins_if_there_are_no_plugins_in_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_plugins_in_a_multiple_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_plugins_in_a_single_plugin_manager (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_propogate_plugin_added_or_remove_events_from_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_dynamically_added_preferences (envisage.tests.test_core_plugin.CorePluginTestCase) dynamically added preferences ... ok test_dynamically_added_service_offer (envisage.tests.test_core_plugin.CorePluginTestCase) dynamically added service offer ... ok test_preferences (envisage.tests.test_core_plugin.CorePluginTestCase) preferences ... ok test_service_offers (envisage.tests.test_core_plugin.CorePluginTestCase) service offers ... ok test_unregister_service (envisage.tests.test_core_plugin.CorePluginTestCase) Unregister a service which was registered on the application ... ok test_unregister_service_offer (envisage.tests.test_core_plugin.CorePluginTestCase) Unregister a service that is contributed to the ... ok test_find_plugins_in_eggs_on_the_plugin_path (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_distributions_loads_good_distributions (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_distributions_raises_exceptions_by_default (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_plugins_loads_good_plugins (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_plugins_raises_exceptions_by_default (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_only_find_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_only_find_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_reflect_changes_to_the_plugin_path (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_exclude_multiple (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) exclude multiple ... ok test_exclude_specific (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) exclude specific ... ok test_include_multiple (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) include multiple ... ok test_include_specific (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) include specific ... ok test_no_include_or_exclude (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) no include or exclude ... ok test_uses_global_working_set_by_default (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) ... ok test_extension_point_changed (envisage.tests.test_extension_point.ExtensionPointTestCase) extension point changed ... ok test_extension_point_str_representation (envisage.tests.test_extension_point.ExtensionPointTestCase) test the string representation of the extension point ... ok test_extension_point_with_no_id (envisage.tests.test_extension_point.ExtensionPointTestCase) extension point with no Id ... ok test_invalid_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) invalid extension point ... ok test_invalid_extension_point_type (envisage.tests.test_extension_point.ExtensionPointTestCase) invalid extension point type ... ok test_mutate_extension_point_no_effect (envisage.tests.test_extension_point.ExtensionPointTestCase) Extension point is recomputed so mutation has no effect. ... ok test_no_reference_to_extension_registry (envisage.tests.test_extension_point.ExtensionPointTestCase) no reference to extension registry ... ok test_set_typed_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) set typed extension point ... ok test_set_untyped_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) set untyped extension point ... ok test_typed_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) typed extension point ... ok test_untyped_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) untyped extension point ... ok test_explicit_extension_registry (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) explicit extension registry ... ok test_set_extensions_via_registry (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) set extensions via registry ... ok test_set_extensions_via_trait (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) set extensions via trait ... ok test_should_be_able_to_bind_multiple_traits_on_a_single_object (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) ... ok test_untyped_extension_point (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) untyped extension point ... ok test_add_plugin (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) add plugin ... ok test_append (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) append ... ok test_assign_empty_list (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign empty list ... ok test_assign_empty_list_no_event (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign empty list no event ... ok test_assign_non_empty_list (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign non-empty list ... ok test_extension_point_change_event_str_representation (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) test string representation of the ExtensionPointChangedEvent class ... ok test_mutate_extension_point_no_events (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) Mutation will not emit change event for name_items ... ok test_remove (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) remove ... ok test_remove_plugin (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) remove plugin ... ok test_set_extension_point (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) set extension point ... ok test_add_method_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_add_nonmethod_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_method_listener_lifetime (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_nonmethod_listener_lifetime (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_remove_method_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_remove_nonmethod_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_add_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) add extension point ... ok test_empty_registry (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) empty registry ... ok test_get_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) get extension point ... ok test_get_extension_point_return_none_if_not_found (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) get extension point return None if id is not found. ... ok test_get_extensions_mutation_no_effect_if_undefined (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) test one cannot mutate the registry by mutating the list. ... ok test_remove_empty_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove empty_extension point ... ok test_remove_non_empty_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non-empty extension point ... ok test_remove_non_existent_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non existent extension point ... ok test_remove_non_existent_listener (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non existent listener ... ok test_set_extensions (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) set extensions ... ok test_id_strings (envisage.tests.test_ids.TestIds) ... ok test_id_strings_against_plugin_constants (envisage.tests.test_ids.TestIds) ... ok test_id_strings_against_plugin_constants_ipykernel (envisage.tests.test_ids.TestIds) ... skipped 'skipping tests that require IPython packages' test_import_dotted_module (envisage.tests.test_import_manager.ImportManagerTestCase) import dotted module ... ok test_import_dotted_symbol (envisage.tests.test_import_manager.ImportManagerTestCase) import dotted symbol ... ok test_import_nested_symbol (envisage.tests.test_import_manager.ImportManagerTestCase) import nested symbol ... ok test_find_plugins_in_packages_on_the_plugin_path (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_only_find_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_only_find_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_reflect_changes_to_the_plugin_path (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_add_plugins_to_empty_application (envisage.tests.test_plugin.PluginTestCase) add plugins to empty application ... ok test_contributes_to (envisage.tests.test_plugin.PluginTestCase) contributes to ... ok test_exception_in_trait_contribution (envisage.tests.test_plugin.PluginTestCase) exception in trait contribution ... ok test_home (envisage.tests.test_plugin.PluginTestCase) home ... ok test_id_policy (envisage.tests.test_plugin.PluginTestCase) id policy ... ok test_multiple_trait_contributions (envisage.tests.test_plugin.PluginTestCase) multiple trait contributions ... ok test_name_policy (envisage.tests.test_plugin.PluginTestCase) name policy ... ok test_no_recursion (envisage.tests.test_plugin.PluginTestCase) Regression test for #119. ... ok test_plugin_activator (envisage.tests.test_plugin.PluginTestCase) plugin activator. ... ok test_plugin_str_representation (envisage.tests.test_plugin.PluginTestCase) test the string representation of the plugin ... ok test_service (envisage.tests.test_plugin.PluginTestCase) service ... ok test_service_protocol (envisage.tests.test_plugin.PluginTestCase) service protocol ... ok test_get_plugin (envisage.tests.test_plugin_manager.PluginManagerTestCase) get plugin ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_iteration_over_plugins (envisage.tests.test_plugin_manager.PluginManagerTestCase) iteration over plugins ... ok test_only_include_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_only_include_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_start_and_stop (envisage.tests.test_plugin_manager.PluginManagerTestCase) start and stop ... ok test_start_and_stop_errors (envisage.tests.test_plugin_manager.PluginManagerTestCase) start and stop errors ... ok test_add_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) add extension point ... ok test_add_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) add provider ... ok test_empty_registry (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) empty registry ... ok test_get_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get extension point ... ok test_get_extension_point_return_none_if_not_found (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get extension point return None if id is not found. ... ok test_get_extensions_mutation_no_effect_if_undefined (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) test one cannot mutate the registry by mutating the list. ... ok test_get_providers (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get providers ... ok test_provider_extensions_changed (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) provider extensions changed ... ok test_providers (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) providers ... ok test_remove_empty_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove empty_extension point ... ok test_remove_non_empty_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non-empty extension point ... ok test_remove_non_existent_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non existent extension point ... ok test_remove_non_existent_listener (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non existent listener ... ok test_remove_non_existent_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider ... ok test_remove_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider ... ok test_remove_provider_with_no_contributions (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider with no contributions ... ok test_set_extensions (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) set extensions ... ok test_can_create_weakref_to_bound_method (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_deprecated (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_get_builtin_weakref_for_non_bound_method (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_internal_cache_is_weak_too (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_are_equal (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_are_identical (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_hash_equally (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_service_str_representation (envisage.tests.test_service.ServiceTestCase) test the string representation of the service ... ok test_service_trait_type (envisage.tests.test_service.ServiceTestCase) service trait type ... ok test_service_trait_type_with_no_service_registry (envisage.tests.test_service.ServiceTestCase) service trait type with no service registry ... ok test_function_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) function service factory ... ok test_get_and_set_service_properties (envisage.tests.test_service_registry.ServiceRegistryTestCase) get and set service properties ... ok test_get_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) get service ... ok test_get_service_with_query (envisage.tests.test_service_registry.ServiceRegistryTestCase) get service with query ... ok test_get_services (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services ... ok test_get_services_with_query (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services with query ... ok test_get_services_with_strings (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services with strings ... ok test_imported_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) imported service factory ... ok test_lazy_bound_method_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) lazy bound method service factory ... ok test_lazy_function_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) lazy function service factory ... ok test_minimize_and_maximize (envisage.tests.test_service_registry.ServiceRegistryTestCase) minimize and maximize ... ok test_should_get_exception_if_required_service_is_missing (envisage.tests.test_service_registry.ServiceRegistryTestCase) ... ok test_should_get_required_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) ... ok test_unregister_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) unregister service ... ok test_append (envisage.tests.test_slice.SliceTestCase) append ... ok test_assign_extended_slice (envisage.tests.test_slice.SliceTestCase) assign extended slice ... ok test_assign_item (envisage.tests.test_slice.SliceTestCase) assign item ... ok test_assign_slice (envisage.tests.test_slice.SliceTestCase) assign slice ... ok test_del_all (envisage.tests.test_slice.SliceTestCase) del all ... ok test_del_extended_slice (envisage.tests.test_slice.SliceTestCase) del extended slice ... ok test_del_item (envisage.tests.test_slice.SliceTestCase) del item ... ok test_del_slice (envisage.tests.test_slice.SliceTestCase) del slice ... ok test_extend (envisage.tests.test_slice.SliceTestCase) extend ... ok test_insert (envisage.tests.test_slice.SliceTestCase) insert ... ok test_pop (envisage.tests.test_slice.SliceTestCase) remove ... ok test_remove (envisage.tests.test_slice.SliceTestCase) remove ... ok test_reverse (envisage.tests.test_slice.SliceTestCase) reverse ... ok test_sort (envisage.tests.test_slice.SliceTestCase) sort ... ok test_dunder_version (envisage.tests.test_version.TestVersion) ... ok test_version_git_revision (envisage.tests.test_version.TestVersion) ... ok test_version_version (envisage.tests.test_version.TestVersion) ... ok test_versions_match (envisage.tests.test_version.TestVersion) ... ok test_action_with_nonexistent_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with non-existent group ... ok test_action_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with non-existent sibling ... ok test_action_with_path_component_that_is_not_a_menu (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with path component that is not a menu ... ok test_actions_and_menus_in_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions and menus in groups ... ok test_actions_make_submenus (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions make submenus ... ok test_actions_make_submenus_before_and_after (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions make submenus before and after ... ok test_actions_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions no groups ... ok test_duplicate_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) duplicate group ... ok test_duplicate_menu (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) duplicate menu ... ok test_explicit_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) explicit groups ... ok test_group_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) group with non-existent sibling ... ok test_menu_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) menu with non-existent sibling ... ok test_single_top_level_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) single top level group ... ok test_single_top_level_menu_with_no_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) single top level menu with no group ... ok test_sub_menus_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) sub-menus no groups ... ok test_top_level_menu_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menu group ... ok test_top_level_menu_non_existent_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menu non-existent group ... ok test_top_level_menus_no_groups_before_and_after (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menus no groups, before and after ... ok test_top_level_menus_with_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menus with_no groups ... ok test_gui_trait_expects_IGUI_interface (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_load (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_load_pickle_protocol_3 (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_save_with_protocol_3 (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' ---------------------------------------------------------------------- Ran 230 tests in 1.428s OK (skipped=28) (envisage) mdickinson@mirzakhani testdir % python -m pip install ipykernel Collecting ipykernel Downloading ipykernel-6.7.0-py3-none-any.whl (127 kB) |████████████████████████████████| 127 kB 2.0 MB/s Collecting tornado<7.0,>=4.2 Downloading tornado-6.1.tar.gz (497 kB) |████████████████████████████████| 497 kB 8.4 MB/s Preparing metadata (setup.py) ... done Collecting traitlets<6.0,>=5.1.0 Using cached traitlets-5.1.1-py3-none-any.whl (102 kB) Collecting nest-asyncio Downloading nest_asyncio-1.5.4-py3-none-any.whl (5.1 kB) Collecting matplotlib-inline<0.2.0,>=0.1.0 Using cached matplotlib_inline-0.1.3-py3-none-any.whl (8.2 kB) Collecting ipython>=7.23.1 Downloading ipython-8.0.1-py3-none-any.whl (747 kB) |████████████████████████████████| 747 kB 7.2 MB/s Collecting jupyter-client<8.0 Downloading jupyter_client-7.1.2-py3-none-any.whl (130 kB) |████████████████████████████████| 130 kB 4.1 MB/s Collecting debugpy<2.0,>=1.0.0 Downloading debugpy-1.5.1-py2.py3-none-any.whl (4.1 MB) |████████████████████████████████| 4.1 MB 573 kB/s Collecting appnope Using cached appnope-0.1.2-py2.py3-none-any.whl (4.3 kB) Requirement already satisfied: setuptools>=18.5 in /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages (from ipython>=7.23.1->ipykernel) (60.5.0) Collecting black Using cached black-21.12b0-py3-none-any.whl (156 kB) Collecting pygments Downloading Pygments-2.11.2-py3-none-any.whl (1.1 MB) |████████████████████████████████| 1.1 MB 12.2 MB/s Collecting jedi>=0.16 Using cached jedi-0.18.1-py2.py3-none-any.whl (1.6 MB) Collecting decorator Downloading decorator-5.1.1-py3-none-any.whl (9.1 kB) Collecting prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 Downloading prompt_toolkit-3.0.24-py3-none-any.whl (374 kB) |████████████████████████████████| 374 kB 8.9 MB/s Collecting stack-data Downloading stack_data-0.1.4-py3-none-any.whl (20 kB) Collecting pexpect>4.3 Using cached pexpect-4.8.0-py2.py3-none-any.whl (59 kB) Collecting backcall Using cached backcall-0.2.0-py2.py3-none-any.whl (11 kB) Collecting pickleshare Using cached pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB) Collecting python-dateutil>=2.1 Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB) |████████████████████████████████| 247 kB 6.8 MB/s Collecting jupyter-core>=4.6.0 Downloading jupyter_core-4.9.1-py3-none-any.whl (86 kB) |████████████████████████████████| 86 kB 7.1 MB/s Collecting pyzmq>=13 Downloading pyzmq-22.3.0-cp310-cp310-macosx_10_15_universal2.whl (2.0 MB) |████████████████████████████████| 2.0 MB 5.9 MB/s Collecting entrypoints Downloading entrypoints-0.3-py2.py3-none-any.whl (11 kB) Collecting parso<0.9.0,>=0.8.0 Using cached parso-0.8.3-py2.py3-none-any.whl (100 kB) Collecting ptyprocess>=0.5 Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB) Collecting wcwidth Using cached wcwidth-0.2.5-py2.py3-none-any.whl (30 kB) Requirement already satisfied: six>=1.5 in /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages (from python-dateutil>=2.1->jupyter-client<8.0->ipykernel) (1.16.0) Collecting mypy-extensions>=0.4.3 Using cached mypy_extensions-0.4.3-py2.py3-none-any.whl (4.5 kB) Collecting platformdirs>=2 Downloading platformdirs-2.4.1-py3-none-any.whl (14 kB) Collecting typing-extensions!=3.10.0.1 Using cached typing_extensions-4.0.1-py3-none-any.whl (22 kB) Collecting click>=7.1.2 Using cached click-8.0.3-py3-none-any.whl (97 kB) Collecting tomli<2.0.0,>=0.2.6 Using cached tomli-1.2.3-py3-none-any.whl (12 kB) Collecting pathspec<1,>=0.9.0 Using cached pathspec-0.9.0-py2.py3-none-any.whl (31 kB) Collecting pure-eval Downloading pure_eval-0.2.2-py3-none-any.whl (11 kB) Collecting asttokens Using cached asttokens-2.0.5-py2.py3-none-any.whl (20 kB) Collecting executing Downloading executing-0.8.2-py2.py3-none-any.whl (16 kB) Building wheels for collected packages: tornado Building wheel for tornado (setup.py) ... done Created wheel for tornado: filename=tornado-6.1-cp310-cp310-macosx_11_0_x86_64.whl size=416193 sha256=4cca78e565bfba4988a28064cf182b6770127239c519c661d12a5448b8c17c9b Stored in directory: /Users/mdickinson/Library/Caches/pip/wheels/80/32/8d/21cf0fa6ee4e083f6530e5b83dfdfa9489a3890d320803f4c7 Successfully built tornado Installing collected packages: wcwidth, typing-extensions, traitlets, tomli, pure-eval, ptyprocess, platformdirs, pathspec, parso, mypy-extensions, executing, click, asttokens, tornado, stack-data, pyzmq, python-dateutil, pygments, prompt-toolkit, pickleshare, pexpect, nest-asyncio, matplotlib-inline, jupyter-core, jedi, entrypoints, decorator, black, backcall, appnope, jupyter-client, ipython, debugpy, ipykernel Successfully installed appnope-0.1.2 asttokens-2.0.5 backcall-0.2.0 black-21.12b0 click-8.0.3 debugpy-1.5.1 decorator-5.1.1 entrypoints-0.3 executing-0.8.2 ipykernel-6.7.0 ipython-8.0.1 jedi-0.18.1 jupyter-client-7.1.2 jupyter-core-4.9.1 matplotlib-inline-0.1.3 mypy-extensions-0.4.3 nest-asyncio-1.5.4 parso-0.8.3 pathspec-0.9.0 pexpect-4.8.0 pickleshare-0.7.5 platformdirs-2.4.1 prompt-toolkit-3.0.24 ptyprocess-0.7.0 pure-eval-0.2.2 pygments-2.11.2 python-dateutil-2.8.2 pyzmq-22.3.0 stack-data-0.1.4 tomli-1.2.3 tornado-6.1 traitlets-5.1.1 typing-extensions-4.0.1 wcwidth-0.2.5 (envisage) mdickinson@mirzakhani testdir % python -m unittest discover -v envisage test_sys_path_inserted (envisage.examples.tests.test__demo.TestDemoUtilities) ... ok test_info (envisage.examples.tests.test_etsdemo_info.TestETSDemoInfo) ... ok test_init_ipkernel_with_explicit_gui_backend (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/tornado/ioloop.py:263: DeprecationWarning: There is no current event loop loop = asyncio.get_event_loop() /Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/tornado/platform/asyncio.py:279: DeprecationWarning: There is no current event loop super().initialize(asyncio.get_event_loop(), **kwargs) ERROR test_initial_namespace (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_initialize_twice (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_io_pub_thread_stopped (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_ipykernel_live_objects (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_ipython_util_io_globals_restored (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... ERROR test_ipython_util_io_globals_restored_if_they_dont_exist (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... ERROR test_lifecycle (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_no_new_atexit_handlers (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_no_threads_leaked (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_shutdown_closes_console_pipes (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_shutdown_restores_displayhook_and_excepthook (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_shutdown_restores_output_streams (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_shutdown_restores_sys_modules_main (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_shutdown_restores_sys_path (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_zmq_sockets_closed (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ... FAIL test_get_service_twice (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... FAIL test_import_from_api (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... ok test_kernel_namespace_extension_point (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... FAIL test_kernel_service (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... FAIL test_no_init (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... ok test_service_not_used (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... ok test_service_used (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ... FAIL test_file_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) file resource ... ok test_http_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) http resource ... ok test_no_such_file_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such file resource ... ok test_no_such_http_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such http resource ... ok test_no_such_package_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) no such package resource ... ok test_package_resource (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) package resource ... ok test_unknown_protocol (envisage.resource.tests.test_resource_manager.ResourceManagerTestCase) unknown protocol ... ok test_add_extension_point_listener (envisage.tests.test_application.ApplicationTestCase) add extension point listener ... ok test_add_plugin (envisage.tests.test_application.ApplicationTestCase) add plugin ... ok test_extension_point (envisage.tests.test_application.ApplicationTestCase) extension point ... ok test_extension_point_resolution_occurs_after_plugin_start (envisage.tests.test_application.ApplicationTestCase) ... ok test_get_plugin (envisage.tests.test_application.ApplicationTestCase) get plugin ... ok test_home (envisage.tests.test_application.ApplicationTestCase) home ... ok test_no_plugins (envisage.tests.test_application.ApplicationTestCase) no plugins ... ok test_remove_extension_point_listener (envisage.tests.test_application.ApplicationTestCase) remove extension point listener ... ok test_remove_plugin (envisage.tests.test_application.ApplicationTestCase) remove plugin ... ok test_set_plugin_manager_at_contruction_time (envisage.tests.test_application.ApplicationTestCase) set plugin manager at construction time ... ok test_start_and_stop_errors (envisage.tests.test_application.ApplicationTestCase) start and stop errors ... ok test_veto_starting (envisage.tests.test_application.ApplicationTestCase) veto starting ... ok test_veto_stopping (envisage.tests.test_application.ApplicationTestCase) veto stopping ... ok test_application_gets_propogated_to_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_correct_exception_propagated_from_plugin_manager (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_no_plugins_if_there_are_no_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_no_plugins_if_there_are_no_plugins_in_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_plugins_in_a_multiple_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_find_plugins_in_a_single_plugin_manager (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_propogate_plugin_added_or_remove_events_from_plugin_managers (envisage.tests.test_composite_plugin_manager.CompositePluginManagerTestCase) ... ok test_dynamically_added_preferences (envisage.tests.test_core_plugin.CorePluginTestCase) dynamically added preferences ... ok test_dynamically_added_service_offer (envisage.tests.test_core_plugin.CorePluginTestCase) dynamically added service offer ... ok test_preferences (envisage.tests.test_core_plugin.CorePluginTestCase) preferences ... ok test_service_offers (envisage.tests.test_core_plugin.CorePluginTestCase) service offers ... ok test_unregister_service (envisage.tests.test_core_plugin.CorePluginTestCase) Unregister a service which was registered on the application ... ok test_unregister_service_offer (envisage.tests.test_core_plugin.CorePluginTestCase) Unregister a service that is contributed to the ... ok test_find_plugins_in_eggs_on_the_plugin_path (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_distributions_loads_good_distributions (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_distributions_raises_exceptions_by_default (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_plugins_loads_good_plugins (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_broken_plugins_raises_exceptions_by_default (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_only_find_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_only_find_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_reflect_changes_to_the_plugin_path (envisage.tests.test_egg_basket_plugin_manager.EggBasketPluginManagerTestCase) ... ok test_exclude_multiple (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) exclude multiple ... ok test_exclude_specific (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) exclude specific ... ok test_include_multiple (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) include multiple ... ok test_include_specific (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) include specific ... ok test_no_include_or_exclude (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) no include or exclude ... ok test_uses_global_working_set_by_default (envisage.tests.test_egg_plugin_manager.EggPluginManagerTestCase) ... ok test_extension_point_changed (envisage.tests.test_extension_point.ExtensionPointTestCase) extension point changed ... ok test_extension_point_str_representation (envisage.tests.test_extension_point.ExtensionPointTestCase) test the string representation of the extension point ... ok test_extension_point_with_no_id (envisage.tests.test_extension_point.ExtensionPointTestCase) extension point with no Id ... ok test_invalid_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) invalid extension point ... ok test_invalid_extension_point_type (envisage.tests.test_extension_point.ExtensionPointTestCase) invalid extension point type ... ok test_mutate_extension_point_no_effect (envisage.tests.test_extension_point.ExtensionPointTestCase) Extension point is recomputed so mutation has no effect. ... ok test_no_reference_to_extension_registry (envisage.tests.test_extension_point.ExtensionPointTestCase) no reference to extension registry ... ok test_set_typed_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) set typed extension point ... ok test_set_untyped_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) set untyped extension point ... ok test_typed_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) typed extension point ... ok test_untyped_extension_point (envisage.tests.test_extension_point.ExtensionPointTestCase) untyped extension point ... ok test_explicit_extension_registry (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) explicit extension registry ... ok test_set_extensions_via_registry (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) set extensions via registry ... ok test_set_extensions_via_trait (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) set extensions via trait ... ok test_should_be_able_to_bind_multiple_traits_on_a_single_object (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) ... ok test_untyped_extension_point (envisage.tests.test_extension_point_binding.ExtensionPointBindingTestCase) untyped extension point ... ok test_add_plugin (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) add plugin ... ok test_append (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) append ... ok test_assign_empty_list (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign empty list ... ok test_assign_empty_list_no_event (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign empty list no event ... ok test_assign_non_empty_list (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) assign non-empty list ... ok test_extension_point_change_event_str_representation (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) test string representation of the ExtensionPointChangedEvent class ... ok test_mutate_extension_point_no_events (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) Mutation will not emit change event for name_items ... ok test_remove (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) remove ... ok test_remove_plugin (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) remove plugin ... ok test_set_extension_point (envisage.tests.test_extension_point_changed.ExtensionPointChangedTestCase) set extension point ... ok test_add_method_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_add_nonmethod_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_method_listener_lifetime (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_nonmethod_listener_lifetime (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_remove_method_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_remove_nonmethod_listener (envisage.tests.test_extension_registry.ExtensionPointListenerLifetimeTestCase) ... ok test_add_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) add extension point ... ok test_empty_registry (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) empty registry ... ok test_get_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) get extension point ... ok test_get_extension_point_return_none_if_not_found (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) get extension point return None if id is not found. ... ok test_get_extensions_mutation_no_effect_if_undefined (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) test one cannot mutate the registry by mutating the list. ... ok test_remove_empty_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove empty_extension point ... ok test_remove_non_empty_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non-empty extension point ... ok test_remove_non_existent_extension_point (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non existent extension point ... ok test_remove_non_existent_listener (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) remove non existent listener ... ok test_set_extensions (envisage.tests.test_extension_registry.ExtensionRegistryTestCase) set extensions ... ok test_id_strings (envisage.tests.test_ids.TestIds) ... ok test_id_strings_against_plugin_constants (envisage.tests.test_ids.TestIds) ... ok test_id_strings_against_plugin_constants_ipykernel (envisage.tests.test_ids.TestIds) ... ok test_import_dotted_module (envisage.tests.test_import_manager.ImportManagerTestCase) import dotted module ... ok test_import_dotted_symbol (envisage.tests.test_import_manager.ImportManagerTestCase) import dotted symbol ... ok test_import_nested_symbol (envisage.tests.test_import_manager.ImportManagerTestCase) import nested symbol ... ok test_find_plugins_in_packages_on_the_plugin_path (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_only_find_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_only_find_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_reflect_changes_to_the_plugin_path (envisage.tests.test_package_plugin_manager.PackagePluginManagerTestCase) ... ok test_add_plugins_to_empty_application (envisage.tests.test_plugin.PluginTestCase) add plugins to empty application ... ok test_contributes_to (envisage.tests.test_plugin.PluginTestCase) contributes to ... ok test_exception_in_trait_contribution (envisage.tests.test_plugin.PluginTestCase) exception in trait contribution ... ok test_home (envisage.tests.test_plugin.PluginTestCase) home ... ok test_id_policy (envisage.tests.test_plugin.PluginTestCase) id policy ... ok test_multiple_trait_contributions (envisage.tests.test_plugin.PluginTestCase) multiple trait contributions ... ok test_name_policy (envisage.tests.test_plugin.PluginTestCase) name policy ... ok test_no_recursion (envisage.tests.test_plugin.PluginTestCase) Regression test for #119. ... ok test_plugin_activator (envisage.tests.test_plugin.PluginTestCase) plugin activator. ... ok test_plugin_str_representation (envisage.tests.test_plugin.PluginTestCase) test the string representation of the plugin ... ok test_service (envisage.tests.test_plugin.PluginTestCase) service ... ok test_service_protocol (envisage.tests.test_plugin.PluginTestCase) service protocol ... ok test_get_plugin (envisage.tests.test_plugin_manager.PluginManagerTestCase) get plugin ... ok test_ignore_plugins_matching_a_wildcard_in_the_exclude_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_ignore_plugins_whose_ids_are_in_the_exclude_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_iteration_over_plugins (envisage.tests.test_plugin_manager.PluginManagerTestCase) iteration over plugins ... ok test_only_include_plugins_matching_a_wildcard_in_the_include_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_only_include_plugins_whose_ids_are_in_the_include_list (envisage.tests.test_plugin_manager.PluginManagerTestCase) ... ok test_start_and_stop (envisage.tests.test_plugin_manager.PluginManagerTestCase) start and stop ... ok test_start_and_stop_errors (envisage.tests.test_plugin_manager.PluginManagerTestCase) start and stop errors ... ok test_add_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) add extension point ... ok test_add_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) add provider ... ok test_empty_registry (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) empty registry ... ok test_get_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get extension point ... ok test_get_extension_point_return_none_if_not_found (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get extension point return None if id is not found. ... ok test_get_extensions_mutation_no_effect_if_undefined (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) test one cannot mutate the registry by mutating the list. ... ok test_get_providers (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) get providers ... ok test_provider_extensions_changed (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) provider extensions changed ... ok test_providers (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) providers ... ok test_remove_empty_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove empty_extension point ... ok test_remove_non_empty_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non-empty extension point ... ok test_remove_non_existent_extension_point (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non existent extension point ... ok test_remove_non_existent_listener (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove non existent listener ... ok test_remove_non_existent_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider ... ok test_remove_provider (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider ... ok test_remove_provider_with_no_contributions (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) remove provider with no contributions ... ok test_set_extensions (envisage.tests.test_provider_extension_registry.ProviderExtensionRegistryTestCase) set extensions ... ok test_can_create_weakref_to_bound_method (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_deprecated (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_get_builtin_weakref_for_non_bound_method (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_internal_cache_is_weak_too (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_are_equal (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_are_identical (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_two_weakrefs_to_bound_method_hash_equally (envisage.tests.test_safeweakref.SafeWeakrefTestCase) ... ok test_service_str_representation (envisage.tests.test_service.ServiceTestCase) test the string representation of the service ... ok test_service_trait_type (envisage.tests.test_service.ServiceTestCase) service trait type ... ok test_service_trait_type_with_no_service_registry (envisage.tests.test_service.ServiceTestCase) service trait type with no service registry ... ok test_function_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) function service factory ... ok test_get_and_set_service_properties (envisage.tests.test_service_registry.ServiceRegistryTestCase) get and set service properties ... ok test_get_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) get service ... ok test_get_service_with_query (envisage.tests.test_service_registry.ServiceRegistryTestCase) get service with query ... ok test_get_services (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services ... ok test_get_services_with_query (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services with query ... ok test_get_services_with_strings (envisage.tests.test_service_registry.ServiceRegistryTestCase) get services with strings ... ok test_imported_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) imported service factory ... ok test_lazy_bound_method_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) lazy bound method service factory ... ok test_lazy_function_service_factory (envisage.tests.test_service_registry.ServiceRegistryTestCase) lazy function service factory ... ok test_minimize_and_maximize (envisage.tests.test_service_registry.ServiceRegistryTestCase) minimize and maximize ... ok test_should_get_exception_if_required_service_is_missing (envisage.tests.test_service_registry.ServiceRegistryTestCase) ... ok test_should_get_required_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) ... ok test_unregister_service (envisage.tests.test_service_registry.ServiceRegistryTestCase) unregister service ... ok test_append (envisage.tests.test_slice.SliceTestCase) append ... ok test_assign_extended_slice (envisage.tests.test_slice.SliceTestCase) assign extended slice ... ok test_assign_item (envisage.tests.test_slice.SliceTestCase) assign item ... ok test_assign_slice (envisage.tests.test_slice.SliceTestCase) assign slice ... ok test_del_all (envisage.tests.test_slice.SliceTestCase) del all ... ok test_del_extended_slice (envisage.tests.test_slice.SliceTestCase) del extended slice ... ok test_del_item (envisage.tests.test_slice.SliceTestCase) del item ... ok test_del_slice (envisage.tests.test_slice.SliceTestCase) del slice ... ok test_extend (envisage.tests.test_slice.SliceTestCase) extend ... ok test_insert (envisage.tests.test_slice.SliceTestCase) insert ... ok test_pop (envisage.tests.test_slice.SliceTestCase) remove ... ok test_remove (envisage.tests.test_slice.SliceTestCase) remove ... ok test_reverse (envisage.tests.test_slice.SliceTestCase) reverse ... ok test_sort (envisage.tests.test_slice.SliceTestCase) sort ... ok test_dunder_version (envisage.tests.test_version.TestVersion) ... ok test_version_git_revision (envisage.tests.test_version.TestVersion) ... ok test_version_version (envisage.tests.test_version.TestVersion) ... ok test_versions_match (envisage.tests.test_version.TestVersion) ... ok test_action_with_nonexistent_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with non-existent group ... ok test_action_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with non-existent sibling ... ok test_action_with_path_component_that_is_not_a_menu (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) action with path component that is not a menu ... ok test_actions_and_menus_in_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions and menus in groups ... ok test_actions_make_submenus (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions make submenus ... ok test_actions_make_submenus_before_and_after (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions make submenus before and after ... ok test_actions_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) actions no groups ... ok test_duplicate_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) duplicate group ... ok test_duplicate_menu (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) duplicate menu ... ok test_explicit_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) explicit groups ... ok test_group_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) group with non-existent sibling ... ok test_menu_with_nonexistent_sibling (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) menu with non-existent sibling ... ok test_single_top_level_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) single top level group ... ok test_single_top_level_menu_with_no_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) single top level menu with no group ... ok test_sub_menus_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) sub-menus no groups ... ok test_top_level_menu_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menu group ... ok test_top_level_menu_non_existent_group (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menu non-existent group ... ok test_top_level_menus_no_groups_before_and_after (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menus no groups, before and after ... ok test_top_level_menus_with_no_groups (envisage.ui.action.tests.test_action_manager_builder.ActionManagerBuilderTestCase) top level menus with_no groups ... ok test_gui_trait_expects_IGUI_interface (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_load (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_load_pickle_protocol_3 (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' test_layout_save_with_protocol_3 (envisage.ui.tasks.tests.test_tasks_application.TestTasksApplication) ... skipped 'Test requires a non-null GUI backend' ====================================================================== ERROR: test_init_ipkernel_with_explicit_gui_backend (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 252, in test_init_ipkernel_with_explicit_gui_backend kernel.init_ipkernel(gui_backend="qt4") File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 638, in initialize self.log_connection_info() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/kernelapp.py", line 124, in log_connection_info self.ports = dict( AttributeError: can't set attribute 'ports' ====================================================================== ERROR: test_ipython_util_io_globals_restored (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 128, in test_ipython_util_io_globals_restored original_io_stdin = IPython.utils.io.stdin AttributeError: module 'IPython.utils.io' has no attribute 'stdin' ====================================================================== ERROR: test_ipython_util_io_globals_restored_if_they_dont_exist (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 140, in test_ipython_util_io_globals_restored_if_they_dont_exist original_io_stdin = IPython.utils.io.stdin AttributeError: module 'IPython.utils.io' has no attribute 'stdin' ====================================================================== FAIL: test_initial_namespace (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 80, in test_initial_namespace kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_initialize_twice (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 221, in test_initialize_twice kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_io_pub_thread_stopped (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 159, in test_io_pub_thread_stopped self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_ipykernel_live_objects (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 200, in test_ipykernel_live_objects self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_lifecycle (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 66, in test_lifecycle kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_no_new_atexit_handlers (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 184, in test_no_new_atexit_handlers self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_no_threads_leaked (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 166, in test_no_threads_leaked self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_shutdown_closes_console_pipes (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 119, in test_shutdown_closes_console_pipes kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_shutdown_restores_displayhook_and_excepthook (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 105, in test_shutdown_restores_displayhook_and_excepthook self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_shutdown_restores_output_streams (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 90, in test_shutdown_restores_output_streams self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_shutdown_restores_sys_modules_main (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 98, in test_shutdown_restores_sys_modules_main self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_shutdown_restores_sys_path (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 113, in test_shutdown_restores_sys_path self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_zmq_sockets_closed (envisage.plugins.ipython_kernel.tests.test_internal_ipkernel.TestInternalIPKernel) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 192, in test_zmq_sockets_closed self.create_and_destroy_kernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_internal_ipkernel.py", line 280, in create_and_destroy_kernel kernel.init_ipkernel(gui_backend=None) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_get_service_twice (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_ipython_kernel_plugin.py", line 105, in test_get_service_twice kernel1 = app.get_service(IPYTHON_KERNEL_PROTOCOL) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/application.py", line 365, in get_service service = self.service_registry.get_service( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 87, in get_service services = self.get_services(protocol, query, minimize, maximize) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 123, in get_services obj = self._resolve_factory( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 265, in _resolve_factory obj = obj(**properties) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/ipython_kernel_plugin.py", line 102, in _create_kernel kernel.init_ipkernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_kernel_namespace_extension_point (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_ipython_kernel_plugin.py", line 99, in test_kernel_namespace_extension_point kernel = app.get_service(IPYTHON_KERNEL_PROTOCOL) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/application.py", line 365, in get_service service = self.service_registry.get_service( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 87, in get_service services = self.get_services(protocol, query, minimize, maximize) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 123, in get_services obj = self._resolve_factory( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 265, in _resolve_factory obj = obj(**properties) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/ipython_kernel_plugin.py", line 102, in _create_kernel kernel.init_ipkernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_kernel_service (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_ipython_kernel_plugin.py", line 78, in test_kernel_service kernel = app.get_service(IPYTHON_KERNEL_PROTOCOL) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/application.py", line 365, in get_service service = self.service_registry.get_service( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 87, in get_service services = self.get_services(protocol, query, minimize, maximize) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 123, in get_services obj = self._resolve_factory( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 265, in _resolve_factory obj = obj(**properties) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/ipython_kernel_plugin.py", line 102, in _create_kernel kernel.init_ipkernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ====================================================================== FAIL: test_service_used (envisage.plugins.ipython_kernel.tests.test_ipython_kernel_plugin.TestIPythonKernelPlugin) ---------------------------------------------------------------------- Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/tests/test_ipython_kernel_plugin.py", line 154, in test_service_used app.get_service(IPYTHON_KERNEL_PROTOCOL) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/application.py", line 365, in get_service service = self.service_registry.get_service( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 87, in get_service services = self.get_services(protocol, query, minimize, maximize) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 123, in get_services obj = self._resolve_factory( File "/Users/mdickinson/Enthought/ETS/envisage/envisage/service_registry.py", line 265, in _resolve_factory obj = obj(**properties) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/ipython_kernel_plugin.py", line 102, in _create_kernel kernel.init_ipkernel() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 103, in init_ipkernel self.ipkernel = _gui_kernel(gui_backend) File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/internal_ipkernel.py", line 42, in _gui_kernel kernel.initialize(argv) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/traitlets/config/application.py", line 88, in inner return method(app, *args, **kwargs) File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 632, in initialize self.init_sockets() File "/Users/mdickinson/.venvs/envisage/lib/python3.10/site-packages/ipykernel/kernelapp.py", line 276, in init_sockets assert self.context is None, "init_sockets cannot be called twice!" AssertionError: init_sockets cannot be called twice! ---------------------------------------------------------------------- Ran 230 tests in 1.747s FAILED (failures=17, errors=3, skipped=4) Exception ignored in atexit callback: > Traceback (most recent call last): File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/kernelapp.py", line 188, in close self.close_shell() File "/Users/mdickinson/Enthought/ETS/envisage/envisage/plugins/ipython_kernel/kernelapp.py", line 205, in close_shell shell = self.kernel.shell AttributeError: 'NoneType' object has no attribute 'shell' (envisage) mdickinson@mirzakhani testdir % ```