
    dH                       d dl m Z  d dlmZ d dlZd dlZd dlZd dlmZ	m
Z d dlmc mZ d dlmZmZmZmZmZ d dlmZ d dlZd dlmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ d dl,m-Z. d dl/m0c m1Z d dl2m3Z3m4Z4 d dl5m0c m6Z7  G d	 d
          Z8 G d d          Z9d Z: G d d          Z; G d d          Z< G d d          Z= G d d          Z> G d d          Z?d Z@ G d d          ZAd ZBd ZCd ZDd ZEd ZFd  ZG G d! d"          ZH G d# d$          ZIejJ        K                    d%ejL        ejL        g          d&             ZMdS )'    )datetime)permutationsN)algos	hashtable)is_bool_dtypeis_complex_dtypeis_float_dtypeis_integer_dtypeis_object_dtype)CategoricalDtype)CategoricalCategoricalIndex	DataFrameDatetimeIndexIndexIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timedelta	Timestamp
date_rangetimedelta_rangeto_datetimeto_timedelta)DatetimeArrayTimedeltaArrayc                   	   e Zd Zej                            dddg          d             Zd Zd Zd Z	d Z
d	 Zd
 Zd Zej                            dg dg dg dfg dg dg dfg dg dg dfg          d             Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dddg          d             Zej                            dddg          d             Zd  Zej                            d! ej        g d"d#$           ej        g d%d&$           ej        g d'd($          g          d)             Zej                            d* ej        g d+d#$          d,f ej        g d-d#$          d.f ej        g d/d&$          d0f ej        g d1d&$          d.f ej        g d2e$          d3f ej        g d4e$          d5f ej        g d6e$          d7fg          d8             Zej                            dddg          ej                            d9 ej        g d:e$           ej        d;d3ge$          f ej        d<d.ej         d<gd=$           ej        d<d.gd=$          fgd>d?g@          dA                         Z!ej                            dg dB ej        g dC ej"        dD          $           ej        d3ej         d;ge$          fd3ej         d;d3g ej        g dC ej"        dD          $           ej        d3ej         d;ge$          fg          dE             Z#ej                            dg dF ej        g d+ ej"        dD          $           ej        d.ej         d<gdG$          fd.ej         d.d<g ej        g d+ ej"        dD          $           ej        d.ej         d<gej$        $          fg          dH             Z%ej                            d e& e'g dI                     ej        g dJej(        $           e)d3d;gd3d;gdKL          f e* e'g dI                     ej        g dJej(        $           e)d3d;gd3d;gdKL          f e* e+dMdMgdNO                     ej        d,d,gej(        $           e+dMgdNO          fg          dP             Z,dQS )RTestFactorizesortTFc                   
 |}|                     |          \  }}t          }t          |t                    rt          j        }|                                }|j        t          j        k    r|	                    t          j
                  } ||          }t          |t                    r:|j        t          k    r*|j        t          k    r|	                    t                    }|r|                                }t          |          

