U
    sVcL                     @   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dd Zejdd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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d0d1d2 ejD d3d4g d5d6 Zd7d8 Zejd9d:d;d<d=d>d&d?gd@dA Zejd9d:d;d<d=d>d&d?gdBdC Z dDdE Z!dFdG Z"dHdI Z#ejddJdKdLgdMdN Z$ejdOdPdPggdQdR Z%dSdT Z&dUdV Z'ejdWdXdYdZgdXdXdXggd[d\ Z(d]d^ Z)d_d` Z*dadb Z+dcdd Z,dedf Z-ejdgdhd>d>dXgdidjdkdlgdlfd>dhd>dXgdidjdkdlgdlfdhdPdPdXgdidjdkdlgdlfdhdPdXgdidjdkgdkfdPdhdXgdkdjdigdifdhdXdPgdkdjdigdjfgdmdn Z.dodp Z/ejdqdrdPdhd>gdse0dsdsdsdsgdsdsdsdsgdsdsdsdsggdrdPdhd>gdtfdhd>gdsduge0didjdsdugdkdldsdugd(dvdsduggdrdPdhd>gdtfdrdPdhge1j2dsdudwge1j3dxe0dsdudwgdsdudwgdsdudwggdrdPdhgdtfdPdhd>gdsdudwgdydzd{gd|d}d~gge0didsdudwgdkdydzd{gd(d|d}d~ggdrdPdhd>gdtfdhdrd>ge1j2dsdudwgdydzd{gd|d}d~gge1j3dxe0dudjdsdwgdzdldyd{gd}dvd|d~ggdrdPdhd>gdtfdrdhge0dsdugdwdygdzd{ggdrdhgdte0dsdjdugdwdldygdzdvd{ggdrdPdhgdtfgdd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:e;j<dd Z=ejdi ddXigdd Z>dd Z?dd Z@dS )TestDataFrameSetItemc                 C   sv   G dd dt }dg}t|}tddgi|d}d|d< d	||d
< tddgddg|d
d	gi|d}t|| d S )Nc                   @   s   e Zd ZdS )z@TestDataFrameSetItem.test_setitem_str_subclass.<locals>.mystringN)__name__
__module____qualname__ r!   r!   L/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/frame/indexing/test_setitem.pymystring1   s   r#   z2020-10-22 01:21:00+00:00a   index   b   c)strr   r   tmZassert_equal)selfr#   datar'   dfexpectedr!   r!   r"   test_setitem_str_subclass/   s    "z.TestDataFrameSetItem.test_setitem_str_subclassdtypeint32int64uint32Zuint64float32float64c                 C   s:   t jt|}t j||d||< || jj|ks6td S )Nr3   )nprandomrandnlenarrayr3   nameAssertionError)r.   r3   float_framearrr!   r!   r"   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 )Nr(   AB)r:   r;   r<   r=   r-   Zassert_almost_equalvalues)r.   rA   r/   r!   r!   r"   test_setitem_list_not_dataframeE   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( tjtdd ||d< W 5 Q R X 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 )Nr%   r(   r*   def)barZbazr$   r)   r+   foor?   r&   ghijZfizr'   r?   z/cannot reindex on an axis with duplicate labelsmatchz
non-uniqueZnewcolr   )   rU   columnszDCannot set a DataFrame with multiple columns to the single column grZgr)r   r   r   pytestraises
ValueErrorr-   assert_produces_warningFutureWarningr:   r;   randintgroupbycount)r.   r0   sermsgr!   r!   r"   test_setitem_error_msmgsJ   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
      r&   )	r   ranger:   r;   r<   repeatZreshaper-   assert_frame_equal)r.   NKr0   Znew_colrP   r1   r!   r!   r"   test_setitem_benchmarkb   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 )Nrd   r*   r+   r)   r$   r'   rW   r   rL   r(   rK   r7   xr8   r&   rU   r4   y)r   r:   r;   r<   arangeinsertastypedtypesr   r3   r-   assert_series_equalr.   r0   resultr1   r!   r!   r"   test_setitem_different_dtypem   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 )
