U
    ÎZjÌ9  ã                   @   s\   d dl Zd dlZd dlmZmZmZmZ d dlZ	d dl
mZ d dlmZ G dd„ deƒZdS )é    N)ÚDatetimeTZDtypeÚIntervalDtypeÚPandasDtypeÚPeriodDtype)ÚBaseExtensionTestsc                
   @   sÔ  e Zd Zejdd„ dd„ dd„ dd„ dd„ dd„ dd„ gd	d
dddddgd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Z	dd„ Z
ej dddg¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zejjde d.d.d.d/d/g¡ejd.d.d.d/d/gd0d1�ejd.d.d.ejejgd0d1�gd2d3d4gd5�d6d7„ ƒZd8d9„ Zd:d;„ Zejjd<d=d>d?gejd=d>d?gd@d1�e d=d>d?g¡gdAdBd2gd5�dCdD„ ƒZejjdEd=d>d?ejgd/fejd=d>d?ejgd.ejjdFdG�dH�ejd=d>d?ejgd@d1�d/fejd=d>d?ejgd@d1�d/fgdIdJdKdLgd5�dMdN„ ƒZej dOd.d/g¡ej dddPg¡dQdR„ ƒƒZej dddPg¡dSdT„ ƒZ dUdV„ Z!dWdX„ Z"dYdZ„ Z#d[d\„ Z$d]d^„ Z%d_d`„ Z&dadb„ Z'dcdd„ Z(dedf„ Z)dgdh„ Z*didj„ Z+dkdl„ Z,dmdn„ Z-dodp„ Z.dqdr„ Z/dsdt„ Z0dPS )uÚBaseSetitemTestsc                 C   s   | j S ©N©Úindex©Úx© r   úf/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/site-packages/pandas/tests/extension/base/setitem.pyÚ<lambda>   ó    zBaseSetitemTests.<lambda>c                 C   s
   t | jƒS r   )Úlistr
   r   r   r   r   r      r   c                 C   s   t d ƒS r   )Úslicer   r   r   r   r      r   c                 C   s   t dt| ƒƒS )Nr   )r   Úlenr   r   r   r   r      r   c                 C   s   t t| ƒƒS r   )Úranger   r   r   r   r   r      r   c                 C   s   t tt| ƒƒƒS r   )r   r   r   r   r   r   r   r      r   c                 C   s   t jt| ƒtd�S ©N©Údtype)ÚnpZonesr   Úboolr   r   r   r   r      r   r
   zlist[index]Z
null_sliceZ
full_slicer   zlist(range)Úmask)ÚparamsÚidsc                 C   s   |j S )z·
        Fixture for an indexer to pass to obj.loc to get/set the full length of the
        object.

        In some cases, assumes that obj.index is the default RangeIndex.
        )Úparam)ÚselfÚrequestr   r   r   Úfull_indexer   s    zBaseSetitemTests.full_indexerc                 C   s2   |rt  |¡}|d |d< |d |d ks.t‚d S ©Né   r   ©ÚpdÚSeriesÚAssertionError©r   ÚdataÚbox_in_seriesr   r   r   Útest_setitem_scalar_series.   s    
z+BaseSetitemTests.test_setitem_scalar_seriesc                 C   sZ   |rt  |¡}| ¡ }|d |d g|ddg< |d |d ksBt‚|d |d ksVt‚d S r!   )r$   r%   Úcopyr&   ©r   r(   r)   Úoriginalr   r   r   Útest_setitem_sequence4   s    
z&BaseSetitemTests.test_setitem_sequencec              	   C   s¢   t  |¡}| ¡ }|d g}|r*| |¡}d}tjt| d¡d�� ||ddg< W 5 Q R X |  ||¡ tjt| d¡d�� ||t	dƒ< W 5 Q R X |  ||¡ d S )Nr   z5cannot set using a {} indexer with a different lengthz	list-like©Úmatchr"   r   é   )
r$   r%   r+   Z_from_sequenceÚpytestÚraisesÚ
ValueErrorÚformatÚassert_series_equalr   )r   r(   Zas_arrayÚserr-   ÚvalueÚxprr   r   r   Ú.test_setitem_sequence_mismatched_length_raises=   s    


z?BaseSetitemTests.test_setitem_sequence_mismatched_length_raisesc                 C   s8   |rt  |¡}| ¡ }g |tjg td�< |  ||¡ d S r   )r$   r%   r+   r   ÚarrayÚintÚassert_equalr,   r   r   r   Útest_setitem_empty_indexerN   s
    
z+BaseSetitemTests.test_setitem_empty_indexerc                 C   sJ   |rt  |¡}|d |ddg< |d |d ks2t‚|d |d ksFt‚d S )Né   r   r"   r#   r'   r   r   r   Ú test_setitem_sequence_broadcastsU   s
    
z1BaseSetitemTests.test_setitem_sequence_broadcastsÚsetterÚlocÚilocc                 C   s8   t  |¡}t||ƒ}|d |d< |d |d ks4t‚d S r!   )r$   r%   Úgetattrr&   )r   r(   rA   Úarrr   r   r   Útest_setitem_scalar\   s    

z$BaseSetitemTests.test_setitem_scalarc                 C   sB   t  t t|ƒ¡|dœ¡}|d |jd< |jd |d ks>t‚d S )N©ÚAÚBr"   ©r   rI   )r$   Ú	DataFramer   Úaranger   rB   r&   ©r   r(   Údfr   r   r   Útest_setitem_loc_scalar_mixedc   s    z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2t‚d S )NrI   r"   ©é
   rI   ©r$   rK   rB   r&   rM   r   r   r   Útest_setitem_loc_scalar_singleh   s    z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4t‚d S )NrG   r"   rP   rR   rM   r   r   r   Ú,test_setitem_loc_scalar_multiple_homogoneousm   s    z=BaseSetitemTests.test_setitem_loc_scalar_multiple_homogoneousc                 C   sB   t  t t|ƒ¡|dœ¡}|d |jd< |jd |d ks>t‚d S )NrG   r"   ©r   r"   rJ   )r$   rK   r   rL   r   rC   rB   r&   rM   r   r   r   Útest_setitem_iloc_scalar_mixedr   s    z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2t‚d S )NrI   r"   )rQ   r   rP   ©r$   rK   rC   rB   r&   rM   r   r   r   Útest_setitem_iloc_scalar_singlew   s    z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4t‚d S )NrG   r"   )rQ   r"   rP   rW   rM   r   r   r   Ú-test_setitem_iloc_scalar_multiple_homogoneous|   s    z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousTFÚbooleanr   znumpy-arrayzboolean-arrayzboolean-array-na)r   c                 C   sX   |d d…   ¡ }| dddddg¡}|r<t |¡}t |¡}|d ||< |  ||¡ d S ©Né   r   r1   é   ©r+   Útaker$   r%   r=   )r   r(   r   r)   rE   Úexpectedr   r   r   Útest_setitem_mask�   s    


z"BaseSetitemTests.test_setitem_maskc              	   C   sz   t  ddg¡}|rt |¡}tjtdd�� |d ||< W 5 Q R X tj|dd�}tjtdd�� |d ||< W 5 Q R X d S )NTFzwrong lengthr/   r   rZ   r   )r   r;   r$   r%   r2   r3   Ú
IndexError©r   r(   r)   r   r   r   r   Útest_setitem_mask_raises“   s    
z)BaseSetitemTests.test_setitem_mask_raisesc                 C   sn   t jtj|jdd�dd�}d|d d…< t j|dd…< |rBt  |¡}|d ||< |d d… |d k ¡ sjt‚d S )Nr   r   rZ   Tr1   r\   r   )	r$   r;   r   ÚzerosÚshapeÚNAr%   Úallr&   rc   r   r   r   Ú'test_setitem_mask_boolean_array_with_na¡   s    
z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naÚidxr   r"   r?   ZInt64r   zinteger-arrayc                 C   sX   |d d…   ¡ }| dddddg¡}|r<t |¡}t |¡}|d ||< |  ||¡ d S r[   r^   )r   r(   rj   r)   rE   r`   r   r   r   Útest_setitem_integer_array­   s    

z+BaseSetitemTests.test_setitem_integer_arrayzidx, box_in_serieszGH-31948)Úreason)Zmarksz
list-Falsez	list-Truezinteger-array-Falsezinteger-array-Truec              	   C   sZ   |  ¡ }|r,tj|dd„ tt|ƒƒD ƒd�}d}tjt|d�� |d ||< W 5 Q R X d S )Nc                 S   s   g | ]}t  d ¡‘qS )r]   )ÚtmZrands)Ú.0Ú_r   r   r   Ú
<listcomp>Ï   s     zMBaseSetitemTests.test_setitem_integer_with_missing_raises.<locals>.<listcomp>r	   z9Cannot index with an integer indexer containing NA valuesr/   r   )r+   r$   r%   r   r   r2   r3   r4   )r   r(   rj   r)   rE   Úmsgr   r   r   Ú(test_setitem_integer_with_missing_raises½   s     z9BaseSetitemTests.test_setitem_integer_with_missing_raisesÚas_callableNc                    sž   t  |¡}tjt|ƒtd�‰ dˆ d d…< |r:‡ fdd„}nˆ }|rNt||ƒ}n|}|dd… ||< |dd… ||< |d |d ks†t‚|d	 |d
 ksšt‚d S )Nr   Tr?   c                    s   ˆ S r   r   r   ©r   r   r   r   Ý   r   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>r\   é   r   r"   é   ©r$   r%   r   re   r   r   rD   r&   )r   r(   rs   rA   r7   Zmask2Útargetr   rt   r   Útest_setitem_mask_alignedÕ   s    
