o
    g>O                     @   sl   d dl Z d dlZd dlZd dl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)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 Z9ejd=ejejej:gdd Z;dS )BaseMethodsTestsz%Various Series and DataFrame methods.c                 C   s<   t |ds
td t|j}|jd }|jdu sJ d S )Nvalue_countszvalue_counts is not implementeddropnaT)hasattrpytestskipinspect	signaturer   
parametersdefault)selfdatasigkwarg r   a/home/ubuntu/cloudmapper/venv/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   sf   |d d }|rt ||   }n|}t|j|d }t|j|d }| || d S )N
   )r   )nparray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< | || d S )	Nr   dtypeT)	normalize   indexg        r   )uniquer   r   r   r   r   r$   r   r   
isinstanceCategoricallenr(   r   )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_count7   s   zBaseMethodsTests.test_countc                 C   s&   t |}| }d}||ksJ d S )Nr&   )r   r   r5   )r   r6   r.   r    r!   r   r   r   test_series_count=   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_seriesD   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   int64r   )r   data_for_sortingr    r!   r   r   r   test_argsortH      zBaseMethodsTests.test_argsortc                 C   sL   |  }tjg dtdd}|jddd}|jddd}t|| d S )Nr@   intr#   rD   safe)casting)rC   r   r   r$   astypetmassert_numpy_array_equalr   data_missing_for_sortingr    r!   r   r   r   test_argsort_missing_arrayM   s
   z+BaseMethodsTests.test_argsort_missing_arrayc                 C   r?   )N)r&   r   r#   rB   rN   r   r   r   test_argsort_missingU   rG   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&   rA   )rA   r   r   r&   r&   rA      r   )argmaxargmintake)r   rE   rO   na_valuer   r   r   r   test_argmin_argmaxZ   s   z#BaseMethodsTests.test_argmin_argmaxmethodrT   rU   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   rY   r   err_msgr   r   r   test_argmin_argmax_empty_arrayk   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 )NrZ   r#   r[   )type_from_sequencer$   r	   r]   r^   r_   )r   rY   r   rW   r`   data_nar   r   r   test_argmin_argmax_all_nar   s
   "z*BaseMethodsTests.test_argmin_argmax_all_nazop_name, skipna, expected)idxmaxTr   )idxminTrA   )rT   Tr   )rU   TrA   rf   rg   )rT   FrQ   )rU   FrQ   c                 C   s*   t |}t|||d}t|| d S )Nskipna)r   r   r_   rL   assert_almost_equal)r   rO   op_nameri   r!   r.   r    r   r   r   test_argreduce_seriesz   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]   NotImplementedErrorrU   rT   )r   rO   r   r   r   r   +test_argmax_argmin_no_skipna_notimplemented   s   "z<BaseMethodsTests.test_argmax_argmin_no_skipna_notimplementedzna_position, expectedlastr@   intpr#   firstr&   rA   r   c                 C   s   t ||d}t|| d S )N)na_position)r   rL   rM   )r   rO   rt   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rv   keyr@   rA   )r   r&   rA   )r&   r   rA   )r   r   sort_valuesilocnuniquer   )r   rE   rv   sort_by_keyr.   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 )Nrw   r@   )r   rA   r&   )r   r   ry   rz   r   )r   rO   rv   r|   r.   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&   rA   r&   r0   Br0   r   )r&   r&   rA   r@   r'   )r   r4   ry   rV   assert_frame_equal)r   rE   rv   r7   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*   rb   )r   r   r   rY   
