1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
U
¬ý°dÞã@s˜dZddlmZddlZddlmZddlmZm    Z    m
Z
m Z m Z ddl mZdddd    d
d d d œdd„Zddddd ddœdd„Zdddd ddœdd„ZdS)zj
Helper functions to generate range-like data for DatetimeArray
(and possibly TimedeltaArray/PeriodArray)
é)Ú annotationsN)Úi8max)Ú
BaseOffsetÚOutOfBoundsDatetimeÚ    TimedeltaÚ    TimestampÚiNaT)ÚnptÚnszTimestamp | Timedelta | Nonez
int | NonerÚstrznpt.NDArray[np.intp])ÚstartÚendÚperiodsÚfreqÚunitÚreturnc
Cs²|dk    r|jnd}|dk    r |jnd}|jt|ƒ}z|j|dd}Wn:tk
r~}ztd|›d|›dƒ|‚W5d}~XYnXt|jƒ}    |dkrÈ|dk    rÈ|dk    rÈ|}
|
||
|    |    |    dd} n\|dk    rî|dk    rî|}
t|
||    d    d
} n6|dk    r|dk    r||    } t| ||    d d
}
ntd ƒ‚tjd dxztj    |
| |    tj
d} WnXt k
r¢|
g} | d| kr†|   | d|    ¡qbtj | dd…tj
d} YnXW5QRX| S)aŒ
    Generate a range of dates or timestamps with the spans between dates
    described by the given `freq` DateOffset.
 
    Parameters
    ----------
    start : Timedelta, Timestamp or None
        First point of produced date range.
    end : Timedelta, Timestamp or None
        Last point of produced date range.
    periods : int or None
        Number of periods in produced date range.
    freq : Tick
        Describes space between dates in produced date range.
    unit : str, default "ns"
        The resolution the output is meant to represent.
 
    Returns
    -------
    ndarray[np.int64]
        Representing the given resolution.
    NF)Zround_okzfreq=z is incompatible with unit=z,. Use a lower freq or a higher unit instead.éér )Úsider zEat least 'start' or 'end' should be specified if a 'period' is given.Úraise©Zover)Zdtypeéÿÿÿÿ)Ú_valueZnanosrZas_unitÚ
ValueErrorÚintÚ_generate_range_overflow_safeÚnpÚerrstateZarangeÚint64ÚFloatingPointErrorÚappendÚarray)r r rrrÚistartZiendÚtdÚerrÚstrideÚbÚeÚvaluesZxdr©r)úQd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/core/arrays/_ranges.pyÚgenerate_regular_rangesJÿ
ÿý
"ÿ(r+r r)Úendpointrr%rrc Cs„|dks t‚t t¡}d|›d|›d|›}tjddRzt |¡t t |¡¡}Wn,tk
r„}zt|ƒ|‚W5d}~XYnXW5QRXt |¡|kr¬t||||ƒS|dkrÄ|d    krÄ|dksä|dkrØ|krînn|d
krît|ƒ‚n@|d
kr.|||kr|kr.nnt    |||d ||ƒS|d }||}    d|    krV|kshnt|    |||fƒ‚t    ||||ƒ}
t    |
|    ||ƒS) a[
    Calculate the second endpoint for passing to np.arange, checking
    to avoid an integer overflow.  Catch OverflowError and re-raise
    as OutOfBoundsDatetime.
 
    Parameters
    ----------
    endpoint : int
        nanosecond timestamp of the known endpoint of the desired range
    periods : int
        number of periods in the desired range
    stride : int
        nanoseconds between periods in the desired range
    side : {'start', 'end'}
        which end of the range `endpoint` refers to
 
    Returns
    -------
    other_end : int
 
    Raises
    ------
    OutOfBoundsDatetime
    ©r r úCannot generate range with ú=ú  and periods=rrNrr r rr)
ÚAssertionErrorrÚuint64rrÚabsrrÚ$_generate_range_overflow_safe_signedr) r,rr%rÚi64maxÚmsgÚaddendr$Z mid_periodsÚ    remainingZmidpointr)r)r*r]s> 
&ÿÿ
ÿ
*ÿ*rc
Cs(|dks t‚|dkr|d9}tjddÜt |¡t |¡}z,t |¡|}|tkrZt‚|WW5QR£Sttfk
r‚YnX|dkr”|dks¨|dkr¤|dks¨t‚|dkrt |¡t |¡}t t¡}||ksÜt‚||t |¡kr|W5QR£SW5QRXt    d|›d|›d    |›ƒ‚d
S) z‹
    A special case for _generate_range_overflow_safe where `periods * stride`
    can be calculated without overflowing int64 bounds.
    r-r rrrrr.r/r0N)
r1rrrrÚ OverflowErrorrr2rr)r,rr%rr7Úresultr5r)r)r*r4 s, $
 
 ÿr4)r
)r )Ú__doc__Ú
__future__rÚnumpyrZpandas._libs.librZpandas._libs.tslibsrrrrrZpandas._typingr    r+rr4r)r)r)r*Ú<module>s   ûJÿC