o
    d:                     @   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                   @   sN  e Zd Zdd Zejdg d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d,d-d. ejD d/d0g d1d2 Zd3d4 Zejd5g d6d7d8 Zejd5g d6d9d: Z d;d< Z!d=d> Z"d?d@ Z#ejdg dAdBdC Z$ejdDdEdEggdFdG Z%dHdI Z&dJdK Z'ejdLg dMg dNgdOdP Z(dQdR Z)dSdT Z*dUdV Z+dWdX Z,dYdZ Z-ejd[g d\g d]d^fg d_g d]d^fg d`g d]d^fg dag dbdcfg ddg dedffg dgg dedhfgdidj Z.dkdl Z/ejdmg dndoe0g dpg dpg dpgg dndqfdrdsgdodtge0g dug dvg dwgg dndqfg dxe1j2g dye1j3dze0g dyg dyg dygg dxdqfg d{g dyg d|g d}ge0g d~g dg dgg dndqfg de1j2g dyg d|g d}ge1j3dze0g dg dg dgg dndqfddrge0dodtgddgddggddrgdqe0g dg dg dgg dxdqfgdd Z4dd Z5dd Z6dd Z7dd Z8dd Z9dd Z:e;j<dd Z=ejdi ddigdd Z>dd Z?dd Z@dd ZAdS )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!   \/app/.heroku/python/lib/python3.10/site-packages/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sJ d S )Nr3   )nprandomrandnlenarrayr3   name)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.   r@   r/   r!   r!   r"   test_setitem_list_not_dataframeE   s   z4TestDataFrameSetItem.test_setitem_list_not_dataframec                 C   s   t g dg ddtg dddd}tg dtg d	ddd
d}d}tjt|d ||d< W d    n1 s:w   Y  t tjdddg dd}d}tjt|d |	ddg
 |d< W d    d S 1 smw   Y  d S )Nr%   r(   r*   )def)barZbazr$   r)   r+   foor?   r&   )ghij)r$   r)   r+   r$   Zfizr'   r?   z/cannot reindex on an axis with duplicate labelsmatchZnewcolr   r(   )   rV   r$   r)   r+   rH   columnszDCannot set a DataFrame with multiple columns to the single column grr)   r+   gr)r   r   r   pytestraises
ValueErrorr:   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_colrQ   r1   r!   r!   r"   test_setitem_benchmark`   s   
 z+TestDataFrameSetItem.test_setitem_benchmarkc                 C   sB  t tjddtdg dd}|dd|d  |dd	|d
  |d d|d< |j}tt	dgd t	dg g dd}t
|| |d d|d< |j}tt	dgd t	dgd  g dd}t
|| |d d|d< |j}tt	dgd t	dgd  t	dg g dd}t
|| d S )Nre   r*   )r+   r)   r$   r'   rY   r   rM   r$   r(   rK   r+   r7   xr8   )rM   r+   rK   r)   r$   rm   r&   rV   r4   y)rM   r+   rK   r)   r$   rm   rn   )r   r:   r;   r<   arangeinsertastypedtypesr   r3   r-   assert_series_equalr.   r0   resultr1   r!   r!   r"   test_setitem_different_dtypek   s4   *z1TestDataFrameSetItem.test_setitem_different_dtypec                 C   sL   t g dd}|j|d< g d|d< t dg dig dd}t|| d S )NrC   rD   Cr&   Xrm   rn   z)r/   r'   )r   r'   r-   rh   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s!J d S )Nz1/1/2000 00:00:00z1/1/2000 1:59:50Z10s)freqr&   rC   M8[ns])r   r   r:   ro   r=   r3   )r.   rngr0   r!   r!   r"   %test_setitem_dt64_index_empty_columns   s   z:TestDataFrameSetItem.test_setitem_dt64_index_empty_columnsc                 C   sR   t tdd}tddd|d< t tdddggd g ddgd}t|| d S )	Nr*   r&   Z20130101UTCtznowr   r%   r(   rl   )r   rf   r   r-   rh   r.   r0   r1   r!   r!   r"   $test_setitem_timestamp_empty_columns   s   z9TestDataFrameSetItem.test_setitem_timestamp_empty_columnsc                 C   s|   t g dg d}ttddgd}dt| dt| d}tjt|d	 ||d
< W d    d S 1 s7w   Y  d S )N)r   r%   r%   r   r%   r(   rL   rd   rK   rX   zLength of values \(z$\) does not match length of index \(z\)rT   rM   )r   Z
from_codesr   rf   r=   r[   r\   r]   )r.   catr0   rb   r!   r!   r"   2test_setitem_wrong_length_categorical_dtype_raises   s   
"zGTestDataFrameSetItem.test_setitem_wrong_length_categorical_dtype_raisesc                 C   sJ   t g dg dd}tg d}||d< t|dd}t|d | d S )NrL         ?       @      @Zc_1Zn_1r   r   r%   
new_columnrN   )r   r   r   r-   rs   )r.   r0   Zsp_arrayr1   r!   r!   r"   test_setitem_with_sparse_value   s
   z3TestDataFrameSetItem.test_setitem_with_sparse_valuec                 C   s^   t g dg dd}ttg dg dd}||d< ttg ddd	}t|d | d S )
