o
    �¨Êh¨b  ã                   @   sz   d Z ddlZddl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 G dd„ dƒZG dd„ dƒZG dd	„ d	ƒZdS )
zx
test setting *parts* of objects both positionally and label based

TODO: these should be split among the indexer tests
é    N)Ú	DataFrameÚIndexÚPeriodÚSeriesÚ	TimestampÚ
date_rangeÚperiod_rangec                   @   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d„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestEmptyFrameSetitemExpansionc                 C   sp   t i tjddd�d�}tdtjddd�d�}||d< t ddgd itjddd�tdgtd	�d
�}t ||¡ d S )Nr   Údf_index©Úname©Úindexç®Gáz®ó?é   Úseries_indexÚseries©Údtype©r   Úcolumns)r   ÚpdÚ
RangeIndexr   r   ÚobjectÚtmÚassert_frame_equal©ÚselfÚdfr   Úexpected© r    úT/var/www/html/env/lib/python3.10/site-packages/pandas/tests/indexing/test_partial.pyÚ,test_empty_frame_setitem_index_name_retained   s   ýzKTestEmptyFrameSetitemExpansion.test_empty_frame_setitem_index_name_retainedc                 C   s`   t ƒ }tdtjddd�d�}||d< t ddgd itjddd�tdgtd�d�}t ||¡ d S )	Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r    r    r!   Ú-test_empty_frame_setitem_index_name_inherited&   s   ýzLTestEmptyFrameSetitemExpansion.test_empty_frame_setitem_index_name_inheritedc                 C   s–   t ddgd�}tdtdƒd�|jd< t ddgdgtjd�}t ||¡ t ddgd�}tddgd�|jd< t tjdggddgdgd	d�}t ||¡ d S )
NÚAÚB©r   é   r   r   r   )r   r   r   Úfloat64)	r   r   ÚrangeÚlocÚnpr(   r   r   Únan)r   r   r   Úexpr    r    r!   Ú-test_loc_setitem_zerolen_series_columns_align2   s   zLTestEmptyFrameSetitemExpansion.test_loc_setitem_zerolen_series_columns_alignc                 C   s˜   t ddgd�}d}tjt|d�� g d¢|jd< W d   ƒ n1 s"w   Y  t ddgd�}dd	g|jd
< t dd	ggd
gddgtjd�}t ||¡ d S )Nr$   r%   r&   z(cannot set a row with mismatched columns©Úmatch©r'   é   é   r   é   é   r3   )r   r   r   )	r   ÚpytestÚraisesÚ
ValueErrorr*   r+   Úint64r   r   )r   r   Úmsgr-   r    r    r!   Ú7test_loc_setitem_zerolen_list_length_must_match_columns@   s   ÿzVTestEmptyFrameSetitemExpansion.test_loc_setitem_zerolen_list_length_must_match_columnsc                 C   sÐ   t ƒ }d}tjt|d�� d|jd< W d   ƒ n1 sw   Y  tjt|d�� tdgdgd�|jd< W d   ƒ n1 s>w   Y  d}tjt|d�� d|jd d …df< W d   ƒ d S 1 saw   Y  d S )Nz*cannot set a frame with no defined columnsr/   r'   Úfoor   z5cannot set a frame with no defined index and a scalar)r   r6   r7   r8   r*   r   )r   r   r:   r    r    r!   Útest_partial_set_empty_frameN   s   ÿÿ"ÿz;TestEmptyFrameSetitemExpansion.test_partial_set_empty_framec                 C   sœ   t tdgtd�tg dd�d�}t tg dd�d�}tg dd�|d< t ||¡ t tg ƒd�}t|jƒ|d< t ||¡ t tg ƒd�}|j|d< t ||¡ d S )Nr<   r   r   ©r   r   r   )r   r   r   r   r   r   r   ©r   r   r   r    r    r!   Útest_partial_set_empty_frame2_   s   ÿ
z<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame2c                 C   s’   t tdgtd�tg dd�d�}|d  d¡|d< t tg dd�d�}g |d< t ||¡ t tg dd�d�}tt t	|ƒ¡dd�|d< t ||¡ d S )Nr<   r   r9   r>   r(   r   )
r   r   r   Úastyper   r   r   r+   ÚarangeÚlenr?   r    r    r!   Útest_partial_set_empty_frame3v   s   ÿz<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame3c                 C   sb   t tg dd�d�}tt|ƒƒ|d< t tdgtd�tg dd�d�}|d  d¡|d< t ||¡ d S )Nr9   r   r   r<   r>   )r   r   r)   rC   r   rA   r   r   ©r   r   r   r    r    r!   Útest_partial_set_empty_frame4†   s   ÿz<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame4c                 C   s€   t ƒ }t |jt d¡¡ t ƒ }tdgdgd�|d< tdgdgd�|jd d …df< t |t dggdgdgd�¡ t ||¡ d S )Nr   r'   r<   r   r   )	r   r   Úassert_index_equalr   r   r   r   r*   r   )r   r   Údf2r    r    r!   Útest_partial_set_empty_frame5‘   s   z<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame5c                 C   sŠ   t dtdtdƒd�ig d¢d�}t ddgd�}tdtdƒd�|d< t ||¡ t ddgd�}tdtdƒd�|jd d …df< t ||¡ d S )	Nr   r'   r   r   )r$   r%   r   r&   r$   r%   )r   r   r)   r   r   r*   r?   r    r    r!   Ú%test_partial_set_empty_frame_no_indexš   s    zDTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_no_indexc                 C   sj  t g d¢tg dd�d�}|d  d¡|d< |d  d¡|d< |d  d¡|d< t g d	¢g d
¢dœƒ}||jdk }tj|d< t ||¡ t g d¢d�}|d  d¡|d< t g d¢d�}d|d< t ||¡ t |d t	dt
d�¡ t g d	¢g d
¢dœƒ}||jdk }|jg d¢d�}t g d¢d�}|d  d¡|d< |d  d¡|d< |d  d¡|d< t ||¡ d S )N)r$   r%   ÚNewr9   r   r>   r$   r%   r(   rK   r1   )g333333ó?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@©r$   r%   é   )ÚaÚbúc cÚdr&   rQ   )rN   rO   rP   r3   rP   ©r   r   )r$   r%   ÚCrS   )r   r   rA   r$   r+   r,   r   r   Úassert_series_equalr   r   Úreindex)r   r   r   ÚyÚresultr    r    r!   Ú test_partial_set_empty_frame_row¦   s,   
z?TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_rowc                 C   s^   t ttd�ƒ}t dttd�iƒ}t ||¡ t tdtd�ƒ}t dttd�iƒ}t ||¡ d S )Nr   r   r<   rR   )r   r   r   r   r   rE   r    r    r!   Ú'test_partial_set_empty_frame_set_seriesÄ   s   zFTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_set_seriesc                 C   sF   t dgd�}| ¡ }d|d< t ddgtdgtd�d�}t ||¡ d S )Nr   r   rN   r   r   )r   Úcopyr   r   r   r   rE   r    r    r!   Ú2test_partial_set_empty_frame_empty_copy_assignmentÏ   s
   zQTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_empty_copy_assignmentc                 C   sÜ   t ddgd�}ddg|d< t ddgtjtjgdœƒ}tj||dd� t ddgd�}d	d
g|d< t td	d
g|s8tndd�ttjtjgtd�dœƒ}t ||¡ t ddgd�}d|jd< t dgtjgdœƒ}tj||dd� d S )NÚxrV   r&   r'   r2   )r\   rV   F)Úcheck_dtypeÚ1Ú2zstring[pyarrow_numpy]r   )r   r\   )r   r+   r,   r   r   r   r   r*   )r   Úusing_infer_stringr   r   r    r    r!   Ú0test_partial_set_empty_frame_empty_consistenciesØ   s&   
þûÿ	
zOTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_empty_consistenciesN)Ú__name__Ú
__module__Ú__qualname__r"   r#   r.   r;   r=   r@   rD   rF   rI   rJ   rX   rY   r[   ra   r    r    r    r!   r	      s    		r	   c                   @   sÌ  e Zd Zdd„ Zej d¡dd„ ƒZdd„ Zdd	„ Z	d
d„ Z
dd„ Zej dddg¡dd„ ƒZdd„ Zej dedddd�g d¢eddd�eddd�eddd�gfedddd�g d¢edƒedƒedƒgfejddd �g d!¢e d"¡e d#¡e d$¡gfg¡d%d&„ ƒZej d'edddd�dd(gfedddd�dd(gfejddd �d)d*gfg¡d+d,„ ƒZej d-edddd�ed.d/ged0�d1fedddd�ed.d/ged0�d1fejddd �eddged0�d2fg¡d3d4„ ƒZd5S )6ÚTestPartialSettingc                 C   sV  t g d¢ƒ}| ¡ }d|d< t g d¢g d¢d�}t ||¡ | ¡ }d|jd< t g d¢g d¢d�}t ||¡ | ¡ }d|d< t g d¢g d¢d�}t ||¡ | ¡ }d|jd< t g d¢g d¢d�}t ||¡ | ¡ }d}tjt|d	�� d|jd
< W d   ƒ n1 s…w   Y  d}tjt|d	�� d|j	d
< W d   ƒ d S 1 s¤w   Y  d S )Nr1   rM   )r'   r2   r3   rM   )r   r'   r2   rM   r   ç      @)r'   r2   r3   rf   ú%iloc cannot enlarge its target objectr/   r3   z/index 3 is out of bounds for axis 0 with size 3)
r   rZ   r   rT   r*   r6   r7   Ú
IndexErrorÚilocÚiat)r   Ús_origÚsr   r:   r    r    r!   Útest_partial_settingô   s4   

ÿ"ÿz'TestPartialSetting.test_partial_settingz.ignore:Setting a value on a view:FutureWarningc                 C   s–  t t d¡ dd¡ddgdd�}| ¡ }d}tjt|d	�� d
|jd< W d   ƒ n1 s-w   Y  d}|r8d}tjt|d	�� d
|j	d< W d   ƒ n1 sOw   Y  t g d¢g d¢dœƒ}| ¡ }|jd |jd< t
 ||¡ t g d¢g d¢dœƒ}| ¡ }|jd |jd< t
 ||¡ t g d¢g d¢dœƒ}| ¡ }|jd |jd< t
 ||¡ t g d¢g d¢dœƒ}| ¡ }|jd d …df |jd d …df< t
 ||¡ t g d¢tg d¢ƒdœƒ}| ¡ }|d  tj¡|d< |jd d …df |jd d …df< t
 ||¡ | ¡ }|d |d< | ¡ }|jd d …df |jd d …df< t
 ||¡ | ¡ }|d |d< | ¡ }|jd d …df |jd d …df< t
 ||¡ d S )Nr4   r3   r2   r$   r%   r9   )r   r   rg   r/   rf   )r   r2   z/index 2 is out of bounds for axis 0 with size 2zlist index out of range)r   r   r   )r'   rM   rM   rL   r'   )r   r2   r   r   )r'   r3   rM   rM   )r   r2   r   )g        g       @g      @rS   )r   r+   rB   ÚreshaperZ   r6   r7   rh   ri   rj   r   r   r*   r   rA   r(   )r   Úusing_array_managerÚdf_origr   r:   r   r    r    r!   Útest_partial_setting_frame  sZ   ÿÿÿ    z-TestPartialSetting.test_partial_setting_framec                 C   s<  t ddd�}ttj d¡ d¡|g d¢d�}tj|tdd	i|d
d … |j d�gdd�}| 	¡ }d	|j
|d
 |j df< t ||¡ | 	¡ }d	|j|d
 |j df< t ||¡ tdd	i|d
d … |j d�}tj||gdd�}| 	¡ }d	|j
|d
 |j df< t ||¡ | 	¡ }d	|j|d
 |j df< t ||¡ d S )Nz1/1/2000é   )Úperiodsr2   )rr   r   )r$   r%   rS   ÚDr   r$   r5   éÿÿÿÿr   T)Úsortr   r'   ©Úaxis)r   r   r+   ÚrandomÚdefault_rngÚstandard_normalr   ÚconcatÚfreqrZ   r*   r   r   Úat)r   Údatesrp   r   r   Ú	exp_otherr    r    r!   Útest_partial_setting2Z  s.   ý"ÿz(TestPartialSetting.test_partial_setting2c                 C   sh   t ddgddggddgd�}|jd  ¡ }d|_t |t |ƒj ¡ g¡}|jd |jd< t 	||¡ d S )NTr'   Fr2   ÚfemaleÚfitnessr&   )
r   r*   rZ   r   r   r|   ÚTÚinfer_objectsr   r   )r   r   rl   r   r    r    r!   Ú test_partial_setting_mixed_dtypew  s   z3TestPartialSetting.test_partial_setting_mixed_dtypec                 C   sL  t ddgddgd�}t tjdtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n1 s0w   Y  | g d¢¡}tj	||d	d
� t tjdtjtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n1 slw   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}|jg d¢ }tj	||d	d
� t ddtjdgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n1 s¿w   Y  | g d¢¡}tj	||d	d
� dt 
t¡› d�}tjt|d�� |jg d¢  W d   ƒ n1 sõw   Y  t ddtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �s w   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}t dtjtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �sew   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}t tjddgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �s©w   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}t tjddgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �síw   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}t dtjtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �s2w   Y  | g d¢¡}tj	||d	d
� t g d¢g d¢d�}t dtjtjgg d¢d�}tjtdd�� |jg d¢  W d   ƒ n	1 �sww   Y  | g d¢¡}tj	||d	d
� t g d¢g d ¢d�}|jg d!¢ }tj	||d	d
� d S )"Nçš™™™™™¹?çš™™™™™É?r'   r2   r   ©r3   r2   r3   únot in indexr/   T©Úcheck_index_type©r3   r2   r3   r\   ©rˆ   rˆ   r‡   ©r2   r2   r'   ©r2   r2   r\   r'   ú'\"None of \[Index\(\[3, 3, 3\], dtype='z'\)\] are in the \[index\]\"©r3   r3   r3   ©r2   r2   r3   ©r‡   rˆ   ç333333Ó?r1   r•   ©r3   r   r   ©r‡   rˆ   r•   çš™™™™™Ù?©r'   r2   r3   r   ©rM   r3   r3   r˜   ©rM   r   r   ©r   rM   r4   r5   ©r5   r2   r2   ©r   rM   rM   ©rˆ   rˆ   r‡   r‡   ©r2   r2   r'   r'   ©r'   r'   r   r   )r   r+   r,   r6   r7   ÚKeyErrorr*   rU   r   rT   r   Úintri   )r   Úserr   rW   r:   rl   r    r    r!   Útest_series_partial_setƒ  sŽ   ÿÿÿÿÿÿÿÿÿÿÿz*TestPartialSetting.test_series_partial_setc                 C   s¾  t ddgddd�}tddg|dd	�}tjtd
d�� |jg d¢  W d   ƒ n1 s+w   Y  tjtdd�� |jg d¢  W d   ƒ n1 sIw   Y  t g d¢ddd�}tg d¢|dd	�}|jg d¢ }tj||dd� tjtdd�� |jg d¢  W d   ƒ n1 sˆw   Y  dt 	t
¡› d�}tjt|d�� |jg d¢  W d   ƒ n1 s¯w   Y  tjtdd�� |jg d¢  W d   ƒ n1 sÍw   Y  t g d¢ddd�}tjtdd�� tg d¢|dd	�jg d¢  W d   ƒ n1 sûw   Y  t g d¢ddd�}tjtdd�� tg d¢|dd	�jg d¢  W d   ƒ n	1 �s*w   Y  t g d¢ddd�}tjtdd�� tg d¢|dd	�jg d¢  W d   ƒ n	1 �sYw   Y  t g d ¢ddd�}tjtdd�� tg d¢|dd	�jg d!¢  W d   ƒ n	1 �sˆw   Y  t g d¢ddd�}tjtdd�� tg d¢|dd	�jg d"¢  W d   ƒ n	1 �s·w   Y  t g d#¢ddd�}tg d$¢|dd	�}|jg d%¢ }tj||dd� d S )&Nr'   r2   r9   Úidx©r   r   r‡   rˆ   rl   )r   r   z\[3\] not in indexr/   r‰   rŠ   r�   r�   rŽ   Tr‹   z\['x'\] not in indexr�   r‘   z(', name='idx'\)\] are in the \[index\]\"r’   r“   r1   r”   r–   r™   r—   rš   r›   rœ   r�   rž   r    rŸ   r¡   )r   r   r6   r7   r¢   r*   r   rT   r+   r   r£   ri   )r   r¦   r¤   Úexp_idxr   rW   r:   r    r    r!   Ú!test_series_partial_set_with_nameÞ  s^   ÿÿÿÿÿÿÿÿÿÿÿz4TestPartialSetting.test_series_partial_set_with_nameÚkeyéd   g      Y@c                 C   s®   t tj d¡ d¡ttdƒtd�tdddd�d	�}| 	¡ }|j
d
 |j|d d …f< tt|jƒ|g t|jjd�}tj|j|j
d
g jgd
d�}t |||jd�}t ||¡ d S )Nr2   ©é
   r   ÚABCDr   ú
2000-01-01r­   r%   ©rs   r}   r>   r   r§   rw   r   )r   r+   ry   rz   r{   r   Úlistr   r   rZ   ri   r*   r   r   ÚconcatenateÚvaluesr   r   r   )r   rª   Úorigr   Úex_indexÚex_datar   r    r    r!   Ú6test_setitem_with_expansion_numeric_into_datetimeindex  s   ýzITestPartialSetting.test_setitem_with_expansion_numeric_into_datetimeindexc                 C   sº   t tj d¡ d¡ttdƒtd�tdddd�d	�}| 	¡ }|j
d
 |jdd d …f< t|j
d
 dd�}t |t |ƒj ¡ g¡}t ||¡ t |jt|j ¡ dg ƒ¡ |jjdks[J ‚d S )Nr2   r¬   r®   r   r¯   r­   r%   r°   r>   r   rN   r   r   )r   r+   ry   rz   r{   r   r±   r   r   rZ   ri   r*   r   r   r|   r„   r…   r   r   rG   r   Útolistr   )r   r´   r   r¤   r-   r    r    r!   Útest_partial_set_invalid)  s   ýz+TestPartialSetting.test_partial_set_invalidzidx,labels,expected_idxÚ2000é   rt   )Ústartrs   r}   )ú
2000-01-04ú
2000-01-08ú
2000-01-12r½   )r}   r¾   r¿   z1 day)r¼   rs   )Ú4DÚ8DÚ12Dz4 dayz8 dayz12 dayc                 C   sT   |t dƒ|d�}g d¢}|||ƒ}t ||j| ¡ |tu r(t ||| ¡ d S d S )Nr»   r   )r3   r5   é   )r)   r   Úassert_equalr*   r   rT   )r   r¦   ÚlabelsÚexpected_idxÚframe_or_seriesÚobjÚexpected_valuer   r    r    r!   Ú4test_loc_with_list_of_strings_representing_datetimes<  s    
ÿzGTestPartialSetting.test_loc_with_list_of_strings_representing_datetimesz
idx,labelsz
2000-01-30z3 dayz30 dayc                 C   sÐ   t tdƒ|d�}ttdƒ|d�}d}tjt|d�� |j|  W d   ƒ n1 s)w   Y  tjt|d�� ||  W d   ƒ n1 sDw   Y  tjt|d�� |j|  W d   ƒ d S 1 saw   Y  d S )Nr»   r   rŠ   r/   ©r   r)   r   r6   r7   r¢   r*   )r   r¦   rÅ   r¤   r   r:   r    r    r!   ÚBtest_loc_with_list_of_strings_representing_datetimes_missing_valuee  s   ÿ
ÿ"ÿzUTestPartialSetting.test_loc_with_list_of_strings_representing_datetimes_missing_valuezidx,labels,msgrÀ   rÁ   r   zHNone of \[Index\(\['4D', '8D'\], dtype='object'\)\] are in the \[index\]zXNone of \[Index\(\['2000-01-04', '2000-01-08'\], dtype='object'\)\] are in the \[index\]c                 C   sÌ   t tdƒ|d�}ttdƒ|d�}tjt|d�� |j|  W d   ƒ n1 s'w   Y  tjt|d�� ||  W d   ƒ n1 sBw   Y  tjt|d�� |j|  W d   ƒ d S 1 s_w   Y  d S )Nr»   r   r/   rË   )r   r¦   rÅ   r:   r¤   r   r    r    r!   ÚEtest_loc_with_list_of_strings_representing_datetimes_not_matched_type‚  s   !ÿ
ÿ"ÿzXTestPartialSetting.test_loc_with_list_of_strings_representing_datetimes_not_matched_typeN)rb   rc   rd   rm   r6   ÚmarkÚfilterwarningsrq   r�   r†   r¥   r©   Úparametrizer·   r¹   r   r   r   r   r   Útimedelta_rangeÚ	TimedeltarÊ   rÌ   r   r   rÍ   r    r    r    r!   re   ó   s~    
%
@[:



ýý
ýý
ýíþ
þþ÷þ
ü	ü	üïþre   c                   @   s   e Zd Zdd„ ZdS )ÚTestStringSlicingc                 C   sœ   t  g d¢¡}ttt|ƒƒ|d�}ttt|d d… ƒƒ|d d… d�}tjtdd�� |dd…  W d   ƒ n1 s;w   Y  |dd… }t 	||¡ d S )	N)ú
2012-01-01z
2012-01-02z
2012-01-03Nr   r3   z non-existing keys is not allowedr/   rÔ   z
2012-01-04z2012-01-03 00:00:00.000000000)
r   Úto_datetimer   r)   rC   r6   r7   r¢   r   r   )r   r   r   r   rW   r    r    r!   Ú,test_slice_irregular_datetime_index_with_nan¯  s   $ü	z>TestStringSlicing.test_slice_irregular_datetime_index_with_nanN)rb   rc   rd   rÖ   r    r    r    r!   rÓ   ®  s    rÓ   )Ú__doc__Únumpyr+   r6   Úpandasr   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr   r	   re   rÓ   r    r    r    r!   Ú<module>   s    $	 ]   >