z*BaseSetitemTests.test_setitem_mask_alignedc                 C   st   t  |¡}tjt|ƒtd�}d|d d…< |r8t||ƒ}n|}|d ||< |d |d ks\t‚|d |d kspt‚d S )Nr   Tr?   rQ   r   r"   rw   )r   r(   rA   r7   r   rx   r   r   r   Útest_setitem_mask_broadcastî   s    
z,BaseSetitemTests.test_setitem_mask_broadcastc                 C   s’   t  d|i¡}| ¡ }d|d< t  |dgt|ƒ dœ¡}|  ||¡ | ¡ }d|jd d …df< |  ||¡ ||d< t  ||dœ¡}|  ||¡ d S ©NrH   r"   rI   rG   )r$   rK   r+   r   Úassert_frame_equalrB   ©r   r(   rN   Úresultr`   r   r   r   Útest_setitem_expand_columnsý   s    z,BaseSetitemTests.test_setitem_expand_columnsc                 C   sx   t  ddgt|ƒ i¡}| ¡ }||d< t  dgt|ƒ |dœ¡}|  ||¡ | ¡ }||jd d …df< |  ||¡ d S r{   )r$   rK   r   r+   r|   rB   r}   r   r   r   Ú"test_setitem_expand_with_extension  s    z3BaseSetitemTests.test_setitem_expand_with_extensionc              	   C   sh   t  ddgt|ƒ i¡}dt|d d… ƒ› dt|ƒ› d�}tjt|d�� |d d… |d< W 5 Q R X d S )	NrH   r"   zLength of values \(r\   z$\) does not match length of index \(z\)r/   rI   )r$   rK   r   r2   r3   r4   )r   r(   rN   r9   r   r   r   Ú!test_setitem_frame_invalid_length  s
     ÿz2BaseSetitemTests.test_setitem_frame_invalid_lengthc                 C   sP   t j|d d… ddgd�}t j| ddg¡|jd�}|d |d< |  ||¡ d S )Nr?   )r   r   rU   r	   r"   )r$   r%   r_   r
   r6   )r   r(   r7   r`   r   r   r   Útest_setitem_tuple_index!  s    z)BaseSetitemTests.test_setitem_tuple_indexc                 C   s\   |d d…   ¡ }| dddddg¡}|r<t |¡}t |¡}|d |d d…< |  ||¡ d S r[   r^   )r   r(   r)   rE   r`   r   r   r   Útest_setitem_slice'  s    

z#BaseSetitemTests.test_setitem_slicec                 C   s˜   |d d…   ¡ }tj|dddddgd�}tj| dddd	d
g¡|jd�}|  ¡ }|d |jd d	…< |  ||¡ |  ¡ }|d |jd d…< |  ||¡ d S )Nr\   ÚaÚbÚcÚdÚer	   r   r1   r]   )r+   r$   r%   r_   r
   rC   r=   rB   )r   r(   rE   Úsr`   r~   r   r   r   Útest_setitem_loc_iloc_slice1  s     z,BaseSetitemTests.test_setitem_loc_iloc_slicec              	   C   s:   |d d… }t  t¡� |d d… |d d…< W 5 Q R X d S )Nr\   r?   r"   )r2   r3   r4   ©r   r(   rE   r   r   r   Ú)test_setitem_slice_mismatch_length_raises>  s    z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d…   ¡ }|dd … |d d…< |  ||dd … ¡ d S )Nr\   éûÿÿÿ)r+   Zassert_extension_array_equalr‹   r   r   r   Útest_setitem_slice_arrayC  s    z)BaseSetitemTests.test_setitem_slice_arrayc              	   C   s:   |d d…   ¡ }t t¡� |ddg |d< W 5 Q R X d S )Nr\   r   r"   )r+   r2   r3   r4   r‹   r   r   r   Ú&test_setitem_scalar_key_sequence_raiseH  s    z7BaseSetitemTests.test_setitem_scalar_key_sequence_raisec                 C   sL   |  ¡ }|d d … }|d |d< |d |d ks4t‚|d |d ksHt‚d S r!   )Úviewr&   )r   r(   Zview1Zview2r   r   r   Útest_setitem_preserves_viewsM  s
    z-BaseSetitemTests.test_setitem_preserves_viewsc                 C   sP   t  dt  |¡i¡ }}t j|jd�}||ƒ}|d |j|df< |  ||¡ d S )Nr(   r	   )r$   rK   r%   r
   rB   r|   )r   r(   r    rN   r`   r~   Úkeyr   r   r   Ú,test_setitem_with_expansion_dataframe_columnV  s
    z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc                 C   sˆ   t  d|d d… i¡}|d |jd< t  d|d d… i¡}|  ||¡ ||jd< t  dt j|d |d |g|jd�i¡}|  ||¡ d S )Nr(   r"   )r"   r(   r?   )r?   r(   r   r   )r$   rK   rB   r|   r%   r   )r   r(   Zna_valuerN   r`   r   r   r   Útest_setitem_with_expansion_row`  s    
 ÿz0BaseSetitemTests.test_setitem_with_expansion_rowc                 C   s\   t j|dd�}t j|jtdd�}||ƒ}||j|< t j| t¡|jdtd�}|  ||¡ d S )Nr(   ©Úname)r
   r   r–   )r
   r–   r   )r$   r%   r
   ÚobjectrB   Zastyper6   )r   r(   r    r7   r~   r’   r`   r   r   r   Útest_setitem_seriesn  s    
   ÿz$BaseSetitemTests.test_setitem_seriesc           
   	   C   sV  t  d|i¡}t|jttttfƒ}t|jt j	j
jƒ}t jjj}|jjd }| ¡ }d}d }	|rnt|jtƒsnt}	tj|	|d�� ||jd d …< W 5 Q R X |  ||¡ |jd d… |jd d…< |  ||¡ t|jtƒrÖd }	tj|	|d�� |j|jd d …< W 5 Q R X |  ||¡ |�s.|�s.|jjd |k�s.t‚|jd d… |jd d…< |  ||¡ d S )NrH   r   z.will attempt to set the values inplace insteadr/   éÿÿÿÿ)r$   rK   Ú
isinstancer   r   r   r   r   Z_mgrÚcoreZ	internalsZArrayManagerÚoptionsÚmodeZcopy_on_writeZarraysr+   ÚFutureWarningrm   Zassert_produces_warningrC   r|   Úvaluesr&   )
r   r(   rN   Zhas_can_hold_elementZusing_array_managerZusing_copy_on_writeZblk_dataÚorigrq   Úwarnr   r   r   Útest_setitem_frame_2d_values}  s6     
ÿ
z-BaseSetitemTests.test_setitem_frame_2d_valuesc                 C   sF   t j|dd�}t t|ƒ¡}t |d¡}|| }|d= |  ||¡ d S )Nr(   r•   r"   )r$   r%   r   rL   r   Údeleter6   )r   r(   r7   Ztakerr`   r   r   r   Útest_delitem_seriesª  s    z$BaseSetitemTests.test_delitem_seriesc              	   C   sX   d}t jttf|d�� ||d< W 5 Q R X t jttf|d�� ||d d …< W 5 Q R X d S )NÚ r/   r   )r2   r3   r4   Ú	TypeError)r   r(   Zinvalid_scalarrq   r   r   r   Útest_setitem_invalidµ  s
    z%BaseSetitemTests.test_setitem_invalid)1Ú__name__Ú
__module__Ú__qualname__r2   Zfixturer    r*   r.   r:   r>   r@   ÚmarkZparametrizerF   rO   rS   rT   rV   rX   rY   r   r;   r$   rg   ra   rd   ri   rk   r   Zxfailrr   ry   rz   r   r€   r�   r‚   rƒ   rŠ   rŒ   rŽ   r�   r‘   r“   r”   r˜   r¢   r¤   r§   r   r   r   r   r      s¨   ù
ùö
		
ýù	
	*ý
  ÿú
ö

	
	
-r   )Únumpyr   r2   Zpandas.core.dtypes.dtypesr   r   r   r   Zpandasr$   Zpandas._testingZ_testingrm   Z pandas.tests.extension.base.baser   r   r   r   r   r   Ú<module>   s   