a
    dH                     @   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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S )    N)SettingWithCopyError)	DataFrame
MultiIndexSeries	Timestamp
date_rangeisnanotnac                 C   s   | |ksJ d S N )abr   r   v/var/www/html/stable-diffusion-webui/venv/lib/python3.9/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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dZprofitr   d   P   timeZ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   r3   Zrow_selectionZ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tdfdtdfg}t dtdfdtd	f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-01Z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>   r@   )r   r+   r   r   r,   randomdefault_rngfrom_tuplesr   r   rD   rE   slicecopyr(   r'   )r   idxr0   r3   ZsubidxZsubcolsvalsrQ   r   r   r   test_setitem_multiindex3Q   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    n1 s0    Y  d S )N)rK   rK   ZbazquxrU   rK   )onetworV   rV   rW   rV   r      r)   r%   )rX   r*   rH   r?   rK   zAcannot align on a multi-index with out specifying the join levelsmatch)r,   r/   r-   r   rM   rN   standard_normal
sort_indexr   rQ   rD   rE   pytestraises	TypeError)r   arraysdf_origr   r3   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 )NZpricer%   r>   r)   r6   r   ))DEZCoalStock)rd   Gasre   )rd   ZElecZDemand)FRrf   re   )rg   ZSolarSupIm)rg   ZWindrh   )ZSitZComTyper#   )r   r%   r*   re   )r   	from_dictr   rO   r(   rQ   ilocpdZ
IndexSlicer   rD   rE   )r   ra   r   rR   r3   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%   r6   
   	   sizer*   abcr>   r>      rt   rn   rL   r&   r                 ?)r>   r   rt   )r(   name)r   r,   rM   rN   integersrA   listr.   r/   r   rD   assert_series_equalr   )r   r3   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|| |st||j
 tjtdd |d |jd< W d    n1 s0    Y  |jd }|d }t|| d|jd< tdddgddd}t|jd | d}tjt|d g d|jd< W d    n1 sh0    Y  tjt|d dg|jd< W d    n1 s0    Y  dg|jddgf< |jd dk sJ d S )Nrv   rw   r%   r6   rn   ro   rp   r*   rr   rs   ru   )r'   r(   r9   c)r>   r~   rt   int64)r(   rx   r9   zitem of incompatible dtyperY   g      ?float64z@Must have equal len keys and value when setting with an iterable)r   r)   r%   r*   r   r>   )r,   r/   r   rM   rN   ry   rA   rz   r   rk   valuesr   r   rD   r{   Zassert_numpy_array_equalZassert_produces_warningFutureWarningr]   r^   
ValueErrorall)r   using_copy_on_writer|   r3   viewexpr   rb   r   r   r   'test_multiindex_assignment_single_dtype   s>    

,

