o
    mqivh                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlZd dlmZ d dlmZ G dd dZdS )	    N)Dtype)is_bool_dtype)NumpyEADtype)na_value_for_dtype)nargsortc                   @   s  e Zd ZU dZdd Zdd Zejdddgd	d
 Z	dd Z
dd Zdd Zdd Zejdddgdd Zdd Zdd Zdd Zdd Zejd d!d"gd#d$ Zejd d!d"gd%d& Zejd'd(d)d*d+d,dejfd-dejfd.d/gd0d1 Zd2d3 Zejd4d5ejg d6ed7d8fd9ejg d:ed7d8fgd;d< Zejd=ddgd>d? Zejd=ddgd@dA Zejd=ddgdBdC ZejdDg dEdFdG ZejdHe j!dIdJ gejd dKdJ e j"gdLdM Z#dNdO Z$dPdQ Z%dRdS Z&dTdU Z'dVdW Z(dXdY Z)e*dZZ+e,e-d[< d\d] Z.d^d_ Z/d`da Z0ejdbddgejdcddg defdfg dgfdhg difgdjdk Z1dldm Z2ejdndoddgdpdq Z3ejdcdrdsdsggdsdodsggdfdfdoggdodsdfggdtdsdsgggdudv Z4ejdng dwdxdy Z5dzd{ Z6d|d} Z7d~d Z8dd Z9dd Z:dd Z;dd Z<ejddfdodhg dgdd Z=ejddhddoie>dfdsi e>dfdodhgi e>dfdhddie?dfgdd Z@dd ZAdd ZBdd ZCdd ZDejdHe je j!e jEgdd ZFdd ZGdS )BaseMethodsTestsz%Various Series and DataFrame methods.c                 C   s@   ddl m} |jd|dd}|jtjksJ |j|jksJ d S )Nr   )_default_hash_keyzutf-8F)encodingZhash_keyZ
categorize)Zpandas.core.util.hashingr   Z_hash_pandas_objectdtypenpZuint64shape)selfdatar   res r   j/home/app/PaddleOCR-VL/.venv_paddleocr/lib/python3.10/site-packages/pandas/tests/extension/base/methods.pytest_hash_pandas_object   s   z(BaseMethodsTests.test_hash_pandas_objectc                 C   sF   t |dstdt|  t|j}|jd }|jdu s!J d S )Nvalue_countsz$value_counts is not implemented for dropnaT)	hasattrpytestskiptypeinspect	signaturer   
parametersdefault)r   r   sigkwargr   r   r    test_value_counts_default_dropna    s
   

z1BaseMethodsTests.test_value_counts_default_dropnar   TFc                 C   s`   |d d }|r||    }n|}t|j|d }t|j|d }t|| d S )N
   )r   )isnapdSeriesr   
sort_indextmassert_series_equal)r   Zall_datar   otherresultexpectedr   r   r   test_value_counts(   s   z"BaseMethodsTests.test_value_countsc                 C   s  |d d   }t||   }tj||jd}|jdd }t	|tj
s;tjdt| gt| |jdd}ntjd|jdd}dt| ||d	k< t	|jtjrb|jjtju rb|d
}n#t|jdddksrt	|jtjrx|d}nt|jtju r|d}t|| d S )Nr    r
   T)	normalize   Z
proportion)indexnameg        r   Zfloat64Zstorage Zpyarrowzdouble[pyarrow]ZFloat64)uniquer   arrayr!   r"   r#   r
   r   r$   
