a
    d<                     @   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}n2|jdddtd}|d |d krV|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   k/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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   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   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   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_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    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_compare`   s    r5   c                   @   s   e Zd Zdd Zd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   r   pytestskipselfr   r   r   r   _check_unsupportedf   s    z"BaseSparseTests._check_unsupportedN)__name__
__module____qualname__r;   r   r   r   r   r6   e   s   r6   c                   @   s   e Zd Zdd ZdS )	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>   r@   r   r   r   r   r?   k   s   r?   c                   @   s   e Zd ZdS )TestInterfaceNr<   r=   r>   r   r   r   r   rA   p   s   rA   c                   @   s   e Zd ZdS )TestConstructorsNrB   r   r   r   r   rC   t   s   rC   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.      r/   zCTestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>.<lambda>)apply).0xr   r   r   
<listcomp>   r/   z:TestReshaping.test_concat_mixed_dtypes.<locals>.<listcomp>)r*   	DataFramerK   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columnsrE   B)rE   rF   )rE   rG   outerinner)namesfuture_stackTFc                    s   t  ||| d S r   )super
test_stack)r:   r   rZ   r_   	__class__r   r   ra      s    zTestReshaping.test_stackc                    s   |  | t || d S r   )r;   r`   test_concat_columnsr:   r   na_valuerb   r   r   rd      s    
z!TestReshaping.test_concat_columnsc                    s   |  | t || d S r   )r;   r`   'test_concat_extension_arrays_copy_falsere   rb   r   r   rg      s    
z5TestReshaping.test_concat_extension_arrays_copy_falsec                    s   |  | t || d S r   )r;   r`   
test_alignre   rb   r   r   rh      s    
zTestReshaping.test_alignc                    s   |  | t || d S r   )r;   r`   test_align_framere   rb   r   r   ri      s    
zTestReshaping.test_align_framec                    s   |  | t || d S r   )r;   r`   test_align_series_framere   rb   r   r   rj      s    
z%TestReshaping.test_align_series_framec                    s   |  | t || d S r   )r;   r`   
test_mergere   rb   r   r   rk      s    
zTestReshaping.test_merge)r<   r=   r>   rY   r7   markparametrizer*   Z
MultiIndexfrom_tuplesra   rd   rg   rh   ri   rj   rk   __classcell__r   r   rb   r   rD   x   s"   	rD   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 slJ n|d|j	d kslJ |d|j	d ksJ d S )Nc                 S   s   g | ]}d | qS )r   r   )rO   ir   r   r   rQ      r/   z(TestGetitem.test_get.<locals>.<listcomp>)indexr4   r   r
   )
r*   Seriesr#   lenr   r   valuesr   getiloc)r:   r   serr   r   r   test_get   s
     &zTestGetitem.test_getc                    s   |  | t || d S r   )r;   r`   test_reindexre   rb   r   r   rz      s    
zTestGetitem.test_reindex)r<   r=   r>   ry   rz   ro   r   r   rb   r   rp      s   rp   c                   @   s   e Zd ZdS )TestSetitemNrB   r   r   r   r   r{      s   r{   c                   @   s   e Zd ZdS )	TestIndexNrB   r   r   r   r   r|      s   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   rT   assert_sp_array_equalfillnaZassert_equal)r:   r"   ZsarrZexpected_dtyperX   rW   r   r   r   	test_isna   s    
zTestMissing.test_isnac                    sF   t tf}tj|dd t | W d    n1 s80    Y  d S NF)Zcheck_stacklevel)r   FutureWarningrT   assert_produces_warningr`   test_fillna_limit_backfill)r:   r"   Zwarnsrb   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_markerr7   rl   xfailr`   test_fillna_no_op_returns_copy)r:   r   r   rb   r   r   r      s
    z*TestMissing.test_fillna_no_op_returns_copyZ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}t	|| d S )Nr
   r   )rE   r[   r~   )
r*   rR   r   r+   r   r   r   _from_sequencerT   rU   )r:   r"   r   rW   r   rX   r   r   r   test_fillna_frame   s    zTestMissing.test_fillna_frame)r<   r=   r>   r   r   r   r7   rl   r   r   r   ro   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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rn|rZ|jj|jju snJ n|jj|jjusnJ |j	j
 | u sJ d S )Nr
   rE   Fcopy)r   r   blocks)taker*   rR   rw   r   hasattrZ_mgrru   r   rE   _valuesto_dense)r:   r"   using_copy_on_writearrZdf
filled_valrW   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u sTJ n|j|jusTJ |j | u sjJ d S )Nr
   Fr   r   )r   r*   rs   r   r   r   )r:   r"   r   r   rx   r   rW   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_mismatch)r:   r"   rb   r   r   r     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}
