Skip to content

Commit 0fdb559

Browse files
authored
TYP: tslibs (#43365)
1 parent 71e5d7b commit 0fdb559

File tree

10 files changed

+77
-61
lines changed

10 files changed

+77
-61
lines changed

pandas/_libs/tslibs/conversion.pyi

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ from datetime import (
55

66
import numpy as np
77

8+
from pandas._typing import npt
9+
810
DT64NS_DTYPE: np.dtype
911
TD64NS_DTYPE: np.dtype
1012

@@ -22,6 +24,6 @@ def ensure_timedelta64ns(
2224
copy: bool = ...,
2325
) -> np.ndarray: ... # np.ndarray[timedelta64ns]
2426
def datetime_to_datetime64(
25-
values: np.ndarray, # np.ndarray[object]
27+
values: npt.NDArray[np.object_],
2628
) -> tuple[np.ndarray, tzinfo | None,]: ... # (np.ndarray[dt64ns], _)
2729
def localize_pydatetime(dt: datetime, tz: tzinfo | None) -> datetime: ...

pandas/_libs/tslibs/fields.pyi

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,35 @@
11
import numpy as np
22

3+
from pandas._typing import npt
4+
35
def build_field_sarray(
4-
dtindex: np.ndarray, # const int64_t[:]
6+
dtindex: npt.NDArray[np.int64], # const int64_t[:]
57
) -> np.ndarray: ...
68
def month_position_check(fields, weekdays) -> str | None: ...
79
def get_date_name_field(
8-
dtindex: np.ndarray, # const int64_t[:]
10+
dtindex: npt.NDArray[np.int64], # const int64_t[:]
911
field: str,
1012
locale=...,
11-
) -> np.ndarray: ... # np.ndarray[object]
13+
) -> npt.NDArray[np.object_]: ...
1214
def get_start_end_field(
13-
dtindex: np.ndarray, # const int64_t[:]
15+
dtindex: npt.NDArray[np.int64], # const int64_t[:]
1416
field: str,
1517
freqstr: str | None = ...,
1618
month_kw: int = ...,
17-
) -> np.ndarray: ... # np.ndarray[bool]
19+
) -> npt.NDArray[np.bool_]: ...
1820
def get_date_field(
19-
dtindex: np.ndarray, # const int64_t[:]
21+
dtindex: npt.NDArray[np.int64], # const int64_t[:]
2022
field: str,
21-
) -> np.ndarray: ... # np.ndarray[in32]
23+
) -> npt.NDArray[np.int32]: ...
2224
def get_timedelta_field(
2325
tdindex: np.ndarray, # const int64_t[:]
2426
field: str,
25-
) -> np.ndarray: ... # np.ndarray[int32]
27+
) -> npt.NDArray[np.int32]: ...
2628
def isleapyear_arr(
2729
years: np.ndarray,
28-
) -> np.ndarray: ... # np.ndarray[bool]
30+
) -> npt.NDArray[np.bool_]: ...
2931
def build_isocalendar_sarray(
30-
dtindex: np.ndarray, # const int64_t[:]
32+
dtindex: npt.NDArray[np.int64], # const int64_t[:]
3133
) -> np.ndarray: ...
3234
def get_locale_names(name_type: str, locale: object = None): ...
3335

@@ -44,7 +46,7 @@ class RoundTo:
4446
def NEAREST_HALF_MINUS_INFTY(self) -> int: ...
4547

4648
def round_nsint64(
47-
values: np.ndarray, # np.ndarray[np.int64]
49+
values: npt.NDArray[np.int64],
4850
mode: RoundTo,
4951
nanos: int,
50-
) -> np.ndarray: ... # np.ndarray[np.int64]
52+
) -> npt.NDArray[np.int64]: ...

pandas/_libs/tslibs/parsing.pyi

+18-17
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ from datetime import datetime
33
import numpy as np
44

55
from pandas._libs.tslibs.offsets import BaseOffset
6+
from pandas._typing import npt
67

78
class DateParseError(ValueError): ...
89

