diff --git a/pandas/_testing/__init__.py b/pandas/_testing/__init__.py index 3df1999ce7dce..b36e790f8023b 100644 --- a/pandas/_testing/__init__.py +++ b/pandas/_testing/__init__.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import collections from datetime import datetime from functools import wraps @@ -5,7 +7,15 @@ import os import re import string -from typing import Callable, ContextManager, Counter, List, Type +from typing import ( + TYPE_CHECKING, + Callable, + ContextManager, + Counter, + Iterable, + List, + Type, +) import warnings import numpy as np @@ -90,6 +100,9 @@ ) from pandas.core.arrays import DatetimeArray, PeriodArray, TimedeltaArray, period_array +if TYPE_CHECKING: + from pandas import PeriodIndex, TimedeltaIndex + _N = 30 _K = 4 @@ -281,17 +294,17 @@ def makeFloatIndex(k=10, name=None): return Index(values * (10 ** np.random.randint(0, 9)), name=name) -def makeDateIndex(k=10, freq="B", name=None, **kwargs): +def makeDateIndex(k: int = 10, freq="B", name=None, **kwargs) -> DatetimeIndex: dt = datetime(2000, 1, 1) dr = bdate_range(dt, periods=k, freq=freq, name=name) return DatetimeIndex(dr, name=name, **kwargs) -def makeTimedeltaIndex(k=10, freq="D", name=None, **kwargs): +def makeTimedeltaIndex(k: int = 10, freq="D", name=None, **kwargs) -> TimedeltaIndex: return pd.timedelta_range(start="1 day", periods=k, freq=freq, name=name, **kwargs) -def makePeriodIndex(k=10, name=None, **kwargs): +def makePeriodIndex(k: int = 10, name=None, **kwargs) -> PeriodIndex: dt = datetime(2000, 1, 1) return pd.period_range(start=dt, periods=k, freq="B", name=name, **kwargs) @@ -394,7 +407,7 @@ def index_subclass_makers_generator(): yield from make_index_funcs -def all_timeseries_index_generator(k=10): +def all_timeseries_index_generator(k: int = 10) -> Iterable[Index]: """ Generator which can be iterated over to get instances of all the classes which represent time-series. @@ -403,10 +416,13 @@ def all_timeseries_index_generator(k=10): ---------- k: length of each of the index instances """ - make_index_funcs = [makeDateIndex, makePeriodIndex, makeTimedeltaIndex] + make_index_funcs: List[Callable[..., Index]] = [ + makeDateIndex, + makePeriodIndex, + makeTimedeltaIndex, + ] for make_index_func in make_index_funcs: - # pandas\_testing.py:1986: error: Cannot call function of unknown type - yield make_index_func(k=k) # type: ignore[operator] + yield make_index_func(k=k) # make series diff --git a/pandas/core/indexes/datetimes.py b/pandas/core/indexes/datetimes.py index 8609c61065327..b7f93295837e0 100644 --- a/pandas/core/indexes/datetimes.py +++ b/pandas/core/indexes/datetimes.py @@ -1089,7 +1089,7 @@ def date_range( def bdate_range( start=None, end=None, - periods=None, + periods: Optional[int] = None, freq="B", tz=None, normalize=True, diff --git a/pandas/core/indexes/period.py b/pandas/core/indexes/period.py index fe9560a1f2f3f..d5dc68b77df61 100644 --- a/pandas/core/indexes/period.py +++ b/pandas/core/indexes/period.py @@ -649,7 +649,7 @@ def memory_usage(self, deep: bool = False) -> int: def period_range( - start=None, end=None, periods=None, freq=None, name=None + start=None, end=None, periods: Optional[int] = None, freq=None, name=None ) -> PeriodIndex: """ Return a fixed frequency PeriodIndex. diff --git a/pandas/core/indexes/timedeltas.py b/pandas/core/indexes/timedeltas.py index 5cf1def014450..e80fde87ffdee 100644 --- a/pandas/core/indexes/timedeltas.py +++ b/pandas/core/indexes/timedeltas.py @@ -2,7 +2,7 @@ from pandas._libs import index as libindex, lib from pandas._libs.tslibs import Timedelta, to_offset -from pandas._typing import DtypeObj +from pandas._typing import DtypeObj, Optional from pandas.errors import InvalidIndexError from pandas.core.dtypes.common import TD64NS_DTYPE, is_scalar, is_timedelta64_dtype @@ -212,7 +212,12 @@ def inferred_type(self) -> str: def timedelta_range( - start=None, end=None, periods=None, freq=None, name=None, closed=None + start=None, + end=None, + periods: Optional[int] = None, + freq=None, + name=None, + closed=None, ) -> TimedeltaIndex: """ Return a fixed frequency TimedeltaIndex, with day as the default @@ -236,7 +241,7 @@ def timedelta_range( Returns ------- - rng : TimedeltaIndex + TimedeltaIndex Notes -----