
    bMh3                    V   d dl m Z  d dlZd dlZd dlZd dlm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.m/Z/m0Z0 d dl1m,c m2Z3  G d	 d
          Z4 G d d          Z5d Z6 G d d          Z7 G d d          Z8 G d d          Z9 G d d          Z: G d d          Z; G d d          Z< G d d          Z=ej>        ?                    dej@        ej@        g          d             ZAdS )    )datetimeN)using_string_dtype)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d Zej                             e            dd          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 d0d()          d1f ej         g d2d()          d3f ej         g d4d+)          d5f ej         g d6d+)          d3f ej         g d7e")          d8f ej         g d9e")          d:f ej         g d;e")          d<fg          d=             Z#ej                            dddg          ej                            d> ej         g d?e")           ej         d@d8ge")          f e$j         dAd3ej%        dAgdB)           e$j         dAd3gdB)          fgdCdDgE          dF                         Z&ej                            dg dG ej         g dH ej'        dI          )           ej         d8ej%        d@ge")          fd8ej%        d@d8g ej         g dH ej'        dI          )           ej         d8ej%        d@ge")          fg          dJ             Z(ej                            dg dK ej         g d0 ej'        dI          )           ej         d3ej%        dAgdL)          fd3ej%        d3dAg ej         g d0 ej'        dI          )           ej         d3ej%        dAgej)        )          fg          dM             Z*ej                            d e+ e,g dN                     ej         g dOej-        )           e.d8d@gd8d@gdPQ          f e/ e,g dN                     ej         g dOej-        )           e.d8d@gd8d@gdPQ          f e/ e0dRdRgdST                     ej         d1d1gej-        )           e0dRgdST          fg          dU             Z1dV Z2dWS )XTestFactorizec                 x   g d}d}t          j        t          |          5  t          j        |          \  }}d d d            n# 1 swxY w Y   t          j        g dt
          j                  }t          j        ||           t          j        g dt                    }t          j        ||           d S )N)             @      ?0factorize with argument that is not not a Seriesmatch)r   r$   r%   dtype)      ?        y       @        r&   )
tmassert_produces_warningFutureWarningr   	factorizenparrayintpassert_numpy_array_equalobject)selfr2   msglabelsuniquesexpected_labelsexpected_uniquess          W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/test_algos.pytest_factorize_complexz$TestFactorize.test_factorize_complex6   s    @'SAAA 	5 	5#oe44OFG	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 (999BG<<<
#FO<<< 8$B$B$B&QQQ
#G-=>>>>>s   AA
A
zTODO(infer_string)F)reasonstrictsortTc                   
 |}|                     |          \  }}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     r<   
<listcomp>z0TestFactorize.test_factorize.<locals>.<listcomp>^   s(    JJJs/55c::JJJ    r*   Texact)r0   r   
isinstancer   from_tuplesuniquer+   r1   float16astypefloat32boolr5   sort_valueslistasarrayr3   r-   r4   assert_index_equal)r6   index_or_series_objr@   objresult_codesresult_uniquesconstructorexpected_arrr;   expected_codesrH   s             @r<   test_factorizezTestFactorize.test_factorizeD   sP    "'*}}$}'?'?$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KrJ   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 )	Nr$   r%   Fuse_na_sentinelr   r$   r   r%   r*         ?       @)
r1   r2   nanr   r0   r3   r   r-   r4   rW   )r6   valuessercodesr9   r^   r;   s          r<   +test_series_factorize_use_na_sentinel_falsez9TestFactorize.test_series_factorize_use_na_sentinel_falsed   s    1aBF+,,Vnnu==w,,,bg>>> #sBF!344
#E>:::
g'788888rJ   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brm   rl   rl   crn   rn   r*   rl   rm   rn   TrB   )r   r$   r$   r   r   r%   r%   r%      )r   r$   r%         )rs   rr   r%   r$   r         @)      @      @re   rd           )rw   rd   re   rv   ru   )
r1   r2   r5   r   r0   r-   r4   r3   aranger+   )r6   itemsri   r9   exparrs         r<   
test_basiczTestFactorize.test_basicp   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1rJ   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   rq   r$   r%   rr   r*   TrB   )r%   r%   rq   rr   r   r$   )r   r1   rf   infr   r0   r2   r3   r-   r4   r   rW   )r6   xri   r9   rz   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+++++rJ   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   r$   r$   r   r*   TrB   )r$   r$   r$   r   r   r$   )r   r   r   r0   r1   r2   r3   r-   r4   r   rW   r6   v1v2r   ri   r9   rz   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+++++rJ   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201303r   r*   TrB   )r   r   r   r0   r1   r2   r3   r-   r4   rW   r   r   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'<'<=====rJ   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   r$   r   r   r$   r$   r   r*   TrB   )r$   r   r$   r$   r   r   r$   )
r   r   r   r0   r1   r2   r3   r-   r4   rW   r   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'='=>>>>>rJ   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 )Nr$   r%   Or*   )rq      )na_sentinelr   )r1   r2   rf   htObjectFactorizerlenr0   r3   setr-   r4   pdisna)r6   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 	7rJ   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)r$   r%   rr   r$   r$   r   int64r*   )FFFFFT)mask)r   r$   r%   r   r   rq   r$   r%   rr   )r1   r2   r   Int64Factorizerr   r0   r3   r-   r4   r9   to_array)r6   datar   r   resultr   r;   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OrJ   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 )Nr$   r%   rr   )r   r$   r%   r   rq   r*   r   )r1   r2   rf   r   r   r   r0   rQ   r5   r3   r-   r4   r9   r   )r6   r   r   r   r   r;   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OrJ   z&data, expected_codes, expected_uniques)r$   r$   r$   r%   r   r   r   nonsense)r   r$   r%   r$   rr   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r$   r%   r$   )r   r   r   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 )Nr'   r(   r*   )r-   r.   r/   r   r0   r4   r1   r2   r3   comasarray_tuplesafer5   )r6   r   r^   r;   r7   ri   r9   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 rD   )complexrF   is     r<   rI   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>  s    666q

