U
    f/e                     @   s@  d dl m Z  d dlZd dlZd dlm  mZ d dlm	Z
 d dlmZmZmZ d dlmZmZmZmZ d dlZd dlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z% d dl&m'Z( d dl)m*Z* d dl+m,Z, G d	d
 d
Z-G dd dZ.G dd dZ/G dd dZ0G dd dZ1G dd dZ2G dd dZ3dS )    )datetimeN)	_registry)is_categorical_dtypeis_interval_dtypeis_object_dtype)CategoricalDtypeDatetimeTZDtypeIntervalDtypePeriodDtype)Categorical	DataFrameDatetimeIndexIndexIntervalIntervalIndex
MultiIndexNaTPeriodPeriodIndexSeries	Timestampcut
date_rangenotnaperiod_range)SparseArray)BDayc                   @   s  e Zd Zejdd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dd Zdd Zdd Zdd Zdd Zejdeded fed!d"d#edd$fed%d&d'ed&d'fgd(d) Zejd*d+d, ejD d-d.g d/d0 Zd1d2 Zejd3d4d5d6d7d8d d9gd:d; Zejd3d4d5d6d7d8d d9gd<d= Zd>d? Zd@dA Z dBdC Z!ejddDdEdFgdGdH Z"ejdIdJdJggdKdL Z#dMdN Z$dOdP Z%ejdQdRdSdTgdRdRdRggdUdV Z&dWdX Z'dYdZ Z(d[d\ Z)d]d^ Z*d_d` Z+ejdadbd8d8dRgdcdddedfgdffd8dbd8dRgdcdddedfgdffdbdJdJdRgdcdddedfgdffdbdJdRgdcdddegdefdJdbdRgdedddcgdcfdbdRdJgdedddcgddfgdgdh Z,didj Z-ejdkdldJdbd8gdme.dmdmdmdmgdmdmdmdmgdmdmdmdmggdldJdbd8gdnfdbd8gdmdoge.dcdddmdogdedfdmdogd"dpdmdoggdldJdbd8gdnfdldJdbge/j0dmdodqge/j1dre.dmdodqgdmdodqgdmdodqggdldJdbgdnfdJdbd8gdmdodqgdsdtdugdvdwdxgge.dcdmdodqgdedsdtdugd"dvdwdxggdldJdbd8gdnfdbdld8ge/j0dmdodqgdsdtdugdvdwdxgge/j1dre.dodddmdqgdtdfdsdugdwdpdvdxggdldJdbd8gdnfdldbge.dmdogdqdsgdtduggdldbgdne.dmdddogdqdfdsgdtdpduggdldJdbgdnfgdydz Z2d{d| Z3d}d~ Z4dd Z5dd Z6dd Z7dS )TestDataFrameSetItemdtypeint32int64float32float64c                 C   s:   t jt|}t j||d||< || jj|ks6td S )Nr   )nprandomrandnlenarrayr   nameAssertionError)selfr   float_framearr r.   L/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/frame/indexing/test_setitem.pytest_setitem_dtype/   s    z'TestDataFrameSetItem.test_setitem_dtypec                 C   s8   t jt|d}||ddg< t|ddg j| d S )N   AB)r$   r%   r&   r'   tmZassert_almost_equalvalues)r+   r,   datar.   r.   r/   test_setitem_list_not_dataframe6   s    z4TestDataFrameSetItem.test_setitem_list_not_dataframec              	   C   s   t dddgdddgdtdd	d
gddd}tddddgtdd	d
dgdddd}d}tjt|d ||d< W 5 Q R X t tjddddd	d
dgd}d}tjt	|d |
d	d
g |d< W 5 Q R X d S )N   r1      def)barZbazabcfoor)   indexghijZfizrD   r)   z$cannot reindex from a duplicate axismatchZnewcolr   )   rL   columnsz6incompatible index of inserted column with frame indexZgr)r   r   r   pytestraises
ValueErrorr$   r%   randint	TypeErrorgroupbycount)r+   dfsermsgr.   r.   r/   test_setitem_error_msmgs;   s     
 z-TestDataFrameSetItem.test_setitem_error_msmgsc                 C   sh   d}d}t t|d}tj|}t|D ]}|||< q*t t||||t|d}t|| d S )N
      rC   )	r   ranger$   r%   r&   repeatZreshaper4   assert_frame_equal)r+   NKrV   Znew_colrG   expectedr.   r.   r/   test_setitem_benchmarkR   s    
 z+TestDataFrameSetItem.test_setitem_benchmarkc              	   C   s^  t tjddtddddgd}|dd|d  |d	d
