3
3
(and possibly TimedeltaArray/PeriodArray)
4
4
"""
5
5
6
- from typing import Tuple
6
+ from typing import Union
7
7
8
8
import numpy as np
9
9
10
10
from pandas ._libs .tslibs import OutOfBoundsDatetime , Timedelta , Timestamp
11
11
12
- from pandas .tseries .offsets import DateOffset , Tick , generate_range
12
+ from pandas .tseries .offsets import DateOffset
13
13
14
14
15
- def generate_timestamps_range (
16
- start : Timestamp , end : Timestamp , periods : int , freq : DateOffset
17
- ) -> Tuple [np .ndarray , str ]:
18
- """
19
- Generate a range of dates with the spans between dates described by
20
- the given `freq` DateOffset.
21
-
22
- Parameters
23
- ----------
24
- start : Timestamp or None
25
- first point of produced date range
26
- end : Timestamp or None
27
- last point of produced date range
28
- periods : int
29
- number of periods in produced date range
30
- freq : DateOffset
31
- describes space between dates in produced date range
32
-
33
- Returns
34
- -------
35
- (tuple): containing:
36
-
37
- values : ndarray[np.int64] representing nanosecond unix timestamps
38
- tz : the timezone of the range
39
- """
40
- if isinstance (freq , Tick ):
41
- start_value = Timestamp (start ).value if start is not None else None
42
- end_value = Timestamp (end ).value if end is not None else None
43
- values = _generate_regular_range (start_value , end_value , periods , freq .nanos )
44
- else :
45
- xdr = generate_range (start = start , end = end , periods = periods , offset = freq )
46
- values = np .array ([x .value for x in xdr ], dtype = np .int64 )
47
-
48
- tz = start .tz if start is not None else end .tz
49
- return values , tz
50
-
51
-
52
- def generate_timedeltas_range (
53
- start : Timedelta , end : Timedelta , periods : int , freq : DateOffset
15
+ def generate_regular_range (
16
+ start : Union [Timestamp , Timedelta ],
17
+ end : Union [Timestamp , Timedelta ],
18
+ periods : int ,
19
+ freq : DateOffset ,
54
20
):
55
21
"""
56
- Generate a range of dates with the spans between dates described by
57
- the given `freq` DateOffset.
22
+ Generate a range of dates or timestamps with the spans between dates
23
+ described by the given `freq` DateOffset.
58
24
59
25
Parameters
60
26
----------
61
- start : Timedelta or None
27
+ start : Timedelta, Timestamp or None
62
28
first point of produced date range
63
- end : Timedelta or None
29
+ start : Timedelta, Timestamp or None
64
30
last point of produced date range
65
31
periods : int
66
32
number of periods in produced date range
@@ -69,14 +35,13 @@ def generate_timedeltas_range(
69
35
70
36
Returns
71
37
-------
72
- ndarray[np.int64] representing nanosecond timedeltas
38
+ ndarray[np.int64]
39
+ Representing nanosecond unix timestamps.
73
40
"""
74
- start_value = Timedelta (start ).value if start is not None else None
75
- end_value = Timedelta (end ).value if end is not None else None
76
- return _generate_regular_range (start_value , end_value , periods , freq .nanos )
77
-
41
+ start = start .value if start is not None else None
42
+ end = end .value if end is not None else None
43
+ stride = freq .nanos
78
44
79
- def _generate_regular_range (start : int , end : int , periods : int , stride : int ):
80
45
b = start
81
46
if periods is None :
82
47
# cannot just use e = Timestamp(end) + 1 because arange breaks when
0 commit comments