
    o[weiC                       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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'm(Z( d dl)m*Z+ d dl,m-c m.Z d dl/m0Z0m1Z1 d dl2m-c m3Z4  G d	 d
          Z5 G d d          Z6d Z7 G d d          Z8 G d d          Z9 G d d          Z: G d d          Z; G d d          Z<d Z= G d d          Z>d Z?d Z@d ZAd ZBd ZCd  ZD G d! d"          ZE G d# d$          ZFejG        H                    d%ejI        ejI        g          d&             ZJdS )'    )datetime)permutationsN)algos	hashtable)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cut
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayTimedeltaArrayc                   	   e Zd Zej                            dddg          d             Zd Zd Zd Z	d Z
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%&          d0f ej        g d1d(&          d2f ej        g d3d(&          d0f ej        g d4e&          d5f ej        g d6e&          d7f ej        g d8e&          d9fg          d:             Z ej                            dddg          ej                            d; ej        g d<e&           ej        d=d5ge&          f e!j        d>d0ej"        d>gd?&           e!j        d>d0gd?&          fgd@dAgB          dC                         Z#ej                            dg dD ej        g dE ej$        dF          &           ej        d5ej"        d=ge&          fd5ej"        d=d5g ej        g dE ej$        dF          &           ej        d5ej"        d=ge&          fg          dG             Z%ej                            dg dH ej        g d- ej$        dF          &           ej        d0ej"        d>gdI&          fd0ej"        d0d>g ej        g d- ej$        dF          &           ej        d0ej"        d>gej&        &          fg          dJ             Z'ej                            d e( e)g dK                     ej        g dLej*        &           e+d5d=gd5d=gdMN          f e, e)g dK                     ej        g dLej*        &           e+d5d=gd5d=gdMN          f e, e-dOdOgdPQ                     ej        d.d.gej*        &           e-dOgdPQ          fg          dR             Z.dSS )TTestFactorizesortTFc                   
 |}|                     |          \  }}t          }t          |t                    rt          j        }|                                }|j        t          j        k    r|	                    t          j
                  } ||          }t          |t                    r:|j        t          k    r*|j        t          k    r|	                    t                    }|r|                                }t          |          