NrL   r   r   r   )r(   r%   r   r&   r   )r%   r   r   rN   )r   r   r   r-   rs   )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-   rh   )r.   r/   ru   r1   r!   r!   r"   #test_setitem_period_preserves_dtype   s
   z8TestDataFrameSetItem.test_setitem_period_preserves_dtypec                 C   s   t tg dddtg dtdtg dtdtg dddd}t tg ddtg tdtg tdtg ddd}tg dD ]\}}t|t|t|t|d|j|jd < q@t	
|| d S )Nr   r5   r9   rG   r6   rW   r   )r   r   float	enumerateintr:   r6   locshaper-   rh   )r.   r1   r0   idxr)   r!   r!   r"   "test_setitem_dict_preserves_dtypes   s*   



z7TestDataFrameSetItem.test_setitem_dict_preserves_dtypesz	obj,dtypez2020-01Mr   re   )leftrightr5   r   z
2011-01-01z
US/Easternr   c                 C   sH   t g dt|gd |dd}t dg di}||d< t|| d S )NrG   r*   r9   )r   objr   r   r   r   r-   rh   )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-   rh   )r.   r   ru   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  t|d 	 | d S )	Nr%   Znatdatetime64[ns]r9   new)r   r   datetime64[s]r   )
r:   r>   r   Zto_framer   r-   rh   rs   assert_numpy_array_equalZto_numpy)r.   Zdata_nsru   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unit)rP   msmsr   r   Yc                 C   s   d}t d| d}t j|t jd|}|dv r|}n|d}tdt |it |d}|||< || j|jks>J || j|k sIJ d S )	Nd   M8[]r9   )r   r   r   intsr&   	r:   r3   ro   r5   viewrq   r   rE   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 sEJ d S )
Nr   r   r   r9   r   r   r&   r   datesr   r   r!   r!   r"   6test_frame_setitem_existing_datetime64_col_other_units1  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 u sXt	|t	|ksXJ |
 }t|jd< t|jd	< |d }	tt|	tg d
dd t|j|j d S )NrD   rM   rx   rN   r   r%   r(   )r%   r%   r%   r(   )TFT)renamer-   rs   r   _mgrZarraysZassert_extension_array_equalZ_ndarraybaseidcopyr   ilocr   rr   )
r.   Ztimezone_framer0   r   Zv1Zv2Zv1baseZv2basedf2ru   r!   r!   r"   test_setitem_dt64tzB  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s+J |jdks2J |	 
d}t|jtsAJ t|j| d S )
Nz1/1/2000re   r'   )periodsr?   r*   r&   r   FZcheck_names)r   r   r:   r;   r<   r   r-   assert_index_equalr?   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 g dg dd}tddgddgddgg}||ddg< t g dg dg d	g d
d}|d |j|d< |d |j|d< |d j|jksNJ |d j|jksXJ t|| d S )N)onetwothreerG   r$   r)   r%   r*   re   r+   rH   r%   r*   re   r%   r%   r%   rW   )r   r:   r>   rq   r3   r-   rh   r.   r0   rA   r1   r!   r!   r"   'test_setitem_complete_column_with_arrayn  s   z<TestDataFrameSetItem.test_setitem_complete_column_with_array)f8i8u8c                 C   sl   t g d|d}ttjdd|d}g d|d< t g dtd}|dkr-t g d	td}t|j| d S )
NrG   r9   r*   rX   rL   F)r%   r(   r*   Fr   )r   r   r   F)	r   r   r:   r;   r<   objectr-   r   rY   )r.   r3   colsr0   Zexpected_colsr!   r!   r"   $test_setitem_bool_with_numeric_index  s   z9TestDataFrameSetItem.test_setitem_bool_with_numeric_indexindexerrD   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 )NrC   rD   rX   r%   r(   rC   rD   r   )r   r:   nanrq   r-   rh   )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   g dd }t td|d}d|jd< d|jd d df< d	|d
< t g dtjddtjddgtjddtjddggdd}|d tj|d< |d tj|d< ||_t	|| d S )Nrw   r(   r*   rl   )r   r*   )r   rC   )r%   rV   rD   r(   re   rx   )r   r%   r(   r*   rV   re   r%   rV   re   r   r9   )
r   rf   r   r:   r   rq   r5   rY   r-   rh   )r.   r   r0   r1   r!   r!   r"   $test_setitem_frame_duplicate_columns  s    

