U
    -e@                     @   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 )Nd   )size   r         )npisnanrandomuniformrandint)
fill_valuedata r   c/var/www/html/Darija-Ai-Train/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st
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st	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 )Nr   
   )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*)