o
    g?                     @   sB  d 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 ddlmZ dd	 Zejd
d Zejdejgddd Zejdd Zejdejgddd Zejdejgddd Zejdejgddd Zejdejgddd Zejdd Zejdd Zejdejgddd ZG dd  d ZG d!d" d"eej Z!G d#d$ d$eej"Z#G d%d& d&eej$Z%G d'd( d(eej&Z'G d)d* d*eej(Z)G d+d, d,eej*Z+G d-d. d.eej,Z-G d/d0 d0eej.Z/G d1d2 d2eej0Z1G d3d4 d4eej2Z3G d5d6 d6eej4Z5G d7d8 d8eej6Z7dS )9aj  
This file contains a minimal set of tests for compliance with the extension
array interface test suite, and should contain no other tests.
The test suite for the full functionality of the array is located in
`pandas/tests/arrays/`.

The tests in this file are inherited from the BaseExtensionTests, and only
minimal tweaks should be applied to get the tests passing (by overwriting a
parent method).

Additional tests should either be added to one of the BaseExtensionTests
classes (if they are relevant for the extension interface for all dtypes), or
be added to the array-specific tests in `pandas/tests/arrays/`.

    N)PerformanceWarning)is_object_dtypeSparseDtype)SparseArray)basec                 C   s^   t | rt jjdd}nt jjdddd}|d |d kr&|d  d7  < | |dd d< |S )Nd   )size   r         )npisnanrandomuniformrandint)
