U
    f/eQ@                     @   s   d dl mZ d dlZd dlZd dlm  mZ	 d dl
Zd dl
mZmZmZmZmZ d dlmZ d dlm  mZ dZdddZG dd	 d	ZG d
d dZdS )    )ascii_lettersN)	DataFrameSeries	Timestamp
date_rangeoption_contextzAA value is trying to be set on a copy of a slice from a DataFramed   c                 C   sX   g }t | D ]<}tjjttdd}|  |t|d |d  g qt|dgdS )N   )sizer      letterscolumns)	rangenprandomrandintlenr   sortappendr   )Znobsdfiidx r   S/tmp/pip-unpacked-wheel-tiezk1ph/pandas/tests/indexing/test_chaining_and_caching.pyrandom_text   s    r   c                   @   s>   e Zd Zdd Zejdddgdd Zdd	 Zd
d Z	dS )TestCachingc              	   C   sv   t dd b ttddgd d}d|d< |d  t| d|d jd	< |  t|d d	 d W 5 Q R X d S )
Nchained_assignment   皙@Zaabb        ccr!   g(\?r   )	r   r   r   arangereprilocZ_clear_item_cachetmZassert_almost_equalselfr   r   r   r   ,test_slice_consolidate_invalidate_item_cache"   s    z8TestCaching.test_slice_consolidate_invalidate_item_cachedo_refTFc                 C   s|   dddddddg}t ||dd  |d d  td	d
}|rJ|jd  d|jd< |jd dksft|jd dksxtd S )NonetwothreeZfourZfivesixZseven      abc)r   r5   r   )r1   r5   r"   g      ?)r   r   r$   locAssertionError)r)   r+   Zcontr   r   r   r   test_setitem_cache_updating8   s    *

z'TestCaching.test_setitem_cache_updatingc           	      C   s  t ddddgitddd}t ddddgitddd}t dddgddd	gd
}td}td}| D ]8\}}|j|||d f |d  |j|||d f< qjt|| t|d |d  t ddddgitddd}| D ]8\}}||d  || |d  }|||d  ||< qt|| t|d |d  t ddddgitddd}| D ],\}}|j|||d f  |d 7  < qft|| t|d |d  d S )NAiX  z5/7/2014z5/9/2014)indexr   r      i,  )CDr<   r=   )r   r   r   Ziterrowsr6   r'   assert_frame_equalassert_series_equal)	r)   expectedoutr   r/   Zeixixrowvr   r   r   "test_setitem_cache_updating_slicesI   s.     2&z.TestCaching.test_setitem_cache_updating_slicesc                 C   s   t ddgddggddgddgd	}|d }d|jks8td
|d< t|dksPtd|jks^t|d |k	sntt|d dkstd S )Nr   r	   r0      r3   r4   r9   B)r:   r   r   r5   )r   Z_item_cacher7   r   r)   r   Zserr   r   r   (test_altering_series_clears_parent_cachel   s    "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r*   pytestmarkZparametrizer8   rE   rI   r   r   r   r   r   !   s
   
#r   c                   @   sR  e Zd Zdd Zejjdd Zejjdd Zejjdd Z	ejjd	d
 Z
ejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd Zejjdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zejd)d* Zd+d, Zd-d. Zd/d0 Zd1d2 Z d3S )4TestChainingc              	   C   st  dddddddg}dddddddg}t dt|i}|jdk}d|j|< t|t d|i tjj|gdgd}t |}|jdk}d|j|< t|t d|i t ||d}|jdk}d|j|< t|t ||d t dtjd	d
dd	gi}t dtdd	d
dd	gi}tj|d j	d< |
 }t|| t dtdd	d
dd	gi}tj|jj	d< |
 }t|| d S )Nrightlefttimeoutnoneresponse)names)rT   Z	response1r9   barZbahfoor   )r   r   arrayrT   r'   r>   ZrecZ
fromarraysnanr&   headr9   )r)   dataZmdatar   maskZrecarrayr@   resultr   r   r   test_setitem_chained_setfault}   s0    





