U
    ¾mœ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�}n2t jjdddd�}|d |d krL|d  d7  < | |dd d…< |S )Néd   )Úsizeé   r   é   é   )ÚnpÚisnanÚrandomÚuniformÚrandint)Ú
fill_valueÚdata© r   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/pandas/tests/extension/test_sparse.pyÚ	make_data   s    
r   c                   C   s   t ƒ S ©Nr   r   r   r   r   Údtype)   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_twos5   s    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 dddg| jd�S )Nr
   r   r	   r   )r   r   r    r   r   r   Údata_for_sortingK   s    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   s    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    r0   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    r1   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    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 )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                    s   t ƒ  |¡ d S r   )ÚsuperÚ
test_ravelr:   ©Ú	__class__r   r   rA   n   s    zBaseSparseTests.test_ravel)	Ú__name__Ú
__module__Ú__qualname__r<   r8   ÚmarkÚxfailrA   Ú__classcell__r   r   rB   r   r6   i   s   r6   c                   @   s   e Zd Zdd„ ZdS )Ú	TestDtypec                 C   s   |  ¡ tkst‚d S r   )Zconstruct_array_typer   ÚAssertionError)r;   r   r   r   r   r   Útest_array_type_with_argt   s    z"TestDtype.test_array_type_with_argN)rD   rE   rF   rL   r   r   r   r   rJ   s   s   rJ   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestInterfacec                 C   s   |  ¡  d S r   ©Úcopyr:   r   r   r   Ú	test_copyy   s    zTestInterface.test_copyc                 C   s   |  ¡  d S r   )Úviewr:   r   r   r   Ú	test_view}   s    zTestInterface.test_viewN)rD   rE   rF   rP   rR   r   r   r   r   rM   x   s   rM   c                   @   s   e Zd ZdS )ÚTestConstructorsN©rD   rE   rF   r   r   r   r   rS   ‚   s   rS   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   s|   t  d|d d… i¡}t  ddddgi¡}t  ddddgi¡ d¡}|||g}t  |¡}t  d	d
„ |D ƒ¡}|  ||¡ d S )NÚAr   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.   ’   r/   zCTestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>.<lambda>)Úapply©Ú.0Úxr   r   r   Ú
<listcomp>’   s     z:TestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>)r*   Ú	DataFramer\   ÚconcatÚassert_frame_equal)r;   r   Zdf1Zdf2Zdf3ÚdfsÚresultÚexpectedr   r   r   Útest_concat_mixed_dtypes‡   s    

ÿz&TestReshaping.test_concat_mixed_dtypesÚcolumnsrV   ÚB)rV   rW   )rV   rX   ÚouterÚinner)Únamesc                    s   t ƒ  ||¡ d S r   )r@   Ú
test_stack)r;   r   rk   rB   r   r   rp   –   s    
zTestReshaping.test_stackc                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Útest_concat_columns©r;   r   r)   rB   r   r   rq   ¢   s    
z!TestReshaping.test_concat_columnsc                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Ú'test_concat_extension_arrays_copy_falserr   rB   r   r   rs   ¦   s    
z5TestReshaping.test_concat_extension_arrays_copy_falsec                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Ú
test_alignrr   rB   r   r   rt   ª   s    
zTestReshaping.test_alignc                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Útest_align_framerr   rB   r   r   ru   ®   s    
zTestReshaping.test_align_framec                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Útest_align_series_framerr   rB   r   r   rv   ²   s    
z%TestReshaping.test_align_series_framec                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Ú
test_mergerr   rB   r   r   rw   ¶   s    
zTestReshaping.test_merger=   r>   c                    s   t ƒ  |¡ d S r   )r@   Útest_transposer:   rB   r   r   rx   º   s    zTestReshaping.test_transpose)rD   rE   rF   rj   r8   rG   Úparametrizer*   Z
MultiIndexÚfrom_tuplesrp   rq   rs   rt   ru   rv   rw   rH   rx   rI   r   r   rB   r   rU   †   s&    ÿþþ	rU   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¡rTt | d¡¡rNt |j	d ¡slt
‚n| d¡|j	d kslt
‚| d¡|j	d ks„t
‚d S )Nc                 S   s   g | ]}d | ‘qS )r
   r   )ra   Úir   r   r   rc   Á   s     z(TestGetitem.test_get.<locals>.<listcomp>)Úindexr4   r
   r	   )r*   ÚSeriesr"   Úlenr   r   Úvaluesr   ÚgetÚilocrK   )r;   r   Úserr   r   r   Útest_getÀ   s
     &zTestGetitem.test_getc                    s   |   |¡ tƒ  ||¡ d S r   )r<   r@   Útest_reindexrr   rB   r   r   r…   È   s    
