
    WhD                       d dl m Z  d dlmZ d dlZd dlZd dlZd dlmZ	m
Z d dlmZ d dlmZ d dlmc mZ d dlmZmZmZmZmZ d dlmZ d dlZd d	l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-m.Z.m/Z/ d dl0m1Z2 d dl3m4c m5Z d d
l6m7Z7 d dl8m4c m9Z:  G d d          Z; G d d          Z< G d d          Z= G d d          Z> G d d          Z? G d d          Z@ G d d          ZAd ZB G d d          ZCd ZDd ZEd ZFd ZGd  ZHd! ZI G d" d#          ZJ G d$ d%          ZKejL        M                    d&ejN        ejN        g          d'             ZOdS )(    )datetime)permutationsN)algos	hashtable)pa_version_under7p0)PerformanceWarning)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayc                   j   e Zd Zej                            dddg          d             Zd Zej                            dg d          d             Zd	 Z	d
 Z
d Zd Zej                            dg dg dg dfg dg dg dfg dg dg dfg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddg          d             Zej                            dddg          d              Zd! Zej                            d" ej        g d#d$%           ej        g d&d'%           ej        g d(d)%          g          d*             Zej                            d+ ej        g d,d$%          d-f ej        g d.d$%          d/f ej        g d0d'%          d1f ej        g d2d'%          d/f ej        g d3e%          d4f ej        g d5e%          d6f ej        g d7e%          d8fg          d9             Zej                            dddg          ej                            dg d:          ej                            d; ej        g d<e%           ej        d=d4ge%          f ej        d>d/ej        d>gd?%           ej        d>d/gd?%          fgd@dAgB          dC                                     Z ej                            dg dD ej        g dE ej!        dF          %           ej        d4ej        d=ge%          fd4ej        d=d4g ej        g dE ej!        dF          %           ej        d4ej        d=ge%          fg          dG             Z"ej                            dg dH ej        g d, ej!        dF          %           ej        d/ej        d>gdI%          fd/ej        d/d>g ej        g d, ej!        dF          %           ej        d/ej        d>gej#        %          fg          dJ             Z$dKS )LTestFactorizesortTFc                   	 |}t          j        t          |o t          ot	          |j        dd          dk              5  |                    |          \  }}d d d            n# 1 swxY w Y   t          }t          |t                    rt          j
        } ||                                          }t          |t                    r:|j        t          k    r*|j        t          k    r|                    t                    }|ret          j        t          t          ot	          |j        dd          dk              5  |                                }d d d            n# 1 swxY w Y   t!          |          		fd|D             }t#          j        |t"          j                  }t          j        ||           t          j        ||d           d S )	Nstorage pyarrowr#   c                 :    g | ]}                     |          S  index).0valexpected_uniques_lists     ]/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/pandas/tests/test_algos.py
<listcomp>z0TestFactorize.test_factorize.<locals>.<listcomp>T   s(    JJJs/55c::JJJ    dtypeTexact)tmmaybe_produces_warningr   r   getattrr4   	factorizer   
isinstancer   from_tuplesuniqueboolobjectastypesort_valueslistnpasarrayintpassert_numpy_array_equalassert_index_equal)
selfindex_or_series_objr#   objresult_codesresult_uniquesconstructorexpected_uniquesexpected_codesr/   s
            @r0   test_factorizezTestFactorize.test_factorize4   sd   !& ?#?	9b11Y>	
 
 	D 	D ,/==d=+C+C(L.	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D c:&& 	1$0K&;szz||44sE""	? &$..	V##/66v>> 	B*"#V	9b(I(IY(V  B B $4#?#?#A#A 	B B B B B B B B B B B B B B B !%%5 6 6JJJJcJJJN"'BBB
#L.AAA
n.>dKKKKKKs#   A%%A),A)?E  E$'E$c                 j   t          j        dddt           j        g          }t          |          }|                    d          \  }}t          j        g dt           j                  }t          ddt           j        g          }t          j        ||           t          j	        ||           d S )	N      Fuse_na_sentinelr   rR   r   rS   r3         ?       @)
rC   arraynanr   r:   rE   r   r7   rF   rG   )rH   valuessercodesuniquesrO   rN   s          r0   +test_series_factorize_use_na_sentinel_falsez9TestFactorize.test_series_factorize_use_na_sentinel_falseZ   s    1aBF+,,Vnnu==w,,,bg>>> #sBF!344
#E>:::
g'788888r2   na_sentinel)Nc                 L   |d}n|dk    rd}nd}t          j        t          |          5  t          j        ||           d d d            n# 1 swxY w Y   t          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )Nz+Specifying `na_sentinel=None` is deprecatedra   )Specifying `na_sentinel=-1` is deprecatedzDSpecifying the specific value to use for `na_sentinel` is deprecatedmatch)r`   )r7   assert_produces_warningFutureWarningpdr:   )rH   r`   rI   msgs       r0   test_depr_na_sentinelz#TestFactorize.test_depr_na_sentinelf   s_    ?CCB=CCXC'SAAA 	G 	GL,+FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G'SAAA 	C 	C))k)BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs#   AAA5BB Bc                 4   t          j        g d          \  }}t          j        |t	          j        g dt                               t          j        g dd          \  }}t	          j        g dt          j                  }t          j        ||           t	          j        g dt                    }t          j        ||           t	          j        dt          j                  d d d         }t          j        |          \  }}t	          j        g d	t          j                  }t          j        ||           t	          j        g d
|j	                  }t          j        ||           t          j        |d          \  }}t	          j        g d
t          j                  }t          j        ||           t	          j        g d	|j	                  }t          j        ||           t	          j        d          d d d         }t          j        |          \  }}t	          j        g d	t          j                  }t          j        ||           t	          j        g d|j	                  }t          j        ||           t          j        |d          \  }}t	          j        g d
t          j                  }t          j        ||           t	          j        g d|j	                  }t          j        ||           d S )N)abrn   rm   rm   cro   ro   rm   rn   ro   r3   Tr(   )r   rR   rR   r   r   rS   rS   rS      ra   )r   rR   rS         )rs   rr   rS   rR   r         @)      @      @rX   rW           )rw   rW   rX   rv   ru   )
r   r:   r7   rF   rC   rY   r?   rE   aranger4   )rH   r]   r^   exparrs        r0   
test_basiczTestFactorize.test_basict   s   )Q)Q)QRRw
#GRXoooV-T-T-TUUU4444
 
 
w h///rw???
#E3///hf555
#GS111i)))$$B$/--whbg666
#E3///hci888
#GS1114888whbg666
#E3///hci888
#GS111innTTrT"--whbg666
#E3///h000	BBB
#GS1114888whbg666
#E3///h000	BBB
#GS11111r2   c                 \   t          ddt          j        ddt          j        g          }t	          j        |          \  }}t          j        g dt          j                  }t          j	        ||           t          dddt          j        g          }t          j        ||           t	          j        |d          \  }}t          j        g dt          j                  }t          j	        ||           t          dt          j        ddg          }t          j        ||           d S )	NABgQ	@)r   r   ra   rR   rS   rr   r3   Tr(   )rS   rS   ra   rr   r   rR   )r   rC   rZ   infr   r:   rY   rE   r7   rF   r   rG   )rH   xr]   r^   ry   s        r0   
test_mixedzTestFactorize.test_mixed   s	    Cbfc4899++wh***"':::
#E3///S#tRV,--
gs+++666wh***"':::
#E3///T263,--
gs+++++r2   c           	         t          d          }t          d          }t          ||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          ||g          }t          j
        ||           t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          ||g          }t          j
        ||           t          dd	
          }t          dd	
          }t          ||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          d          }t          d          }t          |||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     d S )Nz20130101 09:00:00.0000420130101)r   r   r   rR   rR   r   r3   Tr(   )rR   rR   rR   r   r   rR   201302Mfreq201303z1 day 1 min1 day)r   rR   r   r   rR   rR   r   )rR   r   rR   rR   r   r   rR   )r   r   r   r:   rC   rY   rE   r7   rF   r   rG   r   r   r   )rH   v1v2r   r]   r^   ry   s          r0   test_datelikezTestFactorize.test_datelike   s    011z""BBB+,,++wh)))999
#E3///RH%%
gs+++666wh)))999
#E3///RH%%
gs+++ H3'''H3'''BBB+,, ++wh)))999
#E3///
g{B8'<'<===666wh)))999
#E3///
g{B8'<'<=== -(('""BBBB/00++wh,,,BG<<<
#E3///
g|RH'='=>>>666wh,,,BG<<<
#E3///
g|RH'='=>>>>>r2   c                 D   t          j        dddt           j        gd          }t          j        t          |                    }dD ]}|                    |d|          }t          j        ddd|gd	          }t          t          |                    t          t          |                    k    sJ t          j	        t          j        |          ||k               t          j        dt           j        dgd          }d
}|                    |d|          }t          j        g dd	          }t          t          |                    t          t          |                    k    sJ t          j	        t          j        |          ||k               d S )NrR   rS   Or3   )ra      Tr#   r`   r   int32ra   F)rS   ra   r   )rC   rY   rZ   htObjectFactorizerlenr:   setr7   rF   ri   isna)rH   keyrizerr`   idsexpecteds         r0   test_factorize_nanz TestFactorize.test_factorize_nan   sq    h1a(444#CHH--# 	O 	OK//#Dk/JJCxAq+ 6gFFFHs3xx==CH$6$66666'h+6MNNNN h261~S111 ooc;oGG8JJJg6663s88}}CMM 2 22222
#BGCLL(k2IJJJJJr2   z&data, expected_codes, expected_uniques)rR   rR   rR   rS   r   r   r   nonsense)r   rR   rS   rR   rr   )r   r   r   r   )r   r   r   r   rR   rS   rr   )r   r   r   r   )r   r   r   r   )r   rR   rS   rR   )r   r   r   c                     t          j        |          \  }}t          j        |t	          j        |t          j                             t          j        |t                    }t          j        ||           d S Nr3   )
ri   r:   r7   rF   rC   rY   rE   comasarray_tuplesafer?   )rH   datarO   rN   r]   r^   expected_uniques_arrays          r0   test_factorize_tuple_listz'TestFactorize.test_factorize_tuple_list   sl    $ d++w
#E28N"'+R+R+RSSS!$!67Gv!V!V!V
#G-CDDDDDr2   c                    t          j        d t          d          D             t                    }d}t	          j        t          |          5  t          j        |d d d         d           d d d            d S # 1 swxY w Y   d S )	Nc                 ,    g | ]}t          |          S r*   )complex)r-   is     r0   r1   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>  s    666q