|d  |d d|d< |j}tt	dgd t	dg ddd
dddgd}t
|| |d d|d< |j}tt	dgd t	dgd	  ddd
dddgd}t
|| |d d|d< |j}tt	dgd t	dgd	  t	dg ddd
ddddgd}t
|| d S )Nr[   r9   r@   r?   r>   rD   rN   r   rA   r1   r=   r!   xr"   rC   rL   r   y)r   r$   r%   r&   arangeinsertastypedtypesr   r   r4   assert_series_equal)r+   rV   resultra   r.   r.   r/   test_setitem_different_dtype]   s8      *z1TestDataFrameSetItem.test_setitem_different_dtypec                 C   sT   t dddgd}|j|d< dddg|d< t ddddgidddgd	}t|| d S )
Nr2   r3   CrC   Xrd   re   z)r6   rD   )r   rD   r4   r^   r+   rV   expr.   r.   r/   test_setitem_empty_columns   s
    
z/TestDataFrameSetItem.test_setitem_empty_columnsc                 C   sF   t dddd}ttt|d}||d< |d jtdksBtd S )Nz1/1/2000 00:00:00z1/1/2000 1:59:50Z10s)freqrC   r2   M8[ns])r   r   r$   rf   r'   r   r*   )r+   rngrV   r.   r.   r/   %test_setitem_dt64_index_empty_columns   s    z:TestDataFrameSetItem.test_setitem_dt64_index_empty_columnsc                 C   sT   t tdd}tddd|d< t tdddggd ddd	gdgd
}t|| d S )Nr9   rC   Z20130101UTCtznowr   r8   r1   rc   )r   r\   r   r4   r^   r+   rV   ra   r.   r.   r/   $test_setitem_timestamp_empty_columns   s      z9TestDataFrameSetItem.test_setitem_timestamp_empty_columnsc              	   C   sp   t ddddddgdddg}ttddgd	}d
t| dt| d}tjt|d ||d< W 5 Q R X d S )Nr   r8   r1   r>   r?   r@   rZ   r=   rM   zLength of values \(z$\) does not match length of index \(z\)rJ   rA   )r   Z
from_codesr   r\   r'   rO   rP   rQ   )r+   catrV   rX   r.   r.   r/   2test_setitem_wrong_length_categorical_dtype_raises   s    zGTestDataFrameSetItem.test_setitem_wrong_length_categorical_dtype_raisesc                 C   sP   t dddgdddgd}tddd	g}||d
< t|d
d}t|d
 | d S )Nr>   r?   r@         ?       @      @Zc_1Zn_1r   r8   
new_columnrB   )r   r   r   r4   rj   )r+   rV   Zsp_arrayra   r.   r.   r/   test_setitem_with_sparse_value   s
    z3TestDataFrameSetItem.test_setitem_with_sparse_valuec                 C   sh   t dddgdddgd}ttddd	gd
d	dgd}||d< ttd	ddgdd}t|d | d S )Nr>   r?   r@   r   r   r   r   r   r8   r1   rC   r   rB   )r   r   r   r4   rj   )r+   rV   Z	sp_seriesra   r.   r.   r/   (test_setitem_with_unaligned_sparse_value   s
    z=TestDataFrameSetItem.test_setitem_with_unaligned_sparse_valuec                 C   s   t tdddgddtdddgtdtdddgtdd}t tg ddtg tdtg tdd}tdddgD ],\}}t|t|t|d|j|jd < qpt|| d S )Nr   r8   r1   r    r#   r9   r>   r?   r@   )	r   r   float	enumerateintlocshaper4   r^   )r+   ra   rV   idxr?   r.   r.   r/   "test_setitem_dict_preserves_dtypes   s    


&z7TestDataFrameSetItem.test_setitem_dict_preserves_dtypesz	obj,dtypez2020-01Mr   r[   )leftrightr   z
2011-01-01z
US/Easternrx   c                 C   sL   t dddgt|gd |dd}t ddddgi}||d< t|| d S )Nr8   r1   r9   r#   )r   objr   r   )r   r   r4   r^   )r+   r   r   ra   rV   r.   r.   r/   test_setitem_extension_types   s    "z1TestDataFrameSetItem.test_setitem_extension_typesea_namec                 C   s   g | ]}t |jts|jqS r.   )
isinstancer)   property).0r   r.   r.   r/   
<listcomp>   s   zTestDataFrameSetItem.<listcomp>zdatetime64[ns, UTC]z	period[D]c                 C   s8   t dg}dg||< t ddg|dgi}t|| d S )Nr   r8   r   r4   r^   )r+   r   rk   ra   r.   r.   r/   test_setitem_with_ea_name   s    

