a
    GGbuB                     @   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   Nlib/python3.9/site-packages/pandas/tests/indexing/test_chaining_and_caching.py
<listcomp>       zrandom_text.<locals>.<listcomp>r   columns)nprandomZrandintlenr   sortr   )ZnobsZidxsZ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   s   t dd l ttddgd d}d|d< |d  t| d|d jd	< |  t|d d	 d W d    n1 s|0    Y  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   sr   g d}t ||dd  |d d  tdd}|r@|jd  d|jd< |jd dks\J |jd d	ksnJ d S )
N)onetwothreeZfourZfivesixZseven      abc)r   r4   r   )r0   r4   r    g      ?)r   r   r"   loc)r'   r*   Zcontr(   r   r   r   test_setitem_cache_updating6   s    *

z'TestCaching.test_setitem_cache_updatingc           	      C   s  t dg ditddd}t dg ditddd}t g dg dd	}td}td}| D ]8\}}|j|||d
 f |d  |j|||d
 f< qbt|| t|d |d  t dg ditddd}| D ]8\}}||d
  || |d  }|||d
  ||< qt|| t|d |d  t dg ditddd}| D ],\}}|j|||d
 f  |d 7  < qZt|| t|d |d  d S )NA)X  r8   r8   z5/7/2014z5/9/2014)index)r   r   r   )r7   r7   r7   )r      i,  )CDr;   r<   )r   r   r   Ziterrowsr5   r%   assert_frame_equalassert_series_equal)	r'   expectedoutr(   r.   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v s8J d
|d< t|dksPJ d|jvs^J |d |usnJ t|d dksJ d S )Nr   r	   r/      r2   r3   r7   B)r9   r   r   r4   )r   Z_item_cacher   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parametrizer6   rC   rG   r   r   r   r   r      s
   
#r   c                   @   sx  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+g d,igd-d. Zejd/d0 Zd1d2 Z d3d4 Z!d5d6 Z"d7d8 Z#d9S ):TestChainingc                 C   sT  g d}g d}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g di}tj|d j	d< |
 }t|| t dtg di}tj|jj	d< |
 }t|| d S )N)rightleftrP   rP   rO   rP   timeout)rO   rP   rP   rP   rO   rP   noneresponserQ   rR   )names)rS   Z	response1r7   barbahfoo)rW   rU   rV   rW   rU   r   )r   r   arrayrS   r%   r=   ZrecZ
fromarraysnanr$   headr7   )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 u sVJ d|d d< d|d d< t	|| d S )Nr   raiser   r/   ABr   rD   r	   int64)r   dtyper7   r   )
pdZ
set_optionr   listr   r"   reshape_is_copyr%   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 u s<J |stj	t
jtd d|d d	< W d    n1 sr0    Y  tj	t
jtd tj|d d
< W d    n1 s0    Y  |d jd u sJ 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   rD   r7   rE   matchr`   r7   r   r   ra   r/   rb   r   rE   float64)r   r   ranger   rX   r"   rn   rh   rK   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   sp   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 d    n1 sb0    Y  d S )
Nr	   rc   rj   rD   rk   rl   r`   r   r7   )r   r   ro   r   rX   r"   rn   rK   rp   rq   rr   rs   r5   r&   r   r   r   $test_detect_chained_assignment_fails   s    z1TestChaining.test_detect_chained_assignment_failsc                 C   sz   t g dttdddd}|jd u s,J tjtjtd* |j	j
d}d|| d	< W d    n1 sl0    Y  d S )
N)r+   r+   r,   r-   r,   r+   r.   r0   rc   rj   )r2   r4   rl   o*   r4   )r   r   ro   rh   rK   rp   rq   rr   rs   r2   str
startswithr'   r(   indexerr   r   r   *test_detect_chained_assignment_doc_example   s    z7TestChaining.test_detect_chained_assignment_doc_examplec                 C   s   t g dg dd}t g dg dd}tjtjtd d|jd d< W d    n1 s`0    Y  |stjtjtd d|d d< W d    n1 s0    Y  d|jd	< nd|d d< t|| d S )
N)o   bbbcccr   r	   r/   rk   Zaaar   r   rl   r~   r   r7   )r   r7   )	r   rK   rp   rq   rr   rs   r5   r%   r=   )r'   rt   r?   r(   r   r   r   +test_detect_chained_assignment_object_dtype   s    ,*z8TestChaining.test_detect_chained_assignment_object_dtypec                 C   sx   t dddgi}|jd u sJ td<}|| t|}|d |d< |d |d< W d    n1 sj0    Y  d S )Nr7   r   r	   Z__tmp__picklerE   )r   rh   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g d }|jd us$J |jg d }|jd us@J |jdd }|j|  }|jd u slJ |d tj|d< d S )N順 )r   r   r	   )r   r   r	   rD   c                 S   s   t | dkS N
   r   r   r   r   r   <lambda>  r   zSTestChaining.test_detect_chained_assignment_setting_entire_column.<locals>.<lambda>r   )	r   r$   rh   r   applyr5   copyry   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 us0J |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   r5   rh   ry   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 us0J |d tj|jd d df< |jd u s\J |d tj|d< |jd u s~J 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   r5   ry   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 u s J |d  d7  < d S )Nr2   r   )r   Zdropnarh   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   rD   r   )r   r   r   randnr$   Zsort_valuesr%   r>   rF   r   r   r   &test_detect_chained_assignment_sortingI  s    z3TestChaining.test_detect_chained_assignment_sortingc                 C   sj   t g dg dd}t| |d d |d< t| ||d dk }t| |d d |d< t| d S )	N)r2   r2   r2   )rD      	   )column1column2r   r3   r   r   r4   )r   ry   r&   r   r   r   .test_detect_chained_assignment_false_positivesR  s    z;TestChaining.test_detect_chained_assignment_false_positivesc                 C   sd   t tdddgd}d|d< tjtjtd" d|jdd	 d< W d    n1 sV0    Y  d S )
