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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
U
­ý°d~Fã@süddlmZddlZddlZddlmZddlmZddl    m
Z
m Z m Z m Z mZmZmZmZmZddlmZddlmZddlmmZejddgdd    d
„ƒZGd d „d ƒZGd d„deƒZGdd„deƒZ Gdd„deƒZ!Gdd„deƒZ"dd„Z#dS)é)ÚpartialN)Úis_categorical_dtype)Ú IntervalDtype)    Ú CategoricalÚCategoricalIndexÚIndexÚIntervalÚ IntervalIndexÚ
date_rangeÚnotnaÚ period_rangeÚtimedelta_range)Ú IntervalArrayZfoo©ÚparamscCs|jS©N©Úparam)Úrequest©rúfd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/indexes/interval/test_constructors.pyÚnamesrc @s¾eZdZdZejdddddgejfejddd    ejfe    ejd
d ejd    ƒejfe    ejdd ej
d    ƒej
fe    e d dd¡ej d    ej fe ddddfe dddddfe ddddfgddd„ƒZdd„Zej de    ddd dd!gejd    d"fe    ddd dd!gejd    d#fe    ddd dd!gejd    d$fe    ddd dd!gej d    dfe d%d&ddfe dd&ddfg¡d'd(„ƒZej d)e    ddd dd!gejd    e    ddd dd!gej
d    e    ddd dd!gej d    e d%d&de dd&dg¡d*d+„ƒZej d)ejgd ejgd!ejgd,g¡d-d.„ƒZej d)gejgdd    ejgd/d    ejgd"d    ejgd#d    ejgd$d    g¡d0d1„ƒZej d)ed2ƒed3ƒejed3ƒed    ejed3ƒd4d    g¡d5d6„ƒZej d7eeg¡d8d9„ƒZd:d;„Zd<S)=ÚConstructorTestszÑ
    Common tests for all variations of IntervalIndex construction. Input data
    to be supplied in breaks format, then converted by the subclass method
    get_kwargs_from_breaks to the expected format.
    éééé\ié
Úint64©Údtypeiöÿÿÿé ééégà?Z20180101©Úperiodsz<M8[ns]z
US/Eastern)r&Útzzdatetime64[ns, US/Eastern]z1 dayz<m8[ns]rcCs|jSrr©ÚselfrrrrÚbreaks_and_expected_subtype%sz,ConstructorTests.breaks_and_expected_subtypec    Cs”|\}}| ||¡}|f||dœ|—Ž}|j|ks6t‚|j|ksDt‚|jj|ksTt‚t |jt    |dd…|d¡t |j
t    |dd…|d¡dS)N)Úclosedréÿÿÿÿré) Úget_kwargs_from_breaksr+ÚAssertionErrorrr ÚsubtypeÚtmÚassert_index_equalÚleftrÚright)    r)Ú constructorr*r+rÚbreaksÚexpected_subtypeÚ result_kwargsÚresultrrrÚtest_constructor7s z!ConstructorTests.test_constructorzbreaks, subtyperr-ééÚfloat64zdatetime64[ns]ztimedelta64[ns]z
2017-01-01éc
Csb| | |¡¡}|f|Ž}| |¡}t|dƒ}|t|ƒfD]"}|fd|i|—Ž}    t |    |¡q:dS)Nr4r )r.ZastyperÚstrr1r2)
r)r5r6r0Zexpected_kwargsÚexpectedr8Úiv_dtyper r9rrrÚtest_constructor_dtypeDs 
 
 
z'ConstructorTests.test_constructor_dtyper6c
Csdt|jƒ}| |¡}|t|ƒfD]>}t d¡|f|ddœ|—Ž}W5QRX|jjdks t‚q dS)Nr3©r r+)rr r.r?r1Zassert_produces_warningr+r/)r)r5r6rAr8r r9rrrÚtest_constructor_pass_closedZs
 
 z-ConstructorTests.test_constructor_pass_closedé2cCsl| |¡}|fd|i|—Ž}tj}tj|dd…td}|j|ksFt‚|jj|ksVt‚t     
