diff options
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/typing/mypy_plugin.py | 38 |
1 files changed, 23 insertions, 15 deletions
diff --git a/numpy/typing/mypy_plugin.py b/numpy/typing/mypy_plugin.py index 341870167..505a01a0b 100644 --- a/numpy/typing/mypy_plugin.py +++ b/numpy/typing/mypy_plugin.py @@ -4,14 +4,17 @@ import typing as t import numpy as np -import mypy.types -from mypy.types import Type -from mypy.plugin import Plugin, AnalyzeTypeContext +try: + import mypy.types + from mypy.types import Type + from mypy.plugin import Plugin, AnalyzeTypeContext + _HookFunc = t.Callable[[AnalyzeTypeContext], Type] + MYPY_EX: t.Optional[ModuleNotFoundError] = None +except ModuleNotFoundError as ex: + MYPY_EX = ex __all__: t.List[str] = [] -HookFunc = t.Callable[[AnalyzeTypeContext], Type] - def _get_precision_dict() -> t.Dict[str, str]: names = [ @@ -39,7 +42,7 @@ def _get_precision_dict() -> t.Dict[str, str]: _PRECISION_DICT = _get_precision_dict() -def _hook(ctx: AnalyzeTypeContext) -> Type: +def _hook(ctx: "AnalyzeTypeContext") -> "Type": """Replace a type-alias with a concrete ``NBitBase`` subclass.""" typ, _, api = ctx name = typ.name.split(".")[-1] @@ -47,15 +50,20 @@ def _hook(ctx: AnalyzeTypeContext) -> Type: return api.named_type(name_new) -class _NumpyPlugin(Plugin): - """A plugin for assigning platform-specific `numpy.number` precisions.""" +if MYPY_EX is None: + class _NumpyPlugin(Plugin): + """A plugin for assigning platform-specific `numpy.number` precisions.""" - def get_type_analyze_hook(self, fullname: str) -> t.Optional[HookFunc]: - if fullname in _PRECISION_DICT: - return _hook - return None + def get_type_analyze_hook(self, fullname: str) -> t.Optional[_HookFunc]: + if fullname in _PRECISION_DICT: + return _hook + return None + def plugin(version: str) -> t.Type[_NumpyPlugin]: + """An entry-point for mypy.""" + return _NumpyPlugin -def plugin(version: str) -> t.Type[_NumpyPlugin]: - """An entry-point for mypy.""" - return _NumpyPlugin +else: + def plugin(version: str) -> t.Type["_NumpyPlugin"]: + """An entry-point for mypy.""" + raise MYPY_EX |