o
    ŀg[                     @   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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Index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   r   ).0x r   c/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/indexing/test_chaining_and_caching.py
<listcomp>   s     zrandom_text.<locals>.<listcomp>letters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 \ ttddgd d}d|d< |d  t  d|d jd	< W d    n1 s1w   Y  |  |sGt|d d	 d nt|d d	 d W d    d S W d    d S 1 sdw   Y  d S )
Nchained_assignment   皙@aabb        ccr)   g(\?r   )	r   r   r   arange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 ]7\}}	||	d
  || |	d  }t	|dkp|p| |||	d
  ||< W d    n1 sw   Y  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
   r	   iterrowsrD   r-   assert_frame_equalassert_series_equalcopyr.   )r2   r3   warn_copy_on_writeexpectedoutr4   r<   eixixrowout_originalvr   r   r   "test_setitem_cache_updating_slicesK   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 }|s|r!d|jvs J nd|jv s(J d
|d< t|dks4J d|jvs;J |d |usCJ t|d dksMJ d S )Nr   r   r>      rA   rB   rG   B)rI   r   r%   rC   )r   _item_cacher   )r2   r3   rQ   r4   serr   r   r   (test_altering_series_clears_parent_cachex   s   "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r5   pytestmarkparametrizerF   rY   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}t  d|j|< W d    n1 s*w   Y  |r<t|t d|i n
t|t d|i tjj|gdgd}t |}|jdk}t  d|j|< W d    n1 smw   Y  |rt|t d|i n
t|t d|i t ||d}|	 }|jdk}t  d|j|< W d    n1 sw   Y  |rt|| nt|t ||d t dtj
d	d
dd	gi}t dtg di}t  tj
|d jd< W d    n1 sw   Y  |rt dg di}nt dtj
d	d
dd	gi}| }	t|	| t dtg di}t  tj
|jjd< W d    n	1 s=w   Y  | }	t|	| d S )N)rightleftrg   rg   rf   rg   timeout)rf   rg   rg   rg   rf   rg   noneresponserh   ri   )names)rj   	response1rG   barbahfoo)ro   rm   rn   ro   rm   r   )r   r   arrayrj   r-   r.   rN   rec
fromarraysrP   nanr/   headrG   )
r2   r3   datamdatar4   maskrecarraydf_originalrR   resultr   r   r   test_setitem_chained_setfault   sX   







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 s/J t	  d|d d< W d    n1 sDw   Y  t	  d|d d< W d    n1 s^w   Y  |rlt
|| nt
|| W d    d S W d    d S 1 sw   Y  d S )Nr$   raiser   r>   ABr   rZ   r   int64)r   dtyperG   r   )r   r   listr   r,   reshaperP   _is_copyr-   r.   rN   )r2   r3   rR   r4   ry   r   r   r   test_detect_chained_assignment   s&   

"z+TestChaining.test_detect_chained_assignmentc              	   C   sn  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 |rt	
  d|d d< W d    n1 sww   Y  t	
  tj|d d
< W d    d S 1 sw   Y  d S |stjttd" t	
  d|d d< W d    n1 sw   Y  W d    n1 sw   Y  tjttd# t	
  tj|d d
< W d    n1 sw   Y  W d    n1 sw   Y  |d jd u s
J 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   rZ   rG   r[   r}   rG   r   r~   r   matchr>   r   r   r[   float64)r   r   ranger   rp   r,   r   rP   r   r-   r.   rN   rs   rb   raisesr   msgr   astype)r2   using_array_managerr3   rQ   r4   ry   rR   r   r   r   %test_detect_chained_assignment_raises   sR   



"

z2TestChaining.test_detect_chained_assignment_raisesc                 C   s   t ttdddtjtddtjdd}|s|r9t  d|j	d d< W d    d S 1 s2w   Y  d S t
jttd	 d|j	d d< W d    d S 1 sSw   Y  d S )
Nr   r   r   rZ   r   r}   r   rG   r   )r   r   r   r   rp   r,   r   r-   r.   rD   rb   r   r   r   r2   r3   rQ   r4   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 |jjd}|s!|r>t  d|| d< W d    d S 1 s7w   Y  d S t	j
ttd	 d|| d< W d    d S 1 sWw   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.   rb   r   r   r   r2   r3   rQ   r4   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 tg dtdg dd}| }|s@|s@tjttd d|jd d	< W d    n1 s;w   Y  |rdt	
  d|d	 d< W d    n1 sWw   Y  t	|| d S |rt	
  d|d	 d< W d    n1 s{w   Y  t	|| d S |stjttd" t	
  d|d	 d< W d    n1 sw   Y  W d    n1 sw   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   r   rG   )r   rG   )r   r   objectrP   rb   r   r   r   rD   r-   r.   rN   )r2   r   r3   rQ   rR   r4   ry   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__pickler[   )r   r   r-   ensure_clean	to_picklepdread_pickle)r2   r4   pathdf2r   r   r   -test_detect_chained_assignment_is_copy_pickleM  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   rZ   c                 S      t | dkS N
   r   r   r   r   r   <lambda>g      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_columnY  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   q  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_takem  s
   