Nr   r   countr   r3   grouprl   r2   r   )	r   r   r"   rK   rp   rq   rr   rs   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g dd}tjtj	t
d d	|jd
 d< W d    n1 sd0    Y  tjtj	t
d d	|jd
 d< W d    n1 s0    Y  |stjtj	t
d d	|d d
< W d    n1 s0    Y  n d	|d d
< |jd d	ksJ d S )NZ20130101r   )Zperiodsrc   rj   r2   r3   r4   de)r7   rE   r;   r<   rl   rW   r	   r<   r;   )r	   r;   )r   r   r   r   r   r"   rK   rp   rq   rr   rs   r5   )r'   rt   r(   r   r   r   -test_detect_chained_assignment_changing_dtypem  s     

	,,,z:TestChaining.test_detect_chained_assignment_changing_dtypec                 C   s~   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 d    n1 sp0    Y  d S )	NrD   zab..r2   r3   r   r1   rl   r4   )r   rf   ro   r   rY   re   Zisnar4   rK   rp   rq   rr   rs   )r'   r(   r\   r   r   r   test_setting_with_copy_bug  s     z'TestChaining.test_setting_with_copy_bugc                 C   s8   t tg dtg dd}|dg }g d|d< d S )Nr1   )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 g dg dd}tddJ ttj d|jd d< W d    n1 sR0    Y  W d    n1 sp0    Y  tdd	N tjtj	t
d
 d|jd d< W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   r   rk   r   warnr~   r   r7   r_   rl   )r   r   r%   assert_produces_warningrq   SettingWithCopyWarningr5   rK   rp   rr   rs   r&   r   r   r   .test_detect_chained_assignment_warnings_errors  s    Jz;TestChaining.test_detect_chained_assignment_warnings_errorsc              	   C   s   t dd tg dg dg dgg dd}ttj" d |jj|jdk< W d    n1 sb0    Y  tg dg dg dgg dd}t|| W d    n1 s0    Y  d S )	Nr   r   r   )rD   r      )r0   r   i)r2   r2   r4   r   r   )	r   r   r%   r   rq   r   r4   r5   r=   r'   r(   r?   r   r   r   <test_detect_chained_assignment_warnings_filter_and_dupe_cols  s    "0zITestChaining.test_detect_chained_assignment_warnings_filter_and_dupe_colsrhsr/   r   )r   r	   r/   rD   c              	   C   s   t tddd}|jd d }tddV ttj	*}||d< |d j
tksXJ W d    n1 sl0    Y  W d    n1 s0    Y  d S )N   r   r/   r   r   r	   r   )r   r   r"   rg   r5   r   r%   r   rq   r   filename__file__)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   r/   rk   r7   r	   )r	   r7   )r   r   zerosZonesr$   r5   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v s2J d|d jv sDJ d S )Nr7   r   zHello FriendrE   )r%   ZmakeDataFramer$   r5   r9   r&   r   r   r   test_cache_updating  s
    z TestChaining.test_cache_updatingc                 C   s   t tjdddg dtdd}d|d< d	|jjd
< d|jjd
< t tjdddg dtdd}d|jd< t|| t	g ddd}t
|j| d S )N)r   r   rc   rj   r   r   )r   r9   r   r   r   r/   r	   )r   r   )r2   r3   r4   r   r   r   )r/   r   )r   r   r   r	   r   name)r   r   r   ro   r   valuesZatr%   r=   r   r>   r   r   r   r   test_cache_updating2  s"    
z!TestChaining.test_cache_updating2c                 C   s   t dd z 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svJ W d    n1 s0    Y  d S )Nr   r   r   r   r    r!   Tgp=
ף?r   r   g333333?)r   r   ro   r   r$   )r'   r(   Zckr   r   r   $test_iloc_setitem_chained_assignment  s    
z1TestChaining.test_iloc_setitem_chained_assignmentc                 C   sV   t dg di}d|d jd< t|t dg di t|d tg ddd d S )Nr2   )r         (   rD   r   )r   r5   r%   r=   r>   r   r&   r   r   r   'test_getitem_loc_assignment_slice_state  s    z4TestChaining.test_getitem_loc_assignment_slice_stateN)$rH   rI   rJ   r^   rK   rL   Zarm_slowri   ru   rv   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rN   z   sV   "








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


	



	rN   )r   )stringr   r   Znumpyr   rK   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasre   r   r   r   r   r   Zpandas._testingZ_testingr%   Zpandas.core.commoncorecommonrq   rs   r   r   rN   r   r   r   r   <module>   s   
	[