U
    ÎZjø\  ã                   @   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   sd   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�d�}t ||¡ d S )	Nr   Zdf_index©Úname©Úindexç®Gáz®ó?é   Úseries_indexÚseries)r   ÚpdÚ
RangeIndexr   ÚtmÚassert_frame_equal©ÚselfÚdfr   Úexpected© r   úe/var/www/html/TRUCKING_PROJECT/venv/lib/python3.8/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   sT   t ƒ }tdtjddd�d�}||d< t ddgd itjddd�d�}t ||¡ d S )Nr   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©Úcolumnsé   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_align.   s    zLTestEmptyFrameSetitemExpansion.test_loc_setitem_zerolen_series_columns_alignc              	   C   s†   t ddgd�}d}tjt|d�� dddg|jd	< W 5 Q R X 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©Úmatchr"   é   é   r   é   é   )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 5 Q R X tjt|d�� tdgdgd�|jd< W 5 Q R X d}tjt|d�� d|jd d …df< W 5 Q R X 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   r1   r2   r3   r&   r   )r   r   r5   r   r   r   Útest_partial_set_empty_frameJ   s     z;TestEmptyFrameSetitemExpansion.test_partial_set_empty_framec                 C   s„   t dgtg dd�d�}t tg dd�d�}tg dd�|d< t ||¡ t ƒ }t|jƒ|d< t ||¡ t ƒ }|j|d< t ||¡ d S )Nr7   Ú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 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 )Nr7   r4   r:   r;   r$   r   )	r   r   Úastyper   r   r   r'   ÚarangeÚlenr<   r   r   r   Útest_partial_set_empty_frame3q   s    z<TestEmptyFrameSetitemExpansion.test_partial_set_empty_frame3c                 C   sZ   t tg dd�d�}tt|ƒƒ|d< t dgtg dd�d�}|d  d¡|d< t ||¡ d S )Nr4   r:   r   r7   r;   )r   r   r%   r@   r>   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g 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"   r7   r   ©r   r!   )	r   r   Úassert_index_equalr!   r   r9   r   r&   r   )r   r   Z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dddgd�}t ddgd�}tdtdƒd�|d< |j t|ƒ t ||¡ t ddgd�}tdtdƒd�|jd d …df< |j t|ƒ t ||¡ d S )Nr   r"   r   r   r   r   r    )r   r   r%   ZdtypesÚstrr   r   r&   r<   r   r   r   Ú%test_partial_set_empty_frame_no_index‘   s    "zDTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_no_indexc                 C   sˆ  t dddgtg dd�d�}|d  d¡|d< |d  d¡|d< |d  d¡|d< t dd	d
gdddgdœƒ}||jdk }tj|d< t ||¡ t ddddgd�}|d  d¡|d< t dddgd�}d
|d< t ||¡ t |d t	dt
d�¡ t dd	d
gdddgdœƒ}||jdk }|jdddgd�}t dddgtg dd�d�}|d  d¡|d< |d  d¡|d< |d  d¡|d< t ||¡ d S )Nr   r   ZNewr4   r:   r;   r$   r"   r-   r.   g333333ó?gÍÌÌÌÌÌ@gÍÌÌÌÌÌ@©r   r   é   ÚaÚbzc cÚdr    ©r   r#   ÚC)r   r   r>   r   r'   r(   r   r   Úassert_series_equalr   r9   Ú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   r7   rN   )r   r   r9   r   r   rB   r   r   r   Ú'test_partial_set_empty_frame_set_series¿   s    zFTestEmptyFrameSetitemExpansion.test_partial_set_empty_frame_set_seriesc                 C   s>   t dgd�}| ¡ }d|d< t ddgdgd�}t ||¡ d S )Nr   r   rK   rD   )r   Úcopyr   r   rB   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 d	d
gtjtjgdœtd�}t ||¡ t ddgd�}d|jd< t dgtjgdœƒ}tj||dd� d S )NÚxrR   r    r"   r-   )rX   rR   F)Zcheck_dtypeÚ1Ú2r:   )r   rX   )r   r'   r(   r   r   r9   r&   rB   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*   r6   r8   r=   rA   rC   rF   rH   rT   rU   rW   r[   r   r   r   r   r	      s   
			r	   c                   @   s®  e Z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g¡dd„ ƒZdd„ Ze	j
 dedddd�dddgeddd�eddd�eddd�gfedddd�dddgedƒedƒedƒgfejddd�dd d!g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�dd gd.fedddd�dd gd.fejddd�ddgd/fg¡d0d1„ ƒZd2S )3ÚTestPartialSettingc              	   C   sN  t dddgƒ}| ¡ }d|d< t ddddgddddgd�}t ||¡ | ¡ }d|jd< t ddddgddddgd�}t ||¡ | ¡ }d|d< t ddddgddddgd�}t ||¡ | ¡ }d|jd< t ddddgddddgd�}t ||¡ | ¡ }d}tjt|d	�� d|jd< W 5 Q R X d
}tjt|d	�� d|j	d< W 5 Q R X d S )Nr"   r-   r.   rJ   r   r   ç      @ú%iloc cannot enlarge its target objectr+   z/index 3 is out of bounds for axis 0 with size 3)
r   rV   r   rP   r&   r1   r2   Ú
IndexErrorÚilocÚiat)r   Zs_origÚsr   r5   r   r   r   Útest_partial_settingç   s0    