@@ -21,32 +22,32 @@ def parse_time_string(
2122
def _does_string_look_like_datetime(py_string: str) -> bool: ...
2223
def quarter_to_myear(year: int, quarter: int, freq: str) -> tuple[int, int]: ...
2324
def try_parse_dates(
24-
values: np.ndarray, # object[:]
25+
values: npt.NDArray[np.object_], # object[:]
2526
parser=...,
2627
dayfirst: bool = ...,
2728
default: datetime | None = ...,
28-
) -> np.ndarray: ... # np.ndarray[object]
29+
) -> npt.NDArray[np.object_]: ...
2930
def try_parse_date_and_time(
30-
dates: np.ndarray, # object[:]
31-
times: np.ndarray, # object[:]
31+
dates: npt.NDArray[np.object_], # object[:]
32+
times: npt.NDArray[np.object_], # object[:]
3233
date_parser=...,
3334
time_parser=...,
3435
dayfirst: bool = ...,
3536
default: datetime | None = ...,
36-
) -> np.ndarray: ... # np.ndarray[object]
37+
) -> npt.NDArray[np.object_]: ...
3738
def try_parse_year_month_day(
38-
years: np.ndarray, # object[:]
39-
months: np.ndarray, # object[:]
40-
days: np.ndarray, # object[:]
41-
) -> np.ndarray: ... # np.ndarray[object]
39+
years: npt.NDArray[np.object_], # object[:]
40+
months: npt.NDArray[np.object_], # object[:]
41+
days: npt.NDArray[np.object_], # object[:]
42+
) -> npt.NDArray[np.object_]: ...
4243
def try_parse_datetime_components(
43-
years: np.ndarray, # object[:]
44-
months: np.ndarray, # object[:]
45-
days: np.ndarray, # object[:]
46-
hours: np.ndarray, # object[:]
47-
minutes: np.ndarray, # object[:]
48-
seconds: np.ndarray, # object[:]
49-
) -> np.ndarray: ... # np.ndarray[object]
44+
years: npt.NDArray[np.object_], # object[:]
45+
months: npt.NDArray[np.object_], # object[:]
46+
days: npt.NDArray[np.object_], # object[:]
47+
hours: npt.NDArray[np.object_], # object[:]
48+
minutes: npt.NDArray[np.object_], # object[:]
49+
seconds: npt.NDArray[np.object_], # object[:]
50+
) -> npt.NDArray[np.object_]: ...
5051
def format_is_iso(f: str) -> bool: ...
5152
def guess_datetime_format(
5253
dt_str,
@@ -57,5 +58,5 @@ def guess_datetime_format(
5758
def concat_date_cols(
5859
date_cols: tuple,
5960
keep_trivial_numbers: bool = ...,
60-
) -> np.ndarray: ... # np.ndarray[object]
61+
) -> npt.NDArray[np.object_]: ...
6162
def get_rule_month(source: str) -> str: ...

pandas/_libs/tslibs/period.pyi

+12-11
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ from pandas._libs.tslibs.timestamps import Timestamp
88
from pandas._typing import (
99
Frequency,
1010
Timezone,
11+
npt,
1112
)
1213

1314
INVALID_FREQ_ERR_MSG: str
@@ -16,30 +17,30 @@ DIFFERENT_FREQ: str
1617
class IncompatibleFrequency(ValueError): ...
1718

1819
def periodarr_to_dt64arr(
19-
periodarr: np.ndarray, # const int64_t[:]
20+
periodarr: npt.NDArray[np.int64], # const int64_t[:]
2021
freq: int,
21-
) -> np.ndarray: ... # np.ndarray[np.int64]
22+
) -> npt.NDArray[np.int64]: ...
2223
def period_asfreq_arr(
23-
arr: np.ndarray, # ndarray[int64_t] arr,
24+
arr: npt.NDArray[np.int64],
2425
freq1: int,
2526
freq2: int,
2627
end: bool,
27-
) -> np.ndarray: ... # np.ndarray[np.int64]
28+
) -> npt.NDArray[np.int64]: ...
2829
def get_period_field_arr(
2930
field: str,
30-
arr: np.ndarray, # const int64_t[:]
31+
arr: npt.NDArray[np.int64], # const int64_t[:]
3132
freq: int,
32-
) -> np.ndarray: ... # np.ndarray[np.int64]
33+
) -> npt.NDArray[np.int64]: ...
3334
def from_ordinals(
34-
values: np.ndarray, # const int64_t[:]
35+
values: npt.NDArray[np.int64], # const int64_t[:]
3536
freq: Frequency,
36-
) -> np.ndarray: ... # np.ndarray[np.int64]
37+
) -> npt.NDArray[np.int64]: ...
3738
def extract_ordinals(
38-
values: np.ndarray, # np.ndarray[object]
39+
values: npt.NDArray[np.object_],
3940
freq: Frequency | int,
40-
) -> np.ndarray: ... # np.ndarray[np.int64]
41+
) -> npt.NDArray[np.int64]: ...
4142
def extract_freq(
42-
values: np.ndarray, # np.ndarray[object]
43+
values: npt.NDArray[np.object_],
4344
) -> BaseOffset: ...
4445

4546
# exposed for tests

pandas/_libs/tslibs/strptime.pyi

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import numpy as np
22