fd|D             }	t          j        |	t          j                  }	t#          j        ||	           t#          j        ||d           d S )Nr#   c                 :    g | ]}                     |          S  )index).0valexpected_uniques_lists     7lib/python3.11/site-packages/pandas/tests/test_algos.py
<listcomp>z0TestFactorize.test_factorize.<locals>.<listcomp>N   s(    JJJs/55c::JJJ    dtypeTexact)	factorizer   
isinstancer   from_tuplesuniquer0   npfloat16astypefloat32boolobjectsort_valueslistasarrayintptmassert_numpy_array_equalassert_index_equal)selfindex_or_series_objr#   objresult_codesresult_uniquesconstructorexpected_arrexpected_uniquesexpected_codesr+   s             @r,   test_factorizezTestFactorize.test_factorize5   sN   !'*}}$}'?'?$nc:&& 	1$0Kzz||++'..rz::L&;|44sE""	? &$..	V##/66v>> 	>/;;== !%%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Kr.   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   rO   r   rP   r/         ?       @)
r7   arraynanr   r3   r@   r   rA   rB   rC   )rD   valuessercodesuniquesrL   rK   s          r,   +test_series_factorize_use_na_sentinel_falsez9TestFactorize.test_series_factorize_use_na_sentinel_falseT   s    1aBF+,,Vnnu==w,,,bg>>> #sBF!344
#E>:::
g'788888r.   c                 f   t          j        g dt                    }t          j        |          \  }}t          j        |t          j        g dt                               t          j        |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br_   r^   r^   cr`   r`   r/   r^   r_   r`   Tr%   )r   rO   rO   r   r   rP   rP   rP      )r   rO   rP         )re   rd   rP   rO   r         @)      @      @rU   rT           )ri   rT   rU   rh   rg   )
r7   rV   r<   r   r3   rA   rB   r@   aranger0   )rD   itemsrZ   r[   exparrs         r,   
test_basiczTestFactorize.test_basic`   s   AAAPPP//w
#GRXoooV-T-T-TUUUT:::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1r.   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   rc   rO   rP   rd   r/   Tr%   )rP   rP   rc   rd   r   rO   )r   r7   rW   infr   r3   rV   r@   rA   rB   r   rC   )rD   xrZ   r[   rl   s        r,   
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+++++r.   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
        ||           d S )Nz20130101 09:00:00.0000420130101r   r   r   rO   rO   r   r/   Tr%   )rO   rO   rO   r   r   rO   )r   r   r   r3   r7   rV   r@   rA   rB   r   rC   rD   v1v2rs   rZ   r[   rl   s          r,   test_factorize_datetime64z'TestFactorize.test_factorize_datetime64   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+++++r.   c                 @   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                     d S )	N201302Mfreq201303rw   r/   Tr%   )r   r   r   r3   r7   rV   r@   rA   rB   rC   r   rx   s          r,   test_factorize_periodz#TestFactorize.test_factorize_period   s   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'<'<=====r.   c           	      :   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1 day 1 min1 day)r   rO   r   r   rO   rO   r   r/   Tr%   )rO   r   rO   rO   r   r   rO   )
r   r   r   r3   r7   rV   r@   rA   rB   rC   rx   s          r,   test_factorize_timedeltaz&TestFactorize.test_factorize_timedelta   s   -(('""BBBB/00++wh,,,BG<<<
#E3///
g|RH'='=>>>666wh,,,BG<<<
#E3///
g|RH'='=>>>>>r.   c                    t          j        dddt           j        gd          }t          j        t          |                    }dD ]}|                    ||          }t          j        ddd|gt           j                  }t          t          |                    t          t          |                    k    sJ t          j
        t          j        |          ||k               t          j
        ||           d S )NrO   rP   Or/   )rc      )na_sentinelr   )r7   rV   rW   htObjectFactorizerlenr3   r@   setrA   rB   pdisna)rD   keyrizerr   idsexpecteds         r,   test_factorize_nanz TestFactorize.test_factorize_nan   s     h1a(444#CHH--# 	7 	7K//#;/??CxAq+ 6bgFFFHs3xx==CH$6$66666'h+6MNNN'X6666	7 	7r.   c                    t          j        g dd          }t          j        g d          }t          j        t	          |                    }|                    ||          }t          j        g dt           j                  }t          j        ||           t          j        g dd          }t          j        |j	        
                                |           d S )N)rO   rP   rd   rO   rO   r   int64r/   )FFFFFT)mask)r   rO   rP   r   r   rc   rO   rP   rd   )r7   rV   r   Int64Factorizerr   r3   r@   rA   rB   r[   to_array)rD   datar   r   resultr   rK   s          r,   test_factorizer_with_maskz'TestFactorize.test_factorizer_with_mask   s    x***':::xAAABB"3t99--D118///rw???
#FH5558IIIW===
#EM$:$:$<$<>NOOOOOr.   c                    t          j        ddddt           j        g          }t          j        t          |                    }|                    |                    t                              }t          j        g dt           j	                  }t          j        ||           t          j        g dt                    }t          j        |j                                        |           d S )NrO   rP   rd   )r   rO   rP   r   rc   r/   r   )r7   rV   rW   r   r   r   r3   r9   r<   r@   rA   rB   r[   r   )rD   r   r   r   r   rK   s         r,   test_factorizer_object_with_nanz-TestFactorize.test_factorizer_object_with_nan   s    xAq!RV,--#CII..V!4!4558,,,BG<<<
#FH5558IIIV<<<
#EM$:$:$<$<>NOOOOOr.   z&data, expected_codes, expected_uniques)rO   rO   rO   rP   r   r   r   nonsense)r   rO   rP   rO   rd   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rO   rP   rO   )r   r   r   c                 d   d}t          j        t          |          5  t          j        |          \  }}d d d            n# 1 swxY w Y   t          j        |t          j        |t          j                             t          j
        |t                    }t          j        ||           d S )N0factorize with argument that is not not a Seriesmatchr/   )rA   assert_produces_warningFutureWarningr   r3   rB   r7   rV   r@   comasarray_tuplesafer<   )rD   r   rL   rK   msgrZ   r[   expected_uniques_arrays           r,   test_factorize_tuple_listz'TestFactorize.test_factorize_tuple_list   s    $ A'SAAA 	0 	0\$//NE7	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	#E28N"'+R+R+RSSS!$!67Gv!V!V!V
#G-CDDDDDs   AA	A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     r,   r-   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>  s    666q

666r.      r/   z,'[<>]' not supported between instances of .*r   rc   Tr%   )	r7   rV   ranger<   pytestraises	TypeErrorr   r3   )rD   x17r   s      r,   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)rO   rP   rP   rO   r/   )r   rO   rO   r   rO   rP   )r7   rV   r@   r   r3   rA   rB   )rD   any_real_numpy_dtyper0   r   rL   rK   rZ   r[   s           r,   test_numeric_dtype_factorizez*TestFactorize.test_numeric_dtype_factorize  s    $xE222,,,bg>>>8QF%888..w
#E>:::
#G-=>>>>>r.   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)rT       חArT   :0yE>r   rT   r/   write)r   rO   r   rP   rO   r   )rT   r   r   )	r7   rV   float64setflagsr@   r   r3   rA   rB   rD   writabler   rL   rK   rZ   r[   s          r,   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-=>>>>>r.   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)    rO   r   r/   r   r   rO   r   r   rO   )	r7   rV   uint64r   r@   r   r3   rA   rB   r   s          r,   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-=>>>>>r.   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   r/   r   r   r   r   )	r7   rV   r   r   r@   r   r3   rA   rB   r   s          r,   test_int64_factorizez"TestFactorize.test_int64_factorize-  s    x888IIIH%%%)))27;;;8Y$9JJJ..w
#E>:::
#G-=>>>>>r.   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)r^   r`   r^   r_   r`   r/   r   )r   rO   r   rP   rO   r^   r`   r_   )	r7   rV   r<   r   r@   r   r3   rA   rB   r   s          r,   test_string_factorizez#TestFactorize.test_string_factorize7  s    x111@@@H%%%///AAA8OOO6BBB..w
#E>:::
#G-=>>>>>r.   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 )Nr^   r`   r_   r/   r   )r   rO   rc   rc   r   rP   rc   rO   r   )r7   rV   rW   r   r<   r   r@   r   r3   rA   rB   r   s          r,   test_object_factorizez#TestFactorize.test_object_factorizeA  s    xc4c3DFSSSH%%%"="="=RWMMM8OOO6BBB..w
#E>:::
#G-=>>>>>r.   c                 v   t          j        t          j        d          gd          }|                    |           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.000M8[ns]r/   r   r   z2020-01-01T00:00:00.000000000datetime64[ns])	r7   rV   
datetime64r   r@   r   r3   rA   rB   r   s          r,   test_datetime64_factorizez'TestFactorize.test_datetime64_factorizeK  s    x'@AAB(SSSH%%%1#RW5558,-5E
 
 
 d++w
#E>:::
#G-=>>>>>r.   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
   r/   r%   r   rO   Tr1   r   
RangeIndex
from_ranger   r7   rj   r@   r   r3   rA   rB   rC   )rD   r#   rir   r   s        r,   test_factorize_rangeindexz'TestFactorize.test_factorize_rangeindexX  s     ]%%eBii009Rrw///3$///
#F1Ix{;;;
fQi!DAAAA4((
#F1Ix{;;;
fQi!DAAAAAAr.   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   r/   rc   r   rO   r%   Tr1   r   )rD   r#   r   r   ri2r   s         r,   $test_factorize_rangeindex_decreasingz2TestFactorize.test_factorize_rangeindex_decreasingf  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Ar.   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)            rO   r   r/   zgot an unexpected keywordr   T)orderF)
r7   rV   r   r   r   r   r   r3   rA   r   )rD   r   s     r,   test_deprecate_orderz"TestFactorize.test_deprecate_ordery  s&    x)));;;]9,GHHH 	. 	.OD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'.. 	" 	"OD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s#   A!!A%(A% B""B&)B&r   r   u8r/   )r   rO   r   i8)__nan__foor   r<   c                     t          j        |          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )Nr   rO   r   r/   )r   r3   r7   rV   r@   rA   rB   )rD   r   rZ   r[   rK   rL   s         r,   ,test_parametrized_factorize_na_value_defaultz:TestFactorize.test_parametrized_factorize_na_value_default  sl     ..wA<)))27;;;
#E>:::
#G-=>>>>>r.   zdata, na_valuerS   r   )rO   r   rO   rP   rO   )r   rO   r   r   r   )rO   r   rO   r   )r^    r^   r_   r^   )r'   r^   rO   r'   r^   rP   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_valuerO   rd   )rc   r   rc   rO   r/   )r   factorize_arrayr7   rV   r@   rA   rB   )rD   r   r   rZ   r[   rK   rL   s          r,   $test_parametrized_factorize_na_valuez2TestFactorize.test_parametrized_factorize_na_value  sr     .thGGGwA<...@@@
#E>:::
#G-=>>>>>r.   zdata, uniques)r_   r^   Nr_   r_   rP   Int64numpy_arrayextension_array)r   c                    t          j        ||d          \  }}|r7t          j        g dt          j                  }t          j        |          }n$t          j        g dt          j                  }|}t          j        ||           t          |t          j	                  rt          j        ||           d S t          j
        ||           d S )NT)r#   rR   )rO   r   rc   rO   r/   )r   rO   rc   r   )r   r3   r7   rV   r@   	safe_sortrA   rB   r4   ndarrayassert_extension_array_equal)rD   r#   r   r[   rZ   rL   rK   s          r,   test_factorize_use_na_sentinelz,TestFactorize.test_factorize_use_na_sentinel  s      D$OOOw 	'Xmmm27CCCN$w77Xmmm27CCCN&
