o
    �¨ÊhêÈ  ã                   @   sH  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 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ƒZ.G dd„ dƒZ/G dd„ dƒZ0G dd„ dƒZ1dd„ Z2dd„ Z3dS )é    )ÚdatetimeN)Ú	_registry)Ú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                   @   sp  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(d+�fg¡d,d-„ ƒZej d.d/d0„ ejD ƒd1d2g ¡d3d4„ ƒZd5d6„ Zej d7g d8¢¡d9d:„ ƒZej d7g d8¢¡d;d<„ ƒZ d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$ej dg dE¢¡dFdG„ ƒZ%ej dHdIdIgg¡dJdK„ ƒZ&dLdM„ Z'dNdO„ Z(ej dPg dQ¢g dR¢g¡dSdT„ ƒZ)dUdV„ Z*dWdX„ Z+dYdZ„ Z,d[d\„ Z-d]d^„ Z.ej d_g d`¢g da¢dbfg dc¢g da¢dbfg dd¢g da¢dbfg de¢g df¢dgfg dh¢g di¢djfg dk¢g di¢dlfg¡dmdn„ ƒZ/dodp„ Z0ej dqg dr¢dse1g dt¢g dt¢g dt¢gg dr¢du�fdvdwgdsdxge1g dy¢g dz¢g d{¢gg dr¢du�fg d|¢e2j3g d}¢e2j4d~�e1g d}¢g d}¢g d}¢gg d|¢du�fg d¢g d}¢g d€¢g d�¢ge1g d‚¢g dƒ¢g d„¢gg dr¢du�fg d…¢e2j3g d}¢g d€¢g d�¢ge2j4d~�e1g d†¢g d‡¢g dˆ¢gg dr¢du�fd‰dvge1dsdxgdŠd‹gdŒd�ggd‰dvgdu�e1g dŽ¢g d�¢g d�¢gg d|¢du�fg¡d‘d’„ ƒZ5d“d”„ Z6d•d–„ Z7d—d˜„ Z8d™dš„ Z9d›dœ„ Z:d�dž„ Z;e<j=dŸd „ ƒZ>ej d¡i d¢d£ig¡d¤d¥„ ƒZ?d¦d§„ Z@d¨d©„ ZAdªd«„ ZBd¬d­„ ZCd®d¯„ ZDd°d±„ ZEd²S )³Ú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   úZ/var/www/html/env/lib/python3.10/site-packages/pandas/tests/frame/indexing/test_setitem.pyÚmystring-   s    r!   z2020-10-22 01:21:00+00:00Úaé   ©Úindexé   Úbé   Úc)Ústrr   r
   ÚtmÚassert_equal)Úselfr!   Údatar%   ÚdfÚexpectedr   r   r    Útest_setitem_str_subclass+   s   "z.TestDataFrameSetItem.test_setitem_str_subclassÚdtype)Úint32Úint64Úuint32Úuint64Úfloat32Úfloat64c                 C   sD   t j d¡ ddt|ƒ¡}t j||d�||< || jj|ks J ‚d S )Nr&   r#   é
   ©r2   )ÚnpÚrandomÚdefault_rngÚintegersÚlenÚarrayr2   Úname)r-   r2   Úfloat_frameÚarrr   r   r    Útest_setitem_dtype8   s   z'TestDataFrameSetItem.test_setitem_dtypec                 C   s@   t j d¡ t|ƒdf¡}||ddg< t |ddg j|¡ d S )Nr&   ÚAÚB)r;   r<   r=   Ústandard_normalr?   r+   Úassert_almost_equalÚvalues)r-   rB   r.   r   r   r    Útest_setitem_list_not_dataframeB   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d¡g d¢d�}d}tjt|d�� | 
ddg¡ ¡ |d< W d   ƒ n1 sow   Y  d}tjt|d�� t ƒ |d< W d   ƒ d S 1 sŽw   Y  d S )N©r#   r&   r(   )ÚdÚeÚf)ÚbarÚbaz©r"   r'   r)   Úfoo©rA   r$   )ÚgÚhÚiÚj)r"   r'   r)   r"   Úfiz©r%   rA   z/cannot reindex on an axis with duplicate labels©ÚmatchÚnewcolr&   r   )é   r]   ©r"   r'   r)   rL   ©ÚcolumnszDCannot set a DataFrame with multiple columns to the single column grr'   r)   Úgrz7Cannot set a DataFrame without columns to the column gr)r
   r   r   ÚpytestÚraisesÚ
