From 10cf231013ac9c2f7fa640a28333797357d0d992 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20W=C3=B6rtwein?= Date: Thu, 9 Jun 2022 11:58:54 -0400 Subject: [PATCH 1/2] TYP: generate_regular_range --- pandas/core/arrays/_ranges.py | 15 ++++++++------- pyright_reportGeneralTypeIssues.json | 4 +++- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/pandas/core/arrays/_ranges.py b/pandas/core/arrays/_ranges.py index 3909875e5660a..aff3ea976e124 100644 --- a/pandas/core/arrays/_ranges.py +++ b/pandas/core/arrays/_ranges.py @@ -14,14 +14,15 @@ Timestamp, iNaT, ) +from pandas._typing import npt def generate_regular_range( - start: Timestamp | Timedelta, - end: Timestamp | Timedelta, - periods: int, + start: Timestamp | Timedelta | None, + end: Timestamp | Timedelta | None, + periods: int | None, freq: BaseOffset, -): +) -> npt.NDArray[np.intp]: """ Generate a range of dates or timestamps with the spans between dates described by the given `freq` DateOffset. @@ -45,15 +46,15 @@ def generate_regular_range( iend = end.value if end is not None else None stride = freq.nanos - if periods is None: + if periods is None and istart is not None and iend is not None: b = istart # cannot just use e = Timestamp(end) + 1 because arange breaks when # stride is too large, see GH10887 e = b + (iend - b) // stride * stride + stride // 2 + 1 - elif istart is not None: + elif istart is not None and periods is not None: b = istart e = _generate_range_overflow_safe(b, periods, stride, side="start") - elif iend is not None: + elif iend is not None and periods is not None: e = iend + stride b = _generate_range_overflow_safe(e, periods, stride, side="end") else: diff --git a/pyright_reportGeneralTypeIssues.json b/pyright_reportGeneralTypeIssues.json index 22d607eb958e1..a6b5715723a24 100644 --- a/pyright_reportGeneralTypeIssues.json +++ b/pyright_reportGeneralTypeIssues.json @@ -11,13 +11,15 @@ [ # exclude tests "pandas/tests", + # exclude vendored files + "pandas/io/clipboard", + "pandas/util/version", # and all files that currently don't pass "pandas/_config/config.py", "pandas/core/algorithms.py", "pandas/core/apply.py", "pandas/core/array_algos/take.py", "pandas/core/arrays/_mixins.py", - "pandas/core/arrays/_ranges.py", "pandas/core/arrays/arrow/array.py", "pandas/core/arrays/base.py", "pandas/core/arrays/boolean.py", From 0bb320cc7e598eee95ff3b7acd1a144047df2e0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torsten=20W=C3=B6rtwein?= Date: Thu, 9 Jun 2022 19:23:59 -0400 Subject: [PATCH 2/2] update doc-string --- pandas/core/arrays/_ranges.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pandas/core/arrays/_ranges.py b/pandas/core/arrays/_ranges.py index aff3ea976e124..3bef3e59d5687 100644 --- a/pandas/core/arrays/_ranges.py +++ b/pandas/core/arrays/_ranges.py @@ -33,7 +33,7 @@ def generate_regular_range( First point of produced date range. end : Timedelta, Timestamp or None Last point of produced date range. - periods : int + periods : int or None Number of periods in produced date range. freq : Tick Describes space between dates in produced date range.