666rJ      r*   z,'[<>]' not supported between instances of .*r(   rq   TrB   )	r1   r2   ranger5   pytestraises	TypeErrorr   r0   )r6   x17r7   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)r$   r%   r%   r$   r*   )r   r$   r$   r   r$   r%   )r1   r2   r3   r   r0   r-   r4   )r6   any_real_numpy_dtyper+   r   r^   r;   ri   r9   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-=>>>>>rJ   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)rd       חArd   :0yE>r   rd   r*   write)r   r$   r   r%   r$   r   )rd   r   r   )	r1   r2   float64setflagsr3   r   r0   r-   r4   r6   writabler   r^   r;   ri   r9   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-=>>>>>rJ   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$   r   r   r$   )	r1   r2   uint64r   r3   r   r0   r-   r4   r   s          r<   test_uint64_factorizez#TestFactorize.test_uint64_factorize3  s    x111CCCH%%%)))27;;;8YN")DDD..w
#E>:::
#G-=>>>>>rJ   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   )	r1   r2   r   r   r3   r   r0   r-   r4   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-=>>>>>rJ   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)rl   rn   rl   rm   rn   r*   r   )r   r$   r   r%   r$   rl   rn   rm   )	r1   r2   r5   r   r3   r   r0   r-   r4   r   s          r<   test_string_factorizez#TestFactorize.test_string_factorizeG  s    x111@@@H%%%///AAA8OOO6BBB..w
#E>:::
#G-=>>>>>rJ   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 )Nrl   rn   rm   r*   r   )r   r$   rq   rq   r   r%   rq   r$   r   )r1   r2   rf   r   r5   r   r3   r   r0   r-   r4   r   s          r<   test_object_factorizez#TestFactorize.test_object_factorizeQ  s    xc4c3DFSSSH%%%"="="=RWMMM8OOO6BBB..w
#E>:::
#G-=>>>>>rJ   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.000000000zdatetime64[ns])	r1   r2   
datetime64r   r3   r   r0   r-   r4   r   s          r<   test_datetime64_factorizez'TestFactorize.test_datetime64_factorize[  s    x'@AAB(SSSH%%%1#RW5558,-5E
 
 
 d++w
#E>:::
#G-=>>>>>rJ   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*   rB   r   r$   TrK   r   
RangeIndex
from_ranger   r1   rx   r3   r   r0   r-   r4   rW   )r6   r@   rir   r   s        r<   test_factorize_rangeindexz'TestFactorize.test_factorize_rangeindexh  s     ]%%eBii009Rrw///3$///
#F1Ix{;;;
fQi!DAAAA4((
#F1Ix{;;;
fQi!DAAAAAArJ   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*   rq   r   r$   rB   TrK   r   )r6   r@   r   r   ri2r   s         r<   $test_factorize_rangeindex_decreasingz2TestFactorize.test_factorize_rangeindex_decreasingv  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ArJ   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)            r$   r   r*   zgot an unexpected keywordr(   T)orderF)
r1   r2   r   r   r   r   r   r0   r-   r.   )r6   r   s     r<   test_deprecate_orderz"TestFactorize.test_deprecate_order  s&    x)));;;]9,GHHH 	. 	.OD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'.. 	" 	"OD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s#   A!!A%(A% B""B&)B&r   r   u8r*   )r   r$   r   i8)__nan__foor   r5   c                     t          j        |          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )Nr   r$   r   r*   )r   r0   r1   r2   r3   r-   r4   )r6   r   ri   r9   r;   r^   s         r<   ,test_parametrized_factorize_na_value_defaultz:TestFactorize.test_parametrized_factorize_na_value_default  sl     ..wA<)))27;;;
#E>:::
#G-=>>>>>rJ   zdata, na_valuerc   r   )r$   r   r$   r%   r$   )r   r$   r   r   r   )r$   r   r$   r   )rl    rl   rm   rl   )rD   rl   r$   rD   rl   r%   rD   )r   rD   r   r   r   c                     t          j        ||          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )N)na_valuer$   rr   )rq   r   rq   r$   r*   )r   factorize_arrayr1   r2   r3   r-   r4   )r6   r   r   ri   r9   r;   r^   s          r<   $test_parametrized_factorize_na_valuez2TestFactorize.test_parametrized_factorize_na_value  sr     .thGGGwA<...@@@
#E>:::
#G-=>>>>>rJ   zdata, uniques)rm   rl   Nrm   rm   r%   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@   rb   )r$   r   rq   r$   r*   )r   r$   rq   r   )r   r0   r1   r2   r3   	safe_sortr-   r4   rM   ndarrayassert_extension_array_equal)r6   r@   r   r9   ri   r^   r;   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FrJ   )rl   Nrm   rl   r   r$   r%   r   r3   c                     t          j        t          j        |t                    d          \  }}t          j        ||d           t          j        ||d           d S )Nr*   Fra   T
strict_nan)r   r0   r1   r2   r5   r-   r4   r6   r   r^   r;   ri   r9   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KrJ   )r$   Nr$   r%   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(   Fra   Tr  )r-   r.   r/   r   r0   r4   )r6   r   r^   r;   r7   ri   r9   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)rl   rl   rm   )r   r   r$   category)
categoriesr+   2017
US/Easterntzc                     t          j        |          \  }}t          j        ||           t          j        ||           d S )N)r   r0   r-   r4   rW   r	  s         r<   test_factorize_mixed_valuesz)TestFactorize.test_factorize_mixed_values  sD    , ..w
#E>:::
g'788888rJ   c                    t          dt          j        dg                              |          }t          dt          j        dg                              |          }t	          j        ||          }|                                \  }}|j        d| dk    sJ t          d                              |          }t	          j        ||z
  ||z
            }|                                \  }	}