z*TestChaining.test_setitem_chained_setfaultc                 C   s~   t dd tddgddggtdd}ttd	d
d
tddd}|jd ksVtd|d d< d|d d< t	
|| d S )Nr   raiser   r0   ABr   rF   r	   int64)r   dtyper9   r   )pdZ
set_optionr   listr   r$   Zreshape_is_copyr7   r'   r>   )r)   r@   r   r   r   r   test_detect_chained_assignment   s     z+TestChaining.test_detect_chained_assignmentc              	   C   s   t ttdddtjtddtjdd}|jd ks<t|st	j
tjtd d|d d	< W 5 Q R X t	j
tjtd tj|d d
< W 5 Q R X |d jd kstnRd|d d	< d|d d
< t ddgddggtdd}|d d|d< t|| d S )Nr	   rc   rd   rF   r9   rG   matchr`   r9   r   r   ra   r0   rb   r   rG   float64)r   r   r   r   rX   r$   rm   rg   r7   rM   raisescomSettingWithCopyErrormsgrY   rf   Zastyper'   r>   )r)   using_array_managerr   r@   r   r   r   %test_detect_chained_assignment_raises   s"    z2TestChaining.test_detect_chained_assignment_raisesc              	   C   s\   t ttdddtjtddtjdd}tjt	j
td d|jd d	< W 5 Q R X d S )
Nr	   rc   ri   rF   rj   rk   r`   r   r9   )r   r   r   r   rX   r$   rm   rM   rn   ro   rp   rq   r6   r(   r   r   r   $test_detect_chained_assignment_fails   s    z1TestChaining.test_detect_chained_assignment_failsc              	   C   sp   t dddddddgttdddd}|jd ks6ttjtjt	d	  |j
jd
}d|| d< W 5 Q R X d S )Nr,   r-   r.   r/   r1   rc   ri   )r3   r5   rk   o*   r5   )r   r   r   rg   r7   rM   rn   ro   rp   rq   r3   str
startswithr)   r   indexerr   r   r   *test_detect_chained_assignment_doc_example   s    z7TestChaining.test_detect_chained_assignment_doc_examplec              	   C   s   t dddgdddgd}t dddgdddgd}tjtjtd	 d|jd
 d< W 5 Q R X |stjtjtd	 d|d d
< W 5 Q R X d|jd< nd|d d
< t|| d S )No   bbbcccr   r	   r0   rj   aaark   r   r9   )r   r9   )	r   rM   rn   ro   rp   rq   r6   r'   r>   )r)   rr   r@   r   r   r   r   +test_detect_chained_assignment_object_dtype   s    z8TestChaining.test_detect_chained_assignment_object_dtypec              	   C   sd   t dddgi}|jd ksttd2}|| t|}|d |d< |d |d< W 5 Q R X d S )Nr9   r   r	   Z__tmp__picklerG   )r   rg   r7   r'   Zensure_cleanZ	to_picklere   Zread_pickle)r)   r   pathdf2r   r   r   -test_detect_chained_assignment_is_copy_pickle   s    

z:TestChaining.test_detect_chained_assignment_is_copy_picklec                 C   s   t d}|jdddg }|jd k	s&t|jddddg }|jd k	sFt|jdd }|j|  }|jd ksrt|d tj	|d< d S )	N順 r   r   r	   rF   c                 S   s   t | dkS N
   r   xr   r   r   <lambda>      zSTestChaining.test_detect_chained_assignment_setting_entire_column.<locals>.<lambda>r   )
r   r&   rg   r7   r   applyr6   copyrw   lower)r)   r   r   rz   r   r   r   4test_detect_chained_assignment_setting_entire_column  s    zATestChaining.test_detect_chained_assignment_setting_entire_columnc                 C   sH   t d}|jdd }|j| }|jd k	s0t|d tj|d< d S )Nr   c                 S   s   t | dkS r   r   r   r   r   r   r   %  r   zKTestChaining.test_detect_chained_assignment_implicit_take.<locals>.<lambda>r   r   r   r   r6   rg   r7   rw   r   ry   r   r   r   ,test_detect_chained_assignment_implicit_take   s
    
z9TestChaining.test_detect_chained_assignment_implicit_takec                 C   s   t d}|jdd }|j| }|jd k	s0t|d tj|jd d df< |jd ks\t|d tj|d< |jd ks~td S )Nr   c                 S   s   t | dkS r   r   r   r   r   r   r   0  r   zLTestChaining.test_detect_chained_assignment_implicit_take2.<locals>.<lambda>r   r   ry   r   r   r   -test_detect_chained_assignment_implicit_take2+  s    
z:TestChaining.test_detect_chained_assignment_implicit_take2c                 C   s<   t d}|jdd }|j|df tj|j|df< d S )Nr   c                 S   s   t | dkS r   r   r   r   r   r   r   @  r   zATestChaining.test_detect_chained_assignment_str.<locals>.<lambda>r   )r   r   r   r6   rw   r   ry   r   r   r   "test_detect_chained_assignment_str<  s    z/TestChaining.test_detect_chained_assignment_strc                 C   s4   t ddgi }|jd ks t|d  d7  < d S )Nr3   r   )r   Zdropnarg   r7   r(   r   r   r   &test_detect_chained_assignment_is_copyC  s    z3TestChaining.test_detect_chained_assignment_is_copyc                 C   s^   t tjdd}|jd d df  }t||jd d df   t||d   d S )Nr   rF   r   )r   r   r   randnr&   Zsort_valuesr'   r?   rH   r   r   r   &test_detect_chained_assignment_sortingK  s    z3TestChaining.test_detect_chained_assignment_sortingc                 C   sn   t dddgdddgd}t| |d d |d< t| ||d dk }t| |d d	 |d< t| d S )
Nr3   rF      	   )column1column2r   r4   r   r5   )r   rw   r(   r   r   r   .test_detect_chained_assignment_false_positivesT  s    z;TestChaining.test_detect_chained_assignment_false_positivesc              	   C   sP   t tdddgd}d|d< tjtjtd d|jdd	 d< W 5 Q R X d S )
Nr   r   countr   r4   grouprk   r3   r   )	r   r   r$   rM   rn   ro   rp   rq   r&   r(   r   r   r   /test_detect_chained_assignment_undefined_columnd  s    z<TestChaining.test_detect_chained_assignment_undefined_columnc              	   C   s   t tdddtjdtjddddddd	d
gd}tjtj	t
d d|jd d< W 5 Q R X tjtj	t
d d|jd d< W 5 Q R X |stjtj	t
d d|d d< W 5 Q R X nd|d d< |jd dkstd S )NZ20130101r   )Zperiodsrc   ri   r3   r4   r5   de)r9   rG   r<   r=   rk   rW   r	   r=   r<   )r	   r<   )r   r   r   r   r   r$   rM   rn   ro   rp   rq   r6   r7   )r)   rr   r   r   r   r   -test_detect_chained_assignment_changing_dtypeo  s     

	z:TestChaining.test_detect_chained_assignment_changing_dtypec              	   C   sj   t ttdtdddtjdgd}t|j}tj	t
