o
    Ti<                     @   sv  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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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j0Z1G d4d5 d5eej2Z3G d6d7 d7eZ4G d8d9 d9eej5Z6G d:d; d;eej7Z8G d<d= d=ej9Z:d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   sh   t jd}t | r|jdd}n|jdddtd}|d |d kr+|d  d7  < | |dd d< |S )N   d   )size   )r	   dtyper      )nprandomZdefault_rngisnanuniformZintegersint)
fill_valuerngdata r   b/var/www/html/evchargy.com/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   r   *   s   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   Zonesr   r   r   r   data_for_twos6      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   genE   s   zdata_repeated.<locals>.genNr   )r   r'   r   r"   r   data_repeatedA   s   
r(   c                 C   s   t g d| jdS )N)r   r   r
   r   )r   r   r"   r   r   r   data_for_sortingL   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_sortingQ   s   r*   c                   C   s   dd S )Nc                 S   s   t | o	t |S r   )pdisna)leftrightr   r   r   <lambda>X       zna_cmp.<locals>.<lambda>r   r   r   r   r   na_cmpV   s   r1   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   "r2   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_compare`   s   $r6   c                   @      e Zd Zdd Zd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   r   pytestskipselfr   r   r   r   _check_unsupportedf   s   z"BaseSparseTests._check_unsupportedN)__name__
__module____qualname__r=   r   r   r   r   r8   e       r8   c                   @   r7   )	TestDtypec                 C   s   |  tu sJ d S r   )Zconstruct_array_typer   )r<   r   r   r   r   r   test_array_type_with_argl   s   z"TestDtype.test_array_type_with_argN)r>   r?   r@   rC   r   r   r   r   rB   k   rA   rB   c                   @      e Zd ZdS )TestInterfaceNr>   r?   r@   r   r   r   r   rE   p       rE   c                   @   rD   )TestConstructorsNrF   r   r   r   r   rH   t   rG   rH   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ejdd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  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 }t|| 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   r/      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+   	DataFramerP   concattmassert_frame_equal)r<   r   Zdf1Zdf2Zdf3dfsresultexpectedr   r   r   test_concat_mixed_dtypesy   s   

z&TestReshaping.test_concat_mixed_dtypescolumnsrJ   B)rJ   rK   )rJ   rL   outerinner)namesfuture_stackTFc                    s   t  ||| d S r   )super
test_stack)r<   r   r_   rd   	__class__r   r   rf      s   zTestReshaping.test_stackc                       |  | t || d S r   )r=   re   test_concat_columnsr<   r   na_valuerg   r   r   rj         
z!TestReshaping.test_concat_columnsc                    ri   r   )r=   re   'test_concat_extension_arrays_copy_falserk   rg   r   r   rn      rm   z5TestReshaping.test_concat_extension_arrays_copy_falsec                    ri   r   )r=   re   
test_alignrk   rg   r   r   ro      rm   zTestReshaping.test_alignc                    ri   r   )r=   re   test_align_framerk   rg   r   r   rp      rm   zTestReshaping.test_align_framec                    ri   r   )r=   re   test_align_series_framerk   rg   r   r   rq      rm   z%TestReshaping.test_align_series_framec                    ri   r   )r=   re   
test_mergerk   rg   r   r   rr      rm   zTestReshaping.test_merge)r>   r?   r@   r^   r9   markparametrizer+   Z
MultiIndexfrom_tuplesrf   rj   rn   ro   rp   rq   rr   __classcell__r   r   rg   r   rI   x   s$    	rI   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   )rT   ir   r   r   rV      r0   z(TestGetitem.test_get.<locals>.<listcomp>)indexr5   r   r
   )
r+   Seriesr$   lenr   r   valuesr   getiloc)r<   r   serr   r   r   test_get   s
    &zTestGetitem.test_getc                    ri   r   )r=   re   test_reindexrk   rg   r   r   r      rm   zTestGetitem.test_reindex)r>   r?   r@   r   r   rv   r   r   rg   r   rw      s    rw   c                   @   rD   )TestSetitemNrF   r   r   r   r   r      rG   r   c                   @   rD   )	TestIndexNrF   r   r   r   r   r      rG   r   c                       sR   e Zd Z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}t
| | d S )NTFr   r   r   r   )r   r   boolr+   r,   r   r   rY   assert_sp_array_equalfillnaZassert_equal)r<   r#   ZsarrZexpected_dtyper]   r\   r   r   r   	test_isna   s   
zTestMissing.test_isnac                    sH   t tf}tj|dd t | W d    d S 1 sw   Y  d S NF)Zcheck_stacklevel)r   FutureWarningrY   assert_produces_warningre   test_fillna_limit_backfill)r<   r#   Zwarnsrg   r   r   r      s   "z&TestMissing.test_fillna_limit_backfillc                    s2   t |jr|jtjjdd t 	| d S )Nz'returns array with different fill valuereason)
r   r   r   node
add_markerr9   rs   xfailre   test_fillna_no_op_returns_copy)r<   r   r   rg   r   r   r      s
   z*TestMissing.test_fillna_no_op_returns_copyZUnsupportedr   c                    s   t    d S r   )re   test_fillna_series)r<   rg   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}t	|| d S )Nr
   r   )rJ   r`   r   )
