gL i4FdZddlmZmZddlZddlZddlZddlmZddl m Z ddl m Z m Z ddlZddlmZmZmZmZddlmZGdd Zej0j3d ej0j5d dd gd Zej0j8ej0j3d ej0j5d ddgdZdZdZy)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. )copydeepcopyN)IS64)np_version_gte1p25)is_integer_dtypeis_numeric_dtype)CategoricalIndex MultiIndex PeriodIndex RangeIndexceZdZejj dddgdZdZdZdZ dZ d Z ejjd Z d Zejjd d ZdZdZdZejjdejjddZejjddZejjddZdZejjddZejj dgddZdZy) TestCommonnameNnew_namecV|}|r|}n|jxsd}|j|}|j|usJt|jdk(sJ|jd|k(sJ|s||j |j usJ|jd|}|j|usJy)NrrF)indexr)rto_framerlencolumnsvalues)selfr index_flatusing_copy_on_writeidxidx_namedfs f/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pandas/tests/indexes/test_common.py test_to_framezTestCommon.test_to_frame"s Hxx}1H \\x\ (xx32::!###zz!}((("h<&&cjj8 88 \\H\ 5xxs"""c|}|jgj|sJ|j|jgfD]b}t|jtr||jur,d}t j t|5|j|ddddddgfD]7}t j td5|j|ddd9y#1swYxYw#1swYPxYw)NzTCannot remove 1 levels from an index with 1 levels: at least one level must be left.matchwrongz>'Requested level \(wrong\) does not match index name \(None\)') droplevelequalsr isinstancetuplepytestraises ValueErrorKeyError)rrrlevelmsgs rtest_droplevelzTestCommon.test_droplevel7sr"))%000jj5::,/ 'E%**e,%**1D& z5 '& ' ' 'wi' 'EW '&  ' ' ' ' ' ' 'sC#C/#C, /C8 c|}d}dgg}tjt|5|j|dddtjt|5|j |dddy#1swY@xYw#1swYyxYw)Nz"Index.name must be a hashable type1r#r)names)r*r+ TypeErrorrename set_names)rrrmessagerenameds r"test_constructor_non_hashable_namez-TestCommon.test_constructor_non_hashable_namePs65']]9G 4 ' LLgL & ']]9G 4 + OO'O * + +  ' ' + +sA6B6A?B c|}t|||j}tj|j|jy)Ndtype)typer<tm assert_equal_data)rrabs rtest_constructor_unwraps_indexz)TestCommon.test_constructor_unwraps_index_s5  DGAQWW % )r!cT|}|j}tj||y)N) to_flat_indexr>assert_index_equal)rrrresults rtest_to_flat_indexzTestCommon.test_to_flat_indexfs%$$& fe,r!c|}d}|j}|j|g}|j|k(sJ|j|k(sJ|j|d}|J|j|k(sJ|j|gk(sJt j t d5|jdddddd }|j|d|j|k(sJ|j|gk(sJy#1swYBxYw) Nz#This is the new name for this indexTinplacezLevel must be Noner#rArr.)AB)rr6r5r3r*r+r,)rrrr original_namenew_indresrs rtest_set_name_methodsz TestCommon.test_set_name_methodsms8 //8*-||x'''zz]***ll8Tl2{{zzX%%%{{xj((( ]]:-A B * OOCqO ) * T4 (zzT!!!{{tf$$$ * *s C//C8ctjtd5|jddddy#1swYyxYw)Nz list-liker#rA)r*r+r4r6)rrs r$test_set_names_single_label_no_levelz/TestCommon.test_set_names_single_label_no_levels3 ]]9K 8 &   % & & &s 7Ac|}ttfD]#}||}||usJ|j|r#J|jdd}|jdk(sJy)NTbanana)deepr)rrr'r)rrrfuncidx_copynew_copys rtest_copy_and_deepcopyz!TestCommon.test_copy_and_deepcopysj8$ *DE{H5( ((??5) )) * ::4h:7}}(((r!z$ignore:Dtype inference:FutureWarningc|}t||dd}t||d}||usJtj|||j|sJ|jdk(sJ|jdk(sJt j d|}t j d|dd }||z}|jjdk(sJy) NTmario)rrF)r)r)r=r>rFr'rpdSeriesr)rrrfirstseconds1s2s3s rtest_copy_namezTestCommon.test_copy_namesU E7;eU/F""" eV,||E"""zzW$$${{g%%%YYq & YYqs , "Wxx}}'''r!c|}|jdjdk(sJtjtd5|jddgdddt |j d}tjt|5|jdggdddy#1swYZxYw#1swYyxYw)Nr]rz$Length of new names must be 1, got 2r#luigiz.name must be a hashable type)rrr*r+r,r=__name__r4)rrrr/s rtest_copy_name2zTestCommon.test_copy_name2szzwz',,777 ]]:-S T 0 JJWg.J / 0e%%&&CD ]]9C 0 ) JJgYKJ ( ) )  0 0 ) )sB-B9-B69Cc|}|j}d|jdfD]*}|j|}tj||,d}t j t|5|jdddddtj|jjd}t j t|5|jddddy#1swYqxYw#1swYyxYw) NrrLz.Too many levels: Index has only 1 level, not 4r#r_z6Requested level \(wrong\) does not match index name \(z\)r%) drop_duplicatesruniquer>rFr*r+ IndexErrorreescape__repr__r-)rrrexpectedr.rGr/s rtest_unique_levelzTestCommon.test_unique_levels((*T* 4E\\\.F  ! !&( 3 4? ]]:S 1 " LLqL ! "))EJJ//1232 7 ]]83 / ( LLwL ' ( ( " " ( (s,C/C;/C8;Dc|}t|stjd|dgdz}|dg}|jdusJ |jdusJ |j }tj|||jstjd|jdgdz}tj|d<|dd}|j|}|j|} | jdusJ|j|jk(sJ| j|jk(sJ| } t|| gD]+\} } | j }tj|| -y#t $rY$wxYw)Nz)Skip check for empty Index and MultiIndexrTFz%Skip na-check if index cannot hold nar^)rr*skip is_uniquehasnansNotImplementedErrorror>rF _can_hold_na_valuesnpnan _shallow_copyr< enumerate) rrrr idx_uniquerGvals vals_uniqueidx_nanidx_unique_nanrtposis r test_uniquezTestCommon.test_uniquesx5z KKC DQC!GnA3Z ##t+++ %%. .. fj1!! KK? @}}aS1W%&&Q2Ah %%d+,,[9''4///}} +++##u{{222!. 9: 4FCXXZF  ! !&( 3 4-#   sE,, E98E9z*ignore:Period with BDay freq:FutureWarning3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc4|}t|tjr6tjj dt }|j||jrtjd|d}d||k(j}}|dk(r t|}|jri|j|d}||k(sJ|j|d} || k(sJ|j|d} || k(sJ|j|d} || k(sJy|jr5|j|d}||k(sJ|j|d} || k(sJyd} tj t"| 5|j|ddddy#1swYyxYw) Nz8IntervalIndex.searchsorted does not support Interval arg)reasonr+zSkip check for empty Indexrleft)siderightz0index must be monotonic increasing or decreasingr#)r(ra IntervalIndexr*markxfailr{ applymarkeremptyrxargminris_monotonic_increasing_searchsorted_monotonic searchsortedis_monotonic_decreasingr+r,) rrrequestrrvalue expected_leftexpected_rightssm_left ssm_rightss_leftss_rightr/s rtest_searchsorted_monotonicz&TestCommon.test_searchsorted_monotonics eR-- .;;$$Q*%D    % ;; KK4 5a)*EUN+B+B+D~ Q  ZN  ( (44U4HH H, ,,55e'5JI!Y. ..((V(H!X- --  * *44U4HH H, ,,55e'5JI!Y. ..ECz5 B--e&-A B B Bs 1FFc|}t|trtjdt |dk(rtjdt |}t t|}t|r |jnd}|||}t |}tjjdj|t|dz} ||j| } t!j"| j%|j} t'j(| j%|| |t!j"| j+|} t'j,| j+|| y)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;r^g?)keep)r(r r*rxrr=listsetrr<r~random default_rngchoiceintrrarb duplicatedr>assert_numpy_array_equalrnrF) rrrrholder unique_valuesr< unique_idxnduplicated_selectionrexpected_duplicatedexpected_droppeds rtest_drop_duplicateszTestCommon.test_drop_duplicates.sL eZ ( KK/  u:? KK/  eSZ( /6 DM7   O!yy44Q7>>q#a#g,OZ&&';<= II* + 6 6D 6 A H H  ##CNNN$=?RS""))C."@"@d"@"KL c11t1<>NOr!c|}t|tr|}nBt|}tt |}t |r |j nd}|||}tjdgt|zd}tj|j||j}tj||||usJy)Nr;Fbool)r(r r=rrrr<r~arrayrr>rrrnrF) rrrrrrr<rresult_droppeds r"test_drop_duplicates_no_duplicatesz-TestCommon.test_drop_duplicates_no_duplicatesRs eZ (J%[F U,M#3E#:EKKE U;J!hhwZ'@O ##J$9$9$;=PQ#335 nj9Z///r!cd}tjt|5|jddddy#1swYyxYw)Nz6drop_duplicates\(\) got an unexpected keyword argumentr#TrJ)r*r+r4rn)rrr/s rtest_drop_duplicates_inplacez'TestCommon.test_drop_duplicates_inplaceis;G ]]9C 0 0  ! !$ ! / 0 0 0s :Ac|}t|}t|rt|trt j d||dgdz}|j dusJ|jdusJy)Nz6Skip check for empty Index, MultiIndex, and RangeIndexrrwFT)r=rr(r r*rxryhas_duplicates)rrrrrs rtest_has_duplicateszTestCommon.test_has_duplicatesnske5zZz: KKP QeAhZ!^$}}%%%!!T)))r!r<)int64uint64float64categoryzdatetime64[ns]ztimedelta64[ns]ct|tr5t|jDcgc]}dt |zc}|_nd|_d}|jjdk(r5|dvr1trtjj}ntj}t |jdk(xr|dk(} tj||d5|j|}dddt|trj |j k(sJyj |j k(sJycc}w#1swYVxYw#t t"t$t&f$rYywxYw)Nrc)rrrzstring[pyarrow]rF)raise_on_extra_warningscheck_stacklevel)r(r rangenlevelsstrr3rr<kindrr~ exceptionsComplexWarningr>assert_produces_warningastyper,r4r{ SystemError)rrr<rwarnis_pyarrow_strrGs rtest_astype_preserves_namez%TestCommon.test_astype_preserves_name~s. eZ (383GHa53q6>HEKEJ ;;  s "u0N'N!}}33((U[[)->>V5JCV ++(6!& - e,  - eZ (<<5;;. ..;;%**, ,,7I - - I':KH   s/D7=ED<'E<EEE$#E$c|}|jd}tjdgt|zt}t j |j||jdusJ|jd}|j}t|dk(ryt|jry|jtk(rytj|d<t||}tjdgt|zt}d|d<t j |j||jdusJy)NT)rWFr;rr)rr~rrrr>r_isnanrzr}rr<rr=)rrrrrtrs rtest_hasnans_isnanszTestCommon.test_hasnans_isnanssjjdj#88UGc#h.d; ##CJJ9{{e###jjdj# u:?  ekk *  [[D FFq d5k&!88UGc#h.d;  ##CJJ9{{d"""r!)rk __module__ __qualname__r*r parametrizer r0r9rCrHrRrrTr[filterwarningsrhrlrurrrrrrrrr!rrr!s [[VdJ%78#9#('2 +*-%0 [[&& ) [[ GH(I(2 )(*&4P [[ LM [[ VW0BXN0Bd [[ VW!PX!PF [[ VW0X0,0  [[ VW *X * [[W- -@#r!rr na_positionmiddlectjtd|5|j|dddy#1swYyxYw)Nzinvalid na_position: r#r)r*r+r, sort_values)index_with_missingrs r$test_sort_values_invalid_na_positionrsD z+@ )N O@&&;&?@@@s ;Arclastc0t|tr0|jtjj ddt j|j}||jj}t j|}|dk(rt jdg|z|g}nt j|dg|zg}t|||j}|j|}t!j"||y)Nz,missing value sorting order not well-definedF)rstrictrcr;r)r(r rr*rrr~sumisnanotnarsort concatenater=r<rr>rF)rrr missing_count not_na_vals sorted_valuesrtrGs rtest_sort_values_with_missingrs$&67 KK  Ee   FF-2245M$%7%=%=%?@GGKGGK(Mg(> 'NO  v 7M'NO (t&' =O=U=UVH  + + + DF&(+r!c:t|trtstjd|}|j j |sJ|jj |sJ|j}|j|jk(sJ|j|jk(sJ|j|jk(sJt|ttfs|j|jk(sJ|j|jjy)NOverflow)r(r rr*rxTr' transposershapendimsizer r nbytes)rrrs rtest_ndarray_compat_propertiesrs%%d J C 55<<   ==? ! !# && & ZZF 99 $$ $ 88v{{ "" " 88v{{ "" " ej*5 6zzV]]***JJJJr!ctjgt}d|j_t j |}|dkD}|jtk(sJy)Nr;FE) r~robjectflags writeableraIndexr<r)arrrrGs rtest_compare_read_only_arrayrsF ((2V $CCII ((3-C 2XF <<4  r!) __doc__rrrqnumpyr~r* pandas.compatrpandas.compat.numpyrpandas.core.dtypes.commonrrpandasrar r r r pandas._testing_testingr>rrrrrfails_arm_wheelsrrrrr!rrs   2  ]#]#@ RSx(89@:T@ RS&(9:,;T,4, r!