a
    OªfÓ@  ã                   @   sz  d dl mZ d dlmZ d dlmZ d dlZd dlZd dlm	Z	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlm  mZ d dlmZmZmZmZmZ ejdd	„ ƒZ G d
d„ dƒZ!G dd„ dƒZ"ej# $de %g d¢d¡ &ej'¡e %g d¢d¡ &ej'¡e %g d¢d¡ &ej'¡gdge %ej(dej'dd¡e %ej(dej'dd¡gdgg¡dd„ ƒZ)G dd„ dƒZ*dd„ Z+dd„ Z,dS ) é    )Údefaultdict)Údatetime)ÚproductN)ÚNAÚ	DataFrameÚ
MultiIndexÚSeriesÚarrayÚconcatÚmerge)Ú	safe_sort)Ú_decons_group_indexÚget_group_indexÚis_int64_overflow_possibleÚlexsort_indexerÚnargsortc                  C   s¦   d\} }}t tj d¡ | ||df¡tdƒd}|jdd|d< tj d¡ t|ƒ¡}|j	|  
¡ }|jd d	…  ¡ d
g |_t t|ƒ¡|_|d
  d	9  < ||fS )N)é üÿÿé   i   é   é   ÚABCDEFG©Úcolumnsé   ©ZaxisÚleftéÿÿÿÿÚright)r   ÚnpÚrandomÚdefault_rngÚintegersÚlistÚsumÚpermutationÚlenÚilocÚcopyr   ÚtolistÚarangeÚindex)ÚlowÚhighÚnr   Úir   © r/   úR/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/test_sorting.pyÚ
left_right   s    
ÿr1   c                   @   sÒ  e Zd Zejjdd„ ƒZdd„ Zej dddg¡dd	„ ƒZ	ej d
dde
eddƒƒe
edƒƒ e
eddƒƒ gdde
edƒƒe
eddƒƒ e
eddƒƒ gdde
edddƒƒe
edƒƒ e
eddƒƒ gdde
edƒƒe
eddƒƒ e
edddƒƒ gg¡dd„ ƒZej ddde
eddƒƒe
edƒƒ e
eddƒƒ gdde
edƒƒe
eddƒƒ e
eddƒƒ gdde
edddƒƒe
edƒƒ e
eddƒƒ gdde
edƒƒe
eddƒƒ e
edddƒƒ gg¡dd„ ƒZdS )ÚTestSortingc                 C   sX  t  t  d¡t  d¡t  d¡f¡}t  d¡}t||||||||t j d¡ d¡dœ	ƒ}| g d¢¡}| g d¢¡}| ¡ d }| ¡ d }|j	 
¡ \}}	t |j	|¡ |j	 
d	¡\}}	t |j	|¡ ttt|g d¢ jƒƒ}
t |
¡}
| |
¡ ¡ d }| ¡ D ]<\}}|| ||d d d
…  ks(J ‚|| |ks J ‚q t|ƒt|ƒksTJ ‚d S )Néè  iô  iÄ	  r   )	ÚAÚBÚCÚDÚEÚFÚGÚHÚvalues)r4   r5   r6   r7   r8   r9   r:   r;   )r;   r:   r9   r8   r7   r6   r5   r4   r<   r   r   )r   Zconcatenater)   r   r   r    Ústandard_normalÚgroupbyr#   r*   Z	sortlevelÚtmÚassert_index_equalr"   ÚmapÚtupler<   ÚcomZasarray_tuplesafeÚitemsr%   )Úselfr5   r4   ÚdfZlgZrgr   r   Z	exp_indexÚ_ZtupsÚexpectedÚkÚvr/   r/   r0   Útest_int64_overflow/   s:    "
÷ÿ
 zTestSorting.test_int64_overflowc                 C   sB   t dƒ}t ||||dœ¡}| g d¢¡}t|ƒt|ƒks>J ‚d S )NiE×  )ÚaÚbÚcÚd)Úranger   Ú	from_dictr>   r%   )rE   r<   ÚdataÚgroupedr/   r/   r0   Ú'test_int64_overflow_groupby_large_rangeW   s    z3TestSorting.test_int64_overflow_groupby_large_rangeÚaggÚmeanZmedianc           	      C   s  t j d¡}| ddd¡}| t|ƒt|ƒd ¡}t  ||| f¡}| t|ƒ¡}|| }t|t	dƒd}t  