jtd |dg | |dg |< W 5 Q R X d S )	NrF   zab..r3   r4   r   r2   rk   r5   )r   rf   r   r   rY   re   Zisnar5   rM   rn   ro   rp   rq   )r)   r   r\   r   r   r   test_setting_with_copy_bug  s     z'TestChaining.test_setting_with_copy_bugc                 C   s>   t tdddgtdddgd}|dg }d	d
dg|d< d S )Nr3   r4   r5   r   r   f)r   yr   ghr   r   )r   r   )r)   Zdf1r   r   r   r   %test_setting_with_copy_bug_no_warning  s    "
z2TestChaining.test_setting_with_copy_bug_no_warningc              
   C   s   t dddgdddgd}tdd	, ttj d
|jd d< W 5 Q R X W 5 Q R X tdd0 tjtj	t
d d
|jd d< W 5 Q R X W 5 Q R X d S )Nr   r}   r~   r   r	   r0   rj   r   warnr|   r   r9   r_   rk   )r   r   r'   assert_produces_warningro   SettingWithCopyWarningr6   rM   rn   rp   rq   r(   r   r   r   .test_detect_chained_assignment_warnings_errors  s    "z;TestChaining.test_detect_chained_assignment_warnings_errorsc              
   C   s   t dd tdddgdddgd	d
dggdddgd}ttj d |jj|jdk< W 5 Q R X tdddgdddgd	d
dggdddgd}t|| W 5 Q R X d S )Nr   r   r   r	   r0   rF   r      r1   r   ir3   r5   r   r   )	r   r   r'   r   ro   r   r5   r6   r>   r)   r   r@   r   r   r   <test_detect_chained_assignment_warnings_filter_and_dupe_cols  s    * zITestChaining.test_detect_chained_assignment_warnings_filter_and_dupe_colsc                 C   s   t dtdg dtdg d}|d jd }|jd }t|| |jd d }t|| |d jd }t|| |d jd }t|| d S )Nr   r0   rj   r9   r	   )r	   r9   )r   r   zerosZonesr&   r6   r'   Zassert_numpy_array_equal)r)   r   r@   r]   Zresult2Zresult3Zresult4r   r   r   test_chained_getitem_with_lists  s    &
z,TestChaining.test_chained_getitem_with_listsc                 C   sH   t  }|d  |jd |jd< d|d jks2td|d jksDtd S )Nr9   r   zHello FriendrG   )r'   ZmakeDataFramer&   r6   r:   r7   r(   r   r   r   test_cache_updating  s
    z TestChaining.test_cache_updatingc                 C   s   t tjddddddddgtd	d
}d|d< d|jjd< d|jjd< t tjdddddddddgtd	d
}d|jd< t|| t	dddddgdd}t
|j| d S )N)r   r   rc   ri   r3   r4   r5   r   r   r   )r   r:   r   r   r   r0   r	   )r   r   )r0   r   name)r   r   r   r   r   valuesatr'   r>   r   r?   r   r   r   r   test_cache_updating2  s"    
z!TestChaining.test_cache_updating2c              	   C   s   t dd p ttddgd d}d|d< dgt| }d|d	 jd
< |j| }d|d	 jd
< |d	 jd
 dksvtW 5 Q R X d S )Nr   r   r   r    r"   r#   Tgp=
ף?r!   r   g333333?)r   r   r   r   r&   r7   )r)   r   ZckZdf_tmpr   r   r   $test_iloc_setitem_chained_assignment  s    
z1TestChaining.test_iloc_setitem_chained_assignmentc                 C   s\   t ddddgi}d|d jd< t|t ddddgi t|d tdddgdd d S )Nr3   r         (   rF   r   )r   r6   r'   r>   r?   r   r(   r   r   r   'test_getitem_loc_assignment_slice_state  s    z4TestChaining.test_getitem_loc_assignment_slice_stateN)!rJ   rK   rL   r^   rM   rN   Zarm_slowrh   rs   rt   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rO   |   sR   "
















	

	rO   )r   )stringr   r   Znumpyr   rM   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasre   r   r   r   r   r   Zpandas._testingZ_testingr'   Zpandas.core.commoncorecommonro   rq   r   r   rO   r   r   r   r   <module>   s   
[