isinstanceZCategoricallenr.   ZStringDtypena_valuenanZastypegetattrZ
ArrowDtyper   ZNAr%   r&   )r   r   valuesserr(   r)   r   r   r    test_value_counts_with_normalize5   s&   
z1BaseMethodsTests.test_value_counts_with_normalizec                 C   s8   t d|i}|jdd}t ddg}t|| d S )NAcolumnsaxisr   r-   )r"   	DataFramecountr#   r%   r&   )r   data_missingdfr(   r)   r   r   r   
test_countS   s   zBaseMethodsTests.test_countc                 C   s&   t |}| }d}||ksJ d S )Nr-   )r"   r#   r@   )r   rA   r9   r(   r)   r   r   r   test_series_countY   s   
z"BaseMethodsTests.test_series_countc                 C   s$   t |t}t|t jsJ d S N)r"   r#   applyidr3   r   r   r(   r   r   r   test_apply_simple_series`   s   z)BaseMethodsTests.test_apply_simple_series	na_actionNignorec                 C   s*   |j dd |d}| }t|| d S )Nc                 S      | S rE   r   xr   r   r   <lambda>f       z+BaseMethodsTests.test_map.<locals>.<lambda>)rJ   )mapZto_numpyr%   assert_numpy_array_equal)r   rA   rJ   r(   r)   r   r   r   test_mapd   s   zBaseMethodsTests.test_mapc                 C   s8   t | }t tjg dtjd}t|| d S N   r   r-   r+   )r"   r#   argsortr   r2   intpr%   r&   )r   data_for_sortingr(   r)   r   r   r   test_argsortj   s   zBaseMethodsTests.test_argsortc                 C   s,   |  }tjg dtjd}t|| d S rT   )rW   r   r2   rX   r%   rR   )r   data_missing_for_sortingr(   r)   r   r   r   test_argsort_missing_arrayp   s   z+BaseMethodsTests.test_argsort_missing_arrayc                 C   sj   d}t jt|d t| }W d    n1 sw   Y  ttjg dtjd}t 	|| d S )Nz;The behavior of Series.argsort in the presence of NA valuesmatch)r-   r   r+   )
r%   assert_produces_warningFutureWarningr"   r#   rW   r   r2   rX   r&   )r   r[   msgr(   r)   r   r   r   test_argsort_missingv   s   z%BaseMethodsTests.test_argsort_missingc                 C   s   |j j}d}d}|rd}d}| |ksJ | dksJ |g d}| |ks-J | dks5J | dks=J | dksEJ d S )Nr-      r   rV   )rV   r   r   r-   r-   rV   )r
   _is_booleanargmaxargmintake)r   rY   r[   r5   is_boolZ
exp_argmaxZexp_argmax_repeatedr   r   r   r   test_argmin_argmax}   s   z#BaseMethodsTests.test_argmin_argmaxmethodrf   rg   c                 C   sL   d}t jt|d t|d d |  W d    d S 1 sw   Y  d S )Nattempt to getr]   r   )r   raises
ValueErrorr7   )r   rk   r   err_msgr   r   r   test_argmin_argmax_empty_array   s   "z/BaseMethodsTests.test_argmin_argmax_empty_arrayc                 C   s\   d}t |j||g|jd}tjt|d t||  W d    d S 1 s'w   Y  d S )Nrl   r+   r]   )r   _from_sequencer
   r   rm   rn   r7   )r   rk   r   r5   ro   data_nar   r   r   test_argmin_argmax_all_na   s
   "z*BaseMethodsTests.test_argmin_argmax_all_nazop_name, skipna, expected)idxmaxTr   )idxminTrV   )rf   Tr   )rg   TrV   rt   ru   )rf   Fr_   )rg   Fr_   c           	      C   s   d }d}| dr|dkrt}| dr t|r t}d| }t|}tj||d t|||d}W d    n1 s?w   Y  t	|| d S )Nz$The behavior of Series.argmax/argminargr_   idxzThe behavior of Series.r]   skipna)

startswithra   r   isnanr"   r#   r%   r`   r7   Zassert_almost_equal)	r   r[   Zop_namery   r)   warnrb   r9   r(   r   r   r   test_argreduce_series   s   