dt|ƒf¡\|d< |d	< | t	dƒ¡}t|jjƒs¦J ‚tjd
d„ t jt j|dddddD ƒt	dƒd}tt  
t|ƒdf¡dd	g|d ¡ }t t||ƒƒ |¡ d S )Nr   i ðÿÿi   )i €  é   é   Zabcder   ZjimZjoec                 S   s   g | ]}|  ¡ ‘qS r/   )Zravel)Ú.0Úarr/   r/   r0   Ú
<listcomp>p   ó    zMTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<listcomp>r   r   rW   r   )Únames)r   r*   )r   r   r    r!   Úchoicer%   Zvstackr$   r   r"   Zzerosr>   r   Ú_grouperÚshaper   Úfrom_arraysZarray_splitÚuniqueZ
sort_indexr?   Úassert_frame_equalÚgetattr)	rE   rU   ÚrsÚarrr.   rF   ÚgrÚmiÚresr/   r/   r0   Ú-test_int64_overflow_groupby_large_df_shuffled^   s$    "þÿ
z9TestSorting.test_int64_overflow_groupby_large_df_shuffledzorder, na_position, expTÚlastrW   éi   én   ÚfirstFéh   rX   r   c                 C   sP   t jgd ttdƒƒ t jgd  g}t|||d}t |t j|t jd¡ d S )NrW   éd   )ZordersÚna_position©Zdtype)	r   Únanr"   rP   r   r?   Úassert_numpy_array_equalr	   Úintp)rE   Úorderrq   ÚexpÚkeysÚresultr/   r/   r0   Útest_lexsort_indexerz   s    &z TestSorting.test_lexsort_indexerzascending, na_position, expc                 C   sX   t jt jgd ttdƒƒ t jgd  dd}t|d||d}tj|t  |¡dd d S )	NrW   rp   ÚOrr   Ú	mergesort)ÚkindÚ	ascendingrq   F)Zcheck_dtype)r   r	   rs   r"   rP   r   r?   rt   )rE   r~   rq   rw   rD   ry   r/   r/   r0   Útest_nargsort˜   s
    .
ÿzTestSorting.test_nargsortN)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚslowrK   rT   Úparametrizerj   r"   rP   rz   r   r/   r/   r/   r0   r2   .   s^   
'
&ý&ý(ý(ýðþ
&ý&ý(ý(ýðþr2   c                   @   sŠ   e Zd Zdd„ Zejjdd„ ƒZejjej dg d¢¡dd„ ƒƒZ	ejjd	d
„ ƒZ
ejjej dg d¢¡ej dddg¡dd„ ƒƒƒZdS )Ú	TestMergec                 C   sj   t tj d¡ d¡tdƒdg d}t tj d¡ d¡tdƒdg d}t||dd	}t|ƒd
ksfJ ‚d S )Nr   )r3   r   ZABCDEFZG1r   é   ZG2Úouter©ÚhowiÐ  )r   r   r   r    r=   r"   r   r%   )rE   Zdf1Zdf2ry   r/   r/   r0   Útest_int64_overflow_outer_mergeÄ   s    þþz)TestMerge.test_int64_overflow_outer_mergec                 C   sˆ   |\}}t ||dd}t|ƒt|ƒks*J ‚tj|d |d  dd |jd d …d d…f jdd	}tj|d |dd |jd u s„J ‚d S )
Nr‰   rŠ   r   r   F)Zcheck_nameséþÿÿÿr   r   )r   r%   r?   Zassert_series_equalr&   r#   Úname)rE   r1   r   r   Úoutry   r/   r/   r0   Ú!test_int64_overflow_check_sum_colÑ   s    z+TestMerge.test_int64_overflow_check_sum_colr‹   )r   r   r‰   Úinnerc              	   C   sV   |\}}t ||dd}|j|j ¡ dd t t|ƒ¡|_t 	|t |||dd¡ d S )Nr‰   rŠ   T)Zinplace©r‹   Úsort)
r   Úsort_valuesr   r(   r   r)   r%   r*   r?   rc   )rE   r1   r‹   r   r   r   r/   r/   r0   Útest_int64_overflow_how_mergeÜ   s
    z'TestMerge.test_int64_overflow_how_mergec                 C   sX   |\}}t ||ddd}t |||j ¡  ¡ t ||ddd}t |||j ¡  ¡ d S )Nr   Fr’   )r   r?   rc   r   r(   )rE   r1   r   r   r   r/   r/   r0   Ú$test_int64_overflow_sort_false_orderæ   s
    z.TestMerge.test_int64_overflow_sort_false_orderr“   TFc                    sH  d\}}}t tj d¡ |||df¡ d¡tdƒd}| tj	¡j
}t|ƒsPJ ‚t||gdd}t tj d	¡ |||d df¡ d¡tdƒd}tj d
¡ t|ƒ|¡}	t|||j|	 gdd}tj d¡ t|ƒ¡|d< tj d¡ t|ƒ¡|d< tj d¡ t|ƒ¡}	|j|	  ¡ }t t|ƒ¡|_tj d¡ t|ƒ¡}	|j|	  ¡ }t t|ƒ¡|_ttƒttƒ }
}| tdƒ¡ ¡ D ]\}}|
|  |d ¡ q€| tdƒ¡ ¡ D ]\}}||  |d ¡ q°g }|
 ¡ D ]B\‰ }| ˆ tjg¡}t||ƒD ]\}}| ˆ ||f ¡ qüqÚ| ¡ D ],\‰ }ˆ |
