o
    Û­j 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   sl   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ƒd	�}t ||¡ d S )
Nr   Údf_index©Úname©Úindexç®Gáz®ó?é   Úseries_indexÚseries©r   Úcolumns)r   ÚpdÚ
RangeIndexr   r   ÚtmÚassert_frame_equal©ÚselfÚdfr   Úexpected© r   ú_/var/www/html/CropPilot/venv/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ƒd�}t ||¡ d S )Nr   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   ÚdtypeÚ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   é   é   r1   )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   r4   r5   r6   r(   r   )r   r   r8   r   r   r   Útest_partial_set_empty_frameN   s   ÿÿ"ÿz;TestEmptyFrameSetitemExpansion.test_partial_set_empty_framec                 C   s˜   t tdgƒ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:   Úobject©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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:   r7   r=   r>   r&   r   )	r   r   Úastyper   r   r   r)   ÚarangeÚlenr?   r   r   r   Útest_partial_set_empty_frame3t   s   z<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame3c                 C   s^   t tg dd�d�}tt|ƒƒ|d< t tdgƒtg dd�d�}|d  d¡|d< t ||¡ d S )Nr7   r=   r   r:   r>   )r   r   r'   rC   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"   ÚNewr7   r=   r>   r!   r"   r&   rK   r/   )g333333ó?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@©r!   r"   é   )ÚaÚbúc cÚdr#   rQ   )rN   rO   rP   r1   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   sB   t dgd�}| ¡ }d|d< t ddgtdgƒd�}t ||¡ d S )Nr   r   rN   r   )r   Úcopyr   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$   r0   )r\   rV   F)Úcheck_dtypeÚ1Ú2Ústrr=   )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,   r9   r;   r@   rD   rF   rI   rJ   rX   rY   r[   rb   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 )Nr/   rM   )r$   r0   r1   rM   )r   r$   r0   rM   r   ç      @)r$   r0   r1   rg   ú%iloc cannot enlarge its target objectr-   r1   z/index 3 is out of bounds for axis 0 with size 3)
r   rZ   r   rT   r(   r4   r5   Ú
IndexErrorÚilocÚiat)r   Ús_origÚsr   r8   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 )Nr2   r1   r0   r!   r"   r7   )r   r%   rh   r-   rg   )r   r0   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   r0   r   r   )r$   r1   rM   rM   )r   r0   r   )g        g       @g      @rS   )r   r)   rB   ÚreshaperZ   r4   r5   ri   rj   rk   r   r   r(   r   rA   r&   )r   Úusing_array_managerÚdf_origr   r8   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é   )Úperiodsr0   )rs   r   )r!   r"   rS   ÚDr   r!   r3   éÿÿÿÿr   T)Úsortr   r$   ©Úaxis)r   r   r)   ÚrandomÚdefault_rngÚstandard_normalr   ÚconcatÚfreqrZ   r(   r   r   Úat)r   Údatesrq   r   r   Ú	exp_otherr   r   r   Útest_partial_setting2T  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$   Fr0   ÚfemaleÚfitnessr#   )
r   r(   rZ   r   r   r}   ÚTÚinfer_objectsr   r   )r   r   rm   r   r   r   r   Ú test_partial_setting_mixed_dtypeq  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$   r0   r   ©r1   r0   r1   únot in indexr-   T©Úcheck_index_type©r1   r0   r1   r\   ©r‰   r‰   rˆ   ©r0   r0   r$   ©r0   r0   r\   r$   ú'\"None of \[Index\(\[3, 3, 3\], dtype='z'\)\] are in the \[index\]\"©r1   r1   r1   ©r0   r0   r1   ©rˆ   r‰   ç333333Ó?r/   r–   ©r1   r   r   ©rˆ   r‰   r–   çš™™™™™Ù?©r$   r0   r1   r   ©rM   r1   r1   r™   ©rM   r   r   ©r   rM   r2   r3   ©r3   r0   r0   ©r   rM   rM   ©r‰   r‰   rˆ   rˆ   ©r0   r0   r$   r$   ©r$   r$   r   r   )r   r)   r*   r4   r5   ÚKeyErrorr(   rU   r   rT   r%   Úintrj   )r   Úserr   rW   r8   rm   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$   r0   r7   Úidx©r%   r   rˆ   r‰   rm   )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”   r/   r•   r—   rš   r˜   r›   rœ   r�   rž   rŸ   r¡   r    r¢   )r   r   r4   r5   r£   r(   r   rT   r)   r%   r¤   rj   )r   r§   r¥   Úexp_idxr   rW   r8   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 )Nr0   ©é
   r   ÚABCDr=   ú
2000-01-01r®   r"   ©rt   r~   r>   r   r¨   rx   r   )r   r)   rz   r{   r|   r   Úlistr<   r   rZ   rj   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 )Nr0   r­   r¯   r=   r°   r®   r"   r±   r>   r   rN   r   r<   )r   r)   rz   r{   r|   r   r²   r<   r   rZ   rj   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é   ru   )Ústartrt   r~   )ú
2000-01-04ú
2000-01-08ú
2000-01-12r¾   )r~   r¿   rÀ   z1 day)r½   rt   )Ú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   )r1   r3   é   )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_datetimes6  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   r4   r5   r£   r(   )r   r§   rÆ   r¥   r   r8   r   r   r   ÚBtest_loc_with_list_of_strings_representing_datetimes_missing_value_  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Æ   r8   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)rc   rd   re   rn   r4   ÚmarkÚfilterwarningsrr   r‚   r‡   r¦   rª   Úparametrizer¸   rº   r   r   r   r   r   Útimedelta_rangeÚ	TimedeltarË   rÍ   r   r<   rÎ   r   r   r   r   rf   í   s~    
%
@[:



ýý
ýý
ýíþ
þþ÷þ
ü	ü	üïþrf   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   r1   z non-existing keys is not allowedr-   rÕ   z
2012-01-04z2012-01-03 00:00:00.000000000)
r   Úto_datetimer   r'   rC   r4   r5   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)rc   rd   re   r×   r   r   r   r   rÔ   ¨  s    rÔ   )Ú__doc__Únumpyr)   r4   Úpandasr   r   r   r   r   r   r   r   Úpandas._testingÚ_testingr   r	   rf   rÔ   r   r   r   r   Ú<module>   s    $	 W   >