
    d/#                        d Z ddl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lmZ d Z ej        d	d
g          d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Zej        d             Z G d dej                  Z G d dej                   Z! G d dej"                  Z# G d dej$                  Z% G d dej&                  Z' G d dej(                  Z) G d  d!ej*                  Z+ G d" d#ej,                  Z- G d$ d%ej.                  Z/ G d& d'ej0                  Z1 G d( d)ej2                  Z3 G d* d+ej4                  Z5 G d, d-ej6                  Z7 G d. d/ej8                  Z9 G d0 d1ej:                  Z; G d2 d3ej<                  Z=d4 Z>dS )5aj  
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is_string_dtype)ArrowStringArrayStringDtype)basec                 f    | j         j        dk    rt          j        d           d } ||           S )Npyarrowz-only applicable for pyarrow chunked array n/ac                     dd l }| j        }t          |          dz  }|                    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splits       ^/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/tests/extension/test_string.py_split_arrayz!split_array.<locals>._split_array#   s    iK  A%&&Fk&5&!(F;uvv+>+EF
 
 %****tCyy%%%    )dtypestoragepytestskip)r   r   s     r   split_arrayr      sD    
yI%%CDDD	& 	& 	& <r   TF)paramsc                     | j         S N)param)requests    r   chunkedr%   1   s
    =r   c                 "    t          |           S )Nr   r   )string_storages    r   r   r   6   s    ~....r   c                    t           j                            t          t          j                  d          }|d         |d         k    rJt           j                            t          t          j                  d          }|d         |d         k    J|                                                     |          }|rt          |          n|S )Nd   )sizer      )	nprandomchoiceliststringascii_lettersconstruct_array_type_from_sequencer   )r   r%   stringsr   s       r   datar6   ;   s    itF$899DDG
!*

"
")""4(<#=#=C"HH !*

"
" 
$
$
&
&
5
5g
>
>C&/;sC/r   c                     |                                                      t          j        dg          }|rt	          |          n|S )zLength 2 array with [NA, Valid]Ar3   r4   pdNAr   r   r%   r   s      r   data_missingr=   E   sA     
$
$
&
&
5
5rucl
C
CC&/;sC/r   c                 z    |                                                      g d          }|rt          |          n|S )N)BCr8   )r3   r4   r   r<   s      r   data_for_sortingrA   L   s=    

$
$
&
&
5
5ooo
F
FC&/;sC/r   c                     |                                                      dt          j        dg          }|rt	          |          n|S )Nr?   r8   r9   r<   s      r   data_missing_for_sortingrC   R   sB    

$
$
&
&
5
5sBE36G
H
HC&/;sC/r   c                      t           j        S r"   )r:   r;    r   r   na_valuerF   X   s	    5Lr   c           
          |                                                      ddt          j        t          j        ddddg          }|rt	          |          n|S )Nr?   r8   r@   r9   r<   s      r   data_for_groupingrH   ]   sU    