#E>:::dBJ'' 	G'1ABBBBB+G5EFFFFFr.   )r^   Nr_   r^   r   rO   rP   r   r@   c                     t          j        t          j        |t                    d          \  }}t          j        ||d           t          j        ||d           d S )Nr/   FrQ   T
strict_nan)r   r3   r7   rV   r<   rA   rB   rD   r   rL   rK   rZ   r[   s         r,   +test_object_factorize_use_na_sentinel_falsez9TestFactorize.test_object_factorize_use_na_sentinel_false  sk    $ HT(((%
 
 
w 	#G-=$OOOO
#E>dKKKKKKr.   )rO   NrO   rP   r   c                     d}t          j        t          |          5  t          j        |d          \  }}d d d            n# 1 swxY w Y   t          j        ||d           t          j        ||d           d S )Nr   r   FrQ   Tr   )rA   r   r   r   r3   rB   )rD   r   rL   rK   r   rZ   r[   s          r,   (test_int_factorize_use_na_sentinel_falsez6TestFactorize.test_int_factorize_use_na_sentinel_false  s    $ A'SAAA 	J 	J"_T5IIINE7	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	#G-=$OOOO
#E>dKKKKKKs   AAA)r^   r^   r_   )r   r   rO   category)
categoriesr0   2017
US/Easterntzc                     t          j        |          \  }}t          j        ||           t          j        ||           d S N)r   r3   rA   rB   rC   r  s         r,   test_factorize_mixed_valuesz)TestFactorize.test_factorize_mixed_values  sD    , ..w
#E>:::
g'788888r.   N)/__name__
__module____qualname__r   markparametrizerM   r\   rn   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   rV   r   r<   r   r   rW   r   r0   r  r   r  r   r   r@   r   r   r   r  r'   r.   r,   r"   r"   4   s       [VdE]33L L 43L<
9 
9 
9%2 %2 %2N, , , , , ,$> > >"? ? ?7 7 7	P 	P 	PP P P [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[ ...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 [0 kk///2233"'222  #sc
*UUU {{???3344"'222  #sc
*UUU }}ff%5,GGGHH!Qrw///vh<888	
 (9 9) (9 9 9r.   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d          }t	          j        |          }t          |t           j                  sJ d S )NrP   r   d   2   size)r7   randomdefault_rngintegersr   r6   r4   r   rD   rm   r   s      r,   	test_intszTestUnique.test_ints  sY    i##A&&//3R/@@c""&"*-------r.   c                     t           j                            d                              ddd                              d          }t          j        |          }t          |t           j                  sJ d S )NrP   r   r  r  r  r   )	r7   r  r  r  r9   r   r6   r4   r   r  s      r,   test_objectszTestUnique.test_objects  sg    i##A&&//3R/@@GGLLc""&"*-------r.   c                     t          j        g dt                    }t          d          D ]#}t	          t          j        |                     $d S )N)rp   rq   CDEr/     )r7   rV   r<   r   r   r   r6   )rD   lstr   s      r,   test_object_refcount_bugz#TestUnique.test_object_refcount_bug  sW    h000???t 	# 	#AS!!""""	# 	#r.   c                    t          j        t          j        d                              d          t          j        t          j        d          d          g          }|j        }|                                 |                    d          }t          j	        |          }|                                 t          j        ||           d S )Nrb   rP   )r   from_arraysr7   rj   repeattilerX   r#   r   r6   rA   assert_almost_equal)rD   mindexr   r   s       r,   test_on_index_objectzTestUnique.test_on_index_object!  s    'Yq\\  ##RWRYq\\1%=%=>
 
 =q!!6""
vx00000r.   c                 H   |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                    }|j        j        dv r2t#          |t$          t&          f          sJ t          j        |          }t          j        ||           d S )N)rO   rP   rP   rO   rP   rT   rU   r   TTFTF)rp   rq   rq   rp   rq   r/   )mr~   )rA   BYTES_DTYPESSTRING_DTYPESr
   r	   r   r   r   r   r   r6   r7   rV   r9   r<   r0   kindr4   r   r    rB   )rD   any_numpy_dtyper   r[   r   r   s         r,   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>*,,f}n&EFFFFFXf%%F
#FH55555r.   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.000000000r   r/   )r8  r9  r9  )
r7   rV   r   r   r6   rA   rB   r0   r   rX   )rD   r   dt_indexr   srm   s         r,   $test_datetime64_dtype_array_returnedz/TestUnique.test_datetime64_dtype_array_returnedT  s   8// 
 
 
   
 
 h''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------r.   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )N2000r?  2001zdatetime64[s]r/   r?  r@  r7   rV   r   r6   rA   rB   rD   r^   r   r   s       r,   test_datetime_non_nszTestUnique.test_datetime_non_nss  s\    H---_EEE18VV,ODDD