ValueErrorr;   r<   r=   r>   ÚgroupbyÚcount)r-   r/   ÚserÚmsgr   r   r    Útest_setitem_error_msmgsG   s2   þý
ÿþÿ"ÿz-TestDataFrameSetItem.test_setitem_error_msmgsc                 C   sn   d}d}t t|ƒd�}tj d¡ |¡}t|ƒD ]}|||< qt t ||¡ ||¡t|ƒd�}t 	||¡ d S )Nr9   é   r$   r&   )
r
   Úranger;   r<   r=   rG   ÚrepeatÚreshaper+   Úassert_frame_equal)r-   ÚNÚKr/   Únew_colrV   r0   r   r   r    Útest_setitem_benchmarke   s   
 z+TestDataFrameSetItem.test_setitem_benchmarkc                 C   sF  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 )Nr&   ©rj   r(   rj   )r)   r'   r"   ©r%   r`   r   rR   r"   rO   r)   r7   Úxr8   )rR   r)   rO   r'   r"   ru   r$   r]   r3   Úy)rR   r)   rO   r'   r"   ru   rv   )r
   r;   r<   r=   rG   ÚarangeÚinsertÚastypeÚdtypesr   r2   r+   Úassert_series_equal©r-   r/   Úresultr0   r   r   r    Útest_setitem_different_dtypep   s8   ýþþ*þ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©rE   rF   ÚCr$   ÚX©ru   rv   Úz)r.   r%   )r
   r%   r+   rn   ©r-   r/   Ú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:50Ú10s)Úfreqr$   rE   úM8[ns])r   r
   r;   rw   r?   r2   )r-   Úrngr/   r   r   r    Ú%test_setitem_dt64_index_empty_columns�   s   z:TestDataFrameSetItem.test_setitem_dt64_index_empty_columnsc                 C   sX   t tdƒd�}tddd� d¡|d< t tddd�ggd g d¢dgd	�}t ||¡ d S )
Nr(   r$   Ú20130101ÚUTC©ÚtzÚnsÚnow©r   r#   r&   rt   )r
   rk   r   Úas_unitr+   rn   ©r-   r/   r0   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&   rQ   r9   rO   r_   zLength of values \(z$\) does not match length of index \(z\)rZ   rR   )r	   Ú
from_codesr
   rk   r?   rb   rc   rd   )r-   Úcatr/   rh   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 )NrQ   ©ç      ð?ç       @ç      @©Úc_1Ún_1©r   r   r#   Ú
new_columnrS   )r
   r   r   r+   r{   )r-   r/   Úsp_arrayr0   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 )
NrQ   r™   r�   r    )r&   r#   r   r$   r¡   )r#   r   r   rS   )r
   r   r   r+   r{   )r-   r/   Ú	sp_seriesr0   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+   rn   )r-   r.   r}   r0   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’   r4   r:   rK   r5   r^   r   )r
   r   ÚfloatÚ	enumerateÚintr;   r5   ÚlocÚshaper+   rn   )r-   r0   r/   Úidxr'   r   r   r    Ú"test_setitem_dict_preserves_dtypesÕ   s*   üÿ



üÿüz7TestDataFrameSetItem.test_setitem_dict_preserves_dtypesz	obj,dtypez2020-01ÚMr   rj   )ÚleftÚrightr4   r±   z
2011-01-01z
US/EasternrŽ   Ús)Úunitr�   c                 C   sH   t g d¢t|gd |d�dœƒ}t dg d¢iƒ}||d< t ||¡ d S )NrK   r(   r:   )r­   Úobjr­   r´   ©r
   r   r+   rn   )r-   r´   r2   r0   r/   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   )Ú
isinstancerA   Úproperty)Ú.0r2   r   r   r    Ú
<listcomp>  s    
üÿzTestDataFrameSetItem.<listcomp>zdatetime64[ns, UTC]ú	period[D]c                 C   s8   t dgƒ}dg||< t ddg|dgiƒ}t ||¡ d S )Nr   r#   ©r
   r+   rn   )r-   r·   r}   r0   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#   Únatúdatetime64[ns]r:   Únew)r   rÁ   údatetime64[s]r   )
