| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607 |
- # ruff: noqa: ANN401
- from types import MemberDescriptorType
- from typing import Any, ClassVar, Generic, NoReturn, TypeAlias, final, type_check_only
- from typing import Literal as L
- from typing_extensions import LiteralString, Self, TypeVar
- import numpy as np
- __all__ = [ # noqa: RUF022
- 'BoolDType',
- 'Int8DType',
- 'ByteDType',
- 'UInt8DType',
- 'UByteDType',
- 'Int16DType',
- 'ShortDType',
- 'UInt16DType',
- 'UShortDType',
- 'Int32DType',
- 'IntDType',
- 'UInt32DType',
- 'UIntDType',
- 'Int64DType',
- 'LongDType',
- 'UInt64DType',
- 'ULongDType',
- 'LongLongDType',
- 'ULongLongDType',
- 'Float16DType',
- 'Float32DType',
- 'Float64DType',
- 'LongDoubleDType',
- 'Complex64DType',
- 'Complex128DType',
- 'CLongDoubleDType',
- 'ObjectDType',
- 'BytesDType',
- 'StrDType',
- 'VoidDType',
- 'DateTime64DType',
- 'TimeDelta64DType',
- 'StringDType',
- ]
- # Helper base classes (typing-only)
- _SCT_co = TypeVar("_SCT_co", bound=np.generic, covariant=True)
- @type_check_only
- class _SimpleDType(np.dtype[_SCT_co], Generic[_SCT_co]): # type: ignore[misc] # pyright: ignore[reportGeneralTypeIssues]
- names: None # pyright: ignore[reportIncompatibleVariableOverride]
- def __new__(cls, /) -> Self: ...
- def __getitem__(self, key: Any, /) -> NoReturn: ...
- @property
- def base(self) -> np.dtype[_SCT_co]: ...
- @property
- def fields(self) -> None: ...
- @property
- def isalignedstruct(self) -> L[False]: ...
- @property
- def isnative(self) -> L[True]: ...
- @property
- def ndim(self) -> L[0]: ...
- @property
- def shape(self) -> tuple[()]: ...
- @property
- def subdtype(self) -> None: ...
- @type_check_only
- class _LiteralDType(_SimpleDType[_SCT_co], Generic[_SCT_co]): # type: ignore[misc]
- @property
- def flags(self) -> L[0]: ...
- @property
- def hasobject(self) -> L[False]: ...
- # Helper mixins (typing-only):
- _KindT_co = TypeVar("_KindT_co", bound=LiteralString, covariant=True)
- _CharT_co = TypeVar("_CharT_co", bound=LiteralString, covariant=True)
- _NumT_co = TypeVar("_NumT_co", bound=int, covariant=True)
- @type_check_only
- class _TypeCodes(Generic[_KindT_co, _CharT_co, _NumT_co]):
- @final
- @property
- def kind(self) -> _KindT_co: ...
- @final
- @property
- def char(self) -> _CharT_co: ...
- @final
- @property
- def num(self) -> _NumT_co: ...
- @type_check_only
- class _NoOrder:
- @final
- @property
- def byteorder(self) -> L["|"]: ...
- @type_check_only
- class _NativeOrder:
- @final
- @property
- def byteorder(self) -> L["="]: ...
- _DataSize_co = TypeVar("_DataSize_co", bound=int, covariant=True)
- _ItemSize_co = TypeVar("_ItemSize_co", bound=int, covariant=True, default=int)
- @type_check_only
- class _NBit(Generic[_DataSize_co, _ItemSize_co]):
- @final
- @property
- def alignment(self) -> _DataSize_co: ...
- @final
- @property
- def itemsize(self) -> _ItemSize_co: ...
- @type_check_only
- class _8Bit(_NoOrder, _NBit[L[1], L[1]]): ...
- # Boolean:
- @final
- class BoolDType( # type: ignore[misc]
- _TypeCodes[L["b"], L["?"], L[0]],
- _8Bit,
- _LiteralDType[np.bool],
- ):
- @property
- def name(self) -> L["bool"]: ...
- @property
- def str(self) -> L["|b1"]: ...
- # Sized integers:
- @final
- class Int8DType( # type: ignore[misc]
- _TypeCodes[L["i"], L["b"], L[1]],
- _8Bit,
- _LiteralDType[np.int8],
- ):
- @property
- def name(self) -> L["int8"]: ...
- @property
- def str(self) -> L["|i1"]: ...
- @final
- class UInt8DType( # type: ignore[misc]
- _TypeCodes[L["u"], L["B"], L[2]],
- _8Bit,
- _LiteralDType[np.uint8],
- ):
- @property
- def name(self) -> L["uint8"]: ...
- @property
- def str(self) -> L["|u1"]: ...
- @final
- class Int16DType( # type: ignore[misc]
- _TypeCodes[L["i"], L["h"], L[3]],
- _NativeOrder,
- _NBit[L[2], L[2]],
- _LiteralDType[np.int16],
- ):
- @property
- def name(self) -> L["int16"]: ...
- @property
- def str(self) -> L["<i2", ">i2"]: ...
- @final
- class UInt16DType( # type: ignore[misc]
- _TypeCodes[L["u"], L["H"], L[4]],
- _NativeOrder,
- _NBit[L[2], L[2]],
- _LiteralDType[np.uint16],
- ):
- @property
- def name(self) -> L["uint16"]: ...
- @property
- def str(self) -> L["<u2", ">u2"]: ...
- @final
- class Int32DType( # type: ignore[misc]
- _TypeCodes[L["i"], L["i", "l"], L[5, 7]],
- _NativeOrder,
- _NBit[L[4], L[4]],
- _LiteralDType[np.int32],
- ):
- @property
- def name(self) -> L["int32"]: ...
- @property
- def str(self) -> L["<i4", ">i4"]: ...
- @final
- class UInt32DType( # type: ignore[misc]
- _TypeCodes[L["u"], L["I", "L"], L[6, 8]],
- _NativeOrder,
- _NBit[L[4], L[4]],
- _LiteralDType[np.uint32],
- ):
- @property
- def name(self) -> L["uint32"]: ...
- @property
- def str(self) -> L["<u4", ">u4"]: ...
- @final
- class Int64DType( # type: ignore[misc]
- _TypeCodes[L["i"], L["l", "q"], L[7, 9]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.int64],
- ):
- @property
- def name(self) -> L["int64"]: ...
- @property
- def str(self) -> L["<i8", ">i8"]: ...
- @final
- class UInt64DType( # type: ignore[misc]
- _TypeCodes[L["u"], L["L", "Q"], L[8, 10]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.uint64],
- ):
- @property
- def name(self) -> L["uint64"]: ...
- @property
- def str(self) -> L["<u8", ">u8"]: ...
- # Standard C-named version/alias:
- # NOTE: Don't make these `Final`: it will break stubtest
- ByteDType = Int8DType
- UByteDType = UInt8DType
- ShortDType = Int16DType
- UShortDType = UInt16DType
- @final
- class IntDType( # type: ignore[misc]
- _TypeCodes[L["i"], L["i"], L[5]],
- _NativeOrder,
- _NBit[L[4], L[4]],
- _LiteralDType[np.intc],
- ):
- @property
- def name(self) -> L["int32"]: ...
- @property
- def str(self) -> L["<i4", ">i4"]: ...
- @final
- class UIntDType( # type: ignore[misc]
- _TypeCodes[L["u"], L["I"], L[6]],
- _NativeOrder,
- _NBit[L[4], L[4]],
- _LiteralDType[np.uintc],
- ):
- @property
- def name(self) -> L["uint32"]: ...
- @property
- def str(self) -> L["<u4", ">u4"]: ...
- @final
- class LongDType( # type: ignore[misc]
- _TypeCodes[L["i"], L["l"], L[7]],
- _NativeOrder,
- _NBit[L[4, 8], L[4, 8]],
- _LiteralDType[np.long],
- ):
- @property
- def name(self) -> L["int32", "int64"]: ...
- @property
- def str(self) -> L["<i4", ">i4", "<i8", ">i8"]: ...
- @final
- class ULongDType( # type: ignore[misc]
- _TypeCodes[L["u"], L["L"], L[8]],
- _NativeOrder,
- _NBit[L[4, 8], L[4, 8]],
- _LiteralDType[np.ulong],
- ):
- @property
- def name(self) -> L["uint32", "uint64"]: ...
- @property
- def str(self) -> L["<u4", ">u4", "<u8", ">u8"]: ...
- @final
- class LongLongDType( # type: ignore[misc]
- _TypeCodes[L["i"], L["q"], L[9]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.longlong],
- ):
- @property
- def name(self) -> L["int64"]: ...
- @property
- def str(self) -> L["<i8", ">i8"]: ...
- @final
- class ULongLongDType( # type: ignore[misc]
- _TypeCodes[L["u"], L["Q"], L[10]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.ulonglong],
- ):
- @property
- def name(self) -> L["uint64"]: ...
- @property
- def str(self) -> L["<u8", ">u8"]: ...
- # Floats:
- @final
- class Float16DType( # type: ignore[misc]
- _TypeCodes[L["f"], L["e"], L[23]],
- _NativeOrder,
- _NBit[L[2], L[2]],
- _LiteralDType[np.float16],
- ):
- @property
- def name(self) -> L["float16"]: ...
- @property
- def str(self) -> L["<f2", ">f2"]: ...
- @final
- class Float32DType( # type: ignore[misc]
- _TypeCodes[L["f"], L["f"], L[11]],
- _NativeOrder,
- _NBit[L[4], L[4]],
- _LiteralDType[np.float32],
- ):
- @property
- def name(self) -> L["float32"]: ...
- @property
- def str(self) -> L["<f4", ">f4"]: ...
- @final
- class Float64DType( # type: ignore[misc]
- _TypeCodes[L["f"], L["d"], L[12]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.float64],
- ):
- @property
- def name(self) -> L["float64"]: ...
- @property
- def str(self) -> L["<f8", ">f8"]: ...
- @final
- class LongDoubleDType( # type: ignore[misc]
- _TypeCodes[L["f"], L["g"], L[13]],
- _NativeOrder,
- _NBit[L[8, 12, 16], L[8, 12, 16]],
- _LiteralDType[np.longdouble],
- ):
- @property
- def name(self) -> L["float64", "float96", "float128"]: ...
- @property
- def str(self) -> L["<f8", ">f8", "<f12", ">f12", "<f16", ">f16"]: ...
- # Complex:
- @final
- class Complex64DType( # type: ignore[misc]
- _TypeCodes[L["c"], L["F"], L[14]],
- _NativeOrder,
- _NBit[L[4], L[8]],
- _LiteralDType[np.complex64],
- ):
- @property
- def name(self) -> L["complex64"]: ...
- @property
- def str(self) -> L["<c8", ">c8"]: ...
- @final
- class Complex128DType( # type: ignore[misc]
- _TypeCodes[L["c"], L["D"], L[15]],
- _NativeOrder,
- _NBit[L[8], L[16]],
- _LiteralDType[np.complex128],
- ):
- @property
- def name(self) -> L["complex128"]: ...
- @property
- def str(self) -> L["<c16", ">c16"]: ...
- @final
- class CLongDoubleDType( # type: ignore[misc]
- _TypeCodes[L["c"], L["G"], L[16]],
- _NativeOrder,
- _NBit[L[8, 12, 16], L[16, 24, 32]],
- _LiteralDType[np.clongdouble],
- ):
- @property
- def name(self) -> L["complex128", "complex192", "complex256"]: ...
- @property
- def str(self) -> L["<c16", ">c16", "<c24", ">c24", "<c32", ">c32"]: ...
- # Python objects:
- @final
- class ObjectDType( # type: ignore[misc]
- _TypeCodes[L["O"], L["O"], L[17]],
- _NoOrder,
- _NBit[L[8], L[8]],
- _SimpleDType[np.object_],
- ):
- @property
- def hasobject(self) -> L[True]: ...
- @property
- def name(self) -> L["object"]: ...
- @property
- def str(self) -> L["|O"]: ...
- # Flexible:
- @final
- class BytesDType( # type: ignore[misc]
- _TypeCodes[L["S"], L["S"], L[18]],
- _NoOrder,
- _NBit[L[1],_ItemSize_co],
- _SimpleDType[np.bytes_],
- Generic[_ItemSize_co],
- ):
- def __new__(cls, size: _ItemSize_co, /) -> BytesDType[_ItemSize_co]: ...
- @property
- def hasobject(self) -> L[False]: ...
- @property
- def name(self) -> LiteralString: ...
- @property
- def str(self) -> LiteralString: ...
- @final
- class StrDType( # type: ignore[misc]
- _TypeCodes[L["U"], L["U"], L[19]],
- _NativeOrder,
- _NBit[L[4],_ItemSize_co],
- _SimpleDType[np.str_],
- Generic[_ItemSize_co],
- ):
- def __new__(cls, size: _ItemSize_co, /) -> StrDType[_ItemSize_co]: ...
- @property
- def hasobject(self) -> L[False]: ...
- @property
- def name(self) -> LiteralString: ...
- @property
- def str(self) -> LiteralString: ...
- @final
- class VoidDType( # type: ignore[misc]
- _TypeCodes[L["V"], L["V"], L[20]],
- _NoOrder,
- _NBit[L[1], _ItemSize_co],
- np.dtype[np.void], # pyright: ignore[reportGeneralTypeIssues]
- Generic[_ItemSize_co],
- ):
- # NOTE: `VoidDType(...)` raises a `TypeError` at the moment
- def __new__(cls, length: _ItemSize_co, /) -> NoReturn: ...
- @property
- def base(self) -> Self: ...
- @property
- def isalignedstruct(self) -> L[False]: ...
- @property
- def isnative(self) -> L[True]: ...
- @property
- def ndim(self) -> L[0]: ...
- @property
- def shape(self) -> tuple[()]: ...
- @property
- def subdtype(self) -> None: ...
- @property
- def name(self) -> LiteralString: ...
- @property
- def str(self) -> LiteralString: ...
- # Other:
- _DateUnit: TypeAlias = L["Y", "M", "W", "D"]
- _TimeUnit: TypeAlias = L["h", "m", "s", "ms", "us", "ns", "ps", "fs", "as"]
- _DateTimeUnit: TypeAlias = _DateUnit | _TimeUnit
- @final
- class DateTime64DType( # type: ignore[misc]
- _TypeCodes[L["M"], L["M"], L[21]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.datetime64],
- ):
- # NOTE: `DateTime64DType(...)` raises a `TypeError` at the moment
- # TODO: Once implemented, don't forget the`unit: L["μs"]` overload.
- def __new__(cls, unit: _DateTimeUnit, /) -> NoReturn: ...
- @property
- def name(self) -> L[
- "datetime64",
- "datetime64[Y]",
- "datetime64[M]",
- "datetime64[W]",
- "datetime64[D]",
- "datetime64[h]",
- "datetime64[m]",
- "datetime64[s]",
- "datetime64[ms]",
- "datetime64[us]",
- "datetime64[ns]",
- "datetime64[ps]",
- "datetime64[fs]",
- "datetime64[as]",
- ]: ...
- @property
- def str(self) -> L[
- "<M8", ">M8",
- "<M8[Y]", ">M8[Y]",
- "<M8[M]", ">M8[M]",
- "<M8[W]", ">M8[W]",
- "<M8[D]", ">M8[D]",
- "<M8[h]", ">M8[h]",
- "<M8[m]", ">M8[m]",
- "<M8[s]", ">M8[s]",
- "<M8[ms]", ">M8[ms]",
- "<M8[us]", ">M8[us]",
- "<M8[ns]", ">M8[ns]",
- "<M8[ps]", ">M8[ps]",
- "<M8[fs]", ">M8[fs]",
- "<M8[as]", ">M8[as]",
- ]: ...
- @final
- class TimeDelta64DType( # type: ignore[misc]
- _TypeCodes[L["m"], L["m"], L[22]],
- _NativeOrder,
- _NBit[L[8], L[8]],
- _LiteralDType[np.timedelta64],
- ):
- # NOTE: `TimeDelta64DType(...)` raises a `TypeError` at the moment
- # TODO: Once implemented, don't forget to overload on `unit: L["μs"]`.
- def __new__(cls, unit: _DateTimeUnit, /) -> NoReturn: ...
- @property
- def name(self) -> L[
- "timedelta64",
- "timedelta64[Y]",
- "timedelta64[M]",
- "timedelta64[W]",
- "timedelta64[D]",
- "timedelta64[h]",
- "timedelta64[m]",
- "timedelta64[s]",
- "timedelta64[ms]",
- "timedelta64[us]",
- "timedelta64[ns]",
- "timedelta64[ps]",
- "timedelta64[fs]",
- "timedelta64[as]",
- ]: ...
- @property
- def str(self) -> L[
- "<m8", ">m8",
- "<m8[Y]", ">m8[Y]",
- "<m8[M]", ">m8[M]",
- "<m8[W]", ">m8[W]",
- "<m8[D]", ">m8[D]",
- "<m8[h]", ">m8[h]",
- "<m8[m]", ">m8[m]",
- "<m8[s]", ">m8[s]",
- "<m8[ms]", ">m8[ms]",
- "<m8[us]", ">m8[us]",
- "<m8[ns]", ">m8[ns]",
- "<m8[ps]", ">m8[ps]",
- "<m8[fs]", ">m8[fs]",
- "<m8[as]", ">m8[as]",
- ]: ...
- @final
- class StringDType( # type: ignore[misc]
- _TypeCodes[L["T"], L["T"], L[2056]],
- _NativeOrder,
- _NBit[L[8], L[16]],
- # TODO: Replace the (invalid) `str` with the scalar type, once implemented
- np.dtype[str], # type: ignore[type-var] # pyright: ignore[reportGeneralTypeIssues,reportInvalidTypeArguments]
- ):
- @property
- def coerce(self) -> L[True]: ...
- na_object: ClassVar[MemberDescriptorType] # does not get instantiated
- #
- def __new__(cls, /) -> StringDType: ...
- def __getitem__(self, key: Any, /) -> NoReturn: ...
- @property
- def base(self) -> StringDType: ...
- @property
- def fields(self) -> None: ...
- @property
- def hasobject(self) -> L[True]: ...
- @property
- def isalignedstruct(self) -> L[False]: ...
- @property
- def isnative(self) -> L[True]: ...
- @property
- def name(self) -> L["StringDType64", "StringDType128"]: ...
- @property
- def ndim(self) -> L[0]: ...
- @property
- def shape(self) -> tuple[()]: ...
- @property
- def str(self) -> L["|T8", "|T16"]: ...
- @property
- def subdtype(self) -> None: ...
- @property
- def type(self) -> type[str]: ... # type: ignore[valid-type]
|