|
j        d| dk    sJ t	          j        |	                    d	          |	                    d	                    }|                                \  }}|j        d| d
k    sJ d S )N
2016-01-01z
2015-10-11z
2016-01-02z
2015-10-15zinterval[datetime64[z	], right]r   zinterval[timedelta64[
US/Pacificz, US/Pacific], right])
r   r1   rf   as_unitr   from_arraysr0   r+   r   tz_localize)r6   unitleftrightidxri   catstsidx2codes2cats2idx3codes3cats3s                 r<    test_factorize_interval_non_nanoz.TestFactorize.test_factorize_interval_non_nano  s^   lBFLABBJJ4PP|RV\BCCKKDQQ'e44mmootzCDCCCCCCCq\\!!$''(EBJ??(({EdEEEEEEE(\**E,=,=l,K,K
 
 (({PTPPPPPPPPPrJ   N)3__name__
__module____qualname__r=   r   markxfailr   parametrizer_   rj   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r2   r   r5   r   r   rf   r  r+   r
  r   r  r   r   r3   r   r   r   r  r'  rD   rJ   r<   r"   r"   5   s0       ? ? ? [))++4HQVWW[VdE]33L L 43 XW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Q Q Q Q QrJ   r"   c            	       |   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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 )Nr%   r   d   2   size)r1   randomdefault_rngintegersr   rO   rM   r  r6   r{   r   s      r<   	test_intszTestUnique.test_ints3  sY    i##A&&//3R/@@c""&"*-------rJ   c                     t           j                            d                              ddd                              d          }t          j        |          }t          |t           j                  sJ d S )Nr%   r   r1  r2  r3  r   )	r1   r5  r6  r7  rQ   r   rO   rM   r  r8  s      r<   test_objectszTestUnique.test_objects9  sg    i##A&&//3R/@@GGLLc""&"*-------rJ   c                     t          j        g dt                    }t          d          D ]#}t	          t          j        |                     $d S )N)r~   r   CDEr*     )r1   r2   r5   r   r   r   rO   )r6   lstr   s      r<   test_object_refcount_bugz#TestUnique.test_object_refcount_bug?  sW    h000???t 	# 	#AS!!""""	# 	#rJ   c                    t          j        t          j        d                              d          t          j        t          j        d          d          g          }|j        }|                                 |                    d          }t          j	        |          }|                                 t          j        ||           d S )Nrp   r%   )r   r  r1   rx   repeattilerg   r@   r   rO   r-   assert_almost_equal)r6   mindexr   r   s       r<   test_on_index_objectzTestUnique.test_on_index_objectD  s    'Yq\\  ##RWRYq\\1%=%=>
 
 =q!!6""
vx00000rJ   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)r$   r%   r%   r$   r%   rd   re   r   TTFTF)r~   r   r   r~   r   r*   )mr   )r-   BYTES_DTYPESSTRING_DTYPESr
   r	   r   r   r   r   r   rO   r1   r2   rQ   r5   r+   kindrM   r   r    r4   )r6   any_numpy_dtyper   r9   r   r   s         r<   test_dtype_preservationz"TestUnique.test_dtype_preservationR  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5rJ   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*   )rR  rS  rS  )
r1   r2   r   r   rO   r-   r4   r+   r   rg   )r6   r   dt_indexr   sr{   s         r<   $test_datetime64_dtype_array_returnedz/TestUnique.test_datetime64_dtype_array_returnedw  s   8// 
 
 
   
 
 h''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------rJ   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )N2000rY  2001zdatetime64[s]r*   rY  rZ  r1   r2   r   rO   r-   r4   r6   rl   r   r   s       r<   test_datetime_non_nszTestUnique.test_datetime_non_ns  s\    H---_EEE18VV,ODDD
#FH55555rJ   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )NrX  ztimedelta64[s]r*   i  i  r[  r\  s       r<   test_timedelta_non_nsz TestUnique.test_timedelta_non_ns  s]    H---5EFFF18T4L0@AAA
#FH55555rJ   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*   )ra  rb  ra  rc  rb  )
r1   r2   r   r   rO   r-   r4   r+   r   rg   )r6   r   td_indexr   rU  r{   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~------rJ   c                     t          g dt          j                  }t          j        g dt          j                  }t	          j        t          j        |          |           d S )N)r$   r%   r   r   r*   )r$   r%   r   )r   r1   r   r2   r-   r4   r   rO   )r6   rU  rz   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9rJ   c                     dt           j        ddg}t          j        t          j        |t
                              }t          j        dt           j        dgt
                    }t          j        ||           d S )Nrl   rn   r*   )r1   rf   r   rO   r2   r5   r-   r4   )r6   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5rJ   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rp  r   namer  )
r   rU   rO   r-   assert_categorical_equalr   r   r   r   rW   )r6   r   
expected_orn   r   rU  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/////rJ   c                 T   t          t          dd          t          dd          g                              |          }t          |          }|                                }|d d         j        }t          j        ||           |                                }|d d         }t          j        ||           t          j        |          }|d d         j        }t          j        ||           t          j        |          }|d d         }t          j        ||           d S )N20160101r  r  r$   )
r   r   r  r   rO   _datar-   r  rW   r   )r6   r  dtirh   r   r   s         r<   test_datetime64tz_awarez"TestUnique.test_datetime64tz_aware  s    *666*666
 

 '$-- 	 Skkrr7=
'999rr7
fh///3rr7=
'9993rr7
fh/////rJ   c           	      2   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                     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)r%   r$   rr   rr   )r%   r$   rr   r   r*   r%   r$   rp   z5unique with argument that is not not a Series, Index,r(   aabcro   rn  )r   rO   r   r-   r4   r1   r2   r.   r/   rU   r5   r   rv  )r6   r   r7   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E'SAAA 	- 	-YtF||,,F	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-8OOO6:::
#FH5556+d6ll";";<<==tE{{++
#FH55555s    "C..C25C2c                    t          t          d          t          d          g          j                            |          }t	          j        |          }t          j        dgd| d          }t          j	        ||           d S )Nr{  z2016-01-01T00:00:00.000000000zM8[]r*   )
r   r   dtr  r   rO   r1   r2   r-   r4   )r6   r  rh   r   r   s        r<   test_order_of_appearance_dt64z(TestUnique.test_order_of_appearance_dt64  s|    i
++Yz-B-BCDDGOOPTUU38<=]4]]]SSS
#FH55555rJ   c                 
   t          t          dd          t          dd          g                              |          }t          j        |          }t          dgd| dd           }t          j        ||           d S )Nr{  r  r  z2016-01-01 00:00:00zdatetime64[z, US/Eastern])r+   r   )r   r   r  r   rO   r-   rW   )r6   r  r}  r   r   s        r<   test_order_of_appearance_dt64tzz*TestUnique.test_order_of_appearance_dt64tz  s    *666*666
 

 '$-- 	 3 "#+L+L+L+LSW
 
 
 	fh/////rJ   zarg ,expected)1r  2r  r  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(   r-   r.   r/   r   rO   r4   )r6   argr   r7   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  )r1   r2   r5   r   rO   r-   r4   r6   r{   r   r   s       r<   test_obj_none_preservationz%TestUnique.test_obj_none_preservation9  s]    ht}F33338UDM888