t |¡|¡dS)Nr+r,r) r.Únpr=ÚarrayÚobjectr+r/r r0r1Úassert_numpy_array_equal)r)r5r6r+r8r9r7Úexpected_valuesrrrÚtest_constructor_nanos
z%ConstructorTests.test_constructor_nanÚuint64cCsv| |¡}|fd|i|—Ž}tjgtd}t|dtjƒ}|jsBt‚|j|ksPt‚|j    j
|ks`t‚t   t |¡|¡dS)Nr+rr ) r.rFrGrHÚgetattrrÚemptyr/r+r r0r1rI)r)r5r6r+r8r9rJr7rrrÚtest_constructor_empty|s
 
z'ConstructorTests.test_constructor_emptyÚ
0123456789Z
abcdefghijz<U1c    Cs2d}tjt|d|f| |¡ŽW5QRXdS)NúIcategory, object, and string subtypes are not supported for IntervalIndex©Úmatch)ÚpytestÚraisesÚ    TypeErrorr.)r)r5r6ÚmsgrrrÚtest_constructor_string”s ÿz(ConstructorTests.test_constructor_stringÚcat_constructorcCsDtjddd}t |¡}||ƒ}| |¡}|f|Ž}t ||¡dS)Nrrr)rFÚaranger    Ú from_breaksr.r1r2)r)r5rYr6r@Z
cat_breaksr8r9rrrÚ"test_constructor_categorical_valid¦s 
 
 
z3ConstructorTests.test_constructor_categorical_validc    Cs| tdƒ¡}d}tjt|d|fddi|—ŽW5QRXd}tjt|d|fddi|—ŽW5QRXd    }tjt|d|fddi|—ŽW5QRXtd
dd }| |¡}d }tjt|d|f|ŽW5QRX| tdd d ƒ¡}d}tjt|d|f|ŽW5QRXdS)Nrz8closed must be one of 'right', 'left', 'both', 'neither'rRr+Úinvalidz)dtype must be an IntervalDtype, got int64r rz(data type ["']invalid["'] not understoodz
2000-01-01r%z:Period dtypes are not supported, use a PeriodIndex insteadr,z+left side of interval must be <= right side)r.ÚrangerTrUÚ
ValueErrorrVr )r)r5ZfillerrWr&Zperiods_kwargsZdecreasing_kwargsrrrÚtest_generic_errors²s& 
z$ConstructorTests.test_generic_errorsN) Ú__name__Ú
__module__Ú __qualname__Ú__doc__rTÚfixturerFrrZrrLr=r
r r*r:ÚmarkÚ parametrizerBrDÚnanrKrGrOÚtupleÚlistrHrXrrr\r`rrrrrs| þõÿ
 úþ
 
 
ûþ
 
*
     úþ
üþ    
    
rc@sZeZdZdZejdd„ƒZd dd„Zdd„Zej     
d    e j e j fe j e j fg¡d
d „ƒZd S)ÚTestFromArraysz+Tests specific to IntervalIndex.from_arrayscCstjSr)r    Ú from_arrays©r)rrrr5ÖszTestFromArrays.constructorr4cCs|dd…|dd…dœS)z—
        converts intervals in breaks format to a dictionary of kwargs to
        specific to the format expected by IntervalIndex.from_arrays
        Nr,r-)r3r4r©r)r6r+rrrr.Úsz%TestFromArrays.get_kwargs_from_breaksc    CsŠttdƒdd}d}tjt|d"t |dd…|dd…¡W5QRXddd    g}d    d
g}d }tjt|dt ||¡W5QRXdS) NÚ
01234abcdeT©ZorderedrQrRr,r-rr;rz(left and right must have the same length)rrjrTrUrVr    rlr_)r)ÚdatarWr3r4rrrÚtest_constructor_errorsásÿ&
z&TestFromArrays.test_constructor_errorszleft_subtype, right_subtypec    Cs|tjd|d}tjdd|d}t ||¡}t|tjd}t|tjd}tj}t |j|¡t |j    |¡|j
j |ksxt ‚dS)z:mixed int/float left/right results in float for both sidesé    rr-rN) rFrZr    rlrr=r1r2r3r4r r0r/)    r)Z left_subtypeZ right_subtyper3r4r9Z expected_leftZexpected_rightr7rrrÚtest_mixed_float_intòs z#TestFromArrays.test_mixed_float_intN)r4)rarbrcrdrTrer5r.rrrfrgrFrr=rtrrrrrkÓs
 
