U
    ¾mœdŸ7  ã                   @   sD   d dl Zd dlZd dlZd dlmZ d dlm	Z	 G dd„ de	ƒZ
dS )é    N)Ú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„ Z0dudv„ Z1dPS )wÚBaseSetitemTestsc                 C   s   | j S ©N©Úindex©Úx© r	   ú\/home/sam/Atlas/atlas_env/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_sequence-   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_raises6   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_indexerG   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_broadcastsN   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$   r=   Úarrr	   r	   r
   Útest_setitem_scalarU   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   rE   )r    Ú	DataFramer   Úaranger   r>   r"   ©r   r$   Údfr	   r	   r
   Útest_setitem_loc_scalar_mixed\   s    z.BaseSetitemTests.test_setitem_loc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2t‚d S )NrE   r   ©é
   rE   ©r    rG   r>   r"   rI   r	   r	   r
   Útest_setitem_loc_scalar_singlea   s    z/BaseSetitemTests.test_setitem_loc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4t‚d S )NrC   r   rL   rN   rI   r	   r	   r
   Ú,test_setitem_loc_scalar_multiple_homogoneousf   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 )NrC   r   ©r   r   rF   )r    rG   r   rH   r   r?   r>   r"   rI   r	   r	   r
   Útest_setitem_iloc_scalar_mixedk   s    z/BaseSetitemTests.test_setitem_iloc_scalar_mixedc                 C   s6   t  d|i¡}|d |jd< |jd |d ks2t‚d S )NrE   r   )rM   r   rL   ©r    rG   r?   r>   r"   rI   r	   r	   r
   Útest_setitem_iloc_scalar_singlep   s    z0BaseSetitemTests.test_setitem_iloc_scalar_singlec                 C   s8   t  ||dœ¡}|d |jd< |jd |d ks4t‚d S )NrC   r   )rM   r   rL   rS   rI   r	   r	   r
   Ú-test_setitem_iloc_scalar_multiple_homogoneousu   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   r-   é   ©r'   Útaker    r!   r9   )r   r$   r   r%   rA   Úexpectedr	   r	   r
   Útest_setitem_maskz   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   rV   r   )r   r7   r    r!   r.   r/   Ú
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   rV   Tr-   rX   r   )	r    r7   r   ÚzerosÚshapeÚNAr!   Úallr"   r_   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 rW   rZ   )r   r$   rf   r%   rA   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 )rY   )Ú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   r.   r/   r0   )r   r$   rf   r%   rA   Ú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>rX   é   r   r   é   ©r    r!   r   ra   r   r   r@   r"   )r   r$   ro   r=   r3   Zmask2Útargetr	   rp   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;   rM   r   r   rs   )r   r$   r=   r3   r   rt   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 ©NrD   r   rE   rC   )r    rG   r'   r   Úassert_frame_equalr>   ©r   r$   rJ   Ú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 rw   )r    rG   r   r'   rx   r>   ry   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 )	NrD   r   zLength of values \(rX   z$\) does not match length of index \(z\)r+   rE   )r    rG   r   r.   r/   r0   )r   r$   rJ   r5   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   rQ   r   r   )r    r!   r[   r   r2   )r   r$   r3   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 rW   rZ   )r   r$   r%   rA   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 )NrX   ÚaÚbÚcÚdÚer   r   r-   rY   )r'   r    r!   r[   r   r?   r9   r>   )r   r$   rA   Úsr\   rz   r	   r	   r
   Útest_setitem_loc_iloc_slice*  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 )NrX   r;   r   )r.   r/   r0   ©r   r$   rA   r	   r	   r
   Ú)test_setitem_slice_mismatch_length_raises7  s    z:BaseSetitemTests.test_setitem_slice_mismatch_length_raisesc                 C   s<   |d d…   ¡ }|dd … |d d…< |  ||dd … ¡ d S )NrX   éûÿÿÿ)r'   Zassert_extension_array_equalr‡   r	   r	   r
   Útest_setitem_slice_array<  s    z)BaseSetitemTests.test_setitem_slice_arrayc              	   C   s:   |d d…   ¡ }t t¡� |ddg |d< W 5 Q R X d S )NrX   r   r   )r'   r.   r/   r0   r‡   r	   r	   r
   Ú&test_setitem_scalar_key_sequence_raiseA  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_viewsF  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    rG   r!   r   r>   rx   )r   r$   r   rJ   r\   rz   Úkeyr	   r	   r
   Ú,test_setitem_with_expansion_dataframe_columnO  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    rG   r>   rx   r!   r   )r   r$   Zna_valuerJ   r\   r	   r	   r
   Útest_setitem_with_expansion_rowY  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   Úobjectr>   Zastyper2   )r   r$   r   r3   rz   rŽ   r\   r	   r	   r
   Útest_setitem_seriesg  s    
   ÿz$BaseSetitemTests.test_setitem_seriesc                 C   sÜ   t  d|i¡}t|jt jjjƒ}t jjj	}|jj
d }| ¡ }||jd d …< |  ||¡ |jd d… |jd d…< |  ||¡ |j|jd d …< |  ||¡ |s´|s´|jj
d |ks´t‚|jd d… |jd d…< |  ||¡ d S )NrD   r   éÿÿÿÿ)r    rG   Ú
isinstanceZ_mgrÚcoreZ	internalsZArrayManagerÚoptionsÚmodeZcopy_on_writeZarraysr'   r?   rx   Úvaluesr"   )r   r$   rJ   Zusing_array_managerZusing_copy_on_writeZblk_dataÚorigr	   r	   r
   Útest_setitem_frame_2d_valuesv  s    
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   rH   r   Údeleter2   )r   r$   r3   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   )r.   r/   r0   Ú	TypeError)r   r$   Zinvalid_scalarrm   r	   r	   r
   Útest_setitem_invalidž  s
    z%BaseSetitemTests.test_setitem_invalidc                 C   sŠ   |  ¡ }t ||dœ¡}|jddgd d …f j|jddgd d …f< |jdd d …f |d k ¡ sdt‚|jdd d …f |d k ¡ s†t‚d S )N)r€   r�   r   r   )r'   r    rG   r>   rš   rd   r"   )r   r$   r)   rJ   r	   r	   r
   Útest_setitem_2d_values¦  s
    *"z'BaseSetitemTests.test_setitem_2d_values)2Ú__name__Ú
__module__Ú__qualname__r.   Zfixturer   r&   r*   r6   r:   r<   ÚmarkZparametrizerB   rK   rO   rP   rR   rT   rU   r   r7   r    rc   r]   r`   re   rg   r   Zxfailrn   ru   rv   r{   r|   r}   r~   r   r†   rˆ   rŠ   r‹   r�   r�   r�   r”   rœ   rž   r¡   r¢   r	   r	   r	   r
   r   	   sª   ù
ùö
		
ýù	
	*ý
  ÿú
ö

	
	
r   )Únumpyr   r.   Zpandasr    Zpandas._testingZ_testingri   Z pandas.tests.extension.base.baser   r   r	   r	   r	   r
   Ú<module>   s
   