z.TestDataFrameSetItem.test_setitem_with_ea_namec                 C   s   t jddgdd}t| }||d< tdd gdd gddd}t|| t jddgdd}||d< tdd gdd gddd}t|| d S )	Nr8   Znatdatetime64[ns]r#   new)r   r   zdatetime64[s]g    eA)r$   r(   r   Zto_framer   r4   r^   )r+   Zdata_nsrk   ra   Zdata_sr.   r.   r/   6test_setitem_dt64_ndarray_with_NaT_and_diff_time_units   s    zKTestDataFrameSetItem.test_setitem_dt64_ndarray_with_NaT_and_diff_time_unitsunitrF   msmsDYc                 C   s   d}t d| d}t j|t jd|}|d}tdt |it |d}|||< || jt dksrt|| j|k	 std S )	Nd   M8[]r#   r   intsrC   rt   )
r$   r   rf   r    viewrh   r   r*   r5   allr+   r   nr   valsZex_valsrV   r.   r.   r/   -test_frame_setitem_datetime64_col_other_units   s    
zBTestDataFrameSetItem.test_frame_setitem_datetime64_col_other_unitsc                 C   s   d}t d| d}t j|t jd|}|d}tdt |it |d}t j|t jdd|d	< ||d	< |d	 j|k st	d S )
Nr   r   r   r#   r   r   rC   rt   dates)
r$   r   rf   r    r   rh   r   r5   r   r*   r   r.   r.   r/   6test_frame_setitem_existing_datetime64_col_other_units  s    
zKTestDataFrameSetItem.test_frame_setitem_existing_datetime64_col_other_unitsc           
      C   s  |}|d  d}||d< t|d t|dd d|d< ||d< t|d t|dd |d= |jjd }|jjd }t|| |jj}|jj}|d kst	|t	|kst
| }t|jd< t|jd	< |d }	tt|	td
dd
gdd t|j|j d S )Nr3   rA   rm   rB   r   r8   r1   )r8   r8   r8   r1   TF)renamer4   rj   r   _mgrZarraysZassert_extension_array_equal_databaseidr*   copyr   ilocr   ri   )
r+   Ztimezone_framerV   r   Zv1Zv2Zv1baseZv2basedf2rk   r.   r.   r/   test_setitem_dt64tz   s(    

z(TestDataFrameSetItem.test_setitem_dt64tzc                 C   s   t dddd}ttjdd|d}||d< t|d }tj||dd	 |jdksVt	|jdksdt	|
 d}t|jtst	t|j| d S )
Nz1/1/2000r[   rD   )periodsr)   r9   rC   r   FZcheck_names)r   r   r$   r%   r&   r   r4   assert_index_equalr)   r*   Zreset_indexZ	set_indexr   rD   r   )r+   ru   rV   rsr.   r.   r/   test_setitem_periodindex?  s    z-TestDataFrameSetItem.test_setitem_periodindexc                 C   s   t dddgdddgd}tddgddgddgg}||d	d
g< t dddgdddgdddgdddgd}|d	 |j|d	< |d
 |j|d
< |d	 j|jkst|d
 j|jkstt|| d S )NZoneZtwoZthreer8   r1   r9   r>   r?   r[   r@   r:   )r>   r?   r@   r:   )r   r$   r(   rh   r   r*   r4   r^   r+   rV   r-   ra   r.   r.   r/   'test_setitem_complete_column_with_arrayM  s    z<TestDataFrameSetItem.test_setitem_complete_column_with_arrayf8i8u8c                 C   sx   t dddg|d}ttjdd|d}dddg|d	< t dddd	gtd}|d
krft dddd	gtd}t|j| d S )Nr8   r1   r9   r#   rM   r>   r?   r@   Fr   r   r   r   )	r   r   r$   r%   r&   objectr4   r   rN   )r+   r   colsrV   Zexpected_colsr.   r.   r/   $test_setitem_bool_with_numeric_index`  s    z9TestDataFrameSetItem.test_setitem_bool_with_numeric_indexindexerr3   c                 C   sb   t ddgd}t dddgi}|||< t tjgd ddgd}|d d|d< t|| d S )Nr2   r3   rM   r8   r1   r2   r3   r   )r   r$   nanrh   r4   r^   )r+   r   rV   otherra   r.   r.   r/   #test_setitem_frame_length_0_str_keyn  s    z8TestDataFrameSetItem.test_setitem_frame_length_0_str_keyc              	   C   s   dddgd }t td|d}d|jd< d	|jd d df< d
|d< t ddddddgtjddtjddgtjddtjddggdd}|r||_|d d|d< |d d|d< n.|d tj|d< |d tj|d< ||_t	|| d S )Nr2   r3   rm   r1   r9   rc   )r   r9   )r   r2   )r8   rL   r1   r[   r   r8   rL   r[   r   r#   r    )
r   r\   r   r$   r   rN   rh   r    r4   r^   )r+   using_array_managerr   rV   ra   r.   r.   r/   $test_setitem_frame_duplicate_columnsx  s(    
	z9TestDataFrameSetItem.test_setitem_frame_duplicate_columnsc              	   C   s   dddgd }t td|d}tjtdd d	|dg< W 5 Q R X |jd d d df }tjtdd d	|dg< W 5 Q R X d S )
