o
    Û­j€M  ã                   @   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
   új/var/www/html/CropPilot/venv/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(   Údtypeéc   Ú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 s•w   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 sÈw   Y  tjt|d�� dg|jd< W d   ƒ n1 såw   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 s�w   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 s€w   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*
