o
    ҷhX                     @   s   d dl mZ d dlZd dlZd dlmZm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ZdddZG d	d
 d
ZG dd dZdS )    )ascii_lettersN)SettingWithCopyErrorSettingWithCopyWarning)	DataFrameSeries	Timestamp
date_rangeoption_contextzAA value is trying to be set on a copy of a slice from a DataFramed   c                 C   sF   t jdjtt| dfd}|jdd dd |D }t|dgdS )	N   )size   )axisc                 S   s    g | ]}t |d  |d  qS )r   r   )letters).0x r   b/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/indexing/test_chaining_and_caching.py
<listcomp>   s     zrandom_text.<locals>.<listcomp>r   columns)nprandomdefault_rngintegerslenr   sortr   )nobs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   s   t dd j ttddgd d}d|d< |d  t| |r=t  d|d jd	< W d    n1 s7w   Y  nd|d jd	< |  |sUt	|d d	 d nt	|d d	 d W d    d S W d    d S 1 srw   Y  d S )
Nchained_assignment   皙@aabb        ccr'   g(\?r   )
r	   r   r   arangereprtmraises_chained_assignment_erroriloc_clear_item_cacheassert_almost_equalselfusing_copy_on_write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s7J d S )
N)onetwothreefourfivesixseven      abc)r   rC   r   )r?   rC   r(   g      ?)r   r   r*   loc)r2   r6   contr4   r   r   r   test_setitem_cache_updating?   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 ]\}}|j|||d
 f |d  |j|||d
 f< q1t|| t|d |d  t dg ditddd}| }	| D ]=\}}||d
  || |d  }
|rt	  |
||d
  ||< W d    n1 sw   Y  qs|
||d
  ||< qs|st|| t|d |d  nt||	 t|d |	d  t dg ditddd}| D ]\}}|j|||d
 f  |d 7  < qt|| t|d |d  d S )NA)X  rH   rH   z5/7/2014z5/9/2014)index)r   r   r   )rG   rG   rG   )r
      i,  )CDrK   rL   )
r   r   r   iterrowsrD   r,   assert_frame_equalassert_series_equalcopyr-   )r2   r3   expectedoutr4   r<   eixixrowout_originalvr   r   r   "test_setitem_cache_updating_slicesP   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 }|rd|jvsJ nd|jv s&J d
|d< t|dks2J d|jvs9J |d |usAJ t|d dksKJ d S )Nr   r   r>      rA   rB   rG   B)rI   r   r#   rC   )r   _item_cacher   )r2   r3   r4   serr   r   r   (test_altering_series_clears_parent_cache|   s   "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r5   pytestmarkparametrizerF   rX   r]   r   r   r   r   r!   "   s    
,r!   c                   @   sp  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ejd'd(ed)g d*igd+d, Zejd-d. Zd/d0 Zd1d2 Z d3d4 Z!d5d6 Z"d7S )8TestChainingc           
      C   s  g d}g d}t dt|i}|jdk}|r<t  d|j|< W d    n1 s,w   Y  t|t d|i nd|j|< t|t d|i tjj|gdgd}t |}|jdk}|rt  d|j|< W d    n1 stw   Y  t|t d|i nd|j|< t|t d|i t ||d}|	 }|jdk}|rt  d|j|< W d    n1 sw   Y  t|| nd|j|< t|t ||d t dtj
d	d
dd	gi}t dtg di}|rt  tj
|d jd< W d    n	1 sw   Y  t dg di}ntj
|d jd< t dtj
d	d
dd	gi}| }	t|	| t dtg di}|r^t  tj
|jjd< W d    n	1 sXw   Y  ntj
|jjd< | }	t|	| d S )N)rightleftrf   rf   re   rf   timeout)re   rf   rf   rf   re   rf   noneresponserg   rh   )names)ri   	response1rG   barbahfoo)rn   rl   rm   rn   rl   r   )r   r   arrayri   r,   r-   rN   rec
fromarraysrP   nanr.   headrG   )
r2   r3   datamdatar4   maskrecarraydf_originalrQ   resultr   r   r   test_setitem_chained_setfault   sf   










z*TestChaining.test_setitem_chained_setfaultc              	   C   s0  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 s/J |rlt	  d|d d< W d    n1 sFw   Y  t	  d|d d< W d    n1 s`w   Y  t
|| nd|d d< d|d d< t
|| W d    d S W d    d S 1 sw   Y  d S )Nr"   raiser   r>   ABr   rY   r   int64)r   dtyperG   r   )r	   r   listr   r*   reshaperP   _is_copyr,   r-   rN   )r2   r3   rQ   r4   rx   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 |r`t	
  d|d d< W d    n1 s9w   Y  t	
  d	|d d
< W d    n1 sSw   Y  t	|| d S |stjttd d|d d< W d    n1 szw   Y  tjttd tj|d d
< W d    n1 sw   Y  |d jd u sJ d S d|d d< d	|d d
< t ddgd	dggtdd}|d d|d< t	|| d S )Nr   r   r   rY   rG   rZ   r|   rG   r   r}   r   matchr>   r~   r   rZ   float64)r   r   ranger   ro   r*   r   rP   r   r,   r-   rN   ra   raisesr   msgrr   r   astype)r2   using_array_managerr3   r4   rx   rQ   r   r   r   %test_detect_chained_assignment_raises   s8   