Nr2   r3   rm   r1   r9   rc   "Columns must be same length as keyrJ   )r   r9   r[   )r   r\   rO   rP   rQ   r   )r+   r   rV   r   r.   r.   r/   2test_setitem_frame_duplicate_columns_size_mismatch  s    zGTestDataFrameSetItem.test_setitem_frame_duplicate_columns_size_mismatchr   r>   r?   r@   c              	   C   sT   t dddgg|d}t ddggddgd}d	}tjt|d
 ||d< W 5 Q R X d S )Nr8   r1   r9   rM   rZ      r:   r;   r   rJ   r>   r   rO   rP   rQ   )r+   r   rV   rhsrX   r.   r.   r/   #test_setitem_df_wrong_column_number  s
    z8TestDataFrameSetItem.test_setitem_df_wrong_column_numberc                 C   s   t dddggdddgd}t ddd	ggdddgd}||ddg< t ddd	ggdddgd}t|| ||d
dg< t ddd	dggdddd
gd}t|| d S )Nr8   r1   r9   r>   r?   rM   rZ   r      r@   r   )r+   rV   r   ra   r.   r.   r/   /test_setitem_listlike_indexer_duplicate_columns  s    zDTestDataFrameSetItem.test_setitem_listlike_indexer_duplicate_columnsc              	   C   s^   t dddggdddgd}t ddggddgd}d	}tjt|d
 ||ddg< W 5 Q R X d S )Nr8   r1   r9   r>   r?   rM   rZ   r   r   rJ   r   )r+   rV   r   rX   r.   r.   r/   @test_setitem_listlike_indexer_duplicate_columns_not_equal_length  s
    zUTestDataFrameSetItem.test_setitem_listlike_indexer_duplicate_columns_not_equal_lengthc                 C   s  t dtdi}t|d d}t|jjts0t||d< t	||d< |j
|d< t	|j
|d< |t|d< t|d jstt|d jjstt|d jstt|d jjstt|d stt|d stt|d std	d
 }t||j||j tj||j||jdd tj||j||jdd tj||j||jdd t|d |d  tj|d |d dd t|d |d  tj|d |d dd d S )Nr2   rZ   r[   r3   rm   r   EFc                 S   s   t t| S N)r   r$   r(   rd   r.   r.   r/   <lambda>      z=TestDataFrameSetItem.test_setitem_intervals.<locals>.<lambda>Fr   )r   r\   r   r   r}   
categoriesr   r*   r$   r(   r5   rh   r   r   r   r   r   r4   r   r3   rm   r   rj   )r+   rV   rW   r@   r.   r.   r/   test_setitem_intervals  s0    
z+TestDataFrameSetItem.test_setitem_intervalsc                 C   s\   t dttddi}|jjddg|_t dtddgddgi}t	|| d S )NrF   mncategoryr   r   )
r   r   listrh   rF   r}   Zreorder_categoriesr   r4   r^   r{   r.   r.   r/   test_setitem_categorical  s    z-TestDataFrameSetItem.test_setitem_categoricalc                 C   sD   t g dd}tdg|d}g |d< tdg|d}t|j|j d S )Nr   rB   r2   rN   rD   )r   r   r4   r   rD   )r+   rD   rk   ra   r.   r.   r/    test_setitem_with_empty_listlike  s
    z5TestDataFrameSetItem.test_setitem_with_empty_listlikezcols, values, expectedrm   r8   r1   r9   rL   c                 C   s8   t |g|d}|d |d< |d jd }||ks4td S )NrM   r>   r   )r   r5   r*   )r+   r   r5   ra   rV   rk   r.   r.   r/   test_setitem_same_column  s    z-TestDataFrameSetItem.test_setitem_same_columnc                 C   s$  dddgddgdddgf}t |}td	d
d}tjddt|t|f}t|||d}|jj	
 |d d d   }}tj| |d j|d d df |d< t|d |d  tj| |d j||f |d< t|d |d  tj| |d j||f |d< t|d |d  d S )NZjimjoejoliefirstlastr   centerr   Z20141006   )r   r8   i  r   )r   r   )r   r   )r   r   )r   r   )r   Zfrom_productr   r$   r%   rR   r'   r   rD   r5   r   shuffler   r4   r^   )r+   itr   rD   r   rV   rG   rH   r.   r.   r/   test_setitem_multi_index  s    
