o
    $ÎjÓ@  ã                   @   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/   úZ/var/www/html/Deteccion_Ine/venv/lib/python3.10/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   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)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ƒ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 €  é   é   Zabcder   ZjimZjoec                 S   s   g | ]}|  ¡ ‘qS r/   )Zravel)Ú.0Úarr/   r/   r0   Ú
<listcomp>p   s    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   Úorderrp   Ú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   ro   ÚOrq   Ú	mergesort)ÚkindÚ	ascendingrp   F)Zcheck_dtype)r   r	   rr   r"   rP   r   r?   rs   )rE   r}   rp   rv   rD   rx   r/   r/   r0   Útest_nargsort˜   s
   .
ÿzTestSorting.test_nargsortN)Ú__name__Ú
__module__Ú__qualname__ÚpytestÚmarkÚslowrK   rT   Úparametrizeri   r"   rP   ry   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s3J ‚d S )Nr   )r3   r   ZABCDEFZG1r   é   ZG2Úouter©ÚhowiÐ  )r   r   r   r    r=   r"   r   r%   )rE   Zdf1Zdf2rx   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 sBJ ‚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   Úoutrx   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?   rb   )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?   rb   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                    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)Zignore_indexr‡   rX   r   r   rW   é   c                 3   s    | ]
}ˆ t j|f V  qd S ©N)r   rr   )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Úboolrq   )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   Úgetrr   r   ÚextendZnotnaZonesÚallÚanyr   r?   rb   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Úframerh   Zkcolsr/   rš   r0   Ú*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¬   r/   r/   r/   r0   r†   Ã   s    



r†   zcodes_list, shape)r   r   r   r‡   r   r   r   r‡   ro   )r   r   rX   r‡   r   r   r   r‡   )rW   r   r   r   r‡   r   rW   rX   )rX   rW   r—   é'  rq   rW   )r­   r­   c                 C   s>   t | |ddd}t||ƒ}t| |ƒD ]
\}}t ||¡ qd S )NT)r’   Zxnull)r   r   Úzipr?   rs   )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baaacbrq   Zaaabbcc                 C   s(   t t |¡ƒ}t |¡}t ||¡ d S r˜   )r   r   r	   r?   rs   )rE   Úargrv   rx   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µ   rq   ©r   r	   r   rt   r?   rs   )	rE   rµ   ÚcodesZ	exp_codesr<   rH   rx   Ú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   rq   r¸   )rE   r<   rH   r¹   rx   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   rq   )r   r   r   rL   rM   rM   ©r   r	   Úobjectr   r?   rs   )rE   r<   rx   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   rq   )r   r   r   r‡   r   r   r   )r   r   rL   rM   )r‡   r   r   r   r‡   r   r   )r   r	   rÂ   r   rt   r?   rs   )rE   r<   r¹   rx   rº   rH   r»   r/   r/   r0   Ú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‡   rq   z,'[<>]' not supported between instances of .*©Úmatch)	r   r	   r   ÚnowrÂ   r‚   ÚraisesÚ	TypeErrorr   )rE   re   Ú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   ƒ d S 1 sw   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ÚInt64rq   )r	   r   r?   Úassert_extension_array_equal)rE   r³   rv   rL   rx   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Ð   rq   )r   r   r   r   Tr¶   rÏ   )r   r   r   r   )r	   r   r   rt   r?   rÑ   rs   )rE   rµ   rL   rx   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Í   rr   rÒ   rÓ   r/   r/   r/   r0   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 )NrM   rL   rq   rÁ   )Znulls_fixturer<   rx   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Ð   rq   )r   r   r‡   r‡   )r   r   r‡   r‡   )r   r   r   r`   r   r?   r@   )Zarr1Zarr2Zmidxrx   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>   sF    $		
  ýú
þû÷þ
d