z'TestPartialSetting.test_partial_settingc              	   C   s¸  t t d¡ dd¡ddgdd�}| ¡ }d}tjt|d	�� d
|jd< W 5 Q R X d}|r\d}tjt|d	�� d
|j	d< W 5 Q R X t t
dddgdddgdœƒƒ}| ¡ }|jd |jd< t ||¡ t t
dddgdddgdœƒƒ}| ¡ }|jd |jd< t ||¡ t t
ddddgddddgdœƒƒ}| ¡ }|jd |jd< t ||¡ t t
dddgdddgdœƒƒ}| ¡ }|jd d …df |jd d …df< t ||¡ t t
dddgtdddgƒdœƒƒ}| ¡ }|d  tj¡|d< d}tjt|d	��& |jd d …df |jd d …df< W 5 Q R X 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 )Nr/   r.   r-   r   r   r4   )r!   r#   ra   r+   r`   )r   r-   z/index 2 is out of bounds for axis 0 with size 2zlist index out of ranger   r   r"   rJ   rI   z.will attempt to set the values inplace insteadrO   )r   r'   r?   ZreshaperV   r1   r2   rb   rc   rd   Údictr   r   r&   r   r>   r$   Zassert_produces_warningÚFutureWarning)r   Zusing_array_managerÚdf_origr   r5   r   r   r   r   Útest_partial_setting_frame  s^      ÿ" "*  z-TestPartialSetting.test_partial_setting_framec                 C   s<  t ddd�}ttj dd¡|ddddg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é   )Úperiodsr   r   r   rO   ÚDrD   r0   éÿÿÿÿr   T)Úsortr   r"   ©Zaxis)r   r   r'   ÚrandomZrandnr   ÚconcatÚfreqrV   r&   r   r   Úat)r   Údatesri   r   r   Z	exp_otherr   r   r   Útest_partial_setting2M  s0      
ÿ  ÿ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"   Fr-   ZfemaleZfitnessr    )
r   r&   rV   r   r   rr   ÚTÚinfer_objectsr   r   )r   r   re   r   r   r   r   Ú test_partial_setting_mixed_dtypeh  s    z3TestPartialSetting.test_partial_setting_mixed_dtypec              	   C   sä  t ddgddgd�}t tjdtjgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t tjdtjtjgddddgd�}tjtdd�� |jddddg  W 5 Q R X | ddddg¡}tj	||d	d
� t dddgdddgd�}|jdddg }tj	||d	d
� t ddtjdgddddgd�}tjtdd�� |jddddg  W 5 Q R X | ddddg¡}tj	||d	d
� d}tjt|d�� |jdddg  W 5 Q R X t ddtjgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t dddgdddgd�}t dtjtjgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t ddddgddddgd�}t tjddgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t ddddgddddgd�}t tjddgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t ddddgddddgd�}t dtjtjgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t ddddgddddgd�}t dtjtjgdddgd�}tjtdd�� |jdddg  W 5 Q R X | dddg¡}tj	||d	d
� t ddddgddddgd�}|j
ddddg }tj	||d	d
� d S )Nçš™™™™™¹?çš™™™™™É?r"   r-   r   r.   únot in indexr+   T©Zcheck_index_typerX   zM\"None of \[Int64Index\(\[3, 3, 3\], dtype='int64'\)\] are in the \[index\]\"ç333333Ó?r   çš™™™™™Ù?rJ   r/   r0   r   )r   r'   r(   r1   r2   ÚKeyErrorr&   rQ   r   rP   rc   )r   Úserr   rS   r5   re   r   r   r   Útest_series_partial_setu  sz    "ÿ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dddg  W 5 Q R X tjtdd�� |jddddg  W 5 Q R X t dddgddd�}tdddg|dd	�}|jdddg }tj||dd� tjtdd�� |jddddg  W 5 Q R X d}tjt|d�� |jdddg  W 5 Q R X tjtdd�� |jdddg  W 5 Q R X t dddgddd�}tjtdd��& tdddg|dd	�jdddg  W 5 Q R X t ddddgddd�}tjtdd��( tddddg|dd	�jdddg  W 5 Q R X t ddddgddd�}tjtdd��( tddddg|dd	�jdddg  W 5 Q R X t ddddgddd�}tjtdd��( tddddg|dd	�jdddg  W 5 Q R X t ddddgddd�}tjtdd��( tddddg|dd	�jdddg  W 5 Q R X t ddddgddd�}tddddg|dd	�}|jddddg }tj||dd� d S )Nr"   r-   r4   Úidx©r#   r   rz   r{   re   )r   r   z\[3\] not in indexr+   r.   r|   rX   Tr}   z\['x'\] not in indexzY\"None of \[Int64Index\(\[3, 3, 3\], dtype='int64', name='idx'\)\] are in the \[index\]\"r~   r   r   rJ   r/   r0   r   )	r   r   r1   r2   r€   r&   r   rP   rc   )r   rƒ   r�   Zexp_idxr   rS   r5   r   r   r   Ú!test_series_partial_set_with_nameÐ  sJ    ÿ*,,,,z4TestPartialSetting.test_series_partial_set_with_nameÚkeyéd   g      Y@c                 C   s„   t  ¡ }| ¡ }|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 )Nr   r„   rp   rD   )r   ÚmakeTimeDataFramerV   rc   r&   r   Úlistr   r9   r   r'   ZconcatenateÚvaluesr   r!   r   )r   r†   Úorigr   Zex_indexZex_datar   r   r   r   Ú6test_setitem_with_expansion_numeric_into_datetimeindex
  s    zITestPartialSetting.test_setitem_with_expansion_numeric_into_datetimeindexc                 C   s�   t  ¡ }| ¡ }|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Œt‚d S )Nr   rK   r
   r9   )r   rˆ   rV   rc   r&   r   r   rr   r   rw   rx   r   rE   r   r   Útolistr#   ÚAssertionError)r   r‹   r   r�   r)   r   r   r   Útest_partial_set_invalid  s    z+TestPartialSetting.test_partial_set_invalidzidx,labels,expected_idxÚ2000é   rm   )Ústartrl   rs   z