z-TestDataFrameSetItem.test_setitem_multi_indexzcolumns,box,expectedr2      rM         	   r#   rZ   r   r            c                 C   s:   t ddgddgddggddgd	}|||< t|| d S )
Nr8   r1   r9   rL   r[   r   r2   r3   rM   r   )r+   rN   boxra   rV   r.   r.   r/   !test_setitem_list_missing_columns'  s    3"z6TestDataFrameSetItem.test_setitem_list_missing_columnsc                 C   sF   t t|d |d }||d< |d }t||jdd}t|| d S )Nr2   r3   tuplesrI   )r   zipr   rD   r4   rj   )r+   r,   r   rk   ra   r.   r.   r/   test_setitem_list_of_tuples^  s
    z0TestDataFrameSetItem.test_setitem_list_of_tuplesc                 C   s\   t dddgdddgd}dd	 d
D }d|j|< t dddgdddgd}t|| d S )Nr8   r1   r9   rL   r[   r   r   c                 s   s   | ]
}|V  qd S r   r.   r   rd   r.   r.   r/   	<genexpr>i  s     zCTestDataFrameSetItem.test_setitem_iloc_generator.<locals>.<genexpr>r   r   r   r4   r^   r+   rV   r   ra   r.   r.   r/   test_setitem_iloc_generatorf  s
    
z0TestDataFrameSetItem.test_setitem_iloc_generatorc                 C   s`   t dddgdddgd}dd	 d
D }d|j|df< t dddgdddgd}t|| d S )Nr8   r1   r9   rL   r[   r   r   c                 s   s   | ]
}|V  qd S r   r.   r   r.   r.   r/   r   p  s     zSTestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator.<locals>.<genexpr>r   r   r   r.   r.   r/   +test_setitem_iloc_two_dimensional_generatorn  s
    z@TestDataFrameSetItem.test_setitem_iloc_two_dimensional_generatorc                 C   s   t ddd}t|d}t d|tjd|d< t d|dd|d< t d	|dd|d	< t d
|tjd|d
< |j}t tjtttjgtdd}t	|| d S )Nr   ZS24)r)   r   rC   r>   )r)   rD   r   r?   ZS64r@   r:   Zabcd)
r   r   r$   Zuint32Zuint8ri   r   r   r4   rj   )r+   rD   rV   rk   ra   r.   r.   r/   (test_setitem_dtypes_bytes_type_to_objectu  s    
z=TestDataFrameSetItem.test_setitem_dtypes_bytes_type_to_objectc                 C   s   t ddgddgdddd}td|jd	}|d
 |j|d
f< |d |j|df< t ddgddgdddd}t|| d S )Nr9   rL   r[   r   r   r    ZInt64FrC   r>   r?   )r   rh   r   rD   r   r4   r^   )r+   rk   maskra   r.   r.   r/    test_boolean_mask_nullable_int64  s    z5TestDataFrameSetItem.test_boolean_mask_nullable_int64N)8__name__
__module____qualname__rO   markparametrizer0   r7   rY   rb   rl   rr   rv   r|   r~   r   r   r   r   r
   r   r	   r   r   r   ea_registryri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r(   r    r   r   r  r  r  r  r.   r.   r.   r/   r   .   s   
#
	

	




	
-	

 
	 
	( 
	& 
	  1
r   c                   @   s@   e Zd Zejdd Zejdd Zdd Zdd Zd	d
 Z	dS )TestSetitemTZAwareValuesc                 C   s   t ddgdd}|d}|S )Nz2013-1-1 13:00z2013-1-2 14:00r3   rB   z
US/Pacific)r   tz_localize)r+   Znaiver   r.   r.   r/   r     s    
zTestSetitemTZAwareValues.idxc                 C   s.   t tj| dddd}|j|jks*t|S )Nr   r#   r3   rB   )r   r$   r(   tolistr   r*   )r+   r   ra   r.   r.   r/   ra     s    z!TestSetitemTZAwareValues.expectedc              	   C   s   t tjdddgd}||d< tt}|jdddgd|d< W 5 Q R X d	}|t|d j	ksft
|d }t|d
d dd}t|| d S )Nr1   r8   r2   rM   r3   Fr   )Zkeep_tzrD   z(do 'idx.tz_convert(None)' before callingrw   rB   )r   r$   r%   r&   r4   assert_produces_warningFutureWarningZ	to_seriesstrmessager*   r   Z
tz_convertr  rj   )r+   r   ra   rV   r   rX   rk   compr.   r.   r/   test_setitem_dt64series  s     z0TestSetitemTZAwareValues.test_setitem_dt64seriesc                 C   s8   t tjdddgd}||d< |d }t|| d S Nr1   r8   r2   rM   r3   )r   r$   r%   r&   r4   rj   r+   r   ra   rV   rk   r.   r.   r/   test_setitem_datetimeindex  s    z3TestSetitemTZAwareValues.test_setitem_datetimeindexc                 C   s<   t tjdddgd}| |d< |d }t|| d S r  )r   r$   r%   r&   Zto_pydatetimer4   rj   r  r.   r.   r/   .test_setitem_object_array_of_tzaware_datetimes  s    zGTestSetitemTZAwareValues.test_setitem_object_array_of_tzaware_datetimesN)
r  r  r  rO   Zfixturer   ra   r  r  r  r.   r.   r.   r/   r    s   

	r  c                   @   sJ   e Zd Zejdd Zdd Zdd Zdd Zd	d
 Z	dd Z
dd ZdS )!TestDataFrameSetItemWithExpansionc                 C   sr   t dddgdddgd}|d }tdd	gd
dgddgg|ddg< d|jd< tdddgdd}t|| d S )Nr8   r1   r9   rL   r   r   r>   g?g?g333333?g?      ?r@   r:   r   )r   r   rB   )r   r$   r(   r   r   r4   rj   )r+   rV   rW   ra   r.   r.   r/   test_setitem_listlike_views  s    $
z=TestDataFrameSetItemWithExpansion.test_setitem_listlike_viewsc                 C   sR   t ddgddgg}ddg|d< t dddgdddggdddgd	}t|| d S )
Nr8   r1   r9   rL   r[   r   z0 - Namer   rM   r   r{   r.   r.   r/   .test_setitem_string_column_numpy_dtype_raising  s    "zPTestDataFrameSetItemWithExpansion.test_setitem_string_column_numpy_dtype_raisingc                 C   sf   t dddgdd}ttd|jd d df< t dtjtjgdtjtjggdddgd}t|| d S )	Nr>   r?   r"   rN   r   r1   r   r8   rM   )r   r   r\   r   r$   r   r4   r^   r{   r.   r.   r/   'test_setitem_empty_df_duplicate_columns  s     zITestDataFrameSetItemWithExpansion.test_setitem_empty_df_duplicate_columnsc           	      C   s>  t dtjtjdddddi}tdd tddd	D }|jdgd
d}t|j	tddd	d|d}|j
}||d< t| |j}ttdt|ddgddgd}t|| ||d< t| |j}ttdt|ddt|ddgdddgd}t|| |d }|d }t|jj| d|_t| |  d S )Nvaluer   i'  r   r   r#   c                 S   s   g | ]}| d |d  qS )z - i  r.   )r   rG   r.   r.   r/   r     s     zcTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype.<locals>.<listcomp>i  T)ZbyZ	ascendingi)  F)r   labelsr   )r   ZorderedrC   r   )r   r$   r(   r%   rR   r   r\   sort_valuesr   r  r5   r  ri   r   r   r   r4   rj   Zassert_categorical_equalr   r)   Z
sort_index)	r+   rV   r   rW   r}   rk   ra   Zresult1Zresult2r.   r.   r/   -test_setitem_with_expansion_categorical_dtype  s>    

zOTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtypec                 C   s2   t  }d|d< t dgdtj}t|| d S )Nr8   rA   rM   )r   rh   r$   r    r4   r^   r{   r.   r.   r/   test_setitem_scalars_no_index  s    z?TestDataFrameSetItemWithExpansion.test_setitem_scalars_no_indexc                 C   sL   d|j kst|d |d< d|j ks(t|d }|d }tj||dd d S )Nr   r2   Fr   )rN   r*   r4   rj   )r+   r,   rk   ra   r.   r.   r/   test_setitem_newcol_tuple_key  s    z?TestDataFrameSetItemWithExpansion.test_setitem_newcol_tuple_keyc                 C   sX   t ddt d}t|tdd}tddd}t|}tj||< t|| 	 sTt
d S )	Nz1/1/2012z2/1/2012)startendrs   rZ   r   i  r   r8   )r   r   r   r\   r   r   r$   r   isnanr   r*   )r+   rN   r6   ttsr.   r.   r/   #test_frame_setitem_newcol_timestamp   s    
zETestDataFrameSetItemWithExpansion.test_frame_setitem_newcol_timestampN)r  r  r  tdZ&skip_array_manager_not_yet_implementedr  r  r  r"  r#  r$  r*  r.   r.   r.   r/   r    s   
	-r  c                   @   s   e Zd Zdd Zejdejej	gejde
ejeejgejddddgd	d
 Zejde
ejeejgejddddgdd Zejdejej	gejde
ejeejgejddddgdd ZdS )TestDataFrameSetItemSlicingc                 C   sH   t td}d|dd < td}d|dd < t |}t|| d S )N)r   r8   r8   )r   r$   zerosr4   r^   r   r.   r.   r/   test_setitem_slice_position+  s    
z7TestDataFrameSetItemSlicing.test_setitem_slice_positionr   r   r   r8   r1   r9   c                 C   s~   t dddggdddgg|  ddd	gd
}|dddg||dd < t dddggdddgg|  ddd	gd
}t|| d S Nr8   r9   r[   r1   rL   r   r>   r?   r@   rM   rZ   r   r   r   r+   r   r   r   rV   ra   r.   r.   r/   +test_setitem_slice_indexer_broadcasting_rhs4  s    **zGTestDataFrameSetItemSlicing.test_setitem_slice_indexer_broadcasting_rhsc                 C   s   t dddggdddgg|  ddd	gd
}|dddg|jttd|d < t dddggdddgg|  ddd	gd
}t|| d S r0  )r   r   r   r\   r4   r^   )r+   r   r   rV   ra   r.   r.   r/   *test_setitem_list_indexer_broadcasting_rhs>  s    *"*zFTestDataFrameSetItemSlicing.test_setitem_list_indexer_broadcasting_rhsc                 C   s   t dddgdddggddd	gg|  d
ddgd}|dddg||dd < t dddggdddgg|d   d
ddgdd}t|| d S )Nr8   r9   r[   rd   re   ro   r1   rL   r   r>   r?   r@   rM   rZ   r   r   r   r  r   r1  r.   r.   r/   0test_setitem_slice_broadcasting_rhs_mixed_dtypesG  s    " zLTestDataFrameSetItemSlicing.test_setitem_slice_broadcasting_rhs_mixed_dtypesN)r  r  r  r/  rO   r	  r
  r4   setitemr   r   r$   r(   r   pdr2  r3  r4  r.   r.   r.   r/   r,  *  s   	r,  c                   @   s   e Zd Zdd Zdd ZdS )TestDataFrameSetItemCallablec                 C   s`   t ddddgddddgd	}d
