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 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 163ff4cd..a7fc01fd 100644 --- a/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py +++ b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista.py @@ -21,9 +21,9 @@ # SOFTWARE. """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 Any, Dict, List, Optional, Union -import numpy as np import pyvista as pv from vtkmodules.vtkCommonCore import vtkCommand from vtkmodules.vtkInteractionWidgets import vtkHoverWidget @@ -32,10 +32,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 +53,11 @@ 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 + class PyVistaBackendInterface(BaseBackend): """Provides the interface for the Visualization Interface Tool plotter. @@ -193,7 +194,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 @@ -463,6 +464,9 @@ def show_plotter(self, screenshot: Optional[str] = None) -> None: """ 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/pyvista_interface.py b/src/ansys/tools/visualization_interface/backends/pyvista/pyvista_interface.py index 5f89154d..c8ecfe1c 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_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 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 644bcddd..ff260fc8 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: