zmc
2023-08-08 e792e9a60d958b93aef96050644f369feb25d61b
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
U
­ý°d‚Cã@sÂdZddlmZmZddlZddlZddlZddlmZddl    m
Z
m Z ddl Z ddl mZmZmZmZddlmZGdd„dƒZej d    dd
g¡d d „ƒZej d    d dg¡dd„ƒZdd„ZdS)z­
Collection of tests asserting things that should be true for
any index subclass except for MultiIndex. Makes use of the `index_flat`
fixture defined in pandas/conftest.py.
é)ÚcopyÚdeepcopyN)ÚIS64)Úis_integer_dtypeÚis_numeric_dtype)ÚCategoricalIndexÚ
MultiIndexÚ PeriodIndexÚ
RangeIndexc    @sÈeZdZej dddg¡dd„ƒZdd„Zdd    „Zd
d „Z    d d „Z
dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zej d$d%d&d'd(d)d*g¡d+d,„ƒZd-d.„ZdS)/Ú
TestCommonÚnameNÚnew_namecCsŠ|}|r|}n
|jpd}|j|d}|j|ks2t‚t|jƒdksDt‚|jd|ksVt‚||j|jk    sjt‚|jd|d}|j|k    s†t‚dS)Nr©r éF)Úindexr )r Zto_framerÚAssertionErrorÚlenÚcolumnsÚvalues)Úselfr Ú
index_flatÚidxZidx_nameZdf©rúWd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\pandas/tests/indexes/test_common.pyÚ test_to_frame!s
 zTestCommon.test_to_framec
