o
    _~#gM                     @   s   d dl Zd dlZd dlmZ d dlm  mZ d dl	Z
d dl	mZmZmZmZmZmZ d dlmZ dd ZG dd dZG dd	 d	Zejd
d Zdd Zdd Zdd ZdS )    N)SettingWithCopyError)	DataFrame
MultiIndexSeries
date_rangeisnanotnac                 C   s   | |ksJ d S N )abr
   r
   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/pandas/tests/indexing/multiindex/test_setitem.pyassert_equal   s   r   c                   @   s   e Zd ZedfddZdd Zdd Zd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d Zdd Zdd Zdd Zejd d!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, ZdS )-TestMultiIndexSetItemNc                 C   s.   ||j |< |j | }|d u r|}||| d S r	   )loc)selftargetindexersvalue
compare_fnexpectedresultr
   r
   r   check   s
   

zTestMultiIndexSetItem.checkc                 C   s   g d}t jtddtddgddgd}d\}}ttj||d	}| j|||fd
fdd td||d	}| j|||fd
fdd t||d	}| j|||fd
fdd td||d	}| j|||fd
ftddd d S )N)Awlr   xXdprofitr   d   P   timefirmnames)r      columnsindexr   )r   r   r   i   r&      )r   r   r   r   )r   from_productnparanger   nanr   array)r   colsr)   tndfr
   r
   r   test_setitem_multiindex   s,   

z-TestMultiIndexSetItem.test_setitem_multiindexc                 C   s   t tdddddtd}d|d< |d d	 d
k}ddg}|d |j||f< t dg dddgd}t|j||f | | j	|||f|d tj|d d S )N      z	A,B,C,D,E,r(   dtypec   Fr   r&   r   BCg     X@)r   r&      r)   r(   r   r   r   r   r   )
r   r-   r.   reshapesplitfloatr   tmassert_frame_equalr   )r   r4   row_selectioncol_selectionoutputr
   r
   r   test_setitem_multiindex2=   s    
z.TestMultiIndexSetItem.test_setitem_multiindex2c                 C   s&  t g dtddddg}t ddgtdd	ddg}ttjd
d||d}t ddgtddddg}t ddgtdd	ddg}ttjd
d||d}| j|||f|t	j
d ttjd
d||d}| j||td d d f|t	j
d | }| j||j|jf|t	j
|d d S )Nr   r=   r>   z
2015-01-01z
2015-04-01MS)freqfoobarz
2016-01-01z
2016-02-01r&   )   r?   r@   r   z
2015-02-01)r&   r&   )r   r   r   r   )r&   r?   rA   )r   r,   r   r   r-   randomdefault_rngfrom_arraysr   rE   rF   slicecopyr)   r(   )r   idxr1   r4   subidxsubcolsvalsrU   r
   r
   r   test_setitem_multiindex3P   sR   

z.TestMultiIndexSetItem.test_setitem_multiindex3c                 C   s   t g dt g dt dddg}tt jdd|g dd	 }|jd
g d }|	 }|jd
g  d9  < t
|jd
g | d}tjt|d |jd
  d9  < W d    d S 1 sdw   Y  d S )N)rO   rO   bazquxr\   rO   )onetwor]   r]   r^   r]   r      r*   r&   )r_   r+   rK   r@   rO   zAcannot align on a multi-index with out specifying the join levelsmatch)r-   r0   r.   r   rQ   rR   standard_normal
sort_indexr   rU   rE   rF   pytestraises	TypeError)r   arraysdf_origr   r4   msgr
   r
   r   test_multiindex_setitem   s&   "z-TestMultiIndexSetItem.test_multiindex_setitemc              
   C   s   t ddddddddi}tj|jg dd	|_| }|jg d
  d9  < tj}| }|j	|d d d d df d d f  d9  < t
|| | }|j	|d d d d df df  d9  < t
|| d S )Npricer&   r?   r*   r7   r   ))DECoalStock)rl   Gasrn   )rl   ElecDemand)FRro   rn   )rr   SolarSupIm)rr   Windrt   )SitComTyper$   )r   r*   r+   rn   )r   	from_dictr   from_tuplesr)   rU   ilocpd
IndexSlicer   rE   rF   )r   rh   r   rV   r4   r
   r
   r   test_multiindex_setitem2   s.   