r;   r@   r   Úto_framer
   r+   rn   r{   Úassert_numpy_array_equalÚto_numpy)r-   Údata_nsr}   r0   Ú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_unitsr³   )rU   Úmr²   Ú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 )	Néd   úM8[ú]r:   )r²   rÊ   rÂ   Úintsr$   ©	r;   r2   rw   r4   Úviewry   r
   rI   Úall©r-   r³   Únr2   ÚvalsÚex_valsr/   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Î   r:   rÀ   rÏ   r$   r‰   ÚdatesrÐ   rÓ   r   r   r    Ú6test_frame_setitem_existing_datetime64_col_other_units8  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}|s[|d u sZt	|ƒt	|ƒksZJ ‚n
t	|ƒt	|ƒkseJ ‚| 
¡ }	t|	jd< t|	jd	< |	d }
t t|
ƒtg d
¢dd�¡ t |	j|j¡ d S )NrF   rR   r€   rS   r¦   r#   r&   )r#   r#   ©r#   r&   )TFT)Úrenamer+   r{   r   Ú_mgrÚarraysÚassert_extension_array_equalÚ_ndarrayÚbaseÚidÚcopyr   Úilocr   rz   )r-   Útimezone_frameÚusing_copy_on_writer/   r­   Úv1Úv2Úv1baseÚv2baseÚdf2r}   r   r   r    Útest_setitem_dt64tzI  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s4J ‚| 
¡  d¡}t|jtƒsCJ ‚t |j|¡ d S )Nz1/1/2000rj   r%   )ÚperiodsrA   r&   rs   r$   r   F©Úcheck_names)r   r
   r;   r<   r=   rG   r   r+   Úassert_index_equalrA   Úreset_indexÚ	set_indexr¸   r%   r   )r-   rŠ   r/   Úrsr   r   r    Útest_setitem_periodindexk  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ÚthreerK   ©r"   r'   r#   r(   rj   r)   rL   ©r#   r(   rj   ©r#   r#   r#   r^   )r
   r;   r@   ry   r2   r+   rn   ©r-   r/   rC   r0   r   r   r    Ú'test_setitem_complete_column_with_arrayy  s   üÿz<TestDataFrameSetItem.test_setitem_complete_column_with_arrayc                 C   sL   t ddddd�}t|ƒ}tdg d¢idd�}|j|jd d …< t ||¡ d S )	Nz
2016-01-01é	   r¦   rE   )rì   rˆ   rA   )	r   r   r   r   r   r   r   r   r   r¼   r:   )r   r
   Ú	_na_valuerã   r+   rn   )r-   rŠ   r}   r0   r   r   r    Útest_setitem_period_d_dtypeŒ  s   
þz0TestDataFrameSetItem.test_setitem_period_d_dtype)Úf8Úi8Úu8c                 C   sp   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 )NrK   r:   r&   )r(   r(   r_   rQ   F)r#   r&   r(   Frÿ   )rš   r›   rœ   F)
r   r
   r;   r<   r=   rG   Úobjectr+   rï   r`   )r-   r2   Úcolsr/   Úexpected_colsr   r   r    Ú$test_setitem_bool_with_numeric_index—  s   z9TestDataFrameSetItem.test_setitem_bool_with_numeric_indexÚindexerrF   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 )NrE   rF   r_   r#   r&   ©rE   rF   r  )r
   r;   Únanry   r+   rn   )r-   r  r/   Úotherr0   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 )Nr   r&   r(   rt   )r   r(   )r   rE   )r#   r]   rF   ©r&   rj   r€   )r   r#   r&   r(   r]   rj   r#   r]   rj   r  r:   )
r
   rk   r«   r;   r  ry   r4   r`   r+   rn   )r-   r  r/   r0   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 )	Nr   r&   r(   rt   ú"Columns must be same length as keyrZ   )r   r(   rj   rE   )r
   rk   rb   rc   rd   rã   )r-   r  r/   rê   r   r   r    Ú2test_setitem_frame_duplicate_columns_size_mismatchÆ  s   ÿ"ÿzGTestDataFrameSetItem.test_setitem_frame_duplicate_columns_size_mismatchr  rQ   )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 )
NrK   r_   r9   é   rL   rM   r  rZ   r"   ©r
   rb   rc   rd   )r-   r  r/   Úrhsrh   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 )
NrK   ©r"   r'   r'   r_   ©r9   r  é   r"   r'   r)   )r9   r  r  r9   )r"   r'   r'   r)   r½   ©r-   r/   r  r0   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 )
NrK   r  r_   r9   r  r"   r'   r  rZ   r  )r-   r/   r  rh   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tƒsAJ ‚t|d jjjtƒsMJ ‚t|d jtƒsWJ ‚t|d jjjtƒscJ ‚t|d jtƒsmJ ‚t|d jtƒswJ ‚t|d ƒsJ ‚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 )NrE   r9   rj   rF   r€   r¦   ÚEÚFc                 S   s   t t | ¡ƒS ©N)r   r;   r@   ©ru   r   r   r    Ú<lambda>  s    z=TestDataFrameSetItem.test_setitem_intervals.<locals>.<lambda>Frí   )r
   rk   r   r¸   r—   Ú
