FS#77385 - [mayavi] Module import fails because of missing tests folder

Attached to Project: Community Packages
Opened by drocheam (drocheam) - Saturday, 04 February 2023, 15:12 GMT
Last edited by David Runge (dvzrv) - Monday, 06 February 2023, 16:55 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To David Runge (dvzrv)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Package Version: 4.8.1-3

The following line 114 in the PKGBUILD:

rm -frv "$pkgdir/$site_packages/$pkgname/tests/"

removes the mayavi/tests folder that is needed to import mayavi.api.
Otherwise the following command fails:

from mayavi.core.ui.api import MayaviScene, MlabSceneModel, SceneEditor

File "/usr/lib/python3.10/site-packages/mayavi/core/ui/api.py", line 5, in <module>
from mayavi.core.ui.engine_view import EngineView
File "/usr/lib/python3.10/site-packages/mayavi/core/ui/engine_view.py", line 27, in <module>
from mayavi.action.help import open_help_index, open_tvtk_docs
File "/usr/lib/python3.10/site-packages/mayavi/action/help.py", line 20, in <module>
import mayavi.api
File "/usr/lib/python3.10/site-packages/mayavi/api.py", line 4, in <module>
from mayavi.tests.runtests import m2_tests as test
ModuleNotFoundError: No module named 'mayavi.tests'


You can see mayavi.api directly importing mayavi.tests here:
https://github.com/enthought/mayavi/blob/05b02f41b141a6bd916faaed23cf82381a4b362e/mayavi/api.py


My suggestion would be to remove the line cleaning up the tests folder in the PKGBUILD.
This task depends upon

Closed by  David Runge (dvzrv)
Monday, 06 February 2023, 16:55 GMT
Reason for closing:  Fixed
Additional comments about closing:  Issue fixed with mayavi 4.8.1-4
Comment by Toolybird (Toolybird) - Monday, 06 February 2023, 06:14 GMT
This pkg is unfortunately orphaned i.e. no maintainer. But will assign to @dvrzv who kindly cleaned up the PKGBUILD recently.
Comment by David Runge (dvzrv) - Monday, 06 February 2023, 15:19 GMT
I have opened an upstream ticket for this, as I believe the tests should not be packaged: https://github.com/enthought/mayavi/issues/1208
Comment by drocheam (drocheam) - Monday, 06 February 2023, 15:38 GMT
Thank you for moving things upstream!
However, with mayavi releases and fixes coming only every few months, the issue would also persist for at least that long.
Wouldn't it be reasonable to adapt the PKGBUILD temporarily?
Comment by David Runge (dvzrv) - Monday, 06 February 2023, 16:50 GMT
I can even just remove that import.
Unfortunately the executable seems broken nonetheless due to some python-traits related stuff:

```
ERROR|2023-02-06 17:50:30,771|getting extensions from Plugin(id='envisage.ui.workbench', name='Workbench'), trait <my_action_sets>
Traceback (most recent call last):
File "/usr/lib/python3.10/site-packages/envisage/plugin.py", line 326, in _get_extensions_from_trait
extensions = getattr(self, trait_name)
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/workbench_plugin.py", line 185, in _my_action_sets_default
from .default_action_set import DefaultActionSet
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/default_action_set.py", line 21, in <module>
class DefaultActionSet(ActionSet):
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/default_action_set.py", line 25, in DefaultActionSet
Menu(
File "/usr/lib/python3.10/site-packages/traits/trait_types.py", line 2695, in validate
return TraitListObject(self, object, name, value)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 584, in __init__
super().__init__(
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in __init__
super().__init__(self.item_validator(item) for item in iterable)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in <genexpr>
super().__init__(self.item_validator(item) for item in iterable)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 867, in _item_validator
return trait_validator(object, self.name, value)
File "/usr/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: Each element of the 'groups' trait of a Menu instance must be a Group or None, but a value of 'OpenGroup' <class 'str'> was specified.
Traceback (most recent call last):
File "/usr/bin/mayavi2", line 8, in <module>
sys.exit(main())
File "/usr/lib/python3.10/site-packages/mayavi/scripts/mayavi2.py", line 600, in main
mayavi.main(sys.argv[1:])
File "/usr/lib/python3.10/site-packages/mayavi/plugins/app.py", line 197, in main
app.run()
File "/usr/lib/python3.10/site-packages/mayavi/plugins/mayavi_workbench_application.py", line 81, in run
window.open()
File "/usr/lib/python3.10/site-packages/pyface/workbench/workbench_window.py", line 159, in open
self._create()
File "/usr/lib/python3.10/site-packages/pyface/ui/qt4/application_window.py", line 138, in _create
self._create_trim_widgets(self.control)
File "/usr/lib/python3.10/site-packages/pyface/i_application_window.py", line 155, in _create_trim_widgets
self._create_menu_bar(parent)
File "/usr/lib/python3.10/site-packages/pyface/ui/qt4/application_window.py", line 79, in _create_menu_bar
if self.menu_bar_manager is not None:
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/workbench_window.py", line 106, in _menu_bar_manager_default
return self._action_manager_builder.create_menu_bar_manager("MenuBar")
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/workbench_window.py", line 224, in __action_manager_builder_default
window=self, action_sets=self.action_sets
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/workbench_window.py", line 168, in _action_sets_default
return [factory(window=self) for factory in self._action_sets]
File "/usr/lib/python3.10/site-packages/envisage/extension_point.py", line 122, in get
extensions = extension_registry.get_extensions(self.id)
File "/usr/lib/python3.10/site-packages/envisage/application.py", line 203, in get_extensions
return self.extension_registry.get_extensions(extension_point_id)
File "/usr/lib/python3.10/site-packages/envisage/extension_registry.py", line 110, in get_extensions
return self._get_extensions(extension_point_id)[:]
File "/usr/lib/python3.10/site-packages/envisage/provider_extension_registry.py", line 99, in _get_extensions
extensions = self._initialize_extensions(extension_point_id)
File "/usr/lib/python3.10/site-packages/envisage/provider_extension_registry.py", line 279, in _initialize_extensions
extensions.append(provider.get_extensions(extension_point_id)[:])
File "/usr/lib/python3.10/site-packages/envisage/plugin.py", line 137, in get_extensions
extensions = self._get_extensions_from_trait(trait_names[0])
File "/usr/lib/python3.10/site-packages/envisage/plugin.py", line 326, in _get_extensions_from_trait
extensions = getattr(self, trait_name)
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/workbench_plugin.py", line 185, in _my_action_sets_default
from .default_action_set import DefaultActionSet
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/default_action_set.py", line 21, in <module>
class DefaultActionSet(ActionSet):
File "/usr/lib/python3.10/site-packages/envisage/ui/workbench/default_action_set.py", line 25, in DefaultActionSet
Menu(
File "/usr/lib/python3.10/site-packages/traits/trait_types.py", line 2695, in validate
return TraitListObject(self, object, name, value)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 584, in __init__
super().__init__(
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in __init__
super().__init__(self.item_validator(item) for item in iterable)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in <genexpr>
super().__init__(self.item_validator(item) for item in iterable)
File "/usr/lib/python3.10/site-packages/traits/trait_list_object.py", line 867, in _item_validator
return trait_validator(object, self.name, value)
File "/usr/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: Each element of the 'groups' trait of a Menu instance must be a Group or None, but a value of 'OpenGroup' <class 'str'> was specified.
```

Loading...