o
    5cd4                     @   s  d Z ddlZddlZddlZddlmZm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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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/Z0G d/d0 d0ej1Z2G d1d2 d2ej3Z4G d3d4 d4ej5Z6G d5d6 d6ej7Z8G d7d8 d8ej9Z:G d9d: d:ej;Z<G d;d< d<ej=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)pa_version_under6p0pa_version_under7p0)PerformanceWarning)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s'J t| |S )Nr      )r	   _datalenchunked_arraychunks
num_chunkstype)arrpaarrow_arraysplit r   X/var/www/html/gps/gps/lib/python3.10/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   chunked4      r!   c                 C   s
   t | dS )N)r   r   )string_storager   r   r   r   9   s   
r   c                 C   sj   t jjttjdd}|d |d kr&t jjttjdd}|d |d ks|  |}|r3t|S |S )Nd   )sizer      )	nprandomchoiceliststringascii_lettersconstruct_array_type_from_sequencer   )r   r!   stringsr   r   r   r   data>   s   r0   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_missingH   s   r6   c                 C   s"   |   g d}|rt|S |S )N)BCr1   )r-   r.   r   r5   r   r   r   data_for_sortingO   s   r9   c                 C   s&   |   dtjdg}|rt|S |S )Nr7   r1   r2   r5   r   r   r   data_missing_for_sortingU   s   r:   c                   C   s   t jS r   )r3   r4   r   r   r   r   na_value[   r"   r;   c              
   C   s2   |   ddtjtjddddg}|rt|S |S )Nr7   r1   r8   r2   r5   r   r   r   data_for_grouping`   s   r<   c                          e Zd Z f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   rA   i   s   zTestDtype.test_eq_with_str)__name__
__module____qualname__rA   __classcell__r   r   rC   r   r>   h       r>   c                       r=   )TestInterfacec                    6   |j jdkrtjjdd}|j| t | d S Nr	   znot implementedreason)	r   r   r   markxfailnode
add_markerr@   	test_viewrB   r0   r    rO   rC   r   r   rS   o      zTestInterface.test_view)rE   rF   rG   rS   rH   r   r   rC   r   rJ   n   rI   rJ   c                   @      e Zd Zdd ZdS )TestConstructorsc                 C   s   d S r   r   rB   r0   r   r   r   test_from_dtypew   s   z TestConstructors.test_from_dtypeN)rE   rF   rG   rY   r   r   r   r   rW   v       rW   c                       r=   )TestReshapingc                    rK   rL   )	r   r   r   rO   rP   rQ   rR   r@   test_transposerT   rC   r   r   r\   }   rU   zTestReshaping.test_transpose)rE   rF   rG   r\   rH   r   r   rC   r   r[   |   rI   r[   c                   @      e Zd ZdS )TestGetitemNrE   rF   rG   r   r   r   r   r^          r^   c                       r=   )TestSetitemc                    rK   rL   )	r   r   r   rO   rP   rQ   rR   r@   test_setitem_preserves_viewsrT   rC   r   r   rb      rU   z(TestSetitem.test_setitem_preserves_views)rE   rF   rG   rb   rH   r   r   rC   r   ra      rI   ra   c                   @   r]   )	TestIndexNr_   r   r   r   r   rc      r`   rc   c                   @   rV   )TestMissingc                 C   sZ   t tto
|jjdk | }W d    n1 sw   Y  |dg }| || d S )Nr	   r&   )tmmaybe_produces_warningr   r   r   r   dropnaassert_extension_array_equal)rB   r6   resultexpectedr   r   r   test_dropna_array   s   

zTestMissing.test_dropna_arrayN)rE   rF   rG   rk   r   r   r   r   rd      rZ   rd   c                   @   s&   e Zd Zejdddgdd ZdS )TestNoReduceskipnaTFc                 C   sZ   |}|dv rd S t |}tt t|||d W d    d S 1 s&w   Y  d S )N)minmax)rm   )r3   Seriesr   raises	TypeErrorgetattr)rB   r0   all_numeric_reductionsrm   op_nameserr   r   r   test_reduce_series_numeric   s   
"z'TestNoReduce.test_reduce_series_numericN)rE   rF   rG   r   rO   parametrizerw   r   r   r   r   rl      s    rl   c                       sT  e Zd Z fddZ fddZ fddZejddd	d
ddde	j
fdde	j
fddg fddZejdddgdd Zejd fddZ fddZejdde	jg de	dd fd!e	jg d"e	dd fg fd#d$Zejd%ddg fd&d'Zejd%ddg fd(d)Zejd%ddg fd*d+Z  ZS ),TestMethodsc                    T   t jttot|jdddkdd t | W d    d S 1 s#w   Y  d S Nr    r	   F)check_stacklevel)re   rf   r   r   rs   r   r@   test_argsort)rB   r9   rC   r   r   r~         "zTestMethods.test_argsortc                    rz   r{   re   rf   r   r   rs   r   r@   test_argsort_missingrB   r:   rC   r   r   r      r   z TestMethods.test_argsort_missingc                    s<   t r|jjdkr|jtjjtdd t	 
||| d S Nr	   z min_max not supported in pyarrow)rq   rN   )r   r   r   rQ   rR   r   rO   rP   NotImplementedErrorr@   test_argmin_argmax)rB   r9   r:   r;   r    rC   r   r   r      s   zTestMethods.test_argmin_argmaxzop_name, skipna, expected)idxmaxTr   )idxminTr
   )argmaxTr   )argminTr
   r   Fr   )r   F)r   Fr   c                    sB   t r|jjdkr|r|jtjjtdd t	 