#FH55555r.   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )Nr>  ztimedelta64[s]r/   i  i  rA  rB  s       r,   test_timedelta_non_nsz TestUnique.test_timedelta_non_nsy  s]    H---5EFFF18T4L0@AAA
#FH55555r.   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]r/   )rG  rH  rG  rI  rH  )
r7   rV   r   r   r6   rA   rB   r0   r   rX   )rD   r   td_indexr   r;  rm   s         r,   %test_timedelta64_dtype_array_returnedz0TestUnique.test_timedelta64_dtype_array_returned  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~------r.   c                     t          g dt          j                  }t          j        g dt          j                  }t	          j        t          j        |          |           d S )N)rO   rP   r   r   r/   )rO   rP   r   )r   r7   r   rV   rA   rB   r   r6   )rD   r;  rl   s      r,   test_uint64_overflowzTestUnique.test_uint64_overflow  sX    '''ry999h}}}BI666
#ELOOS99999r.   c                     dt           j        ddg}t          j        t          j        |t
                              }t          j        dt           j        dgt
                    }t          j        ||           d S )Nr^   r`   r/   )r7   rW   r   r6   rV   r<   rA   rB   )rD   duplicated_itemsr   r   s       r,   test_nan_in_object_arrayz#TestUnique.test_nan_in_object_array  sh    c228$4FCCCDD8S"&#.f===
#FH55555r.   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r  orderedbaabcrV  r   namer  )
r   r>   r6   rA   assert_categorical_equalr   r   r   r   rC   )rD   r   
expected_or`   r   r;  cis          r,   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/////r.   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20160101r  r	  z2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r0   r   
2016-01-01)r   r   r   r6   r   _from_sequencer7   rV   rA   r   r   rC   r   rD   r   r   s      r,   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/////r.   c           	         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
        ||           d}t          j        t          |          5  t          j        t          d                    }d d d            n# 1 swxY w Y   t          j        g dt                    }t          j        ||           t          j        t          t          t          d                                        }t          t          d                    }t          j        ||           d S )N)rP   rO   rd   rd   )rP   rO   rd   r   r/   rP   rO   rb   ra  z2016-01-01T00:00:00.000000000r   r  r	  rb  rc  rd  z5unique with argument that is not not a Series, Index,r   aabcra   rT  )r   r6   r   rA   rB   r7   rV   r   r   r   rC   r   r   r>   r<   r   r\  )rD   r   r   r   s       r,   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///E'SAAA 	- 	-YtF||,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-8OOO6:::
#FH5556+d6ll";";<<==tE{{++
#FH55555s   "G  GGzarg ,expected)1rl  2rl  rm  r/   )r   r   c                     d}t          j        t          |          5  t          j        |          }d d d            n# 1 swxY w Y   t          j        ||           d S N-unique with argument that is not not a Seriesr   rA   r   r   r   r6   rB   )rD   argr   r   r   s        r,   test_tuple_with_stringsz"TestUnique.test_tuple_with_strings"  s     >'SAAA 	$ 	$Ys^^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
#FH55555   ?AAc                     t          j        dd gt                    }t          j        |          }t          j        dd gt                    }t          j        ||d           d S )Nr   r/   Tr   )r7   rV   r<   r   r6   rA   rB   rD   rm   r   r   s       r,   test_obj_none_preservationz%TestUnique.test_obj_none_preservation0  s]    ht}F33338UDM888
#FHFFFFFFr.   c                     t          j        ddg          }t          j        |          }t          j        dg          }t	          j        ||           d S )Ng       ri   rA  rB  s       r,   test_signed_zerozTestUnique.test_signed_zero8  sL    HdC[!!18TF##
#FH55555r.   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packr7   rV   r   r6   rW   rA   rB   )rD   NAN1NAN2r^   r   r   s         r,   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5r.   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         r~  r{  r|  r   r/   rO   )r  r  r  r7   rV   r   r6   r  )	rD   r  bits_for_nan1bits_for_nan2r  r  r^   r   result_nan_bitss	            r,   test_first_nan_keptzTestUnique.test_first_nan_keptK  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-//////r.   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 )Nr/   rP   r   rO   )r7   rV   r<   r   r6   r  )rD   unique_nulls_fixtureunique_nulls_fixture2r^   r   s        r,   test_do_not_mangle_na_valuesz'TestUnique.test_do_not_mangle_na_values\  s    #888FH*,AB&QQQ1{at+++++t,,,,,,,r.   c                     t          dt          j        dgdz  |          }t          j        |          }t          j        dt          j        dg|          }t          j        ||           d S )NrO   rP   rd   r/   )r   r   NAr6   rV   rA   r   )rD   any_numeric_ea_dtyperY   r   r   s        r,   test_unique_maskedzTestUnique.test_unique_maskedf  se    a]Q&.BCCC38QqM1EFFF
'99999r.   N)r  r  r  r  r   r'  r.  r6  r<  rC  rE  rL  rN  rQ  r_  rh  rk  r   r  r  r7   rV   r<   rs  rw  ry  r  r   r  r  r  r'   r.   r,   r  r    s       . . .. . .# # #
1 1 1#6 #6 #6J. . .>6 6 66 6 6. . .&: : :
6 6 6'0 '0 '0R50 50 50n#6 #6 #6J [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 - - -: : : : :r.   r  c                      | t           j                            d                              ddd                    }t	          j        |          }t          t	          j        |                    }||k    sJ d S )NrP   r   r      )r7   r  r  r  r   nunique_intsr   r6   )index_or_series_or_arrayrX   r   r   s       r,   test_nunique_intsr  n  sr    %%bi&;&;A&>&>&G&G2r&R&RSSF''F5<''((HX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 )NzOonly list-like objects are allowed to be passed to isin\(\), you passed a `int`r   rO   )r   r   r   r   isin)rD   r   s     r,   test_invalidzTestIsin.test_invalidw  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                    d}t          j        t          |          5  t          j        ddgdg          }d d d            n# 1 swxY w Y   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        t          |          5  t          j        ddgdg          }d d d            n# 1 swxY w Y   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        t          |          5  t          j        ddgdg          }d d d            n# 1 swxY w Y   t          j        ddg          }t          j        ||           d S )	N+isin with argument that is not not a Seriesr   rO   rP   TFr^   r_   )	rA   r   r   r   r  r7   rV   rB   r   )rD   r   r   r   s       r,   rn   zTestIsin.test_basic  s   ;'SAAA 	- 	-ZA,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-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AAA 	3 	3Zc
SE22F	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	38T5M**
#FH555FC:..u>>8T5M**
#FH555FC:..668T5M**
#FH555'SAAA 	1 	1Zc
QC00F	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	18UEN++
#FH55555s5   AA
A&HHH	L..L25L2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 )	Nrv   rd   periodsr   )TFFrP   r0  r   )
r   rX   r   r  r7   rV   rA   rB   r   r   rv  s       r,   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5r.   dtype1)rJ  r   M8[ns, UTC]	period[D]r0   )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-01rd   r  r  r#  r  UTCr   r/   )r   _values	to_periodtz_localizer   viewr9   r   r  r7   zerosshaper;   rA   rB   )rD   r0   r  dtarm   compsr   r   s           r,   +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5r.   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   rP   r/   TrO   )
r   rX   r   r  r7   r  r   r;   rA   rB   rD   r;  r   r   s       r,   
test_largezTestIsin.test_large  sw    z7===DAq1v&&8CFF$///
#FH55555r.   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   ra   rO   r   )TTFT)	r7   rV   r   r   
from_codesr   r  rA   rB   )rD   valscatsSdStr   r   s          r,   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5r.   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  )r7   rV   r   r  r   r  rA   rB   )rD   r  r  catotherr   r   s          r,   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5r.   c                 "   t           j        g}t           j        g}t          j        dg          }d}t          j        t
          |          5  t          j        ||          }d d d            n# 1 swxY w Y   t          j        ||           d S )NTr  r   )	r7   rW   rV   rA   r   r   r   r  rB   rD   r  rX   r   r   r   s         r,   test_same_nan_is_inzTestIsin.test_same_nan_is_in  s     &8TF##;'SAAA 	/ 	/Zv..F	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
#Hf55555s   A//A36A3c                 .   t          j        dd          }t           j        |d<   t          j        |t          j        t           j        dg                    }t          j        t          |          t                    }t          j
        ||           d S NrT   iAB r   rO   r/   )r7   r+  rW   r   r  rV   onesr   r;   rA   rB   r  s       r,   test_same_nan_is_in_largez"TestIsin.test_same_nan_is_in_large  sr    GC##v!Arx445573q66...
#FH55555r.   c                 f   t          j        dd          }t          |          }t           j        |d<   |                    t          j        t           j        dg                    }t          t          j        t          |          t                              }t          j
        ||           d S r  )r7   r+  r   rW   r  rV   r  r   r;   rA   assert_series_equal)rD   r;  seriesr   r   s        r,    test_same_nan_is_in_large_seriesz)TestIsin.test_same_nan_is_in_large_series  s    GC##v!RXrvqk2233"'#a&&55566
vx00000r.   c                     G d d          } |             |            }}d}t          j        t          |          5  t          j        t	          j        |g|g          t          j        dg                     t          j        t	          j        |g|g          t          j        dg                     d d d            d S # 1 swxY w Y   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'   )rD   r  s     r,   __eq__z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__  s    ur.   c                     dS )Nr   r'   )rD   s    r,   __hash__z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__!  s    qr.   N)r  r  r  r;   r  r  r'   r.   r,   LikeNanr    s>        t        r.   r  r  r   TF)rA   r   r   rB   r   r  r7   rV   )rD   r  r^   r_   r   s        r,   test_same_object_is_inzTestIsin.test_same_object_is_in  s2   	 	 	 	 	 	 	 	 wyy''))1;'SAAA 	Q 	Q'
A3(<(<bhv>N>NOOO'
A3(<(<bhw>O>OPPP		Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Q 	Qs   A;CCCc                    t          d          g}t          d          g}|d         |d         usJ t          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 )NrW   r   Tr/   )
floatr   r  r7   rV   rA   rB   r?   r<   r   )rD   r  rX   r   s       r,   r  zTestIsin.test_different_nans-  s)    u,,Qxvay(((( BHUOOV44
#BHdV$4$4f=== JuF+++RZf-M-M-M
 
 	#BHdV$4$4f=== JuBJ///F"*1U1U1U
 
 	#BHdV$4$4f=====r.   c                     ddg}dg}t          j        ddg          }d}t          j        t          |          5  t          j        ||          }d d d            n# 1 swxY w Y   t          j        ||           d S )Nss*   42Fz2isin with argument that is not not a Series, Indexr   )r7   rV   rA   r   r   r   r  rB   r  s         r,   test_no_castzTestIsin.test_no_castE  s     r
8UEN++B'SAAA 	/ 	/Zv..F	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
#Hf55555s   AA!$A!emptyr/   c                     t          ddg          }t          j        ddg          }t          j        ||          }t          j        ||           d S )Nr^   r_   F)r   r7   rV   r   r  rA   rB   )rD   r  r  r   r   s        r,   
test_emptyzTestIsin.test_emptyP  sR     c3Z  8UEN++D%((
#Hf55555r.   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 )NrW                 ?r/   )FFT)	r7   rV   rW   r  r<   r   r  rA   rB   )rD   r  r  r   r   s        r,   test_different_nan_objectsz#TestIsin.test_different_nan_objectsY  s    %"eEll;6JJJxuf555800011E4((
#Hf55555r.   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 )Nr{  r|  r}  r   r~  r/   T)
r  r  r  r7   rV   r   r   r  rA   rB   )rD   r  r  rm   lookup1r   r   lookup2s           r,   test_different_nans_as_float64z'TestIsin.test_different_nans_as_float64a  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5r.   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 1rX   rO   rP   rl  FN)r   r  rA   assert_frame_equalrD   dfr   expected_falses       r,   test_isin_int_df_string_searchz'TestIsin.test_isin_int_df_string_searchw  sZ     1a&)**#"Huen#=>>
fn55555r.   c                     t          dt          j        dgi          }|                    t          j        dgt
                              }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 NaNrX   rP   NaNr/   FN)r   r7   rW   r  rV   r<   rA   r  r  s       r,   test_isin_nan_df_string_searchz'TestIsin.test_isin_nan_df_string_search  sm     261+.//5'88899"Huen#=>>
fn55555r.   c                     t          dddgi          }|                    t          j        dgt                              }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.4245rX   gn?g#Ed@z1.4245r/   FN)r   r  r7   rV   r<   rA   r  r  s       r,    test_isin_float_df_string_searchz)TestIsin.test_isin_float_df_string_search  sl     67"34558*F;;;<<"Huen#=>>
fn55555r.   c                     t          dgt          j                  }|                    dg          }t          d          }t	          j        ||           d S )Nl   
G r/   l    
G F)r   r7   r   r  rA   r  rD   rY   r   r   s       r,   test_isin_unsigned_dtypez!TestIsin.test_isin_unsigned_dtype  sS    )*")<<<./00%==
vx00000r.   N)r  r  r  r  rn   r  r   r  r  r  r  r  r  r  r  r  r  r  r  r   r<   r7   rV   r  r  r  r  r  r  r  r'   r.   r,   r  r  v  s       
 
 
'6 '6 '6R6 6 66 [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Q Q Q,> > >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 1r.   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 ZdS )TestValueCountsc                 (   t           j                            d                              d          }t	          |d          }d}t          j        t          |          5  t          j	        |          }d d d            n# 1 swxY w Y   g d}t          j        |                              t          d                    }t          g d|d	
          }t          j        |                                |                                           d S )Ni  re   !pandas.value_counts is deprecatedr   )gV-g}?5^Ig/$ۿgףp=
?gʡE?TrX  )rO   r   rP   rO   countr(   rZ  )r7   r  r  standard_normalr   rA   r   r   r   value_countsr   from_breaksr9   CDTr   r  
sort_index)rD   rm   factorr   r   breaksr(   r   s           r,   test_value_countsz!TestValueCounts.test_value_counts  s1   i##D))99!<<S! 2'SAAA 	0 	0'//F	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0777)&1188T9J9J9JKK,,,e'BBB
v0022H4G4G4I4IJJJJJs    BBBc                 (   g d}d}t          j        t          |          5  t          j        |d          }d d d            n# 1 swxY w Y   t          dgt          j        dg          d	          }t          j        ||           t          j        t          |          5  t          j        |d
d          }d d d            n# 1 swxY w Y   t          d
d
gt          j        ddg          d	          }t          j        ||           d S )N)rO   rP   rd   re   r  r   rO   binsre   )Zd;?rg   r  r  rP   F)r  r#   )r        @)r  rg   )	rA   r   r   r   r  r   r   r5   r  )rD   r;  r   r   r   s        r,   test_value_counts_binsz&TestValueCounts.test_value_counts_bins  s   LL1'SAAA 	3 	3'222F	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3C}0,@@w
 
 
 	vx000'SAAA 	? 	?'>>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?F+\:,FGG
 
 

 	vx00000s#   AA	A	&C

CCc                    d}t          j        t          |          5  t          j        t          j        ddg                    }d d d            n# 1 swxY w Y   t          |          dk    sJ t          j        t          |          5  t          j        t          j        ddg          d          }d d d            n# 1 swxY w Y   t          |          dk    sJ t          j        t          |          5  t          j        t          g d                    }d d d            n# 1 swxY w Y   t          |          dk    sJ d}t          j
        t          |          5  t          j        t          |          5  t          j        t          j        d	dgt          
          d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr  r   rO   rT   r  )rO   rT   rl  rP   z*bins argument only works with numeric datarl  r/   )rA   r   r   r   r  r7   rV   r   r   r   r   r   r<   )rD   msg2r   r   s       r,   test_value_counts_dtypesz(TestValueCounts.test_value_counts_dtypes  s2   2'TBBB 	< 	<'!S(:(:;;F	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	< 	<6{{a'TBBB 	D 	D'!S(:(:CCCF	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D6{{a'TBBB 	? 	?'}}}(=(=>>F	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?6{{a:]9C000 	M 	M+MFFF M M"28S!HF#C#C#C!LLLLM M M M M M M M M M M M M M M	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	M 	Msk   )AAA+CC	C	 $D00D47D4-G	2G;GG	GG	GG#&G#c                    t          t          j        d          t          gd          }t	          ddg          }d}||fD ]}t          j        t          |          5  t          j	        |          }t          j	        |d	          }d d d            n# 1 swxY w Y   t          |          d
k    sJ t          |          dk    sJ t          t          d          d
id          }t          j        t          |          5  t          j        t          j	        |          |           d d d            d S # 1 swxY w Y   d S )NrI  timedelta64[ns]r/   r   z
2014-01-01r  r   FdropnarO   rP   z2014-01-01 00:00:00r  rY  )r   r7   timedelta64r   r   rA   r   r   r   r  r   r   r  )rD   tddtr   r;  vc
vc_with_naexp_dts           r,   test_value_counts_natz%TestValueCounts.test_value_counts_nat  s   R^E**C08IJJJ%.//1b 	( 	(A+MEEE A A'**"/%@@@
A A A A A A A A A A A A A A A r77a<<<<z??a'''''#8991=GLLL'SAAA 	C 	C"5#5b#9#96BBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs$   +BB	B	(D<<E E 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|d          }t          j        ||           t          t          d	t          j	        g          d
          }t          d	t          j	        gt                    }t          j        ||           d S )Ni  rO   i  ip  r/   rd   rP   rO   r  r  z