z&BaseMethodsTests.test_argreduce_seriesc                 C   s~   |}t jtdd |jdd W d    n1 sw   Y  t jtdd |jdd W d    d S 1 s8w   Y  d S )Nr0   r]   Frx   )r   rm   NotImplementedErrorrg   rf   )r   r[   r   r   r   r   +test_argmax_argmin_no_skipna_notimplemented   s   "z<BaseMethodsTests.test_argmax_argmin_no_skipna_notimplementedzna_position, expectedlastrU   rX   r+   firstr-   rV   r   c                 C   s   t ||d}t|| d S )N)na_position)r   r%   rR   )r   r[   r   r)   r(   r   r   r   test_nargsort   s   	zBaseMethodsTests.test_nargsort	ascendingc                 C   sd   t |}|j||d}|jg d }|s*| dkr#|jg d }n|jg d }t|| d S )Nr   keyrU   rV   )r   r-   rV   )r-   r   rV   )r"   r#   sort_valuesilocZnuniquer%   r&   )r   rY   r   sort_by_keyr9   r(   r)   r   r   r   test_sort_values   s   
z!BaseMethodsTests.test_sort_valuesc                 C   sJ   t |}|j||d}|r|jg d }n|jg d }t|| d S )Nr   rU   )r   rV   r-   )r"   r#   r   r   r%   r&   )r   r[   r   r   r9   r(   r)   r   r   r   test_sort_values_missing   s   
z)BaseMethodsTests.test_sort_values_missingc                 C   sX   t g d|d}|ddg}t jg d|g ddg dd}t|| d S )N)r-   rV   r-   r;   Br;   r   )r-   r-   rV   rU   r.   )r"   r?   r   rh   r%   assert_frame_equal)r   rY   r   rB   r(   r)   r   r   r   test_sort_values_frame   s   z'BaseMethodsTests.test_sort_values_framekeep)r   r   Fc                 C   sh   | g d}|j|d}|dkrtg d}n|dkr%tg d}ntg d}t|| d S )N)r   r-   r   r-   )r   r   )FFTTr   TTFF)TTTT)rh   
duplicatedr   r2   r%   rR   )r   r   r   arrr(   r)   r   r   r   test_duplicated   s   z BaseMethodsTests.test_duplicatedboxc                 C   rL   rE   r   rM   r   r   r   rO     rP   zBaseMethodsTests.<lambda>c                 C   s   |   S rE   )r1   rM   r   r   r   rO         c                 C   sb   ||j |d |d g|jd}||}t|dksJ t|t|s%J |d |d ks/J d S )Nr   r+   r-   )rq   r
   r4   r3   r   )r   r   r   rk   r   r(   r   r   r   test_unique  s
    zBaseMethodsTests.test_uniquec                 C   s   t j|dd\}}|jj}|r!tjg dtjd}|ddg}ntjg dtjd}|g d}t	|| t
|| d S )	NTZuse_na_sentinel)r   r   r_   r_   r-   r-   r   r   r+   r      )r   r   r_   r_   r-   r-   r   rV   )r   r      )r"   	factorizer
   re   r   r2   rX   rh   r%   rR   assert_extension_array_equal)r   data_for_groupingcodesuniquesri   expected_codesexpected_uniquesr   r   r   test_factorize  s   zBaseMethodsTests.test_factorizec                 C   sh   t j|dd\}}|jdd\}}t|| t|| t|tt |ks*J |j|jks2J d S )NTr   )r"   r   r%   rR   r   r4   r1   r
   )r   r   Zcodes_1Z	uniques_1Zcodes_2Z	uniques_2r   r   r   test_factorize_equivalence!  s   z+BaseMethodsTests.test_factorize_equivalencec                 C   s^   t |d d \}}tjg tjd}t|jg |d d jd}t	|| t
|| d S )Nr   r+   )r"   r   r   r2   rX   r   rq   r
   r%   rR   r   )r   r   r   r   r   r   r   r   r   test_factorize_empty*  s
   z%BaseMethodsTests.test_factorize_emptyc                 C   sR   | ddg}td|i}| }|jd }||}||jd< t|| d S )Nr-   r;   )r   r   )rh   r"   r?   copyr   fillnar%   r   )r   rA   r   rB   Zdf_orig
