o
    �¨ÊhÓ@  ã                   @   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é   ©ÚaxisÚleftéÿÿÿÿÚright)r   ÚnpÚrandomÚdefault_rngÚintegersÚlistÚsumÚpermutationÚlenÚilocÚcopyr   ÚtolistÚarangeÚindex)ÚlowÚhighÚnr   Úir   © r0   úK/var/www/html/env/lib/python3.10/site-packages/pandas/tests/test_sorting.pyÚ
left_right   s   
ÿr2   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   sP  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s¦J ‚d S )Néè  iô  iÄ	  r   )	ÚAÚBÚCÚDÚEÚFÚGÚHÚvalues)r5   r6   r7   r8   r9   r:   r;   r<   )r<   r;   r:   r9   r8   r7   r6   r5   r=   r   r   )r   Úconcatenater*   r   r    r!   Ústandard_normalÚgroupbyr$   r+   Ú	sortlevelÚtmÚassert_index_equalr#   ÚmapÚtupler=   ÚcomÚasarray_tuplesafeÚitemsr&   )Úselfr6   r5   ÚdfÚlgÚrgr   r   Ú	exp_indexÚ_ÚtupsÚexpectedÚkÚvr0   r0   r1   Ú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&   )rI   r=   ÚdataÚgroupedr0   r0   r1   Ú'test_int64_overflow_groupby_large_rangeW   s   z3TestSorting.test_int64_overflow_groupby_large_rangeÚaggÚmeanÚ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ƒsSJ ‚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 €  é   é   Úabcder   ÚjimÚjoec                 S   s   g | ]}|  ¡ ‘qS r0   )Úravel)Ú.0Úarr0   r0   r1   Ú
<listcomp>p   s    zMTestSorting.test_int64_overflow_groupby_large_df_shuffled.<locals>.<listcomp>r   r   r`   r   )Únames)r   r+   )r   r    r!   r"   Úchoicer&   Úvstackr%   r   r#   Úzerosr@   r   Ú_grouperÚshaper   Úfrom_arraysÚarray_splitÚuniqueÚ
sort_indexrB   Úassert_frame_equalÚgetattr)	rI   r]   ÚrsÚarrr/   rJ   ÚgrÚmiÚresr0   r0   r1   Ú-test_int64_overflow_groupby_large_df_shuffled^   s(   "þÿþz9TestSorting.test_int64_overflow_groupby_large_df_shuffledzorder, na_position, expTÚlastr`   éi   én   ÚfirstFéh   ra   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 )Nr`   éd   )ÚordersÚna_position©Údtype)	r   Únanr#   rX   r   rB   Úassert_numpy_array_equalr	   Úintp)rI   Úorderr‚   ÚexpÚkeysÚresultr0   r0   r1   Ú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 )	Nr`   r€   ÚOrƒ   Ú	mergesort)ÚkindÚ	ascendingr‚   F)Úcheck_dtype)r   r	   r…   r#   rX   r   rB   r†   )rI   r�   r‚   r‰   rH   r‹   r0   r0   r1   Útest_nargsort˜   s
   .
ÿzTestSorting.test_nargsortN)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚslowrS   r\   Úparametrizerz   r#   rX   rŒ   r’   r0   r0   r0   r1   r3   .   s`    
'
&ý&ý(ý(ýðþ
&ý&ý(ý(ýðþr3   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s3J ‚d S )Nr   )r4   r   ÚABCDEFÚG1r   é   ÚG2Úouter©ÚhowiÐ  )r   r   r    r!   r?   r#   r   r&   )rI   Údf1Údf2r‹   r0   r0   r1   Ú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 sBJ ‚d S )
NrŸ   r    r   r   F)Úcheck_nameséþÿÿÿr   r   )r   r&   rB   Úassert_series_equalr'   r$   Úname)rI   r2   r   r   Úoutr‹   r0   r0   r1   Ú!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)Úinplace©r¡   Úsort)
r   Úsort_valuesr   r)   r   r*   r&   r+   rB   rs   )rI   r2   r¡   r   r   r©   r0   r0   r1   Ú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   rB   rs   r   r)   )rI   r2   r   r   r©   r0   r0   r1   Ú$test_int64_overflow_sort_false_orderæ   s
   z.TestMerge.test_int64_overflow_sort_false_orderr®   TFc                    s@  d\}}}t tj d¡ |||df¡ d¡tdƒd�}| tj	¡j
}t|ƒs(J ‚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 ]\‰ }| ˆ 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 �sv|dk�svJ ‚t"||||d�}|�r–tdƒ}t# $||  ¡ || j%|dd�¡ t# $|||ƒ¡ d S )N)r   r   i   r   r   Úint64r   r   T)Úignore_indexr�   ra   r   r   r`   é   c                 3   s   � | ]
}ˆ t j|f V  qd S ©N)r   r…   )rf   Úrv©rQ   r0   r1   Ú	<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+   )rJ   r0   r0   r1   Úalign8  s   zCTestMerge.test_int64_overflow_one_to_many_none_match.<locals>.alignÚboolrƒ   )r   r   r«   rŸ   rŸ   r­   rŽ   )r�   )&r   r   r    r!   r"   Úastyper#   Úapplyr   Únuniquer=   r   r
   rj   r&   r'   r?   r%   r(   r*   r+   r   Ú	set_indexÚiterrowsÚappendrH   Úgetr…   r   ÚextendÚnotnaÚonesÚallÚanyr   rB   rs   r¯   )rI   r¡   r®   r,   r-   r.   r   rn   r   r/   ÚldictÚrdictÚidxÚrowÚvalsÚlvalÚrvalÚlvr¶   r¹   r©   ÚjmaskÚmaskÚframery   Úkcolsr0   r·   r1   Ú*test_int64_overflow_one_to_many_none_matchñ   s~   
