o
    5csX                     @   sx   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	Z
d dlmZ d dlmZ d dlmZ G dd deZdS )    N)is_bool_dtype)na_value_for_dtype)nargsort)BaseExtensionTestsc                   @   s  e Zd Z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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d)d* Zd+d, Zejd-d.ejg d/ed0d1fd2ejg d3ed0d1fgd4d5 Zejd6ddgd7d8 Zejd6ddgd9d: Zejd6ddgd;d< Zejd=ejd>d? gejdd@d? ejgdAdB Z ejdCdDdEgdFdG Z!ejdCdDdEgdHdI Z"dJdK Z#dLdM Z$dNdO Z%dPdQ Z&dRdS Z'dTdU Z(dVdW Z)ejdXddgejdYdEg dZfd[g d\fd]g d^fgd_d` Z*dadb Z+ejdcdddEgdedf Z,ejdYdgdDdDggdDdddDggd[d[ddggdddDd[ggdhdDdDgggdidj Z-ejdcg dkdldm Z.dndo Z/dpdq Z0drds Z1dtdu Z2dvdw Z3dxdy Z4ejdzd[ddd]g d{gd|d} Z5ejd~d]dddie6dfdDi e6dfddd]gi e6dfd]ddie7dfgdd Z8dd Z9dd Z:dd Z;dd Z<ejd=ejejej=gdd Z>dS )BaseMethodsTestsz%Various Series and DataFrame methods.c                 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)selfdatasigkwarg r   Y/var/www/html/gps/gps/lib/python3.10/site-packages/pandas/tests/extension/base/methods.py 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 }| || d S )N
   )r   )isnapdSeriesr   
sort_indexassert_series_equal)r   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}ntjd|jd}dt| ||dk< t|jtju rY|d	}| || d S )
Nr   dtypeT)	normalize   indexg        r   Float64)uniquenparrayr   r   r   r$   r   r   
isinstanceCategoricallenr(   r   NAastyper   )r   r   valuesserr    r!   r   r   r    test_value_counts_with_normalize(   s   $
z1BaseMethodsTests.test_value_counts_with_normalizec                 C   s8   t d|i}|jdd}t ddg}| || d S )NAcolumnsaxisr   r&   )r   	DataFramecountr   r   )r   data_missingdfr    r!   r   r   r   
test_count;   s   zBaseMethodsTests.test_countc                 C   s&   t |}| }d}||ksJ d S )Nr&   )r   r   r:   )r   r;   r3   r    r!   r   r   r   test_series_countA   s   
z"BaseMethodsTests.test_series_countc                 C   s$   t |t}t|t jsJ d S N)r   r   applyidr-   r   r   r    r   r   r   test_apply_simple_seriesH   s   z)BaseMethodsTests.test_apply_simple_seriesc                 C   8   t | }t tjg dtjd}| || d S N   r   r&   r#   r   r   argsortr+   r,   intpr   )r   data_for_sortingr    r!   r   r   r   test_argsortL   s   zBaseMethodsTests.test_argsortc                 C   s,   |  }tjg dtjd}t|| d S rE   )rI   r+   r,   rJ   tmassert_numpy_array_equalr   data_missing_for_sortingr    r!   r   r   r   test_argsort_missing_arrayR   s   z+BaseMethodsTests.test_argsort_missing_arrayc                 C   rD   )N)r&   r   r#   rH   rO   r   r   r   test_argsort_missingX   s   z%BaseMethodsTests.test_argsort_missingc                 C   sr   |  dksJ | dksJ |g d}|  dksJ | dks'J |  dks/J | dks7J d S )Nr&   rG   )rG   r   r   r&   r&   rG      r   )argmaxargmintake)r   rK   rP   na_valuer   r   r   r   test_argmin_argmax]   s   z#BaseMethodsTests.test_argmin_argmaxmethodrU   rV   c                 C   sL   d}t jt|d t|d d |  W d    d S 1 sw   Y  d S )Nattempt to getmatchr   )r
   raises
