o
    d@                     @   sp  d 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 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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j)Z*G d.d/ d/eej+Z,G d0d1 d1eej-Z.G d2d3 d3eej/Z0G d4d5 d5eej1Z2G d6d7 d7eZ3G d8d9 d9eej4Z5G d:d; d;eej6Z7G d<d= d=ej8Z9dS )>aj  
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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   g/var/www/html/visualizacion-main/env/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   .   s   r   c                   C   s   t tdd S )Nr   r
   )r   r   onesr   r   r   r   data_for_twos5      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   genD   s   zdata_repeated.<locals>.genNr   )r   r(   r   r#   r   data_repeated@   s   
r)   c                 C   s   t g d| jdS )N)r
   r   r	   r   )r   r   r#   r   r   r   data_for_sortingK   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_sortingP   s   r+   c                   C   s   t jS r   )r   r"   r   r   r   r   na_valueU   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_cmpZ   s   r3   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_grouping_   s   "r4   c                 C   s$   t ddtjdddddddg
| jdS )Nr      r
   r   r   r!   r#   r   r   r   data_for_compared   s   $r8   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_unsupportedj   s   z"BaseSparseTests._check_unsupported$SparseArray does not support setitemreasonc                       t  | d S r   )super
test_ravelr=   	__class__r   r   rE   n      zBaseSparseTests.test_ravel)	__name__
__module____qualname__r?   r;   markxfailrE   __classcell__r   r   rF   r   r9   i   s    r9   c                   @   s   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_argt   s   z"TestDtype.test_array_type_with_argN)rI   rJ   rK   rQ   r   r   r   r   rO   s   s    rO   c                   @   s   e Zd Zdd Zdd ZdS )TestInterfacec                 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)rI   rJ   rK   rV   rY   r   r   r   r   rR   x   s    rR   c                   @      e Zd ZdS )TestConstructorsNrI   rJ   rK   r   r   r   r   r[          r[   c                       s   e Zd Zdd Zejdddgejj	ddgdd	gd
g f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   r1      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-   	DataFramere   concatassert_frame_equal)r>   r   df1df2df3dfsresultexpectedr   r   r   test_concat_mixed_dtypes   s   