z9TestDataFrameSetItem.test_setitem_frame_duplicate_columnsc                 C   s   g dd }t td|d}tjtdd d|dg< W d    n1 s%w   Y  |jd d d df }tjtdd d|dg< W d    d S 1 sMw   Y  d S )	Nrw   r(   r*   rl   "Columns must be same length as keyrT   )r   r*   re   rC   )r   rf   r[   r\   r]   r   )r.   r   r0   r   r!   r!   r"   2test_setitem_frame_duplicate_columns_size_mismatch  s   "zGTestDataFrameSetItem.test_setitem_frame_duplicate_columns_size_mismatchr   rL   )r$   r$   r$   c                 C   sh   t g dg|d}t ddggddgd}d}tjt|d ||d	< W d    d S 1 s-w   Y  d S )
NrG   rX   rd      rH   rI   r   rT   r$   r   r[   r\   r]   )r.   r   r0   rhsrb   r!   r!   r"   #test_setitem_df_wrong_column_number  s   
"z8TestDataFrameSetItem.test_setitem_df_wrong_column_numberc                 C   s   t g dgg dd}t g dgg dd}||ddg< t g dgg dd}t|| ||ddg< t g dgg d	d}t|| d S )
NrG   r$   r)   r)   rX   rd   r      r$   r)   r+   )rd   r   r   rd   )r$   r)   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   sp   t g dgg dd}t ddggddgd}d}tjt|d	 ||ddg< W d    d S 1 s1w   Y  d S )
NrG   r   rX   rd   r   r$   r)   r   rT   r   )r.   r0   r   rb   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sJ ||d< t||d< |j	|d< t|j	|d< |
t|d< t|d js@J t|d jjsJJ t|d jsSJ t|d jjs]J t|d seJ t|d smJ t|d suJ 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 )NrC   rd   re   rD   rx   r   EFc                 S   s   t t| S N)r   r:   r>   rm   r!   r!   r"   <lambda>  s    z=TestDataFrameSetItem.test_setitem_intervals.<locals>.<lambda>Fr   )r   rf   r   r   r   
categoriesr   r:   r>   rE   rq   r   r   r3   r   r   r-   r   rD   rx   r   rs   )r.   r0   ra   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 )NrP   Zmncategoryr   r   )
r   r   listrq   rP   r   Zreorder_categoriesr   r-   rh   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   rN   rC   rY   r'   )r   r   r-   r   r'   )r.   r'   ru   r1   r!   r!   r"    test_setitem_with_empty_listlike  s
   z5TestDataFrameSetItem.test_setitem_with_empty_listlikezcols, values, expected)rx   r   r   r$   r%   r(   r*   rV   rV   )r   rx   r   r$   )rx   rD   rD   r$   )rx   rD   r$   rG   r*   )rD   rx   r$   )r*   r(   r%   r%   )rx   r$   rD   r(   c                 C   s8   t |g|d}|d |d< |d jd }||ksJ d S )NrX   r$   r   )r   rE   )r.   r   rE   r1   r0   ru   r!   r!   r"   test_setitem_same_column  s   z-TestDataFrameSetItem.test_setitem_same_columnc                 C   s   g dddgg d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 )N)jimjoejoliefirstlast)r   centerr   Z20141006   )r   r%   i  r   r   r   )r   r  )r   r  )r   r  )r   r  )r   Zfrom_productr   r:   r;   r^   r=   r   r'   rE   r   shuffler   r-   rh   )r.   itr   r'   r   r0   rQ   rR   r!   r!   r"   test_setitem_multi_index'  s   
