U
    ÎZjd4  ã                   @   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   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   úe/var/www/html/TRUCKING_PROJECT/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   Ú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 )Néd   )Ú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    r2   c                 C   s$   |   ¡  dddg¡}|r t|ƒS |S )NÚBÚCr-   )r)   r*   r   r1   r   r   r   Údata_for_sortingO   s    r5   c                 C   s&   |   ¡  dtjdg¡}|r"t|ƒS |S )Nr3   r-   r.   r1   r   r   r   Údata_missing_for_sortingU   s    r6   c                   C   s   t jS r   )r/   r0   r   r   r   r   Úna_value[   s    r7   c              
   C   s2   |   ¡  ddtjtjddddg¡}|r.t|ƒS |S )Nr3   r-   r4   r.   r1   r   r   r   Údata_for_grouping`   s    ÿr8   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<   i   s    zTestDtype.test_eq_with_str)Ú__name__Ú
__module__Ú__qualname__r<   Ú__classcell__r   r   r>   r   r9   h   s   r9   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   rH   r>   r   r   rL   o   s    zTestInterface.test_view)r@   rA   rB   rL   rC   r   r   r>   r   rD   n   s   rD   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@   rA   rB   rP   r   r   r   r   rN   v   s   rN   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 rE   )	r   r   r   rH   rI   rJ   rK   r;   Útest_transposerM   r>   r   r   rR   }   s    zTestReshaping.test_transpose)r@   rA   rB   rR   rC   r   r   r>   r   rQ   |   s   rQ   c                   @   s   e Zd ZdS )ÚTestGetitemN©r@   rA   rB   r   r   r   r   rS   „   s   rS   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 rE   )	r   r   r   rH   rI   rJ   rK   r;   Útest_setitem_preserves_viewsrM   r>   r   r   rV   ‰   s    z(TestSetitem.test_setitem_preserves_views)r@   rA   rB   rV   rC   r   r   r>   r   rU   ˆ   s   rU   c                   @   s   e Zd ZdS )Ú	TestIndexNrT   r   r   r   r   rW   �   s   rW   c                   @   s   e Zd Zdd„ ZdS )ÚTestMissingc              	   C   sF   t  tto|jjdk¡� | ¡ }W 5 Q R X |dg }|  ||¡ d S )Nr	   r"   )ÚtmÚmaybe_produces_warningr   r   r   r   ÚdropnaZassert_extension_array_equal)r=   r2   ÚresultÚexpectedr   r   r   Útest_dropna_array•   s    þ
zTestMissing.test_dropna_arrayN)r@   rA   rB   r^   r   r   r   r   rX   ”   s   rX   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)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@   rA   rB   r   rH   Úparametrizeri   r   r   r   r   r_   Ÿ   s   r_   c                       sX  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ddd ge	 d!¡d"�fd#e	jd ddg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              	      s>   t jttot|jddƒdkdd�� tƒ  |¡ W 5 Q R X d S ©Nr   Ú r	   F)Zcheck_stacklevel)rY   rZ   r   r   rf   r   r;   Útest_argsort)r=   r5   r>   r   r   rn   ­   s    üzTestMethods.test_argsortc              	      s>   t jttot|jddƒdkdd�� tƒ  |¡ W 5 Q R X d S rl   ©rY   rZ   r   r   rf   r   r;   Útest_argsort_missing©r=   r6   r>   r   r   rp   ¶   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)rd   rG   )r   r   r   rJ   rK   r   rH   rI   ÚNotImplementedErrorr;   Útest_argmin_argmax)r=   r5   r6   r7   r   r>   r   r   rt   ¿   s    þÿzTestMethods.test_argmin_argmaxzop_name, skipna, expected)ÚidxmaxTr   )ÚidxminTr
   )ÚargmaxTr   )ÚargminTr
   ru   Frv   )rw   Féÿÿÿÿ)rx   Fry   c                    sB   t r,|jjdkr,|r,|j tjjtdd�¡ t	ƒ  
||||¡ d S rr   )r   r   r   rJ   rK   r   rH   rI   rs   r;   Útest_argreduce_series)r=   r6   rg   r`   r]   r   r>   r   r   rz   Ë   s$    ÿ
þýþÿ   ÿz!TestMethods.test_argreduce_seriesr[   Tc              	   C   sØ   |d d… }|r ||  ¡   }n|}t ttoPt|jddƒdkoP|oNd|jjk ¡� t	 
|¡j|d� ¡ }W 5 Q R X t tto¢t|jddƒdko¢|o d|jjk ¡� t	 
|¡j|d� ¡ }W 5 Q R X |  ||¡ d S )Né
   r   rm   r	   r2   )r[   )ZisnarY   rZ   r   r   rf   r   rJ   Znodeidr/   rc   Zvalue_countsZ
