a
    d                     @   s   d Z ddlZddlZddl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lmZ dd Zejd	d
gddd Zejdd Zejdd Zejdd Zejdd Zejdd Zejdd ZG dd dejZG dd dejZG dd dejZ G d d! d!ej!Z"G d"d# d#ej#Z$G d$d% d%ej%Z&G d&d' d'ej'Z(G d(d) d)ej)Z*G d*d+ d+ej+Z,G d,d- d-ej-Z.G d.d/ d/ej/Z0G d0d1 d1ej1Z2G d2d3 d3ej3Z4G d4d5 d5ej5Z6G d6d7 d7ej7Z8G d8d9 d9ej9Z:d:d; 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is_string_dtype)ArrowStringArrayStringDtype)basec                 C   s&   | j jdkrtd dd }|| S )Npyarrowz-only applicable for pyarrow chunked array n/ac                 S   sZ   dd l }| j}t|d }|g |d | j||d  j}|jdksNJ t| |S )Nr      )r   Z	_pa_arraylenZchunked_arraychunksZ
num_chunkstype)arrpaZarrow_arraysplit r   k/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/extension/test_string.py_split_array!   s    z!split_array.<locals>._split_array)dtypestoragepytestskip)r   r   r   r   r   split_array   s    
r   TF)paramsc                 C   s   | j S N)param)requestr   r   r   chunked/   s    r   c                 C   s
   t | dS )N)r   r   )Zstring_storager   r   r   r   4   s    r   c                 C   sh   t jdjttjdd}|d |d krJt jdjttjdd}q|  |}|rdt	|S |S )Nr	   d   )sizer      )
nprandomZdefault_rngchoiceliststringascii_lettersconstruct_array_type_from_sequencer   )r   r   stringsr   r   r   r   data9   s
    r)   c                 C   s$   |   tjdg}|r t|S |S )zLength 2 array with [NA, Valid]Ar&   r'   pdNAr   r   r   r   r   r   r   data_missingC   s    r/   c                 C   s"   |   g d}|rt|S |S )N)BCr*   )r&   r'   r   r.   r   r   r   data_for_sortingJ   s    r2   c                 C   s&   |   dtjdg}|r"t|S |S )Nr0   r*   r+   r.   r   r   r   data_missing_for_sortingP   s    r3   c              
   C   s2   |   ddtjtjddddg}|r.t|S |S )Nr0   r*   r1   r+   r.   r   r   r   data_for_groupingV   s    r4   c                       s$   e Zd Z fddZdd Z  ZS )	TestDtypec                    s&   |d|j  dksJ t | d S )Nzstring[])r   supertest_eq_with_strselfr   	__class__r   r   r8   _   s    zTestDtype.test_eq_with_strc                 C   s   t |sJ d S r   r   r9   r   r   r   test_is_not_string_typec   s    z!TestDtype.test_is_not_string_type)__name__
