B
    Y0dQ/                 @   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-dPS )oBaseSetitemTestsc             C   s   | j S )N)index)x r   U/var/www/html/venv/lib/python3.7/site-packages/pandas/tests/extension/base/setitem.py<lambda>       zBaseSetitemTests.<lambda>c             C   s
   t | jS )N)listr   )r   r   r   r   r      r	   c             C   s   t d S )N)slice)r   r   r   r   r      r	   c             C   s   t dt| S )Nr   )r   len)r   r   r   r   r      r	   c             C   s   t t| S )N)ranger   )r   r   r   r   r      r	   c             C   s   t tt| S )N)r
   r   r   )r   r   r   r   r      r	   c             C   s   t jt| tdS )N)dtype)npZonesr   bool)r   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 )Nr   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 d Q R X | || tjt|dd ||t	d< W d 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 )N)r   )r   r   r   r   arrayintassert_equal)r   r   r   r    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   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 )Nr   r   )r   r   getattrr   )r   r   r3   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   r:   )r   	DataFramer   aranger   r4   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 )Nr:   r   )
   r:   )r   r;   r4   r   )r   r   r=   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 )N)r9   r:   r   )r?   r:   )r   r;   r4   r   )r   r   r=   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 )N)r9   r:   r   )r   r   )r   r:   )r   r;   r   r<   r   r5   r4   r   )r   r   r=   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 )Nr:   r   )r?   r   )r?   r:   )r   r;   r5   r4   r   )r   r   r=   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 )N)r9   r:   r   )r?   r   )r?   r:   )r   r;   r5   r4   r   )r   r   r=   r   r   r   -test_setitem_iloc_scalar_multiple_homogoneousu   s    z>BaseSetitemTests.test_setitem_iloc_scalar_multiple_homogoneousTFboolean)r   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   r/   )r   r   r   r   r7   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 d Q R X tj|dd}tjtdd |d ||< W d Q R X d S )NTFzwrong length)r"   r   rE   )r   )r   r-   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   rE   Tr#   rF   r   )	r   r-   r   zerosshapeNAr   allr   )r   r   r   r   r   r   r   'test_setitem_mask_boolean_array_with_na   s    
z8BaseSetitemTests.test_setitem_mask_boolean_array_with_naidxr   r   r1   ZInt64r
   zinteger-arrayc             C   sX   |d d   }|dddddg}|r<t|}t|}|d ||< | || d S )NrF   r   r#   rG   )r   rH   r   r   r/   )r   r   rR   r   r7   rI   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 d Q R X d S )Nc             S   s   g | ]}t d qS )rG   )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 values)r"   r   )r   r   r   r   r   r$   r%   r&   )r   r   rR   r   r7   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st|d	 |d
 kstd S )N)r   Tr1   c                s    S )Nr   )r   )r   r   r   r      r	   z<BaseSetitemTests.test_setitem_mask_aligned.<locals>.<lambda>rF      r   r      )r   r   r   rM   r   r   r6   r   )r   r   r[   r3   r)   Zmask2targetr   )r   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 )N)r   Tr1   r?   r   r   )r   r   r   rM   r   r   r6   r   )r   r   r3   r)   r   r^   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 )Nr9   r   r:   )r9   r:   )r   r;   r   r   assert_frame_equalr4   )r   r   r=   resultrI   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 )Nr9   r   r:   )r9   r:   )r   r;   r   r   ra   r4   )r   r   r=   rb   rI   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 d Q R X d S )	Nr9   r   zLength of values \(rF   z$\) does not match length of index \(z\))r"   r:   )r   r;   r   r$   r%   r&   )r   r   r=   r+   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 )Nr1   )r   r   )r   r   )r   r   )r   r   rH   r   r(   )r   r   r)   rI   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 )NrF   r   r#   rG   )r   rH   r   r   r/   )r   r   r   r7   rI   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 )NrF   abcde)r   r   r#   rG   )r   r   r   rH   r   r5   r/   r4   )r   r   r7   srI   rb   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 d Q R X d S )NrF   r1   r   )r$   r%   r&   )r   r   r7   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 )NrF   )r   Zassert_extension_array_equal)r   r   r7   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 d Q R X d S )NrF   r   r   )r   r$   r%   r&   )r   r   r7   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 )Nr   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   r;   r   r   r4   ra   )r   r   r   r=   rI   rb   keyr   r   r   ,test_setitem_with_expansion_dataframe_columnO  s
    z=BaseSetitemTests.test_setitem_with_expansion_dataframe_columnc             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   rw   )r   rw   r   )r   r   r   objectr4   Zastyper(   )r   r   r   r)   rb   ru   rI   r   r   r   test_setitem_seriesY  s    
z$BaseSetitemTests.test_setitem_seriesc             C   sF   t j|dd}tt|}t|d}|| }|d= | || d S )Nr   )rw   r   )r   r   r   r<   r   deleter(   )r   r   r)   ZtakerrI   r   r   r   test_delitem_seriesh  s    z$BaseSetitemTests.test_delitem_series).__name__
__module____qualname__r$   Zfixturer   r   r!   r,   r0   r2   markZparametrizer8   r>   r@   rA   rB   rC   rD   r   r-   r   rO   rJ   rL   rQ   rS   r   ZxfailrZ   r_   r`   rc   rd   re   rf   rg   rn   ro   rq   rr   rt   rv   ry   r{   r   r   r   r   r   	   s~   	*	
	
r   )numpyr   r$   Zpandasr   Zpandas._testingZ_testingrU   Z pandas.tests.extension.base.baser   r   r   r   r   r   <module>   s
   