U
    +ifuB                     @   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   s@   t jjtt| dfd}|jdd dd |D }t|dgdS )	N   )size   )Zaxisc                 S   s    g | ]}t |d  |d  qS )r   r   )letters).0x r   b/home/mars/bis/venv/lib/python3.8/site-packages/pandas/tests/indexing/test_chaining_and_caching.py
<listcomp>   s     zrandom_text.<locals>.<listcomp>r   columns)nprandomrandintlenr   sortr   )ZnobsZidxsstringsr   r   r   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selfdfr   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threefourfivesixseven      abc)r   r8   r   )r4   r8   r!   g      ?)r   r   r#   locAssertionError)r(   r+   contr)   r   r   r   test_setitem_cache_updating6   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@   rA   )r   r   r   Ziterrowsr9   r&   assert_frame_equalassert_series_equal)	r(   expectedoutr)   r1   ZeixZixrowvr   r   r   "test_setitem_cache_updating_slicesG   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	   r3      r6   r7   r=   B)r>   r   r   r8   )r   Z_item_cacher:   r   r(   r)   Zserr   r   r   (test_altering_series_clears_parent_cachej   s    "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r*   pytestmarkparametrizer<   rH   rL   r   r   r   r   r      s
   
#r   c                
   @   s|  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*ed+d,d-d*d.gigd/d0 Zejd1d2 Zd3d4 Z d5d6 Z!d7d8 Z"d9d: Z#d;S )<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)rX   Z	response1r=   barZbahfoor   )r   r   arrayrX   r&   rB   ZrecZ
fromarraysnanr%   headr=   )r(   dataZmdatar)   maskZrecarrayrD   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   r3   ABr   rI   r	   int64)r   dtyper=   r   )pdZ
set_optionr   listr   r#   reshape_is_copyr:   r&   rB   )r(   rD   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	   rg   rh   rI   r=   rJ   matchrd   r=   r   r   re   r3   rf   r   rJ   float64)r   r   ranger   r\   r#   rr   rl   r:   rP   raisescomSettingWithCopyErrormsgr]   rj   Zastyper&   rB   )r(   using_array_managerr)   rD   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	   rg   rn   rI   ro   rp   rd   r   r=   )r   r   rs   r   r\   r#   rr   rP   rt   ru   rv   rw   r9   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.   r1   r4   rg   rn   )r6   r8   rp   o*   r8   )r   r   rs   rl   r:   rP   rt   ru   rv   rw   r6   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	   r3   ro   aaarp   r   r=   )r   r=   )	r   rP   rt   ru   rv   rw   r9   r&   rB   )r(   rx   rD   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 )Nr=   r   r	   Z__tmp__picklerJ   )r   rl   r:   r&   Zensure_cleanZ	to_pickleri   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	   rI   c                 S   s   t | dkS N
   r   r   r   r   r   <lambda>      zSTestChaining.test_detect_chained_assignment_setting_entire_column.<locals>.<lambda>r   )
r   r%   rl   r:   r   applyr9   copyr}   lower)r(   r)   r   r   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   r9   rl   r:   r}   r   r   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   .  r   zLTestChaining.test_detect_chained_assignment_implicit_take2.<locals>.<lambda>r   r   r   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   r9   r}   r   r   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 )Nr6   r   )r   Zdropnarl   r:   r'   r   r   r   &test_detect_chained_assignment_is_copyA  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   rI   r   )r   r   r   randnr%   Zsort_valuesr&   rC   rK   r   r   r   &test_detect_chained_assignment_sortingI  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 )
Nr6   rI      	   )column1column2r   r7   r   r8   )r   r}   r'   r   r   r   .test_detect_chained_assignment_false_positivesR  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   r7   grouprp   r6   r   )	r   r   r#   rP   rt   ru   rv   rw   r%   r'   r   r   r   /test_detect_chained_assignment_undefined_columnb  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periodsrg   rn   r6   r7   r8   de)r=   rJ   r@   rA   rp   r[   r	   rA   r@   )r	   r@   )r   r   r   r   r   r#   rP   rt   ru   rv   rw   r9   r:   )r(   rx   r)   r   r   r   -test_detect_chained_assignment_changing_dtypem  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 )	NrI   zab..r6   r7   r   r5   rp   r8   )r   rj   rs   r   r]   ri   Zisnar8   rP   rt   ru   rv   rw   )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 )Nr6   r7   r8   r   r   f)r   yr   ghir   )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	   r3   ro   r   warnr   r   r=   rc   rp   )r   r   r&   assert_produces_warningru   SettingWithCopyWarningr9   rP   rt   rv   rw   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	   r3   rI   r      r4   r   ir6   r8   r   r   )	r   r   r&   r   ru   r   r8   r9   rB   r(   r)   rD   r   r   r   <test_detect_chained_assignment_warnings_filter_and_dupe_cols  s    * zITestChaining.test_detect_chained_assignment_warnings_filter_and_dupe_colsrhsr3   r   r   r	   rI   c              
   C   sp   t tddd}|jd d }tdd8 ttj	 }||d< |d j
tksXtW 5 Q R X W 5 Q R X d S )N   r   r3   r   r   r	   r   )r   r   r#   rk   r9   r   r&   r   ru   r   filename__file__r:   )r(   r   r)   Zchainedtr   r   r   1test_detect_chained_assignment_warning_stacklevel  s    z>TestChaining.test_detect_chained_assignment_warning_stacklevelc                 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   r3   ro   r=   r	   )r	   r=   )r   r   zerosZonesr%   r9   r&   Zassert_numpy_array_equal)r(   r)   rD   ra   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 )Nr=   r   zHello FriendrJ   )r&   ZmakeDataFramer%   r9   r>   r:   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   rg   rn   r6   r7   r8   r   r   r   )r   r>   r   r   r   r3   r	   )r   r   )r3   r   name)r   r   r   rs   r   valuesatr&   rB   r   rC   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   rs   r   r%   r:   )r(   r)   Zckr   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 )Nr6   r         (   rI   r   )r   r9   r&   rB   rC   r   r'   r   r   r   'test_getitem_loc_assignment_slice_state  s    z4TestChaining.test_getitem_loc_assignment_slice_stateN)$rM   rN   rO   rb   rP   rQ   Zarm_slowrm   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rR   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rS   z   sV   "








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


	
 


	rS   )r   )stringr   r   numpyr   rP   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasri   r   r   r   r   r   Zpandas._testingZ_testingr&   Zpandas.core.commoncorecommonru   rw   r   r   rS   r   r   r   r   <module>   s   
	[