z2TestChaining.test_detect_chained_assignment_raisesc                 C   s   t ttdddtjtddtjdd}|r7t  d|j	d d< W d    d S 1 s0w   Y  d S t
jttd	 d|j	d d< W d    d S 1 sQw   Y  d S )
Nr   r   r   rY   r   r|   r   rG   r   )r   r   r   r   ro   r*   r   r,   r-   rD   ra   r   r   r   r1   r   r   r   $test_detect_chained_assignment_fails  s   
""z1TestChaining.test_detect_chained_assignment_failsc                 C   s   t g dttdddd}|jd u sJ |r<|jjd}t  d|| d< W d    d S 1 s5w   Y  d S t	j
ttd	 |jjd}d|| d< W d    d S 1 s\w   Y  d S )
N)r7   r7   r8   r9   r8   r7   r<   r?   r   r   )rA   rC   o*   rC   r   )r   r   r   r   rA   str
startswithr,   r-   ra   r   r   r   r2   r3   r4   indexerr   r   r   *test_detect_chained_assignment_doc_example  s   
""z7TestChaining.test_detect_chained_assignment_doc_examplec                 C   s0  t g dg dd}t g dg dd}| }|s:tjttd d|jd d< W d    n1 s5w   Y  |r^t  d|d d< W d    n1 sQw   Y  t	|| d S |stjttd d|d d< W d    n1 sxw   Y  d|jd	< t	|| d S d|d d< t	|| d S )
N)o   bbbcccr   r   r>   r   aaar   r   r   r   r   rG   )r   rG   )
r   rP   ra   r   r   r   rD   r,   r-   rN   )r2   r   r3   rQ   r4   rx   r   r   r   +test_detect_chained_assignment_object_dtype+  s(   

z8TestChaining.test_detect_chained_assignment_object_dtypec                 C   sz   t dddgi}|jd u sJ td}|| t|}|d |d< |d |d< W d    d S 1 s6w   Y  d S )NrG   r   r   __tmp__picklerZ   )r   r   r,   ensure_clean	to_picklepdread_pickle)r2   r4   pathdf2r   r   r   -test_detect_chained_assignment_is_copy_pickleG  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 s6J |d tj|d< d S )N順 )r   r   r   )r   r   r   rY   c                 S      t | dkS N
   r   r   r   r   r   <lambda>a      zSTestChaining.test_detect_chained_assignment_setting_entire_column.<locals>.<lambda>r   )	r    r.   r   r   applyrD   rP   r   lower)r2   r4   r   r   r   r   r   4test_detect_chained_assignment_setting_entire_columnS  s   zATestChaining.test_detect_chained_assignment_setting_entire_columnc                 C   sH   t d}|jdd }|j| }|jd usJ |d tj|d< d S )Nr   c                 S   r   r   r   r   r   r   r   r   k  r   zKTestChaining.test_detect_chained_assignment_implicit_take.<locals>.<lambda>r   )r    r   r   rD   r   r   r   r2   r4   r   r   r   r   ,test_detect_chained_assignment_implicit_takeg  s
   
z9TestChaining.test_detect_chained_assignment_implicit_takec                 C   s   |rt d td}|jdd }|j| }|jd usJ |d tj|jd d df< |jd us5J |d tj|d< |jd u sFJ d S )Nz"_is_copy is not always set for CoWr   c                 S   r   r   r   r   r   r   r   r   w  r   zLTestChaining.test_detect_chained_assignment_implicit_take2.<locals>.<lambda>r   )	ra   skipr    r   r   rD   r   r   r   r   r   r   r   -test_detect_chained_assignment_implicit_take2q  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   r   r   r   r   r   r   r   r     r   zATestChaining.test_detect_chained_assignment_str.<locals>.<lambda>r   )r    r   r   rD   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 u sJ |d  d7  < d S )NrA   r   )r   dropnar   r2   r4   r   r   r   &test_detect_chained_assignment_is_copy  s   z3TestChaining.test_detect_chained_assignment_is_copyc                 C   sb   t tjdd}|jd d df  }t||jd d df   t||d   d S )Nr   )r   rY   r   )	r   r   r   r   standard_normalr.   sort_valuesr,   rO   )r2   r4   r\   r   r   r   &test_detect_chained_assignment_sorting  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)rA   rA   rA   )rY      	   )column1column2r   rB   r   r   rC   )r   r   r   r   r   r   .test_detect_chained_assignment_false_positives  s   z;TestChaining.test_detect_chained_assignment_false_positivesc                 C   s   t tdddgd}d|d< | }|r:t  d|jdd d< W d    n1 s-w   Y  t|| d S tj	t
td	 d|jdd d< W d    d S 1 sVw   Y  d S )
Nr   r   countr   rB   grouprA   r#   r   )r   r   r*   rP   r,   r-   r.   rN   ra   r   r   r   )r2   r3   r4   rx   r   r   r   /test_detect_chained_assignment_undefined_column  s   
"z<TestChaining.test_detect_chained_assignment_undefined_columnc                 C   s  t tdddtjddtjdddg dd}| }|rzt	  d	|j
d d
< W d    n1 s7w   Y  t	  d	|j
d d< W d    n1 sRw   Y  tj	tfd d	|d d< W d    n1 sow   Y  t|| |stjttd d	|j
d d
< W d    n1 sw   Y  tjttd d	|j
d d< W d    n1 sw   Y  |stjttd d	|d d< W d    d S 1 sw   Y  d S d	|d d< |j
d d	ksJ d S d S )N20130101r#   )periodsr   r   r   rA   rB   rC   de)rG   rZ   rK   rL   rn   rL   rK   )extra_warningsr   )r   rK   )r   r   r   r   r   r   r*   rP   r,   r-   rD   FutureWarningrN   ra   r   r   r   )r2   r   r3   r4   rx   r   r   r   -test_detect_chained_assignment_changing_dtype  sD   