fill_valuedata r   `/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/extension/test_sparse.py	make_data   s   
r   c                   C   s   t  S Nr   r   r   r   r   dtype+      r   )paramsc                 C   s   t t| j| jd}|S )z*Length-100 PeriodArray for semantics test.r   )r   r   param)requestresr   r   r   r   0   s   r   c                 C   s   t tdd S )Nr   r   )r   r   onesr   r   r   r   data_for_twos7      r!   c                 C   s   t tjdg| jdS )zLength 2 array with [NA, Valid]r
   r   r   r   nanr   r    r   r   r   data_missing<   s   r%   c                 #   s     fdd}|V  dS )z1Return different versions of data for count timesc                 3   s*    t | D ]}tt j jdV  qd S )Nr   )ranger   r   r   )count_r    r   r   genF   s   zdata_repeated.<locals>.genNr   )r   r)   r   r    r   data_repeatedB   s   
r*   c                 C   s   t g d| jdS )N)r   r   r
   r   )r   r   r    r   r   r   data_for_sortingM   r"   r+   c                 C   s   t dtjdg| jdS )Nr   r
   r   r#   r    r   r   r   data_missing_for_sortingR   s   r,   c                   C   s   t jS r   )r   r$   r   r   r   r   na_valueW   r   r-   c                   C   s   dd S )Nc                 S   s   t | o	t |S r   )pdisna)leftrightr   r   r   <lambda>^       zna_cmp.<locals>.<lambda>r   r   r   r   r   na_cmp\   s   r4   c              	   C   s"   t ddtjtjddddg| jdS )Nr
   r   r   r   r#   r    r   r   r   data_for_groupinga   s   "r5   c                       s2   e Zd Zdd Zejjdd fddZ  ZS )BaseSparseTestsc                 C   s"   |j ttdkrtd d S d S )Nr   zCan't store nan in int array.)r   r   intpytestskipselfr   r   r   r   _check_unsupportedg   s   z"BaseSparseTests._check_unsupported$SparseArray does not support setitemreasonc                       t  | d S r   )super
test_ravelr:   	__class__r   r   rB   k      zBaseSparseTests.test_ravel)	__name__
__module____qualname__r<   r8   markxfailrB   __classcell__r   r   rC   r   r6   f   s    r6   c                   @      e Zd Zdd ZdS )	TestDtypec                 C   s   |  tu sJ d S r   )construct_array_typer   )r;   r   r   r   r   r   test_array_type_with_argq   s   z"TestDtype.test_array_type_with_argN)rF   rG   rH   rO   r   r   r   r   rM   p       rM   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestInterfacec                 C   s   t d d S )NzWe have values)r8   r9   r:   r   r   r   test_no_values_attributev   s   z&TestInterface.test_no_values_attributec                 C      |   d S r   copyr:   r   r   r   	test_copyy      zTestInterface.test_copyc                 C   rS   r   )viewr:   r   r   r   	test_view}   rW   zTestInterface.test_viewN)rF   rG   rH   rR   rV   rY   r   r   r   r   rQ   u   s    rQ   c                   @   s   e Zd ZdS )TestConstructorsN)rF   rG   rH   r   r   r   r   rZ      s    rZ   c                       sz   e Zd Zdd Z fddZ fddZ fddZ fd	d
Z fddZ fddZ	e
jjdd fddZ  ZS )TestReshapingc                 C   sx   t d|d d i}t dg di}t dg did}|||g}t |}t dd |D }| || d S )NAr   )r
   r   r   )abccategoryc                 S   s   g | ]	}| d d qS )c                 S   s   t | tS r   )r   asarrayastypeobject)sr   r   r   r2      s    zCTestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>.<lambda>)apply.0xr   r   r   
<listcomp>   s    z:TestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>)r.   	DataFramerb   concatassert_frame_equal)r;   r   df1df2df3dfsresultexpectedr   r   r   test_concat_mixed_dtypes   s   

z&TestReshaping.test_concat_mixed_dtypesc                       |  | t || d S r   )r<   rA   test_concat_columnsr;   r   r-   rC   r   r   ru         
z!TestReshaping.test_concat_columnsc                    rt   r   )r<   rA   'test_concat_extension_arrays_copy_falserv   rC   r   r   rx      rw   z5TestReshaping.test_concat_extension_arrays_copy_falsec                    rt   r   )r<   rA   
test_alignrv   rC   r   r   ry      rw   zTestReshaping.test_alignc                    rt   r   )r<   rA   test_align_framerv   rC   r   r   rz      rw   zTestReshaping.test_align_framec                    rt   r   )r<   rA   test_align_series_framerv   rC   r   r   r{      rw   z%TestReshaping.test_align_series_framec                    rt   r   )r<   rA   
test_mergerv   rC   r   r   r|      rw   zTestReshaping.test_merger=   r>   c                    r@   r   )rA   test_transposer:   rC   r   r   r}      rE   zTestReshaping.test_transpose)rF   rG   rH   rs   ru   rx   ry   rz   r{   r|   r8   rI   rJ   r}   rK   r   r   rC   r   r[      s    r[   c                       s$   e Zd Zdd Z fddZ  ZS )TestGetitemc                 C   s   t j|dd tt|D d}t|jjr*t|dr't|j	d s)J n|d|j	d ks6J |d|j	d ksBJ d S )Nc                 S   s   g | ]}d | qS )r   r   )rg   ir   r   r   ri      r3   z(TestGetitem.test_get.<locals>.<listcomp>)index   r   r
   )
r.   Seriesr&   lenr   r   valuesr   getiloc)r;   r   rd   r   r   r   test_get   s
    &zTestGetitem.test_getc                    rt   r   )r<   rA   test_reindexrv   rC   r   r   r      rw   zTestGetitem.test_reindex)rF   rG   rH   r   r   rK   r   r   rC   r   r~      s    r~   c                       sf   e Zd Zdd Z fddZ fddZ fddZ fd	d
Zej	j
dddd Zdd Z  ZS )TestMissingc                 C   s   t tt|jj}tddg|d}t|}| || t| }t|}| 	|| t|
ddg }tjg |d}| 	|| d S )NTFr   r   r
   )r   boolr.   r/   r   r   r   assert_equalr   assert_series_equaldrop)r;   r%   expected_dtyperr   rq   r   r   r   	test_isna   s   

zTestMissing.test_isnac                    <   t t t | W d    d S 1 sw   Y  d S r   )tmassert_produces_warningr   rA   test_fillna_limit_padr;   r%   rC   r   r   r         "z!TestMissing.test_fillna_limit_padc                    r   r   r   r   r   rA   test_fillna_limit_backfillr   rC   r   r   r      r   z&TestMissing.test_fillna_limit_backfillc                    s^   t |jr|jtjjdd t	t
 t | W d    d S 1 s(w   Y  d S )Nz'returns array with different fill valuer>   )r   r   r   node
add_markerr8   rI   rJ   r   r   r   rA   test_fillna_no_op_returns_copy)r;   r   r   rC   r   r   r      s   "z*TestMissing.test_fillna_no_op_returns_copyc                    r   r   r   r   rC   r   r   test_fillna_series_method   r   z%TestMissing.test_fillna_series_methodUnsupportedr>   c                 C      d S r   r   )r;   r   r   r   test_fillna_series   s   zTestMissing.test_fillna_seriesc                 C   st   |d }t |ddgd|}t |jrt|j|}n|j}t |j||g|dddgd}| || d S )Nr
   r   )r\   Br   )	r.   rj   fillnar/   r   r   r   _from_sequencerl   )r;   r%   r   rq   r   rr   r   r   r   test_fillna_frame   s   zTestMissing.test_fillna_frame)rF   rG   rH   r   r   r   r   r   r8   rI   r9   r   r   rK   r   r   rC   r   r      s    
r   c                       s   e Zd Zdd Zdd Zdd Zejjddd	d
 Z	dd Z
 fddZ fddZdd Zejdddg fddZejdejejejg fddZ  ZS )TestMethodsc                    s   |d\}}t |}t |}||dd }t tdd tt|t|D dd}| || |jd  | d	d }t t fd
dt|D dd}| || d S )Nr   c                 S      | |kS r   r   x1x2r   r   r   r2         z-TestMethods.test_combine_le.<locals>.<lambda>c                 S   s   g | ]\}}||kqS r   r   )rg   r]   r^   r   r   r   ri     s    z/TestMethods.test_combine_le.<locals>.<listcomp>Fr   r   c                 S   r   r   r   r   r   r   r   r2     r   c                    s   g | ]}| kqS r   r   )rg   r]   valr   r   ri     r3   )r.   r   combiner   ziplistr   r   )r;   r*   
orig_data1
orig_data2s1s2rq   rr   r   r   r   test_combine_le  s"   


zTestMethods.test_combine_lec                 C   sp   | ddg}tjd|idd}|jd }||}t|jdr*|jj|jjus*J |j	j
 | u s6J d S )Nr
   r\   FrT   )r   r   blocks)taker.   rj   r   r   hasattr_mgrr   r   r\   _valuesto_dense)r;   r%   arrdf
filled_valrq   r   r   r   test_fillna_copy_frame  s   

z"TestMethods.test_fillna_copy_framec                 C   sT   | ddg}t|}|d }||}|j|jusJ |j | u s(J d S )Nr
   r   )r   r.   r   r   r   r   )r;   r%   r   serr   rq   r   r   r   test_fillna_copy_series&  s   

z#TestMethods.test_fillna_copy_serieszNot Applicabler>   c                 C   r   r   r   r   r   r   r   test_fillna_length_mismatch0  s   z'TestMethods.test_fillna_length_mismatchc                 C   s   |d |d ks
J t |}|d d \}}t|j||||g|jd}tg d}||}tdd}	t|j||||g|	d}
| 	||
 |j||||g|jd}tg d}|||}t|j||||g|jd}
| 	||
 d S )	Nr   r
   r   r   )TTFFfloatg        )TFTT)
typer.   r   r   r   r   arraywherer   r   )r;   r   r-   clsr]   r^   r   condrq   	new_dtyperr   otherr   r   r   test_where_series4  s    

zTestMethods.test_where_seriesc                    s&   |j jdkrtd t | d S )Nr7   z1TODO(SparseArray.__setitem__ will preserve dtype.)r   subtyper8   r9   rA   test_combine_firstr:   rC   r   r   r   J  s   
zTestMethods.test_combine_firstc                    s>   t t t || W d    d S 1 sw   Y  d S r   )r   r   r   rA   test_searchsorted)r;   r+   	as_seriesrC   r   r   r   Q  s   "zTestMethods.test_searchsortedc                 C   s6   | d}|jd |jd< |jd |jd ksJ d S )Nr   r
   )shift_sparse_values)r;   r   rq   r   r   r   test_shift_0_periodsU  s   
z TestMethods.test_shift_0_periodsmethodargmaxargminc                    s   |  | t ||| d S r   )r<   rA   test_argmin_argmax_all_na)r;   r   r   r-   rC   r   r   r   \  s   
z%TestMethods.test_argmin_argmax_all_naboxc                    s    |  | t |||| d S r   )r<   rA   test_equals)r;   r   r-   r   r   rC   r   r   r   b  s   
zTestMethods.test_equals)rF   rG   rH   r   r   r   r8   rI   r9   r   r   r   r   r   parametrizer   r.   r   r   rj   r   rK   r   r   rC   r   r     s    

r   c                       sD   e Zd Zdd Zdd Zdd Zejje	dd fd	d
Z
  ZS )TestCastingc                 C   s<   t j|dd}|t}t|jsJ t|jjjsJ d S )Nr\   )name)r.   r   rb   rc   r   r   r   r   )r;   all_datar   rq   r   r   r   test_astype_object_seriesi  s   
z%TestCasting.test_astype_object_seriesc                 C   s2   t d|i}|t}t|jjd jsJ d S )Nr\   r   )r.   rj   rb   rc   r   r   arraysr   )r;   r   r   rq   r   r   r   test_astype_object_frameq  s   
z$TestCasting.test_astype_object_framec                 C   sX   t |d d t}ttt|j}t jdd |d d D |d}| || d S )N   c                 S   s   g | ]}t |qS r   )strrf   r   r   r   ri     r3   z/TestCasting.test_astype_str.<locals>.<listcomp>r   )r.   r   rb   r   r   r   r   )r;   r   rq   r   rr   r   r   r   test_astype_str~  s    zTestCasting.test_astype_strzno sparse StringDtype)raisesr?   c                    r@   r   )rA   test_astype_stringr:   rC   r   r   r     rE   zTestCasting.test_astype_string)rF   rG   rH   r   r   r   r8   rI   rJ   	TypeErrorr   rK   r   r   rC   r   r   h  s    r   c                       sL   e Zd ZdZdZdZdZdd Z fddZ fddZ	 fdd	Z
  ZS )
TestArithmeticOpsNc                 C   s   |j dkr
tdd S )Nr   z(Incorrected expected from Series.combine)r   r8   r9   r:   r   r   r   _skip_if_different_combine  s   

z,TestArithmeticOps._skip_if_different_combinec                    rt   r   )r   rA   test_arith_series_with_scalarr;   r   all_arithmetic_operatorsrC   r   r   r     rw   z/TestArithmeticOps.test_arith_series_with_scalarc                    rt   r   )r   rA   test_arith_series_with_arrayr   rC   r   r   r     rw   z.TestArithmeticOps.test_arith_series_with_arrayc                    sH   |j jdkrn|ddvrtjjdd}|j| t 	|| d S )Nr   r(   )mulrmulfloordiv	rfloordivpowmodrmodz result dtype.fill_value mismatchr>   )
r   r   stripr8   rI   rJ   r   r   rA   test_arith_frame_with_scalar)r;   r   r   r   rI   rC   r   r   r     s   	z.TestArithmeticOps.test_arith_frame_with_scalar)rF   rG   rH   series_scalar_excframe_scalar_exc
divmod_excseries_array_excr   r   r   r   rK   r   r   rC   r   r     s    r   c                   @   rL   )TestComparisonOpsc              	   C   s   |  |}t|||}t|jtsJ |jjtdks J tjdd tt	|t
|t
||jjd}W d    n1 sEw   Y  t|| t|}|||}t|| d S )Nr   ignore)allr   )get_op_from_namer.   r   
isinstancer   r   r   r   errstater   ra   r   r   r   r   )r;   rd   r   op_namer   oprq   rr   r   r   r   _compare_other  s    


z TestComparisonOps._compare_otherN)rF   rG   rH   r   r   r   r   r   r     rP   r   c                       s*   e Zd Zejjdd fddZ  ZS )TestPrintingzDifferent reprr>   c                    s   t  || d S r   )rA   test_array_repr)r;   r   r	   rC   r   r   r    r"   zTestPrinting.test_array_repr)rF   rG   rH   r8   rI   rJ   r  rK   r   r   rC   r   r     s    r   c                       s.   e Zd Zejdddg fddZ  ZS )TestParsingenginer_   pythonc                    sF   d}t jt|d t || W d    d S 1 sw   Y  d S )Nz,.*must implement _from_sequence_of_strings.*)match)r8   r   NotImplementedErrorrA   test_EA_types)r;   r  r   expected_msgrC   r   r   r    s   "zTestParsing.test_EA_types)rF   rG   rH   r8   rI   r   r  rK   r   r   rC   r   r    s    r  )8__doc__numpyr   r8   pandas.errorsr   pandas.core.dtypes.commonr   pandasr.   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   fixturer   r$   r   r!   r%   r*   r+   r,   r-   r4   r5   r6   BaseDtypeTestsrM   BaseInterfaceTestsrQ   BaseConstructorsTestsrZ   BaseReshapingTestsr[   BaseGetitemTestsr~   BaseMissingTestsr   BaseMethodsTestsr   BaseCastingTestsr   BaseArithmeticOpsTestsr   BaseComparisonOpsTestsr   BasePrintingTestsr   BaseParsingTestsr  r   r   r   r   <module>   sX    











-?e!&