categoriesr   r;   r@   rI   ry   r  r2   r   r   r   r+   rï   rF   r€   r¦   r{   )r-   r/   rg   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 )NrU   ÚmnÚcategoryrÔ   rÉ   )
r
   r   Úlistry   rU   r—   Úreorder_categoriesr	   r+   rn   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­   rS   rE   ©r`   r%   )r   r
   r+   rï   r%   )r-   r%   r}   r0   r   r   r    Ú test_setitem_with_empty_listlike#  s
   z5TestDataFrameSetItem.test_setitem_with_empty_listlikezcols, values, expected)r€   r¦   r¦   r"   ©r#   r&   r(   r]   r]   )r¦   r€   r¦   r"   )r€   rF   rF   r"   )r€   rF   r"   rK   r(   )rF   r€   r"   )r(   r&   r#   r#   )r€   r"   rF   r&   c                 C   s8   t |g|d�}|d |d< |d jd }||ksJ ‚d S )Nr_   r"   r   )r
   rI   )r-   r  rI   r0   r/   r}   r   r   r    Útest_setitem_same_column+  s   z-TestDataFrameSetItem.test_setitem_same_columnc                 C   s8  g d¢ddgg d¢f}t  |¡}tddd�}tj d¡ d	d
t|ƒt|ƒf¡}t|||d�}|j	j
 ¡ |d d d … }}tj d¡ |¡ |d j|d d d…f |d< t |d |d ¡ tj d¡ |¡ |d j||f |d< t |d |d ¡ tj d¡ |¡ |d j||f |d< t |d |d ¡ d S )N)ÚjimÚjoeÚjolieÚfirstÚlast)r°   Úcenterr±   Ú20141006é   )rì   r&   r#   iè  r%  éÿÿÿÿr+  r)  )r+  r-  )r*  r,  )r+  r,  )r*  r-  )r   Úfrom_productr   r;   r<   r=   r>   r?   r
   r%   rI   râ   Úshuffler«   r+   rn   )r-   Úitr  r%   rÕ   r/   rV   rW   r   r   r    Útest_setitem_multi_index=  s   
"z-TestDataFrameSetItem.test_setitem_multi_indexzcolumns,box,expected)rE   rF   r€   r¦   é   )r6  r6  r6  r6  r_   r€   r¦   é   )r#   r&   r6  r7  )r(   r]   r6  r7  ©rj   é   r6  r7  r   )r6  r7  rü   r:   )rF   r€   r¦   r  )é   é   é   )r#   r6  r7  rü   )r(   r9   r  r  )rj   r:  r;  r<  )r€   rE   r¦   )r7  r&   r6  rü   )r  r]   r9   r  )r;  r9  r:  r<  rE   rü   r9   r  r  )r6  r&   r7  )rü   r]   r9   )r  r9  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(   r]   rj   r9  rE   rF   r_   r½   )r-   r`   Úboxr0   r/   r   r   r    Ú!test_setitem_list_missing_columnsU  s   "3z6TestDataFrameSetItem.test_setitem_list_missing_columnsc                 C   sF   t t|d |d ƒƒ}||d< |d }t||jdd�}t ||¡ d S )NrE   rF   ÚtuplesrY   )r"  Úzipr   r%   r+   r{   )r-   rB   r?  r}   r0   r   r   r    Útest_setitem_list_of_tuplesŒ  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 )
NrK   ©r]   rj   r9  r÷   c                 s   ó   � | ]}|V  qd S r  r   ©rº   ru   r   r   r    Ú	<genexpr>—  ó   € zCTestDataFrameSetItem.test_setitem_iloc_generator.<locals>.<genexpr>rÚ   r#   rù   ©r]   r#   r#   ©r
   rã   r+   rn   ©r-   r/   r  r0   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 )	NrK   rB  r÷   c                 s   rC  r  r   rD  r   r   r    rE  ž  rF  zSTestDataFrameSetItem.test_setitem_iloc_two_dimensional_generator.<locals>.<genexpr>rÚ   r#   rG  rH  rI  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á   ÚS24)rA   r2   r$   r"   )rA   r%   r2   r'   ÚS64r)   rL   Úabcd)
r   r
   r;   r5   Úuint8rz   r  r"  r+   r{   )r-   r%   r/   r}   r0   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(   r]   rj   r9  r÷   r4   ÚInt64Fr$   r"   r'   )r
   ry   r   r%   r«   r+   rn   )r-   r}   Úmaskr0   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&   rQ  r:   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 )Nr9   )únp-arrayú	np-matrixr$   )r9   r#   rU  rV  )	r
   r;   Úonesrw   r+   Úassert_produces_warningÚPendingDeprecationWarningÚmatrixrn   )r-   r0   r"   r/   r   r   r    Útest_setitem_npmatrix_2dÄ  s   ÿ