dddg|dd < t d
dddgddddgd	}t|| d S )Nr8   r1   r9   rL   r[   r   r   r   r   r   r   r   r   c                 S   s   dS )Nr2   r.   r   r.   r.   r/   r   \  r   zDTestDataFrameSetItemCallable.test_setitem_callable.<locals>.<lambda>r   rp   r.   r.   r/   test_setitem_callableY  s    z2TestDataFrameSetItemCallable.test_setitem_callablec                 C   sL   dd }t ddgddgg}|||dk< t d|g|dgg}t|| d S )Nc                 S   s   | d S )Nr8   r.   r   r.   r.   r/   incc  s    zETestDataFrameSetItemCallable.test_setitem_other_callable.<locals>.incr   r8   r   r   )r+   r9  rV   ra   r.   r.   r/   test_setitem_other_callablea  s
    z8TestDataFrameSetItemCallable.test_setitem_other_callableN)r  r  r  r8  r:  r.   r.   r.   r/   r7  X  s   r7  c                   @   s   e Zd Zejejjddd dd gddgddd	 Zejd
e	j
e	jgdd Zdd Zejdddgejdi ddgiddgigdd Zdd Zdd ZdS )TestDataFrameSetItemBooleanMask	mask_typec                 C   s   | t | d kS Nr1   )r$   absrV   r.   r.   r/   r   q  r   z(TestDataFrameSetItemBooleanMask.<lambda>c                 C   s   | t | d kjS r=  )r$   r>  r5   r?  r.   r.   r/   r   q  r   Z	dataframer(   )idsc                 C   sL   |  }||}|  }tj||< |  }tj|jt|< t|| d S r   )r   r$   r   r5   r(   r4   r^   )r+   r<  r,   rV   r  rk   ra   r.   r.   r/   test_setitem_boolean_maskn  s    	
z9TestDataFrameSetItemBooleanMask.test_setitem_boolean_maskr   c                 C   s\   t ddddgddddgd	}| }|d
 dk}||| d
|||< t|| d S )Nr8   rL   r1   r9   r[   r   r   r   r   r>   )r   r   r!  r4   r^   )r+   r   rV   ra   r  r.   r.   r/   "test_setitem_boolean_mask_aligning  s
    zBTestDataFrameSetItemBooleanMask.test_setitem_boolean_mask_aligningc              	   C   s"  t dddddddgddgd}tdddddd	d
g}dddddddg}t||d|d}t dddddddgdddgd}tdddddd	d
g}dddddddg}t||d|d}| }	tjtdd  |	d jjdddgdd}
W 5 Q R X |
d kst	|d dk}ddg||< t
||	 d S )Nr>   r?   )r   rF   rG   rH   klr   r   r8   r1   )catsr5   rC   r@   r9   F)Zcheck_stacklevelrE  T)Zinplace)r   r   r   r   r4   r  r  r}   Zset_categoriesr*   r^   )r+   Zcats2Zidx2Zvalues2Zexp_multi_rowZcatsfZidxfZvaluesfrV   Z	exp_fancyZreturn_valuer  r.   r.   r/   test_setitem_mask_categorical  s*     
 z=TestDataFrameSetItemBooleanMask.test_setitem_mask_categoricalr   r   r    kwargsrD   r8   rN   r2   c                 C   s6   ||d< t f |}| }d|||k< t|| d S )Nr   /   r   r   r4   r^   )r+   r   rG  rV   r   r.   r.   r/   %test_setitem_empty_frame_with_boolean  s
    