ValueErrorgetattr)r   rZ   r   err_msgr   r   r   test_argmin_argmax_empty_arrayn   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 )Nr[   r#   r\   )r   _from_sequencer$   r
   r^   r_   r`   )r   rZ   r   rX   ra   data_nar   r   r   test_argmin_argmax_all_nau   s
   "z*BaseMethodsTests.test_argmin_argmax_all_nazop_name, skipna, expected)idxmaxTr   )idxminTrG   )rU   Tr   )rV   TrG   rf   rg   )rU   FrR   )rV   FrR   c                 C   s*   t |}t|||d}t|| d S )Nskipna)r   r   r`   rM   assert_almost_equal)r   rP   op_nameri   r!   r3   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 )N r\   Frh   )r
   r^   NotImplementedErrorrV   rU   )r   rP   r   r   r   r   +test_argmax_argmin_no_skipna_notimplemented   s   "z<BaseMethodsTests.test_argmax_argmin_no_skipna_notimplementedzna_position, expectedlastrF   rJ   r#   firstr&   rG   r   c                 C   s   t ||d}t|| d S )N)na_position)r   rM   rN   )r   rP   rs   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 }| || d S )Nru   keyrF   rG   )r   r&   rG   )r&   r   rG   )r   r   sort_valuesilocnuniquer   )r   rK   ru   sort_by_keyr3   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 }| || d S )Nrv   rF   )r   rG   r&   )r   r   rx   ry   r   )r   rP   ru   r{   r3   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}| || d S )N)r&   rG   r&   r5   Br5   r   )r&   r&   rG   rF   r'   )r   r9   rx   rW   assert_frame_equal)r   rK   ru   r<   r    r!   r   r   r   test_sort_values_frame   s   z'BaseMethodsTests.test_sort_values_frameboxc                 C   s   | S r?   r   xr   r   r   <lambda>   s    zBaseMethodsTests.<lambda>c                 C   s   |   S r?   )r*   r   r   r   r   r          c                 C   s\   || |d |d g}||}t|dksJ t|t|s"J |d |d ks,J d S Nr   r&   )rc   r/   r-   r   )r   r   r   rZ   
duplicatedr    r   r   r   test_unique   s
   zBaseMethodsTests.test_uniquena_sentinelrR   c              	   C   s   |dkrd}nd}t jt|d tj||d\}}W d    n1 s$w   Y  tjdd||ddddgtjd	}|g d
}t 	|| | 
|| d S )NrR   )Specifying `na_sentinel=-1` is deprecatedDSpecifying the specific value to use for `na_sentinel` is deprecatedr\   r   r   r&   rG   r#   )r         )rM   assert_produces_warningFutureWarningr   	factorizer+   r,   rJ   rW   rN   assert_extension_array_equal)r   data_for_groupingr   msgcodesuniquesexpected_codesexpected_uniquesr   r   r   test_factorize   s   zBaseMethodsTests.test_factorizec                 C   s   |dkrd}nd}t jt|d tj||d\}}|j|d\}}W d    n1 s,w   Y  t || | || t|tt|ksJJ |j	|j	ksRJ d S )NrR   r   r   r\   r   )
rM   r   r   r   r   rN   r   r/   r*   r$   )r   r   r   r   codes_1	uniques_1codes_2	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	|| | 
|| d S )Nr   r#   )r   r   r+   r,   rJ   r   rc   r$   rM   rN   r   )r   r   r   r   r   r   r   r   r   test_factorize_empty   s
   z%BaseMethodsTests.test_factorize_emptyc                 C   sH   | ddg}td|i}|jd }||}|jj|jjus"J d S )Nr&   r5   )r   r   )rW   r   r9   ry   fillnar5   r2   )r   r;   arrr<   
filled_valr    r   r   r   test_fillna_copy_frame   s
   

z'BaseMethodsTests.test_fillna_copy_framec                 C   sL   | ddg}t|}|d }||}|j|jusJ |j|u s$J d S )Nr&   r   )rW   r   r   r   _values)r   r;   r   r3   r   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
   r^   r_   r   rW   )r   r;   r   r   r   r   test_fillna_length_mismatch  s   "z,BaseMethodsTests.test_fillna_length_mismatchc                    s   |d\}}t |}t |}||dd }t dd tt|t|D }| || |jd  | dd }t  fddt|D }| || d S )	NrG   c                 S      | |kS r?   r   x1x2r   r   r   r     r   z2BaseMethodsTests.test_combine_le.<locals>.<lambda>c                 S   s   g | ]\}}||kqS r   r   .0abr   r   r   
<listcomp>      z4BaseMethodsTests.test_combine_le.<locals>.<listcomp>r   c                 S   r   r?   r   r   r   r   r   r   $  r   c                    s   g | ]}| kqS r   r   r   r   valr   r   r   %      )r   r   combineziplistr   ry   r   data_repeated
orig_data1
orig_data2s1s2r    r!   r   r   r   test_combine_le  s   


z BaseMethodsTests.test_combine_lec              
      s   |d\}}t |}t |}||dd }tjdd t |dd tt|t|D }W d    n1 s=w   Y  | || |j	d  | d	d }t | fd
dt|D }| || d S )NrG   c                 S      | | S r?   r   r   r   r   r   r   -  r   z3BaseMethodsTests.test_combine_add.<locals>.<lambda>ignore)overc                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r   1  r   z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>r   c                 S   r   r?   r   r   r   r   r   r   7  r   c                    s   g | ]}|  qS r   r   r   r   r   r   r   9  r   )
r   r   r   r+   errstaterc   r   r   r   ry   r   r   r   r   test_combine_add(  s$   


z!BaseMethodsTests.test_combine_addc                 C   sX   t |d d }t j|dd g dd}||}t |d d }| || d S )NrT   rG      )rG   rT   r   r'   )r   r   combine_firstr   )r   r   r   r   r    r!   r   r   r   test_combine_first=  s
   