z-TestDataFrameSetItem.test_setitem_multi_indexzcolumns,box,expected)rC   rD   rx   r      )r	  r	  r	  r	  rX   rx   r      )r%   r(   r	  r
  )r*   rV   r	  r
  re      r	  r
  rw   )r	  r
  	   r9   )rD   rx   r   r   )         )r%   r	  r
  r  )r*   rd   r   r   )re   r  r  r  )rx   rC   r   )r
  r(   r	  r  )r   rV   rd   r   )r  r  r  r  rC   r  rd   r   r   )r	  r(   r
  )r  rV   rd   )r   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*   rV   re   r  rC   rD   rX   r   )r.   rY   boxr1   r0   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 )NrC   rD   tuplesrS   )r   zipr   r'   r-   rs   )r.   r@   r  ru   r1   r!   r!   r"   test_setitem_list_of_tuplesv  s
   z0TestDataFrameSetItem.test_setitem_list_of_tuplesc                 C   sT   t g dg dd}dd dD }d|j|< t g dg d	d}t|| d S )
NrG   rV   re   r  r   c                 s       | ]}|V  qd S r   r!   r   rm   r!   r!   r"   	<genexpr>      zCTestDataFrameSetItem.test_setitem_iloc_generator.<locals>.<genexpr>r   r%   r   rV   r%   r%   r   r   r-   rh   r.   r0   r   r1   r!   r!   r"   test_setitem_iloc_generator~  s
   
z0TestDataFrameSetItem.test_setitem_iloc_generatorc                 C   sX   t g dg dd}dd dD }d|j|df< t g dg dd}t|| d S )	NrG   r  r   c                 s   r  r   r!   r  r!   r!   r"   r    r  zSTestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator.<locals>.<genexpr>r   r%   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   abcd)
r   r   r:   r6   Zuint8rr   r   r   r-   rs   )r.   r'   r0   ru   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*   rV   re   r  r   r5   Int64Fr&   r$   r)   )r   rq   r   r'   r   r-   rh   )r.   ru   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   s   t tdtddtdd}td}t tdd}||d< tt t||d< W d    n1 s:w   Y  t|| d S )Nrd   )np-array	np-matrixr&   )rd   r%   r&  r'  )	r   r:   onesro   r-   Zassert_produces_warningPendingDeprecationWarningmatrixrh   )r.   r1   r$   r0   r!   r!   r"   test_setitem_npmatrix_2d  s   
z-TestDataFrameSetItem.test_setitem_npmatrix_2dr   rH   r$   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*   rV   r   r      )r%   r   r$   re   r  r   r%   r+   rI   )r+   rI   )r   r   r:   r   r-   rh   )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(   rd   r   r&   r   )r   r:   r   r-   rh   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*   rV   rY   r/   rd   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_dtypec                 C   s8   t ddgi}| }d}||g ||< t|| d S )Nr   rd   r   r   r-   rh   )r.   r0   r1   Zcol_namer!   r!   r"   test_setitem_frame_midx_columns  s
   z4TestDataFrameSetItem.test_setitem_frame_midx_columnsN)Br   r   r    r2   r[   markparametrizerB   rF   rc   rk   rv   r~   r   r   r   r   r   r   r   r   r
   r   r	   r   r   r   ea_registryrr   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/  r2  r4  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:00rD   rN   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J |S )Nr   r9   rD   rN   )r   r:   r>   tolistr3   )r.   r   r1   r!   r!   r"   r1     s   z!TestSetitemTZAwareValues.expectedc                 C   sl   t tjdddgd}||d< |jddgdjd |d< |d }t|dd dd	}t	
|| d S )
Nr(   r%   rC   rX   rD   r   r&   r   rN   )r   r:   r;   r<   Z	to_seriesdtZ
tz_convertr   r:  r-   rs   )r.   r   r1   r0   ru   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%   rC   rX   rD   )r   r:   r;   r<   r-   rs   r.   r   r1   r0   ru   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-   rs   r@  r!   r!   r"   .test_setitem_object_array_of_tzaware_datetimes  s   zGTestSetitemTZAwareValues.test_setitem_object_array_of_tzaware_datetimesN)
r   r   r    r[   Zfixturer   r1   r>  rA  rB  r!   r!   r!   r"   r9    s    


	r9  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 g dg dd}|d }tddgddgdd	gg|d