fd|D             }	t          j        |	t          j                  }	t#          j        ||	           t#          j        ||d           d S )Nr"   c                 :    g | ]}                     |          S  )index).0valexpected_uniques_lists     S/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/test_algos.py
<listcomp>z0TestFactorize.test_factorize.<locals>.<listcomp>N   s(    JJJs/55c::JJJ    dtypeTexact)	factorizer   
isinstancer   from_tuplesuniquer/   npfloat16astypefloat32boolobjectsort_valueslistasarrayintptmassert_numpy_array_equalassert_index_equal)selfindex_or_series_objr"   objresult_codesresult_uniquesconstructorexpected_arrexpected_uniquesexpected_codesr*   s             @r+   test_factorizezTestFactorize.test_factorize5   sN   !'*}}$}'?'?$nc:&& 	1$0Kzz||++'..rz::L&;|44sE""	? &$..	V##/66v>> 	>/;;== !%%5 6 6JJJJcJJJN"'BBB
#L.AAA
n.>dKKKKKKr-   c                 j   t          j        dddt           j        g          }t          |          }|                    d          \  }}t          j        g dt           j                  }t          ddt           j        g          }t          j        ||           t          j	        ||           d S )	N      Fuse_na_sentinelr   rN   r   rO   r.         ?       @)
r6   arraynanr   r2   r?   r   r@   rA   rB   )rC   valuessercodesuniquesrK   rJ   s          r+   +test_series_factorize_use_na_sentinel_falsez9TestFactorize.test_series_factorize_use_na_sentinel_falseT   s    1aBF+,,Vnnu==w,,,bg>>> #sBF!344
#E>:::
g'788888r-   c                 4   t          j        g d          \  }}t          j        |t	          j        g dt                               t          j        g dd          \  }}t	          j        g dt          j                  }t          j        ||           t	          j        g dt                    }t          j        ||           t	          j        dt          j                  d d d         }t          j        |          \  }}t	          j        g d	t          j                  }t          j        ||           t	          j        g d
|j	                  }t          j        ||           t          j        |d          \  }}t	          j        g d
t          j                  }t          j        ||           t	          j        g d	|j	                  }t          j        ||           t	          j        d          d d d         }t          j        |          \  }}t	          j        g d	t          j                  }t          j        ||           t	          j        g d|j	                  }t          j        ||           t          j        |d          \  }}t	          j        g d
t          j                  }t          j        ||           t	          j        g d|j	                  }t          j        ||           d S )N)abr^   r]   r]   cr_   r_   r]   r^   r_   r.   Tr$   )r   rN   rN   r   r   rO   rO   rO      )r   rN   rO         )rd   rc   rO   rN   r         @)      @      @rT   rS           )rh   rS   rT   rg   rf   )
r   r2   r@   rA   r6   rU   r;   r?   aranger/   )rC   rY   rZ   exparrs        r+   
test_basiczTestFactorize.test_basic`   s   )Q)Q)QRRw
#GRXoooV-T-T-TUUU4444
 
 
w h///rw???
#E3///hf555
#GS111i)))$$B$/--whbg666
#E3///hci888
#GS1114888whbg666
#E3///hci888
#GS111innTTrT"--whbg666
#E3///h000	BBB
#GS1114888whbg666
#E3///h000	BBB
#GS11111r-   c                 \   t          ddt          j        ddt          j        g          }t	          j        |          \  }}t          j        g dt          j                  }t          j	        ||           t          dddt          j        g          }t          j        ||           t	          j        |d          \  }}t          j        g dt          j                  }t          j	        ||           t          dt          j        ddg          }t          j        ||           d S )	NABgQ	@)r   r   rb   rN   rO   rc   r.   Tr$   )rO   rO   rb   rc   r   rN   )r   r6   rV   infr   r2   rU   r?   r@   rA   r   rB   )rC   xrY   rZ   rj   s        r+   
test_mixedzTestFactorize.test_mixed   s   Cbfc4899++wh***"':::
#E3///S#tRV,--
gs+++666wh***"':::
#E3///T263,--
gs+++++r-   c           	         t          d          }t          d          }t          ||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          ||g          }t          j
        ||           t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          ||g          }t          j
        ||           t          dd	
          }t          dd	
          }t          ||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          d          }t          d          }t          |||||||g          }t          j        |          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     t          j        |d          \  }}t	          j        g dt          j                  }t          j        ||           t          j
        |t          ||g                     d S )Nz20130101 09:00:00.0000420130101)r   r   r   rN   rN   r   r.   Tr$   )rN   rN   rN   r   r   rN   201302Mfreq201303z1 day 1 min1 day)r   rN   r   r   rN   rN   r   )rN   r   rN   rN   r   r   rN   )r   r   r   r2   r6   rU   r?   r@   rA   r   rB   r   r   r   )rC   v1v2rq   rY   rZ   rj   s          r+   test_datelikezTestFactorize.test_datelike   s   011z""BBB+,,++wh)))999
#E3///RH%%
gs+++666wh)))999
#E3///RH%%
gs+++ H3'''H3'''BBB+,, ++wh)))999
#E3///
g{B8'<'<===666wh)))999
#E3///
g{B8'<'<=== -(('""BBBB/00++wh,,,BG<<<
#E3///
g|RH'='=>>>666wh,,,BG<<<
#E3///
g|RH'='=>>>>>r-   c                    t          j        dddt           j        gd          }t          j        t          |                    }dD ]}|                    ||          }t          j        ddd|gt           j                  }t          t          |                    t          t          |                    k    sJ t          j
        t          j        |          ||k               t          j
        ||           d S )NrN   rO   Or.   )rb      )na_sentinelr   )r6   rU   rV   htObjectFactorizerlenr2   r?   setr@   rA   pdisna)rC   keyrizerr   idsexpecteds         r+   test_factorize_nanz TestFactorize.test_factorize_nan   s     h1a(444#CHH--# 	7 	7K//#;/??CxAq+ 6bgFFFHs3xx==CH$6$66666'h+6MNNN'X6666	7 	7r-   c                    t          j        g dd          }t          j        g d          }t          j        t	          |                    }|                    ||          }t          j        g dt           j                  }t          j        ||           t          j        g dd          }t          j        |j	        
                                |           d S )N)rN   rO   rc   rN   rN   r   int64r.   )FFFFFT)mask)r   rN   rO   r   r   rb   rN   rO   rc   )r6   rU   r   Int64Factorizerr   r2   r?   r@   rA   rZ   to_array)rC   datar   r   resultr   rJ   s          r+   test_factorizer_with_maskz'TestFactorize.test_factorizer_with_mask   s    x***':::xAAABB"3t99--D118///rw???
#FH5558IIIW===
#EM$:$:$<$<>NOOOOOr-   c                    t          j        ddddt           j        g          }t          j        t          |                    }|                    |                    t                              }t          j        g dt           j	                  }t          j        ||           t          j        g dt                    }t          j        |j                                        |           d S )NrN   rO   rc   )r   rN   rO   r   rb   r.   r   )r6   rU   rV   r   r   r   r2   r8   r;   r?   r@   rA   rZ   r   )rC   r   r   r   r   rJ   s         r+   test_factorizer_object_with_nanz-TestFactorize.test_factorizer_object_with_nan   s    xAq!RV,--#CII..V!4!4558,,,BG<<<
#FH5558IIIV<<<
#EM$:$:$<$<>NOOOOOr-   z&data, expected_codes, expected_uniques)rN   rN   rN   rO   r   r   r   nonsense)r   rN   rO   rN   rc   )r   r   r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   rN   rO   rN   )r   r   r   c                     t          j        |          \  }}t          j        |t	          j        |t          j                             t          j        |t                    }t          j        ||           d S Nr.   )
r   r2   r@   rA   r6   rU   r?   comasarray_tuplesafer;   )rC   r   rK   rJ   rY   rZ   expected_uniques_arrays          r+   test_factorize_tuple_listz'TestFactorize.test_factorize_tuple_list   sl    $ d++w
#E28N"'+R+R+RSSS!$!67Gv!V!V!V
#G-CDDDDDr-   c                    t          j        d t          d          D             t                    }d}t	          j        t          |          5  t          j        |d d d         d           d d d            d S # 1 swxY w Y   d S )	Nc                 ,    g | ]}t          |          S r&   )complex)r(   is     r+   r,   z6TestFactorize.test_complex_sorting.<locals>.<listcomp>  s    666q

666r-      r.   z,'[<>]' not supported between instances of .*matchrb   Tr$   )	r6   rU   ranger;   pytestraises	TypeErrorr   r2   )rC   x17msgs      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)rN   rO   rO   rN   r.   )r   rN   rN   r   rN   rO   )r6   rU   r?   r   r2   r@   rA   )rC   any_real_numpy_dtyper/   r   rK   rJ   rY   rZ   s           r+   test_numeric_dtype_factorizez*TestFactorize.test_numeric_dtype_factorize  s    $xE222,,,bg>>>8QF%888..w
#E>:::
#G-=>>>>>r-   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        g dt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)rS       חArS   :0yE>r   rS   r.   write)r   rN   r   rO   rN   r   )rS   r   r   )	r6   rU   float64setflagsr?   r   r2   r@   rA   rC   writabler   rK   rJ   rY   rZ   s          r+   test_float64_factorizez$TestFactorize.test_float64_factorize  s    x777rzJJJH%%%"4"4"4BGDDD8$4$4$4BJGGG..w
#E>:::
#G-=>>>>>r-   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        ddgt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)    rN   r   r.   r   r   rN   r   r   rN   )	r6   rU   uint64r   r?   r   r2   r@   rA   r   s          r+   test_uint64_factorizez#TestFactorize.test_uint64_factorize   s    x111CCCH%%%)))27;;;8YN")DDD..w
#E>:::
#G-=>>>>>r-   c                    t          j        g dt           j                  }|                    |           t          j        g dt           j                  }t          j        ddgt           j                  }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)             r   r.   r   r   r   r   )	r6   rU   r   r   r?   r   r2   r@   rA   r   s          r+   test_int64_factorizez"TestFactorize.test_int64_factorize*  s    x888IIIH%%%)))27;;;8Y$9JJJ..w
#E>:::
#G-=>>>>>r-   c                 l   t          j        g dt                    }|                    |           t          j        g dt           j                  }t          j        g dt                    }t          j        |          \  }}t          j        ||           t          j        ||           d S )N)r]   r_   r]   r^   r_   r.   r   )r   rN   r   rO   rN   r]   r_   r^   )	r6   rU   r;   r   r?   r   r2   r@   rA   r   s          r+   test_string_factorizez#TestFactorize.test_string_factorize4  s    x111@@@H%%%///AAA8OOO6BBB..w
#E>:::
#G-=>>>>>r-   c           
         t          j        ddd t           j        ddt          dgt                    }|                    |           t          j        g dt           j                  }t          j        g dt                    }t          j        |          \  }}t          j
        ||           t          j
        ||           d S )Nr]   r_   r^   r.   r   )r   rN   rb   rb   r   rO   rb   rN   r   )r6   rU   rV   r   r;   r   r?   r   r2   r@   rA   r   s          r+   test_object_factorizez#TestFactorize.test_object_factorize>  s    xc4c3DFSSSH%%%"="="=RWMMM8OOO6BBB..w
#E>:::
#G-=>>>>>r-   c                 v   t          j        t          j        d          gd          }|                    |           t          j        dgt           j                  }t          j        dgd          }t          j        |          \  }}t          j        ||           t          j        ||           d S )Nz2020-01-01T00:00:00.000M8[ns]r.   r   r   z2020-01-01T00:00:00.000000000datetime64[ns])	r6   rU   
datetime64r   r?   r   r2   r@   rA   r   s          r+   test_datetime64_factorizez'TestFactorize.test_datetime64_factorizeH  s    x'@AAB(SSSH%%%1#RW5558,-5E
 
 
 d++w
#E>:::
#G-=>>>>>r-   c                 
   t           j                            t          d                    }t	          j        dt          j                  |f}t          j        ||          }t          j
        |d         |d                    t          j        |d         |d         d           |                    |          }t          j
        |d         |d                    t          j        |d         |d         d           d S )N
   r.   r$   r   rN   Tr0   r   
RangeIndex
from_ranger   r6   ri   r?   r   r2   r@   rA   rB   )rC   r"   rir   r   s        r+   test_factorize_rangeindexz'TestFactorize.test_factorize_rangeindexU  s     ]%%eBii009Rrw///3$///
#F1Ix{;;;
fQi!DAAAA4((
#F1Ix{;;;
fQi!DAAAAAAr-   c                 |   t           j                            t          d                    }t	          j        dt          j                  |f}|d d d         }|d         |f}|r"|d         d d d         |d         d d d         f}t          j        ||          }t          j
        |d         |d                    t          j        |d         |d         d           |                    |          }t          j
        |d         |d                    t          j        |d         |d         d           d S )	Nr   r.   rb   r   rN   r$   Tr0   r   )rC   r"   r   r   ri2r   s         r+   $test_factorize_rangeindex_decreasingz2TestFactorize.test_factorize_rangeindex_decreasingc  s*    ]%%eBii009Rrw///32hA;# 	<{44R4((1+ddd*;;H4000
#F1Ix{;;;
fQi!DAAAAD))
#F1Ix{;;;
fQi!DAAAAAAr-   c                 ^   t          j        g dt           j                  }t          j        t
          d          5  t          j        |d           d d d            n# 1 swxY w Y   t          j	        d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )N)            rN   r   r.   zgot an unexpected keywordr   T)orderF)
r6   rU   r   r   r   r   r   r2   r@   assert_produces_warning)rC   r   s     r+   test_deprecate_orderz"TestFactorize.test_deprecate_orderv  s&    x)));;;]9,GHHH 	. 	.OD----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	.'.. 	" 	"OD!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"s#   A!!A%(A% B""B&)B&r   r   u8r.   )r   rN   r   i8)__nan__foor   r;   c                     t          j        |          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )Nr   rN   r   r.   )r   r2   r6   rU   r?   r@   rA   )rC   r   rY   rZ   rJ   rK   s         r+   ,test_parametrized_factorize_na_value_defaultz:TestFactorize.test_parametrized_factorize_na_value_default  sl     ..wA<)))27;;;
#E>:::
#G-=>>>>>r-   zdata, na_valuerR   r   )rN   r   rN   rO   rN   )r   rN   r   r   r   )rN   r   rN   r   )r]    r]   r^   r]   )r&   r]   rN   r&   r]   rO   r&   )r   r&   r   r   r   c                     t          j        ||          \  }}|ddg         }t          j        g dt          j                  }t          j        ||           t          j        ||           d S )N)na_valuerN   rc   )rb   r   rb   rN   r.   )r   factorize_arrayr6   rU   r?   r@   rA   )rC   r   r   rY   rZ   rJ   rK   s          r+   $test_parametrized_factorize_na_valuez2TestFactorize.test_parametrized_factorize_na_value  sr     .thGGGwA<...@@@
#E>:::
#G-=>>>>>r-   zdata, uniques)r^   r]   Nr^   r^   rO   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"   rQ   )rN   r   rb   rN   r.   )r   rN   rb   r   )r   r2   r6   rU   r?   	safe_sortr@   rA   r3   ndarrayassert_extension_array_equal)rC   r"   r   rZ   rY   rK   rJ   s          r+   test_factorize_use_na_sentinelz,TestFactorize.test_factorize_use_na_sentinel  s      D$OOOw 	'Xmmm27CCCN$w77Xmmm27CCCN&
#E>:::dBJ'' 	G'1ABBBBB+G5EFFFFFr-   )r]   Nr^   r]   r   rN   rO   r   r?   c                     t          j        |d          \  }}t          j        ||d           t          j        ||d           d S NFrP   T
strict_nanr   r2   r@   rA   rC   r   rK   rJ   rY   rZ   s         r+   +test_object_factorize_use_na_sentinel_falsez9TestFactorize.test_object_factorize_use_na_sentinel_false  S    $ uEEEw
#G-=$OOOO
#E>dKKKKKKr-   )rN   NrN   rO   r   c                     t          j        |d          \  }}t          j        ||d           t          j        ||d           d S r   r   r   s         r+   (test_int_factorize_use_na_sentinel_falsez6TestFactorize.test_int_factorize_use_na_sentinel_false  r   r-   )r]   r]   r^   )r   r   rN   category)
categoriesr/   2017
US/Easterntzc                     t          j        |          \  }}t          j        ||           t          j        ||           d S N)r   r2   r@   rA   rB   r   s         r+   test_factorize_mixed_valuesz)TestFactorize.test_factorize_mixed_values  sD    , ..w
#E>:::
g'788888r-   N)-__name__
__module____qualname__r   markparametrizerL   r[   rl   rr   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   rU   r   r;   r   r   rV   r   r/   r   r   r   r   r   r?   r   r   r   r  r&   r-   r+   r!   r!   4   s       [VdE]33L L 43L<
9 
9 
9&2 &2 &2P, , , .? .? .?`7 7 7	P 	P 	PP P P [0 =<<444 <;;333
 .--|||=U=U=UV	
  E E!  E2 2 2	? 	? 	?? ? ?? ? ?? ? ?? ? ?? ? ?? ? ? [VdE]33B B 43B [VdE]33B B 43B$" " " [BHYYYd+++BH,,,D999BH222(CCC	
 ? ? ? [RXlll$///3RXlll$///3RX000===xHRX)))666:RX)))888#>RX222&AAA2FRX888GGGR	
 ? ? ? [VdE]33[ ...f===#s6222
 !Q*':::!Qw///		
 -.   G G  43G [0 &%%XRXf-=-=>>>#rvs+6::: bfc3'XRXf-=-=>>>#rvs+6:::	
 L L L [0  XRXf-=-=>>>!RVQs333 BFAq!XRXf-=-=>>>!RVQrz:::	
 L L L [0 kk///2233"'222  #sc
*UUU {{???3344"'222  #sc
*UUU }}ff%5,GGGHH!Qrw///vh<888	
 (9 9) (9 9 9r-   r!   c            	       p   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zej                            dd ej        ddge          fd ej        dge          fg          d             Zd Zd Zd Zej                            dej        eg          d             Zd Zd ZdS )
TestUniquec                     t           j                            ddd          }t          j        |          }t          |t           j                  sJ d S )Nr   d   2   size)r6   randomrandintr   r5   r3   r   rC   rk   r   s      r+   	test_intszTestUnique.test_ints	  sK    i3R00c""&"*-------r-   c                     t           j                            ddd                              d          }t	          j        |          }t          |t           j                  sJ d S )Nr   r  r  r  r   )r6   r  r  r8   r   r5   r3   r   r  s      r+   test_objectszTestUnique.test_objects  sY    i3R0077<<c""&"*-------r-   c                 t    g d}t          d          D ]#}t          t          j        |                     $d S )N)rn   ro   CDE  )r   r   r   r5   )rC   lstr   s      r+   test_object_refcount_bugz#TestUnique.test_object_refcount_bug  sG    '''t 	# 	#AS!!""""	# 	#r-   c                    t          j        t          j        d                              d          t          j        t          j        d          d          g          }|j        }|                                 |                    d          }t          j	        |          }|                                 t          j        ||           d S )Nra   rO   )r   from_arraysr6   ri   repeattilerW   r"   r   r5   r@   assert_almost_equal)rC   mindexr   r   s       r+   test_on_index_objectzTestUnique.test_on_index_object  s    'Yq\\  ##RWRYq\\1%=%=>
 
 =q!!6""