r+   rW   r   r,   r   r   r   _from_sequencerY   rZ   )r<   r#   r   r\   r   r]   r   r   r   test_fillna_frame   s   zTestMissing.test_fillna_frame)r>   r?   r@   r   r   r   r9   rs   r   r   r   rv   r   r   rg   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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ejddd dedejgfdd dedejgfededd gd d!fededejgfgd"d# Zejd$ddg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
   rJ   Fcopy)r   r   blocks)taker+   rW   r~   r   hasattrZ_mgrr|   r   rJ   _valuesto_dense)r<   r#   using_copy_on_writearrZdf
filled_valr\   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
   Fr   r   )r   r+   rz   r   r   r   )r<   r#   r   r   r   r   r\   r   r   r   test_fillna_copy_series	  s   
z#TestMethods.test_fillna_copy_serieszNot Applicabler   c                       t  | d S r   )re   test_fillna_length_mismatch)r<   r#   rg   r   r   r        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}
t	
||
 |j||||g|jd}tg d}|||}t|j||||g|jd}
t	
||
 d S )	Nr   r
   r   r   )TTFFfloatg        )TFTT)typer+   rz   r   r   r   arraywherer   rY   Zassert_series_equal)r<   r   rl   clsrK   rL   r   Zcondr\   Z	new_dtyper]   otherr   r   r   test_where_series  s    

zTestMethods.test_where_seriesc                    sB   t jtdd t || W d    d S 1 sw   Y  d S r   )rY   r   r   re   test_searchsorted)r<   r)   	as_seriesrg   r   r   r   1  s   "zTestMethods.test_searchsortedc                 C   s6   | d}|jd |jd< |jd |jd ksJ d S )Nr   r
   )shiftZ_sparse_values)r<   r   r\   r   r   r   test_shift_0_periods5  s   
z TestMethods.test_shift_0_periodsmethodZargmaxZargminc                    s   |  | t ||| d S r   )r=   re   test_argmin_argmax_all_na)r<   r   r   rl   rg   r   r   r   <  s   
z%TestMethods.test_argmin_argmax_all_naboxc                    s    |  | t |||| d S r   )r=   re   test_equals)r<   r   rl   r   r   rg   r   r   r   B  s   
zTestMethods.test_equalszfunc, na_action, expectedc                 C      | S r   r   rU   r   r   r   r/   J      zTestMethods.<lambda>Ng      ?c                 C   r   r   r   r   r   r   r   r/   K  r   ignorez1.0r!   r   c                 C   s,   t dtjg}|j||d}t|| d S )Nr
   	na_action)r   r   r!   maprY   Zassert_extension_array_equal)r<   funcr   r]   r   r\   r   r   r   test_mapG  s   zTestMethods.test_mapr   c                 C   sJ   d}t jt|d |jdd |d W d    d S 1 sw   Y  d S )Nz-fill value in the sparse values not supportedmatchc                 S   s   t jS r   )r   r!   r   r   r   r   r/   [  s    z-TestMethods.test_map_raises.<locals>.<lambda>r   )r9   raises