dg< d|jd< |r1tg ddd}ntg ddd}t|| d S )NrG   )rV   rV   r  r   r$   g?g?g333333?g?      ?r+   rH   r   )r   r   rN   )r   r(   r*   )r   r:   r>   r   r   r-   rs   )r.   using_copy_on_writer0   ra   r1   r!   r!   r"   test_setitem_listlike_views  s   $
z=TestDataFrameSetItemWithExpansion.test_setitem_listlike_viewsc                 C   sL   t ddgddgg}ddg|d< t g dg d	gg d
d}t|| d S )Nr%   r(   r*   rV   re   r  0 - Name)r%   r(   re   )r*   rV   r  )r   r%   rG  rX   r   r   r!   r!   r"   .test_setitem_string_column_numpy_dtype_raising*  s   zPTestDataFrameSetItemWithExpansion.test_setitem_string_column_numpy_dtype_raisingc                 C   sb   t g ddd}ttd|jd d df< t dtjtjgdtjtjggg dd}t|| d S )	Nr   r8   rY   r3   r(   r$   r   r%   rX   )r   r   rf   r   r:   r   r-   rh   )r.   rE  r0   r1   r!   r!   r"   'test_setitem_empty_df_duplicate_columns1  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g d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   rQ   r!   r!   r"   r   ?  s    zcTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype.<locals>.<listcomp>i  T)ZbyZ	ascendingi)  F)r   labelsr   )r   Zorderedr&   r   )rK  r   r   )r   r:   r>   r;   r^   r   rf   sort_valuesr   rK  rE   r,   rr   r   r3   r   r-   rs   Zassert_categorical_equalr   r?   Z
sort_index)	r.   r0   rM  ra   r   ru   r1   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 )Nr%   rM   rX   )r   rq   r:   r5   r-   rh   r   r!   r!   r"   test_setitem_scalars_no_indexg  s   z?TestDataFrameSetItemWithExpansion.test_setitem_scalars_no_indexc                 C   sL   d|j vsJ |d |d< d|j v sJ |d }|d }tj||dd d S )Nr   rC   Fr   )rY   r-   rs   )r.   r@   ru   r1   r!   r!   r"   test_setitem_newcol_tuple_keyn  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|| 	 s*J d S )	Nz1/1/2012z2/1/2012)startendr   rd   r   i  r   r%   )
r   r   r   rf   r   r   r:   r   isnanr   )r.   rY   r/   ttsr!   r!   r"   #test_frame_setitem_newcol_timestampz  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-   rh   rt   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*   rV   r0  rd   r   r9   r+   rL   r   r1  r!   r!   r"    test_setitem_frame_keep_ea_dtype  s   zBTestDataFrameSetItemWithExpansion.test_setitem_frame_keep_ea_dtypeN)r   r   r    rF  rH  rJ  rO  rP  rQ  rW  rX  rY  r!   r!   r!   r"   rC    s    	-		rC  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g ddd Zejde
ejeejgejdg dd	d
 Zejdejej	gejde