"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}|rGt	
  |dg | |dg |< W d    n1 s:w   Y  t	|| d S tjttd |dg | |dg |< W d    d S 1 sfw   Y  d S )	NrY   zab..rA   rB   r   r@   rC   r   )r   r   r   r   rr   rP   r   isnarC   r,   r-   rN   ra   r   r   r   )r2   r3   r4   rx   rv   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 )Nr@   )r   r   f)r   yr   )ghir   )r   r   )r2   df1r   r   r   r   %test_setting_with_copy_bug_no_warning  s   
z2TestChaining.test_setting_with_copy_bug_no_warningc              	   C   s4  t g dg dd}|r+t  d|jd d< W d    d S 1 s$w   Y  d S tdd$ tt d|jd d< W d    n1 sHw   Y  W d    n1 sWw   Y  tdd	/ tjt	t
d
 d|jd d< W d    n1 s{w   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   r   r   r   rG   r"   warnr{   r   )r   r,   r-   rD   r	   assert_produces_warningr   ra   r   r   r   r1   r   r   r   .test_detect_chained_assignment_warnings_errors  s*   

"z;TestChaining.test_detect_chained_assignment_warnings_errorsrhsr>   r   )r   r   r>   rY   c              	   C   s   t tddd}| }|jd d }tddU |sAtt	}||d< |d j
tks1J W d    n1 s;w   Y  n'td  ||d< W d    n1 sUw   Y  t|| W d    d S W d    d S 1 ssw   Y  d S )N   r#   r>   r"   r   r   r   )r   r   r*   r   rP   rD   r	   r,   r   r   filename__file__rN   )r2   r   r3   r4   rx   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>   r   rG   r   )r   rG   )r   r   zerosonesr.   rD   r,   assert_numpy_array_equal)r2   r4   rQ   ry   result2result3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 sJ d|d jv s"J d S )NrG   r   zHello FriendrZ   )r,   makeDataFramer.   rD   rI   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< | }|r?tjtd	d
 d|jj	d< W d    n1 s2w   Y  t
|| d S 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#   r   r   r   r#   )r   rI   r   r   z	read-onlyr   r   r>   r   )r#      )rA   rB   rC   r   r   r   )r>   r   )r   r   r   r   r   name)r   r   r   r   rP   ra   r   
ValueErrorr   valuesr,   rN   atr   rO   )r2   r3   r4   df_origrQ   r   r   r   test_cache_updating26  s0   
z!TestChaining.test_cache_updating2c              	   C   s>  t dd  ttddgd d}d|d< dgt| }|r;t  d|d	 jd
< W d    n1 s5w   Y  nd|d	 jd
< |j|  |ret  d|d	 jd
< W d    n1 s_w   Y  nd|d	 jd
< |sz|d	 jd
 dksyJ n|d	 jd
 dksJ W d    d S W d    d S 1 sw   Y  d S )Nr"   r#   r$   r%   r(   r)   Tgp=
ף?r'   r   g333333?)r	   r   r   r   r,   r-   r.   )r2   r3   r4   ckr   r   r   $test_iloc_setitem_chained_assignmentR  s.   


"z1TestChaining.test_iloc_setitem_chained_assignmentc                 C   s   t dg di}|r&t  d|d jd< W d    n1 s w   Y  nd|d jd< t|t dg di t|d tg ddd d S )NrA   )r         (   rY   r   )r   r,   r-   rD   rN   rO   r   r1   r   r   r   'test_getitem_loc_assignment_slice_staten  s   
 z4TestChaining.test_getitem_loc_assignment_slice_stateN)#r^   r_   r`   rz   ra   rb   arm_slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   r   r   td&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rd      sV    ;

$





	






'	

	rd   )r
   )stringr   r   numpyr   ra   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r   r	   pandas._testing_testingr,   r   r    r!   rd   r   r   r   r   <module>   s    
	m