filled_valr(   r   r   r   test_fillna_copy_frame2  s   


z'BaseMethodsTests.test_fillna_copy_framec                 C   sP   | ddg}tj|dd}| }|d }||}||jd< t|| d S )Nr-   F)r   r   )rh   r"   r#   r   r   r   r%   r&   )r   rA   r   r9   Zser_origr   r(   r   r   r   test_fillna_copy_series>  s   

z(BaseMethodsTests.test_fillna_copy_seriesc                 C   sJ   d}t jt|d ||dg W d    d S 1 sw   Y  d S )Nz!Length of 'value' does not match.r]   r-   )r   rm   rn   r   rh   )r   rA   rb   r   r   r   test_fillna_length_mismatchI  s   "z,BaseMethodsTests.test_fillna_length_mismatchbool_combine_le_expected_dtypec                    s   |d\}}t |}t |}||dd }t t jdd tt|t|D | jd}t|| |j	d  | dd }t t j fd	dt|D | jd}t|| d S )
NrV   c                 S      | |kS rE   r   x1Zx2r   r   r   rO   W  r   z2BaseMethodsTests.test_combine_le.<locals>.<lambda>c                 S   s   g | ]\}}||kqS r   r   .0abr   r   r   
<listcomp>Z      z4BaseMethodsTests.test_combine_le.<locals>.<listcomp>r+   r   c                 S   r   rE   r   r   r   r   r   rO   a  r   c                    s   g | ]}| kqS r   r   r   r   valr   r   r   d      )
r"   r#   combiner2   ziplistr   r%   r&   r   )r   data_repeated
orig_data1
orig_data2s1s2r(   r)   r   r   r   test_combine_leQ  s(   


z BaseMethodsTests.test_combine_lec                    s4  |d\}}t |}t |}z,tjdd t |dd tt|t|D }W d    n1 s6w   Y  W n) tye   t	t |
|dd  W d    Y d S 1 s]w   Y  Y d S w |
|dd }t|| |jd	  |
 d
d }t | fddt|D }t|| d S )NrV   rK   )Zoverc                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r   v  r   z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>c                 S      | | S rE   r   r   r   r   r   rO   }  r   z3BaseMethodsTests.test_combine_add.<locals>.<lambda>c                 S   r   rE   r   r   r   r   r   rO     r   r   c                 S   r   rE   r   r   r   r   r   rO     r   c                    s   g | ]}|  qS r   r   r   r   r   r   r     r   )r"   r#   r   Zerrstaterq   r   r   	TypeErrorr   rm   r   r%   r&   r   )r   r   r   r   r   r   r)   r(   r   r   r   test_combine_addj  s8   



z!BaseMethodsTests.test_combine_addc                 C   sX   t |d d }t j|dd g dd}||}t |d d }t|| d S )Nrd   rV      )rV   rd   r   r   )r"   r#   Zcombine_firstr%   r&   )r   r   r   r   r(   r)   r   r   r   test_combine_first  s
   
z#BaseMethodsTests.test_combine_firstframezperiods, indices)rV   rd   r   r_   r_   r   )r   r-   rV   rd   r   rV   )r_   r_   r   r-   rV   c           	      C   s   |d d }t j|dd}t j|j|dddd}|r@|jddjdd|}t j|t jdgd dd|gdd	}tj}n||}tj	}||| d S )
Nr   r;   r/   TZ
allow_fillr-   )r   r   r=   )
r"   r#   rh   to_frameZassignshiftconcatr%   r   r&   )	r   r   r   periodsindicessubsetr)   r(   comparer   r   r   test_container_shift  s   
z%BaseMethodsTests.test_container_shiftc                 C   sB   | d}|d |d ksJ |d |d< |d |d ksJ d S )Nr   r-   r   rH   r   r   r   test_shift_0_periods  s   
z%BaseMethodsTests.test_shift_0_periodsr   r-   c           	      C   s   |d d }t |jrtj}ntj}z||| W n ty,   tt| d Y nw t	
|}||}t	
||||}t|| t	|dgd d}||}|dkretjddddg}n	dddtjtjg}t	||d}t|| d S )Nr   z does not support diffg      ?r   r-   r   )r   r
   operatorxorsub	Exceptionr   r   r   r"   r#   diffr   r%   r&   r?   r   r6   r   )	r   r   r   opsr(   r)   rB   r   r   r   r   	test_diff  s(   



