From db0a1d074827783ab5d9e47d71832374eadb73cc Mon Sep 17 00:00:00 2001 From: afernand Date: Wed, 30 Oct 2024 12:13:17 +0100 Subject: [PATCH 1/4] fix: Reduce import time of the library --- .../backends/pyvista/pyvista.py | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py index 163ff4cd..49a7bc12 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py @@ -22,8 +22,7 @@ """Provides a wrapper to aid in plotting.""" from abc import abstractmethod -from beartype.typing import Any, Dict, List, Optional, Union -import numpy as np +from beartype.typing import TYPE_CHECKING, Any, Dict, List, Optional, Union import pyvista as pv from vtkmodules.vtkCommonCore import vtkCommand from vtkmodules.vtkInteractionWidgets import vtkHoverWidget @@ -32,10 +31,6 @@ import ansys.tools.visualization_interface from ansys.tools.visualization_interface.backends._base import BaseBackend from ansys.tools.visualization_interface.backends.pyvista.pyvista_interface import PyVistaInterface -from ansys.tools.visualization_interface.backends.pyvista.trame_local import ( - _HAS_TRAME, - TrameVisualizer, -) from ansys.tools.visualization_interface.backends.pyvista.widgets.displace_arrows import ( CameraPanDirection, DisplacementArrow, @@ -57,6 +52,9 @@ from ansys.tools.visualization_interface.utils.color import Color from ansys.tools.visualization_interface.utils.logger import logger +if TYPE_CHECKING: + import numpy as np + class PyVistaBackendInterface(BaseBackend): """Provides the interface for the Visualization Interface Tool plotter. @@ -131,6 +129,8 @@ def __init__( self._origin_colors = {} # Enable the use of trame if requested and available + from ansys.tools.visualization_interface.backends.pyvista.trame_local import _HAS_TRAME + if self._use_trame and _HAS_TRAME: # avoids GUI window popping up pv.OFF_SCREEN = True @@ -193,7 +193,7 @@ def add_widget(self, widget: Union[PlotterWidget, List[PlotterWidget]]): self._widgets.append(widget) widget.update() - def select_object(self, custom_object: Union[MeshObjectPlot, EdgePlot], pt: np.ndarray) -> None: + def select_object(self, custom_object: Union[MeshObjectPlot, EdgePlot], pt: "np.ndarray") -> None: """Select a custom object in the plotter. This method highlights the edges of a body and adds a label. It also adds @@ -462,7 +462,13 @@ def show_plotter(self, screenshot: Optional[str] = None) -> None: Path for saving a screenshot of the image that is being represented. """ + from ansys.tools.visualization_interface.backends.pyvista.trame_local import ( + _HAS_TRAME, + TrameVisualizer, + ) + if self._use_trame and _HAS_TRAME: + visualizer = TrameVisualizer() visualizer.set_scene(self._pl) visualizer.show() From 3c27347cf9d938e61c69eb04ecb1b679baa513ad Mon Sep 17 00:00:00 2001 From: pyansys-ci-bot <92810346+pyansys-ci-bot@users.noreply.github.com> Date: Wed, 30 Oct 2024 11:20:12 +0000 Subject: [PATCH 2/4] chore: adding changelog file 179.fixed.md [dependabot-skip] --- doc/changelog.d/179.fixed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changelog.d/179.fixed.md diff --git a/doc/changelog.d/179.fixed.md b/doc/changelog.d/179.fixed.md new file mode 100644 index 00000000..67736977 --- /dev/null +++ b/doc/changelog.d/179.fixed.md @@ -0,0 +1 @@ +fix: Reduce import time of the library \ No newline at end of file From 161acecb12ef813995e43e230ec86246fdaee75a Mon Sep 17 00:00:00 2001 From: afernand Date: Thu, 31 Oct 2024 09:53:40 +0100 Subject: [PATCH 3/4] fix: Improve module imports --- .../backends/pyvista/pyvista.py | 14 ++++++-------- .../backends/pyvista/trame_local.py | 1 + 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py index 49a7bc12..d500d3c8 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py @@ -21,6 +21,7 @@ # SOFTWARE. """Provides a wrapper to aid in plotting.""" from abc import abstractmethod +import importlib.util from beartype.typing import TYPE_CHECKING, Any, Dict, List, Optional, Union import pyvista as pv @@ -52,6 +53,8 @@ from ansys.tools.visualization_interface.utils.color import Color from ansys.tools.visualization_interface.utils.logger import logger +_HAS_TRAME = importlib.util.find_spec("pyvista.trame") and importlib.util.find_spec("trame.app") + if TYPE_CHECKING: import numpy as np @@ -129,8 +132,6 @@ def __init__( self._origin_colors = {} # Enable the use of trame if requested and available - from ansys.tools.visualization_interface.backends.pyvista.trame_local import _HAS_TRAME - if self._use_trame and _HAS_TRAME: # avoids GUI window popping up pv.OFF_SCREEN = True @@ -462,13 +463,10 @@ def show_plotter(self, screenshot: Optional[str] = None) -> None: Path for saving a screenshot of the image that is being represented. """ - from ansys.tools.visualization_interface.backends.pyvista.trame_local import ( - _HAS_TRAME, - TrameVisualizer, - ) - if self._use_trame and _HAS_TRAME: - + from ansys.tools.visualization_interface.backends.pyvista.trame_local import ( + TrameVisualizer, + ) visualizer = TrameVisualizer() visualizer.set_scene(self._pl) visualizer.show() diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/trame_local.py b/src/ansys/tools/visualization_interface/backends/pyvista/trame_local.py index 6f1bb1f1..aa3e9658 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/trame_local.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/trame_local.py @@ -20,6 +20,7 @@ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # SOFTWARE. """Provides `trame `_ visualizer interface for visualization.""" + try: from pyvista.trame.ui import plotter_ui from trame.app import get_server From be5fa30f6a5f2b6a50a0de292e79f83aed4d122a Mon Sep 17 00:00:00 2001 From: afernand Date: Thu, 31 Oct 2024 13:29:19 +0100 Subject: [PATCH 4/4] fix: Remove beartype --- pyproject.toml | 1 - src/ansys/tools/visualization_interface/backends/_base.py | 3 +-- .../tools/visualization_interface/backends/pyvista/pyvista.py | 2 +- .../backends/pyvista/pyvista_interface.py | 3 +-- .../visualization_interface/backends/pyvista/trame_remote.py | 2 +- .../backends/pyvista/widgets/hide_buttons.py | 2 +- .../backends/pyvista/widgets/measure.py | 2 +- .../backends/pyvista/widgets/mesh_slider.py | 2 +- src/ansys/tools/visualization_interface/plotter.py | 2 +- src/ansys/tools/visualization_interface/types/edge_plot.py | 3 ++- .../tools/visualization_interface/types/mesh_object_plot.py | 3 ++- src/ansys/tools/visualization_interface/utils/clip_plane.py | 2 +- 12 files changed, 13 insertions(+), 14 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 968e65f5..2fda6fc4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,7 +23,6 @@ classifiers = [ ] dependencies = [ "pyvista >= 0.43.0,<1", - "beartype >= 0.17.0,<1", "websockets >= 12.0,< 14", "trame >= 3.6.0,<4", "trame-vtk >= 2.8.7,<3", diff --git a/src/ansys/tools/visualization_interface/backends/_base.py b/src/ansys/tools/visualization_interface/backends/_base.py index 58dffa9c..aa6d264b 100644 --- a/src/ansys/tools/visualization_interface/backends/_base.py +++ b/src/ansys/tools/visualization_interface/backends/_base.py @@ -22,8 +22,7 @@ """Module for the backend base class.""" from abc import ABC, abstractmethod - -from beartype.typing import Any, Iterable +from typing import Any, Iterable class BaseBackend(ABC): diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py index d500d3c8..a7fc01fd 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py @@ -22,8 +22,8 @@ """Provides a wrapper to aid in plotting.""" from abc import abstractmethod import importlib.util +from typing import TYPE_CHECKING, Any, Dict, List, Optional, Union -from beartype.typing import TYPE_CHECKING, Any, Dict, List, Optional, Union import pyvista as pv from vtkmodules.vtkCommonCore import vtkCommand from vtkmodules.vtkInteractionWidgets import vtkHoverWidget diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista_interface.py b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista_interface.py index f22afe5c..abb1ca57 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista_interface.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista_interface.py @@ -21,9 +21,8 @@ # SOFTWARE. """Provides plotting for various PyAnsys objects.""" import re -from typing import Union +from typing import Any, Dict, List, Optional, Union -from beartype.typing import Any, Dict, List, Optional import pyvista as pv from pyvista.plotting.plotter import Plotter as PyVistaPlotter diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/trame_remote.py b/src/ansys/tools/visualization_interface/backends/pyvista/trame_remote.py index 895dd823..1d65d953 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/trame_remote.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/trame_remote.py @@ -24,8 +24,8 @@ # from the websocket. This is a trusted source, so we can ignore this vulnerability. # Potentially, someone could send a malicious pickle object and execute arbitrary code. import pickle # nosec B403 +from typing import Union -from beartype.typing import Union import pyvista as pv from websockets.sync.client import connect diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/hide_buttons.py b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/hide_buttons.py index 614af513..2f62e892 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/hide_buttons.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/hide_buttons.py @@ -21,8 +21,8 @@ # SOFTWARE. """Provides the hide buttons widget for the PyAnsys plotter.""" from pathlib import Path +from typing import TYPE_CHECKING -from beartype.typing import TYPE_CHECKING from vtk import vtkActor, vtkButtonWidget, vtkPNGReader from ansys.tools.visualization_interface.backends.pyvista.widgets.widget import PlotterWidget diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/measure.py b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/measure.py index 952f26de..54b43c36 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/measure.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/measure.py @@ -21,8 +21,8 @@ # SOFTWARE. """Provides the measure widget for the PyAnsys plotter.""" from pathlib import Path +from typing import TYPE_CHECKING -from beartype.typing import TYPE_CHECKING from vtk import vtkActor, vtkButtonWidget, vtkPNGReader from ansys.tools.visualization_interface.backends.pyvista.widgets.widget import PlotterWidget diff --git a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/mesh_slider.py b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/mesh_slider.py index ab04c223..1aece3c7 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/widgets/mesh_slider.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/widgets/mesh_slider.py @@ -21,8 +21,8 @@ # SOFTWARE. """Provides the measure widget for the PyAnsys plotter.""" from pathlib import Path +from typing import TYPE_CHECKING -from beartype.typing import TYPE_CHECKING import pyvista as pv from vtk import vtkActor, vtkButtonWidget, vtkPNGReader diff --git a/src/ansys/tools/visualization_interface/plotter.py b/src/ansys/tools/visualization_interface/plotter.py index 075c132c..64734a69 100644 --- a/src/ansys/tools/visualization_interface/plotter.py +++ b/src/ansys/tools/visualization_interface/plotter.py @@ -21,7 +21,7 @@ # SOFTWARE. """Module for the Plotter class.""" -from beartype.typing import Any +from typing import Any from ansys.tools.visualization_interface.backends._base import BaseBackend from ansys.tools.visualization_interface.backends.pyvista.pyvista import PyVistaBackend diff --git a/src/ansys/tools/visualization_interface/types/edge_plot.py b/src/ansys/tools/visualization_interface/types/edge_plot.py index 347d5a8b..18442423 100644 --- a/src/ansys/tools/visualization_interface/types/edge_plot.py +++ b/src/ansys/tools/visualization_interface/types/edge_plot.py @@ -22,7 +22,8 @@ """Provides the edge type for plotting.""" -from beartype.typing import TYPE_CHECKING, Any +from typing import TYPE_CHECKING, Any + import pyvista as pv if TYPE_CHECKING: diff --git a/src/ansys/tools/visualization_interface/types/mesh_object_plot.py b/src/ansys/tools/visualization_interface/types/mesh_object_plot.py index 50c5d514..ec631e7e 100644 --- a/src/ansys/tools/visualization_interface/types/mesh_object_plot.py +++ b/src/ansys/tools/visualization_interface/types/mesh_object_plot.py @@ -22,7 +22,8 @@ """Provides the ``MeshObjectPlot`` class.""" -from beartype.typing import Any, List, Union +from typing import Any, List, Union + import pyvista as pv from ansys.tools.visualization_interface.types.edge_plot import EdgePlot diff --git a/src/ansys/tools/visualization_interface/utils/clip_plane.py b/src/ansys/tools/visualization_interface/utils/clip_plane.py index 7116b34e..929698e3 100644 --- a/src/ansys/tools/visualization_interface/utils/clip_plane.py +++ b/src/ansys/tools/visualization_interface/utils/clip_plane.py @@ -21,7 +21,7 @@ # SOFTWARE. """Provides the ``ClipPlane`` class.""" -from beartype.typing import Tuple +from typing import Tuple class ClipPlane: