o
    d/#                     @   s  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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.Z/G d/d0 d0ej0Z1G d1d2 d2ej2Z3G d3d4 d4ej4Z5G d5d6 d6ej6Z7G d7d8 d8ej8Z9G d9d: d:ej:Z;G d;d< d<ej<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)PerformanceWarning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s'J t| |S )Nr      )r	   _datalenchunked_arraychunks
num_chunkstype)arrpaarrow_arraysplit r   g/var/www/html/visualizacion-main/env/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   chunked1      r!   c                 C   s
   t | dS )Nr   r   )string_storager   r   r   r   6   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   r1   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_missingE   s   r7   c                 C   s"   |   g d}|rt|S |S )N)BCr2   )r.   r/   r   r6   r   r   r   data_for_sortingL   s   r:   c                 C   s&   |   dtjdg}|rt|S |S )Nr8   r2   r3   r6   r   r   r   data_missing_for_sortingR   s   r;   c                   C   s   t jS r   )r4   r5   r   r   r   r   na_valueX   r"   r<   c              
   C   s2   |   ddtjtjddddg}|rt|S |S )Nr8   r2   r9   r3   r6   r   r   r   data_for_grouping]   s   r=   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   rA   f   s   zTestDtype.test_eq_with_strc                 C   s   t |sJ d S r   r   rB   r   r   r   test_is_not_string_typej   s   z!TestDtype.test_is_not_string_type)__name__