$
$
&
&
5
5	c25"%c34 C  '/;sC/r   c                   $     e Zd Z fdZd Z xZS )	TestDtypec                 l    |d|j          dk    sJ t                                          |           d S )Nzstring[])r   supertest_eq_with_str)selfr   	__class__s     r   rN   zTestDtype.test_eq_with_strf   s@    2%-2222222  '''''r   c                 (    t          |          sJ d S r"   r   )rO   r   s     r   test_is_not_string_typez!TestDtype.test_is_not_string_typej   s     u%%%%%%%r   )__name__
__module____qualname__rN   rR   __classcell__rP   s   @r   rJ   rJ   e   sG        ( ( ( ( (& & & & & & &r   rJ   c                        e Zd Z fdZ xZS )TestInterfacec                     |j         j        dk    rt          j        d           t	                                          |           d S Nr   /2D support not implemented for ArrowStringArrayreason)r   r   r   r   rM   	test_viewrO   r6   r$   rP   s      r   r_   zTestInterface.test_viewq   sE    :**KPQQQQ$r   )rS   rT   rU   r_   rV   rW   s   @r   rY   rY   p   s8                         r   rY   c                       e Zd Zd Zd ZdS )TestConstructorsc                     d S r"   rE   )rO   r6   s     r   test_from_dtypez TestConstructors.test_from_dtypex   s    r   c                     t          j        dd           t          j        dgt	          d                    }t          |j        t                    sJ |j        j        dk    sJ d S )Nr   z1.0.0)
minversionEr'   r   )r   importorskipr:   Seriesr   
isinstancer   r   )rO   results     r   test_constructor_from_listz+TestConstructors.test_constructor_from_list|   sm    I'::::C5I(F(F(FGGG&,44444|#y000000r   N)rS   rT   rU   rd   rm   rE   r   r   rb   rb   w   s2          1 1 1 1 1r   rb   c                        e Zd Z fdZ xZS )TestReshapingc                     |j         j        dk    rt          j        d           t	                                          |           d S r[   )r   r   r   r   rM   test_transposer`   s      r   rq   zTestReshaping.test_transpose   sE    :**KPQQQQt$$$$$r   )rS   rT   rU   rq   rV   rW   s   @r   ro   ro      s8        % % % % % % % % %r   ro   c                       e Zd ZdS )TestGetitemNrS   rT   rU   rE   r   r   rs   rs              Dr   rs   c                        e Zd Z fdZ xZS )TestSetitemc                     |j         j        dk    rt          j        d           t	                                          |           d S r[   )r   r   r   r   rM   test_setitem_preserves_viewsr`   s      r   ry   z(TestSetitem.test_setitem_preserves_views   sE    :**KPQQQQ,,T22222r   )rS   rT   rU   ry   rV   rW   s   @r   rw   rw      s8        3 3 3 3 3 3 3 3 3r   rw   c                       e Zd ZdS )	TestIndexNrt   rE   r   r   r{   r{      ru   r   r{   c                   *     e Zd Zd Zd Z fdZ xZS )TestMissingc                 l    |                                 }|dg         }|                     ||           d S )Nr,   )dropnaassert_extension_array_equal)rO   r=   rl   expecteds       r   test_dropna_arrayzTestMissing.test_dropna_array   s;    $$&&$))&(;;;;;r   c                    ||                                           }|d         }|                    |          }||usJ |                     ||           t          j        t
          |j        j        dk              5  |                    d          }d d d            n# 1 swxY w Y   ||usJ |                     ||           d S )Nr   r   backfill)method)isnafillnar   tmmaybe_produces_warningr   r   r   )rO   r6   validrl   s       r   test_fillna_no_op_returns_copyz*TestMissing.test_fillna_no_op_returns_copy   s   TYY[[L!QU##T!!!!))&$777&
 2i ?
 
 	4 	4 [[
[33F	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 T!!!!))&$77777s   =B  B$'B$c                     t          j        t          |d uo|j        j        dk    d          5  t                                          ||           d d d            d S # 1 swxY w Y   d S )Nr   F)check_stacklevel)r   r   r   r   r   rM   test_fillna_series_method)rO   r=   fillna_methodrP   s      r   r   z%TestMissing.test_fillna_series_method   s    &%Q,*<*D	*Q"
 
 
 	K 	K
 GG--lMJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   #A  A$'A$)rS   rT   rU   r   r   r   rV   rW   s   @r   r}   r}      s_        < < <
8 8 8K K K K K K K K Kr   r}   c                   Z    e Zd Zej                            dddg          d             ZdS )TestNoReduceskipnaTFc                     |}|dv rd S t          j        |          }t          j        t                    5   t          ||          |           d d d            d S # 1 swxY w Y   d S )N)minmax)r   )r:   rj   r   raises	TypeErrorgetattr)rO   r6   all_numeric_reductionsr   op_namesers         r   test_reduce_series_numericz'TestNoReduce.test_reduce_series_numeric   s    (n$$4ioo]9%% 	1 	1!GC!!0000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   AA"%A"N)rS   rT   rU   r   markparametrizer   rE   r   r   r   r      sD        [Xe}551 1 651 1 1r   r   c                       e Zd Zd ZdS )TestMethodsc                 N   |d d                                          }t          j        ||                                                    }t	          j        ||j                  }|                    d                                          }t	          j        dt          |          z  gt          |          z  |j
        d          }t          |j        dd	          d
k    r|                    d          }n|                    d          }|                     ||           d S )N
   rh   T)	normalizer,   
