o
    թZhch                     @   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   Z/var/www/html/lang_env/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d
ddks^t	|jtjrd|d}nt|jd
ddkrs|d}nt|jtju r|d}t|| d S )Nr    r
   T)	normalize   Z
proportion)indexnameg        r   Zstorage Zpyarrowzdouble[pyarrow]Zpyarrow_numpyZfloat64ZFloat64)uniquer   arrayr!   r"   r#   r
   r   r$   
isinstanceZCategoricallenr.   getattrZ
ArrowDtypeZastyper   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   r?   r7   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 rC   r   xr   r   r   <lambda>f       z+BaseMethodsTests.test_map.<locals>.<lambda>)rH   )mapZto_numpyr%   assert_numpy_array_equal)r   r?   rH   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 rR   )rU   r   r2   rV   r%   rP   )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#   rU   r   r2   rV   r&   )r   rY   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   rT   )rT   r   r   r-   r-   rT   )r
   _is_booleanargmaxargmintake)r   rW   rY   na_valueis_boolZ
exp_argmaxZexp_argmax_repeatedr   r   r   r   test_argmin_argmax}   s   z#BaseMethodsTests.test_argmin_argmaxmethodrd   re   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
ValueErrorr5   )r   rj   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 )Nrk   r+   r[   )r   _from_sequencer
   r   rl   rm   r5   )r   rj   r   rg   rn   data_nar   r   r   test_argmin_argmax_all_na   s
   "z*BaseMethodsTests.test_argmin_argmax_all_nazop_name, skipna, expected)idxmaxTr   )idxminTrT   )rd   Tr   )re   TrT   rs   rt   )rd   Fr]   )re   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)

startswithr_   r   isnanr"   r#   r%   r^   r5   Zassert_almost_equal)	r   rY   Zop_namerx   r)   warnr`   r7   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[   Frw   )r   rl   NotImplementedErrorre   rd   )r   rY   r   r   r   r   +test_argmax_argmin_no_skipna_notimplemented   s   "z<BaseMethodsTests.test_argmax_argmin_no_skipna_notimplementedzna_position, expectedlastrS   rV   r+   firstr-   rT   r   c                 C   s   t ||d}t|| d S )N)na_position)r   r%   rP   )r   rY   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   keyrS   rT   )r   r-   rT   )r-   r   rT   )r"   r#   sort_valuesilocZnuniquer%   r&   )r   rW   r   sort_by_keyr7   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   rS   )r   rT   r-   )r"   r#   r   r   r%   r&   )r   rY   r   r   r7   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-   rT   r-   r9   Br9   r   )r-   r-   rT   rS   r.   )r"   r=   r   rf   r%   assert_frame_equal)r   rW   r   r@   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)rf   
duplicatedr   r2   r%   rP   )r   r   r   arrr(   r)   r   r   r   test_duplicated   s   z BaseMethodsTests.test_duplicatedboxc                 C   rJ   rC   r   rK   r   r   r   rM     rN   zBaseMethodsTests.<lambda>c                 C   s   |   S rC   )r1   rK   r   r   r   rM         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-   )rp   r
   r4   r3   r   )r   r   r   rj   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   rT   )r   r      )r"   	factorizer
   rc   r   r2   rV   rf   r%   rP   assert_extension_array_equal)r   data_for_groupingcodesuniquesrh   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%   rP   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   rV   r   rp   r
   r%   rP   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-   r9   )r   r   )rf   r"   r=   copyr   fillnar%   r   )r   r?   r   r@   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   )rf   r"   r#   r   r   r   r%   r&   )r   r?   r   r7   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   rl   rm   r   rf   )r   r?   r`   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 )
NrT   c                 S      | |kS rC   r   x1Zx2r   r   r   rM   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   rC   r   r   r   r   r   rM   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 )NrT   rI   )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 rC   r   r   r   r   r   rM   }  r   z3BaseMethodsTests.test_combine_add.<locals>.<lambda>c                 S   r   rC   r   r   r   r   r   rM     r   r   c                 S   r   rC   r   r   r   r   r   rM     r   c                    s   g | ]}|  qS r   r   r   r   r   r   r     r   )r"   r#   r   Zerrstaterp   r   r   	TypeErrorr   rl   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 )Nrb   rT      )rT   rb   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)rT   rb   r   r]   r]   r   )r   r-   rT   rb   r   rT   )r]   r]   r   r-   rT   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   r9   r/   TZ
allow_fillr-   )r   r   r;   )
r"   r#   rf   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   rF   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   nanr   )	r   r   r   opsr(   r)   r@   r   r   r   r   	test_diff  s(   



zBaseMethodsTests.test_diffr]   r   c                 C   s4   |d d }| |}|j|dd}t|| d S )NrT   Tr   r   rf   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   rT   r   rF   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-   rT   r   )rT   rb   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   rl   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 rC   )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 )NrS   r   rightZsider-   rT   rb   r+   r   sorter)r
   rc   _test_searchsorted_bool_dtypesrf   r"   r#   searchsortedr   r2   rV   r%   rP   )
r   rW   	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-   rT   r   )r
   r"   r2   r   rp   r#   r   rf   r   rV   r%   rP   )
r   rW   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-   rT   r+   r   r   r   r]   T)Zinplace)TFTT)r   r"   r#   rp   r
   r   r   r2   r   Zreshapewherer%   r   maskr=   )r   r   rg   r   clsr   r   origr7   Zcondr(   r)   r'   r   r   r   test_where_series3  sB   
z"BaseMethodsTests.test_where_seriesrepeats)r-   rT   rb   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 )Nrb   r+   c                 S   s"   g | ]\}}t |D ]}|q
qS r   )range)r   rL   n_r   r   r   r   g  s   " z0BaseMethodsTests.test_repeat.<locals>.<listcomp>r   )r   rp   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   rl   r   r  )r   r   r   kwargserrorr`   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-   rb   rT   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arangerf   )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   rl   r   rm   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   rl   
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	transposeTrT   rb   )r   rp   r4   r
   r%   Zbox_expectedequalsr   )r   r   rg   r   r   Zdata2rq   r   r   r   test_equals  s   """ zBaseMethodsTests.test_equalsc                 C   s   t |t |sJ d S rC   )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*   r8   rA   rB   rG   rQ   rX   rZ   ra   ri   ro   rr   r   r   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  rm   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    