,(z.TestMultiIndexSetItem.test_multiindex_setitem2c                 C   s   t tjdjddddddtdg dg d	gd
}tj|d< tddg}||j	d< t
|j	d t|ddgdd d S )Nr&   r7   
   	   sizer+   abcr?   r?      r   r   rP   r'   r                 ?)r?   r   r   )r)   name)r   r-   rQ   rR   integersrB   listr/   r0   r   rE   assert_series_equalr   )r   r4   arrr
   r
   r   test_multiindex_assignment   s   

$z0TestMultiIndexSetItem.test_multiindex_assignmentc           	      C   s.  t ddg}tt jdjddddddtd	g d
g dgt jd}|d j	d d j
}||jd< t|ddgddd}|jd }t|| |sSt||j
 tjtdd |d |jd< W d    n1 slw   Y  |jd }|d }t|| t| d|jd< W d    n1 sw   Y  tdddgddd}t|jd | d}tjt|d g d|jd< W d    n1 sw   Y  tjt|d dg|jd< W d    n1 sw   Y  t| dg|jddgf< W d    n	1 sw   Y  |jd dk sJ d S )Nr   r   r&   r7   r   r   r   r+   r   r   r   )r(   r)   r:   c)r?   r   r   int64)r)   r   r:   zitem of incompatible dtyper`   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r*   r&   r+   r   r?   )r-   r0   r   rQ   rR   r   rB   r   r   r{   valuesr   r   rE   r   assert_numpy_array_equalassert_produces_warningFutureWarningassert_cow_warningrd   re   
ValueErrorall)	r   using_copy_on_writewarn_copy_on_writer   r4   viewexpr   ri   r
   r
   r   'test_multiindex_assignment_single_dtype   sL   


z=TestMultiIndexSetItem.test_multiindex_assignment_single_dtypec           
      C   s   d}d}dd t tt| D }|d d }ttjdjd||fdtj	|d}|
| }|j|d d	 d
}tj|d< |D ]\}}t|jd }	|	|j|df< qDd S )Nr    r   c                 S   s   g | ]}d | qS )r   r
   ).0numr
   r
   r   
<listcomp>  s    z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>r7   r&   r   )r:   r(   r?   )levelnew_colr   )mapstrr-   r.   tolistr   rQ   rR   r   r   	set_indexrc   groupbyr/   shaper   )
r   NUM_ROWSNUM_COLS	col_names
index_colsr4   grpr   df2new_valsr
   r
   r   test_groupby_example  s    
z*TestMultiIndexSetItem.test_groupby_examplec                 C   s  |}|d }t | tj|d< W d    n1 sw   Y  t|jdd  s-J t|jd d  s:J t|jdd   sGJ t | tj|d< W d    n1 s\w   Y  t|jd sjJ t	j
tdd |d  W d    d S 1 sw   Y  d S )	Nr   )  r+   *   A   )r   r+   r   1   49r`   )rE   r   r-   r/   r   r   r   r   r{   rd   re   KeyError)r   /multiindex_year_month_day_dataframe_random_datar   ymdsr
   r
   r   test_series_setitem  s   