ValueErrorr   )r<   r   r   msgr   r   r   test_map_raisesV  s   "zTestMethods.test_map_raises)r>   r?   r@   Z_combine_le_expected_dtyper   r   r9   rs   r   r   r   r   r   rt   r   r+   r   rz   rW   r   r   r   r!   strr   r   rv   r   r   rg   r   r      s0    
	r   c                       s,   e Zd Zejjedd fddZ  ZS )TestCastingzno sparse StringDtype)r   r   c                    r   r   )re   test_astype_stringr;   rg   r   r   r   _  r   zTestCasting.test_astype_string)	r>   r?   r@   r9   rs   r   	TypeErrorr   rv   r   r   rg   r   r   ^  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 d S )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   r9   r:   r;   r   r   r   _skip_if_different_combinej  s   
z,TestArithmeticOps._skip_if_different_combinec                    ri   r   )r   re   test_arith_series_with_scalarr<   r   all_arithmetic_operatorsrg   r   r   r   q  rm   z/TestArithmeticOps.test_arith_series_with_scalarc                    ri   r   )r   re   test_arith_series_with_arrayr   rg   r   r   r   u  rm   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&   )mulZrmulfloordivZ	rfloordivpowmodZrmodz result dtype.fill_value mismatchr   )
r   r   stripr9   rs   r   r   r   re   test_arith_frame_with_scalar)r<   r   r   r   rs   rg   r   r   r   y  s   	z.TestArithmeticOps.test_arith_frame_with_scalar)r>   r?   r@   Zseries_scalar_excZframe_scalar_excZ
divmod_excZseries_array_excr   r   r   r   rv   r   r   rg   r   r   d  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 )TestComparisonOpsr6   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   subtyper   Zbool_r   allrO   r   rY   r   )r<   r6   comparison_opr   opr\   r   r]   r   r   r   _compare_other  s   

z TestComparisonOps._compare_otherc                 C   s>   |  ||d |  ||d |  ||d |  ||tj d S )Nr   r
   r4   )r   r   r!   )r<   r6   r   r   r   r   test_scalar  s   zTestComparisonOps.test_scalarzWrong indicesr   c                 C   s    t ddd}| ||| d S )N   
   )r   Zlinspacer   r<   r6   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)r>   r?   r@   r   r   r   r9   rs   r   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 reprr   c                    s   t  || d S r   )re   test_array_repr)r<   r   r	   rg   r   r   r     r   zTestPrinting.test_array_repr)r>   r?   r@   r9   rs   r   r   rv   r   r   rg   r   r     s    r   c                       s.   e Zd Zejdddg fddZ  ZS )TestParsingenginerM   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.*r   )r9   r   NotImplementedErrorre   test_EA_types)r<   r   r   Zexpected_msgrg   r   r   r     s   "zTestParsing.test_EA_types)r>   r?   r@   r9   rs   rt   r   rv   r   r   rg   r   r     s    r   c                   @   rD   )TestNoNumericAccumulationsNrF   r   r   r   r   r     rG   r   );__doc__numpyr   r9   Zpandas.errorsr   Zpandasr+   r   Zpandas._testingZ_testingrY   Zpandas.arraysr   Zpandas.tests.extensionr   r   Zfixturer   r!   r   r   r#   r(   r)   r*   r1   r2   r6   r8   ZBaseDtypeTestsrB   ZBaseInterfaceTestsrE   ZBaseConstructorsTestsrH   ZBaseReshapingTestsrI   ZBaseGetitemTestsrw   ZBaseSetitemTestsr   ZBaseIndexTestsr   ZBaseMissingTestsr   ZBaseMethodsTestsr   ZBaseCastingTestsr   ZBaseArithmeticOpsTestsr   r   ZBasePrintingTestsr   ZBaseParsingTestsr   ZBaseAccumulateTestsr   r   r   r   r   <module>   s\    










64f&)