main
 1from __future__ import annotations
 2
 3from typing import TYPE_CHECKING, Any
 4from typing_extensions import override
 5
 6from .._utils import LazyProxy
 7from ._common import MissingDependencyError, format_instructions
 8
 9if TYPE_CHECKING:
10    import numpy as numpy
11
12
13NUMPY_INSTRUCTIONS = format_instructions(library="numpy", extra="voice_helpers")
14
15
16class NumpyProxy(LazyProxy[Any]):
17    @override
18    def __load__(self) -> Any:
19        try:
20            import numpy
21        except ImportError as err:
22            raise MissingDependencyError(NUMPY_INSTRUCTIONS) from err
23
24        return numpy
25
26
27if not TYPE_CHECKING:
28    numpy = NumpyProxy()
29
30
31def has_numpy() -> bool:
32    try:
33        import numpy  # noqa: F401  # pyright: ignore[reportUnusedImport]
34    except ImportError:
35        return False
36
37    return True