o
    vhvh                     @   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)encodinghash_key
categorize)pandas.core.util.hashingr   _hash_pandas_objectdtypenpuint64shape)selfdatar   res r   a/var/www/html/hyperkenya/venv/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   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   
proportion)indexnameg        r   float64storage pyarrowzdouble[pyarrow]Float64)uniquer   arrayr&   r'   r(   r   r   r)   
isinstanceCategoricallenr5   StringDtypena_valuenanastypegetattr
ArrowDtyper   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   r3   )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 )Nr3   )r'   r(   rP   )r   rQ   rI   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idr>   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 rU   r   xr   r   r   <lambda>f       z+BaseMethodsTests.test_map.<locals>.<lambda>)rZ   )mapto_numpyr*   assert_numpy_array_equal)r   rQ   rZ   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   r3   r1   )r'   r(   argsortr   r=   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 re   )rh   r   r=   ri   r*   rc   )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)r3   r   r1   )
r*   assert_produces_warningFutureWarningr'   r(   rh   r   r=   ri   r+   )r   rl   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 )Nr3      r   rg   )rg   r   r   r3   r3   rg   )r   _is_booleanargmaxargmintake)r   rj   rl   rB   is_bool
exp_argmaxexp_argmax_repeatedr   r   r   r   test_argmin_argmax}   s   z#BaseMethodsTests.test_argmin_argmaxmethodrw   rx   c                 C   sL   d}t jt|d t|d d |  W d    d S 1 sw   Y  d S )Nattempt to getrn   r   )r   raises
ValueErrorrE   )r   r~   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 )Nr   r1   rn   )r   _from_sequencer   r   r   r   rE   )r   r~   r   rB   r   data_nar   r   r   test_argmin_argmax_all_na   s
   "z*BaseMethodsTests.test_argmin_argmax_all_nazop_name, skipna, expected)idxmaxTr   )idxminTrg   )rw   Tr   )rx   Trg   r   r   )rw   Frp   )rx   Frp   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argrp   idxzThe behavior of Series.rn   skipna)