vr&| ‡ fdd„|D ƒ¡ q&dd„ }t |tdƒddg d}||ƒ}|d  ¡ |d  ¡ |d  ¡ |d  ¡ @ tjt|ƒdddœ}|| }|||  ¡ ƒ}|  ¡ | !¡ A sô|dksôJ ‚t"||||d}|r4tdƒ}t# $||  ¡ || j%|dd¡ t# $|||ƒ¡ d S )N)r   r   i   r   r   Úint64r   r   T)Zignore_indexrˆ   rX   r   r   rW   é   c                 3   s   | ]}ˆ t j|f V  qd S ©N)r   rs   )rY   Úrv©rI   r/   r0   Ú	<genexpr>/  s   ûþÿzGTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.<genexpr>c                 S   s$   |   | j ¡ ¡} t t| ƒ¡| _| S r™   )r”   r   r(   r   r)   r%   r*   )rF   r/   r/   r0   Úalign8  s    zCTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.alignÚboolrr   )r   r   r‘   r‰   r‰   r’   r|   )r}   )&r   r   r   r    r!   Úastyper"   Úapplyr   Znuniquer<   r   r
   r^   r%   r&   r=   r$   r'   r)   r*   r   Z	set_indexZiterrowsÚappendrD   Úgetrs   r   ÚextendZnotnaZonesÚallÚanyr   r?   rc   r”   )rE   r‹   r“   r+   r,   r-   r   r`   r   r.   ZldictZrdictÚidxÚrowÚvalsZlvalÚrvalÚlvrš   r   r   ZjmaskÚmaskÚframeri   Zkcolsr/   r›   r0   Ú*test_int64_overflow_one_to_many_none_matchñ   sz    
þ"þþÿÿ
ú	

ü ÿz4TestMerge.test_int64_overflow_one_to_many_none_matchN)r€   r   r‚   rŒ   rƒ   r„   r…   r   r†   r•   r–   r­   r/   r/   r/   r0   r‡   Ã   s   