z#BaseMethodsTests.test_combine_firstframezperiods, indices)rG   rT   r   rR   rR   r   )r   r&   rG   rT   r   rG   )rR   rR   r   r&   rG   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	}| j}n||}| j}||| d S )
Nr   r5   nameT
allow_fillr&   )r   r   r7   )	r   r   rW   to_frameassignshiftconcatr   r   )	r   r   r   periodsindicessubsetr!   r    comparer   r   r   test_container_shiftE  s   
z%BaseMethodsTests.test_container_shiftc                 C   sB   | d}|d |d ksJ |d |d< |d |d ksJ d S r   r   rB   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	|dgd d}||}|dkretjddddg}n	dddtjtjg}t	||d}| || d S )Nr   z does not support diffg      ?r~   r&   r   )r   r$   operatorxorsub	Exceptionr
   r   r   r   r   diffr   r   r9   r+   nanr   )	r   r   r   opsr    r!   r<   r   r   r   r   	test_diffc  s(   



zBaseMethodsTests.test_diffr   c                 C   s4   |d d }| |}|j|dd}| || d S )NrG   Tr   r   rW   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   rR   r   r&   r   c                 C   s*   |d d }| |}|}| || d S )Nr   )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   rG   r   rB   r   r   r   test_shift_zero_copies  s   
z'BaseMethodsTests.test_shift_zero_copiesc                 C   sh   |d d }|d }|j d|d}|g d}| || |j d|d}|g d}| || d S )Nr   r   r&   )
fill_value)r   r   r&   rG   r   )rG   rT   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
   r^   	TypeErrorhash)r   r   r   r   r   test_not_hashable  s   
"z"BaseMethodsTests.test_not_hashablec                 C   s>   t |}|r| }t j|}t j|}| || d S r?   )r   r   r   utilhash_pandas_object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   |\}}}| g d}|rt|}||dksJ |j|dddks'J ||dks0J |j|dddks;J ||dksDJ |j|dddksOJ || ddg}tjddgtjd}t|| tg d	}	|j||	d
dks{J d S )NrF   r   right)sider&   rG   rT   r#   rr   )sorter)	rW   r   r   searchsortedr+   r,   rJ   rM   rN   )
r   rK   	as_seriesr   cr   r   r    r!   r   r   r   r   test_searchsorted  s   

z"BaseMethodsTests.test_searchsortedc                 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}| |
| |j|	 d	d
 | || | }|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}| |
| |j|	 |d	d
 | || d S )Nr   r&   rG   r#   )TTFFr   r   rR   T)inplace)TFTT)r   r   r   rc   r$   copyr+   r,   r   reshapewherer   maskr9   )r   r   rX   r   clsr   r   origr3   condr    r!   r   r   r   r   test_where_series  sB   
z"BaseMethodsTests.test_where_seriesrepeats)r&   rG   rT   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}| || d S )NrT   r#   c                 S   s"   g | ]\}}t |D ]}|q
qS r   )range)r   r   n_r   r   r   r     s   " z0BaseMethodsTests.test_repeat.<locals>.<listcomp>r'   )r   rc   r$   r   r   r+   repeatr-   intr   r(   r   )r   r   r  r   	use_numpyr   r    r!   r   r   r   test_repeat  s   
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msgr8   negativeshape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
   r^   r+   r  )r   r   r  kwargserrorr   r  r   r   r   test_repeat_raises  s   
"z#BaseMethodsTests.test_repeat_raisesc                 C   sd   | d}|dd  }| || | ddg}||dg |dg |dd  g}| || d S )Nr   r&   rT   rG   r   )deleter   _concat_same_type)r   r   r    r!   r   r   r   test_delete  s   
$zBaseMethodsTests.test_deletec                 C   s   |dd   d|d }| || |dd   t|dd   |d }| || |d d  d|d }tt|}|dd |dd < t|d |d< ||}| || d S )Nr&   r   rR   r   r   )insertr   r/   r+   arangerW   )r   r   r    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
   r^   r   r_   r  r/   )r   r   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      ?)r/   r
   r^   
IndexErrorr  r   )r   r   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)	transposeTrG   rT   )r   rc   r/   r$   rM   box_expectedequalsr   )r   r   rX   r   r   data2rd   r   r   r   test_equalsG  s   """ zBaseMethodsTests.test_equalsN)?__name__
__module____qualname____doc__r   r
   markparametrizer"   r4   r=   r>   rC   rL   rQ   rS   rY   rb   re   r+   r   rl   ro   r,   r$   rt   r|   r}   r   r   r   r*   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r_   r   r  r  r  r  r  r9   r"  r   r   r   r   r      s    










	

	
 
4

	+


		r   )r   r   numpyr+   r
   pandas.core.dtypes.commonr   pandas.core.dtypes.missingr   pandasr   pandas._testing_testingrM   pandas.core.sortingr    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s    