666r2      r3   z,'[<>]' not supported between instances of .*re   ra   Tr(   )	rC   rY   ranger?   pytestraises	TypeErrorr   r:   )rH   x17rj   s      r0   test_complex_sortingz"TestFactorize.test_complex_sorting  s    h66E"II666fEEE<]9C000 	2 	2OC"ID1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s    A==BBc                 0   |}t          j        g d|          }t          j        g dt           j                  }t          j        ddg|          }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)rR   rS   rS   rR   r3   )r   rR   rR   r   rR   rS   )rC   rY   rE   r   r:   r7   rF   )rH   any_real_numpy_dtyper4   r   rO   rN   r]   r^   s           r0   test_numeric_dtype_factorizez*TestFactorize.test_numeric_dtype_factorize  s    $xE222,,,bg>>>8QF%888..w
#E>:::
#G-=>>>>>r2   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        g dt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)rW       חArW   :0yE>r   rW   r3   write)r   rR   r   rS   rR   r   )rW   r   r   )	rC   rY   float64setflagsrE   r   r:   r7   rF   rH   writabler   rO   rN   r]   r^   s          r0   test_float64_factorizez$TestFactorize.test_float64_factorize"  s    x777rzJJJH%%%"4"4"4BGDDD8$4$4$4BJGGG..w
#E>:::
#G-=>>>>>r2   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        ddgt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)    rR   r   r3   r   r   rR   r   r   rR   )	rC   rY   uint64r   rE   r   r:   r7   rF   r   s          r0   test_uint64_factorizez#TestFactorize.test_uint64_factorize,  s    x111CCCH%%%)))27;;;8YN")DDD..w
#E>:::
#G-=>>>>>r2   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        ddgt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)             r   r3   r   r   r   r   )	rC   rY   int64r   rE   r   r:   r7   rF   r   s          r0   test_int64_factorizez"TestFactorize.test_int64_factorize6  s    x888IIIH%%%)))27;;;8Y$9JJJ..w
#E>:::
#G-=>>>>>r2   c                 l   t          j        g dt                    }|                    |           t          j        g dt           j                  }t          j        g dt                    }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)rm   ro   rm   rn   ro   r3   r   )r   rR   r   rS   rR   rm   ro   rn   )	rC   rY   r?   r   rE   r   r:   r7   rF   r   s          r0   test_string_factorizez#TestFactorize.test_string_factorize@  s    x111@@@H%%%///AAA8OOO6BBB..w
#E>:::
#G-=>>>>>r2   c           
         t          j        ddd t           j        ddt          dgt                    }|                    |           t          j        g dt           j                  }t          j        g dt                    }t          j        |          \  }}t          j
        ||           t          j
        ||           d S )Nrm   ro   rn   r3   r   )r   rR   ra   ra   r   rS   ra   rR   r   )rC   rY   rZ   r   r?   r   rE   r   r:   r7   rF   r   s          r0   test_object_factorizez#TestFactorize.test_object_factorizeJ  s    xc4c3DFSSSH%%%"="="=RWMMM8OOO6BBB..w
#E>:::
#G-=>>>>>r2   c                 r   t          j        t          j        d          g          }|                    |           t          j        dgt           j                  }t          j        dgd          }t          j        |          \  }}t          j        ||           t          j        ||           d S )Nz2020-01-01T00:00:00.000r   r   r3   z2020-01-01T00:00:00.000000000datetime64[ns])	rC   rY   
datetime64r   rE   ri   r:   r7   rF   r   s          r0   test_datetime64_factorizez'TestFactorize.test_datetime64_factorizeT  s    x'@AABCCH%%%1#RW5558,-5E
 
 
 d++w
#E>:::
#G-=>>>>>r2   c                 
   t           j                            t          d                    }t	          j        dt          j                  |f}t          j        ||          }t          j
        |d         |d                    t          j        |d         |d         d           |                    |          }t          j
        |d         |d                    t          j        |d         |d         d           d S )N
   r3   r(   r   rR   Tr5   ri   
RangeIndex
from_ranger   rC   rx   rE   r   r:   r7   rF   rG   )rH   r#   rir   results        r0   test_factorize_rangeindexz'TestFactorize.test_factorize_rangeindexa  s     ]%%eBii009Rrw///3$///
#F1Ix{;;;
fQi!DAAAA4((
#F1Ix{;;;
fQi!DAAAAAAr2   c                 |   t           j                            t          d                    }t	          j        dt          j                  |f}|d d d         }|d         |f}|r"|d         d d d         |d         d d d         f}t          j        ||          }t          j
        |d         |d                    t          j        |d         |d         d           |                    |          }t          j
        |d         |d                    t          j        |d         |d         d           d S )	Nr   r3   ra   r   rR   r(   Tr5   r   )rH   r#   r   r   ri2r   s         r0   $test_factorize_rangeindex_decreasingz2TestFactorize.test_factorize_rangeindex_decreasingo  s*    ]%%eBii009Rrw///32hA;# 	<{44R4((1+ddd*;;H4000
#F1Ix{;;;
fQi!DAAAAD))
#F1Ix{;;;
fQi!DAAAAAAr2   c                 ^   t          j        g dt           j                  }t          j        t
          d          5  t          j        |d           d d d            n# 1 swxY w Y   t          j	        d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)            rR   r   r3   zgot an unexpected keywordre   T)orderF)
rC   rY   r   r   r   r   r   r:   r7   rg   )rH   r   s     r0   test_deprecate_orderz"TestFactorize.test_deprecate_order  s&    x)));;;]9,GHHH 	. 	.OD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'.. 	" 	"OD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s#   A!!A%(A% B""B&)B&r   r   u8r3   )r   rR   r   i8)__nan__foor   r?   c                     t          j        |          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )Nr   rR   r   r3   )r   r:   rC   rY   rE   r7   rF   )rH   r   r]   r^   rN   rO   s         r0   ,test_parametrized_factorize_na_value_defaultz:TestFactorize.test_parametrized_factorize_na_value_default  sl     ..wA<)))27;;;
#E>:::
#G-=>>>>>r2   zdata, na_valuerV   r   )rR   r   rR   rS   rR   )r   rR   r   r   r   )rR   r   rR   r   )rm   r&   rm   rn   rm   )r*   rm   rR   r*   rm   rS   r*   )r   r*   r   r   r   c                     t          j        ||          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )N)na_valuerR   rr   )ra   r   ra   rR   r3   )r   factorize_arrayrC   rY   rE   r7   rF   )rH   r   r   r]   r^   rN   rO   s          r0   $test_parametrized_factorize_na_valuez2TestFactorize.test_parametrized_factorize_na_value  sr     .thGGGwA<...@@@
#E>:::
#G-=>>>>>r2   )ra   rb   d   zdata, uniques)rn   rm   Nrn   rn   rS   Int64numpy_arrayextension_array)r   c                 .   |dk    rd}nd}t          j        t          |          5  t          j        |||          \  }}d d d            n# 1 swxY w Y   |r9t          j        dd|dgt
          j                  }t          j        |          }n&t          j        dd|dgt
          j                  }|}t          j	        ||           t          |t
          j                  rt          j	        ||           d S t          j        ||           d S )	Nra   rd   z9the specific value to use for `na_sentinel` is deprecatedre   r   rR   r   r3   )r7   rg   rh   r   r:   rC   rY   rE   	safe_sortrF   r;   ndarrayassert_extension_array_equal)	rH   r#   r`   r   r^   rj   r]   rO   rN   s	            r0   test_factorize_na_sentinelz(TestFactorize.test_factorize_na_sentinel  sl   " "=CCMC'SAAA 	W 	W"_T+VVVNE7	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	'Xq![!&<BGLLLN$w77Xq![!&<BGLLLN&