NrD   rE   Cr&   Xrl   rm   z)r/   r'   )r   r'   r-   rg   r.   r0   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)freqr&   rD   M8[ns])r   r   r:   rn   r=   r3   r@   )r.   rngr0   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 )Nr*   r&   Z20130101UTCtznowr   r%   r(   rk   )r   re   r   r-   rg   r.   r0   r1   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   r%   r(   r$   r)   r+   rc   rK   rV   zLength of values \(z$\) does not match length of index \(z\)rS   rL   )r   Z
from_codesr   re   r=   rX   rY   rZ   )r.   catr0   ra   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   r%   
new_columnrM   )r   r   r   r-   rr   )r.   r0   Zsp_arrayr1   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   r%   r(   r&   r   rM   )r   r   r   r-   rr   )r.   r0   Z	sp_seriesr1   r!   r!   r"   (test_setitem_with_unaligned_sparse_value   s
    z=TestDataFrameSetItem.test_setitem_with_unaligned_sparse_valuec                 C   s8   t ddg}tg }||d< td|i}t|| d S )Nz2003-12Dr$   )r   r   r-   rg   )r.   r/   rt   r1   r!   r!   r"   #test_setitem_period_preserves_dtype   s
    z8TestDataFrameSetItem.test_setitem_period_preserves_dtypec                 C   s   t tdddgddtdddgtdtdddgtdtdddgddd}t tg ddtg tdtg tdtg ddd}tdddgD ]4\}}t|t|t|t|d|j|jd < qt	
|| d S )	Nr   r%   r(   r5   r9   r*   r6   r$   r)   r+   rH   )r   r   float	enumerateintr:   r6   locshaper-   rg   )r.   r1   r0   idxr)   r!   r!   r"   "test_setitem_dict_preserves_dtypes   s*    



z7TestDataFrameSetItem.test_setitem_dict_preserves_dtypesz	obj,dtypez2020-01Mr   rd   )leftrightr   z
2011-01-01z
US/Easternr   c                 C   sL   t dddgt|gd |dd}t ddddgi}||d< t|| d S )Nr%   r(   r*   r9   )r   objr   r   r   r   r-   rg   )r.   r   r3   r1   r0   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).0r3   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   r%   r   r-   rg   )r.   r   rt   r1   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 )	Nr%   Znatdatetime64[ns]r9   new)r   r   zdatetime64[s]g    eA)r:   r>   r   Zto_framer   r-   rg   )r.   Zdata_nsrt   r1   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unitrO   msmsr   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[]r9   r   intsr&   r}   )
r:   r3   rn   r5   viewrp   r   r@   rF   allr.   r   nr3   valsZex_valsr0   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   r9   r   r   r&   r}   dates)
r:   r3   rn   r5   r   rp   r   rF   r   r@   r   r!   r!   r"   6test_frame_setitem_existing_datetime64_col_other_units0  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 )NrE   rL   rv   rM   r   r%   r(   )r%   r%   r%   r(   TF)renamer-   rr   r   _mgrZarraysZassert_extension_array_equal_databaseidr@   copyr   ilocr   rq   )
r.   Ztimezone_framer0   r   Zv1Zv2Zv1baseZv2basedf2rt   r!   r!   r"   test_setitem_dt64tzA  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/2000rd   r'   )periodsr?   r*   r&   r   FZcheck_names)r   r   r:   r;   r<   r   r-   assert_index_equalr?   r@   Zreset_indexZ	set_indexr   r'   r   )r.   r~   r0   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threer%   r(   r*   r$   r)   rd   r+   rH   r   )r   r:   r>   rp   r3   r@   r-   rg   r.   r0   rB   r1   r!   r!   r"   'test_setitem_complete_column_with_arrayn  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 )Nr%   r(   r*   r9   rV   r$   r)   r+   Fr   r   r   r   )	r   r   r:   r;   r<   objectr-   r   rW   )r.   r3   colsr0   Zexpected_colsr!   r!   r"   $test_setitem_bool_with_numeric_index  s    z9TestDataFrameSetItem.test_setitem_bool_with_numeric_indexindexerrE   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 )NrD   rE   rV   r%   r(   rD   rE   r   )r   r:   nanrp   r-   rg   )r.   r   r0   otherr1   r!   r!   r"   #test_setitem_frame_length_0_str_key  s    z8TestDataFrameSetItem.test_setitem_frame_length_0_str_keyc              	   C   s  |rt nd }d}dddgd }ttd|d}d|jd	< tj||d
 d|jd d df< W 5 Q R X 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 )Nz&will attempt to set the values inplacerD   rE   rv   r(   r*   rk   )r   r*   )r   rD   rS   )r%   rU   r(   rd   r   r%   rU   rd   r   r9   r5   )DeprecationWarningr   re   r   r-   r[   r:   r   rW   rp   r5   rg   )r.   using_array_managerwarnra   r   r0   r1   r!   r!   r"   $test_setitem_frame_duplicate_columns  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 )