vx00000r-   c                 H   |t           j        t           j        z   v r	g d}ddg}nt          |          r	g d}ddg}nt	          |          r	g d}ddg}nt          |          rPt          dd          t          dd          t          dd          g}t          dd          t          dd          g}n8t          |          r	g d}dd	g}n t          |          r	g d
}ddg}ng d}ddg}t          ||          
                                }t          j        ||          }|t           j        v r|                    t                    }|j        j        dv r2t#          |t$          t&          f          sJ t          j        |          }t          j        ||           d S )N)rN   rO   rO   rN   rO   rS   rT   r   TTFTF)rn   ro   ro   rn   ro   r.   )mrv   )r@   BYTES_DTYPESSTRING_DTYPESr
   r	   r   r   r   r   r   r5   r6   rU   r8   r;   r/   kindr3   r   r   rA   )rC   any_numpy_dtyper   rZ   r   r   s         r+   test_dtype_preservationz"TestUnique.test_dtype_preservation(  s   r1AABB99D!fGGo.. 	99D!fGGO,, 	99DCjGGo.. 	AqMM71a=='!Q--@Dq!}}gamm4GG?++ 		&&&DUmGG_-- 	"??DCjGG 99D!fGO444;;==8G?;;;b...v..H>*,,f}n&EFFFFFXf%%F
#FH55555r-   c                    t          j        ddgd          }t          g d          }t          j        |          }t          j        ||           |j        |j        k    sJ t          |          }t          j        |          }t          j        ||           |j        |j        k    sJ |j	        }t          j        |          }t          j        ||           |j        |j        k    sJ d S )N2015-01-03T00:00:00.0000000002015-01-01T00:00:00.000000000r   r.   )r1  r2  r2  )
r6   rU   r   r   r5   r@   rA   r/   r   rW   )rC   r   dt_indexr   srk   s         r+   $test_datetime64_dtype_array_returnedz/TestUnique.test_datetime64_dtype_array_returnedM  s   8// 
 
 
   
 
 h''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------r-   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )N2000r8  2001zdatetime64[s]r.   r8  r9  r6   rU   r   r5   r@   rA   rC   r]   r   r   s       r+   test_datetime_non_nszTestUnique.test_datetime_non_nsl  s\    H---_EEE18VV,ODDD
#FH55555r-   c                     t          j        g dd          }t          j        |          }t          j        ddgd          }t	          j        ||           d S )Nr7  ztimedelta64[s]r.   i  i  r:  r;  s       r+   test_timedelta_non_nsz TestUnique.test_timedelta_non_nsr  s]    H---5EFFF18T4L0@AAA
#FH55555r-   c                    t          j        g dd          }t          g d          }t          j        |          }t          j        ||           |j        |j        k    sJ t          |          }t          j        |          }t          j        ||           |j        |j        k    sJ |j	        }t          j        |          }t          j        ||           |j        |j        k    sJ d S )N)y  n  '  m8[ns]r.   )r@  rA  r@  rB  rA  )
r6   rU   r   r   r5   r@   rA   r/   r   rW   )rC   r   td_indexr   r4  rk   s         r+   %test_timedelta64_dtype_array_returnedz0TestUnique.test_timedelta64_dtype_array_returnedx  s    8111BBB C C CDDh''
#FH555|x~----8a
#FH555|x~----hc""
#FH555|x~------r-   c                     t          g dt          j                  }t          j        g dt          j                  }t	          j        t          j        |          |           d S )N)rN   rO   r   r   r.   )rN   rO   r   )r   r6   r   rU   r@   rA   r   r5   )rC   r4  rj   s      r+   test_uint64_overflowzTestUnique.test_uint64_overflow  sX    '''ry999h}}}BI666
#ELOOS99999r-   c                     dt           j        ddg}t          j        |          }t          j        dt           j        dgt
                    }t          j        ||           d S )Nr]   r_   r.   )r6   rV   r   r5   rU   r;   r@   rA   )rC   duplicated_itemsr   r   s       r+   test_nan_in_object_arrayz#TestUnique.test_nan_in_object_array  sY    c2+,,8S"&#.f===
#FH55555r-   c                 ~   t          t          d                    }t          t          d          t          d          d          }t          t          d                    }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          d          d          }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          t          d                    d          }|                                }t          j        ||           t          j        |          }t          j        ||           t          t          t          d          t          d          	                    }t          |          }|                                }t          j	        ||           t          j        |          }t          j	        ||           d S )
NbacabcTr   orderedbaabcrO  r   namer   )
r   r=   r5   r@   assert_categorical_equalr   r   r   r   rB   )rC   r   
expected_or_   r   r4  cis          r+   test_categoricalzTestUnique.test_categorical  s    tE{{++ !eedSSS
 W&&
#FH555a
#FH555Wt444
#FJ777a
#FJ777 ;tG}}--E:::
#FH5551
#FH555 k$w--DKKPPPQQ#H--
fh///2
fh/////r-   c                    t          t          t          dd          t          dd          g                                                    }t	          j        t          j        t          dd          g                    }t          j	        ||           t          t          dd          t          dd          g                                          }t          dgdd           }t          j        ||           t          j        t          t          t          dd          t          dd          g                              }t	          j        t          j        t          dd          g                    }t          j	        ||           t          j        t          t          dd          t          dd          g                    }t          dgdd           }t          j        ||           d S )	N20160101r  r  z2016-01-01 00:00:00-05002016-01-01 00:00:00datetime64[ns, US/Eastern]r/   rx   
2016-01-01)r   r   r   r5   r   _from_sequencer6   rU   r@   r   r   rB   r   rC   r   r   s      r+   test_datetime64tz_awarez"TestUnique.test_datetime64tz_aware  s'    j\:::j\::: 
 
 &(( 	 !/Hi :|LLLMNN
 
 	'999*666*666
 

 &(( 	 !"#+Gd
 
 
 	fh///!*>>>!*>>>  	
 	
 !/Hi>>>?@@
 
 	'999j\:::j\::: 
 
 !"#+Gd
 
 
 	fh/////r-   c           	      l   t          j        t          g d                    }t          j        |t          j        g dd                     t          j        t          dgdgdz  z                       }t          j        |t          j        ddgd                     t          j        t          t          d          t          d          g                    }t          j        d	gd
          }t          j        ||           t          j        t          t          dd          t          dd          g                    }t          dgdd           }t          j
        ||           t          j        t          d                    }t          j        g dt                    }t          j        ||           t          j        t          t          t          d                                        }t          t          d                    }t          j        ||           d S )N)rO   rN   rc   rc   )rO   rN   rc   r   r.   rO   rN   ra   rZ  z2016-01-01T00:00:00.000000000r   r  r  r[  r\  r]  aabcr`   rM  )r   r5   r   r@   rA   r6   rU   r   r   r   rB   r=   r;   r   rU  r`  s      r+   test_order_of_appearancez#TestUnique.test_order_of_appearance  s    6,,,//00
#FBHYYYg,N,N,NOOO61#a-0011
#FBHaV7,K,K,KLLL69Z#8#8)J:O:O"PQQRR8<=EUVVV
#FH555j\:::j\::: 
 
 !"#+Gd
 
 
 	fh///4<<((8OOO6:::
