|
8 | 8 | from __future__ import annotations |
9 | 9 |
|
10 | 10 | from typing import ( |
| 11 | + TYPE_CHECKING, |
11 | 12 | Callable, |
12 | 13 | final, |
13 | 14 | ) |
|
16 | 17 | from pandas.util._decorators import doc |
17 | 18 | from pandas.util._exceptions import find_stack_level |
18 | 19 |
|
| 20 | +if TYPE_CHECKING: |
| 21 | + from pandas._typing import TypeT |
| 22 | + |
| 23 | + from pandas import Index |
| 24 | + from pandas.core.generic import NDFrame |
| 25 | + |
19 | 26 |
|
20 | 27 | class DirNamesMixin: |
21 | 28 | _accessors: set[str] = set() |
@@ -232,7 +239,9 @@ def __get__(self, obj, cls): |
232 | 239 |
|
233 | 240 |
|
234 | 241 | @doc(klass="", examples="", others="") |
235 | | -def _register_accessor(name: str, cls): |
| 242 | +def _register_accessor( |
| 243 | + name: str, cls: type[NDFrame | Index] |
| 244 | +) -> Callable[[TypeT], TypeT]: |
236 | 245 | """ |
237 | 246 | Register a custom accessor on {klass} objects. |
238 | 247 |
|
@@ -277,7 +286,7 @@ def _register_accessor(name: str, cls): |
277 | 286 | {examples} |
278 | 287 | """ |
279 | 288 |
|
280 | | - def decorator(accessor): |
| 289 | + def decorator(accessor: TypeT) -> TypeT: |
281 | 290 | if hasattr(cls, name): |
282 | 291 | warnings.warn( |
283 | 292 | f"registration of accessor {accessor!r} under name " |
@@ -320,7 +329,7 @@ def decorator(accessor): |
320 | 329 |
|
321 | 330 |
|
322 | 331 | @doc(_register_accessor, klass="DataFrame", examples=_register_df_examples) |
323 | | -def register_dataframe_accessor(name: str): |
| 332 | +def register_dataframe_accessor(name: str) -> Callable[[TypeT], TypeT]: |
324 | 333 | from pandas import DataFrame |
325 | 334 |
|
326 | 335 | return _register_accessor(name, DataFrame) |
@@ -351,7 +360,7 @@ def register_dataframe_accessor(name: str): |
351 | 360 |
|
352 | 361 |
|
353 | 362 | @doc(_register_accessor, klass="Series", examples=_register_series_examples) |
354 | | -def register_series_accessor(name: str): |
| 363 | +def register_series_accessor(name: str) -> Callable[[TypeT], TypeT]: |
355 | 364 | from pandas import Series |
356 | 365 |
|
357 | 366 | return _register_accessor(name, Series) |
@@ -385,7 +394,7 @@ def register_series_accessor(name: str): |
385 | 394 |
|
386 | 395 |
|
387 | 396 | @doc(_register_accessor, klass="Index", examples=_register_index_examples) |
388 | | -def register_index_accessor(name: str): |
| 397 | +def register_index_accessor(name: str) -> Callable[[TypeT], TypeT]: |
389 | 398 | from pandas import Index |
390 | 399 |
|
391 | 400 | return _register_accessor(name, Index) |
0 commit comments