sort_indexÚassert_series_equal)r=   Zall_datar[   r   Úotherr\   r]   r   r   r   Útest_value_countsê   s*    ÿü ÿü zTestMethods.test_value_countsú4ignore:Falling back:pandas.errors.PerformanceWarningc                    s   t ƒ  |¡ d S r   )r;   Ú test_value_counts_with_normalizerO   r>   r   r   r€     s    z,TestMethods.test_value_counts_with_normalizec              	      s>   t jttot|jddƒdkdd�� tƒ  |¡ W 5 Q R X d S rl   ro   rq   r>   r   r   Útest_argsort_missing_array  s    üz&TestMethods.test_argsort_missing_arrayzna_position, expectedÚlastr
   r   r"   Zintp)r   Úfirstc              	      sB   t jttot|jddƒdkdd�� tƒ  |||¡ W 5 Q R X d S rl   )rY   rZ   r   r   rf   r   r;   Útest_nargsort)r=   r6   Zna_positionr]   r>   r   r   r„     s    	üzTestMethods.test_nargsortÚ	ascendingc              	      sB   t jttot|jddƒdkdd�� tƒ  |||¡ W 5 Q R X d S rl   )rY   rZ   r   r   rf   r   r;   Útest_sort_values)r=   r5   r…   Úsort_by_keyr>   r   r   r†      s    üzTestMethods.test_sort_valuesc              	      sB   t jttot|jddƒdkdd�� tƒ  |||¡ W 5 Q R X d S rl   )rY   rZ   r   r   rf   r   r;   Útest_sort_values_missing)r=   r6   r…   r‡   r>   r   r   rˆ   *  s    ü  ÿz$TestMethods.test_sort_values_missingc              	      s@   t jttot|jddƒdkdd�� tƒ  ||¡ W 5 Q R X d S rl   )rY   rZ   r   r   rf   r   r;   Útest_sort_values_frame)r=   r5   r…   r>   r   r   r‰   8  s    üz"TestMethods.test_sort_values_frame)r@   rA   rB   rn   rp   rt   r   rH   rj   r#   Únanrz   r~   Úfilterwarningsr€   r�   Úarrayr   r„   r†   rˆ   r‰   rC   r   r   r>   r   rk   ¬   sD   		

øþ

	þþ
	rk   c                   @   s   e Zd ZdS )ÚTestCastingNrT   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@   rf   ZastypeÚobjectr|   )r=   rh   r,   Úopr}   rg   r\   r]   r   r   r   Ú_compare_otherH  s    z TestComparisonOps._compare_otherc                 C   s   t  |¡}|  |||d¡ d S )NÚabc)r/   rc   r“   )r=   r,   Zcomparison_oprh   r   r   r   Útest_compare_scalarN  s    
z%TestComparisonOps.test_compare_scalarN)r@   rA   rB   r“   r•   r   r   r   r   rŽ   G  s   rŽ   c                   @   s   e Zd ZdS )ÚTestParsingNrT   r   r   r   r   r–   S  s   r–   c                   @   s   e Zd ZdS )ÚTestPrintingNrT   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  ddddddddg|dœ¡}t tto:t|jddƒdk¡� |jd	|d
�j	 
¡ }W 5 Q R X t ttoxt|jddƒdk¡� t j|dd�\}}W 5 Q R X |rÒt jj|d	d�}t jdddg|dd�}|  ||¡ n"t  |dddgdœ¡}|  ||¡ d S )Nr"   r
   é   é   )r-   r3   r   rm   r	   r3   )r™   T)Úsort)Únameg      @g      ð?g      @r-   )Úindexr�   )r3   r-   )r/   Z	DataFramerY   rZ   r   r   rf   r   Úgroupbyr-   ZmeanZ	factorizeÚIndexZ_with_inferrc   r|   Zassert_frame_equal)	r=   r™   r8   Zdfr\   Ú_Zuniquesrž   r]   r   r   r   Útest_groupby_extension_agg\  s&     ýýz&TestGroupBy.test_groupby_extension_aggc              	      s>   t jttot|jddƒdkdd�� tƒ  |¡ W 5 Q R X d S rl   )rY   rZ   r   r   rf   r   r;   Ú test_groupby_extension_transform)r=   r8   r>   r   r   r£   t  s    üz,TestGroupBy.test_groupby_extension_transformr   c                    s   t ƒ  ||¡ d S r   )r;   Útest_groupby_extension_apply)r=   r8   Zgroupby_apply_opr>   r   r   r¤   }  s    z(TestGroupBy.test_groupby_extension_apply)r@   rA   rB   r   rH   rj   r¢   r£   r‹   r¤   rC   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 ArrowStringArrayrF   )Ú
isinstancer   r   rH   rI   rJ   rK   rM   r   r   r   Úarrow_not_supportedƒ  s
    
ÿz Test2DCompat.arrow_not_supportedN)r@   rA   rB   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_testingrY   Zpandas.core.arraysr   Zpandas.core.arrays.string_r   Zpandas.tests.extensionr   r   r¨   r   r   r,   r2   r5   r6   r7   r8   ZBaseDtypeTestsr9   ZBaseInterfaceTestsrD   ZBaseConstructorsTestsrN   ZBaseReshapingTestsrQ   ZBaseGetitemTestsrS   ZBaseSetitemTestsrU   ZBaseIndexTestsrW   ZBaseMissingTestsrX   ZBaseNoReduceTestsr_   ZBaseMethodsTestsrk   ZBaseCastingTestsr�   ZBaseComparisonOpsTestsrŽ   ZBaseParsingTestsr–   ZBasePrintingTestsr—   ZBaseGroupbyTestsr˜   ZDim2CompatTestsr¥   r   r   r   r   Ú<module>   sX   


	




 '