zTestGetitem.test_reindex)rD   rE   rF   r„   r…   rI   r   r   rB   r   r{   ¿   s   r{   c                   @   s   e Zd ZdS )Ú	TestIndexNrT   r   r   r   r   r†   Ð   s   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ÚfillnaZassert_equal)r;   r!   ZsarrZexpected_dtyperi   rh   r   r   r   Ú	test_isnaÕ   s    
zTestMissing.test_isnac              	      s*   t jtdd�� tƒ  |¡ W 5 Q R X d S ©NF©Zcheck_stacklevel)r‹   Úassert_produces_warningr   r@   Útest_fillna_limit_pad©r;   r!   rB   r   r   r’   â   s    z!TestMissing.test_fillna_limit_padc              	      s*   t jtdd�� tƒ  |¡ W 5 Q R X d S r�   ©r‹   r‘   r   r@   Útest_fillna_limit_backfillr“   rB   r   r   r•   æ   s    z&TestMissing.test_fillna_limit_backfillc              	      sL   t  |j¡r"|j tjjdd�¡ tj	t
dd�� tƒ  |¡ W 5 Q R X d S )Nz'returns array with different fill valuer>   Fr�   )r   r   r   ÚnodeÚ
add_markerr8   rG   rH   r‹   r‘   r   r@   Útest_fillna_no_op_returns_copy)r;   r   r   rB   r   r   r˜   ê   s    ÿz*TestMissing.test_fillna_no_op_returns_copyc              	      s*   t jtdd�� tƒ  |¡ W 5 Q R X d S r�   r”   r“   rB   r   r   Útest_fillna_series_methodò   s    z%TestMissing.test_fillna_series_methodZUnsupportedr>   c                    s   t ƒ  ¡  d S r   )r@   Útest_fillna_series)r;   rB   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
   )rV   rl   rˆ   )	r*   rd   r�   r+   r   r   r   Ú_from_sequencerf   )r;   r!   r   rh   r   ri   r   r   r   Útest_fillna_frameû   s    þÿzTestMissing.test_fillna_frame)rD   rE   rF   rŽ   r’   r•   r˜   r™   r8   rG   rH   rš   rœ   rI   r   r   rB   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ƒrn|rZ|jj|jjksnt	‚n|jj|jjk	snt	‚|j
j ¡ | ¡ ks†t	‚d S )Nr	   rV   FrN   )r   r   Úblocks)Útaker*   rd   r‚   r�   ÚhasattrZ_mgrr€   r   rK   rV   Ú_valuesÚto_dense)r;   r!   Úusing_copy_on_writeÚarrZdfÚ
filled_valrh   r   r   r   Útest_fillna_copy_frame  s    