ÿz-TestDataFrameSetItem.test_setitem_npmatrix_2drÕ   rL   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(   r]   r÷   rÌ   éÈ   )r#   r   r"   rj   r9  ©r   r#   r)   rM   )r)   rM   )r
   r«   r;   r  r+   rn   )r-   rÕ   r/   r0   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&   r9   r  r$   r   )r
   r;   r  r+   rn   Ú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(   r]   ©r`   r.   r9   r  r:   r÷   rµ   ©r-   Úany_numeric_ea_dtyper/   r0   r   r   r    Ú*test_setitem_frame_overwrite_with_ea_dtypeí  s   þÿz?TestDataFrameSetItem.test_setitem_frame_overwrite_with_ea_dtypec                 C   sˆ   t  d¡ tdddgiƒ}t dd¡� tddgtd�|d< W d   ƒ n1 s(w   Y  tddgtddgtd�d	œƒ}t 	||¡ d S )
NÚpyarrowr"   r#   r&   zfuture.infer_stringTr'   r:   r÷   )
rb   Úimportorskipr
   ÚpdÚoption_contextr   r  r   r+   rn   r”   r   r   r    Ú'test_setitem_string_option_object_indexù  s   
ÿz<TestDataFrameSetItem.test_setitem_string_option_object_indexc                 C   s8   t ddgiƒ}| ¡ }d}||g ||< t ||¡ d S )Nr÷   r9   ©r
   râ   r+   rn   )r-   r/   r0   Úcol_namer   r   r    Útest_setitem_frame_midx_columns  s
   z4TestDataFrameSetItem.test_setitem_frame_midx_columnsc                 C   sœ   t dtjdgdd�iƒ}tdgdd�|jd d …df< t dtjdgdd�iƒ}t ||¡ t dtjdgdd�iƒ}tdgdd�|jd d …df< t ||¡ d S )Nr"   r9   r   r:   r  rQ  r   )r
   r;   r@   r   r«   r+   rn   rã   r”   r   r   r    Útest_loc_setitem_ea_dtype
  s   z.TestDataFrameSetItem.test_loc_setitem_ea_dtypec                 C   sÔ   t tdƒgtd�}tddgiƒ}tjtdd�� ||jd d …df< W d   ƒ n1 s+w   Y  tjtdd�� ||d< W d   ƒ n1 sFw   Y  tdgttdƒgd	d�ttdƒgd	d�d
œƒ}t 	||¡ d S )Nz
2019-12-31r:   r"   r#   ÚinferrZ   r'   r)   rÀ   rQ   )
r   r   r  r
   r+   rX  ÚFutureWarningr«   r   rn   )r-   r­   r/   r0   r   r   r    Útest_setitem_object_inferring  s   ÿ
ÿýÿz2TestDataFrameSetItem.test_setitem_object_inferringN)Fr   r   r   r1   rb   ÚmarkÚparametrizerD   rJ   ri   rr   r~   r†   r‹   r•   r˜   r£   r¥   r§   r®   r   r   r   r   r   r   r¶   Úea_registryrz   r¾   rÈ   r×   rÙ   rë   ró   rû   rþ   r  r
  r  r  r  r  r  r  r$  r&  r(  r5  r
   r;   r@   r4   r>  rA  rJ  rK  rP  rS  rT  ÚtdÚ&skip_array_manager_not_yet_implementedr[  r^  r`  rd  ri  rl  rm  rp  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:00rF   rS   z
US/Pacific)r   Útz_localize)r-   Ú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  r:   rF   rS   )r   r;   r@   Útolistr2   )r-   r­   r0   r   r   r    r0   /  s   z!TestSetitemTZAwareValues.expectedc                 C   sp   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&   r#   rE   r_   rF   r   r#   r$   r�   rS   )r
   r;   r<   r=   rG   Ú	to_seriesÚdtÚ
tz_convertr   rw  r+   r{   )r-   r­   r0   r/   r}   Úcompr   r   r    Útest_setitem_dt64series5  s   z0TestSetitemTZAwareValues.test_setitem_dt64seriesc                 C   s<   t tj d¡ d¡dgd�}||d< |d }t ||¡ d S ©Nr&   rz  rE   r_   rF   )r
   r;   r<   r=   rG   r+   r{   ©r-   r­   r0   r/   r}   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=   rG   Úto_pydatetimer+   r{   r�  r   r   r    Ú.test_setitem_object_array_of_tzaware_datetimesH  s   zGTestSetitemTZAwareValues.test_setitem_object_array_of_tzaware_datetimesN)