z9TestChaining.test_detect_chained_assignment_implicit_takec                 C   s   |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s7J |d tj|d< |jd u sHJ d S )Nz"_is_copy is not always set for CoWr   c                 S   r   r   r   r   r   r   r   r     r   zLTestChaining.test_detect_chained_assignment_implicit_take2.<locals>.<lambda>r   )	rb   skipr"   r   r   rD   r   r   r   r   r   r   r   -test_detect_chained_assignment_implicit_take2w  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   rZ   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   )rZ      	   )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   s6  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 |r\t  d|jdd d< W d    d S 1 sUw   Y  d S tj	t
td	. t  d|jdd d< W d    n1 s|w   Y  W d    d S W d    d S 1 sw   Y  d S )
Nr   r   countr   rB   grouprA   r%   r   )r   r   r,   rP   r-   r.   r/   rN   rb   r   r   r   )r2   r3   rQ   r4   ry   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}| }|s#|rt	  d	|j
d d
< W d    n1 s9w   Y  t	  d	|j
d d< W d    n1 sTw   Y  t|| tj	tfd d	|d d< W d    n1 sww   Y  |rt|| d S |j
d d	ksJ d S t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  |stjttd+ t	  d	|d d< W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S d	|d d< |j
d d	ksJ d S )N20130101r%   )periodsr   r   r   rA   rB   rC   de)rG   r[   rK   rL   ro   rL   rK   )extra_warnings)r   rK   r   )r   r
   r   r   r   r   r,   rP   r-   r.   rD   rN   FutureWarningrb   r   r   r   )r2   r   r3   rQ   r4   ry   r   r   r   -test_detect_chained_assignment_changing_dtype  sL   



$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 |rlt	
  |dg | |dg |< W d    d S 1 sew   Y  d S tjttd |dg | |dg |< W d    d S 1 sw   Y  d S )	NrZ   zab..rA   rB   r   r@   rC   r   )r   r   r   r   rs   rP   r   isnarC   r-   r.   rN   rb   r   r   r   )r2   r3   rQ   r4   ry   rw   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   s8  t g dg dd}|s|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 sJw   Y  W d    n1 sYw   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   rb   r   r   r   r   r   r   r   .test_detect_chained_assignment_warnings_errors  s*   

"z;TestChaining.test_detect_chained_assignment_warnings_errorsrhsr>   r   )r   r   r>   rZ   c              	   C   s   t tddd}| }|jd d }tddB |sC|sCtt	}||d< |d j
tks3J W d    n1 s=w   Y  n||d< t|| W d    d S W d    d S 1 s`w   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   rQ   r4   ry   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   rR   rz   result2result3result4r   r   r   test_chained_getitem_with_lists2  s   &
z,TestChaining.test_chained_getitem_with_listsc                 C   s^   t tdttdtdd}|d  |jd |jd< d|d jv s$J d|d jv s-J d S )	Nr   ABCDr   r   rG   r   zHello Friendr[   )	r   r   r   r   r   r   r/   rD   rI   r   r   r   r   test_cache_updatingC  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   rb   r   
ValueErrorr   valuesr-   rN   atr   rO   )r2   r3   r4   df_origrR   r   r   r   test_cache_updating2O  s0   
z!TestChaining.test_cache_updating2c              	   C   s  t dd | ttddgd d}d|d< dgt| }t  d|d	 jd
< W d    n1 s3w   Y  |j|  t  d|d	 jd
< W d    n1 sSw   Y  |sf|d	 jd
 dkseJ n|d	 jd
 dksqJ 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_assignmentk  s"   


"z1TestChaining.test_iloc_setitem_chained_assignmentc                 C   s~   t dg di}t  d|d jd< W d    n1 sw   Y  t|t dg di t|d tg ddd d S )NrA   )r         (   rZ   r   )r   r-   r.   rD   rN   rO   r   r   r   r   r   'test_getitem_loc_assignment_slice_state  s   
 z4TestChaining.test_getitem_loc_assignment_slice_stateN)#r_   r`   ra   r{   rb   rc   arm_slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rd   r   r   td&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   re      sV    4

+


"


	






+	

re   )r   )stringr   numpyr   rb   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r	   r
   r   pandas._testing_testingr-   r   r"   r#   re   r   r   r   r   <module>   s     
	j