2000-01-04z
2000-01-08z
2000-01-12)rs   z1 day)r’   rl   Z4DZ8DZ12Dz4 dayz8 dayz12 dayc                 C   sR   |t dƒ|d�}dddg}|||ƒ}t ||j| ¡ |tkrNt ||| ¡ d S )Nr‘   r   r.   r0   é   )r%   r   Zassert_equalr&   r   rP   )r   rƒ   ÚlabelsZexpected_idxZframe_or_seriesÚobjZ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 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� |j|  W 5 Q R X d S )Nr‘   r   r|   r+   ©r   r%   r   r1   r2   r€   r&   )r   rƒ   r”   r�   r   r5   r   r   r   ÚBtest_loc_with_list_of_strings_representing_datetimes_missing_valueP  s    zUTestPartialSetting.test_loc_with_list_of_strings_representing_datetimes_missing_valuezidx,labels,msgzHNone 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 5 Q R X tjt|d�� ||  W 5 Q R X tjt|d�� |j|  W 5 Q R X d S )Nr‘   r   r+   r—   )r   rƒ   r”   r5   r�   r   r   r   r   ÚEtest_loc_with_list_of_strings_representing_datetimes_not_matched_typem  s    !zXTestPartialSetting.test_loc_with_list_of_strings_representing_datetimes_not_matched_typeN)r\   r]   r^   rf   rj   rv   ry   r‚   r…   r1   ÚmarkZparametrizerŒ   r�   r   r   r   r   r   Ztimedelta_rangeZ	Timedeltar–   r˜   r™   r   r   r   r   r_   æ   sz   &@[:



ýý
ýý
ýíþ
þþ÷þ
ü	ü	üïþr_   c                   @   s   e Zd Zdd„ ZdS )ÚTestStringSlicingc                 C   sf   t  dddd g¡}ttt|ƒƒ|d�}ttt|d d… ƒƒ|d d… d�}|dd… }t ||¡ d S )Nz
2012-01-01z
2012-01-02z
2012-01-03r   r.   z
2012-01-04)r   Úto_datetimer   r%   r@   r   r   )r   r   r   r   rS   r   r   r   Ú,test_slice_irregular_datetime_index_with_nanš  s
    $z>TestStringSlicing.test_slice_irregular_datetime_index_with_nanN)r\   r]   r^   r�   r   r   r   r   r›   ™  s   r›   )Ú__doc__Únumpyr'   r1   Zpandasr   r   r   r   r   r   r   r   Zpandas._testingZ_testingr   r	   r_   r›   r   r   r   r   Ú<module>   s   $	 P   6