t	
||
 |j||||g|jd}tg d}|||}t|j||||g|jd}
t	
||
 d S )	Nr   r
   r   r~   )TTFFfloatg        )TFTT)typer*   rs   r   r   r   arraywherer   rT   Zassert_series_equal)r:   r   rf   clsrF   rG   rx   ZcondrW   Z	new_dtyperX   otherr   r   r   test_where_series  s     

zTestMethods.test_where_seriesc                    s@   t jtdd t || W d    n1 s20    Y  d S r   )rT   r   r   r`   test_searchsorted)r:   r(   	as_seriesrb   r   r   r   1  s    zTestMethods.test_searchsortedc                 C   s6   | d}|jd |jd< |jd |jd ks2J d S )Nr   r
   )shiftZ_sparse_values)r:   r   rW   r   r   r   test_shift_0_periods5  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   rf   rb   r   r   r   <  s    
z%TestMethods.test_argmin_argmax_all_naboxc                    s    |  | t |||| d S r   )r;   r`   test_equals)r:   r   rf   r   r   rb   r   r   r   B  s    
zTestMethods.test_equalszfunc, na_action, expectedc                 C   s   | S r   r   rP   r   r   r   r.   J  r/   zTestMethods.<lambda>Ng      ?c                 C   s   | S 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    maprT   Zassert_extension_array_equal)r:   funcr   rX   r   rW   r   r   r   test_mapG  s    zTestMethods.test_mapr   c                 C   sH   d}t jt|d" |jdd |d W d    n1 s:0    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.   [  r/   z-TestMethods.test_map_raises.<locals>.<lambda>r   )r7   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   r7   rl   r   r   r   r   r   rm   r   r*   r   rs   rR   r   r   r   r    strr   r   ro   r   r   rb   r   r      s.   	
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                    s   t  | d S r   )r`   test_astype_stringr9   rb   r   r   r   _  s    zTestCasting.test_astype_string)	r<   r=   r>   r7   rl   r   	TypeErrorr   ro   r   r   rb   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 )Nr   z=Incorrected expected from Series.combine and tested elsewhere)r   r7   r8   r9   r   r   r   _skip_if_different_combinej  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   q  s    
z/TestArithmeticOps.test_arith_series_with_scalarc                    s   |  | t || d S r   )r   r`   test_arith_series_with_arrayr   rb   r   r   r   u  s    
z.TestArithmeticOps.test_arith_series_with_arrayc                    sH   |j jdkrn(|ddv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   stripr7   rl   r   r   r   r`   test_arith_frame_with_scalar)r:   r   r   r   rl   rb   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   ro   r   r   rb   r   r   d  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J |jjtjks.J t |trH||j|j}n>t|t|jt|}t||	 t||tjd}t
|| d S )Nr   )
isinstancer   r   subtyper   Zbool_r   allrJ   r   rT   r   )r:   r5   comparison_opr   oprW   r   rX   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   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)r<   r=   r>   r   r   r   r7   rl   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   )r`   test_array_repr)r:   r   r	   rb   r   r   r     s    zTestPrinting.test_array_repr)r<   r=   r>   r7   rl   r   r   ro   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enginerH   pythonc                    sD   d}t jt|d t || W d    n1 s60    Y  d S )Nz,.*must implement _from_sequence_of_strings.*r   )r7   r   NotImplementedErrorr`   test_EA_types)r:   r   r   Zexpected_msgrb   r   r   r     s    zTestParsing.test_EA_types)r<   r=   r>   r7   rl   rm   r   ro   r   r   rb   r   r     s   r   c                   @   s   e Zd ZdS )TestNoNumericAccumulationsNrB   r   r   r   r   r     s   r   );__doc__numpyr   r7   Zpandas.errorsr   Zpandasr*   r   Zpandas._testingZ_testingrT   Zpandas.arraysr   Zpandas.tests.extensionr   r   Zfixturer   r    r   r   r"   r'   r(   r)   r0   r1   r5   r6   ZBaseDtypeTestsr?   ZBaseInterfaceTestsrA   ZBaseConstructorsTestsrC   ZBaseReshapingTestsrD   ZBaseGetitemTestsrp   ZBaseSetitemTestsr{   ZBaseIndexTestsr|   ZBaseMissingTestsr}   ZBaseMethodsTestsr   ZBaseCastingTestsr   ZBaseArithmeticOpsTestsr   r   ZBasePrintingTestsr   ZBaseParsingTestsr   ZBaseAccumulateTestsr   r   r   r   r   <module>   sZ   





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