Cs¤|}| g¡ |¡st‚|j|jgfD]D}t|jtƒrB||jkrBq&d}tjt|d| |¡W5QRXq&ddgfD](}tjt    dd| |¡W5QRXqvdS)NzTCannot remove 1 levels from an index with 1 levels: at least one level must be left.©ÚmatchÚwrongz>'Requested level \(wrong\) does not match index name \(None\)')
Z    droplevelÚequalsrr Ú
isinstanceÚtupleÚpytestÚraisesÚ
ValueErrorÚKeyError)rrrÚlevelÚmsgrrrÚtest_droplevel5sÿþzTestCommon.test_droplevelc    Cs`|}d}dgg}tjt|d|j|dW5QRXtjt|d|j|dW5QRXdS)Nz"Index.name must be a hashable typeÚ1rr)Únames)r!r"Ú    TypeErrorÚrenameÚ    set_names)rrrÚmessageZrenamedrrrÚ"test_constructor_non_hashable_nameNsz-TestCommon.test_constructor_non_hashable_namecCs*|}t|ƒ||jd}t |j|j¡dS)N©Údtype)Útyper0ÚtmZ assert_equalÚ_data)rrÚaÚbrrrÚtest_constructor_unwraps_index]sz)TestCommon.test_constructor_unwraps_indexcCs|}| ¡}t ||¡dS)N)Z to_flat_indexr2Úassert_index_equal)rrrÚresultrrrÚtest_to_flat_indexdszTestCommon.test_to_flat_indexc    CsÊ|}d}|j}| |g¡}|j|ks(t‚|j|ks6t‚|j|dd}|dksPt‚|j|ks^t‚|j|gksnt‚tjtdd|jdddW5QRXd    }|j|dd|j|ks¶t‚|j|gksÆt‚dS)
Nz#This is the new name for this indexT©ZinplacezLevel must be Nonerr4r©r%)ÚAÚB)r r,rr+r)r!r"r#)rrrr Ú original_nameZnew_indÚresr rrrÚtest_set_name_methodsks   z TestCommon.test_set_name_methodscCsT|}ttfD]&}||ƒ}||k    s$t‚| |¡s t‚q |jddd}|jdksPt‚dS)NTZbanana)Údeepr )rrrrr )rrrÚfuncZidx_copyZnew_copyrrrÚtest_copy_and_deepcopy‡s  z!TestCommon.test_copy_and_deepcopycCs¨|}t|ƒ|ddd}t|ƒ|dd}||k    s2t‚t ||¡| |¡sLt‚|jdksZt‚|jdksht‚tjd|d}tjd|dd    …d}||}|jjdks¤t‚dS)
NTÚmario)rr F)ré)rééÿÿÿÿ)    r1rr2r7rr ÚpdÚSeriesr)rrrÚfirstÚsecondÚs1Ús2Zs3rrrÚtest_copy_name’s  zTestCommon.test_copy_namec    Cs‚|}|jddjdkst‚tjtdd|jddgdW5QRXt|ƒj›d}tjt|d|jdggdW5QRXdS)NrDrz$Length of new names must be 1, got 2rZluigiz.name must be a hashable type)    rr rr!r"r#r1Ú__name__r*)rrrr&rrrÚtest_copy_name2«szTestCommon.test_copy_name2c    Cs¢|}| ¡}d|jdfD]}|j|d}t ||¡qd}tjt|d|jddW5QRXdt     |j 
¡¡›d}tjt |d|jddW5QRXdS)    Nrr;z.Too many levels: Index has only 1 level, not 4rrFz6Requested level \(wrong\) does not match index name \(z\)r) Údrop_duplicatesr Úuniquer2r7r!r"Ú
IndexErrorÚreÚescapeÚ__repr__r$)rrrÚexpectedr%r8r&rrrÚtest_unique_level¸s ÿzTestCommon.test_unique_levelc Cs$|}t|ƒst d¡|dgd}|dg}|jdks<t‚z|jdksLt‚Wntk
rbYnX| ¡}t     ||¡|j
sˆt d¡|j dgd}t j |d<|dd…}| |¡}| |¡}    |    jdksÐt‚|j|jksàt‚|    j|jksðt‚|    }
t||    gƒD]\} } |  ¡}t     ||
¡qdS)Nz)Skip check for empty Index and MultiIndexréTFz%Skip na-check if index cannot hold narE)rr!ÚskipÚ    is_uniquerÚhasnansÚNotImplementedErrorrRr2r7Z _can_hold_naÚ_valuesÚnpÚnanZ _shallow_copyr0Ú    enumerate) rrrrZ
idx_uniquer8ÚvalsZ vals_uniqueZidx_nanZidx_unique_nanrWÚposÚirrrÚ test_uniqueÍs4
 
 
 
 
 
zTestCommon.test_uniquec     CsF|}t|tjƒr,tjjdtd}|j |¡|j    r<t 
d¡|d}d||k  ¡}}|dkrft |ƒ}|j rÖ|j|dd}||ks†t‚|j|dd}    ||    ks t‚|j|dd}
||
ksºt‚|j|dd} || ksÔt‚nl|jr|j|dd}||ksøt‚|j|dd}    ||    ksBt‚n,d} tjt| d    |j|ddW5QRXdS)
Nz8IntervalIndex.searchsorted does not support Interval arg)Úreasonr"zSkip check for empty IndexrÚleft)ZsideÚrightz0index must be monotonic increasing or decreasingr)rrHZ IntervalIndexr!ÚmarkÚxfailr]ÚnodeÚ
add_markerÚemptyrZZargminrZis_monotonic_increasingZ_searchsorted_monotonicrZ searchsortedZis_monotonic_decreasingr"r#) rrÚrequestrriÚvalueZ expected_leftZexpected_rightZssm_leftZ    ssm_rightZss_leftZss_rightr&rrrÚtest_searchsorted_monotonicõs< þ 
    z&TestCommon.test_searchsorted_monotonicc Csâ|}t|tƒrt d¡t|ƒdkr.t d¡t|ƒ}tt|ƒƒ}t|ƒrP|j    nd}|||d}t|ƒ}t
j   |t |dƒ¡}    ||j|    ƒ}
t |    ¡j|dj} t |
j|d| ¡|t |
¡j|dƒ} t |
j|d| ¡dS)NzWRangeIndex is tested in test_drop_duplicates_no_duplicates as it cannot hold duplicatesrzXempty index is tested in test_drop_duplicates_no_duplicates as it cannot hold duplicatesr/gø?)Úkeep)rr
r!rZrr1ÚlistÚsetrr0r_ÚrandomÚchoiceÚintrrHrIÚ
duplicatedr2Úassert_numpy_array_equalrQr7) rrrqrÚholderÚ unique_valuesr0Ú
unique_idxÚnZduplicated_selectionrÚexpected_duplicatedZexpected_droppedrrrÚtest_drop_duplicates's*
ÿ ÿ  ÿzTestCommon.test_drop_duplicatesc    Cs’|}t|tƒr|}n2t|ƒ}tt|ƒƒ}t|ƒr6|jnd}|||d}tjdgt    |ƒdd}t
  |  ¡|¡|  ¡}t
 ||¡||k    sŽt‚dS)Nr/FÚbool)rr
r1rrrsrr0r_Úarrayrr2rxrwrQr7r)    rrrr{ryrzr0r}Zresult_droppedrrrÚ"test_drop_duplicates_no_duplicatesJs
   z-TestCommon.test_drop_duplicates_no_duplicatesc    Cs.d}tjt|d|jddW5QRXdS)Nz6drop_duplicates\(\) got an unexpected keyword argumentrTr:)r!r"r*rQ)rrr&rrrÚtest_drop_duplicates_inplace`sz'TestCommon.test_drop_duplicates_inplacecCsZ|}t|ƒ}t|ƒrt|tƒr(t d¡||dgdƒ}|jdksHt‚|jdksVt‚dS)Nz6Skip check for empty Index, MultiIndex, and RangeIndexrrYFT)    r1rrr