3+
from pandas._typing import npt
4+
35
def array_strptime(
4-
values: np.ndarray, # np.ndarray[object]
6+
values: npt.NDArray[np.object_],
57
fmt: str | None,
68
exact: bool = True,
79
errors: str = "raise",

pandas/_libs/tslibs/timedeltas.pyi

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ from typing import (
77
)
88

99
import numpy as np
10+
from pands._typing import npt
1011

1112
from pandas._libs.tslibs import (
1213
NaTType,
@@ -16,11 +17,11 @@ from pandas._libs.tslibs import (
1617
_S = TypeVar("_S")
1718

1819
def ints_to_pytimedelta(
19-
arr: np.ndarray, # const int64_t[:]
20+
arr: npt.NDArray[np.int64], # const int64_t[:]
2021
box: bool = ...,
21-
) -> np.ndarray: ... # np.ndarray[object]
22+
) -> npt.NDArray[np.object_]: ...
2223
def array_to_timedelta64(
23-
values: np.ndarray, # ndarray[object]
24+
values: npt.NDArray[np.object_],
2425
unit: str | None = ...,
2526
errors: str = ...,
2627
) -> np.ndarray: ... # np.ndarray[m8ns]

pandas/_libs/tslibs/timezones.pyi

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ from typing import Callable
66

77
import numpy as np
88

9+
from pandas._typing import npt
10+
911
# imported from dateutil.tz
1012
dateutil_gettz: Callable[[str], tzinfo]
1113

@@ -15,9 +17,9 @@ def infer_tzinfo(
1517
start: datetime | None,
1618
end: datetime | None,
1719
) -> tzinfo | None: ...
18-
19-
# ndarrays returned are both int64_t
20-
def get_dst_info(tz: tzinfo) -> tuple[np.ndarray, np.ndarray, str]: ...
20+
def get_dst_info(
21+
tz: tzinfo,
22+
) -> tuple[npt.NDArray[np.int64], npt.NDArray[np.int64], str]: ...
2123
def maybe_get_tz(tz: str | int | np.int64 | tzinfo | None) -> tzinfo | None: ...
2224
def get_timezone(tz: tzinfo) -> tzinfo | str: ...
2325
def is_utc(tz: tzinfo | None) -> bool: ...

pandas/_libs/tslibs/tzconversion.pyi

+6-4
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,16 @@ from typing import Iterable
66

77
import numpy as np
88

9+
from pandas._typing import npt
10+
911
def tz_convert_from_utc(
10-
vals: np.ndarray, # const int64_t[:]
12+
vals: npt.NDArray[np.int64], # const int64_t[:]
1113
tz: tzinfo,
12-
) -> np.ndarray: ... # np.ndarray[np.int64]
14+
) -> npt.NDArray[np.int64]: ...
1315
def tz_convert_from_utc_single(val: np.int64, tz: tzinfo) -> np.int64: ...
1416
def tz_localize_to_utc(
15-
vals: np.ndarray, # np.ndarray[np.int64]
17+
vals: npt.NDArray[np.int64],
1618
tz: tzinfo | None,
1719
ambiguous: str | bool | Iterable[bool] | None = None,
1820
nonexistent: str | timedelta | np.timedelta64 | None = None,
19-
) -> np.ndarray: ... # np.ndarray[np.int64]
21+
) -> npt.NDArray[np.int64]: ...

pandas/_libs/tslibs/vectorized.pyi

+9-8
Original file line numberDiff line numberDiff line change
@@ -8,28 +8,29 @@ import numpy as np
88

99
from pandas._libs.tslibs.dtypes import Resolution
1010
from pandas._libs.tslibs.offsets import BaseOffset
11+
from pandas._typing import npt
1112

1213
def dt64arr_to_periodarr(
13-
stamps: np.ndarray, # const int64_t[:]
14+
stamps: npt.NDArray[np.int64], # const int64_t[:]
1415
freq: int,
1516
tz: tzinfo | None,
16-
) -> np.ndarray: ... # np.ndarray[np.int64, ndim=1]
17+
) -> npt.NDArray[np.int64]: ... # np.ndarray[np.int64, ndim=1]
1718
def is_date_array_normalized(
18-
stamps: np.ndarray, # const int64_t[:]
19+
stamps: npt.NDArray[np.int64], # const int64_t[:]
1920
tz: tzinfo | None = None,
2021
) -> bool: ...
2122
def normalize_i8_timestamps(
22-
stamps: np.ndarray, # const int64_t[:]
23+
stamps: npt.NDArray[np.int64], # const int64_t[:]
2324
tz: tzinfo | None,
24-
) -> np.ndarray: ... # np.ndarray[np.int64]
25+
) -> npt.NDArray[np.int64]: ...
2526
def get_resolution(
26-
stamps: np.ndarray, # const int64_t[:]
27+
stamps: npt.NDArray[np.int64], # const int64_t[:]
2728
tz: tzinfo | None = None,
2829
) -> Resolution: ...
2930
def ints_to_pydatetime(
30-
arr: np.ndarray, # const int64_t[:}]
31+
arr: npt.NDArray[np.int64], # const int64_t[:}]
3132
tz: tzinfo | None = None,
3233
freq: str | BaseOffset | None = None,
3334
fold: bool = False,
3435
box: str = "datetime",
35-
) -> np.ndarray: ... # np.ndarray[object]
36+
) -> npt.NDArray[np.object_]: ...

pandas/core/arrays/datetimes.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,13 @@ def tz_to_dtype(tz):
111111
return DatetimeTZDtype(tz=tz)
112112

113113

114-
def _field_accessor(name, field, docstring=None):
114+
def _field_accessor(name: str, field: str, docstring=None):
115115
def f(self):
116116
values = self._local_timestamps()
117117

118118
if field in self._bool_ops:
119+
result: np.ndarray
120+
119121
if field.endswith(("start", "end")):
120122
freq = self.freq
121123
month_kw = 12

0 commit comments

Comments
 (0)