49 lines
1.2 KiB
Python
49 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import TYPE_CHECKING, Any, Union
|
|
from collections.abc import Sequence
|
|
|
|
from packaging.version import parse
|
|
from pandas import DataFrame, Series
|
|
|
|
if TYPE_CHECKING:
|
|
import numpy as np
|
|
|
|
if parse(np.__version__) < parse("1.22.0"):
|
|
raise NotImplementedError(
|
|
"NumPy 1.22.0 or later required for type checking"
|
|
)
|
|
from numpy.typing import (
|
|
ArrayLike as ArrayLike,
|
|
DTypeLike,
|
|
NDArray,
|
|
_FloatLike_co,
|
|
_UIntLike_co,
|
|
)
|
|
|
|
_ExtendedFloatLike_co = Union[_FloatLike_co, _UIntLike_co]
|
|
NumericArray = NDArray[Any, np.dtype[_ExtendedFloatLike_co]]
|
|
Float64Array = NDArray[Any, np.double]
|
|
ArrayLike1D = Union[Sequence[Union[float, int]], NumericArray, Series]
|
|
ArrayLike2D = Union[
|
|
Sequence[Sequence[Union[float, int]]], NumericArray, DataFrame
|
|
]
|
|
else:
|
|
ArrayLike = Any
|
|
DTypeLike = Any
|
|
Float64Array = Any
|
|
NumericArray = Any
|
|
ArrayLike1D = Any
|
|
ArrayLike2D = Any
|
|
NDArray = Any
|
|
|
|
__all__ = [
|
|
"ArrayLike",
|
|
"DTypeLike",
|
|
"Float64Array",
|
|
"ArrayLike1D",
|
|
"ArrayLike2D",
|
|
"NDArray",
|
|
"NumericArray",
|
|
]
|