ejeejgejdg d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-   rh   r   r!   r!   r"   test_setitem_slice_position  s   
z7TestDataFrameSetItemSlicing.test_setitem_slice_positionr   r  r   rG   c                 C   sp   t g dgg dg|  g dd}|g d||dd < t g dgg dg|  g dd}t|| d S Nr   r(   rV   r  rL   rX   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   sx   t g dgg dg|  g dd}|g d|jttd|d < t g dgg dg|  g dd}t|| d S r^  )r   r   r   rf   r-   rh   )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 g dg dgg dg|  g dd}|g d||dd < t g dgg dg|d   g ddd	}t|| d S )
Nr   rz   r_  rL   rX   r   r%   r   rI  r   r`  r!   r!   r"   0test_setitem_slice_broadcasting_rhs_mixed_dtypes  s   "zLTestDataFrameSetItemSlicing.test_setitem_slice_broadcasting_rhs_mixed_dtypesN)r   r   r    r]  r[   r5  r6  r-   setitemr   r   r:   r>   r   pdra  rb  rc  r!   r!   r!   r"   rZ    s    	rZ  c                   @   s   e Zd Zdd Zdd ZdS )TestDataFrameSetItemCallablec                 C   sL   t g dg dd}g d|dd < t g dg dd}t|| d S )Nr   r  r   )r   r   r  r  c                 S   s   dS )NrC   r!   r   r!   r!   r"   r     s    zDTestDataFrameSetItemCallable.test_setitem_callable.<locals>.<lambda>r   r|   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.   rh  r0   r1   r!   r!   r"   test_setitem_other_callable  s
   z8TestDataFrameSetItemCallable.test_setitem_other_callableN)r   r   r    rg  ri  r!   r!   r!   r"   rf    s    rf  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$d% Zd&S )'TestDataFrameSetItemBooleanMask	mask_typec                 C   s   | t | d kS Nr(   )r:   absr0   r!   r!   r"   r     s    z(TestDataFrameSetItemBooleanMask.<lambda>c                 C   s   | t | d kjS rl  )r:   rm  rE   rn  r!   r!   r"   r     s    Z	dataframer>   )Zidsc                 C   s^   |  }||}|  }tj||< |j  }tj|t|< t||j|jd}t	|| d S )Nrl   )
r   r:   r   rE   r>   r   r'   rY   r-   rh   )r.   rk  r@   r0   r#  ru   r1   r!   r!   r"   test_setitem_boolean_mask  s   

z9TestDataFrameSetItemBooleanMask.test_setitem_boolean_maskz1Currently empty indexers are treated as all False)reasonr  c                 C   s~   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 d    d S 1 s8w   Y  d S )	Nr$   r%   rL   r   r9   z@Must have equal len keys and value when setting with an iterablerT   r)   )r   r   r[   r\   r]   r   )r.   r  r0   r   rb   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%   rL   Frd   r+   r)   r  )r   r   r-   rh   )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   sT   t g dg dd}| }|d dk}||| d|||< t|| d S )N)r%   rV   r(   r*   r  r   r$   r*   )r   r   rN  r-   rh   )r.   r   r0   r1   r#  r!   r!   r"   "test_setitem_boolean_mask_aligning  s
   zBTestDataFrameSetItemBooleanMask.test_setitem_boolean_mask_aligningc                 C   s   t g dddgd}tg d}g d}t||d|d}t g d	g d
d}tg d}g d}t||d|d}| }	|	d jg d
|	d< |d dk}
ddg||
< t||	 d S )N)r$   r$   r)   r)   r$   r$   r$   r$   r)   )r   )rP   rQ   rR   klr   r   )r%   r%   r(   r(   r%   r%   r%   )catsrE   r&   )r$   r$   r+   r+   r$   r$   r$   rL   )r%   r%   r*   r*   r%   r%   r%   rv  r+   r(   )r   r   r   r   r   Zset_categoriesr-   rh   )r.   Zcats2Zidx2Zvalues2Zexp_multi_rowZcatsfZidxfZvaluesfr0   Z	exp_fancyr#  r!   r!   r"   test_setitem_mask_categorical  s   z=TestDataFrameSetItemBooleanMask.test_setitem_mask_categoricalr3   r   r5   kwargsr'   r%   rY   rC   c                 C   s:   ||d< t di |}| }d|||k< t|| d S )Nr3   /   r!   r3  )r.   r3   rx  r0   r   r!   r!   r"   %test_setitem_empty_frame_with_boolean-  s
   zETestDataFrameSetItemBooleanMask.test_setitem_empty_frame_with_booleanc                 C   s   t td}g d}t||tjg dg dg dgtdd}t||tt|t|fd}t||tjg dg dg d	gtdd}d
||d| k< t	|| t
jtdd d
||jd d
 dk< W d    d S 1 spw   Y  d S )Nr*   rw   )        rD  r   )      ?r   g      @)r   g      @g      @r9   )r'   rY   r/   )r|  r   r  )r  r  r  r  r   zItem wrong lengthrT   r(   )r   rf   r   r:   r>   r   r(  r=   r-   rh   r[   r\   r]   r'   )r.   r   r   Zdf1r   r1   r!   r!   r"   test_setitem_boolean_indexing8  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*   rV   r$   rL   Fr+   rN   r)   re   r  r   r&   )r   r   r   r   r-   rh   )r.   r0   r1   r   r!   r!   r"   -test_loc_setitem_all_false_boolean_two_blocksO  s
   $zMTestDataFrameSetItemBooleanMask.test_loc_setitem_all_false_boolean_two_blocksc                 C   sh   t ddgddgg}t ddgddgg}t tddgdd	ttjdgdd	d
}d||< t|| d S )Nr  r(   r*   r[  r   TFbooleanr9   r-  )r   r   re  ZNAr-   rh   )r.   r0   r1   Zboolean_indexerr!   r!   r"   test_setitem_ea_boolean_maskW  s   z<TestDataFrameSetItemBooleanMask.test_setitem_ea_boolean_maskN)r   r   r    r8  skip_array_manager_invalid_testr[   r5  r6  ro  xfailr   r:   r>   r   rq  rr  r-   rd  r   rs  rw  rz  r}  r~  r  r!   r!   r!   r"   rj    s,    

	rj  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   sZ   d|j vsJ |d  }||d< tj|jdd|j df< t|dd  s+J d S )Nr   rC   re   rd   )rY   r   r:   r   r   Zget_locr   r   )r.   r@   r   r!   r!   r"   test_setitem_always_copyf  s
   z>TestDataFrameSetitemCopyViewSemantics.test_setitem_always_copyconsolidateTFc                 C   s   t g dg ddg dd}|ddtj |s4|r*|  t|jjdks)J n
t|jjdks4J |d j}d	|j	dd df< t
tjtjd	d	g|jdd
}t|d | |slt||j t||d jsnJ d S d S )N)g?g @g@gffffff@)gffffff@gffffff@gffffff@g333333 @)rm   rn   )r   r%   r(   r*   r&   r(   r{   r%   *   rS   )r   rp   r:   r   Z_consolidate_inplacer=   r   blocksZ_valuesr   r   r'   r-   rs   r   rE   Zshares_memory)r.   r  using_array_managerrE  r0   Zzvalsr1   r!   r!   r"   #test_setitem_partial_column_inplacen  s$   	
zITestDataFrameSetitemCopyViewSemantics.test_setitem_partial_column_inplacec                 C   sf   ddgd }t ddg|d}| }|d d  }d|d< t g dg|d	}t|| t|| d S )
NrC   rD   r(   r{  r   rl   r   )r{  r(   r{  re   rX   r3  )r.   r   r0   df_copydf_viewr1   r!   r!   r"   *test_setitem_duplicate_columns_not_inplace  s   zPTestDataFrameSetitemCopyViewSemantics.test_setitem_duplicate_columns_not_inplacerK  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 )NrC   rD   r   r%   rl   rX   r3  )r.   rK  r  r   r0   r  r  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 )NrC   rD   r   r%   rl   r   rX   r3  )r.   rK  r   r0   r  r  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)rp  strict)Zmarkszvalue, set_value)r%   re   )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&   r3  )r.   rK  	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}|s@|jD ]}d|| |< q"t|tdtdf dks>J d S t	
  |jD ]}d|| |< qHW d    n1 s[w   Y  t|tdtdf dkssJ d S )	Nc                 S   s   g | ]}d | qS )r+   r!   rL  r!   r!   r"   r     s    z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<listcomp>rd   c                    s   i | ]
}|t t qS r!   )r:   r\  r=   )r   colrM  r!   r"   
<dictcomp>  s    z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<dictcomp>r&   r   r%   )rf   r   r   r  rE   rY   r:   r   ro   r-   Zraises_chained_assignment_error)r.   rE  r0   rE   labelr!   r  r"   "test_setitem_column_update_inplace  s   
*

*zHTestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplaceN)r   r   r    r  r[   r5  r6  r  r  r:   r>   r  r  paramr  r   r  r8  r  r  r!   r!   r!   r"   r  e  sF    
$
(
	r  )4r   numpyr:   r[   Zpandas.util._test_decoratorsutilZ_test_decoratorsr8  Zpandas.core.dtypes.baser   r7  Zpandas.core.dtypes.commonr   r   r   Zpandas.core.dtypes.dtypesr   r   r	   r
   Zpandasre  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   r9  rC  rZ  rf  rj  r  r!   r!   r!   r"   <module>   s4    H     C* . 	