U
    *if{                     @   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 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.d/ d/ej+Z,G d0d1 d1ej-Z.G d2d3 d3ej/Z0G d4d5 d5ej1Z2G d6d7 d7ej3Z4G d8d9 d9ej5Z6G d:d; d;ej7Z8d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_under2p0)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   sV   dd l }| j}t|d }||d | j||d  j}|jdksJtt| |S )Nr      )r   _datalenZchunked_arraychunksZ
num_chunksAssertionErrortype)arrpaZarrow_arraysplit r   U/home/mars/bis/venv/lib/python3.8/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   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   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    r0   c                 C   s$   |   dddg}|r t|S |S )NBCr+   )r'   r(   r   r/   r   r   r   data_for_sortingJ   s    r3   c                 C   s&   |   dtjdg}|r"t|S |S )Nr1   r+   r,   r/   r   r   r   data_missing_for_sortingP   s    r4   c                   C   s   t jS r   )r-   r.   r   r   r   r   na_valueV   s    r5   c              
   C   s2   |   ddtjtjddddg}|r.t|S |S )Nr1   r+   r2   r,   r/   r   r   r   data_for_grouping[   s    r6   c                       s   e Zd Z fddZ  ZS )	TestDtypec                    s&   |d|j  dkstt | d S )Nzstring[])r   r   supertest_eq_with_str)selfr   	__class__r   r   r:   d   s    zTestDtype.test_eq_with_str)__name__
__module____qualname__r:   __classcell__r   r   r<   r   r7   c   s   r7   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_markerr9   	test_viewr;   r*   r   rF   r<   r   r   rJ   j   s    zTestInterface.test_view)r>   r?   r@   rJ   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_dtyper   s    z TestConstructors.test_from_dtypeN)r>   r?   r@   rN   r   r   r   r   rL   q   s   rL   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 rC   )	r   r   r   rF   rG   rH   rI   r9   test_transposerK   r<   r   r   rP   x   s    zTestReshaping.test_transpose)r>   r?   r@   rP   rA   r   r   r<   r   rO   w   s   rO   c                   @   s   e Zd ZdS )TestGetitemNr>   r?   r@   r   r   r   r   rQ      s   rQ   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 rC   )	r   r   r   rF   rG   rH   rI   r9   test_setitem_preserves_viewsrK   r<   r   r   rT      s    z(TestSetitem.test_setitem_preserves_views)r>   r?   r@   rT   rA   r   r   r<   r   rS      s   rS   c                   @   s   e Zd ZdS )	TestIndexNrR   r   r   r   r   rU      s   rU   c                   @   s   e Zd ZdS )TestMissingNrR   r   r   r   r   rV      s   rV   c                   @   s&   e Zd Zejdddgdd ZdS )TestNoReduceskipnaTFc              	   C   sD   |}|dkrd S t |}tt t|||d W 5 Q R X d S )N)minmax)rX   )r-   Seriesr   Zraises	TypeErrorgetattr)r;   r*   Zall_numeric_reductionsrX   op_nameserr   r   r   test_reduce_series_numeric   s    
z'TestNoReduce.test_reduce_series_numericN)r>   r?   r@   r   rF   Zparametrizer`   r   r   r   r   rW      s   rW   c                       sD   e Zd Zejjdd fddZejjdd fddZ  Z	S )TestMethodszreturns nullablerD   c                    s   t  ||S r   )r9   test_value_counts)r;   Zall_dataZdropnar<   r   r   rb      s    zTestMethods.test_value_countszreturns nullable: GH 44692c                    s   t  | d S r   )r9    test_value_counts_with_normalizerM   r<   r   r   rc      s    z,TestMethods.test_value_counts_with_normalize)
r>   r?   r@   r   rF   r   rb   rG   rc   rA   r   r   r<   r   ra      s   ra   c                   @   s   e Zd ZdS )TestCastingNrR   r   r   r   r   rd      s   rd   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>   r]   ZastypeobjectZassert_series_equal)r;   r_   r*   opotherr^   resultexpectedr   r   r   _compare_other   s    z TestComparisonOps._compare_otherc                 C   s   t |}| |||d d S )Nabc)r-   r[   rm   )r;   r*   Zcomparison_opr_   r   r   r   test_compare_scalar   s    
z%TestComparisonOps.test_compare_scalarN)r>   r?   r@   rm   ro   r   r   r   r   re      s   re   c                   @   s   e Zd ZdS )TestParsingNrR   r   r   r   r   rp      s   rp   c                   @   s   e Zd ZdS )TestPrintingNrR   r   r   r   r   rq      s   rq   c                       s   e Zd Z fddZ  ZS )TestGroupByc                    s:   |j jdkr*tr*tjjdd}|j| t 	| d S )Nr   z"pyarrow raises in self._data[item]rD   )
r   r   r   r   rF   rG   rH   rI   r9    test_groupby_extension_transform)r;   r6   r   rF   r<   r   r   rs      s    z,TestGroupBy.test_groupby_extension_transform)r>   r?   r@   rs   rA   r   r   r<   r   rr      s   rr   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 ArrowStringArrayrD   )
isinstancer   r   rF   rG   rH   rI   rK   r   r   r   arrow_not_supported   s
    
z Test2DCompat.arrow_not_supportedN)r>   r?   r@   r   fixturerv   r   r   r   r   rt      s   
rt   )9__doc__r%   numpyr!   r   Zpandas.compatr   Zpandasr-   Zpandas.core.arraysr   Zpandas.core.arrays.string_r   Zpandas.tests.extensionr   r   rw   r   r   r*   r0   r3   r4   r5   r6   ZBaseDtypeTestsr7   ZBaseInterfaceTestsrB   ZBaseConstructorsTestsrL   ZBaseReshapingTestsrO   ZBaseGetitemTestsrQ   ZBaseSetitemTestsrS   ZBaseIndexTestsrU   ZBaseMissingTestsrV   ZBaseNoReduceTestsrW   ZBaseMethodsTestsra   ZBaseCastingTestsrd   ZBaseComparisonOpsTestsre   ZBaseParsingTestsrp   ZBasePrintingTestsrq   ZBaseGroupbyTestsrr   ZDim2CompatTestsrt   r   r   r   r   <module>   sR   


	





	