startswithrr   r   isnanr'   r(   r*   rq   rE   assert_almost_equal)	r   rl   op_namer   r/   warnrs   rI   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 )Nr9   rn   Fr   )r   r   NotImplementedErrorrx   rw   )r   rl   r   r   r   r   +test_argmax_argmin_no_skipna_notimplemented   s   "z<BaseMethodsTests.test_argmax_argmin_no_skipna_notimplementedzna_position, expectedlastrf   ri   r1   firstr3   rg   r   c                 C   s   t ||d}t|| d S )N)na_position)r   r*   rc   )r   rl   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   keyrf   rg   )r   r3   rg   )r3   r   rg   )r'   r(   sort_valuesilocnuniquer*   r+   )r   rj   r   sort_by_keyrI   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   rf   )r   rg   r3   )r'   r(   r   r   r*   r+   )r   rl   r   r   rI   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)r3   rg   r3   rK   BrK   r   )r3   r3   rg   rf   r5   )r'   rO   r   ry   r*   assert_frame_equal)r   rj   r   rR   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   r3   r   r3   )r   r   )FFTTr   TTFF)TTTT)ry   
duplicatedr   r=   r*   rc   )r   r   r   arrr.   r/   r   r   r   test_duplicated   s   z BaseMethodsTests.test_duplicatedboxc                 C   r\   rU   r   r]   r   r   r   r_     r`   zBaseMethodsTests.<lambda>c                 C   s   |   S rU   )r<   r]   r   r   r   r_         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   r1   r3   )r   r   r@   r>   r   )r   r   r   r~   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use_na_sentinel)r   r   rp   rp   r3   r3   r   r   r1   r      )r   r   rp   rp   r3   r3   r   rg   )r   r      )r'   	factorizer   rv   r   r=   ri   ry   r*   rc   assert_extension_array_equal)r   data_for_groupingcodesuniquesrz   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*   rc   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	|| t
|| d S )Nr   r1   )r'   r   r   r=   ri   r   r   r   r*   rc   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 )Nr3   rK   )r   r   )ry   r'   rO   copyr   fillnar*   r   )r   rQ   r   rR   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 )Nr3   F)r   r   )ry   r'   r(   r   r   r   r*   r+   )r   rQ   r   rI   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.rn   r3   )r   r   r   r   ry   )r   rQ   rs   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 )
Nrg   c                 S      | |kS rU   r   x1x2r   r   r   r_   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>r1   r   c                 S   r   rU   r   r   r   r   r   r_   a  r   c                    s   g | ]}| kqS r   r   r   r   valr   r   r   d      )
r'   r(   combiner=   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 )Nrg   r[   )overc                 S   s   g | ]\}}|| qS r   r   r   r   r   r   r   v  r   z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>c                 S      | | S rU   r   r   r   r   r   r_   }  r   z3BaseMethodsTests.test_combine_add.<locals>.<lambda>c                 S   r   rU   r   r   r   r   r   r_     r   r   c                 S   r   rU   r   r   r   r   r   r_     r   c                    s   g | ]}|  qS r   r   r   r   r   r   r     r   )r'   r(   r   errstater   r   r   	TypeErrorr   r   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 )Nru   rg      )rg   ru   r   r   )r'   r(   combine_firstr*   r+   )r   r   r   r   r.   r/   r   r   r   test_combine_first  s
   
z#BaseMethodsTests.test_combine_firstframezperiods, indices)rg   ru   r   rp   rp   r   )r   r3   rg   ru   r   rg   )rp   rp   r   r3   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	}tj}n||}tj	}||| d S )
Nr   rK   r6   T
allow_fillr3   )r   r   rM   )
r'   r(   ry   to_frame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   r3   r   rX   r   r   r   test_shift_0_periods  s   
z%BaseMethodsTests.test_shift_0_periodsr   r3   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   r3   r   )r   r   operatorxorsub	Exceptionr   r   r   r'   r(   diffr   r*   r+   rO   r   rC   r   )	r   r   r   opsr.   r/   rR   r   r   r   r   	test_diff  s(   



zBaseMethodsTests.test_diffrp   r   c                 C   s4   |d d }| |}|j|dd}t|| d S )Nrg   Tr   r   ry   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  rp   r   r3   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   rg   r   rX   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   r3   )
fill_value)r   r   r3   rg   r   )rg   ru   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 typern   )r   r   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 rU   )r'   r(   r   util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 )Nrf   r   rightsider3   rg   ru   r1   r   sorter)r   rv   _test_searchsorted_bool_dtypesry   r'   r(   searchsortedr   r=   ri   r*   rc   )
r   rj   	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 )
NTFr1   r   r  r  r3   rg   r  )r   r'   r=   r   r   r(   r  ry   r   ri   r*   rc   )
r   rj   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   r3   rg   r1   r   r   r   rp   T)inplace)TFTT)r   r'   r(   r   r   r   r   r=   r   reshapewherer*   r  maskrO   )r   r   rB   r  clsr   r   origrI   condr.   r/   r-   r   r   r   test_where_series3  sB   
z"BaseMethodsTests.test_where_seriesrepeats)r3   rg   ru   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 )Nru   r1   c                 S   s"   g | ]\}}t |D ]}|q
qS r   )range)r   r^   n_r   r   r   r   g  s   " z0BaseMethodsTests.test_repeat.<locals>.<listcomp>r   )r   r   r   r'   r(   r   repeatr>   intr   r5   r*   r  )r   r   r%  r  	use_numpyr   r.   r/   r   r   r   test_repeat^  s   
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msgrN   negativer   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 )Nrn   )r   r   r   r)  )r   r   r%  kwargserrorrs   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   r3   ru   rg   r   )deleter*   r   _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 )Nr3   r   rp   r   r   )insertr*   r   r@   r   arangery   )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   r3   )r   r   r   r   r6  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 )Nr3   r   g      ?)r@   r   r   
IndexErrorr6  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   r1   F)	transposeTrg   ru   )r   r   r@   r   r*   box_expectedequalsr   )r   r   rB   r  r   data2r   r   r   r   test_equals  s   """ zBaseMethodsTests.test_equalsc                 C   s   t |t |sJ d S rU   )r'   r(   rB  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   markparametrizer0   rJ   rS   rT   rY   rd   rk   rm   rt   r}   r   r   r   rC   r   r   r=   r   r   r   r   r   r   r'   r(   r<   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,  r   r   r2  r5  r9  r<  r?  rO   rD  rE  r   r   r   r   r      s   
 












		  
4

	+


		
r   )r   r   numpyr   r   pandas._typingr   pandas.core.dtypes.commonr   pandas.core.dtypes.dtypesr   pandas.core.dtypes.missingr   pandasr'   pandas._testing_testingr*   pandas.core.sortingr   r   r   r   r   r   <module>   s    