#FH5556+d6ll";";<<==tE{{++
#FH55555r-   zarg ,expected)1re  2re  rf  r.   )r   r   c                 X    t          j        |          }t          j        ||           d S r  r   r5   r@   rA   )rC   argr   r   s       r+   test_tuple_with_stringsz"TestUnique.test_tuple_with_strings  s*     3
#FH55555r-   c                     t          j        dd gt                    }t          j        |          }t          j        dd gt                    }t          j        ||d           d S )Nr   r.   Tr   )r6   rU   r;   r   r5   r@   rA   rC   rk   r   r   s       r+   test_obj_none_preservationz%TestUnique.test_obj_none_preservation%  s]    ht}F33338UDM888
#FHFFFFFFr-   c                     t          j        ddg          }t          j        |          }t          j        dg          }t	          j        ||           d S )Ng       rh   r:  r;  s       r+   test_signed_zerozTestUnique.test_signed_zero-  sL    HdC[!!18TF##
#FH55555r-   c                    t          j        dt          j        dd                    d         }t          j        dt          j        dd                    d         }||k    sJ ||k    sJ t          j        ||g          }t          j        |          }t          j        t          j        g          }t          j	        ||           d S )Nd=Q          r            )
structunpackpackr6   rU   r   r5   rV   r@   rA   )rC   NAN1NAN2r]   r   r   s         r+   test_different_nanszTestUnique.test_different_nans4  s     }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t||||HdD\""18RVH%%
#FH55555r-   el_typec                    d}d}t          j        dt          j        d|                    d         }t          j        dt          j        d|                    d         }||k    sJ ||k    sJ t          j        ||g|          }t          j        |          }|j        dk    sJ t          j        dt          j        d|d                             d         }||k    sJ d S )Nl         rt  rq  rr  r   r.   rN   )ru  rv  rw  r6   rU   r   r5   r  )	rC   r{  bits_for_nan1bits_for_nan2rx  ry  r]   r   result_nan_bitss	            r+   test_first_nan_keptzTestUnique.test_first_nan_kept@  s     +*}S&+dM"B"BCCAF}S&+dM"B"BCCAFt||||t||||HdD\1111{a -fk#vay.I.IJJ1M-//////r-   c                     ||u rd S t          j        ||gt                    }t          j        |          }|j        dk    sJ |d         |u sJ |d         |u sJ d S )Nr.   rO   r   rN   )r6   rU   r;   r   r5   r  )rC   unique_nulls_fixtureunique_nulls_fixture2r]   r   s        r+   test_do_not_mangle_na_valuesz'TestUnique.test_do_not_mangle_na_valuesQ  s    #888FH*,AB&QQQ1{at+++++t,,,,,,,r-   c                     t          dt          j        dgdz  |          }t          j        |          }t          j        dt          j        dg|          }t          j        ||           d S )NrN   rO   rc   r.   )r   r   NAr5   rU   r@   r   )rC   any_numeric_ea_dtyperX   r   r   s        r+   test_unique_maskedzTestUnique.test_unique_masked[  se    a]Q&.BCCC38QqM1EFFF
'99999r-   N)r  r	  r
  r  r  r   r'  r/  r5  r<  r>  rE  rG  rJ  rX  ra  rd  r   r  r  r6   rU   r;   rj  rm  ro  rz  r   r  r  r  r&   r-   r+   r  r    s       . . .. . .# # #
1 1 1#6 #6 #6J. . .>6 6 66 6 6. . .&: : :
6 6 6'0 '0 '0R50 50 50n!6 !6 !6F [hbhSz@@@Axrxv6667	
 6 6 6
G G G6 6 6
6 
6 
6 [YV(<==0 0 >=0 - - -: : : : :r-   r  c                      | t           j                            ddd                    }t          j        |          }t          t          j        |                    }||k    sJ d S )Nr   r      )r6   r  r  r   nunique_intsr   r5   )index_or_series_or_arrayrW   r   r   s       r+   test_nunique_intsr  c  sd    %%bi&7&72r&B&BCCF''F5<''((HXr-   c                      e Zd Zd Zd Zd Zej                            dg d          ej                            dg d          d                         Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zej                            dg  ee           ej        g           g          d             Zd Zd Zd Zd Zd Zd ZdS )TestIsinc                    d}t          j        t          |          5  t          j        dd           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        ddg           d d d            n# 1 swxY w Y   t          j        t          |          5  t          j        dgd           d d d            d S # 1 swxY w Y   d S )NzQonly list-like objects are allowed to be passed to isin\(\), you passed a \[int\]r   rN   )r   r   r   r   isin)rC   r   s     r+   test_invalidzTestIsin.test_invalidl  s   $ 	 ]9C000 	 	Jq!	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	Jq1#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	]9C000 	 	JsA	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s5   A  AA&B		BB/CCCc                    t          j        ddgdg          }t          j        ddg          }t	          j        ||           t          j        t          j        ddg          dg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          dg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          t          dg                    }t          j        ddg          }t	          j        ||           t          j        t          ddg          dh          }t          j        ddg          }t	          j        ||           t          j        ddgdg          }t          j        ddg          }t	          j        ||           t          j        t          ddg          t          dg                    }t          j        ddg          }t	          j        ||           t          j        t          ddg          dh          }t          j        ddg          }t	          j        ||           t          j        ddgdg          }t          j        ddg          }t	          j        ||           d S )NrN   rO   TFr]   r^   )r   r  r6   rU   r@   rA   r   r`  s      r+   rl   zTestIsin.test_basicx  se   QFQC((8T5M**
#FH555BHaV,,qc228T5M**
#FH555FAq6NNQC008T5M**
#FH555FAq6NNFA3KK888T5M**
#FH555FAq6NNQC008T5M**
#FH555S#J..8T5M**
#FH555FC:..u>>8T5M**
#FH555FC:..668T5M**
#FH555S#J,,8UEN++
#FH55555r-   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 )	Nrt   rc   periodsr   )TFFrO   r)  rz   )
r   rW   r   r  r6   rU   r@   rA   r   r   rl  s       r+   test_i8zTestIsin.test_i8  s   Q///6C#a&**800011
#FH555CQqS**8///00
#FH555CS1X//8///00
#FH555gq1118C#a&**800011
#FH555CQqS**8///00
#FH555CS1X//8///00
#FH55555r-   dtype1)rC  r   M8[ns, UTC]	period[D]r/   )r   f8r   c                    t          dd          j        }|dk    r|                    d          }nV|dk    r|                    d          }n:t	          |                    d                                        |          j        }|                    d                              |          }t          j        ||          }t          j
        |j        t          	          }t          j        ||           d S )
Nz
2013-01-01rc   r  r  r  r  UTCr   r.   )r   _values	to_periodtz_localizer   viewr8   r   r  r6   zerosshaper:   r@   rA   )rC   r/   r  dtark   compsr   r   s           r+   +test_isin_datetimelike_values_numeric_compsz4TestIsin.test_isin_datetimelike_values_numeric_comps  s    
 q1119[  --$$CC}$$//%((CC$((--f55=C%%e,,E3''8EKt444
#FH55555r-   c                     t          ddd          j        }t          j        ||dd                   }t	          j        t          |          t                    }d|d<   d|d	<   t          j	        ||           d S )
N20000101i r4  )r  rx   r   rO   r.   TrN   )
r   rW   r   r  r6   r  r   r:   r@   rA   rC   r4  r   r   s       r+   
test_largezTestIsin.test_large  sw    z7===DAq1v&&8CFF$///
#FH55555r-   c                    t          j        g d          }g d}t          t          dg                              ||                    }t          t          dg                              t          j        ddg          |                    }t          j        g d          }t          j        ||          }t          j        ||           d S Nr   r`   rN   r   )TTFT)	r6   rU   r   r   
from_codesr   r  r@   rA   )rC   valscatsSdStr   r   s          r+   test_categorical_from_codesz$TestIsin.test_categorical_from_codes  s    x%%K$$//d;;<<K$$//!Q0@0@$GGHH855566B##
#Hf55555r-   c                 r   t          j        g d          }g d}t          dg                              ||          }t          dg                              t          j        ddg          |          }t          j        g d          }t	          j        ||          }t          j        ||           d S r  )r6   rU   r   r  r   r  r@   rA   )rC   r  r  catotherr   r   s          r+   test_categorical_isinzTestIsin.test_categorical_isin  s    x%%1#))$55QC  ++BHaV,<,<dCC855566C''
#Hf55555r-   c                     t           j        g}t           j        g}t          j        dg          }t          j        ||          }t          j        ||           d S )NT)r6   rV   rU   r   r  r@   rA   rC   r  rW   r   r   s        r+   test_same_nan_is_inzTestIsin.test_same_nan_is_in  sQ     &8TF##E6**
#Hf55555r-   c                 
   t          j        dd          }t           j        |d<   t          j        |t           j        dg          }t          j        t          |          t                    }t          j	        ||           d S NrS   iAB r   rN   r.   )
r6   r$  rV   r   r  onesr   r:   r@   rA   r  s       r+   test_same_nan_is_in_largez"TestIsin.test_same_nan_is_in_large  sh    GC##v!A{++73q66...
#FH55555r-   c                 B   t          j        dd          }t          |          }t           j        |d<   |                    t           j        dg          }t          t          j        t          |          t                              }t          j	        ||           d S r  )
r6   r$  r   rV   r  r  r   r:   r@   assert_series_equal)rC   r4  seriesr   r   s        r+    test_same_nan_is_in_large_seriesz)TestIsin.test_same_nan_is_in_large_series  s{    GC##v!bfa[))"'#a&&55566
vx00000r-   c                 <    G d d          } |             |            }}t          j        t          j        |g|g          t	          j        dg                     t          j        t          j        |g|g          t	          j        dg                     d S )Nc                        e Zd ZdefdZd ZdS )0TestIsin.test_same_object_is_in.<locals>.LikeNanreturnc                     dS )NFr&   )rC   r  s     r+   __eq__z7TestIsin.test_same_object_is_in.<locals>.LikeNan.__eq__  s    ur-   c                     dS )Nr   r&   )rC   s    r+   __hash__z9TestIsin.test_same_object_is_in.<locals>.LikeNan.__hash__  s    qr-   N)r  r	  r
  r:   r  r  r&   r-   r+   LikeNanr    s>        t        r-   r  TF)r@   rA   r   r  r6   rU   )rC   r  r]   r^   s       r+   test_same_object_is_inzTestIsin.test_same_object_is_in  s    	 	 	 	 	 	 	 	 wyy''))1
#EJsQC$8$8"(D6:J:JKKK
#EJsQC$8$8"(E7:K:KLLLLLr-   c                    t          d          g}t          d          g}|d         |d         usJ t          j        ||          }t          j        t          j        dg          |           t          j        t          j        |t                    t          j        |t                              }t          j        t          j        dg          |           t          j        t          j        |t
          j	                  t          j        |t
          j	                            }t          j        t          j        dg          |           d S )NrV   r   Tr.   )