#FHFFFFFFrJ   c                     t          j        ddg          }t          j        |          }t          j        dg          }t	          j        ||           d S )Ng       rw   r[  r\  s       r<   test_signed_zerozTestUnique.test_signed_zeroA  sL    HdC[!!18TF##
#FH55555rJ   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packr1   r2   r   rO   rf   r-   r4   )r6   NAN1NAN2rl   r   r   s         r<   test_different_nanszTestUnique.test_different_nansH  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5rJ   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*   r$   )r  r  r  r1   r2   r   rO   r4  )	r6   r  bits_for_nan1bits_for_nan2r  r  rl   r   result_nan_bitss	            r<   test_first_nan_keptzTestUnique.test_first_nan_keptT  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-//////rJ   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*   r%   r   r$   )r1   r2   r5   r   rO   r4  )r6   unique_nulls_fixtureunique_nulls_fixture2rl   r   s        r<   test_do_not_mangle_na_valuesz'TestUnique.test_do_not_mangle_na_valuese  s    #888FH*,AB&QQQ1{at+++++t,,,,,,,rJ   c                     t          dt          j        dgdz  |          }t          j        |          }t          j        dt          j        dg|          }t          j        ||           d S )Nr$   r%   rr   r*   )r   r   NArO   r2   r-   r  )r6   any_numeric_ea_dtyperh   r   r   s        r<   test_unique_maskedzTestUnique.test_unique_maskedo  se    a]Q&.BCCC38QqM1EFFF
'99999rJ   N)!r(  r)  r*  r9  r;  rB  rH  rP  rV  r]  r_  rf  rh  rk  ry  r~  r  r  r  r   r+  r-  r1   r2   r5   r  r  r  r  r   r  r  r  rD   rJ   r<   r/  r/  2  s       . . .. . .# # #
1 1 1#6 #6 #6J. . .>6 6 66 6 6. . .&: : :
6 6 6'0 '0 '0R0 0 066 6 6(6 6 60 0 0 [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 - - -: : : : :rJ   r/  c                      | t           j                            d                              ddd                    }t	          j        |          }t          t	          j        |                    }||k    sJ d S )Nr%   r   r      )r1   r5  r6  r7  r   nunique_intsr   rO   )index_or_series_or_arrayrg   r   r   s       r<   test_nunique_intsr  w  sr    %%bi&;&;A&>&>&G&G2r&R&RSSF''F5<''((HXrJ   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
ej                            dg d          d
             Z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(   r$   )r   r   r   r   isin)r6   r7   s     r<   test_invalidzTestIsin.test_invalid  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(   r$   r%   TFrl   rm   )	r-   r.   r/   r   r  r1   r2   r4   r   )r6   r7   r   r   s       r<   r|   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 )	Nr   rr   periodsr   TFFr%   rJ  r   )
r   rg   r   r  r1   r2   r-   r4   r   r   r  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5rJ   dtype1)rd  r   M8[ns, UTC]z	period[D]r+   )r   f8r   c                    t          dd          j        }t          |                    d                    j                            |          }|                    d                              |          }t          j        ||          }t          j	        |j
        t                    }t          j        ||           d S )N
2013-01-01rr   r  r   r*   )r   _valuesr   viewr2   rQ   r   r  r1   zerosshaperS   r-   r4   )r6   r+   r  dtar{   compsr   r   s           r<   +test_isin_datetimelike_values_numeric_compsz4TestIsin.test_isin_datetimelike_values_numeric_comps  s    
 q1119SXXd^^$$*//77%%e,,E3''8EKt444
#FH55555rJ   c                     t          ddd          j        }t          j        ||dd                   }t	          j        t          |          t                    }d|d<   d|d	<   t          j	        ||           d S )
N20000101i rU  )r  r   r   r%   r*   Tr$   )
r   rg   r   r  r1   r  r   rS   r-   r4   r6   rU  r   r   s       r<   
test_largezTestIsin.test_large  sw    z7===DAq1v&&8CFF$///
#FH55555rJ   c                 T   t          dd          j        }t          |                    d                    j                            |          }t
          |d<   t          j        |t
          g          }t          j        g dt                    }t          j        ||           d S )Nr  rr   r  r   r   r  r*   )r   r  r   r  r2   r   r   r  r1   rS   r-   r4   )r6   r+   r  r{   r   r   s         r<   test_isin_datetimelike_all_natz'TestIsin.test_isin_datetimelike_all_nat  s     q1119SXXd^^$$*//66AC#''8000===
#FH55555rJ   )rd  r   r  c                 p   t          dd          j        }t          |                    d                    j                            |          }d |D             }d}t          j        t          |          5  t          j	        ||          }d d d            n# 1 swxY w Y   |
                                sJ t          j        |t                    }t          j        t          |          5  t          j	        ||          }d d d            n# 1 swxY w Y   |
                                sJ d S )	Nr  rr   r  r   c                 ,    g | ]}t          |          S rD   )str)rF   r   s     r<   rI   zFTestIsin.test_isin_datetimelike_strings_deprecated.<locals>.<listcomp>  s    $$$1A$$$rJ   z2The behavior of 'isin' with dtype=.* is deprecatedr(   r*   )r   r  r   r  r2   r-   r.   r/   r   r  allr1   r  )	r6   r+   r  r{   valsr7   resvals2res2s	            r<   )test_isin_datetimelike_strings_deprecatedz2TestIsin.test_isin_datetimelike_strings_deprecated  s    q1119SXXd^^$$*//66$$$$$B'SAAA 	( 	(*S$''C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(wwyyS)))'SAAA 	* 	*:c5))D	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*xxzzs$   :BB #B 3DDDc                     t          ddd          }t          |          }t          |d<   t          j        |j        t          g          }t          j        g dt                    }t          j
        ||           d S )Nr  rr   UTCr  r  r   r  r*   )r   r   r   r   r  r  r1   r2   rS   r-   r4   )r6   r}  rh   r  rz   s        r<   test_isin_dt64tz_with_natz"TestIsin.test_isin_dt64tz_with_nat  su     qU;;;SkkAjse,,h+++4888