__module____qualname__rA   rF   __classcell__r   r   rD   r   r>   e   s    r>   c                          e Zd Z fddZ  ZS )TestInterfacec                    (   |j jdkrtjdd t | d S Nr	   /2D support not implemented for ArrowStringArrayreason)r   r   r   r   r@   	test_viewrC   r1   r    rD   r   r   rR   q      zTestInterface.test_view)rG   rH   rI   rR   rJ   r   r   rD   r   rL   p       rL   c                   @      e Zd Zdd Zdd ZdS )TestConstructorsc                 C   s   d S r   r   )rC   r1   r   r   r   test_from_dtypex   s   z TestConstructors.test_from_dtypec                 C   sH   t jddd tjdgtddd}t|jtsJ |jjdks"J d S )Nr	   z1.0.0)
minversionEr#   r   )r   importorskipr4   Seriesr   
isinstancer   r   )rC   resultr   r   r   test_constructor_from_list|   s   z+TestConstructors.test_constructor_from_listN)rG   rH   rI   rX   r`   r   r   r   r   rW   w   s    rW   c                       rK   )TestReshapingc                    rM   rN   )r   r   r   r   r@   test_transposerS   rD   r   r   rb      rT   zTestReshaping.test_transpose)rG   rH   rI   rb   rJ   r   r   rD   r   ra      rU   ra   c                   @      e Zd ZdS )TestGetitemNrG   rH   rI   r   r   r   r   rd          rd   c                       rK   )TestSetitemc                    rM   rN   )r   r   r   r   r@   test_setitem_preserves_viewsrS   rD   r   r   rh      rT   z(TestSetitem.test_setitem_preserves_views)rG   rH   rI   rh   rJ   r   r   rD   r   rg      rU   rg   c                   @   rc   )	TestIndexNre   r   r   r   r   ri      rf   ri   c                       s,   e Zd Zdd Zdd Z fddZ  ZS )TestMissingc                 C   s"   |  }|dg }| || d S )Nr'   )dropnaassert_extension_array_equal)rC   r7   r_   expectedr   r   r   test_dropna_array   s   
zTestMissing.test_dropna_arrayc                 C   s   ||    }|d }||}||usJ | || tt|jjdk |jdd}W d    n1 s7w   Y  ||usBJ | || d S )Nr   r	   backfill)method)isnafillnarl   tmmaybe_produces_warningr   r   r   )rC   r1   validr_   r   r   r   test_fillna_no_op_returns_copy   s   
z*TestMissing.test_fillna_no_op_returns_copyc                    sT   t jt|d uo|jjdkdd t || W d    d S 1 s#w   Y  d S )Nr	   F)check_stacklevel)rs   rt   r   r   r   r@   test_fillna_series_method)rC   r7   fillna_methodrD   r   r   rx      s   "z%TestMissing.test_fillna_series_method)rG   rH   rI   rn   rv   rx   rJ   r   r   rD   r   rj      s    rj   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)r{   )r4   r]   r   raises	TypeErrorgetattr)rC   r1   all_numeric_reductionsr{   op_nameserr   r   r   test_reduce_series_numeric   s   
"z'TestNoReduce.test_reduce_series_numericN)rG   rH   rI   r   markparametrizer   r   r   r   r   rz      s    rz   c                   @   s   e Zd Zdd ZdS )TestMethodsc                 C   s   |d d   }t||   }tj||jd}|jdd }tjdt	| gt	| |j
dd}t|jdd	d
krC|d}n|d}| || d S )N
   r[   T)	normalizer'   
proportionindexnamer    r	   zdouble[pyarrow]Float64)uniquer(   arrayrq   r4   r]   r   value_counts
sort_indexr   r   r   astypeassert_series_equal)rC   r1   valuesr   r_   rm   r   r   r    test_value_counts_with_normalize   s   
z,TestMethods.test_value_counts_with_normalizeN)rG   rH   rI   r   r   r   r   r   r      s    r   c                   @   rc   )TestCastingNre   r   r   r   r   r      rf   r   c                   @   rV   )TestComparisonOpsc           	      C   sZ   d|j  d}t|||}|jjdkrdnd}t|t|||}| || d S )N__r	   zboolean[pyarrow]boolean)rG   r   r   r   r   objectr   )	rC   r   r1   opotherr   r_   r   rm   r   r   r   _compare_other   s
   z TestComparisonOps._compare_otherc                 C   s   t |}| |||d d S )Nabc)r4   r]   r   )rC   r1   comparison_opr   r   r   r   test_compare_scalar   s   
z%TestComparisonOps.test_compare_scalarN)rG   rH   rI   r   r   r   r   r   r   r      s    r   c                   @   rc   )TestParsingNre   r   r   r   r   r      rf   r   c                   @   rc   )TestPrintingNre   r   r   r   r   r      rf   r   c                       sB   e Zd Zejdddgdd Zejd fddZ  Z	S )	TestGroupByas_indexTFc           	      C   s   t g d|d}|jd|dj }t j|dd\}}|r8t j|dd}t jg d|d	d
}| || d S t |g dd}| 	|| d S )N)r'   r'   r
   r
      r   r'      )r2   r8   r8   )r   T)sort)r   )g      @g      ?g      @r2   r   )r8   r2   )
r4   	DataFramegroupbyr2   mean	factorizeIndexr]   r   assert_frame_equal)	rC   r   r=   dfr_   _uniquesr   rm   r   r   r   test_groupby_extension_agg   s   z&TestGroupBy.test_groupby_extension_aggz4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t  || d S r   )r@   test_groupby_extension_apply)rC   r=   groupby_apply_oprD   r   r   r      s   z(TestGroupBy.test_groupby_extension_apply)
rG   rH   rI   r   r   r   r   filterwarningsr   rJ   r   r   rD   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dd d S d S )NrO   rP   )r^   r   r   r   rS   r   r   r   arrow_not_supported  s   
z Test2DCompat.arrow_not_supportedN)rG   rH   rI   r   fixturer   r   r   r   r   r     s    
r   c                 C   sr   | \}}}|  g d}tj|d< |rt|}d}tjt|d || W d    d S 1 s2w   Y  d S )N)r
   r   r'   zOsearchsorted requires array to be sorted, which is impossible with NAs present.)match)taker4   r5   r]   r   r~   
ValueErrorsearchsorted)r:   	as_seriesbcar   msgr   r   r    test_searchsorted_with_na_raises  s   


"r   )?__doc__r,   numpyr(   r   pandas.errorsr   pandasr4   pandas._testing_testingrs   pandas.api.typesr   pandas.core.arraysr   pandas.core.arrays.string_r   pandas.tests.extensionr   r   r   r!   r   r1   r7   r:   r;   r<   r=   BaseDtypeTestsr>   BaseInterfaceTestsrL   BaseConstructorsTestsrW   BaseReshapingTestsra   BaseGetitemTestsrd   BaseSetitemTestsrg   BaseIndexTestsri   BaseMissingTestsrj   BaseNoReduceTestsrz   BaseMethodsTestsr   BaseCastingTestsr   BaseComparisonOpsTestsr   BaseParsingTestsr   BasePrintingTestsr   BaseGroupbyTestsr   Dim2CompatTestsr   r   r   r   r   r   <module>   sZ    


	