zBaseMethodsTests.test_diffr_   r   c                 C   s4   |d d }| |}|j|dd}t|| d S )NrV   Tr   r   rh   r%   r   )r   r   r   r   r   r(   r)   r   r   r   test_shift_non_empty_array  s   
z+BaseMethodsTests.test_shift_non_empty_array)r   r_   r   r-   r   c                 C   s*   |d d }| |}|}t|| d S )Nr   )r   r%   r   )r   r   r   emptyr(   r)   r   r   r   test_shift_empty_array  s   
z'BaseMethodsTests.test_shift_empty_arrayc                 C   s8   | d}||usJ |d d  d}||usJ d S )Nr   rV   r   rH   r   r   r   test_shift_zero_copies  s   
z'BaseMethodsTests.test_shift_zero_copiesc                 C   sh   |d d }|d }|j d|d}|g d}t|| |j d|d}|g d}t|| d S )Nr   r   r-   )
fill_value)r   r   r-   rV   r   )rV   rd   r   r   r   )r   r   r   r   r(   r)   r   r   r   test_shift_fill_value  s   z&BaseMethodsTests.test_shift_fill_valuec                 C   s<   t jtdd t| W d    d S 1 sw   Y  d S )Nzunhashable typer]   )r   rm   r   hashr   r   r   r   r   test_not_hashable  s   
"z"BaseMethodsTests.test_not_hashablec                 C   s>   t |}|r| }t j|}t j|}t|| d S rE   )r"   r#   r   utilZhash_pandas_objectr%   assert_equal)r   r   as_framer   r   r   r   r   test_hash_pandas_object_works  s   
z.BaseMethodsTests.test_hash_pandas_object_worksc           
      C   s  |j jr
| ||S |\}}}|g d}|rt|}||dks&J |j|dddks1J ||dks:J |j|dddksEJ ||dksNJ |j|dddksYJ ||ddg}tjddgtj	d}t
|| tg d	}	|j||	d
dksJ d S )NrU   r   rightZsider-   rV   rd   r+   r   sorter)r
   re   _test_searchsorted_bool_dtypesrh   r"   r#   searchsortedr   r2   rX   r%   rR   )
r   rY   	as_seriesr   cr   r   r(   r)   r   r   r   r   test_searchsorted  s"   

z"BaseMethodsTests.test_searchsortedc           
      C   s   |j }tjddg|d}|\}}t|||g}|r t|}||dks)J |j|dddks4J ||dks=J |j|dddksHJ ||ddg}tjddgtj	d}t
|| tddg}	|j||	d	dkstJ d S )
NTFr+   r   r   r   r-   rV   r   )r
   r"   r2   r   rq   r#   r   rh   r   rX   r%   rR   )
r   rY   r   r
   r   r   r   r(   r)   r   r   r   r   r     s   
z/BaseMethodsTests._test_searchsorted_bool_dtypesc                 C   s  |d |d ks
J t |}|d d \}}t|j||||g|jd}| }tg d}	|r>|jdd}|		dd}	|
|	}
t|j||||g|jd}|rZ|jdd}t|
| |j|	 d	d
 t|| | }|rz|jdd}tg d}	|j||||g|jd}|rtd|i}td|	i}	|
|	|}
t|j||||g|jd}|r|jdd}t|
| |j|	 |d	d
 t|| d S )Nr   r-   rV   r+   r   r   r   r_   T)Zinplace)TFTT)r   r"   r#   rq   r
   r   r   r2   r   Zreshapewherer%   r   maskr?   )r   r   r5   r   clsr   r   origr9   Zcondr(   r)   r'   r   r   r   test_where_series3  sB   