z"TestMethods.test_fillna_copy_framec                 C   sn   |  ddg¡}tj|dd�}|d }| |¡}|rD|j|jksTt‚n|j|jk	sTt‚|j ¡ | ¡ ksjt‚d S )Nr	   FrN   r   )rŸ   r*   r~   r�   r¡   rK   r¢   )r;   r!   r£   r¤   rƒ   r¥   rh   r   r   r   Útest_fillna_copy_series!  s    
z#TestMethods.test_fillna_copy_serieszNot Applicabler>   c                    s   t ƒ  |¡ d S r   )r@   Útest_fillna_length_mismatchr“   rB   r   r   r¨   /  s    z'TestMethods.test_fillna_length_mismatchc                 C   sü   |d |d kst ‚t|ƒ}|d d… \}}t |j||||g|jd�¡}t ddddg¡}| |¡}t	ddƒ}	t |j||||g|	d�¡}
|  
||
¡ |j||||g|jd�}t ddddg¡}| ||¡}t |j||||g|jd�¡}
|  
||
¡ d S )	Nr   r	   r
   rˆ   TFÚfloatg        )rK   Útyper*   r~   r›   r   r   ÚarrayÚwherer   Úassert_series_equal)r;   r   r)   ÚclsrW   rX   rƒ   Zcondrh   Z	new_dtyperi   Ú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 )Nr7   z2TODO(SparseArray.__setitem__) will preserve dtype.r>   )	r   Úsubtyper8   rG   rH   r–   r—   r@   Útest_combine_first)r;   r   r   rG   rB   r   r   r²   I  s    ÿzTestMethods.test_combine_firstc              	      s,   t jtdd�� tƒ  ||¡ W 5 Q R X d S r�   )r‹   r‘   r   r@   Útest_searchsorted)r;   r'   Ú	as_seriesrB   r   r   r³   S  s    zTestMethods.test_searchsortedc                 C   s6   |  d¡}|jd |jd< |jd |jd ks2t‚d S )Nr   r	   )ÚshiftZ_sparse_valuesrK   )r;   r   rh   r   r   r   Útest_shift_0_periodsW  s    
z TestMethods.test_shift_0_periodsÚmethodZargmaxZargminc                    s   |   |¡ tƒ  |||¡ d S r   )r<   r@   Útest_argmin_argmax_all_na)r;   r·   r   r)   rB   r   r   r¸   ^  s    
z%TestMethods.test_argmin_argmax_all_naÚboxc                    s    |   |¡ tƒ  ||||¡ d S r   )r<   r@   Útest_equals)r;   r   r)   r´   r¹   rB   r   r   rº   d  s    
zTestMethods.test_equals)rD   rE   rF   Z_combine_le_expected_dtyper¦   r§   r8   rG   rH   r¨   r°   r²   r³   r¶   ry   r¸   r*   r«   r~   rd   rº   rI   r   r   rB   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   )Ústrr`   r   r   r   rc   o  s     z/TestCasting.test_astype_str.<locals>.<listcomp>rˆ   )r*   r~   r\   r½   r]   r­   )r;   r   rh   ri   r   r   r   Útest_astype_strk  s     zTestCasting.test_astype_strzno sparse StringDtype)Úraisesr?   c                    s   t ƒ  |¡ d S r   )r@   Útest_astype_stringr:   rB   r   r   rÀ   r  s    zTestCasting.test_astype_string)
rD   rE   rF   r¾   r8   rG   rH   Ú	TypeErrorrÀ   rI   r   r   rB   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 )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   r8   r9   r:   r   r   r   Ú_skip_if_different_combine}  s    
z,TestArithmeticOps._skip_if_different_combinec                    s   |   |¡ tƒ  ||¡ d S r   )rÃ   r@   Útest_arith_series_with_scalar©r;   r   Úall_arithmetic_operatorsrB   r   r   rÄ   „  s    
z/TestArithmeticOps.test_arith_series_with_scalarc                    s   |   |¡ tƒ  ||¡ d S r   )rÃ   r@   Útest_arith_series_with_arrayrÅ   rB   r   r   rÇ   ˆ  s    
z.TestArithmeticOps.test_arith_series_with_arrayc                    sH   |j jdkrn(| d¡dkr6tjjdd�}|j |¡ tƒ  	||¡ d S )Nr   r$   )ÚmulZrmulÚfloordivZ	rfloordivÚpowÚmodZrmodz result dtype.fill_value mismatchr>   )
r   r   Ústripr8   rG   rH   r–   r—   r@   Útest_arith_frame_with_scalar)r;   r   rÆ   r   rG   rB   r   r   rÍ   Œ  s    	z.TestArithmeticOps.test_arith_frame_with_scalarc                    s   t ƒ j|||d d� d S )N)Úexc)r@   Ú_check_divmod_op)r;   rƒ   Úopr¯   rÎ   rB   r   r   rÏ   œ  s    z"TestArithmeticOps._check_divmod_op)rD   rE   rF   Zseries_scalar_excZframe_scalar_excZ
divmod_excZseries_array_excrÃ   rÄ   rÇ   rÍ   ÚNotImplementedErrorrÏ   rI   r   r   rB   r   rÂ   w  s   rÂ   c                   @   s`   e Zd Zedœdd„Zedœdd„Zejjdd�edœdd	„ƒZ	ejjdd�edœd
d„ƒZ
dS )ÚTestComparisonOps)r5   c                 C   s–   |}|||ƒ}t |tƒst‚|jjtjks.t‚t |tƒrH||j|jƒ}n>t |t 	|j¡t 	|¡ƒ¡}t|| 
¡ t 	|¡ƒ|tjd�}t ||¡ d S )Nr‰   )Ú
isinstancer   rK   r   r±   r   Zbool_r   Úallr[   r¢   r‹   rŒ   )r;   r5   Úcomparison_opr¯   rÐ   rh   r   ri   r   r   r   Ú_compare_other¢  s    