r‡   zcodes_list, shape)r   r   r   rˆ   r   r   r   rˆ   rp   )r   r   rX   rˆ   r   r   r   rˆ   )rW   r   r   r   rˆ   r   rW   rX   )rX   rW   r˜   é'  rr   rW   )r®   r®   c                 C   s>   t | |ddd}t||ƒ}t| |ƒD ]\}}t ||¡ q$d S )NT)r“   Zxnull)r   r   Úzipr?   rt   )Z
codes_listr`   Zgroup_indexZcodes_list2rL   rM   r/   r/   r0   Útest_deconsW  s    
r°   c                	   @   sX  e Zd Zej dg d¢g d¢gejedƒe	dejedƒe	dgg g gg¡dd„ ƒZ
ej d	d
dg¡ej dg d¢g d¢gg g gg¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ Zej dddedge g d¢¡dedge g d¢¡d dged!gg¡d"d#„ ƒZej dg d$¢g d%¢gdd&ejd'gdd'd&ejggg¡d(d)„ ƒZej d	d
dg¡d*d+„ ƒZdS ),ÚTestSafeSortzarg, exp©rˆ   r   r   r   rX   ©r   r   r   rˆ   rX   Zbaaacbrr   Zaaabbcc                 C   s(   t t |¡ƒ}t |¡}t ||¡ d S r™   )r   r   r	   r?   rt   )rE   Úargrw   ry   rH   r/   r/   r0   Útest_basic_sortt  s    
zTestSafeSort.test_basic_sortÚverifyTFzcodes, exp_codes)r   r   r   r   rˆ   r   r   rX   )rˆ   r   r   r   r   rˆ   r   rX   c           	      C   s\   t  g d¢¡}t  g d¢¡}t||d|d\}}t j|t jd}t ||¡ t ||¡ d S )Nr²   r³   T©Úuse_na_sentinelr¶   rr   ©r   r	   r   ru   r?   rt   )	rE   r¶   ÚcodesZ	exp_codesr<   rH   ry   Úresult_codesÚexpected_codesr/   r/   r0   Ú
test_codes„  s    	ÿ
zTestSafeSort.test_codesc                 C   sf   t  g d¢¡}t  g d¢¡}g d¢}t||dd\}}t jg d¢t jd}t ||¡ t ||¡ d S )Nr²   r³   )r   ée   éf   r   rˆ   r   éc   rX   T)r¸   )rˆ   r   r   r   r   rˆ   r   rX   rr   r¹   )rE   r<   rH   rº   ry   r»   r¼   r/   r/   r0   Útest_codes_out_of_bound—  s    z$TestSafeSort.test_codes_out_of_boundc                 C   s<   t jg d¢td}t|ƒ}t jg d¢td}t ||¡ d S )N)rM   r   r   rL   r   rM   rr   )r   r   r   rL   rM   rM   ©r   r	   Úobjectr   r?   rt   )rE   r<   ry   rH   r/   r/   r0   Útest_mixed_integer¢  s    zTestSafeSort.test_mixed_integerc                 C   sj   t jg d¢td}g d¢}t||ƒ\}}t jg d¢td}t jg d¢t jd}t ||¡ t ||¡ d S )N)rM   r   r   rL   rr   )r   r   r   rˆ   r   r   r   )r   r   rL   rM   )rˆ   r   r   r   rˆ   r   r   )r   r	   rÃ   r   ru   r?   rt   )rE   r<   rº   ry   r»   rH   r¼   r/   r/   r0   Útest_mixed_integer_with_codes¨  s    z*TestSafeSort.test_mixed_integer_with_codesc                 C   sZ   t jddt ¡ ddgtd}d}tjt|d t|ƒ W d   ƒ n1 sL0    Y  d S )Nr   r   r   rˆ   rr   z,'[<>]' not supported between instances of .*©Úmatch)	r   r	   r   ÚnowrÃ   rƒ   ÚraisesÚ	TypeErrorr   )rE   rf   Úmsgr/   r/   r0   Útest_unsortable±  s    zTestSafeSort.test_unsortablezarg, codes, err, msgr   Nz*Only np.ndarray, ExtensionArray, and Index)r   r   r   zOnly list-like objects or None)r   r   r   r   r   zvalues should be uniquec                 C   s>   t j||d t||d W d   ƒ n1 s00    Y  d S )NrÆ   )r<   rº   )rƒ   rÉ   r   )rE   r´   rº   ÚerrrË   r/   r/   r0   Útest_exceptions¸  s    	zTestSafeSort.test_exceptions©r   rˆ   r   ©r   r   rˆ   rˆ   r   c                 C   s0   t |dd}t|ƒ}t |dd}t ||¡ d S )NÚInt64rr   )r	   r   r?   Úassert_extension_array_equal)rE   r´   rw   rL   ry   rH   r/   r/   r0   Útest_extension_arrayÄ  s    z!TestSafeSort.test_extension_arrayc                 C   sh   t g d¢dd}t|g d¢d|d\}}t g d¢dd}tj g d¢tjd}t ||¡ t ||¡ d S )	NrÏ   rÑ   rr   )r   r   r   r   Tr·   rÐ   )r   r   r   r   )r	   r   r   ru   r?   rÒ   rt   )rE   r¶   rL   ry   rº   Zexpected_valuesr¼   r/   r/   r0   Útest_extension_array_codesÍ  s    z'TestSafeSort.test_extension_array_codes)r€   r   r‚   rƒ   r„   r†   r   r	   r"   rÃ   rµ   r½   rÁ   rÄ   rÅ   rÌ   rÊ   Ú
ValueErrorrÎ   rs   rÓ   rÔ   r/   r/   r/   r0   r±   s  sH   þúþ
þþ	
ýþ
,ÿ
r±   c                 C   sD   t jd| ddgtd}t|ƒ}t jddd| gtd}t ||¡ d S )NrM   rL   rr   rÂ   )Znulls_fixturer<   ry   rH   r/   r/   r0   Útest_mixed_str_null×  s    rÖ   c                  C   sd   t ddttgdd} g d¢}t | |g¡}t|ƒ}t t ddttgddg d¢g¡}t ||¡ d S )Nr   r   rÑ   rr   )r   r   rˆ   rˆ   )r   r   rˆ   rˆ   )r   r   r   ra   r   r?   r@   )Zarr1Zarr2Zmidxry   rH   r/   r/   r0   Útest_safe_sort_multiindexÞ  s    ÿr×   )-Úcollectionsr   r   Ú	itertoolsr   Únumpyr   rƒ   Zpandasr   r   r   r   r	   r
   r   Zpandas._testingZ_testingr?   Zpandas.core.algorithmsr   Zpandas.core.commonÚcoreÚcommonrC   Zpandas.core.sortingr   r   r   r   r   Zfixturer1   r2   r‡   r„   r†   ZtilerŸ   r—   r)   r°   r±   rÖ   r×   r/   r/   r/   r0   Ú<module>   sD   $		
  ýú
þû÷þ
d