Skip to content

Commit 264da3b

Browse files
authored
TYP: generate_regular_range (#47295)
* TYP: generate_regular_range * update doc-string
1 parent 2db05d5 commit 264da3b

File tree

2 files changed

+12
-9
lines changed

2 files changed

+12
-9
lines changed

pandas/core/arrays/_ranges.py

+9-8
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,15 @@
1414
Timestamp,
1515
iNaT,
1616
)
17+
from pandas._typing import npt
1718

1819

1920
def generate_regular_range(
20-
start: Timestamp | Timedelta,
21-
end: Timestamp | Timedelta,
22-
periods: int,
21+
start: Timestamp | Timedelta | None,
22+
end: Timestamp | Timedelta | None,
23+
periods: int | None,
2324
freq: BaseOffset,
24-
):
25+
) -> npt.NDArray[np.intp]:
2526
"""
2627
Generate a range of dates or timestamps with the spans between dates
2728
described by the given `freq` DateOffset.
@@ -32,7 +33,7 @@ def generate_regular_range(
3233
First point of produced date range.
3334
end : Timedelta, Timestamp or None
3435
Last point of produced date range.
35-
periods : int
36+
periods : int or None
3637
Number of periods in produced date range.
3738
freq : Tick
3839
Describes space between dates in produced date range.
@@ -45,15 +46,15 @@ def generate_regular_range(
4546
iend = end.value if end is not None else None
4647
stride = freq.nanos
4748

48-
if periods is None:
49+
if periods is None and istart is not None and iend is not None:
4950
b = istart
5051
# cannot just use e = Timestamp(end) + 1 because arange breaks when
5152
# stride is too large, see GH10887
5253
e = b + (iend - b) // stride * stride + stride // 2 + 1
53-
elif istart is not None:
54+
elif istart is not None and periods is not None:
5455
b = istart
5556
e = _generate_range_overflow_safe(b, periods, stride, side="start")
56-
elif iend is not None:
57+
elif iend is not None and periods is not None:
5758
e = iend + stride
5859
b = _generate_range_overflow_safe(e, periods, stride, side="end")
5960
else:

pyright_reportGeneralTypeIssues.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,13 +11,15 @@
1111
[
1212
# exclude tests
1313
"pandas/tests",
14+
# exclude vendored files
15+
"pandas/io/clipboard",
16+
"pandas/util/version",
1417
# and all files that currently don't pass
1518
"pandas/_config/config.py",
1619
"pandas/core/algorithms.py",
1720
"pandas/core/apply.py",
1821
"pandas/core/array_algos/take.py",
1922
"pandas/core/arrays/_mixins.py",
20-
"pandas/core/arrays/_ranges.py",
2123
"pandas/core/arrays/arrow/array.py",
2224
"pandas/core/arrays/base.py",
2325
"pandas/core/arrays/boolean.py",

0 commit comments

Comments
 (0)