B @`G@sddlmZddlmZddlZddlZddlZddlmZ m Z ddl m Z ddlmZddlmmZddlmZmZmZmZmZddlmZddlZdd lmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ddl0m1Z2ddl3m4m5Zdd l6m7Z7ddl8m4m9Z:Gd d d Z;Gd ddZGdddZ?GdddZ@ddZAddZBGdddZCddZDGdd d ZEd!d"ZFd#d$ZGd%d&ZHd'd(ZId)d*ZJd+d,ZKGd-d.d.ZLGd/d0d0ZMdS)1)datetime) permutationsN)algos hashtable)IS64)np_array_datetime64_compat) is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype) CategoricalCategoricalIndex DataFrame DatetimeIndexIndex IntervalIndex MultiIndexNaTPeriod PeriodIndexSeries Timedelta Timestamp date_rangetimedelta_range to_datetime to_timedelta) DatetimeArrayc@seZdZejdddgddZddZdd Zd d Z d d Z ddZ ejddddddgdddddgddddgfdddddgdddddgddddgfddddgddddgdddgfgddZ ddZ ddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zejdddgd*d+Zejdddgd,d-Zd.d/Zejd0ejdddgd1d2ejd3dd3gd4d2ejd5d6d5gd7d2gd8d9Zejd:ejddddgd1d2dfejddddgd1d2dfejd3dd3dgd4d2d3fejdd3ddgd4d2dfejd;dd?d>d@ged2d>fejd?d>d?d@ged2d?fgdAdBZejdddgejdCdDdEdFgejjdGejd=d;dHd=ged2ejd=d;ged2fejddejdgdId2ejddgdId2fgdJdKgdLdMdNZejdd;dHd=d;gejddddgedOd2ejd;d=ejged2fd;ejd=d;gejddddgedOd2ejd;d=ejged2fgdPdQZ ejdddHddgejddddgedOd2ejddejgdRd2fdejddgejddddgedOd2ejddejgej!d2fgdSdTZ"dHS)U TestFactorizesortTFc s|}|j|d\}}t}t|tr(tj}||}|r@|}t|fdd|D}tj |tj d}t ||t ||dS)N)r!csg|]}|qS)index).0val)expected_uniques_listr";/tmp/pip-unpacked-wheel-q9tj5l6a/pandas/tests/test_algos.py Asz0TestFactorize.test_factorize..)dtype) factorizer isinstancer from_tuplesuniqueZ sort_valueslistnpasarrayintptmassert_numpy_array_equalassert_index_equal) selfZindex_or_series_objr!objZ result_codesZresult_uniques constructorexpected_uniquesexpected_codesr")r&r'test_factorize1s   zTestFactorize.test_factorizecCsptdddtjg}t|}|jdd\}}tjddddgtjd}tddtjg}t||t ||dS)N) na_sentinelr)r)g?g@) r/arraynanrr*r1rr2r3r4)r5valuesZsercodesuniquesr9r8r"r"r'&test_series_factorize_na_sentinel_noneGs z4TestFactorize.test_series_factorize_na_sentinel_nonec CsPtddddddddg\}}t|tjdddgtdtjddddddddgdd\}}tjdddddd d d gtjd}t||tjdddgtd}t||ttt t d \}}tjddd d d gtjd}t||tjd d d ddgtj d}t||tjtt t d dd\}}tjd d d ddgtjd}t||tjddd d d gtj d}t||ttt t d \}}tjddd d d gtjd}t||tjdddddgtj d}t||tjtt t d dd\}}tjd d d ddgtjd}t||tjdddddgtj d}t||dS)Nabc)r)T)r!rr;r<g@g@g@g@g?g)rr*r2r3r/r>objectr1r.reversedrangeint64arangefloat64)r5rArBexpr"r"r' test_basicSs8           zTestFactorize.test_basiccCstddtjddtjg}t|\}}tjddddddgtjd }t ||t dddtjg}t ||tj|d d \}}tjddddddgtjd }t ||t dtjddg}t ||dS) NABgQ @rr;r<rH)r)T)r!) rr/r?infrr*r>r1r2r3rr4)r5xrArBrPr"r"r' test_mixedys   zTestFactorize.test_mixedcCsNtd}td}t||||||g}t|\}}tjddddddgtjd}t||t ||g}t ||tj|dd\}}tjddddddgtjd}t||t ||g}t ||t dd d }t d d d }t||||||g}t|\}}tjddddddgtjd}t||t |t ||gtj|dd\}}tjddddddgtjd}t||t |t ||gt d }t d }t|||||||g}t|\}}tjdddddddgtjd}t||t |t ||gtj|dd\}}tjdddddddgtjd}t||t |t ||gdS)Nz20130101 09:00:00.0000420130101rr;)r)T)r!Z201302M)freqZ201303z 1 day 1 minz1 day)rrrr*r/r>r1r2r3rr4rrr)r5Zv1Zv2rVrArBrPr"r"r' test_datelikesF            zTestFactorize.test_datelikecCstjdddtjgdd}tt|}xddD]\}|j|d|d}tjddd|gd d}tt|tt|ksrtt t |||kq,Wtjdtjdgdd}d }|j|d |d}tjdd dgd d}tt|tt|kstt t |||kdS) Nr;r<O)r))rTT)r!r=rint32rTF) r/r>r?htZ Factorizerlenr*setAssertionErrorr2r3pdisna)r5keyZrizerr=idsexpectedr"r"r'test_factorize_nans z TestFactorize.test_factorize_nanz&data, expected_codes, expected_uniques)r;r;)r;r<)rrZnonsenserr;r<rH)r;r<rHcCsDt|\}}t|tj|tjdtj|t d}t||dS)N)r)) rcr*r2r3r/r>r1comZasarray_tuplesaferJ)r5datar9r8rArBZexpected_uniques_arrayr"r"r'test_factorize_tuple_listsz'TestFactorize.test_factorize_tuple_listc CsVtjddtdDtd}d}tjt|dtj|ddddd WdQRXdS) NcSsg|] }t|qSr")complex)r$ir"r"r'r(sz6TestFactorize.test_complex_sorting..)r)zJunorderable types: .* [<>] .*|'[<>]' not supported between instances of .*)matchrTT)r!) r/r>rLrJpytestraises TypeErrorrr*)r5Zx17msgr"r"r'test_complex_sortingsz"TestFactorize.test_complex_sortingcCstjddddddgtjd}|j|dtjddddddgtjd}tjdddgtjd}t|\}}t||t||dS) Ng?gחAg:0yE>)r))writerr;r<) r/r>rOsetflagsr1rr*r2r3)r5writablerjr9r8rArBr"r"r'test_float64_factorizes  z$TestFactorize.test_float64_factorizecCsvtjdddgtjd}|j|dtjdddgtjd}tjddgtjd}t|\}}t||t||dS)Nlr;)r))rur) r/r>uint64rvr1rr*r2r3)r5rwrjr9r8rArBr"r"r'test_uint64_factorizes  z#TestFactorize.test_uint64_factorizecCsvtjdddgtjd}|j|dtjdddgtjd}tjddgtjd}t|\}}t||t||dS)Nll)r))rurr;) r/r>rMrvr1rr*r2r3)r5rwrjr9r8rArBr"r"r'test_int64_factorize s  z"TestFactorize.test_int64_factorizecCs|tjdddddgtd}|j|dtjdddddgtjd}tjdddgtd}t|\}}t||t||dS) NrDrFrE)r))rurr;r<) r/r>rJrvr1rr*r2r3)r5rwrjr9r8rArBr"r"r'test_string_factorizes  z#TestFactorize.test_string_factorizec Cstjdddtjddtdgtd}|j|dtjdddddd ddgtjd}tjdddgtd}t|\}}t ||t ||dS) NrDrFrE)r))rurr;rTr<) r/r>r?rrJrvr1rr*r2r3)r5rwrjr9r8rArBr"r"r'test_object_factorizes    z#TestFactorize.test_object_factorizecCsjttdg}|j|dtjdgtjd}tjdgdd}t|\}}t||t||dS)Nz2020-01-01T00:00:00.000)rur)r)z2020-01-01T00:00:00.000000000zdatetime64[ns]) r/r> datetime64rvr1rcr*r2r3)r5rwrjr9r8rArBr"r"r'test_datetime64_factorize)s   z'TestFactorize.test_datetime64_factorizecCstjtd}tjdtjd|f}tj||d}t |d|dt j |d|ddd|j|d}t |d|dt j |d|ddddS)N )r))r!rr;T)exact) rc RangeIndex from_rangerLr/rNr1rr*r2r3r4)r5r!rirgresultr"r"r'test_factorize_rangeindex6s z'TestFactorize.test_factorize_rangeindexcCstjtd}tjdtjd|f}|ddd}|d|f}|rf|dddd|ddddf}tj||d}t |d|dt j |d|ddd|j|d}t |d|dt j |d|ddddS) Nr)r)rTrr;)r!T)r) rcrrrLr/rNr1rr*r2r3r4)r5r!rrgZri2rr"r"r'$test_factorize_rangeindex_decreasingDs $ z2TestFactorize.test_factorize_rangeindex_decreasingc Csbtjdddgtjd}tjtddtj|ddWdQRXt dt|WdQRXdS) Nlr;)r)zgot an unexpected keyword)roT)orderF) r/r>ryrprqrrrr*r2assert_produces_warning)r5rjr"r"r'test_deprecate_orderWs  z"TestFactorize.test_deprecate_orderrju8)r)li8Z__nan__foorJcCsLt|\}}|ddg}tjdddgtjd}t||t||dS)Nrr;)r))rr*r/r>r1r2r3)r5rjrArBr8r9r"r"r',test_parametrized_factorize_na_value_default`s   z:TestFactorize.test_parametrized_factorize_na_value_defaultzdata, na_valuerDrEr")rDr;)rDr<cCsRtj||d\}}|ddg}tjddddgtjd}t||t||dS)N)na_valuer;rHrTr)r))rZfactorize_arrayr/r>r1r2r3)r5rjrrArBr8r9r"r"r'$test_parametrized_factorize_na_valueps   z2TestFactorize.test_parametrized_factorize_na_valuer=rTidz data, uniquesNZInt64Z numpy_arrayZextension_array)rfcCstj|||d\}}|rr1Z safe_sortr2r3r+ndarrayassert_extension_array_equal)r5r!r=rjrBrAr9r8r"r"r'test_factorize_na_sentinels   z(TestFactorize.test_factorize_na_sentinelr1cCs.tj|dd\}}t||t||dS)N)r=)rr*r2r3)r5rjr9r8rArBr"r"r'&test_object_factorize_na_sentinel_nones z4TestFactorize.test_object_factorize_na_sentinel_noner\cCs.tj|dd\}}t||t||dS)N)r=)rr*r2r3)r5rjr9r8rArBr"r"r'#test_int_factorize_na_sentinel_nones z1TestFactorize.test_int_factorize_na_sentinel_none)#__name__ __module__ __qualname__rpmark parametrizer:rCrQrWr[rhrkrtrxrzr{r|r}rrrrr/r>rrJrrcr?rr)rrOrr"r"r"r'r 0s &1      ,          &   $   r c @seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZejddejdd ged!fd"ejd#ged!fgd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0S)1 TestUniquecCs0tjjdddd}t|}t|tjs,tdS)Nrr2)size)r/randomrandintrr-r+rrb)r5arrrr"r"r' test_intss zTestUnique.test_intscCs6tjjddddd}t|}t|tjs2tdS)Nrrr)rr\) r/rrastyperr-r+rrb)r5rrr"r"r' test_objectss zTestUnique.test_objectscCs2dddddg}xtdD]}tt|qWdS)NrRrSCDEi)rLr`rr-)r5lstrmr"r"r'test_object_refcount_bugsz#TestUnique.test_object_refcount_bugcCsbttddttddg}|j}||d}t |}|t ||dS)NrGr<) rZ from_arraysr/rNrepeattiler@r!rcr-r2assert_almost_equal)r5Zmindexrgrr"r"r'test_on_index_objects$  zTestUnique.test_on_index_objectcCs|tjtjkrtdnt|r8dddg}ddg}nt|rTdddg}ddg}nt|rtddtddtddg}tddtddg}nJt |rdddg}ddg}n.t |rd d d g}d d g}ndddg}ddg}t ||d  }t j||d }t||dS) Nzskip string dtyper;r<g?g@rTFrRrS)r))r2Z BYTES_DTYPESZ STRING_DTYPESrpskipr r r rlrr rr-r/r>r3)r5Zany_numpy_dtyperjrBrrgr"r"r'test_dtype_preservations,          z"TestUnique.test_dtype_preservationcCstddgdd}tdddg}t|}t|||j|jksDtt|}t|}t|||j|jksrt|j }t|}t|||j|jkstdS)Nz"2015-01-03T00:00:00.000000000+0000z"2015-01-01T00:00:00.000000000+0000zM8[ns])r)z2015-01-03T00:00:00.000000000z2015-01-01T00:00:00.000000000) rrrr-r2r3r)rbrr@)r5rgZdt_indexrsrr"r"r'$test_datetime64_dtype_array_returneds&      z/TestUnique.test_datetime64_dtype_array_returnedcCs@tjdddgdd}t|}tjddgdd}t||dS)N20002001z datetime64[s])r)zdatetime64[ns])r/r>rcr-r2r3)r5rDrrgr"r"r'test_datetime_non_ns-s zTestUnique.test_datetime_non_nscCs@tjdddgdd}t|}tjddgdd}t||dS)Nrrztimedelta64[s])r)l RFljIGztimedelta64[ns])r/r>rcr-r2r3)r5rDrrgr"r"r'test_timedelta_non_ns3s z TestUnique.test_timedelta_non_nscCstjdddgdd}tdddddg}t|}t|||j|jksLtt |}t|}t|||j|jkszt|j }t|}t|||j|jkstdS)Niyini'zm8[ns])r)) r/r>rrr-r2r3r)rbrr@)r5rgZtd_indexrrrr"r"r'%test_timedelta64_dtype_array_returned9s      z0TestUnique.test_timedelta64_dtype_array_returnedcCsBtddddgtjd}tjdddgtjd}tt||dS)Nr;r<l)r))rr/ryr>r2r3rr-)r5rrPr"r"r'test_uint64_overflowLszTestUnique.test_uint64_overflowcCs>dtjddg}t|}tjdtjdgtd}t||dS)NrDrF)r))r/r?rcr-r>rJr2r3)r5Zduplicated_itemsrrgr"r"r'test_nan_in_object_arrayQs z#TestUnique.test_nan_in_object_arraycCs&ttdtdd}ttdtddd}ttd}|}t||t|}t||ttddd}|}t||t|}t||tttddd }|}t||t|}t||tttdtdd}t|}|}t ||t|}t ||dS) NZbac) categoriesabcT)rorderedZbaabc)rr)name) rr.r-r2assert_categorical_equalrrrcrr4)r5rgZ expected_orFrrcir"r"r'test_categoricalWs.            zTestUnique.test_categoricalc Cstttdddtdddg}tttdddg}t ||ttdddtdddg}t dgddd}t ||t tttdddtdddg}tttdddg}t ||t ttdddtdddg}t dgddd}t ||dS) N20160101z US/Eastern)tzz2016-01-01 00:00:00-0500z2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r)rZz 2016-01-01) rrrr-rZ_from_sequencer/r>r2rrr4rc)r5rrgr"r"r'test_datetime64tz_awares8       z"TestUnique.test_datetime64tz_awarecCs:ttddddg}t|tjdddgddttdgdgd}t|tjddgddtttdtdg}tjdgd d}t||tttdd d tdd d g}t d gd dd}t ||tt d}tjdddgt d}t||ttt t d}t t d}t||dS)Nr<r;rHrM)r)rGrz2016-01-01T00:00:00.000000000zdatetime64[ns]z US/Eastern)rz2016-01-01 00:00:00zdatetime64[ns, US/Eastern])r)rZZaabcrDrErFr)rcr-rr2r3r/r>rrrr4r.rJrr)r5rrgr"r"r'test_order_of_appearances(     z#TestUnique.test_order_of_appearancez arg ,expected)1r2rr)r))rrcCst|}t||dS)N)rcr-r2r3)r5argrgrr"r"r'test_tuple_with_stringss z"TestUnique.test_tuple_with_stringscCsBtjddgtd}t|}tjddgtd}tj||dddS)Nr)r)T)Z strict_nan)r/r>rJrcr-r2r3)r5rrrgr"r"r'test_obj_none_preservations z%TestUnique.test_obj_none_preservationcCs4tddg}t|}tdg}t||dS)Ngg)r/r>rcr-r2r3)r5rDrrgr"r"r'test_signed_zeros  zTestUnique.test_signed_zerocCs~tdtddd}tdtddd}||ksrcr-r?r2r3)r5NAN1NAN2rDrrgr"r"r'test_different_nanss   zTestUnique.test_different_nansc Csd}d}tdtd|d}tdtd|d}||ksDt||ksPtxdtjtgD]V}tj||g|d}t |}|j dksttdtd|dd}||ks\tq\WdS)Nllrz=Qr)r)r;) rrrrbr/rOrJr>rcr-r) r5Z bits_for_nan1Z bits_for_nan2rrZel_typerDrZresult_nan_bitsr"r"r'test_first_nan_kepts   zTestUnique.test_first_nan_keptcCsZ||kr dStj||gtd}t|}|jdks6t|d|ksFt|d|ksVtdS)N)r)r<rr;)r/r>rJrcr-rrb)r5Zunique_nulls_fixtureZunique_nulls_fixture2rDrr"r"r'test_do_not_mangle_na_valuess z'TestUnique.test_do_not_mangle_na_valuesN)rrrrrrrrrrrrrrrrrrprrr/r>rJrrrrrrr"r"r"r'rs.*7#  rc@seZdZddZddZddZejddd d d gejd d ddgddZ ddZ ddZ ddZ ddZ ddZddZddZd d!Zd"d#Zejd$geed%eggd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2S)3TestIsinc Cs~d}tjt|dtddWdQRXtjt|dtddgWdQRXtjt|dtdgdWdQRXdS)NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\])ror;)rprqrrrisin)r5rsr"r"r' test_invalidszTestIsin.test_invalidcCstddgdg}tddg}t||ttddgdg}tddg}t||ttddgdg}tddg}t||ttddgtdg}tddg}t||ttddgdh}tddg}t||tddgdg}tddg}t||ttddgtdg}tddg}t||ttddgdh}tddg}t||tddgdg}tddg}t||dS)Nr;r<TFrDrE)rrr/r>r2r3r)r5rrgr"r"r'rQ,s6        zTestIsin.test_basiccCsDtdddj}t||dg}tdddg}t||t||dd}tdddg}t||t|t|dd}tdddg}t||t dddj}t||dg}tdddg}t||t||dd}tdddg}t||t|t|dd}tdddg}t||dS) NrXrH)periodsrTFr<z1 day) rr@rrr/r>r2r3rar)r5rrrgr"r"r'test_i8Rs(     zTestIsin.test_i8dtype1zm8[ns]zM8[ns]z M8[ns, UTC]z period[D]r)rZf8rcCstdddj}|dkr"|d}n*|dkr6|d}nt|d|j}|d|}t||}t j |j t d }t ||dS) Nz 2013-01-01rH)rz period[D]rz M8[ns, UTC]UTCr)r))rZ_valuesZ to_periodZ tz_localizerviewrrrr/zerosshapeboolr2r3)r5r)rdtarcompsrrgr"r"r'+test_isin_datetimelike_values_numeric_compsns   z4TestIsin.test_isin_datetimelike_values_numeric_compscCsVtddddj}t||dd}tjt|td}d|d<d|d <t ||dS) NZ20000101ir)rrZrr<)r)Tr;) rr@rrr/rr`rr2r3)r5rrrgr"r"r' test_larges zTestIsin.test_largecCs|tddddg}dddg}ttd||}ttdtddg|}tddddg}t||}t||dS) Nrr;r<rDrErFTF) r/r>rr from_codesrrr2r3)r5valscatsZSdZStrgrr"r"r'test_categorical_from_codess  z$TestIsin.test_categorical_from_codescCsttddddg}dddg}td||}tdtddg|}tddddg}t||}t||dS) Nrr;r<rDrErFTF)r/r>rrrrr2r3)r5rrcatotherrgrr"r"r'test_categorical_isins  zTestIsin.test_categorical_isincCs8tjg}tjg}tdg}t||}t||dS)NT)r/r?r>rrr2r3)r5rr@rgrr"r"r'test_same_nan_is_ins   zTestIsin.test_same_nan_is_incCsJtdd}tj|d<t|tjdg}tjt|td}t ||dS)Ng?iABrr;)r)) r/rr?rronesr`rr2r3)r5rrrgr"r"r'test_same_nan_is_in_larges   z"TestIsin.test_same_nan_is_in_largecCsTtdd}t|}tj|d<|tjdg}ttjt|td}t ||dS)Ng?iABrr;)r)) r/rrr?rrr`rr2assert_series_equal)r5rZseriesrrgr"r"r' test_same_nan_is_in_large_seriess   z)TestIsin.test_same_nan_is_in_large_seriescCs`Gddd}||}}tt|g|gtdgtt|g|gtdgdS)Nc@s"eZdZedddZddZdS)z0TestIsin.test_same_object_is_in..LikeNan)returncSsdS)NFr")r5rr"r"r'__eq__sz7TestIsin.test_same_object_is_in..LikeNan.__eq__cSsdS)Nrr")r5r"r"r'__hash__sz9TestIsin.test_same_object_is_in..LikeNan.__hash__N)rrrrrrr"r"r"r'LikeNansrTF)r2r3rrr/r>)r5rrDrEr"r"r'test_same_object_is_ins zTestIsin.test_same_object_is_incCstdg}tdg}|d|dk s(tt||}ttdg|ttj|t dtj|t d}ttdg|ttj|tj dtj|tj d}ttdg|dS)Nr?rT)r)) floatrbrrr2r3r/r>r0rJrO)r5rr@rr"r"r'rs    zTestIsin.test_different_nanscCs8ddg}dg}tddg}t||}t||dS)Nss*Z42F)r/r>rrr2r3)r5rr@rgrr"r"r' test_no_casts  zTestIsin.test_no_castempty)r)cCs6tddg}tddg}t||}t||dS)NrDrEF)rr/r>rrr2r3)r5rrrgrr"r"r' test_emptys  zTestIsin.test_emptycCs^tjdtjdtdgtd}tjtdgtd}tdddg}t||}t||dS)Nr?y?)r)FT) r/r>r?rrJrrr2r3)r5rrrgrr"r"r'test_different_nan_objectss  z#TestIsin.test_different_nan_objectscCstdtddd}tdtddd}||ksrOrrr2r3)r5rrrZlookup1rrgZlookup2r"r"r'test_different_nans_as_float64s     z'TestIsin.test_different_nans_as_float64cCs<tdddgi}|dg}tdddgi}t||dS)zComparing df with int`s (1,2) with a string at isin() ("1") -> should not match values because int 1 is not equal str 1r@r;r<rFN)rrr2assert_frame_equal)r5dfrexpected_falser"r"r'test_isin_int_df_string_searchs z'TestIsin.test_isin_int_df_string_searchcCs>tdtjdgi}|dg}tdddgi}t||dS)zComparing df with nan value (np.nan,2) with a string at isin() ("NaN") -> should not match values because np.nan is not equal str NaNr@r<NaNFN)rr/r?rr2r)r5rrrr"r"r'test_isin_nan_df_string_searchs z'TestIsin.test_isin_nan_df_string_searchcCs<tdddgi}|dg}tdddgi}t||dS)zComparing df with floats (1.4245,2.32441) with a string at isin() ("1.4245") -> should not match values because float 1.4245 is not equal str 1.4245r@gn?g#Ed@z1.4245FN)rrr2r)r5rrrr"r"r' test_isin_float_df_string_search's z)TestIsin.test_isin_float_df_string_searchN)rrrrrQrrprrrrrrrrrrrrrrJr/r>rrrrrrr"r"r"r'rs( &     ( rc@sdeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ dS)TestValueCountscCstjdddlm}tjd}||d}t|}ddddd g}t | t d d }t d d d d g|d }t ||dS)Nir)cutrIgvgQg`"?gw/?g!rh?T)rr;)r#)r/rseedZpandas.core.reshape.tilerrandnr value_countsrZ from_breaksrCDTrr2rZ sort_index)r5rrZfactorrZbreaksr#rgr"r"r'test_value_counts1s     z!TestValueCounts.test_value_countscCsvddddg}tj|dd}tdgtdgd}t||tj|ddd }tddgtd d gd}t||dS) Nr;r<rHrI)bins)gZd;?g@)r#F)r r!)gZd;?g@)g@g@)rrrrr,r2r)r5rrrgr"r"r'test_value_counts_bins?s  z&TestValueCounts.test_value_counts_binsc Cstddg}t|dksttjddgdd}t|dks@tttdddg}t|dksdtd}tjt|dtjddgddWdQRXdS)Nr;g?)r rr<z*bins argument only works with numeric data)ro)rrr`rbrrprqrr)r5rrsr"r"r'test_value_counts_dtypesKsz(TestValueCounts.test_value_counts_dtypescCsttdtgdd}tddg}xH||gD]<}t|}tj|dd}t|dksXtt|d ks,tq,Wtt d di}t t||dS) Ni'ztimedelta64[ns])r)rz 2014-01-01F)dropnar;r<z2014-01-01 00:00:00) rr/ timedelta64rrrrr`rbrr2r)r5tddtrZvcZ vc_with_naZexp_dtr"r"r'test_value_counts_natYs  z%TestValueCounts.test_value_counts_natc Csttdddtdddtdddtdddtdddtdddg}|}ttdddtdddtdddgtd}tdddg|d}t||ttd tj gd d }td tj gtd}t||dS) Ni r;iip)r)rHr<)r#z 2362-01-01ignore)errors) rrrrrJr2rrr/r?)r5rresZ exp_indexrPr"r"r'&test_value_counts_datetime_outofboundsgs        z6TestValueCounts.test_value_counts_datetime_outofboundscCsvtttd}|}tdddgtdddgd}tj||d d |j}|}|j |_ tj||d d dS) NZaaabbcrHr<r;rDrErF)r#T)check_index_type) rrr.rrr2rrZ as_orderedr#)r5rrrgr"r"r'rs  z TestValueCounts.test_categoricalcCsNtttd}tj|jd<|}tdddgtdddgdddgd d }tj ||d d |jd d}tddddgtdddtjgd }tj ||d d tttdd dddgd}tj|jd<|}tdddgtdddgdddgd dd }tj ||d d |jd d}tddddgtdddtjgdddgd dd }tj ||d d dS)NZ aaaaabbbccr;rIrHr<rDrErF)r)r#T)rF)r )rr)rr) rrr.r/r?Zilocrrr2r)r5rrrgr"r"r'test_categorical_nanss2  "    z%TestValueCounts.test_categorical_nanscCs`tttdtddd}|}tddddgtd d d d gtdddd }tj||dddS)NZbbbaacZabcdT)rrrHr<r;rrErDrFr)r#)r)rrr.rr2r)r5rrrgr"r"r'test_categorical_zeroess z'TestValueCounts.test_categorical_zeroescCsttdddgjddtddgddgdttdddgjddtddgddgdttdgddgddgdjddtddgddgdttdgddgddgdjddtdddgddtjgdttd d d gjddtddgd d gdttd d d gjddtddgd d gdttd d d dgjddtddgd d gdtd d d d d dgjdd}tdddgd d tjgd}t||dS) NTF)r r<r;)r#rHrGg$@g@)r2rrrr/r?)r5rrgr"r"r' test_dropnas0((zTestValueCounts.test_dropnacCstdgddgdtjgd}tjtdf}x|D]}||}|jddd}td d d gttjd d g|dd}t|||jddd}tddgtd d g|dd}t||q6WdS)Nr;r<rHrGzM8[ns]TF) normalizer g?g333333?g?g@g?)r))r#g333333?g?) rr/r?rOrJrrr2r)r5rZdtypestZs_typedrrgr"r"r'test_value_counts_normalizeds$     z,TestValueCounts.test_value_counts_normalizedcCs|tjdgtjd}tdgdgd}t|}t||tjddgtd}tddgddgd}t|}t rxt||dS)Nl)r)r;)r#rT) r/r>ryrrrr2rrJr)r5rrgrr"r"r'test_value_counts_uint64s   z(TestValueCounts.test_value_counts_uint64N)rrrr r r rrrrrrrrr"r"r"r'r0s  $ &rc@s.eZdZddZejdedddddddddd g ed d d ej d d d d ej dg eddddddddddg ejddddddddddg e dejdddddddddd g ej dgd!d"Z d#d$Z d%d&Zejd'd(d)d*d+d(d)d*d+gd(d)d*d+gfd,d-d-d,gd,d-gfd.d/d0d.gd.d/d0gfgd1d2Zd3S)4TestDuplicatedcCstjddtjddtjgtd}t|}tddddddg}t||tj|dd}tddddddg}t||tj|d d}tddddddg}t||tj|dd}tddddddg}t||tjd td}xDt t ddtjtjgddtjdtjgdD]\}}|||<qWt|}dgd }dgd }t||}t||tj|d d}t||}t||tj|dd}t||}t||dS) Nrr;r<)r)FTfirst)keeplastrI) r/r>r?rJr duplicatedr2r3r enumeratezip)r5keysrrgrmrZfalsesZtruesr"r"r'test_duplicated_with_nass8     4     z'TestDuplicated.test_duplicated_with_nascaser;r<rGrHrIg?g@gffffff @g@gffffff@y??y@@y@@y@@y@@y@@rDrEerFrf)r)lr'c Csptddddddddddg }tddddddddddg }||B}tj|dd}t||tj|dd}t||tj|dd}t||xdt|t|ddgD]L}|jdd}t|||jdd}t|||jdd}t||qWxrt|t|ddgD]Z} | jdd}t|t|| jdd}t|t|| jdd}t|t|qWdS)NFTr)r r!category)r)) r/r>rr#r2r3rrr) r5r( exp_firstexp_last exp_false res_firstres_last res_falseidxrr"r"r'test_numeric_object_likes,s2           z(TestDuplicated.test_numeric_object_likesc Cs&ddddddddddg }ddddd dd ddd g }td d |Dtdd |Dtdd |Dtdd |Dtdd |Dg}tddddddddddg }tddddddddddg }||B}xL|D]B}tj|dd}t||tj|dd} t| |tj|dd} t| |xpt|t|ddt|tdgD]N} | jdd}t||| jdd} t| || jdd} t| |qNWx|t|t|ddt|tdgD]Z} | jdd}t |t|| jdd} t | t|| jdd} t | t|qWqWdS)Nz 2011-01-01z 2011-01-02rz 2011-01-03z 2011-01-04z 2011-01-06z1 daysz2 daysz3 daysz4 daysz6 dayscSsg|] }t|qSr")r)r$rr"r"r'r(sz6TestDuplicated.test_datetime_likes..cSsg|]}t|ddqS)z US/Eastern)r)r)r$rr"r"r'r(scSsg|]}t|ddqS)r)rZ)r)r$rr"r"r'r(scSsg|]}t|qSr")r/r~)r$rr"r"r'r(scSsg|] }t|qSr")r)r$rr"r"r'r(sFTr)r r!r/)r)) r/r>rr#r2r3rrJrr) r5rrcasesr0r1r2r(r3r4r5r6rr"r"r'test_datetime_likesmsr             z"TestDuplicated.test_datetime_likesc CsVtdddgtddg}x6|D].}|jdks2tt|t dddgq WdS)Nr;r<rHrTF) rrcrZ is_uniquerbr2r3r#r/r>)r5r8r(r"r"r'test_unique_indexs  z TestDuplicated.test_unique_indexz arr, unique)rr)rr;)r;r)r;r;)rErF)rDrE)rDr;)rEr<)rDrHcCs8tjt|td}||dd<t|}t||dS)N)r))r/rr`rJrcr-r2r3)r5rr-rgrr"r"r'test_unique_tupless  z!TestDuplicated.test_unique_tuplesN)rrrr'rprrr/r>r?rJryr7r9r:r;r"r"r"r'rs8'  ,,S  rc @sbeZdZddZddZddZddZd d Zd d Ze j d ddge j de j e jddfe je jddfe je jddfe je jddfe je jddfe je jddfgddZe j de j dfe jdfe jdfe jdfe jdfgdd Ze j de j dfe jdfe jdfe jdfe jdfgd!d"Ze j d#e j e je je je je jgd$d%Zd&S)' TestHashTablec Cstt}|dd|ddks&ttjtdd|ddWdQRXtjtdd|dWdQRXdS)Nrer;z'key' has incorrect type)rorIr)z'val' has incorrect type)r_StringHashTableset_itemZget_itemrbrprqrr)r5tblr"r"r'(test_string_hashtable_set_item_signatures z6TestHashTable.test_string_hashtable_set_item_signaturec Cs^tddtjddddg}|j|dt}||t| |tj t |tj ddS) NgX9v@gQ @irGr<rH)ru)r)) r/r>r?rvr_Float64HashTable map_locationsr2r3lookuprNr`r1)r5rwxsmr"r"r'test_lookup_nans   zTestHashTable.test_lookup_nancCs:d}t|}|dd|ddt|dks6tdS)NrIgrgr;)r_rAr>r`rb)r5NrEr"r"r'test_add_signed_zeross    z#TestHashTable.test_add_signed_zeroscCs|tdtddd}tdtddd}||ksr`)r5rrrEr"r"r'test_add_different_nanss    z%TestHashTable.test_add_different_nanscCsZtjdddgtjd}|j|dt}||t| |tj t |tj ddS)Nr;r<l)r))ru) r/r>ryrvr_UInt64HashTablerBr2r3rCrNr`r1)r5rwrDrEr"r"r'test_lookup_overflows   z"TestHashTable.test_lookup_overflowcCs@tddddgtjd}tjdddgtjd}t||dS)Nr;r<l)r))rr/ryr>r2r3r-)r5rrPr"r"r'test_get_uniqueszTestHashTable.test_get_uniquenvalsrrz&htable, uniques, dtype, safely_resizesrJFTrOrMr^ryc Cstjtjd|d}|j|d|}|}||d||dd|}|j} |rj|||ddn*tj t dd|||ddWdQRX||j| kst dS)Ni)r))rurrTzexternal reference.*)ro) r/r>rrrvZ get_labelsZto_arrayrrprq ValueErrorrb) r5rwhtablerBr)Zsafely_resizesrMrtmpZoldshaper"r"r'test_vector_resizes z TestHashTable.test_vector_resizezhtable, tm_dtypeStringFloatZIntZUIntc Csttd|d}t|d}|tjkr6tj|jd<n |tjkrVtjdt g|jdd<|j dddj dd }|j j |d |jd d j }||j }t|||j|j dd \}} t|||| } t| |j dS)NmakeriiirHT)fracreplace)drop)rur)r )Zreturn_inverse)getattrr2rr_rAr/r?locPyObjectHashTablersample reset_indexr@rvdrop_duplicatesr-r3) r5rOtm_dtyperwmakerr s_duplicatedexpected_unique result_uniqueresult_inverseZreconstrr"r"r'test_hashtable_uniqueHs      z#TestHashTable.test_hashtable_uniquec Csttd|d}t|d}|tjkr6tj|jd<n |tjkrVtjdt g|jdd<|j dddj dd }|j j |d |j }||j \}} |j } t|| || |} |j } t| | dS) NrTriiirHT)rUrV)rW)ru)rXr2rr_rAr/r?rYrZrr[r\r@rvrdr*r r]r3) r5rOr^rwr_rr`Zna_maskrbrcraZresult_reconstructZexpected_reconstructr"r"r'test_hashtable_factorizeps       z&TestHashTable.test_hashtable_factorizercCs ttjjd}||d}dS)Nr;) size_hint)r/iinfoZuint32max)r5rrfr?r"r"r'test_hashtable_large_sizehints z+TestHashTable.test_hashtable_large_sizehintN)rrrr@rFrHrIrKrLrprrr_rZZ ObjectVectorr=rAZ Float64VectorZInt64HashTableZ Int64VectorZInt32HashTableZ Int32VectorrJZ UInt64VectorrQrdrerir"r"r"r'r<sJ  $!!r<cCsNttjd}t|dddddg}t|jdddddg}t||dS)Nrrg?g?g?g?) rr/rrrZquantiler@r2r)rrrgr"r"r' test_quantilesrjcCstjdddd}t|}tj|ddd}tj||ddd |tj t |d <t|}tj|ddddd}tj||dddS) Nr;iirT)Z return_indexF)Z check_dtyperTr) r/rrrr_Zunique_label_indicesr-r2r3choicer`)rDleftrightr"r"r'test_unique_label_indicess  rnc @sxeZdZejddZddZddZddZe j j e j j e j j d ed ed d d gd dgdddZdS)TestRankc snddlmfdd}|ttjtjdddtjdddtjg |td tjdddtjddd tjg dS) Nr)rankdatacsJt|}|}t|}tj||<|}tj||<t||dS)N) r/isfinitecopylibalgosZrank_1drUr?r2r)rmaskrrP)rpr"r'_checks    z*TestRank.test_scipy_compat.._checkg@r;r<rHg@)Z scipy.statsrpr/r>r?)r5rur")rpr'test_scipy_compats  *zTestRank.test_scipy_compatcCsdtjddgtjd}xJtjdD]<}tjddg|d}|j|dt|}tt ||q WdS)Nr;r<)r) AllIntegerr)ru) r/r>rO typecodesrvrr2r3rrank)r5rwrPr)rjrr"r"r'rQs  zTestRank.test_basiccCsPtjddgtjd}x6tjtjgD]&}tddg|d}tt||q"WdS)Nr;r<)r)l) r/r>rOryrr2r3rry)r5rPr)rr"r"r'rszTestRank.test_uint64_overflowc CsPtdddgdddgddd ggg}d }tjt|d t|WdQRXdS) Nr;r<rHrIrGr)r.r" z%Array with ndim > 2 are not supported)ro)r/r>rprqrrrry)r5rrsr"r"r'test_too_many_ndimss$zTestRank.test_too_many_ndimsr@iir<Z1dZ2d)rfcCs"tj|dd}|dkstdS)NT)Zpctr;)rryrhrb)r5r@rr"r"r'test_pct_max_many_rowss zTestRank.test_pct_max_many_rowsN)rrrrZskip_if_no_scipyrvrQrr{rprZsingleZ high_memoryrr/rNreshaper|r"r"r"r'ros rocCstjgdd}tjtdddgdd}tjd||}tjdgtjd}t||tjd||}tjgtjd}t||tjd||}tjdgtjd}t||tjd||}tjgtjd}t||dS)Nr\)r)i rJrT) r/r>rrspadrMr2r3backfill)oldnewrrgr"r"r'!test_pad_backfill_object_segfaults   rc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)TestTseriesUtilcCsdS)Nr")r5r"r"r'test_combineFunc sz TestTseriesUtil.test_combineFunccCsdS)Nr")r5r"r"r' test_reindexszTestTseriesUtil.test_reindexcCsdS)Nr")r5r"r"r' test_isnaszTestTseriesUtil.test_isnacCsdS)Nr")r5r"r"r' test_groupbyszTestTseriesUtil.test_groupbycCsdS)Nr")r5r"r"r'test_groupby_withnullsz%TestTseriesUtil.test_groupby_withnullc Cstdddg}tttd}tjd|j|j}tjddddddddddddg tjd }t ||tdd g}tttdd}tjd|j|j}tjdddddgtjd }t ||dS) Nr;rGrr~int64_trr<rT)r)rI) rr.rLrsrr@r/r>rMr2r3)r5rrfiller expect_fillerr"r"r' test_backfills(  zTestTseriesUtil.test_backfillc Cstdddg}tttd}tjd|j|j}tjddddddddddddg tjd }t ||tddg}tt d}tjd|j|j}tjdddddgtjd }t ||dS) Nr;rGrr~rrTrr<)r)) rr.rLrsrr@r/r>rMr2r3rN)r5rrrrr"r"r'test_pad,s(  zTestTseriesUtil.test_padN) rrrrrrrrrrr"r"r"r'r src~Cs tjddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddg|ddtjddd d d d d ddddddddddddddddddd d!ddddddd d d d d ddddddddddddddddddd d!ddddddd d d d d ddddddddddddddddddd d!ddddddd d d d d ddddddddddddddddddd d!ddddg|ddg}t|rtdS)"NrHr<r;rrM)r)r]rn r~ rrzr"r.r)rGrI)r/r>rsZ is_lexsortedrb)Zfailurer"r"r'test_is_lexsorted=s rcCstjdddtj}tjdddtj}t|dd}tj|dd}|tj}t |||d|}t|dd}t ||f}|tj}t ||dS)NrirZ mergesort)kindi@B) r/rrrrMrsZgroupsort_indexerargsortr2r3Zlexsort)rDrErrgrer"r"r'test_groupsort_indexerFs    rcstttddddtdg}tfdd|DsDttfdd|Ds^tkrnksrtkskrtttkstttkrttfd d|Dsttfd d|Dstkrkstks krtttks$tttkr:tx$t|D]}t||ksDtqDWt tgd  t tgd  dS) Nz-infg}Ô%Irg}Ô%ITrUc3s|]}|kVqdS)Nr")r$rV)Infr"r' jsz%test_infinity_sort..c3s|]}|kp|kVqdS)Nr")r$rV)rr"r'rksc3s|]}|kVqdS)Nr")r$rV)NegInfr"r'rqsc3s|]}|kp|kVqdS)Nr")r$rV)rr"r'rrs ) rsInfinity NegInfinityrallrbrsortedr/r>r)Zref_numsZpermr")rrr'test_infinity_sort_s&rcCst}t}|tjkrt|tjkr,t|tjkr:t|tjkrHt|tjkrVt|tjksdt|tjkrrt|tjkrt|tjkrt|tjkrt|tjkrt|tjkstdS)N)rsrrr/r?rb)rrr"r"r'test_infinity_against_nansrcCs*tjdtjd}t|}||ks&tdS)Nr)r))r/rNr1rsZensure_platform_intrb)rrr"r"r'test_ensure_platform_ints rc Csd}ttjj}ttjj}tjt|dt t ||g|WdQRXtjt|d&t t ||gt ||gWdQRXtjt|dt t ||g|WdQRXtjt|d&t t ||gt ||gWdQRXtjt|d&t t ||gt ||gWdQRXtjt|d4tj t ||gt ||gt ddgdWdQRXtjt|d4tj t ||gt ||gt ddgdWdQRXtjt|d@tj t ||gt ||gt ddgt ddgdWdQRXtjt|d>t t (t t ||gt tj|gWdQRXWdQRXtj t ||gt ||gt ddgdtj t ||gt ||gt ddgdtj t ||gt ||gt ddgt ddgddS)NzOverflow in int64 addition)roFT)arr_mask)b_mask)rr)r/rgrMrhminrprq OverflowErrorrZchecked_add_with_arrr>r2rRuntimeWarningr?)rsrEnr"r"r'test_int64_add_overflowsJ * **44    6**   rc@s\eZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ dS)TestModecCs$tgtjd}ttg|dS)N)r))rr/rOr2rrmode)r5rPr"r"r' test_no_modeszTestMode.test_no_modecCsdg}dg}dg}ddg}xptjdtjdD]X}t||d}t||d}tt||t||d}t||d}tt||q0Wtdgtd}ttdg|tdddgtd}ttdddg|dS)Nr;rwrS)r)rDrErF) r/rxrr2rrrintrJ)r5 exp_single data_single exp_multi data_multirrrPr"r"r'test_mode_singles    zTestMode.test_mode_singlecCsdg}dgddgd}ddg}dgddgddgd}xptjdtjdD]X}t||d}t||d}tt||t||d}t||d}tt||qVWdS)Nr;rGr<rHrwrS)r))r/rxrr2rrr)r5rrrrrrrPr"r"r'test_number_modes    zTestMode.test_number_modecCsdg}dgddgd}t|dd}t|dd}tt||dg}dgddgd}x:ttgD].}t||d}t||d}tt||qhWdS) NrErDr<rHrF)r)barr)rr2rrrstrrJ)r5rPrjrrr"r"r'test_strobj_modes    zTestMode.test_strobj_modecCsrtdddgdd}tdddgdd}tt||tddgdd}tdddddgdd}tt||dS)Nz 1900-05-03z 2011-01-03z 2013-01-02zM8[ns])r))rr2rrr)r5rPrr"r"r'test_datelike_mode s zTestMode.test_datelike_modecCsttdddgdd}tdddgdd}tt||tddgdd}tdddd ddgdd}tt||dS) Nz-1 daysz0 daysz1 daysztimedelta64[ns])r)z2 minz1 dayz-1 dayz -1 day 2 min)rr2rrr)r5rPrr"r"r'test_timedelta_mode szTestMode.test_timedelta_modecCs.tdg}tdddg}tt||dS)Nrr;)rr2rrr)r5rPrr"r"r'test_mixed_dtype" s zTestMode.test_mixed_dtypecCsptdgtjd}tdddgtjd}tt||tddgtjd}tddgtjd}tt||dS)Nl)r)r;)rr/ryr2rrr)r5rPrr"r"r'r' s zTestMode.test_uint64_overflowcCstddg}|}tt||t||tdddg}tdgddgd}tt||t||tdddddg}tddgdddgd}tt||t||dS)Nr;r<rD)rrH)rr2rrr)r5rFrPr"r"r'r0 s zTestMode.test_categoricalcCstdddg}tdddgtjd}tt||tdddg}tdgtd}tt||tdddddg}tddgtjd}tt||tddgdd}tddd d ddgdd}tt||dS) Nr;r<rH)r)rDz2 minz1 dayztimedelta64[ns]z-1 dayz -1 day 2 min) rrr/rMr2rrrrJ)r5r6rPr"r"r' test_index@ szTestMode.test_indexN) rrrrrrrrrrrrrr"r"r"r'rs   rc@sHeZdZejdddgddZddZejddd gd d Zd S) TestDiffr)zM8[ns]zm8[ns]cCstdtj|dd}|jdd|dddf<tj |ddd }tj |j d d d}t dd|dddf<t dd|dddf<t ||tj |jddd }t ||jdS) Nr~rHrIrnsr<r;r)axisztimedelta64[ns])r))r/rNrrMrr}r)typerdiffrrrr2r3T)r5r)rrrgr"r"r'test_diff_datetimelike_natV s  z#TestDiff.test_diff_datetimelike_natc CsBtddddj}d}tjt|dtj|dddWdQRXdS) Nz 2016-01-01rHz US/Pacific)rrz#cannot diff DatetimeArray on axis=1)ror;)r)r_datarprqrNrr)r5rrsr"r"r'test_diff_ea_axisf szTestDiff.test_diff_ea_axisZint8Zint16cCsNtjdddddg|d}t|d}tjtjddddgdd}t||dS)Nrr;)r)rTZfloat32)r/r>rrr?r2r3)r5r)rrrgr"r"r'test_diff_low_precision_intm s z$TestDiff.test_diff_low_precision_intN) rrrrprrrrrr"r"r"r'rU sr)Nr itertoolsrrZnumpyr/rpZ pandas._libsrrsrr_Z pandas.compatrZpandas.compat.numpyrZpandas.util._test_decoratorsutilZ_test_decoratorsrZpandas.core.dtypes.commonrr r r r Zpandas.core.dtypes.dtypesr rZpandasrcrrrrrrrrrrrrrrrrrZpandas._testingZ_testingr2Zpandas.core.algorithmscoreZ algorithmsZpandas.core.arraysrZpandas.core.commoncommonrir rrrrr<rjrnrorrrrrrrrrrr"r"r"r's`     L  #PU\K52 !4