"z)TestMultiIndexSetItem.test_series_setitemc                 C   s  |}|j  }|j }||dk }||dk}t|| d||dk< d||dk< t|j| d||dk< d||dk< t|j| d||d d dk < t|d d |d d dk d t|j| t	j
tdd d||d < W d    d S 1 sw   Y  d S )Nr   r7   r&   zboolean values onlyr`   )TrU   r   whererE   rF   assert_almost_equalr-   putmaskrd   re   rf   )r    multiindex_dataframe_random_dataframer4   r   r   r   r
   r
   r   "test_frame_getitem_setitem_boolean-  s$   

""z8TestMultiIndexSetItem.test_frame_getitem_setitem_booleanc                 C   s
  ddgg dg}g dg dg}t ||d dgd}tdg d	i|d
}|jd d df }t|d | |j|jdd df }t|d dd | |jd d d d f }t|| |}d|jd d df< d|d< t|| d|jd d d d f< t|| d S )Nt1t2r   r   r   )r   r   r   r*   r*   )r   r*   r&   r   r*   id)codeslevelsr%   r   )r*   r&   r+      r   r)   r*   r+   r   )r   r   r   rE   r   r)   rF   )r   r   r   midxr4   r   r
   r
   r   %test_frame_getitem_setitem_multisliceF  s    z;TestMultiIndexSetItem.test_frame_getitem_setitem_multislicec                 C   s|   t tjddg dg dgd}| }|d |d< t|d |d  | }|d j|d< t|d |d  d S )Nr&   )r   r?   )r   r   r   r   )r   r*   r   r*   r(   r   r   )	r   r-   rQ   rR   rb   rU   rE   rF   r   )r   r4   cpr
   r
   r   test_frame_setitem_multi_column]  s   z5TestMultiIndexSetItem.test_frame_setitem_multi_columnc                 C   s   t g d}tg d|d}d|d< |d jdk sJ g d|d< |d |d< |d	 }|d
 }|d }tj||dd tj||dd |jd	ksMJ |jd
ksTJ |jdks[J d S )N)r   1r   2r=   r   )r*   r+   r7   r@   r   r   r   r*   r&   r+   r   r   r   F)check_names)r   rz   r   r   r   rE   r   r   )r   r(   r4   	sliced_a1	sliced_a2	sliced_b1r
   r
   r    test_frame_setitem_multi_column2l  s   z6TestMultiIndexSetItem.test_frame_setitem_multi_column2c                 C   sD   |}|d d }|j dg df }|j d g d }t|| d S )Nr7   )r   r*   r_   rK   )r   rE   r   )r   r   r   r4   r   r   r
   r
   r   #test_loc_getitem_tuple_plus_columns  s
   z9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsz.ignore:Setting a value on a view:FutureWarningc                 C   s   t g dddggg dg dgd}ttjdt|df|g dd	}t||}|j	d
d }|
|jdd  }t|| d|j	d
d< |j	d
d dkj sXJ d S )N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-   rQ   rR   rb   lenrE   get_objr   reindexr)   r   r   r   )r   frame_or_seriesr)   objresr   r
   r
   r   'test_loc_getitem_setitem_slice_integers  s    z=TestMultiIndexSetItem.test_loc_getitem_setitem_slice_integersc                 C   sd   |}|j }|d }|| k|d< t|d || k |jdgd}t|d || k d S )N)rN   r^   r   )r   medianrE   r   r   )r   r   r   dftr   	reindexedr
   r
   r   test_setitem_change_dtype  s   z/TestMultiIndexSetItem.test_setitem_change_dtypec                 C   s   |}|j g d }d|j|< |j| jdk sJ | }|d }t| d||< W d    n1 s6w   Y  |rEt|| d S |j|df dk sRJ d S )N)r*   r?   r7   r;   r=   a   )r)   r   r   r   rU   rE   r   rF   )r   r   r   r   r   subsetframe_originalcolr
   r
   r   test_set_column_scalar_with_loc  s   

z5TestMultiIndexSetItem.test_set_column_scalar_with_locc                 C   sh   t g dg dg dgtdd}|ddg}tdg}d	|j|d
f< |dd
 d	k s2J d S )N)r*   r*   r   r   )r*   r*   yY)r*   r&   zZABCDr   r   r=   r*   r*   _r>   )r   r   r   r   rz   r   xsr   )r   r4   mir
   r
   r   test_nonunique_assignment_1750  s   z4TestMultiIndexSetItem.test_nonunique_assignment_1750c                 C   sX   t g d}ttdd|td}|j }|d 	tj
|d< t|j| d S )N)r   r   r   r+   )r*   r+   r9   r   )r   rz   r   r-   r.   rB   objectr)   rU   astyper   rE   assert_index_equal)r   r1   r4   r)   r
   r
   r    test_astype_assignment_with_dups  s
   
z6TestMultiIndexSetItem.test_astype_assignment_with_dupsc                 C   sd   t jg dddgd}tg d|dgd}tjdd	d
d|jd< tdg di|d}t|| d S )N))r   r   )r   r   )r   r   l1l2r$   r   edatar)   r(   r;   e   r   )r:   )r   r   )r;   r*   r    r   )r   rz   r   r-   r.   r   rE   rF   )r   r)   r4   r   r
   r
   r   test_setitem_nonmonotonic  s   z/TestMultiIndexSetItem.test_setitem_nonmonotonic)__name__
__module____qualname__r   r   r5   rJ   rZ   td&skip_array_manager_not_yet_implementedrj   r~   r   r   r   r   r   r   r   r   r   rd   markfilterwarningsr   r   r   r   r   r  r
   r
   r
   r   r      s0    3
8


r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )"TestSetitemWithExpansionMultiIndexc                 C   s~   g dg dg dg}t t| }t|}ttjdd|d}|	 }|	 }g d|d< g d|d	< t
|| d S )
N)r   topr  routine1r  routine2) ODr  result1result2r  )r  wxwyr  r  r  r&   )r?   r_   r   )r*   r&   r+   r?   r   )r   r  r  )sortedzipr   rz   r   r-   rQ   rR   rb   rU   rE   rF   )r   rg   tuplesr)   r4   r   r   r
   r
   r   #test_setitem_new_column_mixed_depth  s   
zFTestSetitemWithExpansionMultiIndex.test_setitem_new_column_mixed_depthc                 C   sZ   t g d}tddgddgddgg|d}tddd	}||d
< |d
   s+J d S )N))1a2a)r  2b)r  2cr*   r&   r+   r?   r7   r_   r   )r   )r*   r&   new)r   rz   r   r   r   r   )r   mixr4   r   r
   r
   r   test_setitem_new_column_all_na  s
   zATestSetitemWithExpansionMultiIndex.test_setitem_new_column_all_nac                 C   s   t jdgg dd}tg dg|g dd}|jd |jd< t jddgg dd}tg dg dg|g dd}t|| d S )Nr   )i1i2i3r$   )r         rK   r   )r   r   r   )r   rz   r   r   rE   rF   )r   r   r4   mi_expectedr   r
   r
   r   )test_setitem_enlargement_keep_index_names  s   zLTestSetitemWithExpansionMultiIndex.test_setitem_enlargement_keep_index_namesN)r  r  r  r  r  r%  r
   r
   r
   r   r
    s    r
  c                 C   s   | j }|r2tjtdd d|d jd d < W d    n1 s w   Y  |d jdk s0J d S d|d jd d < |d jdk sFJ d S )Nz	read-onlyr`   r   rN   )r   rd   re   r   r   r   )r   r   r4   r
   r
   r   test_frame_setitem_view_direct  s   r&  c              	   C   s   | j }|s|r$t  d|d d< W d    d S 1 sw   Y  d S d}tjt|d+ t  d|d d< W d    n1 sCw   Y  W d    d S W d    d S 1 s[w   Y  d S Nr&   rN   r]   zAA value is trying to be set on a copy of a slice from a DataFramer`   )r   rE   raises_chained_assignment_errorrd   re   r   )r   r   r   r4   ri   r
   r
   r   test_frame_setitem_copy_raises  s   
"
"r)  c              	   C   s   | j }|}| }|s|r(t  d|d d< W d    n1 s"w   Y  n3d}tjt|d" t  d|d d< W d    n1 sGw   Y  W d    n1 sVw   Y  |}t|| d S r'  )r   rU   rE   r(  rd   re   r   rF   )r   r   r   r   r   r4   ri   r   r
   r
   r    test_frame_setitem_copy_no_write+  s"   

r*  c                  C   sh   t g dg ddddg d} td| jdd	}|  }||d
< |  }d|d
< t|| d S )Nr   )r+   r?   r7   r_   r   r   r   r   r   r   r   )r   r   r   r)   	droplevelrU   rE   rF   )r4   serr   r   r
   r
   r   %test_frame_setitem_partial_multiindex>  s   
r-  )numpyr-   rd   pandas.errorsr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr|   r   r   r   r   r   r   pandas._testing_testingrE   r   r   r
  skip_array_manager_invalid_testr&  r)  r*  r-  r
   r
   r
   r   <module>   s$        M*