ÿrkc@s@eZdZdZejdd„ƒZddd„Zdd„Zd    d
„Z    d d „Z
d S)ÚTestFromBreaksz+Tests specific to IntervalIndex.from_breakscCstjSr)r    r[rmrrrr5szTestFromBreaks.constructorr4cCsd|iS)z—
        converts intervals in breaks format to a dictionary of kwargs to
        specific to the format expected by IntervalIndex.from_breaks
        r6rrnrrrr. sz%TestFromBreaks.get_kwargs_from_breaksc    Cs<ttdƒdd}d}tjt|dt |¡W5QRXdS)NroTrprQrR)rrjrTrUrVr    r[)r)rqrWrrrrrs
ÿz&TestFromBreaks.test_constructor_errorscCs*dg}t |¡}t g¡}t ||¡dS)z3breaks of length one produce an empty IntervalIndexrN)r    r[r1r2)r)r6r9r@rrrÚtest_length_ones
 
zTestFromBreaks.test_length_onecCs:t d¡}t |¡j}|jjdks6|jj|jjk    s6t‚dS)Nr>)    rFrZr    r[Ú_dataÚ_leftÚbaseZ_rightr/)r)r6r9rrrÚtest_left_right_dont_share_data#s
 z.TestFromBreaks.test_left_right_dont_share_dataN)r4) rarbrcrdrTrer5r.rrrvrzrrrrrus
 
 
ruc@s8eZdZdZejdd„ƒZd dd„Zdd„Zd    d
„Z    d S) ÚTestFromTuplesz+Tests specific to IntervalIndex.from_tuplescCstjSr)r    Ú from_tuplesrmrrrr5-szTestFromTuples.constructorr4cCsˆt |¡rt |j›d¡t|ƒdkr0d|iStt|dd…|dd…ƒƒ}t|tt    fƒrdd|iSt
|ƒrzd|  |¡iSdt   |¡iS)z—
        converts intervals in breaks format to a dictionary of kwargs to
        specific to the format expected by IntervalIndex.from_tuples
        z- not relevant IntervalIndex.from_tuples testsrrqNr,r-)r1Úis_unsigned_integer_dtyperTÚskipr ÚlenrjÚzipÚ
isinstancerirÚ _constructorÚcomZasarray_tuplesafe)r)r6r+Útuplesrrrr.1s
 z%TestFromTuples.get_kwargs_from_breaksc    Cs®dddg}d}tjt|j|ddt |¡W5QRXdddg}d}tjt|j|ddt |¡W5QRXdd    d
g}tjt|j|ddt |¡W5QRXdS) N©rr-r;)rr<z5IntervalIndex.from_tuples received an invalid item, 2)ÚtrR)r;z>IntervalIndex.from_tuples requires tuples of length 2, got {t})r;rr<)r>é)rTrUrVÚformatr    r|r_)r)r„rWrrrrrCs
 
 
z&TestFromTuples.test_constructor_errorscCs>dtjtjfdg}t |¡}t dtjdg¡}t ||¡dS)Nr…)r;r)rFrhr    r|r1r2)r)Zna_tupleZ idx_na_tupleZidx_na_elementrrrÚtest_na_tuplesTs
zTestFromTuples.test_na_tuplesN)r4)
rarbrcrdrTrer5r.rrr‰rrrrr{*s 
 
r{c @seZdZdZejeeeddgddgddd„ƒZ    ejd    d
„ƒZ
d%d d „Z dd„Z dd„Z dd„Zej dgdfejejgdfeddddeddddgdfeddddeddd dgdfejedƒddd fg¡dd„ƒZej deejeeg¡d d!„ƒZd"d#„Zd$S)&ÚTestClassConstructorsz6Tests specific to the IntervalIndex/Index constructorsÚintervalrr    r)rÚidscCs|jSrrr(rrrÚklass_szTestClassConstructors.klasscCstSr)r    rmrrrr5gsz!TestClassConstructors.constructorr4cs’t |¡rt |j›d¡t|ƒdkr0d|iS‡fdd„t|dd…|dd…ƒDƒ}t|tƒrjd|iSt    |ƒr€d| 
|¡iSdt j |t d    iS)
        converts intervals in breaks format to a dictionary of kwargs to
        specific to the format expected by the IntervalIndex/Index constructors
        z) not relevant for class constructor testsrrqcs(g|] \}}t|ƒr t||ˆƒn|‘qSr)r r)Ú.0r3r4©r+rrÚ