proportionindexnamer    r   zdouble[pyarrow]Float64)uniquer-   arrayr   r:   rj   r   value_counts
sort_indexr   r   r   astypeassert_series_equal)rO   r6   valuesr   rl   r   s         r    test_value_counts_with_normalizez,TestMethods.test_value_counts_with_normalize   s   CRCy!!$		|,--iDJ///!!D!11<<>>9V_F+6<l
 
 
 4:y"--::'899HHy11H  22222r   N)rS   rT   rU   r   rE   r   r   r   r      s#        3 3 3 3 3r   r   c                       e Zd ZdS )TestCastingNrt   rE   r   r   r   r      ru   r   r   c                       e Zd Zd Zd ZdS )TestComparisonOpsc                 *   d|j          d} t          ||          |          }|j        j        dk    rdnd} t          |                    t
                    |          |                              |          }|                     ||           d S )N__r   zboolean[pyarrow]boolean)rS   r   r   r   r   objectr   )	rO   r   r6   opotherr   rl   r   r   s	            r   _compare_otherz TestComparisonOps._compare_other   s    &r{&&&&g&&u--&)i&79&D&D"")773::f--w77>>EEeLL  22222r   c                 ^    t          j        |          }|                     |||d           d S )Nabc)r:   rj   r   )rO   r6   comparison_opr   s       r   test_compare_scalarz%TestComparisonOps.test_compare_scalar   s/    iooC}e<<<<<r   N)rS   rT   rU   r   r   rE   r   r   r   r      s2        3 3 3= = = = =r   r   c                       e Zd ZdS )TestParsingNrt   rE   r   r   r   r      ru   r   r   c                       e Zd ZdS )TestPrintingNrt   rE   r   r   r   r      ru   r   r   c                        e Zd Zej                            dddg          d             Zej                            d           fd            Z xZ	S )TestGroupByas_indexTFc                    t          j        g d|d          }|                    d|          j                                        }t          j        |d          \  }}|rGt          j        |d          }t          j        g d|d	
          }|                     ||           d S t          j        |g dd          }| 	                    ||           d S )N)r,   r,   r   r      r   r,      )r8   r?   r?   )r   T)sort)r   )g      @g      ?g      @r8   r   )r?   r8   )
r:   	DataFramegroupbyr8   mean	factorizeIndexrj   r   assert_frame_equal)	rO   r   rH   dfrl   _uniquesr   r   s	            r   test_groupby_extension_aggz&TestGroupBy.test_groupby_extension_agg   s    \ 8 8 8?PQQRRC(335::<<\"3$???
7 	6HW3///EyCHHHH$$VX66666|'$H$HIIH##FH55555r   z4ignore:Falling back:pandas.errors.PerformanceWarningc                 L    t                                          ||           d S r"   )rM   test_groupby_extension_apply)rO   rH   groupby_apply_oprP   s      r   r   z(TestGroupBy.test_groupby_extension_apply   s%    ,,->@PQQQQQr   )
rS   rT   rU   r   r   r   r   filterwarningsr   rV   rW   s   @r   r   r      s        [Z$776 6 876 [ VWWR R R R XWR R R R Rr   r   c                   B    e Zd Z ej        d          d             ZdS )Test2DCompatT)autousec                 ^    t          |t                    rt          j        d           d S d S )Nr\   r]   )rk   r   r   r   )rO   r6   r$   s      r   arrow_not_supportedz Test2DCompat.arrow_not_supported  s<    d,-- 	RKPQQQQQQ	R 	Rr   N)rS   rT   rU   r   fixturer   rE   r   r   r   r     sB        V^D!!!R R "!R R Rr   r   c                     | \  }}}|                      g d          }t          j        |d<   |rt          j        |          }d}t	          j        t          |          5  |                    |           d d d            d S # 1 swxY w Y   d S )N)r   r   r,   zOsearchsorted requires array to be sorted, which is impossible with NAs present.)match)taker:   r;   rj   r   r   
ValueErrorsearchsorted)rA   	as_seriesbcar   msgs          r    test_searchsorted_with_na_raisesr     s    GAq!


			
*
*CeCG inn	0  
z	-	-	-                   s    BB
B)?__doc__r1   numpyr-   r   pandas.errorsr   pandasr:   pandas._testing_testingr   pandas.api.typesr   pandas.core.arraysr   pandas.core.arrays.string_r   pandas.tests.extensionr	   r   r   r%   r   r6   r=   rA   rC   rF   rH   BaseDtypeTestsrJ   BaseInterfaceTestsrY   BaseConstructorsTestsrb   BaseReshapingTestsro   BaseGetitemTestsrs   BaseSetitemTestsrw   BaseIndexTestsr{   BaseMissingTestsr}   BaseNoReduceTestsr   BaseMethodsTestsr   BaseCastingTestsr   BaseComparisonOpsTestsr   BaseParsingTestsr   BasePrintingTestsr   BaseGroupbyTestsr   Dim2CompatTestsr   r   rE   r   r   <module>r     s          , , , , , ,           , , , , , , / / / / / / 2 2 2 2 2 2 ' ' ' ' ' '  $ e}%%%  &% / / / 0 0 0 0 0 0 0 0 0
 0 0 0
    0 0 0& & & & &# & & &         D+      
1 
1 
1 
1 
1t1 
1 
1 
1% % % % %D+ % % %	 	 	 	 	$' 	 	 	3 3 3 3 3$' 3 3 3	 	 	 	 	# 	 	 	K K K K K$' K K K<
1 
1 
1 
1 
14) 
1 
1 
13 3 3 3 3$' 3 3 3&	 	 	 	 	$' 	 	 	
= 
= 
= 
= 
=3 
= 
= 
=	 	 	 	 	$' 	 	 		 	 	 	 	4) 	 	 	R R R R R$' R R R(R R R R R4' R R R    r   