duplicatedr    r   r   r   test_unique   s
   zBaseMethodsTests.test_uniquena_sentinelrQ   c              	   C   s\   t j||d\}}tjdd||ddddgtjd}|g d}t|| | || d S )Nr   r   r&   rA   r#   )r         )	r   	factorizer   r   rq   rV   rL   rM   assert_extension_array_equal)r   data_for_groupingr   codesuniquesexpected_codesexpected_uniquesr   r   r   test_factorize   s   zBaseMethodsTests.test_factorizec                 C   sh   t j||d\}}|j|d\}}t|| | || t|tt |ks*J |j|jks2J d S )Nr   )r   r   rL   rM   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   rq   rb   rc   r$   rL   rM   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&   r0   )r   r   )rV   r   r4   rz   fillnar0   r-   )r   r6   arrr7   
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   )rV   r   r   r   _values)r   r6   r   r.   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   rV   )r   r6   msgr   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 )	NrA   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   rz   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 )NrA   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   "  r   z5BaseMethodsTests.test_combine_add.<locals>.<listcomp>r   c                 S   r   r:   r   r   r   r   r   r   (  r   c                    s   g | ]}|  qS r   r   r   r   r   r   r   *  r   )
r   r   r   r   errstaterc   r   r   r   rz   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 )NrS   rA      )rA   rS   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)rA   rS   r   rQ   rQ   r   )r   r&   rA   rS   r   rA   )rQ   rQ   r   r&   rA   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   r0   nameT
allow_fillr&   )r   r   r2   )	r   r   rV   to_frameassignshiftconcatr   r   )	r   r   r   periodsindicessubsetr!   r    comparer   r   r   test_container_shift6  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   r=   r   r   r   test_shift_0_periodsM  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
   rb   r   r   diffr   r   r4   r   nanr   )	r   r   r   opsr    r!   r7   r   r   r   r   	test_diffT  s(   



zBaseMethodsTests.test_diffr   c                 C   s4   |d d }| |}|j|dd}| || d S )NrA   Tr   r   rV   r   )r   r   r   r   r   r    r!   r   r   r   test_shift_non_empty_arrayn  s   
z+BaseMethodsTests.test_shift_non_empty_array)r   rQ   r   r&   r   c                 C   s*   |d d }| |}|}| || d S )Nr   )r   r   )r   r   r   emptyr    r!   r   r   r   test_shift_empty_arrayy  s   
z'BaseMethodsTests.test_shift_empty_arrayc                 C   s8   | d}||usJ |d d  d}||usJ d S )Nr   rA   r   r=   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&   rA   r   )rA   rS   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 )Nr@   r   right)sider&   rA   rS   r#   rs   )sorter)	rV   r   r   searchsortedr   r   rq   rL   rM   )
r   rE   	as_seriesr   cr   r   r    r!   r   r   r   r   test_searchsorted  s   

z"BaseMethodsTests.test_searchsortedc                 C   sH  |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}
|rV|
jdd}
| 
|	|
 tg d	}|j||||g|jd}|rtd|i}td|i}|	||}	t|j||||g|jd}
|r|
jdd}
| 
|	|
 d S )
Nr   r&   rA   r#   )TTFFr   r   rQ   )TFTT)rb   r   r   rc   r$   r   r   r   reshapewherer   r4   )r   r   rW   r   clsr   r   r.   condr    r!   r   r   r   r   test_where_series  s2   
z"BaseMethodsTests.test_where_seriesrepeats)r&   rA   rS   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 )NrS   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'   )rb   rc   r$   r   r   r   repeatr*   rH   r   r(   r   )r   r   r   r   	use_numpyr   r    r!   r   r   r   test_repeat  s   
zBaseMethodsTests.test_repeatzrepeats, kwargs, error, msgr3   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&   rS   rA   r   )deleter   _concat_same_type)r   r   r    r!   r   r   r   test_delete  s   
$zBaseMethodsTests.test_deletec                 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)	transposeTrA   rS   )rb   rc   r,   r$   rL   box_expectedequalscopy)r   r   rW   r   r   data2rd   r   r   r   test_equals  s   """ zBaseMethodsTests.test_equalsN)<__name__
__module____qualname____doc__r   r	   markparametrizer"   r/   r8   r9   r>   rF   rP   rR   rX   ra   re   r   r   rl   ro   r   r$   ru   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  r4   r  r   r   r   r   r      s    










	


		
 
4

	!


		r   )r   r   numpyr   r	   pandas.core.dtypes.commonr   pandasr   pandas._testing_testingrL   pandas.core.sortingr    pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s    