.,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< qd S )Nr    rn   c                 S   s   g | ]}d | qS )r   r   ).0numr   r   r   
<listcomp>      z>TestMultiIndexSetItem.test_groupby_example.<locals>.<listcomp>r6   r%   rp   )r9   r'   r>   )levelZnew_colr   )mapstrr,   r-   tolistr   rM   rN   ry   r   	set_indexr\   groupbyr.   shaper   )
r   ZNUM_ROWSZNUM_COLSZ	col_namesZ
index_colsr3   grprx   Zdf2new_valsr   r   r   test_groupby_example   s    
z*TestMultiIndexSetItem.test_groupby_examplec                 C   s   |}|d }t j|d< t|jdd  s0J t|jd d  sJJ t|jdd   sdJ t j|d< t|jd sJ tjt	dd |d  W d    n1 s0    Y  d S )	Nr   )  r*   *   A   )r   r*   rn   1   Z49rY   )
r,   r.   r   r   r   r	   rk   r]   r^   KeyError)r   /multiindex_year_month_day_dataframe_random_data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    n1 s0    Y  d S )Nr   r6   r%   zboolean values onlyrY   )TrQ   r   whererD   rE   Zassert_almost_equalr,   Zputmaskr]   r^   r_   )r    multiindex_dataframe_random_dataframer3   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*      rt   r(   r)   r*   rn   )r   r   r   rD   r{   r(   rE   )r   r   r   Zmidxr3   r   r   r   r   %test_frame_getitem_setitem_multislice=  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%   )rn   r>   )r   r   r   r   )r   r)   r   r)   r'   r   r   )	r   r,   rM   rN   r[   rQ   rD   rE   r   )r   r3   cpr   r   r   test_frame_setitem_multi_columnT  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sJ |jd
ksJ |jdksJ d S )N)r   1r   2r<   r   )r)   r*   r6   r?   rv   r   r   r)   r%   r*   r   r   r   F)Zcheck_names)r   rO   r   r   r   rD   r{   rx   )r   r'   r3   Z	sliced_a1Z	sliced_a2Z	sliced_b1r   r   r    test_frame_setitem_multi_column2c  s    z6TestMultiIndexSetItem.test_frame_setitem_multi_column2c                 C   sD   |}|d d }|j dg df }|j d g d }t|| d S )Nr6   )r   r)   rX   rH   )r   rD   r{   )r   r   r   r3   r   r   r   r   r   #test_loc_getitem_tuple_plus_columnsz  s
    z9TestMultiIndexSetItem.test_loc_getitem_tuple_plus_columnsc                 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 sJ 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,   rM   rN   r[   lenrD   get_objr   reindexr(   r   r   r   )r   Z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)rJ   rW   r   )r   ZmedianrD   r{   r   )r   r   r   Zdftr   Z	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 s4J | }|d }d||< |r^t|| n|j|df dk sxJ d S )N)r)   r>   r6   r:   r<   a   )r(   r   r   r   rQ   rD   rE   )r   r   r   r   ZsubsetZ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 sdJ d S )N)r)   r)   r   r   )r)   r)   yY)r)   r%   zZABCDr   r   r<   r)   r)   _r=   )r   rz   r   r   rO   r   xsr   )r   r3   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*   r8   r   )r   rO   r   r,   r-   rA   objectr(   rQ   Zastyper   rD   Zassert_index_equal)r   r0   r3   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   )r9   )r   r   )r:   r)   r    r   )r   rO   r   r,   r-   r   rD   rE   )r   r(   r3   r   r   r   r   test_setitem_nonmonotonic  s    z/TestMultiIndexSetItem.test_setitem_nonmonotonic)__name__
__module____qualname__r   r   r4   rG   rT   tdZ&skip_array_manager_not_yet_implementedrc   rm   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s,   3
2
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   Zroutine2) ODr   result1Zresult2r   )r   ZwxZwyr   r   r   r%   )r>   rX   r   )r)   r%   r*   r>   r   )r   r   r   )sortedzipr   rO   r   r,   rM   rN   r[   rQ   rD   rE   )r   r`   Ztuplesr(   r3   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
   sVJ d S )N))1aZ2a)r   Z2b)r   Z2cr)   r%   r*   r>   r6   rX   r   )r   )r)   r%   new)r   rO   r   r   r   r   )r   Zmixr3   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i2Zi3r#   )rn         rH   r   )r   r   r   )r   rO   r   r   rD   rE   )r   r   r3   Z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 }|rbtjtdd" d|d jd d < W d    n1 s@0    Y  |d jdk sJ n(d|d jd d < |d jdk sJ d S )Nz	read-onlyrY   r   rJ   )r   r]   r^   r   r   r   )r   r   r3   r   r   r   test_frame_setitem_view_direct   s    0r   c                 C   s   | j }|r@t  d|d d< W d    q~1 s40    Y  n>d}tjt|d d|d d< W d    n1 st0    Y  d S Nr%   rJ   rV   zAA value is trying to be set on a copy of a slice from a DataFramerY   )r   rD   raises_chained_assignment_errorr]   r^   r   )r   r   r3   rb   r   r   r   test_frame_setitem_copy_raises  s    
,r   c                 C   s   | j }|}| }|rLt  d|d d< W d    q1 s@0    Y  n>d}tjt|d d|d d< W d    n1 s0    Y  |}t|| d S r   )r   rQ   rD   r   r]   r^   r   rE   )r   r   r   r   r3   rb   r   r   r   r    test_frame_setitem_copy_no_write  s    
,*r   )numpyr,   r]   Zpandas.errorsr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasrl   r   r   r   r   r   r   r	   Zpandas._testingZ_testingrD   r   r   r   Zskip_array_manager_invalid_testr   r   r   r   r   r   r   <module>   s    $	   A*