zETestDataFrameSetItemBooleanMask.test_setitem_empty_frame_with_booleanc              	   C   s   t td}dddg}t||tjdddgdd	d
gdddggtdd}t||tt|t|fd}t||tjdddgdd	dgdddggtdd}d||d	| k< t	|| t
jtdd d||jd d dk< W 5 Q R X d S )Nr9   r2   r3   rm           r  r   g      ?r   g      @r   g      @g      @r#   )rD   rN   r6   r   zItem wrong lengthrJ   r1   )r   r\   r   r$   r(   r   Zonesr'   r4   r^   rO   rP   rQ   rD   )r+   r   r   Zdf1r   ra   r.   r.   r/   test_setitem_boolean_indexing  s(    
  $z=TestDataFrameSetItemBooleanMask.test_setitem_boolean_indexingc                 C   sd   t ddgddgdd}| }tddgdd	}t d
ddgiddgd|j|d
gf< t|| d S )Nr8   r1   r9   rL   r>   r   Fr@   rB   r?   r[   r   r   rC   )r   r   r   r   r4   r^   )r+   rV   ra   r   r.   r.   r/   -test_loc_setitem_all_false_boolean_two_blocks  s
    $zMTestDataFrameSetItemBooleanMask.test_loc_setitem_all_false_boolean_two_blocksN)r  r  r  r+  Zskip_array_manager_invalid_testrO   r	  r
  rA  r4   r5  r   rB  rF  rJ  rL  rM  r.   r.   r.   r/   r;  m  s   
	r;  c                   @   s   e Zd Zdd Zdd Zdd Zejdde	j
dgdggd	d
dgdgggdd Zejdde	
dgdggdgdgggdd ZdS )%TestDataFrameSetitemCopyViewSemanticsc                 C   sP   d|j kst|d  }||d< tj|d dd< t|dd  sLtd S )Nr   r2   r[   rZ   )rN   r*   r   r$   r   r   r   )r+   r,   r   r.   r.   r/   test_setitem_always_copy  s
    z>TestDataFrameSetitemCopyViewSemantics.test_setitem_always_copyc                 C   s   t ddddgddddgd	d
dddgd}|ddtj |d }d|j|jdd  df< ttjtjddg|jdd}|d |k	stt	|d | d S )Ng?g @g@gffffff@gffffff@gffffff@gffffff@g333333 @)rd   re   r   r8   r1   r9   rC   ro   *   rI   )
r   rg   r$   r   r   rD   r   r*   r4   rj   )r+   rV   rA   ra   r.   r.   r/   test_setitem_clear_caches  s     
z?TestDataFrameSetitemCopyViewSemantics.test_setitem_clear_cachesc                 C   sj   ddgd }t ddg|d}| }|d d  }d|d< t ddddgg|d	}t|| t|| d S )
Nr2   r3   r1   rK  r   rc   r   r[   rM   rI  )r+   r   rV   df_copydf_viewra   r.   r.   r/   *test_setitem_duplicate_columns_not_inplace  s    zPTestDataFrameSetitemCopyViewSemantics.test_setitem_duplicate_columns_not_inplacer  r8   r    r#   c           
      C   s   |st jjdd}|j| ddg}tdddg|d}| }|d d  }||dg< tddgddgg|d}	t||	 t|| d S )	Nz.Setitem with same dtype still changing inplace)reasonr2   r3   r   r8   rc   rM   )	rO   r	  ZxfailnodeZ
add_markerr   r   r4   r^   )
r+   r  r   requestr	  r   rV   rR  rS  ra   r.   r.   r/   #test_setitem_same_dtype_not_inplace  s    
zITestDataFrameSetitemCopyViewSemantics.test_setitem_same_dtype_not_inplacer   c                 C   sl   ddg}t dddg|d}| }|d d  }||dg< t ddgddgg|d}t|| t|| d S )Nr2   r3   r   r8   rc   r   rM   rI  )r+   r  r   rV   rR  rS  ra   r.   r.   r/   2test_setitem_listlike_key_scalar_value_not_inplace  s    
zXTestDataFrameSetitemCopyViewSemantics.test_setitem_listlike_key_scalar_value_not_inplaceN)r  r  r  rO  rQ  rT  rO   r	  r
  r$   r(   rX  rY  r.   r.   r.   r/   rN    s    "
(rN  )4r   Znumpyr$   rO   Zpandas.util._test_decoratorsutilZ_test_decoratorsr+  Zpandas.core.dtypes.baser   r  Zpandas.core.dtypes.commonr   r   r   Zpandas.core.dtypes.dtypesr   r   r	   r
   Zpandasr6  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr4   Zpandas.core.arraysr   Zpandas.tseries.offsetsr   r   r  r  r,  r7  r;  rN  r.   r.   r.   r/   <module>   s,   H    e.m.e