|
4 | 4 | from datetime import timedelta
|
5 | 5 | from textwrap import dedent
|
6 | 6 | from typing import (
|
| 7 | + TYPE_CHECKING, |
7 | 8 | Callable,
|
8 | 9 | no_type_check,
|
9 | 10 | )
|
|
12 | 13 |
|
13 | 14 | from pandas._libs import lib
|
14 | 15 | from pandas._libs.tslibs import (
|
| 16 | + BaseOffset, |
15 | 17 | IncompatibleFrequency,
|
16 | 18 | NaT,
|
17 | 19 | Period,
|
|
84 | 86 | Tick,
|
85 | 87 | )
|
86 | 88 |
|
| 89 | +if TYPE_CHECKING: |
| 90 | + from typing import Literal |
| 91 | + |
87 | 92 | _shared_docs_kwargs: dict[str, str] = {}
|
88 | 93 |
|
89 | 94 |
|
@@ -489,11 +494,11 @@ def _apply_loffset(self, result):
|
489 | 494 | self.loffset = None
|
490 | 495 | return result
|
491 | 496 |
|
492 |
| - def _get_resampler_for_grouping(self, groupby, **kwargs): |
| 497 | + def _get_resampler_for_grouping(self, groupby): |
493 | 498 | """
|
494 | 499 | Return the correct class for resampling with groupby.
|
495 | 500 | """
|
496 |
| - return self._resampler_for_grouping(self, groupby=groupby, **kwargs) |
| 501 | + return self._resampler_for_grouping(self, groupby=groupby) |
497 | 502 |
|
498 | 503 | def _wrap_result(self, result):
|
499 | 504 | """
|
@@ -1039,9 +1044,10 @@ class _GroupByMixin(PandasObject):
|
1039 | 1044 | Provide the groupby facilities.
|
1040 | 1045 | """
|
1041 | 1046 |
|
1042 |
| - _attributes: list[str] |
| 1047 | + _attributes: list[str] # in practice the same as Resampler._attributes |
1043 | 1048 |
|
1044 |
| - def __init__(self, obj, *args, **kwargs): |
| 1049 | + def __init__(self, obj, **kwargs): |
| 1050 | + # reached via ._gotitem and _get_resampler_for_grouping |
1045 | 1051 |
|
1046 | 1052 | parent = kwargs.pop("parent", None)
|
1047 | 1053 | groupby = kwargs.pop("groupby", None)
|
@@ -1450,7 +1456,7 @@ class TimeGrouper(Grouper):
|
1450 | 1456 | def __init__(
|
1451 | 1457 | self,
|
1452 | 1458 | freq="Min",
|
1453 |
| - closed: str | None = None, |
| 1459 | + closed: Literal["left", "right"] | None = None, |
1454 | 1460 | label: str | None = None,
|
1455 | 1461 | how="mean",
|
1456 | 1462 | axis=0,
|
@@ -1822,8 +1828,13 @@ def _take_new_index(
|
1822 | 1828 |
|
1823 | 1829 |
|
1824 | 1830 | def _get_timestamp_range_edges(
|
1825 |
| - first, last, freq, closed="left", origin="start_day", offset=None |
1826 |
| -): |
| 1831 | + first: Timestamp, |
| 1832 | + last: Timestamp, |
| 1833 | + freq: BaseOffset, |
| 1834 | + closed: Literal["right", "left"] = "left", |
| 1835 | + origin="start_day", |
| 1836 | + offset: Timedelta | None = None, |
| 1837 | +) -> tuple[Timestamp, Timestamp]: |
1827 | 1838 | """
|
1828 | 1839 | Adjust the `first` Timestamp to the preceding Timestamp that resides on
|
1829 | 1840 | the provided offset. Adjust the `last` Timestamp to the following
|
@@ -1895,8 +1906,13 @@ def _get_timestamp_range_edges(
|
1895 | 1906 |
|
1896 | 1907 |
|
1897 | 1908 | def _get_period_range_edges(
|
1898 |
| - first, last, freq, closed="left", origin="start_day", offset=None |
1899 |
| -): |
| 1909 | + first: Period, |
| 1910 | + last: Period, |
| 1911 | + freq: BaseOffset, |
| 1912 | + closed: Literal["right", "left"] = "left", |
| 1913 | + origin="start_day", |
| 1914 | + offset: Timedelta | None = None, |
| 1915 | +) -> tuple[Period, Period]: |
1900 | 1916 | """
|
1901 | 1917 | Adjust the provided `first` and `last` Periods to the respective Period of
|
1902 | 1918 | the given offset that encompasses them.
|
@@ -1959,7 +1975,12 @@ def _insert_nat_bin(
|
1959 | 1975 |
|
1960 | 1976 |
|
1961 | 1977 | def _adjust_dates_anchored(
|
1962 |
| - first, last, freq, closed="right", origin="start_day", offset=None |
| 1978 | + first, |
| 1979 | + last, |
| 1980 | + freq, |
| 1981 | + closed: Literal["right", "left"] = "right", |
| 1982 | + origin="start_day", |
| 1983 | + offset: Timedelta | None = None, |
1963 | 1984 | ):
|
1964 | 1985 | # First and last offsets should be calculated from the start day to fix an
|
1965 | 1986 | # error cause by resampling across multiple days when a one day period is
|
@@ -2029,7 +2050,14 @@ def _adjust_dates_anchored(
|
2029 | 2050 | return fresult, lresult
|
2030 | 2051 |
|
2031 | 2052 |
|
2032 |
| -def asfreq(obj, freq, method=None, how=None, normalize=False, fill_value=None): |
| 2053 | +def asfreq( |
| 2054 | + obj: FrameOrSeries, |
| 2055 | + freq, |
| 2056 | + method=None, |
| 2057 | + how=None, |
| 2058 | + normalize: bool = False, |
| 2059 | + fill_value=None, |
| 2060 | +) -> FrameOrSeries: |
2033 | 2061 | """
|
2034 | 2062 | Utility frequency conversion method for Series/DataFrame.
|
2035 | 2063 |
|
|
0 commit comments