|||| d S r   )r   r   r   rQ   rR   r   rO   rP   r   r@   test_argreduce_series)rB   r:   ru   rm   rj   r    rC   r   r   r      s   
z!TestMethods.test_argreduce_seriesrg   Tc                 C   s   |d d }|r||    }n|}ttto(t|jdddko(|o'd|jjv   t	
|j|d }W d    n1 s@w   Y  ttto[t|jdddko[|oZd|jjv   t	
|j|d }W d    n1 ssw   Y  | || d S )N
   r   r|   r	   r6   )rg   )isnare   rf   r   r   rs   r   rQ   nodeidr3   rp   value_counts
sort_indexassert_series_equal)rB   all_datarg   r    otherri   rj   r   r   r   test_value_counts   s.   zTestMethods.test_value_counts4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t  | d S r   )r@    test_value_counts_with_normalizerX   rC   r   r   r     s   z,TestMethods.test_value_counts_with_normalizec                    rz   r{   r   r   rC   r   r   test_argsort_missing_array  r   z&TestMethods.test_argsort_missing_arrayzna_position, expectedlast)r
   r   r&   intp)r   first)r&   r
   r   c                    X   t jttot|jdddkdd t ||| W d    d S 1 s%w   Y  d S r{   )re   rf   r   r   rs   r   r@   test_nargsort)rB   r:   na_positionrj   rC   r   r   r     s   	"zTestMethods.test_nargsort	ascendingc                    r   r{   )re   rf   r   r   rs   r   r@   test_sort_values)rB   r9   r   sort_by_keyrC   r   r   r      s   "zTestMethods.test_sort_valuesc                    r   r{   )re   rf   r   r   rs   r   r@   test_sort_values_missing)rB   r:   r   r   rC   r   r   r   *  s   "z$TestMethods.test_sort_values_missingc                    sV   t jttot|jdddkdd t || W d    d S 1 s$w   Y  d S r{   )re   rf   r   r   rs   r   r@   test_sort_values_frame)rB   r9   r   rC   r   r   r   8  s   "z"TestMethods.test_sort_values_frame)rE   rF   rG   r~   r   r   r   rO   rx   r'   nanr   r   filterwarningsr   r   arrayr   r   r   r   r   rH   r   r   rC   r   ry      sF    		



	
	ry   c                   @   r]   )TestCastingNr_   r   r   r   r   r   C  r`   r   c                   @   s   e Zd Zdd Zdd ZdS )TestComparisonOpsc                 C   sF   d|j  d}t|||}t|t||d}| || d S )N__boolean)rE   rs   astypeobjectr   )rB   rv   r0   opr   ru   ri   rj   r   r   r   _compare_otherH  s   z TestComparisonOps._compare_otherc                 C   s   t |}| |||d d S )Nabc)r3   rp   r   )rB   r0   comparison_oprv   r   r   r   test_compare_scalarN  s   
z%TestComparisonOps.test_compare_scalarN)rE   rF   rG   r   r   r   r   r   r   r   G  s    r   c                   @   r]   )TestParsingNr_   r   r   r   r   r   S  r`   r   c                   @   r]   )TestPrintingNr_   r   r   r   r   r   W  r`   r   c                       sN   e Zd Zejdddgdd Z fddZejd fd	d
Z	  Z
S )TestGroupByas_indexTFc           	      C   s  t g d|d}tttot|jdddk |jd|dj	
 }W d    n1 s.w   Y  ttto@t|jdddk t j|dd	\}}W d    n1 sVw   Y  |rwt jj|dd
}t jg d|dd}| || d S t |g dd}| || d S )N)r&   r&   r
   r
      r   r&      )r1   r7   r   r|   r	   r7   )r   T)sort)name)g      @g      ?g      @r1   )indexr   )r7   r1   )r3   	DataFramere   rf   r   r   rs   r   groupbyr1   mean	factorizeIndex_with_inferrp   r   assert_frame_equal)	rB   r   r<   dfri   _uniquesr   rj   r   r   r   test_groupby_extension_agg\  s*   z&TestGroupBy.test_groupby_extension_aggc                    rz   r{   )re   rf   r   r   rs   r   r@    test_groupby_extension_transform)rB   r<   rC   r   r   r   t  r   z,TestGroupBy.test_groupby_extension_transformr   c                    s   t  || d S r   )r@   test_groupby_extension_apply)rB   r<   groupby_apply_oprC   r   r   r   }  s   z(TestGroupBy.test_groupby_extension_apply)rE   rF   rG   r   rO   rx   r   r   r   r   rH   r   r   rC   r   r   [  s    

	r   c                   @   s    e Zd Zejdddd ZdS )Test2DCompatT)autousec                 C   s,   t |trtjjdd}|j| d S d S )Nz/2D support not implemented for ArrowStringArrayrM   )
isinstancer   r   rO   rP   rQ   rR   rT   r   r   r   arrow_not_supported  s   
z Test2DCompat.arrow_not_supportedN)rE   rF   rG   r   fixturer   r   r   r   r   r     s    
r   )?__doc__r+   numpyr'   r   pandas.compatr   r   pandas.errorsr   pandasr3   pandas._testing_testingre   pandas.core.arraysr   pandas.core.arrays.string_r   pandas.tests.extensionr   r   r   r!   r   r0   r6   r9   r:   r;   r<   BaseDtypeTestsr>   BaseInterfaceTestsrJ   BaseConstructorsTestsrW   BaseReshapingTestsr[   BaseGetitemTestsr^   BaseSetitemTestsra   BaseIndexTestsrc   BaseMissingTestsrd   BaseNoReduceTestsrl   BaseMethodsTestsry   BaseCastingTestsr   BaseComparisonOpsTestsr   BaseParsingTestsr   BasePrintingTestsr   BaseGroupbyTestsr   Dim2CompatTestsr   r   r   r   r   <module>   sZ    


	




 '