z&TestReshaping.test_concat_mixed_dtypescolumnsr_   B)r_   r`   )r_   ra   outerinner)namesc                       t  || d S r   )rD   
test_stack)r>   r   rw   rF   r   r   r}      s   
zTestReshaping.test_stackc                       |  | t || d S r   )r?   rD   test_concat_columnsr>   r   r,   rF   r   r   r         
z!TestReshaping.test_concat_columnsc                    r~   r   )r?   rD   'test_concat_extension_arrays_copy_falser   rF   r   r   r      r   z5TestReshaping.test_concat_extension_arrays_copy_falsec                    r~   r   )r?   rD   
test_alignr   rF   r   r   r      r   zTestReshaping.test_alignc                    r~   r   )r?   rD   test_align_framer   rF   r   r   r      r   zTestReshaping.test_align_framec                    r~   r   )r?   rD   test_align_series_framer   rF   r   r   r      r   z%TestReshaping.test_align_series_framec                    r~   r   )r?   rD   
test_merger   rF   r   r   r      r   zTestReshaping.test_merger@   rA   c                    rC   r   )rD   test_transposer=   rF   r   r   r      rH   zTestReshaping.test_transpose)rI   rJ   rK   rv   r;   rL   parametrizer-   
MultiIndexfrom_tuplesr}   r   r   r   r   r   r   rM   r   rN   r   r   rF   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   )rj   ir   r   r   rl      r2   z(TestGetitem.test_get.<locals>.<listcomp>)indexr7   r
   r	   )
r-   Seriesr%   lenr   r   valuesr   getiloc)r>   r   serr   r   r   test_get   s
    &zTestGetitem.test_getc                    r~   r   )r?   rD   test_reindexr   rF   r   r   r      r   zTestGetitem.test_reindex)rI   rJ   rK   r   r   rN   r   r   rF   r   r      s    r   c                   @   rZ   )	TestIndexNr\   r   r   r   r   r      r]   r   c                       sj   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 fddZdd Z  ZS )TestMissingc                 C   s   t |}ttt|jj}t ddg|d}| }t|| |	d}ttt|jj}t ddgd|d}| 
| | d S )NTFr   r   r   r   )r   r   boolr-   r.   r   r   tmassert_sp_array_equalfillnaassert_equal)r>   r$   sarrexpected_dtyperu   rt   r   r   r   	test_isna   s   
zTestMissing.test_isnac                    @   t jtdd t | W d    d S 1 sw   Y  d S NFcheck_stacklevel)r   assert_produces_warningr   rD   test_fillna_limit_padr>   r$   rF   r   r   r         "z!TestMissing.test_fillna_limit_padc                    r   r   r   r   r   rD   test_fillna_limit_backfillr   rF   r   r   r      r   z&TestMissing.test_fillna_limit_backfillc                    sb   t |jr|jtjjdd tj	t
dd t | W d    d S 1 s*w   Y  d S )Nz'returns array with different fill valuerA   Fr   )r   r   r   node
add_markerr;   rL   rM   r   r   r   rD   test_fillna_no_op_returns_copy)r>   r   r   rF   r   r   r      s   "z*TestMissing.test_fillna_no_op_returns_copyc                    r   r   r   r   rF   r   r   test_fillna_series_method   r   z%TestMissing.test_fillna_series_methodUnsupportedrA   c                    s   t    d S r   )rD   test_fillna_series)r>   rF   r   r   r      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_   rx   r   )	r-   rm   r   r.   r   r   r   _from_sequencero   )r>   r$   r   rt   r   ru   r   r   r   test_fillna_frame   s   zTestMissing.test_fillna_frame)rI   rJ   rK   r   r   r   r   r   r;   rL   rM   r   r   rN   r   r   rF   r   r      s    r   c                       s   e Zd ZdZdd Zdd Zejjdd f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 )TestMethodszSparse[bool]c                 C   s   | ddg}tjd|idd}|jd }||}t|jdr7|r-|jj|jju s,J n
|jj|jjus7J |j	j
 | u sCJ d S )Nr	   r_   FrT   )r   r   blocks)taker-   rm   r   r   hasattr_mgrr   r   r_   _valuesto_dense)r>   r$   using_copy_on_writearrdf
filled_valrt   r   r   r   test_fillna_copy_frame  s   

z"TestMethods.test_fillna_copy_framec                 C   sn   | ddg}tj|dd}|d }||}|r"|j|ju s!J n|j|jus*J |j | u s5J d S )Nr	   FrT   r   )r   r-   r   r   r   r   )r>   r$   r   r   r   r   rt   r   r   r   test_fillna_copy_series!  s   
z#TestMethods.test_fillna_copy_serieszNot ApplicablerA   c                    rC   r   )rD   test_fillna_length_mismatchr   rF   r   r   r   /  rH   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   assert_series_equal)r>   r   r,   clsr`   ra   r   condrt   	new_dtyperu   otherr   r   r   test_where_series3  s    