floatr   r  r@   rA   r6   rU   r>   r;   r   )rC   r  rW   r   s       r+   rz  zTestIsin.test_different_nans  s!    u,,Qxvay(((( E6**
#BHdV$4$4f=== JuF+++RZf-M-M-M
 
 	#BHdV$4$4f=== JuBJ///F"*1U1U1U
 
 	#BHdV$4$4f=====r-   c                     ddg}dg}t          j        ddg          }t          j        ||          }t	          j        ||           d S )Nss*   42F)r6   rU   r   r  r@   rA   r  s        r+   test_no_castzTestIsin.test_no_cast1  sQ     r
8UEN++E6**
#Hf55555r-   emptyr.   c                     t          ddg          }t          j        ddg          }t          j        ||          }t          j        ||           d S )Nr]   r^   F)r   r6   rU   r   r  r@   rA   )rC   r  r  r   r   s        r+   
test_emptyzTestIsin.test_empty:  sR     c3Z  8UEN++D%((
#Hf55555r-   c                 H   t          j        dt           j        dz  t          d          gt                    }t          j        t          d          gt                    }t          j        g d          }t          j        ||          }t          j        ||           d S )NrV                 ?r.   )FFT)	r6   rU   rV   r  r;   r   r  r@   rA   )rC   r  r  r   r   s        r+   test_different_nan_objectsz#TestIsin.test_different_nan_objectsC  s    %"eEll;6JJJxuf555800011E4((
#Hf55555r-   c                    t          j        dt          j        dd                    d         }t          j        dt          j        dd                    d         }||k    sJ ||k    sJ t          j        ||gt          j                  }t          j        |gt          j                  }t          j        ||          }t          j        ddg          }t          j	        ||           t          j        |gt          j                  }t          j        ||          }t          j        ddg          }t          j	        ||           d S )Nrq  rr  rs  r   rt  r.   T)
ru  rv  rw  r6   rU   r   r   r  r@   rA   )rC   rx  ry  rk   lookup1r   r   lookup2s           r+   test_different_nans_as_float64z'TestIsin.test_different_nans_as_float64K  s$   
 }S&+d4F"G"GHHK}S&+d4F"G"GHHKt||||t|||| hd|2:666(D6444C))8T4L))
#FH555(D6444C))8T4L))
#FH55555r-   c                     t          dddgi          }|                    dg          }t          dddgi          }t          j        ||           dS )zComparing df with int`s (1,2) with a string at isin() ("1")
        -> should not match values because int 1 is not equal str 1rW   rN   rO   re  FNr   r  r@   assert_frame_equalrC   dfr   expected_falses       r+   test_isin_int_df_string_searchz'TestIsin.test_isin_int_df_string_searcha  sZ     1a&)**#"Huen#=>>
fn55555r-   c                     t          dt          j        dgi          }|                    dg          }t          dddgi          }t	          j        ||           dS )zComparing df with nan value (np.nan,2) with a string at isin() ("NaN")
        -> should not match values because np.nan is not equal str NaNrW   rO   NaNFN)r   r6   rV   r  r@   r  r  s       r+   test_isin_nan_df_string_searchz'TestIsin.test_isin_nan_df_string_searchi  s^     261+.//%!!"Huen#=>>
fn55555r-   c                     t          dddgi          }|                    dg          }t          dddgi          }t          j        ||           dS )zComparing df with floats (1.4245,2.32441) with a string at isin() ("1.4245")
        -> should not match values because float 1.4245 is not equal str 1.4245rW   gn?g#Ed@z1.4245FNr  r  s       r+    test_isin_float_df_string_searchz)TestIsin.test_isin_float_df_string_searchq  s]     67"3455($$"Huen#=>>
fn55555r-   c                     t          dgt          j                  }|                    dg          }t          d          }t	          j        ||           d S )Nl   
G r.   l    
G F)r   r6   r   r  r@   r  rC   rX   r   r   s       r+   test_isin_unsigned_dtypez!TestIsin.test_isin_unsigned_dtypey  sS    )*")<<<./00%==
vx00000r-   N)r  r	  r
  r  rl   r  r   r  r  r  r  r  r  r  r  r  r  rz  r  r   r;   r6   rU   r  r  r  r  r  r  r  r&   r-   r+   r  r  k  s       
 
 
#6 #6 #6J6 6 66 [X'W'W'WXX[W&8&8&8996 6 :9 YX6&6 6 66 6 66 6 6
6 
6 
66 6 61 1 1M M M&> > >06 6 6 [Wr66+?+?+?"&NOO6 6 PO66 6 66 6 6,6 6 66 6 66 6 61 1 1 1 1r-   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ej        edf          d             Zd ZdS )TestValueCountsc                    t           j                            d           ddlm} t           j                            d          } ||d          }t          j        |          }g d}t          j	        |          
                    t          d                    }t          g d|d	
          }t          j        |                                |                                           d S )Ni  r   )cutrd   )gvgQg`"?gw/?g!rh?TrQ  )rN   rN   rN   rN   countr'   rS  )r6   r  seedpandas.core.reshape.tiler  randnr   value_countsr   from_breaksr8   CDTr   r@   r  
sort_index)rC   r  rk   factorr   breaksr'   r   s           r+   test_value_countsz!TestValueCounts.test_value_counts  s    
	t000000iooa  S! #F++666)&1188T9J9J9JKK,,,e'BBB
v0022H4G4G4I4IJJJJJr-   c                 X   g d}t          j        |d          }t          dgt          j        dg          d          }t          j        ||           t          j        |dd	
          }t          ddgt          j        ddg          d          }t          j        ||           d S )N)rN   rO   rc   rd   rN   binsrd   )Zd;?rf   r  r  rO   F)r  r"   )r        @)r   rf   )r   r  r   r   r4   r@   r  r  s       r+   test_value_counts_binsz&TestValueCounts.test_value_counts_bins  s    LL#AA...C}0,@@w
 
 
 	vx000#AAE:::F+\:,FGG
 
 

 	vx00000r-   c                    t          j        ddg          }t          |          dk    sJ t          j        ddgd          }t          |          dk    sJ t          j        t          g d                    }t          |          dk    sJ d}t	          j        t          |          5  t          j        ddgd           d d d            d S # 1 swxY w Y   d S )	NrN   rS   r  )rN   rS   re  rO   z*bins argument only works with numeric datar   re  )r   r  r   r   r   r   r   )rC   r   r   s      r+   test_value_counts_dtypesz(TestValueCounts.test_value_counts_dtypes  s(   #QH--6{{a#QH15556{{a#F===$9$9::6{{a:]9C000 	1 	1Qxa0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   .CCCc                    t          t          j        d          t          gd          }t	          ddg          }||fD ]V}t          j        |          }t          j        |d          }t          |          dk    sJ t          |          d	k    sJ Wt          t          d
          did          }t          j
        t          j        |          |           d S )NrB  timedelta64[ns]r.   r   z
2014-01-01FdropnarN   rO   z2014-01-01 00:00:00r  rR  )r   r6   timedelta64r   r   r   r  r   r   r@   r  )rC   tddtr4  vc
vc_with_naexp_dts          r+   test_value_counts_natz%TestValueCounts.test_value_counts_nat  s    R^E**C08IJJJ%.//b 	( 	(A#A&&B+Ae<<<Jr77a<<<<z??a'''''#8991=GLLL
u1"55v>>>>>r-   c                    t          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          t          ddd          g          }|                                }t          t          ddd          t          ddd          t          ddd          gt                    }t          g d|d          }t          j        ||           t          t          d	t          j	        g          d
          }t          d	t          j	        gt                    }t          j        ||           d S )Ni  rN   i  ip  r.   rc   rO   rN   r  r  z
2362-01-01ignore)errors)
r   r   r  r   r;   r@   r  r   r6   rV   )rC   r4  res	exp_indexrj   s        r+   &test_value_counts_datetime_outofboundsz6TestValueCounts.test_value_counts_datetime_outofbounds  sH   q!$$q!$$q!$$q!$$q!$$q!$$	
 	
 nndAq!!8D!Q#7#7$19M9MN
 
 
	 YYYig>>>
sC((( &,!788JJJlBF+6:::
sC(((((r-   c                    t          t          t          d                              }|                                }t          g dt	          g d          d          }t          j        ||d           |j                                        }|                                }|j	                                        |_	        t          j        ||d           d S )Naaabbcr  r`   r  r  Tcheck_index_type)
r   r   r=   r  r   r@   r  r  
as_orderedr'   r  s       r+   rX  z TestValueCounts.test_categorical  s    ;tH~~..//!!II-ooo>>W
 
 
 	vx$GGGG E!!!2244
vx$GGGGGGr-   c           	         t          t          t          d                              }t          j        |j        d<   |                                }t          g dt          g dg d          d          }t          j	        ||d	           |                    d
          }t          g dt          dddt          j        g          d          }t          j	        ||d	           t          t          t          d          dg d                    }t          j        |j        d<   |                                }t          g dt          g dg dd          d          }t          j	        ||d	           |                    d
          }t          g dt          dddt          j        gg dd          d          }t          j	        ||d	           d S )N
aaaaabbbccrN   )rd   rc   rO   r`   rT  r  r  Tr  Fr  )rd   rc   rO   rN   r]   r^   r_   )r^   r]   r_   )rO  r   rN  )
r   r   r=   r6   rV   ilocr  r   r@   r  r  s       r+   test_categorical_nansz%TestValueCounts.test_categorical_nans  s   ;tL112233Fq	!!II"???OOO
 
 

 	vx$GGGGu--LL 0#sC1H I IPW
 
 
 	vx$GGGG \**D___UUU
 
 Fq	!!II"*??  
 
 
 
 	vx$GGGGu--LL"c3'OOOT   
 
 
 	vx$GGGGGGr-   c           	      4   t          t          t          d          t          d          d                    }|                                }t          g dt          g dt          d          d          d          }t	          j        ||d	           d S )
NbbbaacabcdTrN  )rc   rO   rN   r   )r^   r]   r_   rq  r  r  r  )r   r   r=   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Gr-   c           
      b   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ddt          j        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          j        t          g d                              d          t          ddgddgd                     t          g d                              d          }t          g dddt          j        gd          }t          j        ||           d S )Nr)  Tr  rO   rN   Fr  r  rc   ra   r.   )ra   rc   rO   )皙$@re   re   re   r$  )r$  re   re   N)r$  r$  re   re   re   Nr  )r@   r  r   r  r   r;   r6   rV   r`  s      r+   test_dropnazTestValueCounts.test_dropna  s    	&&&''44D4AAAq6$W===	
 	
 	
 	&&&''44E4BBAq6$W===	
 	
 	

 	D6A:!+tfqj899FFdFSSAq6e}F!C!C!C'RRR	
 	
 	
 	D6A:!+tfqj899FFeFTT999T5"&$9HHH	
 	
 	
 	###$$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)))Crv+>WMMM