2362-01-01ignore)errors)
r   r   r  r   r<   rA   r  r   r7   rW   )rD   r;  res	exp_indexrl   s        r,   &test_value_counts_datetime_outofboundsz6TestValueCounts.test_value_counts_datetime_outofbounds  sH   q!$$q!$$q!$$q!$$q!$$q!$$	
 	
 nndAq!!8D!Q#7#7$19M9MN
 
 
	 YYYig>>>
sC((( &,!788JJJlBF+6:::
sC(((((r.   c                    t          t          t          d                              }|                                }t          g dt	          g d          d          }t          j        ||d           |j                                        }|                                }|j	                                        |_	        t          j        ||d           d S )Naaabbcr  ra   r  r  Tcheck_index_type)
r   r   r>   r  r   rA   r  r  
as_orderedr(   r  s       r,   r_  z TestValueCounts.test_categorical  s    ;tH~~..//!!II-ooo>>W
 
 
 	vx$GGGG E!!!2244
vx$GGGGGGr.   c           	         t          t          t          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          d          }t          j	        ||d	           t          t          t          d          dg d                    }t          j        |j        d<   |                                }t          g dt          g dg dd          d          }t          j	        ||d	           |                    d
          }t          g dt          dddt          j        gg dd          d          }t          j	        ||d	           d S )N