zTestMethods.test_where_seriesc                    s6   |j jdkrtjjdd}|j| t | d S )Nr:   z2TODO(SparseArray.__setitem__) will preserve dtype.rA   )	r   subtyper;   rL   rM   r   r   rD   test_combine_first)r>   r   r   rL   rF   r   r   r   I  s   zTestMethods.test_combine_firstc                    sB   t jtdd t || W d    d S 1 sw   Y  d S r   )r   r   r   rD   test_searchsorted)r>   r*   	as_seriesrF   r   r   r   S  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   rt   r   r   r   test_shift_0_periodsW  s   
z TestMethods.test_shift_0_periodsmethodargmaxargminc                    s   |  | t ||| d S r   )r?   rD   test_argmin_argmax_all_na)r>   r   r   r,   rF   r   r   r   ^  s   
z%TestMethods.test_argmin_argmax_all_naboxc                    s    |  | t |||| d S r   )r?   rD   test_equals)r>   r   r,   r   r   rF   r   r   r   d  s   
zTestMethods.test_equals)rI   rJ   rK   _combine_le_expected_dtyper   r   r;   rL   rM   r   r   r   r   r   r   r   r-   r   r   rm   r   rN   r   r   rF   r   r     s    
r   c                       s4   e Zd Zdd Zejjedd fddZ  Z	S )TestCastingc                 C   sH   t |d d t}t jdd |d d D td}| || d S )N   c                 S   s   g | ]}t |qS r   )strri   r   r   r   rl   o  r2   z/TestCasting.test_astype_str.<locals>.<listcomp>r   )r-   r   re   r   rf   r   )r>   r   rt   ru   r   r   r   test_astype_strk  s    zTestCasting.test_astype_strzno sparse StringDtype)raisesrB   c                    rC   r   )rD   test_astype_stringr=   rF   r   r   r   r  rH   zTestCasting.test_astype_string)
rI   rJ   rK   r   r;   rL   rM   	TypeErrorr   rN   r   r   rF   r   r   j  s    r   c                       s\   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
ef fd
d	Z  ZS )TestArithmeticOpsNc                 C   s   |j dkrtd d S d S )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   r;   r<   r=   r   r   r   _skip_if_different_combine}  s   
z,TestArithmeticOps._skip_if_different_combinec                    r~   r   )r   rD   test_arith_series_with_scalarr>   r   all_arithmetic_operatorsrF   r   r   r     r   z/TestArithmeticOps.test_arith_series_with_scalarc                    r~   r   )r   rD   test_arith_series_with_arrayr   rF   r   r   r     r   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 mismatchrA   )
r   r   stripr;   rL   rM   r   r   rD   test_arith_frame_with_scalar)r>   r   r   r   rL   rF   r   r   r     s   	z.TestArithmeticOps.test_arith_frame_with_scalarc                    s   t  j|||d d d S )N)exc)rD   _check_divmod_op)r>   r   opr   r   rF   r   r   r     s   z"TestArithmeticOps._check_divmod_op)rI   rJ   rK   series_scalar_excframe_scalar_exc
divmod_excseries_array_excr   r   r   r   NotImplementedErrorr   rN   r   r   rF   r   r   w  s    r   c                   @   s`   e Zd ZdefddZdefddZejjdddefdd	Z	ejjdddefd
dZ
dS )TestComparisonOpsr8   c                 C   s   |}|||}t |tsJ |jjtjksJ t |tr$||j|j}nt|t|jt|}t||	 t||tjd}t
|| d S )Nr   )
isinstancer   r   r   r   bool_r   allrd   r   r   r   )r>   r8   comparison_opr   r   rt   r   ru   r   r   r   _compare_other  s   

z TestComparisonOps._compare_otherc                 C   s>   |  ||d |  ||d |  ||d |  ||tj d S )Nr   r	   r6   )r   r   r"   )r>   r8   r   r   r   r   test_scalar  s   zTestComparisonOps.test_scalarzWrong indicesrA   c                 C   s    t ddd}| ||| d S )Nr   
   )r   linspacer   r>   r8   r   r   r   r   r   
test_array  s   zTestComparisonOps.test_arrayc                 C   s0   |d }|  ||| |d }|  ||| d S )Nr	   r
   )r   r  r   r   r   test_sparse_array  s   z#TestComparisonOps.test_sparse_arrayN)rI   rJ   rK   r   r   r   r;   rL   rM   r  r  r   r   r   r   r     s    r   c                       s*   e Zd Zejjdd fddZ  ZS )TestPrintingzDifferent reprrA   c                    r|   r   )rD   test_array_repr)r>   r   r   rF   r   r   r    r    zTestPrinting.test_array_repr)rI   rJ   rK   r;   rL   rM   r  rN   r   r   rF   r   r    s    r  c                       s.   e Zd Zejdddg fddZ  ZS )TestParsingenginerb   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)r;   r   r   rD   test_EA_types)r>   r  r   expected_msgrF   r   r   r    s   "zTestParsing.test_EA_types)rI   rJ   rK   r;   rL   r   r  rN   r   r   rF   r   r    s    r  c                   @   s&   e Zd Zejdddgdd ZdS )TestNoNumericAccumulationsskipnaTFc                 C   s   d S r   r   )r>   r   all_numeric_accumulationsr  r   r   r   test_accumulate_series  s   z1TestNoNumericAccumulations.test_accumulate_seriesN)rI   rJ   rK   r;   rL   r   r  r   r   r   r   r    s    r  ):__doc__numpyr   r;   pandas.errorsr   pandasr-   r   pandas._testing_testingr   pandas.arraysr   pandas.tests.extensionr   r   fixturer   r"   r   r   r$   r)   r*   r+   r,   r3   r4   r8   r9   BaseDtypeTestsrO   BaseInterfaceTestsrR   BaseConstructorsTestsr[   BaseReshapingTestsr^   BaseGetitemTestsr   BaseIndexTestsr   BaseMissingTestsr   BaseMethodsTestsr   BaseCastingTestsr   BaseArithmeticOpsTestsr   r   BasePrintingTestsr  BaseParsingTestsr  BaseAccumulateTestsr  r   r   r   r   <module>   s^    













9<Z*)