#C-----rJ   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  ro   r$   r   )TTFT)	r1   r2   r   r   
from_codesr   r  r-   r4   )r6   r  r  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5rJ   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  )r1   r2   r   r  r   r  r-   r4   )r6   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5rJ   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(   )	r1   rf   r2   r-   r.   r/   r   r  r4   r6   r  rg   r   r7   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 Nrd   iAB r   r$   r*   )r1   rE  rf   r   r  r2   onesr   rS   r-   r4   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5rJ   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  )r1   rE  r   rf   r  r2   r  r   rS   r-   assert_series_equal)r6   rU  seriesr   r   s        r<    test_same_nan_is_in_large_seriesz)TestIsin.test_same_nan_is_in_large_series7  s    GC##v!RXrvqk2233"'#a&&55566
vx00000rJ   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 )NFrD   )r6   r  s     r<   __eq__z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__G  s    urJ   c                     dS )Nr   rD   )r6   s    r<   __hash__z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__J  s    qrJ   N)r(  r)  r*  rS   r  r  rD   rJ   r<   LikeNanr  F  s>        t        rJ   r  r  r(   TF)r-   r.   r/   r4   r   r  r1   r2   )r6   r  rl   rm   r7   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 )Nrf   r   Tr*   )
floatr   r  r1   r2   r-   r4   rV   r5   r   )r6   r  rg   r   s       r<   r  zTestIsin.test_different_nansV  s)    u,,Qxvay(((( BHUOOV44
#BHdV$4$4f=== JuF+++RZf-M-M-M
 
 	#BHdV$4$4f=== JuBJ///F"*1U1U1U
 
 	#BHdV$4$4f=====rJ   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(   )r1   r2   r-   r.   r/   r   r  r4   r  s         r<   test_no_castzTestIsin.test_no_castn  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 )Nrl   rm   F)r   r1   r2   r   r  r-   r4   )r6   r  r  r   r   s        r<   
test_emptyzTestIsin.test_emptyy  sR     c3Z  8UEN++D%((
#Hf55555rJ   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 )Nrf                 ?r*   )FFT)	r1   r2   rf   r  r5   r   r  r-   r4   )r6   r  r  r   r   s        r<   test_different_nan_objectsz#TestIsin.test_different_nan_objects  s    %"eEll;6JJJxuf555800011E4((
#Hf55555rJ   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  r1   r2   r   r   r  r-   r4   )r6   r  r  r{   lookup1r   r   lookup2s           r<   test_different_nans_as_float64z'TestIsin.test_different_nans_as_float64  s$   
 }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t|||| hd|2:666(D6444C))8T4L))
#FH555(D6444C))8T4L))
#FH55555rJ   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 1rg   r$   r%   r  FN)r   r  r-   assert_frame_equalr6   dfr   expected_falses       r<   test_isin_int_df_string_searchz'TestIsin.test_isin_int_df_string_search  sZ     1a&)**#"Huen#=>>
fn55555rJ   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 NaNrg   r%   NaNr*   FN)r   r1   rf   r  r2   r5   r-   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5rJ   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.4245rg   gn?g#Ed@z1.4245r*   FN)r   r  r1   r2   r5   r-   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5rJ   c                     t          dgt          j                  }|                    dg          }t          d          }t	          j        ||           d S )Nl   
G r*   l    
G F)r   r1   r   r  r-   r  r6   rh   r   r   s       r<   test_isin_unsigned_dtypez!TestIsin.test_isin_unsigned_dtype  sS    )*")<<<./00%==
vx00000rJ   N)!r(  r)  r*  r  r|   r  r   r+  r-  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r5   r1   r2   r  r
  r  r  r  r  r  rD   rJ   r<   r  r    sH       
 
 