vx00000r-   r/   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 )NrN   rO   rc   ra   TF)	normalizer  )g      ?g333333?g?rT   rS   r.   
proportionr  g333333?g?)r   r6   rV   r8   r  r@   r  )rC   r/   r4  s_typedr   r   s         r+   test_value_counts_normalizedz,TestValueCounts.test_value_counts_normalizedC  s    A37aS1W$x!|344((5//%%U%CCOO"&#s+5999
 
 

 	vx000%%T%BB#Jfc3Zu===L
 
 
 	vx00000r-   c                 z   t          j        dgt           j                  }t          dgdgd          }t	          j        |          }t          j        ||           t          j        ddgt                    }t          ddgddgd          }t	          j        |          }t          j        ||           d S )Nr   r.   rN   r  r  rb   )	r6   rU   r   r   r   r  r@   r  r;   )rC   rk   r   r   s       r+   test_value_counts_uint64z(TestValueCounts.test_value_counts_uint64V  s    hwbi0001#eW7;;;#C((
vx000hE{&1111a&U'BBB#C((
vx00000r-   N)r  r	  r
  r  r  r  r  r  rX  r  r"  r%  r   r  r  r6   r   r;   r*  r,  r&   r-   r+   r  r    s        K K K1 1 1 1 1 1? ? ?) ) )4H H H)H )H )HVH H H$1 $1 $1L [Wrz68&DEE1 1 FE1$1 1 1 1 1r-   r  c                      e Zd Zd Zej                            d ej        g d           ej        dddej	        ddddej	        dg
           ej        g d	           ej        g d
e
           ej        g dej                  g          d             Zd Zej                            d eg d           ej        dd          g          d             Zej                            dg dg dfg dddgfg dg dfg          d             Zej                            dg d ej        g de
          fg          d             Zd S )!TestDuplicatedc           	         t          j        ddt           j        ddt           j        gt                    }t	          j        |          }t          j        g d          }t          j        ||           t	          j        |d          }t          j        g d          }t          j        ||           t	          j        |d          }t          j        g d	          }t          j        ||           t	          j        |d
          }t          j        g d          }t          j        ||           t          j        dt                    }t          t          ddt           j        t           j        gdz  dt           j        dt           j        gdz                      D ]
\  }}|||<   t	          j        |          }d
gdz  }dgdz  }t          j        ||z             }t          j        ||           t	          j        |d          }t          j        ||z             }t          j        ||           t	          j        |d
          }t          j        ||z             }t          j        ||           d S )Nr   rN   rO   r.   )FFFTFTfirstkeeplast)TFTFFFF)TFTTFT   rd   T)r6   rU   rV   r;   r   
duplicatedr@   rA   r  	enumeratezip)rC   keysr   r   r   tfalsestruess           r+   test_duplicated_with_nasz'TestDuplicated.test_duplicated_with_nase  sQ   xArvq!RV4FCCC!$''8DDDEE
#FH555!$W5558DDDEE
#FH555!$V4448DDDEE
#FH555!$U3338BBBCC
#FH555x(((Arvrv&*Q26,BQ,FGG
 
 	 	DAq DGG!$''1
8FUN++
#FH555!$V4448EFN++
#FH555!$U3338EEM**
#FH55555r-   case)
rN   rO   rN   ra   rc   rO   rd   rN   ra      g?g@gffffff
@g@gffffff@)
      ?      ?       @       @r?        @      @y      @      @r@  y      @      @r?  rA  y      @      @)
r]   r^   r]   er_   r^   rq  r]   rB  fr.   )
rN   r   rN      r   r   '   rN   rD     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
TTTTFFFFFFr0  r1  r3  Fr   r.   )	r6   rU   r   r5  r@   rA   r   r   r  )
rC   r=  	exp_firstexp_last	exp_false	res_firstres_last	res_falseidxr4  s
             r+   test_numeric_object_likesz(TestDuplicated.test_numeric_object_likes  s    4 HNNN
 
	 8NNN
 
 (	$T888	
#Iy999#Dv666
#Hh777$T666	
#Iy999 $KKt:!>!>!>? 	> 	>CG44I'	9===~~6~22H'(;;;E22I'	9==== ,,t: > > >? 	A 	AA'22I"9fY.?.?@@@|||00H"8VH-=-=>>>%00I"9fY.?.?@@@@	A 	Ar-   c                    g d}g d}t          j        d |D                       t          j        d |D                       t          j        d |D                       t          j        d |D                       t          j        d |D                       g}t          j        g d          }t          j        g d	          }||z  }|D ]}t          j        |d
          }t	          j        ||           t          j        |d          }	t	          j        |	|           t          j        |d          }
t	          j        |
|           t          |          t          |d          t          |t                    fD ]}|                    d
          }t	          j        ||           |                    d          }	t	          j        |	|           |                    d          }
t	          j        |
|           t          |          t          |d          t          |t                    fD ]}|                    d
          }t	          j	        |t          |                     |                    d          }	t	          j	        |	t          |                     |                    d          }
t	          j	        |
t          |                     d S )N)

2011-01-01
2011-01-02rS  r   
2011-01-03rT  z
2011-01-04rS  r   z
2011-01-06)
1 days2 daysrV  r   z3 daysrW  z4 daysrV  r   z6 daysc                 ,    g | ]}t          |          S r&   r   r(   rq  s     r+   r,   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>      ///qill///r-   c                 0    g | ]}t          |d           S )r  r  rY  rZ  s     r+   r,   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    @@@il333@@@r-   c                 0    g | ]}t          |d           S )r  rw   )r   rZ  s     r+   r,   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s%    666afQS)))666r-   c                 6    g | ]}t          j        |          S r&   )r6   r   rZ  s     r+   r,   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  s"    3331bmA&&333r-   c                 ,    g | ]}t          |          S r&   )r   rZ  s     r+   r,   z6TestDuplicated.test_datetime_likes.<locals>.<listcomp>  r[  r-   rH  rI  r0  r1  r3  Fr   r.   )
r6   rU   r   r5  r@   rA   r   r;   r   r  )rC   r
  r	  casesrJ  rK  rL  r=  rM  rN  rO  rP  r4  s                r+   test_datetime_likesz"TestDuplicated.test_datetime_likes  s   
 
 

 
 
 H//B///00H@@R@@@AAH66266677H3333344H//B///00
 HNNN
 
	 8NNN
 
 (	 &	E &	ED(G<<<I'	9==='6:::H'(;;;(E:::I'	9=== dd*---d&))) B B
  NNN88	+IyAAA>>v>66+Hh???NNN66	+IyAAAA tt:...t6*** E E
 LLgL66	&y&2C2CDDD<<V<44&x1A1ABBBLLeL44	&y&2C2CDDDDE5&	E &	Er-   r   r   rc   c                     |j         du sJ t          j        |                                t	          j        g d                     d S )NT)FFF)	is_uniquer@   rA   r5  r6   rU   )rC   r=  s     r+   test_unique_indexz TestDuplicated.test_unique_index  sI    ~%%%%
#DOO$5$5rx@U@U@U7V7VWWWWWr-   zarr, uniques)r   r   rN   rN   r   r   r   re  rf  r   )r   re  rf  r   )r^   r_   r]   r^   rh  rg  rg  rh  )r   r^   rO   r]   rc   r   )r   ri  rj  c                     t          j        t          |          t                    }||d d <   t	          j        |          }t          j        ||           d S r   )r6   r  r   r;   r   r5   r@   rA   )rC   rk   rZ   r   r   s        r+   test_unique_tuplesz!TestDuplicated.test_unique_tuples$  sQ      8CLL7773
#FH55555r-   zarray,expected)r?  r   rN   r        ?       @rm  )r?  y                y      ?        r  rm  c                 X    t          j        |          }t          j        ||           d S r  rh  )rC   rU   r   r   s       r+   test_unique_complex_numbersz*TestDuplicated.test_unique_complex_numbers:  s,     5!!
#FH55555r-   N)r  r	  r
  r<  r   r  r  r6   rU   rV   r;   r   rQ  ra  r   r   r   rd  rl  ro  r&   r-   r+   r.  r.  d  sL       %6 %6 %6N [BH33344BHc3RVS#sCMNNBH    BHGGGvVVVBH>>>bi  %	
 2&A &A3 2&APPE PE PEd [VeeIII&6&6a8K8K%LMMX X NMX [ QPP000
 A@@Z( 6557U7U7UV
	
 6 6 6 [ 322???vNNN	
	 	6 6	 	6 6 6r-   r.  c            	       >   e Zd Zej                            dej        dfej        dfej	        dfej
        dfej        dfg          d             Zej                            dej        dfej        dfej	        dfej
        dfej        dfg          d             ZdS )	TestHashTablezhtable, tm_dtypeStringFloatIntUIntc                    t          t          d|z   dz             }t           |d                    }|t          j        k    rt
          j        |j        d<   n.|t          j        k    rt
          j        d t          g|j        dd<   |
                    dd                              d	          }|j                            |
           |                    d          j        } |                                |j                  }t          j        ||            |                                |j        d          \  }}	t          j        ||           ||	         }
t          j        |
|j                   d S )Nmaker   r      rc   Tfracreplacedropr   r0  r1  )return_inverse)getattrr@   r   r   Float64HashTabler6   rV   locPyObjectHashTabler   samplereset_indexrW   r   drop_duplicatesr5   rA   )rC   htabletm_dtyper   makerr4  s_duplicatedexpected_uniqueresult_uniqueresult_inversereconstrs              r+   test_hashtable_uniquez#TestHashTable.test_hashtable_uniqueK  sg    FX-78855;;R(((AE#JJr+++ fdC0AE#c'N xxQx55AAtALL$$8$444 '66G6DDK(;<<
#M?CCC )/ )8 )
 )
%~ 	#M?CCC 0
#Hl.ABBBBBr-   c                    t          t          d|z   dz             }t           |d                    }|t          j        k    rt
          j        |j        d<   n.|t          j        k    rt
          j        d t          g|j        dd<   |
                    dd                              d	          }|j                            |
           |                                j        } |                                |j                  \  }}	|                                                                j        }