#E>:::dBJ'' 	G'1ABBBBB+G5EFFFFFs   AAA)rm   Nrn   rm   r   rR   rS   r   rE   c                     t          j        |d          \  }}t          j        ||d           t          j        ||d           d S NFrT   T
strict_nanr   r:   r7   rF   rH   r   rO   rN   r]   r^   s         r0   +test_object_factorize_use_na_sentinel_falsez9TestFactorize.test_object_factorize_use_na_sentinel_false  S    $ uEEEw
#G-=$OOOO
#E>dKKKKKKr2   )rR   NrR   rS   r   c                     t          j        |d          \  }}t          j        ||d           t          j        ||d           d S r   r   r   s         r0   (test_int_factorize_use_na_sentinel_falsez6TestFactorize.test_int_factorize_use_na_sentinel_false  r   r2   N)%__name__
__module____qualname__r   markparametrizerP   r_   rk   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rC   rY   r   r?   r   ri   rZ   r   r4   r   r   r  r*   r2   r0   r"   r"   3   s       [VdE]33#L #L 43#LJ
9 
9 
9 []OOO<<C C =<C'2 '2 '2R, , ,"/? /? /?bK K K. [0 =<<444 <;;333
 .--|||=U=U=UV	
  E E!  E2 2 2	? 	? 	?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ? [VdE]33B B 43B [VdE]33B B 43B$" " " [BHYYYd+++BH,,,D999BH222(CCC	
 ? ? ? [RXlll$///3RXlll$///3RX000===xHRX)))666:RX)))888#>RX222&AAA2FRX888GGGR	
 ? ? ? [VdE]33[]NNN;;[ ...f===#s6222
 !Q*':::!Qw///		
 -.   G G  <; 43 G& [0 &%%XRXf-=-=>>>#rvs+6::: bfc3'XRXf-=-=>>>#rvs+6:::	
 L L L [0  XRXf-=-=>>>!RVQs333 BFAq!XRXf-=-=>>>!RVQrz:::	
 L L L L Lr2   r"   c            	       p   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej                            dd ej        ddge          fd ej        dge          fg          d             Zd Zd Zd Zej                            dej        eg          d             Zd Zd ZdS )
TestUniquec                     t           j                            ddd          }t          j        |          }t          |t           j                  sJ d S )Nr   r   2   size)rC   randomrandintr   r=   r;   r   rH   rz   r   s      r0   	test_intszTestUnique.test_ints  sK    i3R00c""&"*-------r2   c                     t           j                            ddd                              d          }t	          j        |          }t          |t           j                  sJ d S )Nr   r   r
  r  r   )rC   r  r  r@   r   r=   r;   r   r  s      r0   test_objectszTestUnique.test_objects  sY    i3R0077<<c""&"*-------r2   c                 t    g d}t          d          D ]#}t          t          j        |                     $d S )N)r}   r~   CDE  )r   r   r   r=   )rH   lstr   s      r0   test_object_refcount_bugz#TestUnique.test_object_refcount_bug  sG    '''t 	# 	#AS!!""""	# 	#r2   c                    t          j        t          j        d                              d          t          j        t          j        d          d          g          }|j        }|                                 |                    d          }t          j	        |          }|                                 t          j        ||           d S )Nrq   rS   )r   from_arraysrC   rx   repeattiler[   r#   ri   r=   r7   assert_almost_equal)rH   mindexr   r   s       r0   test_on_index_objectzTestUnique.test_on_index_object  s    'Yq\\  ##RWRYq\\1%=%=>
 
 =q!!6""
vx00000r2   c                    |t           j        t           j        z   v r	g d}ddg}nt          |          r	g d}ddg}nt	          |          r	g d}ddg}nt          |          rPt          dd          t          dd          t          dd          g}t          dd          t          dd          g}n8t          |          r	g d}dd	g}n t          |          r	g d
}ddg}ng d}ddg}t          ||          
                                }t          j        ||          }|t           j        v r|                    t                    }t          j        ||           d S )N)rR   rS   rS   rR   rS   rW   rX   r   TTFTF)r}   r~   r~   r}   r~   r3   )r7   BYTES_DTYPESSTRING_DTYPESr   r   r
   r   r	   r   r   r=   rC   rY   r@   r?   rF   )rH   any_numpy_dtyper   r^   r   r   s         r0   test_dtype_preservationz"TestUnique.test_dtype_preservation!  s   r1AABB99D!fGGo.. 	99D!fGGO,, 	99DCjGGo.. 	AqMM71a=='!Q--@Dq!}}gamm4GG?++ 		&&&DUmGG_-- 	"??DCjGG 99D!fGO444;;==8G?;;;b...v..H
#FH55555r2   c                    t          j        ddgd          }t          g d          }t          j        |          }t          j        ||           |j        |j        k    sJ t          |          }t          j        |          }t          j        ||           |j        |j        k    sJ |j	        }t          j        |          }t          j        ||           |j        |j        k    sJ d S )N2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000M8[ns]r3   )r(  r)  r)  )
rC   rY   r   r   r=   r7   rF   r4   r   r[   )rH   r   dt_indexr   srz   s         r0   $test_datetime64_dtype_array_returnedz/TestUnique.test_datetime64_dtype_array_returnedB  s   8// 
 
 
   
 
 h''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------r2   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )N2000r0  2001zdatetime64[s]r3   r0  r1  r   rC   rY   ri   r=   r7   rF   rH   rm   r   r   s       r0   test_datetime_non_nszTestUnique.test_datetime_non_nsa  s]    H---_EEE18VV,4DEEE
#FH55555r2   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )Nr/  ztimedelta64[s]r3   l     RFl    jIGtimedelta64[ns]r2  r3  s       r0   test_timedelta_non_nsz TestUnique.test_timedelta_non_nsg  s^    H---5EFFF18]M:BSTTT
#FH55555r2   c                    t          j        g dd          }t          g d          }t          j        |          }t          j        ||           |j        |j        k    sJ t          |          }t          j        |          }t          j        ||           |j        |j        k    sJ |j	        }t          j        |          }t          j        ||           |j        |j        k    sJ d S )N)y  n  '  m8[ns]r3   )r9  r:  r9  r;  r:  )
rC   rY   r   r   r=   r7   rF   r4   r   r[   )rH   r   td_indexr   r,  rz   s         r0   %test_timedelta64_dtype_array_returnedz0TestUnique.test_timedelta64_dtype_array_returnedm  s    8111BBB C C CDDh''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------r2   c                     t          g dt          j                  }t          j        g dt          j                  }t	          j        t          j        |          |           d S )N)rR   rS   r   r   r3   )rR   rS   r   )r   rC   r   rY   r7   rF   r   r=   )rH   r,  ry   s      r0   test_uint64_overflowzTestUnique.test_uint64_overflow  sX    '''ry999h}}}BI666
#ELOOS99999r2   c                     dt           j        ddg}t          j        |          }t          j        dt           j        dgt
                    }t          j        ||           d S )Nrm   ro   r3   )rC   rZ   ri   r=   rY   r?   r7   rF   )rH   duplicated_itemsr   r   s       r0   test_nan_in_object_arrayz#TestUnique.test_nan_in_object_array  sY    c2+,,8S"&#.f===
#FH55555r2   c                 ~   t          t          d                    }t          t          d          t          d          d          }t          t          d                    }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          d          d          }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          t          d                    d          }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          t          d          t          d          	                    }t          |          }|                                }t          j	        ||           t          j        |          }t          j	        ||           d S )
NbacabcT
categoriesorderedbaabcrI  r   namerH  )
r   rB   r=   r7   assert_categorical_equalr   r   ri   r   rG   )rH   r   
expected_oro   r   r,  cis          r0   test_categoricalzTestUnique.test_categorical  s    tE{{++ !eedSSS
 W&&
#FH555a
#FH555Wt444
#FJ777a
#FJ777 ;tG}}--E:::
#FH5551
#FH555 k$w--DKKPPPQQ#H--
fh///2
fh/////r2   c                    t          t          t          dd          t          dd          g                                                    }t	          j        t          j        t          dd          g                    }t          j	        ||           t          t          dd          t          dd          g                                          }t          dgdd           }t          j        ||           t          j        t          t          t          dd          t          dd          g                              }t	          j        t          j        t          dd          g                    }t          j	        ||           t          j        t          t          dd          t          dd          g                    }t          dgdd           }t          j        ||           d S )	N20160101
US/Easterntzz2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r4   r   
2016-01-01)r   r   r   r=   r    _from_sequencerC   rY   r7   r   r   rG   ri   rH   r   r   s      r0   test_datetime64tz_awarez"TestUnique.test_datetime64tz_aware  s'    j\:::j\::: 
 
 &(( 	 !/Hi :|LLLMNN
 
 	'999*666*666
 

 &(( 	 !"#+Gd
 
 
 	fh///!*>>>!*>>>  	
 	
 !/Hi>>>?@@
 
 	'999j\:::j\::: 
 
 !"#+Gd
 
 
 	fh/////r2   c           	      l   t          j        t          g d                    }t          j        |t          j        g dd                     t          j        t          dgdgdz  z                       }t          j        |t          j        ddgd                     t          j        t          t          d          t          d          g                    }t          j        d	gd
          }t          j        ||           t          j        t          t          dd          t          dd          g                    }t          dgdd           }t          j
        ||           t          j        t          d                    }t          j        g dt                    }t          j        ||           t          j        t          t          t          d                                        }t          t          d                    }t          j        ||           d S )N)rS   rR   rr   rr   )rS   rR   rr   r   r3   rS   rR   rq   rT  z2016-01-01T00:00:00.000000000r   rU  rV  rX  rY  rZ  aabcrp   rF  )ri   r=   r   r7   rF   rC   rY   r   r   r   rG   rB   r?   r   rO  r]  s      r0   test_order_of_appearancez#TestUnique.test_order_of_appearance  s    6,,,//00
#FBHYYYg,N,N,NOOO61#a-0011
#FBHaV7,K,K,KLLL69Z#8#8)J:O:O"PQQRR8<=EUVVV
#FH555j\:::j\::: 
 
 !"#+Gd
 
 
 	fh///4<<((8OOO6:::
#FH5556+d6ll";";<<==tE{{++
#FH55555r2   zarg ,expected)1rb  2rb  rc  r3   )r   r   c                 X    t          j        |          }t          j        ||           d S Nri   r=   r7   rF   )rH   argr   r   s       r0   test_tuple_with_stringsz"TestUnique.test_tuple_with_strings  s*     3
#FH55555r2   c                     t          j        dd gt                    }t          j        |          }t          j        dd gt                    }t          j        ||d           d S )Nr   r3   Tr   )rC   rY   r?   ri   r=   r7   rF   rH   rz   r   r   s       r0   test_obj_none_preservationz%TestUnique.test_obj_none_preservation  s]    ht}F33338UDM888
#FHFFFFFFr2   c                     t          j        ddg          }t          j        |          }t          j        dg          }t	          j        ||           d S )Ng       rw   r2  r3  s       r0   test_signed_zerozTestUnique.test_signed_zero#  sL    HdC[!!18TF##
#FH55555r2   c                    t          j        dt          j        dd                    d         }t          j        dt          j        dd                    d         }||k    sJ ||k    sJ t          j        ||g          }t          j        |          }t          j        t          j        g          }t          j	        ||           d S )Nd=Q          r            )
structunpackpackrC   rY   ri   r=   rZ   r7   rF   )rH   NAN1NAN2rm   r   r   s         r0   test_different_nanszTestUnique.test_different_nans*  s     }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t||||HdD\""18RVH%%
#FH55555r2   el_typec                    d}d}t          j        dt          j        d|                    d         }t          j        dt          j        d|                    d         }||k    sJ ||k    sJ t          j        ||g|          }t          j        |          }|j        dk    sJ t          j        dt          j        d|d                             d         }||k    sJ d S )Nl         rr  ro  rp  r   r3   rR   )rs  rt  ru  rC   rY   ri   r=   r  )	rH   ry  bits_for_nan1bits_for_nan2rv  rw  rm   r   result_nan_bitss	            r0   test_first_nan_keptzTestUnique.test_first_nan_kept6  s     +*}S&+dM"B"BCCAF}S&+dM"B"BCCAFt||||t||||HdD\1111{a -fk#vay.I.IJJ1M-//////r2   c                     ||u rd S t          j        ||gt                    }t          j        |          }|j        dk    sJ |d         |u sJ |d         |u sJ d S )Nr3   rS   r   rR   )rC   rY   r?   ri   r=   r  )rH   unique_nulls_fixtureunique_nulls_fixture2rm   r   s        r0   test_do_not_mangle_na_valuesz'TestUnique.test_do_not_mangle_na_valuesG  s    #888FH*,AB&QQQ1{at+++++t,,,,,,,r2   c                     t          dt          j        dgdz  |          }t          j        |          }t          j        dt          j        dg|          }t          j        ||           d S )NrR   rS   rr   r3   )r   ri   NAr=   rY   r7   r   )rH   any_numeric_ea_dtyper\   r   r   s        r0   test_unique_maskedzTestUnique.test_unique_maskedQ  se    a]Q&.BCCC38QqM1EFFF
'99999r2   N)r  r  r  r  r  r  r   r&  r-  r4  r7  r>  r@  rC  rR  r^  ra  r   r  r  rC   rY   r?   rh  rk  rm  rx  r   r~  r  r  r*   r2   r0   r  r     s       . . .. . .# # #
1 1 16 6 6B. . .>6 6 66 6 6. . .&: : :
6 6 6(0 (0 (0T50 50 50n!6 !6 !6F [hbhSz@@@Axrxv6667	
 6 6 6
G G G6 6 6
6 
6 
6 [YV(<==0 0 >=0 - - -: : : : :r2   r  c                      e Zd Zd Zd Zd Zej                            dg d          ej                            dg d          d                         Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zej                            dg  ee           ej        g           g          d             Zd Zd Zd Zd Zd Zd ZdS )TestIsinc                    d}t          j        t          |          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        ddg           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        dgd           d d d            d S # 1 swxY w Y   d S )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\]re   rR   )r   r   r   r   isin)rH   rj   s     r0   test_invalidzTestIsin.test_invalidZ  s   $ 	 ]9C000 	 	Jq!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	Jq1#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	JsA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   A  AA&B		BB/CCCc                    t          j        ddgdg          }t          j        ddg          }t	          j        ||           t          j        t          j        ddg          dg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          dg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          t          dg                    }t          j        ddg          }t	          j        ||           t          j        t          ddg          dh          }t          j        ddg          }t	          j        ||           t          j        ddgdg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          t          dg                    }t          j        ddg          }t	          j        ||           t          j        t          ddg          dh          }t          j        ddg          }t	          j        ||           t          j        ddgdg          }t          j        ddg          }t	          j        ||           d S )NrR   rS   TFrm   rn   )r   r  rC   rY   r7   rF   r   r]  s      r0   r{   zTestIsin.test_basicg  se   QFQC((8T5M**
#FH555BHaV,,qc228T5M**
#FH555FAq6NNQC008T5M**
#FH555FAq6NNFA3KK888T5M**
#FH555FAq6NNQC008T5M**
#FH555S#J..8T5M**
#FH555FC:..u>>8T5M**
#FH555FC:..668T5M**
#FH555S#J,,8UEN++
#FH55555r2   c                    t          dd          j        }t          j        ||d         g          }t	          j        g d          }t          j        ||           t          j        ||dd                   }t	          j        g d          }t          j        ||           t          j        |t          |dd                             }t	          j        g d          }t          j        ||           t          dd          j        }t          j        ||d         g          }t	          j        g d          }t          j        ||           t          j        ||dd                   }t	          j        g d          }t          j        ||           t          j        |t          |dd                             }t	          j        g d          }t          j        ||           d S )	Nr   rr   periodsr   )TFFrS   r"  r   )
r   r[   r   r  rC   rY   r7   rF   r   r   rj  s       r0   test_i8zTestIsin.test_i8  s   Q///6C#a&**800011
#FH555CQqS**8///00
#FH555CS1X//8///00
#FH555gq1118C#a&**800011
#FH555CQqS**8///00
#FH555CS1X//8///00
#FH55555r2   dtype1)r<  r*  M8[ns, UTC]	period[D]r4   )r   f8r   c                    t          dd          j        }|dk    r|                    d          }nV|dk    r|                    d          }n:t	          |                    d                                        |          j        }|                    d                              |          }t          j        ||          }t          j
        |j        t          	          }t          j        ||           d S )
Nz
2013-01-01rr   r  r  r  r  UTCr   r3   )r   _values	to_periodtz_localizer   viewr@   r   r  rC   zerosshaper>   r7   rF   )rH   r4   r  dtarz   compsr   r   s           r0   +test_isin_datetimelike_values_numeric_compsz4TestIsin.test_isin_datetimelike_values_numeric_comps  s    
 q1119[  --$$CC}$$//%((CC$((--f55=C%%e,,E3''8EKt444
#FH55555r2   c                     t          ddd          j        }t          j        ||dd                   }t	          j        t          |          t                    }d|d<   d|d	<   t          j	        ||           d S )
N20000101i r,  )r  r   r   rS   r3   TrR   )
r   r[   r   r  rC   r  r   r>   r7   rF   rH   r,  r   r   s       r0   
test_largezTestIsin.test_large  sw    z7===DAq1v&&8CFF$///
#FH55555r2   c                    t          j        g d          }g d}t          t          dg                              ||                    }t          t          dg                              t          j        ddg          |                    }t          j        g d          }t          j        ||          }t          j        ||           d S Nr   rp   rR   r   )TTFT)	rC   rY   r   r   
from_codesr   r  r7   rF   )rH   valscatsSdStr   r   s          r0   test_categorical_from_codesz$TestIsin.test_categorical_from_codes  s    x%%K$$//d;;<<K$$//!Q0@0@$GGHH855566B##
#Hf55555r2   c                 r   t          j        g d          }g d}t          dg                              ||          }t          dg                              t          j        ddg          |          }t          j        g d          }t	          j        ||          }t          j        ||           d S r  )rC   rY   r   r  r   r  r7   rF   )rH   r  r  catotherr   r   s          r0   test_categorical_isinzTestIsin.test_categorical_isin  s    x%%1#))$55QC  ++BHaV,<,<dCC855566C''
#Hf55555r2   c                     t           j        g}t           j        g}t          j        dg          }t          j        ||          }t          j        ||           d S )NT)rC   rZ   rY   r   r  r7   rF   rH   r  r[   r   r   s        r0   test_same_nan_is_inzTestIsin.test_same_nan_is_in  sQ     &8TF##E6**
#Hf55555r2   c                 
   t          j        dd          }t           j        |d<   t          j        |t           j        dg          }t          j        t          |          t                    }t          j	        ||           d S NrW   iAB r   rR   r3   )
rC   r  rZ   r   r  onesr   r>   r7   rF   r  s       r0   test_same_nan_is_in_largez"TestIsin.test_same_nan_is_in_large  sh    GC##v!A{++73q66...
#FH55555r2   c                 B   t          j        dd          }t          |          }t           j        |d<   |                    t           j        dg          }t          t          j        t          |          t                              }t          j	        ||           d S r  )
rC   r  r   rZ   r  r  r   r>   r7   assert_series_equal)rH   r,  seriesr   r   s        r0    test_same_nan_is_in_large_seriesz)TestIsin.test_same_nan_is_in_large_series  s{    GC##v!bfa[))"'#a&&55566
vx00000r2   c                 <    G d d          } |             |            }}t          j        t          j        |g|g          t	          j        dg                     t          j        t          j        |g|g          t	          j        dg                     d S )Nc                        e Zd ZdefdZd ZdS )0TestIsin.test_same_object_is_in.<locals>.LikeNanreturnc                     dS )NFr*   )rH   r  s     r0   __eq__z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__  s    ur2   c                     dS )Nr   r*   )rH   s    r0   __hash__z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__  s    qr2   N)r  r  r  r>   r  r  r*   r2   r0   LikeNanr    s>        t        r2   r  TF)r7   rF   r   r  rC   rY   )rH   r  rm   rn   s       r0   test_same_object_is_inzTestIsin.test_same_object_is_in  s    	 	 	 	 	 	 	 	 wyy''))1
#EJsQC$8$8"(D6:J:JKKK
#EJsQC$8$8"(E7:K:KLLLLLr2   c                    t          d          g}t          d          g}|d         |d         usJ t          j        ||          }t          j        t          j        dg          |           t          j        t          j        |t                    t          j        |t                              }t          j        t          j        dg          |           t          j        t          j        |t
          j	                  t          j        |t
          j	                            }t          j        t          j        dg          |           d S )NrZ   r   Tr3   )
floatr   r  r7   rF   rC   rY   rD   r?   r   )rH   r  r[   r   s       r0   rx  zTestIsin.test_different_nans
  s!    u,,Qxvay(((( E6**
#BHdV$4$4f=== JuF+++RZf-M-M-M
 
 	#BHdV$4$4f=== JuBJ///F"*1U1U1U
 
 	#BHdV$4$4f=====r2   c                     ddg}dg}t          j        ddg          }t          j        ||          }t	          j        ||           d S )Nss*   42F)rC   rY   r   r  r7   rF   r  s        r0   test_no_castzTestIsin.test_no_cast"  sQ     r
8UEN++E6**
#Hf55555r2   emptyr3   c                     t          ddg          }t          j        ddg          }t          j        ||          }t          j        ||           d S )Nrm   rn   F)r   rC   rY   r   r  r7   rF   )rH   r  r  r   r   s        r0   
test_emptyzTestIsin.test_empty+  sR     c3Z  8UEN++D%((
#Hf55555r2   c                 H   t          j        dt           j        dz  t          d          gt                    }t          j        t          d          gt                    }t          j        g d          }t          j        ||          }t          j        ||           d S )NrZ                 ?r3   )FFT)	rC   rY   rZ   r  r?   r   r  r7   rF   )rH   r  r  r   r   s        r0   test_different_nan_objectsz#TestIsin.test_different_nan_objects4  s    %"eEll;6JJJxuf555800011E4((
#Hf55555r2   c                    t          j        dt          j        dd                    d         }t          j        dt          j        dd                    d         }||k    sJ ||k    sJ t          j        ||gt          j                  }t          j        |gt          j                  }t          j        ||          }t          j        ddg          }t          j	        ||           t          j        |gt          j                  }t          j        ||          }t          j        ddg          }t          j	        ||           d S )Nro  rp  rq  r   rr  r3   T)
rs  rt  ru  rC   rY   r   r   r  r7   rF   )rH   rv  rw  rz   lookup1r   r   lookup2s           r0   test_different_nans_as_float64z'TestIsin.test_different_nans_as_float64<  s$   
 }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t|||| hd|2:666(D6444C))8T4L))
#FH555(D6444C))8T4L))
#FH55555r2   c                     t          dddgi          }|                    dg          }t          dddgi          }t          j        ||           dS )zComparing df with int`s (1,2) with a string at isin() ("1")
        -> should not match values because int 1 is not equal str 1r[   rR   rS   rb  FNr   r  r7   assert_frame_equalrH   dfr   expected_falses       r0   test_isin_int_df_string_searchz'TestIsin.test_isin_int_df_string_searchR  sZ     1a&)**#"Huen#=>>
fn55555r2   c                     t          dt          j        dgi          }|                    dg          }t          dddgi          }t	          j        ||           dS )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[   rS   NaNFN)r   rC   rZ   r  r7   r  r  s       r0   test_isin_nan_df_string_searchz'TestIsin.test_isin_nan_df_string_searchZ  s^     261+.//%!!"Huen#=>>
fn55555r2   c                     t          dddgi          }|                    dg          }t          dddgi          }t          j        ||           dS )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@z1.4245FNr  r  s       r0    test_isin_float_df_string_searchz)TestIsin.test_isin_float_df_string_searchb  s]     67"3455($$"Huen#=>>
fn55555r2   c                     t          dgt          j                  }|                    dg          }t          d          }t	          j        ||           d S )Nl   
G r3   l    
G F)r   rC   r   r  r7   r  rH   r\   r   r   s       r0   test_isin_unsigned_dtypez!TestIsin.test_isin_unsigned_dtypej  sS    )*")<<<./00%==
vx00000r2   N)r  r  r  r  r{   r  r   r  r  r  r  r  r  r  r  r  r  rx  r  r   r?   rC   rY   r  r  r  r  r  r  r  r*   r2   r0   r  r  Y  s         $6 $6 $6L6 6 68 [X'W'W'WXX[W&8&8&8996 6 :9 YX6&6 6 66 6 66 6 6
6 
6 
66 6 61 1 1M M M&> > >06 6 6 [Wr66+?+?+?"&NOO6 6 PO66 6 66 6 6,6 6 66 6 66 6 61 1 1 1 1r2   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ej        edf          d             Zd ZdS )TestValueCountsc                    t           j                            d           ddlm} t           j                            d          } ||d          }t          j        |          }g d}t          j	        |          
                    t          d                    }t          g d|	          }t          j        |                                |                                           d S )
Ni  r   )cutrs   )gvgQg`"?gw/?g!rh?TrK  )rR   rR   rR   rR   r+   )rC   r  seedpandas.core.reshape.tiler  randnr   value_countsr   from_breaksr@   CDTr   r7   r  
sort_index)rH   r  rz   factorr   breaksr,   r   s           r0   test_value_countsz!TestValueCounts.test_value_countss  s    
	t000000iooa  S! #F++666)&1188T9J9J9JKK,,,e444
v0022H4G4G4I4IJJJJJr2   c                 T   g d}t          j        |d          }t          dgt          j        dg                    }t          j        ||           t          j        |dd	          }t          ddgt          j        d
dg                    }t          j        ||           d S )N)rR   rS   rr   rs   rR   binsrs   )Zd;?ru   r+   rS   F)r  r#   )r        @)r  ru   )r   r  r   r   r<   r7   r  r  s       r0   test_value_counts_binsz&TestValueCounts.test_value_counts_bins  s    LL#AA...1#]%>~%N%NOOO
vx000#AAE:::F-3\:4NOO
 
 
 	vx00000r2   c                    t          j        ddg          }t          |          dk    sJ t          j        ddgd          }t          |          dk    sJ t          j        t          g d                    }t          |          dk    sJ d}t	          j        t          |          5  t          j        ddgd           d d d            d S # 1 swxY w Y   d S )	NrR   rW   r  )rR   rW   rb  rS   z*bins argument only works with numeric datare   rb  )r   r  r   r   r   r   r   )rH   r   rj   s      r0   test_value_counts_dtypesz(TestValueCounts.test_value_counts_dtypes  s(   #QH--6{{a#QH15556{{a#F===$9$9::6{{a:]9C000 	1 	1Qxa0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   .CCCc                    t          t          j        d          t          gd          }t	          ddg          }||fD ]V}t          j        |          }t          j        |d          }t          |          dk    sJ t          |          d	k    sJ Wt          t          d
          di          }t          j
        t          j        |          |           d S )Nr;  r6  r3   r   z
2014-01-01FdropnarR   rS   z2014-01-01 00:00:00)r   rC   timedelta64r   r   r   r  r   r   r7   r  )rH   tddtr,  vc
vc_with_naexp_dts          r0   test_value_counts_natz%TestValueCounts.test_value_counts_nat  s    R^E**C08IJJJ%.//b 	( 	(A#A&&B+Ae<<<Jr77a<<<<z??a'''''#8991=>>
u1"55v>>>>>r2   c                    t          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          g          }|                                }t          t          ddd          t          ddd          t          ddd          gt                    }t          g d|          }t          j        ||           t          t          dt          j	        g          d	
          }t          dt          j	        gt                    }t          j        ||           d S )Ni  rR   i  ip  r3   rr   rS   rR   r+   z
2362-01-01ignore)errors)
r   r   r  r   r?   r7   r  r   rC   rZ   )rH   r,  res	exp_indexry   s        r0   &test_value_counts_datetime_outofboundsz6TestValueCounts.test_value_counts_datetime_outofbounds  sF   q!$$q!$$q!$$q!$$q!$$q!$$	
 	
 nndAq!!8D!Q#7#7$19M9MN
 
 
	 YYYi000
sC((( &,!788JJJlBF+6:::
sC(((((r2   c                    t          t          t          d                              }|                                }t          g dt	          g d                    }t          j        ||d           |j                                        }|                                }|j	                                        |_	        t          j        ||d           d S )Naaabbcr  rp   r+   Tcheck_index_type)
r   r   rB   r  r   r7   r  r  
as_orderedr,   r  s       r0   rR  z TestValueCounts.test_categorical  s    ;tH~~..//!!)))+;OOO+L+LMMM
vx$GGGG E!!!2244
vx$GGGGGGr2   c           	         t          t          t          d                              }t          j        |j        d<   |                                }t          g dt          g dg d                    }t          j	        ||d           |                    d	
          }t          g dt          dddt          j        g                    }t          j	        ||d           t          t          t          d          dg d                    }t          j        |j        d<   |                                }t          g dt          g dg dd                    }t          j	        ||d           |                    d	
          }t          g dt          dddt          j        gg dd                    }t          j	        ||d           d S )N
aaaaabbbccrR   )rs   rr   rS   rp   rN  r+   Tr  Fr  )rs   rr   rS   rR   rm   rn   ro   )rn   rm   ro   )rI  rH  rG  )
r   r   rB   rC   rZ   ilocr  r   r7   r  r  s       r0   test_categorical_nansz%TestValueCounts.test_categorical_nans  s   ;tL112233Fq	!!II"???OOO
 
 
 	vx$GGGGu--,,,.>S#rv?V.W.WXXX
vx$GGGG \**D___UUU
 
 Fq	!!II"OOOT  
 
 
 	vx$GGGGu--LL"c3'OOOT  
 
 
 	vx$GGGGGGr2   c           	      2   t          t          t          d          t          d          d                    }|                                }t          g dt          g dt          d          d                    }t	          j        ||d           d S )	NbbbaacabcdTrG  )rr   rS   rR   r   )rn   rm   ro   ro  r+   r  )r   r   rB   r  r7   r  r  s       r0   test_categorical_zeroesz'TestValueCounts.test_categorical_zeroes  s    ;tH~~$v,,PTUUUVV!!LL$$$ft  
 
 
 	vx$GGGGGGr2   c           
      R   t          j        t          g d                              d          t          ddgddg                     t          j        t          g d                              d          t          ddgddg                     t          j        t          dgdz  dgdz  z   d gd	z  z                                 d          t          ddgt	          ddgt
          
                               t          j        t          dgd	z  dgdz  z   d gdz  z                                 d          t          g dddt          j        g                     t          j        t          g d                              d          t          ddgddg                     t          j        t          g d                              d          t          ddgddg                     t          j        t          g d                              d          t          ddgddg                     t          g d                              d          }t          g dddt          j        g          }t          j        ||           d S )Nr"  Tr  rS   rR   Fr+   rr   rq   r3   )rq   rr   rS   )皙$@rt   rt   rt   r  )r  rt   rt   N)r  r  rt   rt   rt   Nr  )r7   r  r   r  r   r?   rC   rZ   r]  s      r0   test_dropnazTestValueCounts.test_dropna   s    	&&&''44D4AAAq6$///	
 	
 	
 	&&&''44E4BBAq6$///	
 	
 	

 	D6A:!+tfqj899FFdFSSAq6e}F!C!C!CDDD	
 	
 	
 	D6A:!+tfqj899FFeFTT999T5"&$9:::	
 	
 	
 	###$$111>>Aq6#t---	
 	
 	
 	###$$111??Aq6#t---	
 	
 	

 	)))**77t7DDAq6#t---	
 	
 	

 999::GGuGUU)))Crv+>???
vx00000r2   r4   r*  c                    t          dgdz  dgdz  z   t          j        gdz  z             }|                    |          }|                    dd          }t          g dt          t          j        d	d
g|                    }t          j        ||           |                    dd          }t          ddgt          d	d
g|                    }t          j        ||           d S )NrR   rS   rr   rq   TF)	normalizer  )g      ?g333333?g?rX   rW   r3   r+   g333333?g?)r   rC   rZ   r@   r  r7   r  )rH   r4   r,  s_typedr   r   s         r0   test_value_counts_normalizedz,TestValueCounts.test_value_counts_normalized&  s     A37aS1W$x!|344((5//%%U%CCOO6263*<E#J#J#J
 
 
 	vx000%%T%BB3*FC:U,K,K,KLLL
vx00000r2   c                 v   t          j        dgt           j                  }t          dgdg          }t	          j        |          }t          j        ||           t          j        ddgt                    }t          ddgddg          }t	          j        |          }t          j        ||           d S )Nr   r3   rR   r+   ra   )	rC   rY   r   r   r   r  r7   r  r?   )rH   rz   r   r   s       r0   test_value_counts_uint64z(TestValueCounts.test_value_counts_uint645  s    hwbi0001#eW---#C((
vx000hE{&1111a&U444#C((
vx00000r2   N)r  r  r  r  r  r  r  r  rR  r  r  r  r   r  r  rC   r   r?   r  r!  r*   r2   r0   r  r  r  s        K K K
1 
1 
11 1 1? ? ?) ) )4H H H"H "H "HH
H 
H 
H$1 $1 $1L [Wrz68&DEE1 1 FE11 1 1 1 1r2   r  c                      e Zd Zd Zej                            d ej        g d           ej        dddej	        ddddej	        dg
           ej        g d	           ej        g d
e
           ej        g dej                  g          d             Zd Zej                            d eg d           ej        dd          g          d             Zej                            dg dg dfg dddgfg dg dfg          d             Zej                            dg d ej        g de
          fg          d             Zd S )!TestDuplicatedc           	         t          j        ddt           j        ddt           j        gt                    }t	          j        |          }t          j        g d          }t          j        ||           t	          j        |d          }t          j        g d          }t          j        ||           t	          j        |d          }t          j        g d	          }t          j        ||           t	          j        |d
          }t          j        g d          }t          j        ||           t          j        dt                    }t          t          ddt           j        t           j        gdz  dt           j        dt           j        gdz                      D ]
\  }}|||<   t	          j        |          }d
gdz  }dgdz  }t          j        ||z             }t          j        ||           t	          j        |d          }t          j        ||z             }t          j        ||           t	          j        |d
          }t          j        ||z             }t          j        ||           d S )Nr   rR   rS   r3   )FFFTFTfirstkeeplast)TFTFFFF)TFTTFT   rs   T)rC   rY   rZ   r?   r   
duplicatedr7   rF   r  	enumeratezip)rH   keysr   r   r   tfalsestruess           r0   test_duplicated_with_nasz'TestDuplicated.test_duplicated_with_nasD  sQ   xArvq!RV4FCCC!$''8DDDEE
#FH555!$W5558DDDEE
#FH555!$V4448DDDEE
#FH555!$U3338BBBCC
#FH555x(((Arvrv&*Q26,BQ,FGG
 
 	 	DAq DGG!$''1
8FUN++
#FH555!$V4448EFN++
#FH555!$U3338EEM**
#FH55555r2   case)
rR   rS   rR   rq   rr   rS   rs   rR   rq      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r4        @      @y      @      @r5  y      @      @r4  r6  y      @      @)
rm   rn   rm   ero   rn   ro  rm   r7  fr3   )
rR   r   rR      r   r   '   rR   r9     c                 H   t          j        g d          }t          j        g d          }||z  }t          j        |d          }t	          j        ||           t          j        |d          }t	          j        ||           t          j        |d          }t	          j        ||           t          |          t          |d          fD ]}|                    d          }t	          j        ||           |                    d          }t	          j        ||           |                    d          }t	          j        ||           t          |          t          |d          fD ]}	|	                    d          }t	          j        |t          |                     |	                    d          }t	          j        |t          |                     |	                    d          }t	          j        |t          |                     d S )	N
FFTFFTFTTF
TTTTFFFFFFr%  r&  r(  Fcategoryr3   )	rC   rY   r   r*  r7   rF   r   r   r  )
rH   r2  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr,  s
             r0   test_numeric_object_likesz(TestDuplicated.test_numeric_object_likesk  s    4 HNNN
 
	 8NNN
 
 (	$T888	
#Iy999#Dv666
#Hh777$T666	
#Iy999 $KKt:!>!>!>? 	> 	>CG44I'	9===~~6~22H'(;;;E22I'	9==== ,,t: > > >? 	A 	AA'22I"9fY.?.?@@@|||00H"8VH-=-=>>>%00I"9fY.?.?@@@@	A 	Ar2   c                    g d}g d}t          j        d |D                       t          j        d |D                       t          j        d |D                       t          j        d |D                       t          j        d |D                       g}t          j        g d          }t          j        g d	          }||z  }|D ]}t          j        |d
          }t	          j        ||           t          j        |d          }	t	          j        |	|           t          j        |d          }
t	          j        |
|           t          |          t          |d          t          |t                    fD ]}|                    d
          }t	          j        ||           |                    d          }	t	          j        |	|           |                    d          }
t	          j        |
|           t          |          t          |d          t          |t                    fD ]}|                    d
          }t	          j	        |t          |                     |                    d          }	t	          j	        |	t          |                     |                    d          }
t	          j	        |
t          |                     d S )N)

2011-01-01
2011-01-02rI  r   
2011-01-03rJ  z
2011-01-04rI  r   z
2011-01-06)
1 days2 daysrL  r   z3 daysrM  z4 daysrL  r   z6 daysc                 ,    g | ]}t          |          S r*   r   r-   ro  s     r0   r1   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>      ///qill///r2   c                 0    g | ]}t          |d           S )rU  rV  rO  rP  s     r0   r1   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    @@@il333@@@r2   c                 0    g | ]}t          |d           S )r  r   )r   rP  s     r0   r1   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    666afQS)))666r2   c                 6    g | ]}t          j        |          S r*   )rC   r   rP  s     r0   r1   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s"    3331bmA&&333r2   c                 ,    g | ]}t          |          S r*   )r   rP  s     r0   r1   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  rQ  r2   r=  r>  r%  r&  r(  Fr?  r3   )
rC   rY   r   r*  r7   rF   r   r?   r   r  )rH   r   r  casesr@  rA  rB  r2  rC  rD  rE  rF  r,  s                r0   test_datetime_likesz"TestDuplicated.test_datetime_likes  s   
 
 

 
 
 H//B///00H@@R@@@AAH66266677H3333344H//B///00
 HNNN
 
	 8NNN
 
 (	 &	E &	ED(G<<<I'	9==='6:::H'(;;;(E:::I'	9=== dd*---d&))) B B
  NNN88	+IyAAA>>v>66+Hh???NNN66	+IyAAAA tt:...t6*** E E
 LLgL66	&y&2C2CDDD<<V<44&x1A1ABBBLLeL44	&y&2C2CDDDDE5&	E &	Er2   r   r   rr   c                     |j         du sJ t          j        |                                t	          j        g d                     d S )NT)FFF)	is_uniquer7   rF   r*  rC   rY   )rH   r2  s     r0   test_unique_indexz TestDuplicated.test_unique_index  sI    ~%%%%
#DOO$5$5rx@U@U@U7V7VWWWWWr2   zarr, uniques)r   r   rR   rR   r   r   r   r[  r\  r   )r   r[  r\  r   )rn   ro   rm   rn   r^  r]  r]  r^  )r   rn   rS   rm   rr   r   )r   r_  r`  c                     t          j        t          |          t                    }||d d <   t	          j        |          }t          j        ||           d S r   )rC   r  r   r?   ri   r=   r7   rF   )rH   rz   r^   r   r   s        r0   test_unique_tuplesz!TestDuplicated.test_unique_tuples  sQ      8CLL7773
#FH55555r2   zarray,expected)r4  r   rR   r        ?       @rc  )r4  y                y      ?        r  rc  c                 X    t          j        |          }t          j        ||           d S re  rf  )rH   rY   r   r   s       r0   test_unique_complex_numbersz*TestDuplicated.test_unique_complex_numbers  s,     5!!
#FH55555r2   N)r  r  r  r1  r   r  r  rC   rY   rZ   r?   r   rG  rW  r   ri   r   rZ  rb  re  r*   r2   r0   r#  r#  C  sL       %6 %6 %6N [BH33344BHc3RVS#sCMNNBH    BHGGGvVVVBH>>>bi  %	
 2&A &A3 2&APQE QE QEf [VeeIII&6&6a8K8K%LMMX X NMX [ QPP000
 A@@Z( 6557U7U7UV
	
 6 6 6 [ 322???vNNN	
	 	6 6	 	6 6 6r2   r#  c            	       >   e Zd Zej                            dej        dfej        dfej	        dfej
        dfej        dfg          d             Zej                            dej        dfej        dfej	        dfej
        dfej        dfg          d             ZdS )	TestHashTablezhtable, tm_dtypeStringFloatIntUIntc                    t          t          d|z   dz             }t           |d                    }|t          j        k    rt
          j        |j        d<   n.|t          j        k    rt
          j        d t          g|j        dd<   |
                    dd                              d	          }|j                            |
           |                    d          j        } |                                |j                  }t          j        ||            |                                |j        d          \  }}	t          j        ||           ||	         }
t          j        |
|j                   d S )Nmaker   r      rr   Tfracreplacedropr   r%  r&  )return_inverse)r9   r7   r   r   Float64HashTablerC   rZ   locPyObjectHashTabler   samplereset_indexr[   r   drop_duplicatesr=   rF   )rH   htabletm_dtyper   makerr,  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrs              r0   test_hashtable_uniquez#TestHashTable.test_hashtable_unique+  sg    FX-78855;;R(((AE#JJr+++ fdC0AE#c'N xxQx55AAtALL$$8$444 '66G6DDK(;<<
#M?CCC )/ )8 )
 )
%~ 	#M?CCC 0
#Hl.ABBBBBr2   c                    t          t          d|z   dz             }t           |d                    }|t          j        k    rt
          j        |j        d<   n.|t          j        k    rt
          j        d t          g|j        dd<   |
                    dd                              d	          }|j                            |
           |                                j        } |                                |j                  \  }}	|                                                                j        }
t          j        ||
           ||	|                   }|                                j        }t          j        ||           d S )Nrm  r   r  rn  ro  rr   Trp  rs  r   )r9   r7   r   r   rv  rC   rZ   rw  rx  r   ry  rz  r[   r   r   r:   r  r{  rF   )rH   r|  r}  r   r~  r,  r  na_maskr  r  r  result_reconstructexpected_reconstructs                r0   test_hashtable_factorizez&TestHashTable.test_hashtable_factorizeS  se    FX-78855;;R(((AE#JJr+++ fdC0AE#c'N xxQx55AAtALL$$8$444##%%,(.(:(:<;N(O(O%~
 '--//??AAH
#M?CCC +>7(+CD+2244;
#$68LMMMMMr2   N)r  r  r  r   r  r  r   rx  StringHashTablerv  Int64HashTableUInt64HashTabler  r  r*   r2   r0   rg  rg  *  s        [!8,* '*&(	
	 	C C	 	C< [!8,* '*&(	
	 	N N	 	N N Nr2   rg  c                      e Zd Zej        ej                            dej	        ej	        dddej	        dddej	        g
dej	        dddej	        dddej	        g
g          d                         Z
ej                            dej        d	                   d
             Zej                            dej        ej        g          d             Zd Zej        j        d             ZdS )TestRankrz   rt   rR   rS   rr   ru   c                 0   ddl m} t          j        |          }t          j        |           }|                                }t          j        |          }t          j        ||<    ||          }t          j	        ||<   t          j        ||           d S )Nr   )rankdata)scipy.statsr  rC   rY   isfinitecopylibalgosrank_1dr   rZ   r7   r  )rH   rz   r  maskr   ry   s         r0   test_scipy_compatzTestRank.test_scipy_compat}  s     	)(((((hsmmC   hhjj!#&&FD	hsmmFD	
vs+++++r2   r4   
AllIntegerc                    t          j        ddgt           j                  }t          j        ddg|          }|                    |           t	          |          }t          j        |          }t          j        ||           d S )NrR   rS   r3   r   r   )	rC   rY   r   r   r   r   rankr7   rF   )rH   r   r4   ry   r   r\   r   s          r0   r{   zTestRank.test_basic  sy    h1vRZ000xC...H%%%TllC
#FC00000r2   c                     t          j        ddgt           j                  }t          ddg|          }t	          j        t          j        |          |           d S )NrR   rS   r3   r   )rC   rY   r   r   r7   rF   r   r  )rH   r4   ry   r,  s       r0   r@  zTestRank.test_uint64_overflow  sS    h1vRZ000Au:U+++
#EJqMM377777r2   c                     t          j        g dg dg dgg          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   )rs   rq   r3  )r;  r)  	   z%Array with ndim > 2 are not supportedre   )rC   rY   r   r   r   r   r  )rH   rz   rj   s      r0   test_too_many_ndimszTestRank.test_too_many_ndims  s    hIIIyyy9:;;5]9C000 	 	JsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"%A"c                 >   t          j        d          }t          j        |d                                          }|dk    sJ t          j        d                              dd          }t          j        |d                                          }|dk    sJ d S )Ni  T)pctrR   i  rS   )rC   rx   r   r  maxreshape)rH   r[   r   s      r0   test_pct_max_many_rowszTestRank.test_pct_max_many_rows  s     9%%F---1133{{{{9%%--i;;F---1133{{{{{{r2   N)r  r  r  r  skip_if_no_scipyr   r  r  rC   rZ   r  	typecodesr{   r   r   r@  r  
single_cpur  r*   r2   r0   r  r  |  s3       [VRVS#sBFAq!RVD"&#sCAsBFC	
 , ,  , [Wbl<&@AA1 1 BA1 [Wrz29&=>>8 8 ?>8   [    r2   r  c                     t          j        g d          } t          j        t          ddd          gd          }t          j        d         | |          }t          j        dgt           j                  }t          j        ||           t          j        d         ||           }t          j        g t           j                  }t          j        ||           t          j        d         | |          }t          j        dgt           j                  }t          j        ||           t          j        d         ||           }t          j        g t           j                  }t          j        ||           d S )Nr   r3   i        r?   ra   )	rC   rY   r   r  padrE   r7   rF   backfill)oldnewr   r   s       r0   !test_pad_backfill_object_segfaultr    sA   
(2S
!
!
!C
(HT2r**+3
7
7
7C\(#C--FxBG,,,H111\(#C--Fx"'***H111x(c22FxBG,,,H111x(c22Fx"'***H11111r2   c                       e Zd Zd Zd ZdS )TestTseriesUtilc                 `   t          g d          }t          t          t          d                              }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           t          ddg          }t          t          t          dd	                              }t          j        d         |j        |j                  }t          j        g d
t          j                  }t          j
        ||           d S )NrR   rq   r   r  int64_t)r   r   rR   rR   rR   rR   rS   rS   rS   rS   rS   ra   r3   rR   rs   rq   r   ra   ra   ra   ra   ra   )r   rB   r   r  r  r[   rC   rY   rE   r7   rF   rH   r  r  fillerexpect_fillers        r0   test_backfillzTestTseriesUtil.test_backfill  s    JJJDrOO$$"9-cj#*EE!F!F!FbgVVV
#FM::: QFmmDq"&&''"9-cj#*EE!5!5!5RWEEE
#FM:::::r2   c                 N   t          g d          }t          t          t          d                              }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           t          ddg          }t          t          j        d                    }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           d S )	Nr  r  r  )ra   r   r   r   r   rR   rR   rR   rR   rR   rS   rS   r3   rq   r   r  )r   rB   r   r  r  r[   rC   rY   rE   r7   rF   rx   r  s        r0   test_padzTestTseriesUtil.test_pad  s    JJJDrOO$$i(SZ@@!F!F!FbgVVV
#FM::: QGnnBIaLL!!i(SZ@@!5!5!5RWEEE
#FM:::::r2   N)r  r  r  r  r  r*   r2   r0   r  r    s2        ; ; ;"; ; ; ; ;r2   r  c                      t          j        g dd          t          j        g dd          g} t          j        |           rJ d S )N)|rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rr   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rS   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r3   )|                              r         r               r     r   r  r)  r;  r3  rq   rs   rr   rS   rR   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r)  r;  r3  rq   rs   rr   rS   rR   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r)  r;  r3  rq   rs   rr   rS   rR   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r)  r;  r3  rq   rs   rr   rS   rR   r   )rC   rY   r  is_lexsorted)failures    r0   test_is_lexsortedr    s    
} } }| @	
 @	
 @	
B 	} } }| @	
 @	
 @	
ECGJ $W-------r2   c                     t           j                            ddd                              t           j                  } t           j                            ddd                              t           j                  }t          j        | d          d         }t          j        | d          }|                    t           j                  }t          j	        ||           | dz  |z   }t          j        |d          d         }t          j
        || f          }|                    t           j                  }t          j	        ||           d S )Nr   r  r   	mergesort)kindi@B )rC   r  r  r@   rE   r  groupsort_indexerargsortr7   rF   lexsort)rm   rn   r   r   r   s        r0   test_groupsort_indexerr    s   
	!T3''..rw77A
	!T3''..rw77A'4003F
 z!+...Hrw''H111
 d(Q,C'W55a8Fz1a&!!Hrw''H11111r2   c                  ~   t          j                    t          j                    t          d          dddt          d          g} t	          fd| D                       sJ t	          fd| D                       sJ k    rk    sJ k     sk    rJ t          j                    t          j                    k    sJ t          j                    t          j                    k    rJ t	          fd| D                       sJ t	          fd	| D                       sJ k    rk    sJ k     sk    rJ t          j                    t          j                    k    sJ t          j                    t          j                    k    rJ t          |           D ]}t          |          | k    sJ t          j        t          j                    gd
z            	                                 t          j        t          j                    gd
z            	                                 d S )Nz-infg}Ô%Ir   g}Ô%ITr   c              3   $   K   | ]
}|k    V  d S re  r*   r-   r   Infs     r0   	<genexpr>z%test_infinity_sort.<locals>.<genexpr>  s'      **Asax******r2   c              3   ,   K   | ]}|k    p|u V  d S re  r*   r  s     r0   r  z%test_infinity_sort.<locals>.<genexpr>  s0      55qsQw"!s(555555r2   c              3   $   K   | ]
}|k    V  d S re  r*   r-   r   NegInfs     r0   r  z%test_infinity_sort.<locals>.<genexpr>#  s'      --qv{------r2   c              3   ,   K   | ]}|k     p|u V  d S re  r*   r  s     r0   r  z%test_infinity_sort.<locals>.<genexpr>$  s0      ;;Qvz(Q&[;;;;;;r2       )
r  InfinityNegInfinityr  allr   sortedrC   rY   r  )ref_numspermr  r  s     @@r0   test_infinity_sortr    sb    


C!##Ffvq%usKH************5555H55555555#::#***$Syys*("3"5"55555 ""h&7&9&99999----H--------;;;;(;;;;;;;;V& 0 0 00v6!!X%9%;%;;;;;#%%)=)?)?????X&& ( (d||x''''' Hh!!"R'((00222Hh"$$%*++3355555r2   c                     t          j                    } t          j                    }| t          j        k    rJ | t          j        k    rJ | t          j        k     rJ | t          j        k    rJ | t          j        k    rJ | t          j        k    sJ |t          j        k    rJ |t          j        k    rJ |t          j        k     rJ |t          j        k    rJ |t          j        k    rJ |t          j        k    sJ d S re  )r  r  r  rC   rZ   )r  r  s     r0   test_infinity_against_nanr  2  s    



C!##FRV|||bf}}}RV|||bf}}}bf}}}"&====RVr2   c                  z    t          j        dt           j                  } t          j        |           }|| u sJ d S )Nr   r3   )rC   rx   rE   r  ensure_platform_int)rz   r   s     r0   test_ensure_platform_intr  E  s9    
)Crw
'
'
'C)#..FS======r2   c            
      f   d} t          j        t           j                  j        }t          j        t           j                  j        }t          j        t          |           5  t          j	        t          j
        ||g          |           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          |           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j        t                    5  t          j	        t          j
        ||g          t          j
        t           j        |g                     d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg          t          j
        ddg                     d S )NzOverflow in int64 additionre   FT)arr_mask)b_mask)r  r  )rC   iinfor   r  minr   r   OverflowErrorr   checked_add_with_arrrY   r7   rg   RuntimeWarningrZ   )rj   mns      r0   test_int64_add_overflowr  L  s   
&C
A
A	}C	0	0	0 8 8"28QF#3#3Q7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 8 8"28QF#3#3Q7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 
 
"HaVbh1v..5$-9P9P	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 
 
"HaVbh1v..rx7N7N	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 
 
"HaVHaVXudm,,8UDM**		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 P P'77 	P 	P&rxA'7'7261+9N9NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PP P P P P P P P P P P P P P P 

!Q"(Aq6**RXtTl5K5K    

!Q"(Aq6**28T4L3I3I    

!Q
!Q4-((x&&	     s   $*BB!B >D

DD0*E&&E*-E*>GGG<>II
I
,AKKK2AMMM8A)O--O14O1R-AR5RR	RR		RRRc                      e Zd Zd Zej                            dej        d         ej        d         z             d             Z	d Z
ej                            dej        d         ej        d         z             d             Zd Zej                            deeg          d	             Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestModec                     t          g t          j        t          g t                              }t          j        t          j        g           |j	                   d S )Nr3   )r4   r,   )
r   rC   r   r   intr7   rF   r   moder[   rH   ry   s     r0   test_no_modezTestMode.test_no_mode  sH    Rrzr1E1E1EFFF
#EJrNNCJ?????r2   r   r  ri  c                    dg}dg}dg}ddg}t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )NrR   r3   r   r7   rF   r   r  r[   r  rH   r   
exp_singledata_single	exp_multi
data_multir\   ry   s           r0   test_mode_singlezTestMode.test_mode_single  s     S
cC	V
[+++Zr***
#EJsz$:$:CJGGG
sxxzz3///Zr***Yb)))
#EJsz$:$:CJGGG
sxxzz3/////r2   c                    t          dgt                    }t          j        t	          j        dg          |j                   t          g dt                    }t          j        t	          j        g d          |j                   d S )NrR   r3   rp   )r   r  r7   rF   r   r  r[   r?   r  s     r0   test_mode_obj_intzTestMode.test_mode_obj_int  st    aS$$$
#EJsOOSZ@@@___F333
#EJ$?$?LLLLLr2   c                 >   dg}dgdz  dgdz  z   }ddg}dgdz  dgdz  z   dgdz  z   }t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )NrR   rq   rS   rr   r3   r  r  s           r0   test_number_modezTestMode.test_number_mode  s   S
cAga'F	S1WsQw&!q0
[+++Zr***
#EJsz$:$:CJGGG
sxxzz3///Zr***Yb)))
#EJsz$:$:CJGGG
sxxzz3/////r2   c                    dg}dgdz  dgdz  z   }t          |d          }t          |d          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nrn   rm   rS   rr   ro   r3   r  )rH   ry   r   r\   s       r0   test_strobj_modezTestMode.test_strobj_mode  s    euqyC519$T%%%S$$$
#EJsz$:$:CJGGG
sxxzz3/////r2   c                    dg}dgdz  dgdz  z   }t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nbarr   rS   rr   r3   r  )rH   r   ry   r   r\   s        r0   test_strobj_multi_charzTestMode.test_strobj_multi_char  s    gw{eWq[(T$$$S###
#EJsz$:$:CJGGG
sxxzz3/////r2   c                    t          g dd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )N)
1900-05-03rK  
2013-01-02r*  r3   )rK  r  r  rK  r  )rK  r  r  rK  r  r   r7   r   r   r  r[   r  r  rH   ry   r\   s      r0   test_datelike_modezTestMode.test_datelike_mode  s    ???xPPP???xPPP
'
3:(>(>LLL
sxxzz3///lL1BBBRRR
 
 
 	'
3:(>(>LLL
sxxzz3/////r2   c                    t          g dd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )N)-1 days0 daysrL  r6  r3   )rL  r  r  2 minr   r   r   z-1 dayz-1 day 2 minr  r  r  r  s      r0   test_timedelta_modezTestMode.test_timedelta_mode  s    444<MNNN444<MNNN
'
3:(>(>LLL
sxxzz3///gw'/@AAAJJJ#
 
 
 	'
3:(>(>LLL
sxxzz3/////r2   c                     t          dg          }t          g d          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nr   )rR   r   r   r  r  s      r0   test_mixed_dtypezTestMode.test_mixed_dtype  se    eWoo&&&''
#EJsz$:$:CJGGG
sxxzz3/////r2   c                 L   t          dgt          j                  }t          g dt          j                  }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgt          j                  }t          ddgt          j                  }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nr   r3   )rR   r   r   rR   )	r   rC   r   r7   rF   r   r  r[   r  r  s      r0   r@  zTestMode.test_uint64_overflow  s    eWBI...&&&bi888
#EJsz$:$:CJGGG
sxxzz3///aZry111aZry111
#EJsz$:$:CJGGG
sxxzz3/////r2   c                    t          ddg          }|}d}t          j        t          |          5  |                                }d d d            n# 1 swxY w Y   t          j        ||           t          g d          }t          dgddg          }t          j        t          |          5  |                                }d d d            n# 1 swxY w Y   t          j        ||           t          g d          }t          dd	gg d
          }t          j        t          |          5  |                                }d d d            n# 1 swxY w Y   t          j        ||           d S )NrR   rS   zCategorical.mode is deprecatedre   rR   rm   rm   rm   rN  rR   rR   rS   rr   rr   rr   r   )r   r7   rg   rh   r  rO  )rH   ro   ry   rj   r	  s        r0   rR  zTestMode.test_categorical  s   A.'SAAA 	 	&&((C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
#C---&&3%QH555'SAAA 	 	&&((C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
#C---((1a&YYY777'SAAA 	 	&&((C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
#C-----s5   AAA2CCC4EEEc                    t          g d          }t          g dt          j                  }t	          j        t          j        |          |j                   t          g d          }t          dgt                    }t	          j        t          j        |          |j                   t          g d          }t          ddgt          j                  }t	          j        t          j        |          |j                   t          g dd	          }t          j        t          d
          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   r3   r!  rm   r"  rR   rr   r  r6  TimedeltaIndexre   )r   r   rC   r   r7   rF   r   r  r[   r?   r   r   AttributeError)rH   rF  ry   s      r0   
test_indexzTestMode.test_index	  sy   IIIYYYbh///
#EJsOOSZ@@@MMM""cU&)))
#EJsOOSZ@@@OOO$$aV28,,,
#EJsOOSZ@@@JJJ#
 
 
 ]>1ABBB 	 	JsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7EE Ec                     t          g dd          }|                                }t          dgd          }t          j        ||           d S )N)rR   rR   rr   r   rL  rR   )r   r  r7   r  r  s       r0   test_ser_mode_with_namez TestMode.test_ser_mode_with_name	  sR    YYYU+++1#E***
vx00000r2   N)r  r  r  r  r   r  r  rC   r  r  r	  r  r  strr?   r  r  r  r  r@  rR  r&  r(  r*   r2   r0   r  r    sf       @ @ @ [T2<#=W@U#UVV0 0 WV0$M M M [T2<#=W@U#UVV0 0 WV0"0 0 0 [TC=110 0 2100 0 00 0 00 0 0	0 	0 	0. . .(  *1 1 1 1 1r2   r  c                       e Zd Zej                            dddg          d             Zd Zej                            dddg          d             Zd	S )
TestDiffr4   r*  r<  c                 j   t          j        d                              t           j                                      |                              dd          }|j                            dd          |d d df<   t          j	        |dd	          }t          j
        |j        d
          dz  }t          j        dd          |d d df<   t          j        dd          |dd d f<   t          j        ||           t          j	        |j        dd	          }t          j        ||j                   d S )Nr  rr   rs   r   nsrS   rR   r   axisr6  r3   )rC   rx   r@   r   r  r  r4   typer   diffr  r  r  r7   rF   TrH   r4   rz   r   r   s        r0   test_diff_datetimelike_natz#TestDiff.test_diff_datetimelike_nat#	  s    imm""28,,11%88@@AFFINN5$//AAAqD	C+++739,=>>>Bt44At44AAA
#FH555CE11---
#FHJ77777r2   c                     t          ddd          j        }d}t          j        t          |          5  t          j        |dd           d d d            d S # 1 swxY w Y   d S )	Nr[  rr   z
US/Pacific)r  rW  z#cannot diff DatetimeArray on axis=1re   rR   r.  )r   _datar   r   
ValueErrorr   r1  )rH   r  rj   s      r0   test_diff_ea_axiszTestDiff.test_diff_ea_axis3	  s    q\BBBH3]:S111 	' 	'JsAA&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AA!Aint8int16c                     t          j        g d|          }t          j        |d          }t          j        t           j        ddddgd          }t          j        ||           d S )N)r   rR   rR   r   r   r3   rR   r   ra   float32)rC   rY   r   r1  rZ   r7   rF   r3  s        r0   test_diff_low_precision_intz$TestDiff.test_diff_low_precision_int:	  se    he444C##8RVQ2q1CCC
#FH55555r2   N)	r  r  r  r   r  r  r4  r8  r=  r*   r2   r0   r+  r+  "	  s        [Wx&:;;8 8 <;8' ' ' [Wvw&7886 6 986 6 6r2   r+  opc                 4    | g d          } | g d          } | g d          }t          |t          j                  r,t          j        ||          }t          j        ||           d S t          j        ||          }t          j        ||           d S )N)rr   rR   rr   rs   )rS   rr   rR   rR   )rr   rr   rR   rR   rs   rS   )r;   rC   r   r   union_with_duplicatesr7   rF   r   )r>  lvalsrvalsr   r   s        r0   test_union_with_duplicatesrC  B	  s     B|||EB|||Er$$$%%H(BJ'' :,UE::
#FH55555,UE::
'99999r2   )Pr   	itertoolsr   rs  numpyrC   r   pandas._libsr   r  r   r   pandas.compatr   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandas.core.dtypes.commonr	   r
   r   r   r   pandas.core.dtypes.dtypesr   r  pandasri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr7   pandas.core.algorithmscore
algorithmspandas.core.arraysr    pandas.core.commoncommonr   r"   r  r  r  r#  rg  r  r  r  r  r  r  r  r  r  r  r+  r  r  rY   rC  r*   r2   r0   <module>rW     s         " " " " " "              . - - - - - , , , , , , ) ) ) ) ) ) ) ) )              > = = = = =                                         &       & & & & & & & & & , , , , , ,                  JL JL JL JL JL JL JL JLZV: V: V: V: V: V: V: V:r
V1 V1 V1 V1 V1 V1 V1 V1rN1 N1 N1 N1 N1 N1 N1 N1bd6 d6 d6 d6 d6 d6 d6 d6NON ON ON ON ON ON ON ONd7 7 7 7 7 7 7 7t2 2 2, ;  ;  ;  ;  ;  ;  ;  ;FF. F. F.R2 2 226 6 6B  &  1 1 1h_1 _1 _1 _1 _1 _1 _1 _1D6 6 6 6 6 6 6 6@ "(344
: 
: 54
: 
: 
:r2   