ÿýz TestComparisonOps._compare_otherc                 C   s>   |   ||d¡ |   ||d¡ |   ||d¡ |   ||tj¡ d S )Nr   r	   r3   )rÖ   r   r   )r;   r5   rÕ   r   r   r   Útest_scalar·  s    zTestComparisonOps.test_scalarzWrong indicesr>   c                 C   s    t  ddd¡}|  |||¡ d S )Néüÿÿÿr¼   é
   )r   ZlinspacerÖ   ©r;   r5   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)rD   rE   rF   r   rÖ   r×   r8   rG   rH   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   )r@   Útest_array_repr)r;   r   r   rB   r   r   rÞ   Ë  s    zTestPrinting.test_array_repr)rD   rE   rF   r8   rG   rH   rÞ   rI   r   r   rB   r   rÝ   Ê  s   rÝ   c                       s.   e Zd Zej dddg¡‡ fdd„ƒZ‡  ZS )ÚTestParsingÚenginerY   Úpythonc              	      s0   d}t jt|d�� tƒ  ||¡ W 5 Q R X d S )Nz,.*must implement _from_sequence_of_strings.*)Úmatch)r8   r¿   rÑ   r@   Útest_EA_types)r;   rà   r   Zexpected_msgrB   r   r   rã   Ñ  s    zTestParsing.test_EA_types)rD   rE   rF   r8   rG   ry   rã   rI   r   r   rB   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   Zall_numeric_accumulationsrå   r   r   r   Útest_accumulate_seriesÙ  s    z1TestNoNumericAccumulations.test_accumulate_seriesN)rD   rE   rF   r8   rG   ry   ræ   r   r   r   r   rä   Ø  s   rä   ):Ú__doc__Únumpyr   r8   Zpandas.errorsr   Zpandasr*   r   Zpandas._testingZ_testingr‹   Zpandas.arraysr   Zpandas.tests.extensionr   r   Zfixturer   r   r   r   r!   r&   r'   r(   r)   r0   r1   r5   r6   ZBaseDtypeTestsrJ   ZBaseInterfaceTestsrM   ZBaseConstructorsTestsrS   ZBaseReshapingTestsrU   ZBaseGetitemTestsr{   ZBaseIndexTestsr†   ZBaseMissingTestsr‡   ZBaseMethodsTestsr�   ZBaseCastingTestsr»   ZBaseArithmeticOpsTestsrÂ   rÒ   ZBasePrintingTestsrÝ   ZBaseParsingTestsrß   ZBaseAccumulateTestsrä   r   r   r   r   Ú<module>   s\   





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