Skip to content

Commit 46a32d2

Browse files
committed
_numtype.ToString_* aliases for StringDType array-likes
1 parent 59a3c76 commit 46a32d2

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/_numtype/__init__.pyi

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ class CanLenArray(Protocol[_ScalarT_co, _ShapeT_co]):
141141
def __len__(self, /) -> int: ...
142142
def __array__(self, /) -> np.ndarray[_ShapeT_co, np.dtype[_ScalarT_co]]: ...
143143

144+
@type_check_only
145+
class _CanStringArray(Protocol[_ShapeT_co]):
146+
def __array__(self, /) -> np.ndarray[_ShapeT_co, np.dtypes.StringDType]: ...
147+
144148
###
145149
# Shape aliases
146150

@@ -158,6 +162,7 @@ Sequence2D: TypeAlias = Sequence[Sequence[_T]]
158162
Sequence3D: TypeAlias = Sequence[Sequence[Sequence[_T]]]
159163

160164
# nested sequences with at least k dims, e.g. `2nd` denotes a dimensionality in the interval [2, n]
165+
SequenceND: TypeAlias = _T | _NestedSequence[_T]
161166
Sequence1ND: TypeAlias = _NestedSequence[_T]
162167
Sequence2ND: TypeAlias = Sequence[_NestedSequence[_T]]
163168
Sequence3ND: TypeAlias = Sequence[Sequence[_NestedSequence[_T]]]
@@ -192,8 +197,8 @@ _PyObject: TypeAlias = decimal.Decimal | fractions.Fraction
192197
_PyScalar: TypeAlias = complex | _PyCharacter | _PyObject
193198

194199
_ToArray2_0d: TypeAlias = CanArray0D[_ScalarT] | _ToT
195-
_ToArray_nd: TypeAlias = CanArrayND[_ScalarT] | Sequence1ND[CanArrayND[_ScalarT]]
196-
_ToArray2_nd: TypeAlias = CanArrayND[_ScalarT] | _ToT | Sequence1ND[_ToT | CanArrayND[_ScalarT]]
200+
_ToArray_nd: TypeAlias = SequenceND[CanArrayND[_ScalarT]]
201+
_ToArray2_nd: TypeAlias = SequenceND[CanArrayND[_ScalarT] | _ToT]
197202

198203
# don't require matching shape-types by default
199204
_ToArray_1d: TypeAlias = CanLenArrayND[_ScalarT] | Sequence[CanArray0D[_ScalarT]]
@@ -636,6 +641,15 @@ ToObject_1nd = TypeAliasType("ToObject_1nd", _ToArray2_1nd[np.object_, _PyObject
636641
ToObject_2nd = TypeAliasType("ToObject_2nd", _ToArray2_2nd[np.object_, _PyObject])
637642
ToObject_3nd = TypeAliasType("ToObject_3nd", _ToArray2_3nd[np.object_, _PyObject])
638643

644+
# StringDType
645+
ToString_nd = TypeAliasType("ToString_nd", _CanStringArray[AtLeast0D])
646+
ToString_1ds = TypeAliasType("ToString_1ds", _CanStringArray[tuple[int]])
647+
ToString_2ds = TypeAliasType("ToString_2ds", _CanStringArray[tuple[int, int]])
648+
ToString_3ds = TypeAliasType("ToString_3ds", _CanStringArray[tuple[int, int, int]])
649+
ToString_1nd = TypeAliasType("ToString_1nd", _CanStringArray[AtLeast1D])
650+
ToString_2nd = TypeAliasType("ToString_2nd", _CanStringArray[AtLeast2D])
651+
ToString_3nd = TypeAliasType("ToString_3nd", _CanStringArray[AtLeast3D])
652+
639653
# any scalar
640654
ToGeneric_nd = TypeAliasType("ToGeneric_nd", _ToArray2_nd[np.generic, _PyScalar])
641655
ToGeneric_0d = TypeAliasType("ToGeneric_0d", _ToArray2_0d[np.generic, _PyScalar])

0 commit comments

Comments
 (0)