r!rZr[rZhas_duplicates)rrrryrrrrÚtest_has_duplicateses
zTestCommon.test_has_duplicatesr0Úint64Úuint64Úfloat64Úcategoryzdatetime64[ns]ztimedelta64[ns]c CsÖt|tƒr"dd„t|jƒDƒ|_nd|_d}|jjdkrF|dkrFtj    }t
|jƒdkoZ|dk}z*t j ||dd    |  |¡}W5QRXWnttttfk
r¤YdSXt|tƒrÂ|j|jksÒt‚n|j|jksÒt‚dS)
NcSsg|]}dt|ƒ‘qS)r)Ústr)Ú.0rdrrrÚ
<listcomp>{sz9TestCommon.test_astype_preserves_name.<locals>.<listcomp>rÚc)r†r„r…zstring[pyarrow]r‡F)Zraise_on_extra_warningsZcheck_stacklevel)rrÚrangeZnlevelsr)r r0Úkindr_ZComplexWarningrˆr2Zassert_produces_warningZastyper#r*r]Ú SystemErrorr)rrr0ÚwarnZis_pyarrow_strr8rrrÚtest_astype_preserves_namets&
ý
z%TestCommon.test_astype_preserves_namecCsØ|}|jdd}tjdgt|ƒtd}t |j|¡|jdksDt    ‚|jdd}|j
}t|ƒdkrfdSt |j ƒrtdS|j tkr‚dStj |d<t|ƒ|ƒ}tjdgt|ƒtd}d|d<t |j|¡|jdksÔt    ‚dS)NT)rAFr/rr)rr_r€rrr2rxZ_isnanr\rr^rr0r`r1)rrrrrWrrrrÚtest_hasnans_isnans•s&   
 
 
 zTestCommon.test_hasnans_isnans)rOÚ
__module__Ú __qualname__r!riÚ parametrizerr'r.r6r9r@rCrNrPrXrerpr~rr‚rƒrr‘rrrrr  s.
  (2#þ
r Ú na_positionZmiddlec    Cs0tjtd|›d|j|dW5QRXdS)Nzinvalid na_position: r©r•)r!r"r#Ú sort_values)Úindex_with_missingr•rrrÚ$test_sort_values_invalid_na_position´sr™rJÚlastcCs¨t|tƒr"|j tjjddd¡t |     ¡¡}|| 
¡j }t  |¡}|dkrft  dg||g¡}nt  |dg|g¡}t|ƒ||jd}|j|d}t ||¡dS)Nz,missing value sorting order not well-definedF)rfÚstrictrJr/r–)rrrkrlr!rirjr_ÚsumZisnaZnotnarÚsortZ concatenater1r0r—r2r7)r˜r•rnZ missing_countZ not_na_valsZ sorted_valuesrWr8rrrÚtest_sort_values_with_missingºs 
ÿÿ
 ržcCs¤t|tƒrtst d¡|}|j |¡s,t‚| ¡ |¡s>t‚|j    }|j
|j
ksTt‚|j |j ksdt‚|j |j kstt‚t|t tfƒs’|j|jks’t‚|j|j    jdS)NÚOverflow)rr    rr!rZÚTrrZ    transposerÚshapeÚndimÚsizer
rÚnbytes)rrrrrrÚtest_ndarray_compat_propertiesÕs
r¥)Ú__doc__rrrTÚnumpyr_r!Z pandas.compatrZpandas.core.dtypes.commonrrZpandasrHrrr    r
Zpandas._testingZ_testingr2r rir”r™ržr¥rrrrÚ<module>s$