__module____qualname__r8   r=   __classcell__r   r   r;   r   r5   ^   s   r5   c                       s   e Zd Z fddZ  ZS )TestInterfacec                    s(   |j j|v rtjdd t | d S Nz/2D support not implemented for ArrowStringArray)reason)r   r   r   r   r7   	test_viewr:   r)   r   Zarrow_string_storager;   r   r   rE   j   s    zTestInterface.test_view)r>   r?   r@   rE   rA   r   r   r;   r   rB   i   s   rB   c                   @   s   e Zd Zdd ZdS )TestConstructorsc                 C   s   d S r   r   )r:   r)   r   r   r   test_from_dtypeq   s    z TestConstructors.test_from_dtypeN)r>   r?   r@   rH   r   r   r   r   rG   p   s   rG   c                       s   e Zd Z fddZ  ZS )TestReshapingc                    s(   |j j|v rtjdd t | d S rC   )r   r   r   r   r7   test_transposerF   r;   r   r   rJ   w   s    zTestReshaping.test_transpose)r>   r?   r@   rJ   rA   r   r   r;   r   rI   v   s   rI   c                   @   s   e Zd ZdS )TestGetitemNr>   r?   r@   r   r   r   r   rK   }   s   rK   c                       s   e Zd Z fddZ  ZS )TestSetitemc                    s(   |j j|v rtjdd t | d S rC   )r   r   r   r   r7   test_setitem_preserves_viewsrF   r;   r   r   rN      s    z(TestSetitem.test_setitem_preserves_views)r>   r?   r@   rN   rA   r   r   r;   r   rM      s   rM   c                   @   s   e Zd ZdS )	TestIndexNrL   r   r   r   r   rO      s   rO   c                   @   s   e Zd Zdd Zdd ZdS )TestMissingc                 C   s"   |  }|dg }t|| d S )Nr   )Zdropnatmassert_extension_array_equal)r:   r/   resultexpectedr   r   r   test_dropna_array   s    
zTestMissing.test_dropna_arrayc                 C   s`   ||    }|d }||}||us,J t|| |jdd}||usPJ t|| d S )Nr   Zbackfill)method)ZisnaZfillnarQ   rR   )r:   r)   ZvalidrS   r   r   r   test_fillna_no_op_returns_copy   s    
z*TestMissing.test_fillna_no_op_returns_copyN)r>   r?   r@   rU   rW   r   r   r   r   rP      s   rP   c                   @   s:   e Zd ZejeedddZej	
dddgdd Zd	S )

TestReduce)serop_namereturnc                 C   s   |j jdko|dv S )Npyarrow_numpy)anyall)r   r   )r:   rY   rZ   r   r   r   _supports_reduction   s    zTestReduce._supports_reductionskipnaTFc                 C   sX   |}|dv rd S t |}tt  t|||d W d    n1 sJ0    Y  d S )N)minmax)r`   )r,   Seriesr   raises	TypeErrorgetattr)r:   r)   Zall_numeric_reductionsr`   rZ   rY   r   r   r   test_reduce_series_numeric   s    
z%TestReduce.test_reduce_series_numericN)r>   r?   r@   r,   rc   strboolr_   r   markZparametrizerg   r   r   r   r   rX      s   rX   c                   @   s   e Zd ZdS )TestMethodsNrL   r   r   r   r   rk      s   rk   c                   @   s   e Zd ZdS )TestCastingNrL   r   r   r   r   rl      s   rl   c                   @   s"   e Zd ZedddZdd ZdS )TestComparisonOps)rZ   c                 C   s:   t |}|jdkrd}n|jdkr,tj}nd}||S )Nr   zboolean[pyarrow]r\   boolean)rQ   Z	get_dtyper   r    Zbool_Zastype)r:   rZ   objotherZpointwise_resultr   Zcast_tor   r   r   _cast_pointwise_result   s    


z(TestComparisonOps._cast_pointwise_resultc                 C   s   t |}| |||d d S )Nabc)r,   rc   Z_compare_other)r:   r)   Zcomparison_oprY   r   r   r   test_compare_scalar   s    
z%TestComparisonOps.test_compare_scalarN)r>   r?   r@   rh   rq   rs   r   r   r   r   rm      s   rm   c                   @   s   e Zd ZdS )TestParsingNrL   r   r   r   r   rt      s   rt   c                   @   s   e Zd ZdS )TestPrintingNrL   r   r   r   r   ru      s   ru   c                       s(   e Zd Zejd fddZ  ZS )TestGroupByz4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t  || d S r   )r7   test_groupby_extension_apply)r:   r4   Zgroupby_apply_opr;   r   r   rw      s    z(TestGroupBy.test_groupby_extension_apply)r>   r?   r@   r   rj   filterwarningsrw   rA   r   r   r;   r   rv      s   
rv   c                   @   s    e Zd Zejdddd ZdS )Test2DCompatT)Zautousec                 C   s   t |trtjdd d S rC   )
isinstancer   r   r   )r:   r)   r   r   r   r   arrow_not_supported   s    
z Test2DCompat.arrow_not_supportedN)r>   r?   r@   r   fixturer{   r   r   r   r   ry      s   
ry   c                 C   sp   | \}}}|  g d}tj|d< |r0t|}d}tjt|d || W d    n1 sb0    Y  d S )N)r	   r   r   zOsearchsorted requires array to be sorted, which is impossible with NAs present.)match)Ztaker,   r-   rc   r   rd   
ValueErrorZsearchsorted)r2   Z	as_seriesbcar   msgr   r   r    test_searchsorted_with_na_raises   s    


r   )<__doc__r$   numpyr    r   Zpandasr,   Zpandas._testingZ_testingrQ   Zpandas.api.typesr   Zpandas.core.arraysr   Zpandas.core.arrays.string_r   Zpandas.tests.extensionr   r   r|   r   r   r)   r/   r2   r3   r4   ZBaseDtypeTestsr5   ZBaseInterfaceTestsrB   ZBaseConstructorsTestsrG   ZBaseReshapingTestsrI   ZBaseGetitemTestsrK   ZBaseSetitemTestsrM   ZBaseIndexTestsrO   ZBaseMissingTestsrP   ZBaseReduceTestsrX   ZBaseMethodsTestsrk   ZBaseCastingTestsrl   ZBaseComparisonOpsTestsrm   ZBaseParsingTestsrt   ZBasePrintingTestsru   ZBaseGroupbyTestsrv   ZDim2CompatTestsry   r   r   r   r   r   <module>   sR   


	