t          j        ||
           ||	|                   }|                                j        }t          j        ||           d S )Nrw  r   r  rx  ry  rc   Trz  r}  r   )r  r@   r   r   r  r6   rV   r  r  r   r  r  rW   r   r   r2   r  r  rA   )rC   r  r  r   r  r4  r  na_maskr  r  r  result_reconstructexpected_reconstructs                r+   test_hashtable_factorizez&TestHashTable.test_hashtable_factorizes  se    FX-78855;;R(((AE#JJr+++ fdC0AE#c'N xxQx55AAtALL$$8$444##%%,(.(:(:<;N(O(O%~
 '--//??AAH
#M?CCC +>7(+CD+2244;
#$68LMMMMMr-   N)r  r	  r
  r   r  r  r   r  StringHashTabler  Int64HashTableUInt64HashTabler  r  r&   r-   r+   rq  rq  J  s        [!8,* '*&(	
	 	C C	 	C< [!8,* '*&(	
	 	N N	 	N N Nr-   rq  c                      e Zd Zej        ej                            dej	        ej	        dddej	        dddej	        g
dej	        dddej	        dddej	        g
g          d                         Z
ej                            dej        d	                   d
             Zej                            dej        ej        g          d             Zd Zej        j        d             ZdS )TestRankrk   re   rN   rO   rc   rf   c                 0   ddl m} t          j        |          }t          j        |           }|                                }t          j        |          }t          j        ||<    ||          }t          j	        ||<   t          j        ||           d S )Nr   )rankdata)scipy.statsr  r6   rU   isfinitecopylibalgosrank_1drp   rV   r@   r%  )rC   rk   r  r   r   rj   s         r+   test_scipy_compatzTestRank.test_scipy_compat  s     	)(((((hsmmC   hhjj!#&&FD	hsmmFD	
vs+++++r-   r/   
AllIntegerc                    t          j        ddgt           j                  }t          j        ddg|          }|                    |           t	          |          }t          j        |          }t          j        ||           d S )NrN   rO   r.   r  r   )	r6   rU   r   r   r   r   rankr@   rA   )rC   r   r/   rj   r   rX   r   s          r+   rl   zTestRank.test_basic  sy    h1vRZ000xC...H%%%TllC
#FC00000r-   c                     t          j        ddgt           j                  }t          ddg|          }t	          j        t          j        |          |           d S )NrN   rO   r.   r   )r6   rU   r   r   r@   rA   r   r  )rC   r/   rj   r4  s       r+   rG  zTestRank.test_uint64_overflow  sS    h1vRZ000Au:U+++
#EJqMM377777r-   c                     t          j        g dg dg dgg          }d}t          j        t          |          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   )rd   ra   r>  )rF  r4  	   z%Array with ndim > 2 are not supportedr   )r6   rU   r   r   r   r   r  )rC   rk   r   s      r+   test_too_many_ndimszTestRank.test_too_many_ndims  s    hIIIyyy9:;;5]9C000 	 	JsOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"%A"c                 >   t          j        d          }t          j        |d                                          }|dk    sJ t          j        d                              dd          }t          j        |d                                          }|dk    sJ d S )Ni  T)pctrN   i  rO   )r6   ri   r   r  maxreshape)rC   rW   r   s      r+   test_pct_max_many_rowszTestRank.test_pct_max_many_rows  s     9%%F---1133{{{{9%%--i;;F---1133{{{{{{r-   N)r  r	  r
  r	  skip_if_no_scipyr   r  r  r6   rV   r  	typecodesrl   r   r   rG  r  
single_cpur  r&   r-   r+   r  r    s3       [VRVS#sBFAq!RVD"&#sCAsBFC	
 , ,  , [Wbl<&@AA1 1 BA1 [Wrz29&=>>8 8 ?>8   [    r-   r  c                     t          j        g d          } t          j        t          ddd          gd          }t          j        d         | |          }t          j        dgt           j                  }t          j        ||           t          j        d         ||           }t          j        g t           j                  }t          j        ||           t          j        d         | |          }t          j        dgt           j                  }t          j        ||           t          j        d         ||           }t          j        g t           j                  }t          j        ||           d S )Nr   r.   i        r;   rb   )	r6   rU   r   r  padr?   r@   rA   backfill)oldnewr   r   s       r+   !test_pad_backfill_object_segfaultr    sA   
(2S
!
!
!C
(HT2r**+3
7
7
7C\(#C--FxBG,,,H111\(#C--Fx"'***H111x(c22FxBG,,,H111x(c22Fx"'***H11111r-   c                       e Zd Zd Zd ZdS )TestTseriesUtilc                 `   t          g d          }t          t          t          d                              }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           t          ddg          }t          t          t          dd	                              }t          j        d         |j        |j                  }t          j        g d
t          j                  }t          j
        ||           d S )NrN   ra   r   r  int64_t)r   r   rN   rN   rN   rN   rO   rO   rO   rO   rO   rb   r.   rN   rd   ra   r   rb   rb   rb   rb   rb   )r   r=   r   r  r  rW   r6   rU   r?   r@   rA   rC   r  r  fillerexpect_fillers        r+   test_backfillzTestTseriesUtil.test_backfill  s    JJJDrOO$$"9-cj#*EE!F!F!FbgVVV
#FM::: QFmmDq"&&''"9-cj#*EE!5!5!5RWEEE
#FM:::::r-   c                 f   t          g d          }t          t          t          d                              }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           t          ddg          }t          t          j        dt          j                            }t          j        d         |j        |j                  }t          j        g dt          j                  }t          j
        ||           d S )	Nr  r  r  )rb   r   r   r   r   rN   rN   rN   rN   rN   rO   rO   r.   ra   r   r  )r   r=   r   r  r  rW   r6   rU   r?   r@   rA   ri   r   r  s        r+   test_padzTestTseriesUtil.test_pad  s    JJJDrOO$$i(SZ@@!F!F!FbgVVV
#FM::: QGnnBIarx00011i(SZ@@!5!5!5RWEEE
#FM:::::r-   N)r  r	  r
  r  r  r&   r-   r+   r  r    s2        ; ; ;"; ; ; ; ;r-   r  c                      t          j        g dd          t          j        g dd          g} t          j        |           rJ d S )N)|rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rc   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rO   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   rN   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   )|r                             r         r               r     r   r  r4  rF  r>  ra   rd   rc   rO   rN   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r4  rF  r>  ra   rd   rc   rO   rN   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r4  rF  r>  ra   rd   rc   rO   rN   r   r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  r  r  r  r   r  r4  rF  r>  ra   rd   rc   rO   rN   r   )r6   rU   r  is_lexsorted)failures    r+   test_is_lexsortedr    s    
} } }| @	
 @	
 @	
B 	} } }| @	
 @	
 @	
ECGJ $W-------r-   c                     t           j                            ddd                              t           j                  } t           j                            ddd                              t           j                  }t          j        | d          d         }t          j        | d          }|                    t           j                  }t          j	        ||           | dz  |z   }t          j        |d          d         }t          j
        || f          }|                    t           j                  }t          j	        ||           d S )Nr   r  r  	mergesort)r-  i@B )r6   r  r  r8   r?   r  groupsort_indexerargsortr@   rA   lexsort)r]   r^   r   r   r   s        r+   test_groupsort_indexerr    s   
	!T3''..rw77A
	!T3''..rw77A'4003F
 z!+...Hrw''H111
 d(Q,C'W55a8Fz1a&!!Hrw''H11111r-   c                  ~   t          j                    t          j                    t          d          dddt          d          g} t	          fd| D                       sJ t	          fd| D                       sJ k    rk    sJ k     sk    rJ t          j                    t          j                    k    sJ t          j                    t          j                    k    rJ t	          fd| D                       sJ t	          fd	| D                       sJ k    rk    sJ k     sk    rJ t          j                    t          j                    k    sJ t          j                    t          j                    k    rJ t          |           D ]}t          |          | k    sJ t          j        t          j                    gd
z            	                                 t          j        t          j                    gd
z            	                                 d S )Nz-infg}Ô%Ir   g}Ô%ITrp   c              3   $   K   | ]
}|k    V  d S r  r&   r(   rq   Infs     r+   	<genexpr>z%test_infinity_sort.<locals>.<genexpr>;  s'      **Asax******r-   c              3   ,   K   | ]}|k    p|u V  d S r  r&   r  s     r+   r  z%test_infinity_sort.<locals>.<genexpr><  s0      55qsQw"!s(555555r-   c              3   $   K   | ]
}|k    V  d S r  r&   r(   rq   NegInfs     r+   r  z%test_infinity_sort.<locals>.<genexpr>B  s'      --qv{------r-   c              3   ,   K   | ]}|k     p|u V  d S r  r&   r  s     r+   r  z%test_infinity_sort.<locals>.<genexpr>C  s0      ;;Qvz(Q&[;;;;;;r-       )
r  InfinityNegInfinityr  allr   sortedr6   rU   r  )ref_numspermr  r  s     @@r+   test_infinity_sortr  0  s_    


C!##Ffvq%usKH************5555H55555555#::#****Syys("3"5"55555 ""h&7&9&99999----H--------;;;;(;;;;;;;;V& 0 0 0 0v!!X%9%;%;;;;;#%%)=)?)?????X&& ( (d||x''''' Hh!!"R'((00222Hh"$$%*++3355555r-   c                     t          j                    } t          j                    }| t          j        k    rJ | t          j        k    rJ | t          j        k     rJ | t          j        k    rJ | t          j        k    rJ | t          j        k    sJ |t          j        k    rJ |t          j        k    rJ |t          j        k     rJ |t          j        k    rJ |t          j        k    rJ |t          j        k    sJ d S r  )r  r  r  r6   rV   )r  r  s     r+   test_infinity_against_nanr  Q  s    



C!##FRV||||bf}}}}RV||||bf}}}}bf}}}}"&====RVr-   c                  z    t          j        dt           j                  } t          j        |           }|| u sJ d S )Nr  r.   )r6   ri   r?   r  ensure_platform_int)rk   r   s     r+   test_ensure_platform_intr  d  s9    
)Crw
'
'
'C)#..FS======r-   c            
         d} t          j        t           j                  j        }t          j        t           j                  j        }t          j        t          |           5  t          j	        t          j
        ||g          |           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          |           d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg          t          j
        ddg                     d d d            n# 1 swxY w Y   t          j        t          |           5  t          j	        t          j
        ||g          t          j
        t           j        |g                     d d d            n# 1 swxY w Y   t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg                     t          j	        t          j
        ||g          t          j
        ||g          t          j
        ddg          t          j
        ddg                     d S )NzOverflow in int64 additionr   FT)arr_mask)b_mask)r  r  )r6   iinfor   r  minr   r   OverflowErrorr   checked_add_with_arrrU   rV   )r   r*  ns      r+   test_int64_add_overflowr  k  s+   