'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 [W&V&V&VWW6 6 XW6 [W&I&I&IJJ  KJ 	. 	. 	.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 1rJ   r  c                       e Zd Zd Zd Zd Zd Zej        	                    de
dg          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  rs   !pandas.value_counts is deprecatedr(   )gV-g}?5^Ig/$ۿgףp=
?gʡE?Trr  )r$   r   r%   r$   countrE   rt  )r1   r5  r6  standard_normalr   r-   r.   r/   r   value_countsr   from_breaksrQ   r   r   r  
sort_index)r6   r{   factorr7   r   breaksrE   r   s           r<   test_value_countsz!TestValueCounts.test_value_counts  s3   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89IRV9W9W9WXX,,,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)r$   r%   rr   rs   r   r(   r$   binsrs   )Zd;?ru   r!  r"  r%   F)r,  r@   )r-        @)r.  ru   )	r-   r.   r/   r   r$  r   r   rN   r  )r6   rU  r7   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(   r$   rd   r+  )r$   rd   r  r%   z*bins argument only works with numeric datar  r*   )r-   r.   r/   r   r$  r1   r2   r   r   r   r   r   r5   )r6   msg2r   r7   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	        |          }d d d            n# 1 swxY w Y   t          j        ||           t          d
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 )Nrc  timedelta64[ns]r*   r   z
2014-01-01r   r(   Fdropnar$   r%   z2014-01-01 00:00:00r!  rs  r"  )r   r1   timedelta64r   r   r-   r.   r/   r   r$  r   r   r  )r6   tdr  r7   rh   vc
vc_with_naexp_dt	result_dtexp_td	result_tds              r<   test_value_counts_natz%TestValueCounts.test_value_counts_nat  s   R^E**C08IJJJ%.//18 	( 	(C+MEEE C C',,"/EBBB
C C C C C C C C C C C C C C C r77a<<<<z??a'''''#8991=GLLL'SAAA 	/ 	/*2..I	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
y&111BN5$9$9#:III'SAAA 	/ 	/*2..I	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/
y&11111s6   +BB	B	D((D,/D,	F**F.1F.r+   zM8[us]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          g d|d          }t	          j        ||           d S )	Ni  r$   i  ip  r*   rr   r%   r$   r!  r"  )r   r   r$  r   r-   r  )r6   r+   rh   r  	exp_indexrz   s         r<   &test_value_counts_datetime_outofboundsz6TestValueCounts.test_value_counts_datetime_outofbounds  s    q!$$q!$$q!$$q!$$q!$$q!$$ 

 

 

   dAq!!8D!Q#7#7$19M9MN
 
 
	 YYYig>>>
sC(((((rJ   c                    t          t          t          d                              }|                                }t          g dt	          g d          d          }t          j        ||d           |j                                        }|                                }|j	                                        |_	        t          j        ||d           d S )NaaabbcrA  ro   r!  r"  Tcheck_index_type)
r   r   rU   r$  r   r-   r  r  
as_orderedrE   r  s       r<   ry  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GrJ   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
aaaaabbbccr$   )rs   rr   r%   ro   ru  r!  r"  TrF  Fr5  )rs   rr   r%   r$   rl   rm   rn   )rm   rl   rn   )rp  r  ro  )
r   r   rU   r1   rf   ilocr$  r   r-   r  r  s       r<   test_categorical_nansz%TestValueCounts.test_categorical_nans1  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GrJ   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abcdTro  )rr   r%   r$   r   )rm   rl   rn   r  r!  r"  rF  )r   r   rU   r$  r-   r  r  s       r<   test_categorical_zeroesz'TestValueCounts.test_categorical_zeroes\  s    ;tH~~$v,,PTUUUVV!!LL$$$ft   
 
 
 	vx$GGGGGGrJ   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 )NrJ  Tr5  r%   r$   Fr!  r"  rr   rp   r*   )rp   rr   r%   )TFN)皙$@rt   rt   rt   rR  )rR  rt   rt   N)rR  rR  rt   rt   rt   NrA  )rt   rR  N)r-   r  r   r$  r   r5   )r6   r   r   s      r<   test_value_counts_dropnaz(TestValueCounts.test_value_counts_dropnai  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0rJ   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 )Nr$   r%   rr   rp   TF)	normalizer6  )g      ?g333333?g?re   rd   r*   
proportionr"  g333333?g?)r   r1   rf   rQ   r$  r-   r  )r6   r+   rU  s_typedr   r   s         r<   test_value_counts_normalizedz,TestValueCounts.test_value_counts_normalized  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0rJ   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*   r$   r!  r"  r   r(   rq   )r1   r2   r   r   r-   r.   r/   r   r$  r  r5   )r6   r{   r   r7   r   s        r<   test_value_counts_uint64z(TestValueCounts.test_value_counts_uint64  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 )Nrr   r$   r%   rs   r+  )r%   r%   r$   ))r-  re   )re   rv   )rv   ru   zinterval[float64, right]r*   r!  r"  )	r1   r2   rf   r   r$  r   rN   r-   r  )r6   rg   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0rJ   N)r(  r)  r*  r)  r/  r2  r?  r   r+  r-  r5   rC  ry  rL  rP  rS  r1   r   rX  rZ  r\  rD   rJ   r<   r  r    s&       K K K1 1 1&M M M&2 2 2. [Wvx&899) ) :9),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 1rJ   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   r$   r%   r*   )FFFTFTfirstkeeplast)TFTFFFF)TFTTFT   rs   T)r1   r2   rf   r5   r   
duplicatedr-   r4   r  	enumeratezip)r6   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5rJ   case)
r$   r%   r$   rp   rr   r%   rs   r$   rp      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @ro        @      @y      @      @rp  y      @      @ro  rq  y      @      @)
rl   rm   rl   ern   rm   r  rl   rr  fr*   )
r$   r   r$      r   r   '   r$   rt     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`  ra  rc  Fr  r*   )	r1   r2   r   re  r-   r4   r   r   r  )
r6   rm  	exp_firstexp_last	exp_false	res_firstres_last	res_falser  rU  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rJ   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 daysr  r   z3 daysr  z4 daysr  r   z6 daysc                 ,    g | ]}t          |          S rD   r   rF   r  s     r<   rI   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>D      ///qill///rJ   c                 0    g | ]}t          |d           S )r  r  r  r  s     r<   rI   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>E  s%    @@@il333@@@rJ   c                 0    g | ]}t          |d           S )r>  r   )r   r  s     r<   rI   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>F  s%    666afQS)))666rJ   c                 6    g | ]}t          j        |          S rD   )r1   r   r  s     r<   rI   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>G  s"    3331bmA&&333rJ   c                 ,    g | ]}t          |          S rD   )r   r  s     r<   rI   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>H  r  rJ   rx  ry  r`  ra  rc  Fr  r*   )
r1   r2   r   re  r-   r4   r   r5   r   r  )r6   r  r8  casesrz  r{  r|  rm  r}  r~  r  r  rU  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rJ   r   r   rr   c                     |j         du sJ t          j        |                                t	          j        g d                     d S )NT)FFF)	is_uniquer-   r4   re  r1   r2   )r6   rm  s     r<   test_unique_indexz TestDuplicated.test_unique_index{  sI    ~%%%%
#DOO$5$5rx@U@U@U7V7VWWWWWrJ   zarr, uniques)r   r   r$   r$   r   r   r   r  r  r   )r   r  r  r   )rm   rn   rl   rm   r  r  r  r  )r   rm   r%   rl   rr   r   )r   r  r  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*   r  r(   )
r1   r  r   r5   r-   r.   r/   r   rO   r4   )r6   r{   r9   r   r7   r   s         r<   test_unique_tuplesz!TestDuplicated.test_unique_tuples  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)ro  r   r$   r	        ?       @r  )ro  y                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 r  r  )r6   r2   r   r7   r   s        r<   test_unique_complex_numbersz*TestDuplicated.test_unique_complex_numbers  s     >'SAAA 	& 	&Yu%%F	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	&
#FH55555r  N)r(  r)  r*  rl  r   r+  r-  r1   r2   rf   r5   r   r  r  r   r   r   r  r  r  rD   rJ   r<   r^  r^    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 6rJ   r^  c                   R   e Zd Zej                            dej         ej	        d  e
d          D             e          fej         ej	        d  e
d          D             e          fej         ej        dej                  fej         ej        dej                  fej         ej        dej                  fg          d             Zej                            dej         ej	        d  e
d          D             e          fej         ej	        d  e
d          D             e          fej         ej        dej                  fej         ej        dej                  fej         ej        dej                  fg          d	             Zd
S )TestHashTablezhtable, datac                     g | ]}d | S foo_rD   r   s     r<   rI   zTestHashTable.<listcomp>      :::***:::rJ   r@  r*   c                     g | ]}d | S r  rD   r   s     r<   rI   zTestHashTable.<listcomp>  r  rJ   c                    t          ||j                  }|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 )Nr*       rr   Tfracreplacedropr   r`  ra  )return_inverse)r   r+   r   Float64HashTabler1   rf   locPyObjectHashTabler   samplereset_indexrg   r   drop_duplicatesrO   r-   r4   )
r6   htabler   r   rU  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrs
             r<   test_hashtable_uniquez#TestHashTable.test_hashtable_unique  sM   $ 4tz***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BrJ   c                     g | ]}d | S r  rD   r   s     r<   rI   zTestHashTable.<listcomp>  r  rJ   c                     g | ]}d | S r  rD   r   s     r<   rI   zTestHashTable.<listcomp>  r  rJ   c                    t          ||j                  }|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  rr   Tr  r  r   )r   r+   r   r  r1   rf   r  r  r   r  r  rg   r   r   r0   r6  r  r-   r4   )r6   r  r   r   rU  r  na_maskr  r  r  result_reconstructexpected_reconstructs               r<   test_hashtable_factorizez&TestHashTable.test_hashtable_factorize  sK   $ 4tz***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MrJ   N)r(  r)  r*  r   r+  r-  r   r  r1   r2   r   r5   StringHashTabler  rx   r   Int64HashTabler   UInt64HashTabler   r  r  rD   rJ   r<   r  r    s"       [ $::eeDkk:::&III
 "::eeDkk:::&III  )")D
"C"C"CD		$bh ? ? ?@4ry!A!A!AB	
  C C!  C: [ $::eeDkk:::&III
 "::eeDkk:::&III  )")D
"C"C"CD		$bh ? ? ?@4ry!A!A!AB	
  N N!  N N NrJ   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 )TestRankr{   rt   r$   r%   rr   ru   c                 `   t          j        d          }t          j        |          }t          j        |           }|                                }t          j        |          }t          j        ||<   |	                    |          }t          j
        ||<   t          j        ||           d S )Nzscipy.stats)r   importorskipr1   r2   isfinitecopylibalgosrank_1dr   rankdatarf   r-   rF  )r6   r{   sp_statsr   r   rz   s         r<   test_scipy_compatzTestRank.test_scipy_compat  s     &}55hsmmC   hhjj!#&&FD	$$FD	
vs+++++rJ   r+   
AllIntegerc                    t          j        ddgt           j                  }t          j        ddg|          }|                    |           t	          |          }t          j        |          }t          j        ||           d S )Nr$   r%   r*   r1  r   )	r1   r2   r   r   r   r   rankr-   r4   )r6   r   r+   rz   r   rh   r   s          r<   r|   zTestRank.test_basic  sy    h1vRZ000xC...H%%%TllC
#FC00000rJ   c                     t          j        ddgt           j                  }t          ddg|          }t	          j        t          j        |          |           d S )Nr$   r%   r*   r   )r1   r2   r   r   r-   r4   r   r  )r6   r+   rz   rU  s       r<   rh  zTestRank.test_uint64_overflow%  sS    h1vRZ000Au:U+++
#EJqMM377777rJ   c                     t          j        g dg dg dgg          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   )rs   rp   rn  )rv  rd  	   z%Array with ndim > 2 are not supportedr(   )r1   r2   r   r   r   r   r  )r6   r{   r7   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)pctr$   i  r%   )r1   rx   r   r  maxreshape)r6   rg   r   s      r<   test_pct_max_many_rowszTestRank.test_pct_max_many_rows3  s     9%%F---1133{{{{9%%--i;;F---1133{{{{{{rJ   N)r(  r)  r*  r   r+  r-  r1   rf   r  	typecodesr|   r   r   rh  r  
single_cpur  rD   rJ   r<   r  r    s%       [VRVS#sBFAq!RVD"&#sCAsBFC	
 , , , [Wbl<&@AA1 1 BA1 [Wrz29&=>>8 8 ?>8   [    rJ   r  c                      e Zd Zd Zej                            dej        d         ej        d         z             d             Z	d Z
ej                            dej        d         ej        d         z             d             Zd Zej                            deeg          d	             Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestModec                     t          g t          j        t          g t                              }t          j        t          j        t          j	        g                     |j
                   d S )Nr*   )r+   rE   )r   r1   r   r   intr-   r4   r   moder2   rg   r6   rz   s     r<   test_no_modezTestMode.test_no_mode@  sR    Rrzr1E1E1EFFF
#EJrx||$<$<cjIIIIIrJ   r  r  Floatc                    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 )Nr$   r*   r   r-   r4   r   r  rg   r  r6   r  
exp_singledata_single	exp_multi
data_multirh   rz   s           r<   test_mode_singlezTestMode.test_mode_singleD  s     S
cC	V
[+++Zr***
#EJsz$:$:CJGGG
sxxzz3///Zr***Yb)))
#EJsz$:$:CJGGG
sxxzz3/////rJ   c                 (   t          dgt                    }t          j        t	          j        |j                  |j                   t          g dt                    }t          j        t	          j        |j                  |j                   d S )Nr$   r*   ro   )r   r  r-   r4   r   r  rg   r5   r  s     r<   test_mode_obj_intzTestMode.test_mode_obj_intW  st    aS$$$
#EJsz$:$:CJGGG___F333
#EJsz$:$:CJGGGGGrJ   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 )Nr$   rp   r%   rr   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/////rJ   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 )Nrm   rl   r%   rr   rn   r*   r  )r6   rz   r   rh   s       r<   test_strobj_modezTestMode.test_strobj_modep  s    euqyC519$T%%%S$$$
#EJsz$:$:CJGGG
sxxzz3/////rJ   c                    dg}dgdz  dgdz  z   }t          ||          }t          ||          }|r;|t          u r2t          j        t	          j        |j                  |j                   n1t          j        t	          j        |j                  |j                   t          j        |                                |           d S )Nbarr   r%   rr   r*   )	r   r  r-   r  r   r  rg   r4   r  )r6   r  using_infer_stringrz   r   rh   s         r<   test_strobj_multi_charzTestMode.test_strobj_multi_chary  s    gw{eWq[(T$$$S### 	L"))+EJsz,B,BCJOOOO'
3:(>(>
KKK
sxxzz3/////rJ   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   r-   r  r   r  rg   r  r  r6   rz   rh   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/////rJ   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 daysr  r4  r*   )r  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/////rJ   c                    t          dgt                    }t          g d          }t          j        t	          j        |j                  |j                   t          j        |                                |           d S )Nr   r*   )r$   r   r   )r   r5   r-   r4   r   r  rg   r  r  s      r<   test_mixed_dtypezTestMode.test_mixed_dtype  sl    eWF+++&&&''
#EJsz$:$:CJGGG
sxxzz3/////rJ   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*   )r$   r   r   r$   )	r   r1   r   r-   r4   r   r  rg   r  r  s      r<   rh  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/////rJ   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 )	Nr$   r%   r$   rl   rl   rl   ru  r$   r$   r%   rr   rr   rr   r   )r   r   r  r  r-   rv  )r6   rn   rz   r  s       r<   ry  zTestMode.test_categorical  s    AQiinn&
#C---&&3%QH555Qiinn&
#C---((1a&YYY777Qiinn&
#C-----rJ   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	  rl   r
  r$   rr   r  r4  TimedeltaIndexr(   )r   r   r1   r   r-   r4   r   r  rg   r5   r   r   AttributeError)r6   r  rz   s      r<   
test_indexzTestMode.test_index  sy   IIIYYYbh///
#EJsOOSZ@@@MMM""cU&)))
#EJsOOSZ@@@OOO$$aV28,,,
#EJsOOSZ@@@JJJ#
 
 
 ]>1ABBB 	 	JsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   7EE Ec                     t          g dd          }|                                }t          dgd          }t          j        ||           d S )N)r$   r$   rr   r   rs  r$   )r   r  r-   r  r  s       r<   test_ser_mode_with_namez TestMode.test_ser_mode_with_name  sR    YYYU+++1#E***
vx00000rJ   N)r(  r)  r*  r  r   r+  r-  r1   r  r  r  r  r  r  r5   r  r  r  r  rh  ry  r  r  rD   rJ   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 1rJ   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 )
TestDiffr+   r   rd  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 )N   rr   rs   r   nsr%   r$   r   axisr4  r*   )r1   rx   rQ   r   r  r  r+   typer   diffr  r  r7  r-   r4   Tr6   r+   r{   r   r   s        r<   test_diff_datetimelike_natz#TestDiff.test_diff_datetimelike_nat  s    imm""28,,11%88@@AFFINN5$//AAAqD	C+++739,=>>>Bt44At44AAA
#FH555CE11---
#FHJ77777rJ   c                     t          ddd          j        }d}t          j        t          |          5  t          j        |dd           d d d            d S # 1 swxY w Y   d S )	Nr  rr   r  r  z#cannot diff DatetimeArray on axis=1r(   r$   r  )r   r|  r   r   
ValueErrorr   r  )r6   r  r7   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   r$   r$   r   r   r*   r$   r   rq   rR   )r1   r2   r   r  rf   r-   r4   r  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5rJ   N)	r(  r)  r*  r   r+  r-  r  r  r#  rD   rJ   r<   r  r    s        [Wx&:;;8 8 <;8' ' ' [Wvw&7886 6 986 6 6rJ   r  opc                 4    | g d          } | g d          } | g d          }t          |t          j                  r,t          j        ||          }t          j        ||           d S t          j        ||          }t          j        ||           d S )N)rr   r$   rr   rs   )r%   rr   r$   r$   )rr   rr   r$   r$   rs   r%   )rM   r1   r  r   union_with_duplicatesr-   r4   r  )r$  lvalsrvalsr   r   s        r<   test_union_with_duplicatesr)     s     B|||EB|||Er$$$%%H(BJ'' :,UE::
#FH55555,UE::
'99999rJ   )Br   r  numpyr1   r   pandas._configr   pandas._libsr   r  r   r   pandas.core.dtypes.commonr   r   r	   r
   r   pandas.core.dtypes.dtypesr   pandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr-   pandas.core.algorithmscore
algorithmspandas.core.arraysr   r    pandas.core.commoncommonr   r"   r/  r  r  r  r^  r  r  r  r  r+  r-  r2   r)  rD   rJ   r<   <module>r8     s               - - - - - -       
              7 6 6 6 6 6                                           (       & & & & & & & & &        !                zQ zQ zQ zQ zQ zQ zQ zQzB: B: B: B: B: B: B: B:J
  ~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YN YN YN YN YN YN YN YNx6 6 6 6 6 6 6 6r^1 ^1 ^1 ^1 ^1 ^1 ^1 ^1B6 6 6 6 6 6 6 6@ "(344
: 
: 54
: 
: 
:rJ   