Skip to content

Commit 1563dd1

Browse files
committed
use pandas 3 types
1 parent 19cecaa commit 1563dd1

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/scanpy/metrics/_metrics.py

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,11 @@
1717
from typing import Literal
1818

1919
if TYPE_CHECKING:
20-
from numpy.typing import ArrayLike
20+
from pandas.api.typing.aliases import AnyArrayLike
2121
else: # sphinx-autodoc-typehints will execute the outer block, but end up here:
22-
ArrayLike = type("ArrayLike", (), dict(__module__="numpy.typing"))
22+
AnyArrayLike = type(
23+
"AnyArrayLike", (), dict(__module__="pandas.api.typing.aliases")
24+
)
2325

2426
from .._compat import SpBase
2527

@@ -104,25 +106,25 @@ def confusion_matrix(
104106

105107
@overload
106108
def modularity(
107-
connectivities: ArrayLike | SpBase, /, labels: ArrayLike, *, is_directed: bool
109+
connectivities: AnyArrayLike | SpBase, /, labels: AnyArrayLike, *, is_directed: bool
108110
) -> float: ...
109111

110112

111113
@overload
112114
def modularity(
113115
adata: AnnData,
114116
/,
115-
labels: str | ArrayLike = "leiden",
117+
labels: str | AnyArrayLike = "leiden",
116118
*,
117119
neighbors_key: str | None = None,
118120
mode: Literal["calculate", "update", "retrieve"] = "calculate",
119121
) -> float: ...
120122

121123

122124
def modularity(
123-
adata_or_connectivities: AnnData | ArrayLike | SpBase,
125+
adata_or_connectivities: AnnData | AnyArrayLike | SpBase,
124126
/,
125-
labels: str | ArrayLike = "leiden",
127+
labels: str | AnyArrayLike = "leiden",
126128
*,
127129
neighbors_key: str | None = None,
128130
is_directed: bool | None = None,
@@ -176,7 +178,7 @@ def modularity_adata(
176178
adata: AnnData,
177179
/,
178180
*,
179-
labels: str | ArrayLike,
181+
labels: str | AnyArrayLike,
180182
neighbors_key: str | None,
181183
mode: Literal["calculate", "update", "retrieve"],
182184
) -> float:
@@ -197,7 +199,7 @@ def modularity_adata(
197199

198200

199201
def modularity_array(
200-
connectivities: ArrayLike | SpBase, /, *, labels: ArrayLike, is_directed: bool
202+
connectivities: AnyArrayLike | SpBase, /, *, labels: AnyArrayLike, is_directed: bool
201203
) -> float:
202204
try:
203205
import igraph as ig
@@ -209,10 +211,10 @@ def modularity_array(
209211
return graph.modularity(_codes(labels))
210212

211213

212-
def _codes(labels: ArrayLike) -> ArrayLike:
214+
def _codes(labels: AnyArrayLike) -> AnyArrayLike:
213215
"""Convert cluster labels to integer codes as required by igraph."""
214216
if isinstance(labels, pd.Series):
215217
labels = labels.astype("category", copy=False).array
216218
if not isinstance(labels, pd.Categorical):
217-
labels = pd.Categorical(np.asarray(labels))
219+
labels = pd.Categorical(labels)
218220
return labels.codes

0 commit comments

Comments
 (0)