NrD   rE   rv   r(   r*   rk   "Columns must be same length as keyrS   )r   r*   rd   )r   re   rX   rY   rZ   r   )r.   r   r0   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 )Nr%   r(   r*   rV   rc      rH   rI   r   rS   r$   r   rX   rY   rZ   )r.   r   r0   rhsra   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 )Nr%   r(   r*   r$   r)   rV   rc   r      r+   r   )r.   r0   r   r1   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 )Nr%   r(   r*   r$   r)   rV   rc   r   r   rS   r   )r.   r0   r   ra   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 )NrD   rc   rd   rE   rv   r   EFc                 S   s   t t| S N)r   r:   r>   rl   r!   r!   r"   <lambda>      z=TestDataFrameSetItem.test_setitem_intervals.<locals>.<lambda>Fr   )r   re   r   r   r   
categoriesr   r@   r:   r>   rF   rp   r   r   r3   r   r   r-   r   rE   rv   r   rr   )r.   r0   r`   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 )NrO   mncategoryr   r   )
r   r   listrp   rO   r   Zreorder_categoriesr   r-   rg   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   rM   rD   rW   r'   )r   r   r-   r   r'   )r.   r'   rt   r1   r!   r!   r"    test_setitem_with_empty_listlike  s
    z5TestDataFrameSetItem.test_setitem_with_empty_listlikezcols, values, expectedrv   r%   r(   r*   rU   c                 C   s8   t |g|d}|d |d< |d jd }||ks4td S )NrV   r$   r   )r   rF   r@   )r.   r   rF   r1   r0   rt   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   r%   i  r   )r   r   )r   r   )r   r   )r   r   )r   Zfrom_productr   r:   r;   r]   r=   r   r'   rF   r   shuffler   r-   rg   )r.   itr   r'   r   r0   rP   rQ   r!   r!   r"   test_setitem_multi_index5  s    
z-TestDataFrameSetItem.test_setitem_multi_indexzcolumns,box,expectedrD      rV         	   r9   rc   r   r            c                 C   s:   t ddgddgddggddgd	}|||< t|| d S )
Nr%   r(   r*   rU   rd   r   rD   rE   rV   r   )r.   rW   boxr1   r0   r!   r!   r"   !test_setitem_list_missing_columnsM  s    3"z6TestDataFrameSetItem.test_setitem_list_missing_columnsc                 C   sF   t t|d |d }||d< |d }t||jdd}t|| d S )NrD   rE   tuplesrR   )r   zipr   r'   r-   rr   )r.   rA   r  rt   r1   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 )Nr%   r(   r*   rU   rd   r   r   c                 s   s   | ]
}|V  qd S r   r!   r   rl   r!   r!   r"   	<genexpr>  s     zCTestDataFrameSetItem.test_setitem_iloc_generator.<locals>.<genexpr>r   r   r   r-   rg   r.   r0   r   r1   r!   r!   r"   test_setitem_iloc_generator  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 )Nr%   r(   r*   rU   rd   r   r   c                 s   s   | ]
}|V  qd S r   r!   r
  r!   r!   r"   r    s     zSTestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator.<locals>.<genexpr>r   r  r  r!   r!   r"   +test_setitem_iloc_two_dimensional_generator  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?   r3   r&   r$   )r?   r'   r3   r)   ZS64r+   rH   Zabcd)
r   r   r:   r6   Zuint8rq   r   r   r-   rr   )r.   r'   r0   rt   r1   r!   r!   r"   (test_setitem_dtypes_bytes_type_to_object  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 )Nr*   rU   rd   r   r   r5   Int64Fr&   r$   r)   )r   rp   r   r'   r   r-   rg   )r.   rt   maskr1   r!   r!   r"    test_boolean_mask_nullable_int64  s    z5TestDataFrameSetItem.test_boolean_mask_nullable_int64c                 C   sH   t dddgi}tddgdd|d< t dddgidd}t|| d S )Nr$   r%   r(   r  r9   r   r   r!   r!   r"    test_setitem_ea_dtype_rhs_series  s    z5TestDataFrameSetItem.test_setitem_ea_dtype_rhs_seriesc              	   C   sz   t tdtddtdd}td}t tdd}||d< tt t||d< W 5 Q R X t|| d S )Nrc   )np-array	np-matrixr&   )rc   r%   r  r  )	r   r:   onesrn   r-   r[   PendingDeprecationWarningZmatrixrg   )r.   r1   r$   r0   r!   r!   r"   test_setitem_npmatrix_2d  s     
z-TestDataFrameSetItem.test_setitem_npmatrix_2dr   rH   c                 C   s   t ddgddgd|}ddd|jd d d	f< d
dd|jd d df< dd
i|jd d df< t ddgddgd|d
dgtjd
gd}t|| d S )Nr%   r(   r*   rU   r   r      )r%   r   r$   rd   r   )r   r%   r+   rI   )r+   rI   )r   r   r:   r   r-   rg   )r.   r   r0   r1   r!   r!   r"   %test_setitem_aligning_dict_with_index  s    &z:TestDataFrameSetItem.test_setitem_aligning_dict_with_indexc                 C   s   t dddgi}t dddgiddgd|d< t dtjdgi}t|| t dddgi}|dt dddgiddgd t|| d S )Nr$   r%   r(   rc   r   r&   r   )r   r:   r   r-   rg   Zisetitemr   r!   r!   r"   test_setitem_rhs_dataframe  s     z/TestDataFrameSetItem.test_setitem_rhs_dataframec                 C   sb   t ddgddgddggd}t ddd	gi|d
|d< t tdd	g|d
ddgd}t|| d S )Nr$   r)   r%   r(   r*   rU   rW   r/   rc   r   r9   r   r   r.   Zany_numeric_ea_dtyper0   r1   r!   r!   r"   *test_setitem_frame_overwrite_with_ea_dtype  s    z?TestDataFrameSetItem.test_setitem_frame_overwrite_with_ea_dtypeN)Ar   r   r    r2   rX   markparametrizerC   rG   rb   rj   ru   r{   r   r   r   r   r   r   r   r   r
   r   r	   r   r   r   ea_registryrq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r:   r>   r5   r  r	  r  r  r  r  r  tdZ&skip_array_manager_not_yet_implementedr  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:00rE   rM   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   r9   rE   rM   )r   r:   r>   tolistr3   r@   )r.   r   r1   r!   r!   r"   r1     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 )Nr(   r%   rD   rV   rE   Fr   )Zkeep_tzr'   z(do 'idx.tz_convert(None)' before callingr   rM   )r   r:   r;   r<   r-   r[   r\   Z	to_seriesr,   messager@   r   Z
tz_convertr%  rr   )r.   r   r1   r0   r   ra   rt   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 Nr(   r%   rD   rV   rE   )r   r:   r;   r<   r-   rr   r.   r   r1   r0   rt   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_pydatetimer-   rr   r+  r!   r!   r"   .test_setitem_object_array_of_tzaware_datetimes  s    zGTestSetitemTZAwareValues.test_setitem_object_array_of_tzaware_datetimesN)
r   r   r    rX   Zfixturer   r1   r)  r,  r-  r!   r!   r!   r"   r$    s   

	r$  c                   @   sT   e Z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S )!TestDataFrameSetItemWithExpansionc                 C   s   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< |rhtdddgdd}ntdddgdd}t|| d S )Nr%   r(   r*   rU   r   r   r$   g?g?g333333?g?      ?r+   rH   r   )r   r   rM   )r   r:   r>   r   r   r-   rr   )r.   using_copy_on_writer0   r`   r1   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 )