<listcomp>vsÿz@TestClassConstructors.get_kwargs_from_breaks.<locals>.<listcomp>Nr,r-r)r1r}rTr~r rr€rrjrr‚rFrGrH)r)r6r+Úivsrrrr.ks
 
þ
z,TestClassConstructors.get_kwargs_from_breakscCsdS)zœ
        override the base class implementation since errors are handled
        differently; checks unnecessary since caught at the Interval level
        Nr)r)r5rrrr`sz)TestClassConstructors.test_generic_errorscCsdSrrrmrrrrX‡sz-TestClassConstructors.test_constructor_stringc    Cs–tddddtddddg}d}tjt|d    ||ƒW5QRXd
}tjt|d    |d ƒW5QRXd }tjt|d    |ddgƒW5QRXdS) Nrr-r4rr;rr3z-intervals must all be closed on the same siderRzX(IntervalIndex|Index)\(...\) must be called with a collection of some kind, 5 was passedr>z?type <class 'numpy.int(32|64)'> with value 0 is not an interval)rrTrUr_rV)r)rr‘rWrrrrrsÿz-TestClassConstructors.test_constructor_errorsz data, closedÚbothÚneitherrrrr;r>r3cCsLt|tƒr| ¡}ndd„|Dƒ}tj||d}|||d}t ||¡dS)NcSs$g|]}t|ƒr|j|jfn|‘qSr)r r3r4)rŽZivrrrr¶szGTestClassConstructors.test_override_inferred_closed.<locals>.<listcomp>r)rr    Z    to_tuplesr|r1r2)r)r5rqr+r„r@r9rrrÚtest_override_inferred_closed¡s 
 
 z3TestClassConstructors.test_override_inferred_closedÚvalues_constructorcCsXtddƒtddƒtddƒg}||ƒ}t|td}t|ƒtks@t‚t |jt     |¡¡dS)Nrr-r;rr)
rrrHÚtyper/r1rIÚvaluesrFrG)r)r•Ú    intervalsr—r9rrrÚtest_index_object_dtype»s
 z-TestClassConstructors.test_index_object_dtypecCsXtddddtddddtddddtdd    d
dg}t|ƒ}t|td }t ||¡dS) Nrr-r3rr;r4rr“r<r’r)rrrHr1r2)r)r˜r9r@rrrÚtest_index_mixed_closedÇs    ü z-TestClassConstructors.test_index_mixed_closedN)r4)rarbrcrdrTrer    rrrr5r.r`rXrrrfrgrFrhrr[r^r”rjrGrr™ršrrrrrŠ\s@þ
 
 
þþõþ
 
 ÿ
    rŠc    Csdttjdƒ}d}tjt|dtg|ddW5QRXtjt|dtg|ddW5QRXdS)Nr3z*closed keyword does not match dtype.closedrRr“rC)rrFrrTrUr_r    r)r rWrrrÚtest_dtype_closed_mismatchÔs  r›)$Ú    functoolsrÚnumpyrFrTZpandas.core.dtypes.commonrZpandas.core.dtypes.dtypesrZpandasrrrrr    r
r r r Zpandas._testingZ_testingr1Zpandas.core.arraysrZpandas.core.commonÚcoreÚcommonrƒrerrrkrur{rŠr›rrrrÚ<module>s"   ,  
61&2x