z"BaseMethodsTests.test_where_seriesrepeats)r-   rV   rd   c                 C   s   t |j|d d |jd}|rt|}|rt||n||}t|tr,|gd n|}dd t	||D }t |j||jd}|rOtj||j
|d}t|| d S )Nrd   r+   c                 S   s"   g | ]\}}t |D ]}|q
qS r   )range)r   rN   n_r   r   r   r   g  s   " z0BaseMethodsTests.test_repeat.<locals>.<listcomp>r   )r   rq   r
   r"   r#   r   repeatr3   intr   r.   r%   r   )r   r   r   r   	use_numpyr   r(   r)   r   r   r   test_repeat^  s   
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msgr>   negativer   Zfoobarz'foo'c                 C   sp   t j||d' |rtj||fi | n|j|fi | W d    d S W d    d S 1 s1w   Y  d S )Nr]   )r   rm   r   r  )r   r   r   kwargserrorrb   r  r   r   r   test_repeat_raisesn  s   
"z#BaseMethodsTests.test_repeat_raisesc                 C   sd   | d}|dd  }t|| | ddg}||dg |dg |dd  g}t|| d S )Nr   r-   rd   rV   r   )deleter%   r   Z_concat_same_type)r   r   r(   r)   r   r   r   test_delete~  s   
$zBaseMethodsTests.test_deletec                 C   s   |dd   d|d }t|| |dd   t|dd   |d }t|| |d d  d|d }tt|}|dd |dd < t|d |d< ||}t|| d S )Nr-   r   r_   r   r   )insertr%   r   r4   r   Zarangerh   )r   r   r(   Ztakerr)   r   r   r   test_insert  s   &
zBaseMethodsTests.test_insertc                 C   s   |}t ttf |d| W d    n1 sw   Y  t ttf |d| W d    n1 s7w   Y  t ttf |t|d | W d    d S 1 sYw   Y  d S )Nr   r   r-   )r   rm   r   rn   r  r4   )r   r   Zinvalid_scalaritemr   r   r   test_insert_invalid  s   "z$BaseMethodsTests.test_insert_invalidc                 C   s   t |}tt ||d |d  W d    n1 sw   Y  tt || d |d  W d    n1 s>w   Y  tt |d|d  W d    d S 1 s\w   Y  d S )Nr-   r   g      ?)r4   r   rm   
IndexErrorr  r   )r   r   Zubr   r   r   test_insert_invalid_loc  s   "z(BaseMethodsTests.test_insert_invalid_locc                 C   s2  t |j|d gt| |jd}t |j|gt| |jd}tj||dd}tj||dd}tj||dd}||du sAJ || du sLJ ||du sUJ ||du s^J |d d |d d du soJ |d d |d d du sJ |d du sJ |dg |d du sJ d S )Nr   r+   F)Z	transposeTrV   rd   )r   rq   r4   r
   r%   Zbox_expectedequalsr   )r   r   r5   r   r   Zdata2rr   r   r   r   test_equals  s   """ zBaseMethodsTests.test_equalsc                 C   s   t |t |sJ d S rE   )r"   r#   r  r   r   r   r   &test_equals_same_data_different_object  s   z7BaseMethodsTests.test_equals_same_data_different_object)H__name__
__module____qualname____doc__r   r   r   markZparametrizer*   r:   rC   rD   rI   rS   rZ   r\   rc   rj   rp   rs   r   r6   r}   r   r2   r
   r   r   r   r   r   r"   r#   r1   r   r   r   r   r   r   r   r   r   r   __annotations__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  rn   r   r	  r  r  r  r  r?   r  r  r   r   r   r   r      s   
 












		  
4

	+


		
r   )r   r   numpyr   r   Zpandas._typingr   Zpandas.core.dtypes.commonr   Zpandas.core.dtypes.dtypesr   Zpandas.core.dtypes.missingr   Zpandasr"   Zpandas._testingZ_testingr%   Zpandas.core.sortingr   r   r   r   r   r   <module>   s    