r   r   r   rb   Úfixturer­   r0   r  r‚  r„  r   r   r   r    rv  (  s    


	rv  c                   @   s\   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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< t |¡� d|jd< W d   ƒ n1 s6w   Y  |rFtg d¢dd�}ntg d¢dd�}t ||¡ d S )NrK   )r]   r]   r9  r÷   r"   gš™™™™™¹?gš™™™™™É?g333333Ó?gš™™™™™Ù?ç      à?r)   rL   rÌ   )r   r   rS   )rÌ   r&   r(   )r
   r;   r@   r+   Úassert_cow_warningrã   r   r{   )r-   rå   Úwarn_copy_on_writer/   rg   r0   r   r   r    Útest_setitem_listlike_viewsS  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(   r]   rj   r9  ú0 - Name)r#   r&   rj   )r(   r]   r9  )r   r#   r‹  r_   r½   r”   r   r   r    Ú.test_setitem_string_column_numpy_dtype_raisingg  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   ©r`   r2   r&   r"   r   r#   r_   )r
   r"  rk   r«   r;   r  r+   rn   )r-   rå   r/   r0   r   r   r    Ú'test_setitem_empty_df_duplicate_columnsn  s    ÿzITestDataFrameSetItemWithExpansion.test_setitem_empty_df_duplicate_columnsc           	      C   s2  t dtjtj d¡ 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< |j}tt d¡t|dd�gddgd�}t ||¡ ||d< |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&   r   i'  rÌ   r3   r:   c                 S   s   g | ]}|› d |d › �‘qS )z - ió  r   ©rº   rV   r   r   r    r»   €  s    zcTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtype.<locals>.<listcomp>iô  T)ÚbyÚ	ascendingi)  F)r±   Úlabelsr¦   )r  Úorderedr$   r  )r�  r¦   r  )r
   r;   r@   r<   r=   r>   r	   rk   Úsort_valuesr   r�  rI   rz   r   r2   r   r+   r{   Úassert_categorical_equalrÜ   rA   Ú
sort_index)	r-   r/   r“  rg   r—   r}   r0   Úresult1Úresult2r   r   r    Ú-test_setitem_with_expansion_categorical_dtypew  s@   ÿÿÿþ

ýúzOTestDataFrameSetItemWithExpansion.test_setitem_with_expansion_categorical_dtypec                 C   s2   t ƒ }d|d< t dgd� tj¡}t ||¡ d S )Nr#   rR   r_   )r
   ry   r;   r4   r+   rn   r”   r   r   r    Útest_setitem_scalars_no_index¤  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  rE   Frí   )r`   r+   r{   )r-   rB   r}   r0   r   r   r    Útest_setitem_newcol_tuple_key«  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ˆ   r9   r%  iÜ  r  r#   )
r   r   r
   rk   r   r   r;   r  ÚisnanrÒ   )r-   r`   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+   rn   r|   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(   r]   ra  r9   r  r:   r)   rQ   rµ   rb  r   r   r    Ú test_setitem_frame_keep_ea_dtypeÉ  s   ýÿzBTestDataFrameSetItemWithExpansion.test_setitem_frame_keep_ea_dtypec                 C   sp   t tdƒd�}tjddd�tjddd�ddœ|jd	< t t d
¡t d¡dggtd	gƒg d¢d�}t ||¡ d S )NÚabcr_   rj   r²   )r³   éH   Ú23rQ   r   z0 days 00:00:05z0 days 00:01:12rt   )	r
   r"  rg  Úto_timedeltar«   Ú	Timedeltar   r+   rn   )r-   r}   r0   r   r   r    Ú&test_loc_expansion_with_timedelta_typeÖ  s   ýýzHTestDataFrameSetItemWithExpansion.test_loc_expansion_with_timedelta_typeN)r   r   r   rŠ  rŒ  rŽ  rš  r›  rœ  r¢  r£  r¤  rª  r   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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+   rn   rú   r   r   r    Útest_setitem_slice_positionæ  s   
z7TestDataFrameSetItemSlicing.test_setitem_slice_positionr  r=  rÔ   rK   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&   r]   r9  rQ   r_   r  r#   r½   ©r-   rÔ   r=  r  r/   r0   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"  rk   r+   rn   )r-   rÔ   r=  r/   r0   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ø   r‚   r°  rQ   r_   r  r#   r  r�  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®  rb   rq  rr  r+   Úsetitemrã   r   r;   r@   r"  rg  r²  r³  r´  r   r   r   r    r«  å  s    	r«  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'  r8  r  )r  r  r:  r;  c                 S   s   dS )NrE   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   sP   dd„ }t ddgddggtd�}|||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>.incr1  r#   r:   r   )r
   r  r+   rn   )r-   r¸  r/   r0   r   r   r    Útest_setitem_other_callable  s
   z8TestDataFrameSetItemCallable.test_setitem_other_callableN)r   r   r   r·  r¹  r   r   r   r    r¶    s    r¶  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©r/   r   r   r    r  -  s    z(TestDataFrameSetItemBooleanMask.<lambda>c                 C   s   | t  | ¡d kjS r¼  )r;   r½  rI   r¾  r   r   r    r  -  s    Ú	dataframer@   )Úidsc                 C   s^   |  ¡ }||ƒ}|  ¡ }tj||< |j  ¡ }tj|t |¡< t||j|jd�}t 	||¡ d S )Nrt   )