&C
A
A	}C	0	0	0 8 8"28QF#3#3Q7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 8 8"28QF#3#3Q7778 8 8 8 8 8 8 8 8 8 8 8 8 8 8	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 G G"28QF#3#3RXq!f5E5EFFFG G G G G G G G G G G G G G G	}C	0	0	0 
 
"HaVbh1v..5$-9P9P	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 
 
"HaVbh1v..rx7N7N	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 
 
"HaVHaVXudm,,8UDM**		
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
}C	0	0	0 L L"28QF#3#3RXrvqk5J5JKKKL L L L L L L L L L L L L L L 

!Q"(Aq6**RXtTl5K5K    

!Q"(Aq6**28T4L3I3I    

!Q
!Q4-((x&&	     s   $*BB!B >D

DD0*E&&E*-E*>GGG<>II
I
,AKKK2AMMM8A)O--O14O1AQ''Q+.Q+c                      e Zd Zd Zej                            dej        d         ej        d         z             d             Z	d Z
ej                            dej        d         ej        d         z             d             Zd Zej                            deeg          d	             Zd
 Zd Zd Zd Zd Zd Zd ZdS )TestModec                     t          g t          j        t          g t                              }t          j        t          j        g           |j	                   d S )Nr.   )r/   r'   )
r   r6   r   r   intr@   rA   r   moderW   rC   rj   s     r+   test_no_modezTestMode.test_no_mode  sH    Rrzr1E1E1EFFF
#EJrNNCJ?????r-   r
  r  rs  c                    dg}dg}dg}ddg}t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )NrN   r.   r   r@   rA   r   r  rW   r  rC   r
  
exp_singledata_single	exp_multi
data_multirX   rj   s           r+   test_mode_singlezTestMode.test_mode_single  s     S
cC	V
[+++Zr***
#EJsz$:$:CJGGG
sxxzz3///Zr***Yb)))
#EJsz$:$:CJGGG
sxxzz3/////r-   c                    t          dgt                    }t          j        t	          j        dg          |j                   t          g dt                    }t          j        t	          j        g d          |j                   d S )NrN   r.   r`   )r   r  r@   rA   r   r  rW   r;   r  s     r+   test_mode_obj_intzTestMode.test_mode_obj_int  st    aS$$$
#EJsOOSZ@@@___F333
#EJ$?$?LLLLLr-   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 )NrN   ra   rO   rc   r.   r  r  s           r+   test_number_modezTestMode.test_number_mode  s   S
cAga'F	S1WsQw&!q0
[+++Zr***
#EJsz$:$:CJGGG
sxxzz3///Zr***Yb)))
#EJsz$:$:CJGGG
sxxzz3/////r-   c                    dg}dgdz  dgdz  z   }t          |d          }t          |d          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nr^   r]   rO   rc   r_   r.   r  )rC   rj   r   rX   s       r+   test_strobj_modezTestMode.test_strobj_mode  s    euqyC519$T%%%S$$$
#EJsz$:$:CJGGG
sxxzz3/////r-   c                    dg}dgdz  dgdz  z   }t          ||          }t          ||          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nbarr   rO   rc   r.   r  )rC   r
  rj   r   rX   s        r+   test_strobj_multi_charzTestMode.test_strobj_multi_char  s    gw{eWq[(T$$$S###
#EJsz$:$:CJGGG
sxxzz3/////r-   c                    t          g dd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )N)
1900-05-03rU  
2013-01-02r   r.   )rU  r  r  rU  r  )rU  r  r  rU  r  r   r@   r   r   r  rW   r  r  rC   rj   rX   s      r+   test_datelike_modezTestMode.test_datelike_mode  s    ???xPPP???xPPP
'
3:(>(>LLL
sxxzz3///lL1BBBRRR
 
 
 	'
3:(>(>LLL
sxxzz3/////r-   c                    t          g dd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgd          }t          g dd          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )N)-1 days0 daysrV  r  r.   )rV  r  r  2 minrz   rz   rz   z-1 dayz-1 day 2 minr   r   r  r  s      r+   test_timedelta_modezTestMode.test_timedelta_mode  s    444<MNNN444<MNNN
'
3:(>(>LLL
sxxzz3///gw'/@AAAJJJ#
 
 
 	'
3:(>(>LLL
sxxzz3/////r-   c                     t          dg          }t          g d          }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nr   )rN   r   r   r  r  s      r+   test_mixed_dtypezTestMode.test_mixed_dtype  se    eWoo&&&''
#EJsz$:$:CJGGG
sxxzz3/////r-   c                 L   t          dgt          j                  }t          g dt          j                  }t          j        t          j        |j                  |j                   t          j        |                                |           t          ddgt          j                  }t          ddgt          j                  }t          j        t          j        |j                  |j                   t          j        |                                |           d S )Nr   r.   )rN   r   r   rN   )	r   r6   r   r@   rA   r   r  rW   r  r  s      r+   rG  zTestMode.test_uint64_overflow	  s    eWBI...&&&bi888
#EJsz$:$:CJGGG
sxxzz3///aZry111aZry111
#EJsz$:$:CJGGG
sxxzz3/////r-   c                 $   t          ddg          }|}t          |                                          j        }t	          j        ||           t          g d          }t          dgddg          }t          |                                          j        }t	          j        ||           t          g d          }t          ddgg d          }t          |                                          j        }t	          j        ||           d S )	NrN   rO   rN   r]   r]   r]   rT  rN   rN   rO   rc   rc   rc   r   )r   r   r  r  r@   rU  )rC   r_   rj   r  s       r+   rX  zTestMode.test_categorical	  s    AQiinn&
#C---&&3%QH555Qiinn&
#C---((1a&YYY777Qiinn&
#C-----r-   c                    t          g d          }t          g dt          j                  }t	          j        t          j        |          |j                   t          g d          }t          dgt                    }t	          j        t          j        |          |j                   t          g d          }t          ddgt          j                  }t	          j        t          j        |          |j                   t          g dd	          }t          j        t          d
          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   r.   r'  r]   r(  rN   rc   r!  r  TimedeltaIndexr   )r   r   r6   r   r@   rA   r   r  rW   r;   r   r   AttributeError)rC   rP  rj   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)rN   rN   rc   r   rR  rN   )r   r  r@   r  r  s       r+   test_ser_mode_with_namez TestMode.test_ser_mode_with_name4	  sR    YYYU+++1#E***
vx00000r-   N)r  r	  r
  r  r   r  r  r6   r  r  r  r  r  strr;   r  r  r"  r$  rG  rX  r,  r.  r&   r-   r+   r   r     sf       @ @ @ [T2<#=W@U#UVV0 0 WV0$M M M [T2<#=W@U#UVV0 0 WV0"0 0 0 [TC=110 0 2100 0 00 0 00 0 0	0 	0 	0. . .   *1 1 1 1 1r-   r   c                       e Zd Zej                            dddg          d             Zd Zej                            dddg          d             Zd	S )
TestDiffr/   r   rC  c                 j   t          j        d                              t           j                                      |                              dd          }|j                            dd          |d d df<   t          j	        |dd	          }t          j
        |j        d
          dz  }t          j        dd          |d d df<   t          j        dd          |dd d f<   t          j        ||           t          j	        |j        dd	          }t          j        ||j                   d S )Nr  rc   rd   r   nsrO   rN   r   axisr  r.   )r6   ri   r8   r   r  r  r/   typer   diffr  r  r  r@   rA   TrC   r/   rk   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7r-   c                     t          ddd          j        }d}t          j        t          |          5  t          j        |dd           d d d            d S # 1 swxY w Y   d S )	Nr^  rc   z
US/Pacific)r  r  z#cannot diff DatetimeArray on axis=1r   rN   r4  )r   _datar   r   
ValueErrorr   r7  )rC   r  r   s      r+   test_diff_ea_axiszTestDiff.test_diff_ea_axisM	  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   rN   rN   r   r   r.   rN   r   rb   r9   )r6   rU   r   r7  rV   r@   rA   r9  s        r+   test_diff_low_precision_intz$TestDiff.test_diff_low_precision_intT	  se    he444C##8RVQ2q1CCC
#FH55555r-   N)	r  r	  r
  r   r  r  r:  r>  rB  r&   r-   r+   r1  r1  <	  s        [Wx&:;;8 8 <;8' ' ' [Wvw&7886 6 986 6 6r-   r1  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)rc   rN   rc   rd   )rO   rc   rN   rN   )rc   rc   rN   rN   rd   rO   )r3   r6   r   r   union_with_duplicatesr@   rA   r   )rC  lvalsrvalsr   r   s        r+   test_union_with_duplicatesrH  \	  s     B|||EB|||Er$$$%%H(BJ'' :,UE::
#FH55555,UE::
'99999r-   )Nr   	itertoolsr   ru  numpyr6   r   pandas._libsr   r  r   r   pandas.util._test_decoratorsutil_test_decoratorsr	  pandas.core.dtypes.commonr   r   r	   r
   r   pandas.core.dtypes.dtypesr   r  pandasr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   pandas._testing_testingr@   pandas.core.algorithmscore
algorithmspandas.core.arraysr   r   pandas.core.commoncommonr   r!   r  r  r  r  r.  rq  r  r  r  r  r  r  r  r  r  r   r1  r  r  rU   rH  r&   r-   r+   <module>rZ     s         " " " " " "              * ) ) ) ) ) ) ) )              > = = = = =                                         &       & & & & & & & & &        !                Q9 Q9 Q9 Q9 Q9 Q9 Q9 Q9hX: X: X: X: X: X: X: X:v
  S1 S1 S1 S1 S1 S1 S1 S1l`1 `1 `1 `1 `1 `1 `1 `1Fc6 c6 c6 c6 c6 c6 c6 c6LON ON ON ON ON ON ON ONd7 7 7 7 7 7 7 7t2 2 2* ;  ;  ;  ;  ;  ;  ;  ;FF. F. F.R2 2 226 6 6B  &  0 0 0f[1 [1 [1 [1 [1 [1 [1 [1|6 6 6 6 6 6 6 6@ "(344
: 
: 54
: 
: 
:r-   