þ"þþÿÿÿ	
ú€	

ü ÿz4TestMerge.test_int64_overflow_one_to_many_none_matchN)r“   r”   r•   r¤   r–   r—   r˜   rª   r™   r°   r±   rÓ   r0   r0   r0   r1   rš   Ã   s    



rš   zcodes_list, shape)r   r   r   r�   r   r   r   r�   r€   )r   r   ra   r�   r   r   r   r�   )r`   r   r   r   r�   r   r`   ra   )ra   r`   r´   é'  rƒ   r`   )rÔ   rÔ   c                 C   s>   t | |ddd�}t||ƒ}t| |ƒD ]
\}}t ||¡ qd S )NT)r®   Úxnull)r   r   ÚziprB   r†   )Ú
codes_listrn   Úgroup_indexÚcodes_list2rT   rU   r0   r0   r1   Ú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   ra   ©r   r   r   r�   ra   Úbaaacbrƒ   Úaaabbcc                 C   s(   t t |¡ƒ}t |¡}t ||¡ d S rµ   )r   r   r	   rB   r†   )rI   Úargr‰   r‹   rP   r0   r0   r1   Útest_basic_sortt  s   
zTestSafeSort.test_basic_sortÚverifyTFzcodes, exp_codes)r   r   r   r   r�   r   r   ra   )r�   r   r   r   r   r�   r   ra   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â   rƒ   ©r   r	   r   r‡   rB   r†   )	rI   râ   ÚcodesÚ	exp_codesr=   rP   r‹   Úresult_codesÚexpected_codesr0   r0   r1   Ú
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   ra   T)rä   )r�   r   r   r   r   r�   r   ra   rƒ   rå   )rI   r=   rP   ræ   r‹   rè   ré   r0   r0   r1   Ú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)rU   r   r   rT   r   rU   rƒ   )r   r   r   rT   rU   rU   ©r   r	   Úobjectr   rB   r†   )rI   r=   r‹   rP   r0   r0   r1   Ú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)rU   r   r   rT   rƒ   )r   r   r   r�   r   r   r   )r   r   rT   rU   )r�   r   r   r   r�   r   r   )r   r	   rð   r   r‡   rB   r†   )rI   r=   ræ   r‹   rè   rP   ré   r0   r0   r1   Útest_mixed_integer_with_codes¨  s   z*TestSafeSort.test_mixed_integer_with_codesc                 C   s\   t jddt ¡ ddgtd�}d}tjt|d�� t|ƒ W d   ƒ d S 1 s'w   Y  d S )Nr   r   r   r�   rƒ   z,'[<>]' not supported between instances of .*©Úmatch)	r   r	   r   Únowrð   r–   ÚraisesÚ	TypeErrorr   )rI   rv   Úmsgr0   r0   r1   Ú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   ƒ d S 1 sw   Y  d S )Nró   )r=   ræ   )r–   rö   r   )rI   rà   ræ   Úerrrø   r0   r0   r1   Ú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ÚInt64rƒ   )r	   r   rB   Úassert_extension_array_equal)rI   rà   r‰   rT   r‹   rP   r0   r0   r1   Ú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þ   rƒ   )r   r   r   r   Trã   rý   )r   r   r   r   )r	   r   r   r‡   rB   rÿ   r†   )rI   râ   rT   r‹   ræ   Úexpected_valuesré   r0   r0   r1   Ú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û   r…   r   r  r0   r0   r0   r1   rÛ   s  sJ    þúþ
þþ	
ýþ
,ÿ
rÛ   c                 C   sD   t jd| ddgtd�}t|ƒ}t jddd| gtd�}t ||¡ d S )NrU   rT   rƒ   rï   )Únulls_fixturer=   r‹   rP   r0   r0   r1   Ú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þ   rƒ   )r   r   r�   r�   )r   r   r�   r�   )r   r   r   ro   r   rB   rC   )Úarr1Úarr2Úmidxr‹   rP   r0   r0   r1   Útest_safe_sort_multiindexÞ  s   ÿr	  )-Úcollectionsr   r   Ú	itertoolsr   Únumpyr   r–   Úpandasr   r   r   r   r	   r
   r   Úpandas._testingÚ_testingrB   Úpandas.core.algorithmsr   Úpandas.core.commonÚcoreÚcommonrF   Úpandas.core.sortingr   r   r   r   r   Úfixturer2   r3   rš   r—   r™   Útiler»   r²   r*   rÚ   rÛ   r  r	  r0   r0   r0   r1   Ú<module>   sF    $		
  ýú
þû÷þ
d