aaaaabbbccrO   )re   rd   rP   ra   r[  r  r  Tr!  Fr  )re   rd   rP   rO   r^   r_   r`   )r_   r^   r`   )rV  r  rU  )
r   r   r>   r7   rW   ilocr  r   rA   r  r  s       r,   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--LL 0#sC1H I IPW
 
 
 	vx$GGGG \**D___UUU
 
 Fq	!!II"*??  
 
 
 
 	vx$GGGGu--LL"c3'OOOT   
 
 
 	vx$GGGGGGr.   c           	      4   t          t          t          d          t          d          d                    }|                                }t          g dt          g dt          d          d          d          }t	          j        ||d	           d S )
NbbbaacabcdTrU  )rd   rP   rO   r   )r_   r^   r`   r{  r  r  r!  )r   r   r>   r  rA   r  r  s       r,   test_categorical_zeroesz'TestValueCounts.test_categorical_zeroes1  s    ;tH~~$v,,PTUUUVV!!LL$$$ft   
 
 
 	vx$GGGGGGr.   c           
      6   t          j        t          g d                              d          t          ddgddgd                     t          j        t          g d                              d          t          ddgddgd                     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
                    d                     t          j        t          dgd
z  dgd	z  z   d gdz  z                                 d          t          g dg dd                     t          j        t          g d                              d          t          ddgddgd                     t          j        t          g d                              d          t          ddgddgd                     t          j        t          g d                              d          t          ddgddgd                     t          g d                              d          }t          g dg dd          }t          j        ||           d S )Nr0  Tr  rP   rO   Fr  r  rd   rb   r/   )rb   rd   rP   )TFN)皙$@rf   rf   rf   r-  )r-  rf   rf   N)r-  r-  rf   rf   rf   Nr  )rf   r-  N)rA   r  r   r  r   r<   rg  s      r,   test_value_counts_dropnaz(TestValueCounts.test_value_counts_dropna>  s    	&&&''44D4AAAq6$W===	
 	
 	
 	&&&''44E4BBAq6$W===	
 	
 	

 	D6A:!+tfqj899FFdFSSAq6e}F!C!C!C'RRR	
 	
 	
 	D6A:!+tfqj899FFeFTT999$7$7$7gFFF	
 	
 	
 	###$$111>>Aq6#t7;;;	
 	
 	
 	###$$111??Aq6#t7;;;	
 	
 	

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

 999::GGuGUU)))+<+<+<7KKK
vx00000r.   r0   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|          d          }t          j        ||           |                    dd          }t          ddgt          d	d
g|          d          }t          j        ||           d S )NrO   rP   rd   rb   TF)	normalizer  )g      ?g333333?g?rU   rT   r/   
proportionr  g333333?g?)r   r7   rW   r9   r  rA   r  )rD   r0   r;  s_typedr   r   s         r,   test_value_counts_normalizedz,TestValueCounts.test_value_counts_normalizedd  s    A37aS1W$x!|344((5//%%U%CCOO"&#s+5999
 
 

 	vx000%%T%BB#Jfc3Zu===L
 
 
 	vx00000r.   c                 J   t          j        dgt           j                  }t          dgdgd          }d}t	          j        t          |          5  t          j        |          }d d d            n# 1 swxY w Y   t	          j	        ||           t          j        ddgt                    }t          ddgddgd          }t	          j        t          |          5  t          j        |          }d d d            n# 1 swxY w Y   t	          j	        ||           d S )	Nr   r/   rO   r  r  r  r   rc   )r7   rV   r   r   rA   r   r   r   r  r  r<   )rD   rm   r   r   r   s        r,   test_value_counts_uint64z(TestValueCounts.test_value_counts_uint64w  s   hwbi0001#eW7;;;1'SAAA 	- 	-',,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	vx000hE{&1111a&U'BBB'SAAA 	- 	-',,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	vx00000s$   A44A8;A8"DD
Dc                    t          j        dddddt           j        g          }t          |                              d          }t          g dt          j        g dd	          d
          }t          j        ||           d S )Nrd   rO   rP   re   r  )rP   rP   rO   ))r  rU   )rU   rh   )rh   rg   zinterval[float64, right]r/   r  r  )	r7   rV   rW   r   r  r   r5   rA   r  )rD   rX   r   r   s       r,   test_value_counts_seriesz(TestValueCounts.test_value_counts_series  s    1aAq"&122,,!,44II+666>X   
 
 
 	vx00000r.   N)r  r  r  r  r	  r  r  r  r_  r'  r+  r.  r   r  r  r7   r   r<   r3  r5  r7  r'   r.   r,   r  r    s       K K K1 1 1&M M M&C C C$) ) )4H H H)H )H )HVH H H$1 $1 $1L [Wrz68&DEE1 1 FE1$1 1 1 1 1 1 1 1r.   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   rO   rP   r/   )FFFTFTfirstkeeplast)TFTFFFF)TFTTFT   re   T)r7   rV   rW   r<   r   
duplicatedrA   rB   r  	enumeratezip)rD   keysr   r   r   tfalsestruess           r,   test_duplicated_with_nasz'TestDuplicated.test_duplicated_with_nas  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5r.   case)
rO   rP   rO   rb   rd   rP   re   rO   rb      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @rJ        @      @y      @      @rK  y      @      @rJ  rL  y      @      @)
r^   r_   r^   er`   r_   r{  r^   rM  fr/   )
rO   r   rO      r   r   '   rO   rO     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>  Fr  r/   )	r7   rV   r   r@  rA   rB   r   r   r  )
rD   rH  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr;  s
             r,   test_numeric_object_likesz(TestDuplicated.test_numeric_object_likes  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r.   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-02r^  r   
2011-01-03r_  z
2011-01-04r^  r   z
2011-01-06)
1 days2 daysra  r   z3 daysrb  z4 daysra  r   z6 daysc                 ,    g | ]}t          |          S r'   r   r)   r{  s     r,   r-   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>      ///qill///r.   c                 0    g | ]}t          |d           S )r  r	  rd  re  s     r,   r-   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    @@@il333@@@r.   c                 0    g | ]}t          |d           S )r#  r   )r   re  s     r,   r-   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    666afQS)))666r.   c                 6    g | ]}t          j        |          S r'   )r7   r   re  s     r,   r-   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s"    3331bmA&&333r.   c                 ,    g | ]}t          |          S r'   )r   re  s     r,   r-   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  rf  r.   rS  rT  r;  r<  r>  Fr  r/   )
r7   rV   r   r@  rA   rB   r   r<   r   r  )rD   r  r  casesrU  rV  rW  rH  rX  rY  rZ  r[  r;  s                r,   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r.   r   r   rd   c                     |j         du sJ t          j        |                                t	          j        g d                     d S )NT)FFF)	is_uniquerA   rB   r@  r7   rV   )rD   rH  s     r,   test_unique_indexz TestDuplicated.test_unique_indexP  sI    ~%%%%
#DOO$5$5rx@U@U@U7V7VWWWWWr.   zarr, uniques)r   r   rO   rO   r   r   r   rp  rq  r   )r   rp  rq  r   )r_   r`   r^   r_   rs  rr  rr  rs  )r   r_   rP   r^   rd   r   )r   rt  ru  c                     t          j        t          |          t                    }||d d <   d}t	          j        t          |          5  t          j        |          }d d d            n# 1 swxY w Y   t	          j	        ||           d S )Nr/   rp  r   )
r7   r  r   r<   rA   r   r   r   r6   rB   )rD   rm   r[   r   r   r   s         r,   test_unique_tuplesz!TestDuplicated.test_unique_tuplesU  s      8CLL777='SAAA 	$ 	$Ys^^F	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
#FH55555s   A..A25A2zarray,expected)rJ  r   rO   r        ?       @rx  )rJ  y                y      ?        r  rx  c                     d}t          j        t          |          5  t          j        |          }d d d            n# 1 swxY w Y   t          j        ||           d S ro  rq  )rD   rV   r   r   r   s        r,   test_unique_complex_numbersz*TestDuplicated.test_unique_complex_numbersm  s     >'SAAA 	& 	&Yu%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
#FH55555rt  N)r  r  r  rG  r   r  r  r7   rV   rW   r<   r   r\  rl  r   r   r   ro  rw  rz  r'   r.   r,   r9  r9    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PE PE PEd [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 6r.   r9  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%      rd   Tfracreplacedropr   r;  r<  )return_inverse)getattrrA   r   r   Float64HashTabler7   rW   locPyObjectHashTabler   samplereset_indexrX   r   drop_duplicatesr6   rB   )rD   htabletm_dtyper   makerr;  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrs              r,   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Br.   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 )Nr  r   r%  r  r  rd   Tr  r  r   )r  rA   r   r   r  r7   rW   r  r  r   r  r  rX   r   r   r3   r  r  rB   )rD   r  r  r   r  r;  r  na_maskr  r  r  result_reconstructexpected_reconstructs                r,   test_hashtable_factorizez&TestHashTable.test_hashtable_factorize  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Mr.   N)r  r  r  r   r  r  r   r  StringHashTabler  Int64HashTableUInt64HashTabler  r  r'   r.   r,   r|  r|    s        [!8,* '*&(	
	 	C C	 	C< [!8,* '*&(	
	 	N N	 	N N Nr.   r|  c                      e Zd Z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 )TestRankrm   rf   rO   rP   rd   rg   c                 `   t          j        d          }t          j        |          }t          j        |           }|                                }t          j        |          }t          j        ||<   |	                    |          }t          j
        ||<   t          j        ||           d S )Nzscipy.stats)r   importorskipr7   rV   isfinitecopylibalgosrank_1drr   rankdatarW   rA   r,  )rD   rm   sp_statsr   r   rl   s         r,   test_scipy_compatzTestRank.test_scipy_compat  s     &}55hsmmC   hhjj!#&&FD	$$FD	
vs+++++r.   r0   
AllIntegerc                    t          j        ddgt           j                  }t          j        ddg|          }|                    |           t	          |          }t          j        |          }t          j        ||           d S )NrO   rP   r/   r  r   )	r7   rV   r   r   r   r   rankrA   rB   )rD   r   r0   rl   r   rY   r   s          r,   rn   zTestRank.test_basic  sy    h1vRZ000xC...H%%%TllC
#FC00000r.   c                     t          j        ddgt           j                  }t          ddg|          }t	          j        t          j        |          |           d S )NrO   rP   r/   r   )r7   rV   r   r   rA   rB   r   r  )rD   r0   rl   r;  s       r,   rN  zTestRank.test_uint64_overflow  sS    h1vRZ000Au:U+++
#EJqMM377777r.   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   )re   rb   rI  )rQ  r?  	   z%Array with ndim > 2 are not supportedr   )r7   rV   r   r   r   r   r  )rD   rm   r   s      r,   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)pctrO   i  rP   )r7   rj   r   r  maxreshape)rD   rX   r   s      r,   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{{{{{{r.   N)r  r  r  r   r  r  r7   rW   r  	typecodesrn   r   r   rN  r  
single_cpur  r'   r.   r,   r  r    s%       [VRVS#sBFAq!RVD"&#sCAsBFC	
 , , , [Wbl<&@AA1 1 BA1 [Wrz29&=>>8 8 ?>8   [    r.   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   r/   i        r<   rc   )	r7   rV   r   r  padr@   rA   rB   backfill)oldnewr   r   s       r,   !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1r.   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rO   rb   r   r  int64_t)r   r   rO   rO   rO   rO   rP   rP   rP   rP   rP   rc   r/   rO   re   rb   r   rc   rc   rc   rc   rc   )r   r>   r   r  r  rX   r7   rV   r@   rA   rB   rD   r  r  fillerexpect_fillers        r,   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:::::r.   c                 f   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                            }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           d S )	Nr  r  r  )rc   r   r   r   r   rO   rO   rO   rO   rO   rP   rP   r/   rb   r   r  )r   r>   r   r  r  rX   r7   rV   r@   rA   rB   rj   r   r  s        r,   test_padzTestTseriesUtil.test_pad1  s    JJJDrOO$$i(SZ@@!F!F!FbgVVV
#FM::: QGnnBIarx00011i(SZ@@!5!5!5RWEEE
#FM:::::r.   N)r  r  r  r  r  r'   r.   r,   r  r    s2        ; ; ;"; ; ; ; ;r.   r  c                     t          j        dgdz  dgdz  z   dgdz  z   dgdz  z   d          t          j        t          t          d                    d d d	         d
z  d          g} t	          j        |           rJ d S )Nrd       rP   rO   r   r   r/   r  rc   re   )r7   rV   r>   r   r  is_lexsorted)failures    r,   test_is_lexsortedr  B  s    
S2X1#(#sRx0QC"H=	
 	
 	
 	rOODDbD!A%	
 	
 	
	G $W-------r.   c                     t           j                            d                              ddd                              t           j                  } t           j                            d                              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 )NrP   r   r%  r  	mergesort)r4  i@B )r7   r  r  r  r9   r@   r  groupsort_indexerargsortrA   rB   lexsort)r^   r_   r   r   r   s        r,   test_groupsort_indexerr  Q  s(   
	a  ))!T377>>rwGGA
	a  ))!T377>>rwGGA'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1r.   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}Ô%ITrr   c              3   $   K   | ]
}|k    V  d S r  r'   r)   rs   Infs     r,   	<genexpr>z%test_infinity_sort.<locals>.<genexpr>u  s'      **Asax******r.   c              3   ,   K   | ]}|k    p|u V  d S r  r'   r  s     r,   r  z%test_infinity_sort.<locals>.<genexpr>v  s0      55qsQw"!s(555555r.   c              3   $   K   | ]
}|k    V  d S r  r'   r)   rs   NegInfs     r,   r  z%test_infinity_sort.<locals>.<genexpr>|  s'      --qv{------r.   c              3   ,   K   | ]}|k     p|u V  d S r  r'   r  s     r,   r  z%test_infinity_sort.<locals>.<genexpr>}  s0      ;;Qvz(Q&[;;;;;;r.   r  )
r  InfinityNegInfinityr  allr   sortedr7   rV   r  )ref_numspermr  r  s     @@r,   test_infinity_sortr  j  s_    


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!!X%9%;%;;;;;#%%)=)?)?????X&& ( (d||x''''' Hh!!"R'((00222Hh"$$%*++3355555r.   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 r  )r  r  r  r7   rW   )r  r  s     r,   test_infinity_against_nanr    s    



C!##FRV||||bf}}}}RV||||bf}}}}bf}}}}"&====RVr.   c                  z    t          j        dt           j                  } t          j        |           }|| u sJ d S )Nr  r/   )r7   rj   r@   r  ensure_platform_int)rm   r   s     r,   test_ensure_platform_intr    s9    
)Crw
'
'
'C)#..FS======r.   c            
         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          j
        ||g          t          j
        t           j        |g                     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 additionr   FT)arr_mask)b_mask)r  r  )r7   iinfor   r  minr   r   OverflowErrorr   checked_add_with_arrrV   rW   )r   r1  ns      r,   test_int64_add_overflowr    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 L L"28QF#3#3RXrvqk5J5JKKKL L L L L L L L L L L L L L L 

!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AQ''Q+.Q+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        t          j	        g                     |j
                   d S )Nr/   )r0   r(   )r   r7   r   r   intrA   rB   r   moderV   rX   rD   rl   s     r,   test_no_modezTestMode.test_no_mode  sR    Rrzr1E1E1EFFF
#EJrx||$<$<cjIIIIIr.   r  r  r~  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 )NrO   r/   r   rA   rB   r   r  rX   r  rD   r  
exp_singledata_single	exp_multi
data_multirY   rl   s           r,   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/////r.   c                 (   t          dgt                    }t          j        t	          j        |j                  |j                   t          g dt                    }t          j        t	          j        |j                  |j                   d S )NrO   r/   ra   )r   r  rA   rB   r   r  rX   r<   r  s     r,   test_mode_obj_intzTestMode.test_mode_obj_int  st    aS$$$
#EJsz$:$:CJGGG___F333
#EJsz$:$:CJGGGGGr.   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 )NrO   rb   rP   rd   r/   r  r  s           r,   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/////r.   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 )Nr_   r^   rP   rd   r`   r/   r  )rD   rl   r   rY   s       r,   test_strobj_modezTestMode.test_strobj_mode	  s    euqyC519$T%%%S$$$
#EJsz$:$:CJGGG
sxxzz3/////r.   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   rP   rd   r/   r  )rD   r  rl   r   rY   s        r,   test_strobj_multi_charzTestMode.test_strobj_multi_char  s    gw{eWq[(T$$$S###
#EJsz$:$:CJGGG
sxxzz3/////r.   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-03r`  
2013-01-02r   r/   )r`  r  r  r`  r  )r`  r  r  r`  r  r   rA   r   r   r  rX   r  r  rD   rl   rY   s      r,   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/////r.   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 daysra  r  r/   )ra  r  r  2 minr   r   r   z-1 dayz-1 day 2 minr  r  r  r  s      r,   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/////r.   c                    t          dgt                    }t          g d          }t          j        t	          j        |j                  |j                   t          j        |                                |           d S )Nr   r/   )rO   r   r   )r   r<   rA   rB   r   r  rX   r  r  s      r,   test_mixed_dtypezTestMode.test_mixed_dtype8  sl    eWF+++&&&''
#EJsz$:$:CJGGG
sxxzz3/////r.   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   r/   )rO   r   r   rO   )	r   r7   r   rA   rB   r   r  rX   r  r  s      r,   rN  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/////r.   c                 $   t          ddg          }|}t          |                                          j        }t	          j        ||           t          g d          }t          dgddg          }t          |                                          j        }t	          j        ||           t          g d          }t          ddgg d          }t          |                                          j        }t	          j        ||           d S )	NrO   rP   rO   r^   r^   r^   r[  rO   rO   rP   rd   rd   rd   r   )r   r   r  r  rA   r\  )rD   r`   rl   r  s       r,   r_  zTestMode.test_categoricalI  s    AQiinn&
#C---&&3%QH555Qiinn&
#C---((1a&YYY777Qiinn&
#C-----r.   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   r/   r"  r^   r#  rO   rd   r  r  TimedeltaIndexr   )r   r   r7   r   rA   rB   r   r  rX   r<   r   r   AttributeError)rD   r[  rl   s      r,   
test_indexzTestMode.test_indexY  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)rO   rO   rd   r   rY  rO   )r   r  rA   r  r  s       r,   test_ser_mode_with_namez TestMode.test_ser_mode_with_namen  sR    YYYU+++1#E***
vx00000r.   N)r  r  r  r   r   r  r  r7   r  r  r
  r  r  strr<   r  r  r  r  rN  r_  r'  r)  r'   r.   r,   r  r    sf       J J J [T2<#=W@U#UVV0 0 WV0$H H H [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 1r.   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 )
TestDiffr0   r   rJ  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  rd   re   r   nsrP   rO   r   axisr  r/   )r7   rj   r9   r   r  r  r0   typer   diffr  r  r  rA   rB   TrD   r0   rm   r   r   s        r,   test_diff_datetimelike_natz#TestDiff.test_diff_datetimelike_natw  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7r.   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 )	Nre  rd   z
US/Pacific)r  r
  z#cannot diff DatetimeArray on axis=1r   rO   r/  )r   _datar   r   