râ   r;   r  rI   r@   r
   r%   r`   r+   rn   )r-   r»  rB   r/   rR  r}   r0   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#   rQ   r  r:   z@Must have equal len keys and value when setting with an iterablerZ   r'   )r
   r   rb   rc   rd   r«   )r-   r=  r/   r  rh   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#   rQ   Fr9   r)   r'   rü   )r
   r«   r+   rn   )r-   r=  r/   r  r0   r   r   r    Ú1test_setitem_loc_only_false_indexer_dtype_changedK  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#   r]   r&   r(   r8  r÷   r"   r(   )r
   râ   r•  r+   rn   )r-   r  r/   r0   rR  r   r   r    Ú"test_setitem_boolean_mask_aligningY  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  )rU   rV   rW   ÚkÚlrÉ   rÔ   )r#   r#   r&   r&   r#   r#   r#   )ÚcatsrI   r$   )r"   r"   r)   r)   r"   r"   r"   rQ   )r#   r#   r(   r(   r#   r#   r#   rÈ  r)   r&   )r	   r   r
   râ   r—   Úset_categoriesr+   rn   )r-   Úcats2Úidx2Úvalues2Úexp_multi_rowÚcatsfÚidxfÚvaluesfr/   Ú	exp_fancyrR  r   r   r    Útest_setitem_mask_categoricalb  s   ÿz=TestDataFrameSetItemBooleanMask.test_setitem_mask_categoricalr2   r¨   r4   Úkwargsr%   r#   r`   rE   c                 C   s:   ||d< t di |¤Ž}| ¡ }d|||k< t ||¡ d S )Nr2   é/   r   rj  )r-   r2   rÓ  r/   rê   r   r   r    Ú%test_setitem_empty_frame_with_booleany  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(   r   )ç        r‡  rš   )ç      ø?r›   ç      @)rœ   ç      @ç      @r:   )r%   r`   r.   )r×  r›   r1  )r1  r1  r1  r1  r›   zItem wrong lengthrZ   r&   )r"  rk   r
   r;   r@   r¨   rW  r?   r+   rn   rb   rc   rd   r%   )r-   r­   r  Údf1rê   r0   r   r   r    Útest_setitem_boolean_indexing„  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(   r]   r"   rQ   Fr)   rS   r'   rj   r9  r   r$   )r
   râ   r   r«   r+   rn   )r-   r/   r0   r  r   r   r    Ú-test_loc_setitem_all_false_boolean_two_blocks›  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 )Nr1  r&   r(   r¬  r   TFÚbooleanr:   r]  )r
   r   rg  ÚNAr+   rn   )r-   r/   r0   Úboolean_indexerr   r   r    Útest_setitem_ea_boolean_mask£  s   þÿz<TestDataFrameSetItemBooleanMask.test_setitem_ea_boolean_maskN)r   r   r   rt  Úskip_array_manager_invalid_testrb   rq  rr  rÁ  Úxfailr"  r;   r@   r   rÃ  rÄ  r+   rµ  r«   rÅ  rÒ  rÕ  rÜ  rÝ  rá  r   r   r   r    rº  )  s,    ý

	rº  c                   @   s8  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"d#„ Zej d$dd%g¡d&d'„ ƒZd(d)„ Z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  rE   rj   r9   )r`   râ   r;   r  rã   Úget_locr   rÒ   )r-   rB   r²   r   r   r    Útest_setitem_always_copy²  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 @)ru   rv   )r   r#   r&   r(   r$   r&   rƒ   r#   é*   rY   )r
   rx   r;   r  Ú_consolidate_inplacer?   rÜ   ÚblocksÚ_valuesr«   r   r%   r+   r{   rÄ   rI   Úshares_memory)r-   rç  Úusing_array_managerrå   r/   Úzvalsr0   r   r   r    Ú#test_setitem_partial_column_inplaceº  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 )