Nr%   r(   r*   rU   rd   r   z0 - Namer   rV   r   r   r!   r!   r"   .test_setitem_string_column_numpy_dtype_raising4  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)   r8   rW   r3   r(   r   r%   rV   )r   r   re   r   r:   r   r-   rg   )r.   r0  r0   r1   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   r4   r9   c                 S   s   g | ]}| d |d  qS )z - i  r!   r   rP   r!   r!   r"   r   I  s     zcTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype.<locals>.<listcomp>i  T)ZbyZ	ascendingi)  F)r   labelsr   )r   Zorderedr&   r   )r   r:   r>   r;   r]   r   re   sort_valuesr   r5  rF   r,   rq   r   r3   r   r-   rr   Zassert_categorical_equalr   r?   Z
sort_index)	r.   r0   r7  r`   r   rt   r1   Zresult1Zresult2r!   r!   r"   -test_setitem_with_expansion_categorical_dtypeD  s>    

zOTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtypec                 C   s2   t  }d|d< t dgdtj}t|| d S )Nr%   rL   rV   )r   rp   r:   r5   r-   rg   r   r!   r!   r"   test_setitem_scalars_no_indexq  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   rD   Fr   )rW   r@   r-   rr   )r.   rA   rt   r1   r!   r!   r"   test_setitem_newcol_tuple_keyx  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endr|   rc   r   i  r   r%   )r   r   r   re   r   r   r:   r   isnanr   r@   )r.   rW   r/   ttsr!   r!   r"   #test_frame_setitem_newcol_timestamp  s    
zETestDataFrameSetItemWithExpansion.test_frame_setitem_newcol_timestampc                 C   sh   t dddgi}|j|d< d|jddgdf< |jdgd d f }t dgdgddgd}t|| d S )	Nr$   r)   r   FTr%   r   r&   )r   r'   r   r-   rg   rs   r!   r!   r"   *test_frame_setitem_rangeindex_into_new_col  s    
zLTestDataFrameSetItemWithExpansion.test_frame_setitem_rangeindex_into_new_colc                 C   sh   t ddgddgddggd}t ddd	gi|d
|d< t ddgddgtdd	g|d
d}t|| d S )Nr$   r)   r%   r(   r*   rU   r  rc   r   r9   r+   r$   r)   r+   r   r  r!   r!   r"    test_setitem_frame_keep_ea_dtype  s    zBTestDataFrameSetItemWithExpansion.test_setitem_frame_keep_ea_dtypeN)r   r   r    r1  r2  r4  r9  r:  r;  rA  rB  rD  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   r%   r%   )r   r:   zerosr-   rg   r   r!   r!   r"   test_setitem_slice_position  s    
z7TestDataFrameSetItemSlicing.test_setitem_slice_positionr   r  r   r%   r(   r*   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 Nr%   r*   rd   r(   rU   r   r$   r)   r+   rV   rc   r   r   r   r.   r   r  r   r0   r1   r!   r!   r"   +test_setitem_slice_indexer_broadcasting_rhs  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 rI  )r   r   r   re   r-   rg   )r.   r   r  r0   r1   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 )Nr%   r*   rd   rl   rm   rx   r(   rU   r   r$   r)   r+   rV   rc   r   r   r   r3  r   rJ  r!   r!   r"   0test_setitem_slice_broadcasting_rhs_mixed_dtypes  s    " zLTestDataFrameSetItemSlicing.test_setitem_slice_broadcasting_rhs_mixed_dtypesN)r   r   r    rH  rX   r   r!  r-   setitemr   r   r:   r>   r   pdrK  rL  rM  r!   r!   r!   r"   rE    s   	rE  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 )Nr%   r(   r*   rU   rd   r   r   r   r   r   r   r  r  c                 S   s   dS )NrD   r!   r   r!   r!   r"   r     r   zDTestDataFrameSetItemCallable.test_setitem_callable.<locals>.<lambda>r   ry   r!   r!   r"   test_setitem_callable  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 )Nr%   r!   r   r!   r!   r"   inc  s    zETestDataFrameSetItemCallable.test_setitem_other_callable.<locals>.incr   r%   r   r   )r.   rR  r0   r1   r!   r!   r"   test_setitem_other_callable  s
    z8TestDataFrameSetItemCallable.test_setitem_other_callableN)r   r   r    rQ  rS  r!   r!   r!   r"   rP    s   rP  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j	d
dejde
ejegdd Zejde
ejeg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 Nr(   )r:   absr0   r!   r!   r"   r     r   z(TestDataFrameSetItemBooleanMask.<lambda>c                 C   s   | t | d kjS rV  )r:   rW  rF   rX  r!   r!   r"   r     r   Z	dataframer>   )idsc                 C   sL   |  }||}|  }tj||< |  }tj|jt|< t|| d S r   )r   r:   r   rF   r>   r-   rg   )r.   rU  rA   r0   r  rt   r1   r!   r!   r"   test_setitem_boolean_mask  s    	
z9TestDataFrameSetItemBooleanMask.test_setitem_boolean_maskz1Currently empty indexers are treated as all False)reasonr  c              	   C   sh   t dgdgdgd}|tkr,|g dd}n|g }d}tjt|d dg|j|dgf< W 5 Q R X d S )	Nr$   r%   rC  r   r9   z@Must have equal len keys and value when setting with an iterablerS   r)   )r   r   rX   rY   rZ   r   )r.   r  r0   r   ra   r!   r!   r"   :test_setitem_loc_empty_indexer_raises_with_non_empty_value  s    zZTestDataFrameSetItemBooleanMask.test_setitem_loc_empty_indexer_raises_with_non_empty_valuec                 C   sz   t dgdgdgd}|dg}d|d  |j|dgf< t dgdgdgd}t|| d|j|dgf< t|| d S )	Nr$   r%   rC  Frc   r+   r)   r  )r   r   r-   rg   )r.   r  r0   r   r1   r!   r!   r"   1test_setitem_loc_only_false_indexer_dtype_changed	  s    
zQTestDataFrameSetItemBooleanMask.test_setitem_loc_only_false_indexer_dtype_changedr   c                 C   s\   t ddddgddddgd	}| }|d
 dk}||| d
|||< t|| d S )Nr%   rU   r(   r*   rd   r   r   r   r   r$   )r   r   r8  r-   rg   )r.   r   r0   r1   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   rO   rP   rQ   klr   r   r%   r(   )catsrF   r&   r+   r*   F)Zcheck_stacklevelra  T)Zinplace)r   r   r   r   r-   r[   r\   r   Zset_categoriesr@   rg   )r.   Zcats2Zidx2Zvalues2Zexp_multi_rowZcatsfZidxfZvaluesfr0   Z	exp_fancyZreturn_valuer  r!   r!   r"   test_setitem_mask_categorical   s*     
 z=TestDataFrameSetItemBooleanMask.test_setitem_mask_categoricalr3   r   r5   kwargsr'   r%   rW   rD   c                 C   s6   ||d< t f |}| }d|||k< t|| d S )Nr3   /   r   r   r-   rg   )r.   r3   rc  r0   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 )Nr*   rD   rE   rv           r/  r   g      ?r   g      @r   g      @g      @r9   )r'   rW   r/   r   zItem wrong lengthrS   r(   )r   re   r   r:   r>   r   r  r=   r-   rg   rX   rY   rZ   r'   )r.   r   r   Zdf1r   r1   r!   r!   r"   test_setitem_boolean_indexingG  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 )Nr%   r(   r*   rU   r$   rC  Fr+   rM   r)   rd   r   r   r&   )r   r   r   r   r-   rg   )r.   r0   r1   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#  skip_array_manager_invalid_testrX   r   r!  rZ  xfailr   r:   r>   r   r\  r]  r-   rN  r   r^  rb  rf  rh  ri  r!   r!   r!   r"   rT    s(   

	rT  c                   @   s  e Zd Zdd Zejdddg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ejdddgejddgejjddddgejdddededfdgdd Zej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   rD   rd   rc   )rW   r@   r   r:   r   r   r   )r.   rA   r   r!   r!   r"   test_setitem_always_copyh  s
    z>TestDataFrameSetitemCopyViewSemantics.test_setitem_always_copyconsolidateTFc                 C   s   t ddddgddddgd	d
dddgd}|ddtj |st|r`|  t|jjdksttnt|jjdkstt|d j	}d|j
dd df< ttjtjddg|jdd}t|d | |st||j t||d j	std S )Ng?g @g@gffffff@gffffff@gffffff@gffffff@g333333 @)rl   rm   r   r%   r(   r*   r&   rx   *   rR   )r   ro   r:   r   Z_consolidate_inplacer=   r   blocksr@   Z_valuesr   r   r'   r-   rr   Zassert_numpy_array_equalrF   Zshares_memory)r.   rn  r   r0  r0   Zzvalsr1   r!   r!   r"   #test_setitem_partial_column_inplacep  s"    	 