ValueErrorr   r2  )rD   r  r   s      r,   test_diff_ea_axiszTestDiff.test_diff_ea_axis  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   rO   rO   r   r   r/   rO   r   rc   r:   )r7   rV   r   r2  rW   rA   rB   r4  s        r,   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5r.   N)	r  r  r  r   r  r  r5  r9  r=  r'   r.   r,   r,  r,  v  s        [Wx&:;;8 8 <;8' ' ' [Wvw&7886 6 986 6 6r.   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)rd   rO   rd   re   )rP   rd   rO   rO   )rd   rd   rO   rO   re   rP   )r4   r7   r   r   union_with_duplicatesrA   rB   r   )r>  lvalsrvalsr   r   s        r,   test_union_with_duplicatesrC    s     B|||EB|||Er$$$%%H(BJ'' :,UE::
#FH55555,UE::
'99999r.   )Kr   	itertoolsr   r  numpyr7   r   pandas._libsr   r  r   r   pandas.core.dtypes.commonr   r   r	   r
   r   pandas.core.dtypes.dtypesr   r  pandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingrA   pandas.core.algorithmscore
algorithmspandas.core.arraysr   r    pandas.core.commoncommonr   r"   r  r  r  r  r9  r|  r  r  r  r  r  r  r  r  r  r  r,  r  r  rV   rC  r'   r.   r,   <module>rR     s         " " " " " "             
              > = = = = =                                           (       & & & & & & & & &        !                X9 X9 X9 X9 X9 X9 X9 X9v\: \: \: \: \: \: \: \:~
  ^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1B	{1 {1 {1 {1 {1 {1 {1 {1|g6 g6 g6 g6 g6 g6 g6 g6TON ON ON ON ON ON ON ONd6 6 6 6 6 6 6 6r2 2 2* ;  ;  ;  ;  ;  ;  ;  ;F. . .2 2 226 6 6B  &  0 0 0f[1 [1 [1 [1 [1 [1 [1 [1|6 6 6 6 6 6 6 6@ "(344
: 
: 54
: 
: 
:r.   