a
    j=icd4                     @   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sNJ t| |S )Nr      )r	   _datalenZchunked_arraychunksZ
num_chunkstype)arrpaZarrow_arraysplit r   s/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/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   chunked4   s    r   c                 C   s
   t | dS )N)r   r   )Zstring_storager   r   r   r   9   s    r   c                 C   s\   t jjttjdd}|d |d kr>t jjttjdd}q|  |}|rXt|S |S )Nd   )sizer      )	nprandomchoiceliststringascii_lettersconstruct_array_type_from_sequencer   )r   r   stringsr   r   r   r   data>   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_missingH   s    r1   c                 C   s"   |   g d}|rt|S |S )N)BCr,   )r(   r)   r   r0   r   r   r   data_for_sortingO   s    r4   c                 C   s&   |   dtjdg}|r"t|S |S )Nr2   r,   r-   r0   r   r   r   data_missing_for_sortingU   s    r5   c                   C   s   t jS r   )r.   r/   r   r   r   r   na_value[   s    r6   c              
   C   s2   |   ddtjtjddddg}|r.t|S |S )Nr2   r,   r3   r-   r0   r   r   r   data_for_grouping`   s    r7   c                       s   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   r;   i   s    zTestDtype.test_eq_with_str)__name__
__module____qualname__r;   __classcell__r   r   r=   r   r8   h   s   r8   c                       s   e Zd Z fddZ  ZS )TestInterfacec                    s6   |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r<   r+   r   rG   r=   r   r   rK   o   s    zTestInterface.test_view)r?   r@   rA   rK   rB   r   r   r=   r   rC   n   s   rC   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_dtypew   s    z TestConstructors.test_from_dtypeN)r?   r@   rA   rO   r   r   r   r   rM   v   s   rM   c                       s   e Zd Z fddZ  ZS )TestReshapingc                    s6   |j jdkr&tjjdd}|j| t | d S rD   )	r   r   r   rG   rH   rI   rJ   r:   test_transposerL   r=   r   r   rQ   }   s    zTestReshaping.test_transpose)r?   r@   rA   rQ   rB   r   r   r=   r   rP   |   s   rP   c                   @   s   e Zd ZdS )TestGetitemNr?   r@   rA   r   r   r   r   rR      s   rR   c                       s   e Zd Z fddZ  ZS )TestSetitemc                    s6   |j jdkr&tjjdd}|j| t | d S rD   )	r   r   r   rG   rH   rI   rJ   r:   test_setitem_preserves_viewsrL   r=   r   r   rU      s    z(TestSetitem.test_setitem_preserves_views)r?   r@   rA   rU   rB   r   r   r=   r   rT      s   rT   c                   @   s   e Zd ZdS )	TestIndexNrS   r   r   r   r   rV      s   rV   c                   @   s   e Zd Zdd ZdS )TestMissingc                 C   sZ   t tto|jjdk | }W d    n1 s60    Y  |dg }| || d S )Nr	   r!   )tmmaybe_produces_warningr   r   r   r   dropnaZassert_extension_array_equal)r<   r1   resultexpectedr   r   r   test_dropna_array   s    &
zTestMissing.test_dropna_arrayN)r?   r@   rA   r]   r   r   r   r   rW      s   rW   c                   @   s&   e Zd Zejdddgdd ZdS )TestNoReduce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_   op_nameserr   r   r   test_reduce_series_numeric   s    
z'TestNoReduce.test_reduce_series_numericN)r?   r@   rA   r   rG   parametrizerh   r   r   r   r   r^      s   r^   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                    sR   t jttot|jdddkdd t | W d    n1 sD0    Y  d S Nr    r	   F)Zcheck_stacklevel)rX   rY   r   r   re   r   r:   test_argsort)r<   r4   r=   r   r   rm      s    zTestMethods.test_argsortc                    sR   t jttot|jdddkdd t | W d    n1 sD0    Y  d S rk   rX   rY   r   r   re   r   r:   test_argsort_missingr<   r5   r=   r   r   ro      s    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)rc   rF   )r   r   r   rI   rJ   r   rG   rH   NotImplementedErrorr:   test_argmin_argmax)r<   r4   r5   r6   r   r=   r   r   rs      s    zTestMethods.test_argmin_argmaxzop_name, skipna, expected)idxmaxTr   )idxminTr
   )argmaxTr   )argminTr
   rt   Fru   )rv   F)rw   Frx   c                    sB   t r,|jjdkr,|r,|jtjjtdd t	 
|||| d S rq   )r   r   r   rI   rJ   r   rG   rH   rr   r:   test_argreduce_series)r<   r5   rf   r_   r\   r   r=   r   r   ry      s    
z!TestMethods.test_argreduce_seriesrZ   Tc                 C   s   |d d }|r ||    }n|}tttoPt|jdddkoP|oNd|jjv  & t	
|j|d }W d    n1 s0    Y  tttot|jdddko|od|jjv  & t	
|j|d }W d    n1 s0    Y  | || d S )N
   r   rl   r	   r1   )rZ   )ZisnarX   rY   r   r   re   r   rI   Znodeidr.   rb   Zvalue_countsZ
sort_indexassert_series_equal)r<   Zall_datarZ   r   otherr[   r\   r   r   r   test_value_counts   s*    44zTestMethods.test_value_counts4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t  | d S r   )r:    test_value_counts_with_normalizerN   r=   r   r   r     s    z,TestMethods.test_value_counts_with_normalizec                    sR   t jttot|jdddkdd t | W d    n1 sD0    Y  d S rk   rn   rp   r=   r   r   test_argsort_missing_array  s    z&TestMethods.test_argsort_missing_arrayzna_position, expectedlast)r
   r   r!   Zintp)r   first)r!   r
   r   c                    sV   t jttot|jdddkdd  t ||| W d    n1 sH0    Y  d S rk   )rX   rY   r   r   re   r   r:   test_nargsort)r<   r5   Zna_positionr\   r=   r   r   r     s    	zTestMethods.test_nargsort	ascendingc                    sV   t jttot|jdddkdd  t ||| W d    n1 sH0    Y  d S rk   )rX   rY   r   r   re   r   r:   test_sort_values)r<   r4   r   sort_by_keyr=   r   r   r      s    zTestMethods.test_sort_valuesc                    sV   t jttot|jdddkdd  t ||| W d    n1 sH0    Y  d S rk   )rX   rY   r   r   re   r   r:   test_sort_values_missing)r<   r5   r   r   r=   r   r   r   *  s    z$TestMethods.test_sort_values_missingc                    sT   t jttot|jdddkdd t || W d    n1 sF0    Y  d S rk   )rX   rY   r   r   re   r   r:   test_sort_values_frame)r<   r4   r   r=   r   r   r   8  s    z"TestMethods.test_sort_values_frame)r?   r@   rA   rm   ro   rs   r   rG   ri   r"   nanry   r}   filterwarningsr   r   arrayr   r   r   r   r   rB   r   r   r=   r   rj      sD   		



	
	rj   c                   @   s   e Zd ZdS )TestCastingNrS   r   r   r   r   r   C  s   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)r?   re   Zastypeobjectr{   )r<   rg   r+   opr|   rf   r[   r\   r   r   r   _compare_otherH  s    z TestComparisonOps._compare_otherc                 C   s   t |}| |||d d S )Nabc)r.   rb   r   )r<   r+   Zcomparison_oprg   r   r   r   test_compare_scalarN  s    
z%TestComparisonOps.test_compare_scalarN)r?   r@   rA   r   r   r   r   r   r   r   G  s   r   c                   @   s   e Zd ZdS )TestParsingNrS   r   r   r   r   r   S  s   r   c                   @   s   e Zd ZdS )TestPrintingNrS   r   r   r   r   r   W  s   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\0    Y  tttot|jdddk" t j|dd	\}}W d    n1 s0    Y  |rt jj|dd
}t jg d|dd}| || n t |g dd}| || d S )N)r!   r!   r
   r
      r   r!      )r,   r2   r   rl   r	   r2   )r   T)sort)name)g      @g      ?g      @r,   )indexr   )r2   r,   )r.   Z	DataFramerX   rY   r   r   re   r   groupbyr,   meanZ	factorizeIndexZ_with_inferrb   r{   Zassert_frame_equal)	r<   r   r7   dfr[   _Zuniquesr   r\   r   r   r   test_groupby_extension_agg\  s&    20z&TestGroupBy.test_groupby_extension_aggc                    sR   t jttot|jdddkdd t | W d    n1 sD0    Y  d S rk   )rX   rY   r   r   re   r   r:    test_groupby_extension_transform)r<   r7   r=   r   r   r   t  s    z,TestGroupBy.test_groupby_extension_transformr~   c                    s   t  || d S r   )r:   test_groupby_extension_apply)r<   r7   Zgroupby_apply_opr=   r   r   r   }  s    z(TestGroupBy.test_groupby_extension_apply)r?   r@   rA   r   rG   ri   r   r   r   r   rB   r   r   r=   r   r   [  s
   
	
r   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jdd}|j| d S )Nz/2D support not implemented for ArrowStringArrayrE   )
isinstancer   r   rG   rH   rI   rJ   rL   r   r   r   arrow_not_supported  s
    
z Test2DCompat.arrow_not_supportedN)r?   r@   rA   r   fixturer   r   r   r   r   r     s   
r   )?__doc__r&   numpyr"   r   Zpandas.compatr   r   Zpandas.errorsr   Zpandasr.   Zpandas._testingZ_testingrX   Zpandas.core.arraysr   Zpandas.core.arrays.string_r   Zpandas.tests.extensionr   r   r   r   r   r+   r1   r4   r5   r6   r7   ZBaseDtypeTestsr8   ZBaseInterfaceTestsrC   ZBaseConstructorsTestsrM   ZBaseReshapingTestsrP   ZBaseGetitemTestsrR   ZBaseSetitemTestsrT   ZBaseIndexTestsrV   ZBaseMissingTestsrW   ZBaseNoReduceTestsr^   ZBaseMethodsTestsrj   ZBaseCastingTestsr   ZBaseComparisonOpsTestsr   ZBaseParsingTestsr   ZBasePrintingTestsr   ZBaseGroupbyTestsr   ZDim2CompatTestsr   r   r   r   r   <module>   sX   


	




 '