NrE   rF   r&   rÖ  r   rt   r  )rÖ  r&   rÖ  rj   r_   rj  )r-   r  r/   Údf_copyÚdf_viewr0   r   r   r    Ú*test_setitem_duplicate_columns_not_inplaceÚ  s   zPTestDataFrameSetitemCopyViewSemantics.test_setitem_duplicate_columns_not_inplacer�  r#   r4   r:   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 )NrE   rF   r   r#   rt   r_   rj  )r-   r�  rí  r  r/   rð  rñ  r0   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 )NrE   rF   r   r#   rt   rš   r_   rj  )r-   r�  r  r/   rð  rñ  r0   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)Úmarkszvalue, set_value)r#   rj   )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$   rj  )r-   r�  Ú	set_valuer  r/   r0   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}t ¡ � |jD ]}d|| |< q%W d   ƒ n1 s8w   Y  |sTt 	|t 
d¡t 
d¡f dk¡sRJ ‚d S t 	|t 
d¡t 
d¡f dk¡sgJ ‚d S )	Nc                 S   s   g | ]}d |› �‘qS )r)   r   r�  r   r   r    r»   '  s    z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<listcomp>r9   c                    s   i | ]
}|t  tˆ ƒ¡“qS r   )r;   r­  r?   )rº   Úcol©r“  r   r    Ú
<dictcomp>(  s    z\TestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplace.<locals>.<dictcomp>r$   r   r#   )rk   r
   rÜ   rê  rI   r+   Úraises_chained_assignment_errorr`   r;   rÒ   rw   )r-   rå   r‰  r/   rI   Úlabelr   rú  r    Ú"test_setitem_column_update_inplace!  s   

ÿÿ**zHTestDataFrameSetitemCopyViewSemantics.test_setitem_column_update_inplacec                 C   s\   t g d¢ƒ}t g d¢dd�|d< tg d¢dd�|d< tg d¢g d¢td�}t |j|¡ d S )	NrK   r!  r:   Úcol1Úcol2)r4   r!  r!  )r   rÿ  r   )r%   r2   )r
   r   r  r+   r{   rz   )r-   r/   Úexpected_typesr   r   r    Ú%test_setitem_column_frame_as_category5  s   ÿzKTestDataFrameSetitemCopyViewSemantics.test_setitem_column_frame_as_categoryr2   rQ  c                 C   sb   t dt d¡i|d�}t dgg¡|jt dg¡t dg¡f< t dg d¢i|d�}t ||¡ d S )Nr"   r(   r:   r&   r   )r&   r#   r#   )r
   r;   rW  r@   rã   r+   rn   )r-   r2   r/   r0   r   r   r    Ú"test_setitem_iloc_with_numpy_array@  s   (zHTestDataFrameSetitemCopyViewSemantics.test_setitem_iloc_with_numpy_arrayc                 C   sÔ   t g d¢g d¢gg d¢d�}t ddgddggd	d	gd�}||d	< t g d
¢g d¢gg d¢d�}t ||¡ t g d¢g d¢gg d¢d�}t ddgddggd	d	gd�}||d	< t g d¢g d¢gg d¢d�}t ||¡ d S )Nr'  )r]   rj   r9  r6  )r"   r'   r"   r)   r_   r   r×  r&   rØ  r"   )r   r&   r×  r]   )r&   rj   rØ  r6  rK   rB  )r"   r"   r'   )r   r×  r(   )r&   rØ  r9  r½   r  r   r   r    Ú!test_setitem_frame_dup_cols_dtypeI  s   ÿzGTestDataFrameSetitemCopyViewSemantics.test_setitem_frame_dup_cols_dtypec                 C   sl   t dgddd�}td|iƒ d¡}|dd…  ¡ }d |d< d |d< tg ddg|d d… d�}t ||¡ d S )	Nz
2000-01-01r‰   Údate)r2   rA   r   Ú3010Ú2010r%  )r   r
   rñ   râ   r+   rn   )r-   Údtir/   r0   r   r   r    Ú"test_frame_setitem_empty_dataframeY  s   
ýzHTestDataFrameSetitemCopyViewSemantics.test_frame_setitem_empty_dataframeN)r   r   r   ræ  rb   rq  rr  rï  rò  r;   r@   ró  rô  Úparamrã  r   rø  rt  râ  rþ  r  r  r  r	  r   r   r   r    rä  ±  sP    
$ÿ
(
þþýþüþ	

rä  c                  C   s&  t dddgiƒ} tjtdd�� d| jd d …df< W d   ƒ n1 s#w   Y  t dddgiƒ}t | |¡ t dddgiƒ} tjtdd�� ddd	œ| jd d …df< W d   ƒ n1 s\w   Y  t dddgiƒ}t | |¡ t dddgiƒ} d
dd	œ| jd d …df< t dd
dgiƒ}t | |¡ d S )Nr"   r#   r&   zincompatible dtyperZ   TrÙ  g      @r]  r(   r]   )r
   r+   rX  ro  r«   rn   ©r/   r0   r   r   r    Ú'test_full_setter_loc_incompatible_dtypej  s    ÿÿr  c                  C   sl   t g d¢g d¢dœƒ} d| j| jdkddgf< t g d¢g d¢ddtd	ƒgd
d
td	ƒgdœƒ}t | |¡ d S )NrK   )rÚ  rj   r9  r  )r#   r¥  r#   r  ÚGrš   r  r¥  )rE   rF   r  r  )r
   r«   r%   r¨   r+   rn   r  r   r   r    Ú)test_setitem_partial_row_multiple_columns~  s   üÿr  )4r   Únumpyr;   rb   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrt  Úpandas.core.dtypes.baser   rs  Úpandas.core.dtypes.commonr   Úpandas.core.dtypes.dtypesr   r   r   r   Úpandasrg  r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr+   Úpandas.core.arraysr   Úpandas.tseries.offsetsr   r   rv  r†  r«  r¶  rº  rä  r  r  r   r   r   r    Ú<module>   s<    H      * . 	 :