zITestDataFrameSetitemCopyViewSemantics.test_setitem_partial_column_inplacec                 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 )
NrD   rE   r(   rg  r   rk   r   rd   rV   re  )r.   r   r0   df_copydf_viewr1   r!   r!   r"   *test_setitem_duplicate_columns_not_inplace  s    zPTestDataFrameSetitemCopyViewSemantics.test_setitem_duplicate_columns_not_inplacer5  r%   r5   r9   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 )NrD   rE   r   r%   rk   rV   re  )r.   r5  r   r   r0   rr  rs  r1   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 )NrD   rE   r   r%   rk   r   rV   re  )r.   r5  r   r0   rr  rs  r1   r!   r!   r"   2test_setitem_listlike_key_scalar_value_not_inplace  s    
zXTestDataFrameSetitemCopyViewSemantics.test_setitem_listlike_key_scalar_value_not_inplacer   r$   z+Boolean indexer incorrectly setting inplace)r[  strict)Zmarkszvalue, set_value)r%   rd   )r   g      @z
2020-12-31z
2021-12-31r   c                 C   s@   t d|iddgd}| }|d d  }|||< t|| d S )Nr$   r   r%   r&   re  )r.   r5  	set_valuer   r0   r1   r   r!   r!   r"   "test_setitem_not_operating_inplace  s
    zHTestDataFrameSetitemCopyViewSemantics.test_setitem_not_operating_inplacec                    s   dd t dD  t fdd D  d}|jjd j}|jD ]}d|| |< q@|s~t|tdtdf dkst	n&t|tdtdf dkst	d S )	Nc                 S   s   g | ]}d | qS )r+   r!   r6  r!   r!   r"   r     s     z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<listcomp>rc   c                    s   i | ]}|t t qS r!   )r:   rG  r=   )r   colr7  r!   r"   
<dictcomp>  s      z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<dictcomp>r&   r   r%   )
re   r   r   rp  rF   rW   r:   r   rn   r@   )r.   r0  r0   rF   labelr!   r{  r"   "test_setitem_column_update_inplace  s    
(zHTestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplaceN)r   r   r    rm  rX   r   r!  rq  rt  r:   r>   ru  rv  paramrk  r   ry  r#  rj  r~  r!   r!   r!   r"   rl  g  sF   
 "
(
	rl  )4r   Znumpyr:   rX   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pandasrO  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas._testingZ_testingr-   Zpandas.core.arraysr   Zpandas.tseries.offsetsr   r   r$  r.  rE  rP  rT  rl  r!   r!   r!   r"   <module>   s2   H     I. . 