@@ -1698,9 +1698,13 @@ def _generate_regular_range(cls, start, end, periods, freq):
1698
1698
e = _generate_range_overflow_safe (b , periods , stride , side = 'start' )
1699
1699
tz = start .tz
1700
1700
elif end is not None :
1701
- e = Timestamp (end ).value + stride
1701
+ e = Timestamp (end ).value
1702
1702
b = _generate_range_overflow_safe (e , periods , stride , side = 'end' )
1703
1703
tz = end .tz
1704
+
1705
+ # add an additional step to `e` because np.arange(b, e) will
1706
+ # not include `e`
1707
+ e += stride
1704
1708
else :
1705
1709
raise ValueError ("at least 'start' or 'end' should be specified "
1706
1710
"if a 'period' is given." )
@@ -1752,7 +1756,7 @@ def _generate_range_overflow_safe(endpoint, periods, stride,
1752
1756
i64max = np .iinfo (np .int64 ).max
1753
1757
msg = ('Cannot generate range with {side}={endpoint} and '
1754
1758
'periods={periods}'
1755
- .format (side = side , endpoint = endpoint , periods = periods ))
1759
+ .format (side = side , endpoint = Timestamp ( endpoint ) , periods = periods ))
1756
1760
1757
1761
with np .errstate (over = "raise" ):
1758
1762
# if periods * strides cannot be multiplied within the *uint64* bounds,
@@ -1772,12 +1776,6 @@ def _generate_range_overflow_safe(endpoint, periods, stride,
1772
1776
# no chance of not-overflowing
1773
1777
raise tslib .OutOfBoundsDatetime (msg )
1774
1778
1775
- elif (side == 'end' and endpoint > i64max and endpoint - stride <= i64max ):
1776
- # in _generate_regular_range we added `stride` thereby overflowing
1777
- # the bounds. Adjust to fix this.
1778
- return _generate_range_overflow_safe (endpoint - stride ,
1779
- periods - 1 , stride , side )
1780
-
1781
1779
# split into smaller pieces
1782
1780
return _generate_range_recurse (endpoint , periods , stride , side )
1783
1781
@@ -1849,7 +1847,6 @@ def _generate_range_recurse(endpoint, periods, stride, side):
1849
1847
mid_periods = periods // 2
1850
1848
remaining = periods - mid_periods
1851
1849
assert 0 < remaining < periods , (remaining , periods , endpoint , stride )
1852
- print (periods , mid_periods , endpoint , stride , side )
1853
1850
1854
1851
midpoint = _generate_range_overflow_safe (endpoint , mid_periods ,
1855
1852
stride , side )
0 commit comments