o
    iN                     @   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   s@   t j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   j/var/www/edux/Edux_v2/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randint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 L ttddgd d}d|d< |d  t| d|d jd	< |  |s7t|d d	 d nt|d d	 d W d    d S W d    d S 1 sTw   Y  d S )
Nchained_assignment   皙@aabb        ccr&   g(\?r   )	r	   r   r   arangerepriloc_clear_item_cachetm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   rA   r   )r=   rA   r'   g      ?)r   r   r)   loc)r0   r4   contr2   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  }
|
||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  rF   rF   z5/7/2014z5/9/2014)index)r   r   r   )rE   rE   rE   )r
      i,  )CDrI   rJ   )	r   r   r   iterrowsrB   r-   assert_frame_equalassert_series_equalcopy)r0   r1   expectedoutr2   r:   eixixrowout_originalvr   r   r   "test_setitem_cache_updating_slicesN   s4   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 sJ d
|d< t|dks(J d|jvs/J |d |us7J t|d dksAJ d S )Nr   r   r<      r?   r@   rE   B)rG   r   r"   rA   )r   _item_cacher   r0   r2   serr   r   r   (test_altering_series_clears_parent_cachev   s   "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r3   pytestmarkparametrizerD   rV   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}d|j|< |r(t|t d|i n
t|t d|i tjj|gdgd}t |}|jdk}d|j|< |rWt|t d|i n
t|t d|i t ||d}| }|jdk}d|j|< |rt|| nt|t ||d t dtj	d	d
dd	gi}t dtg di}tj	|d j
d< | }	|rt dg di}nt dtj	d	d
dd	gi}t|	| t dtg di}tj	|jj
d< | }	t|	| d S )N)rightleftre   re   rd   re   timeout)rd   re   re   re   rd   re   noneresponserf   rg   )names)rh   	response1rE   barbahfoo)rm   rk   rl   rm   rk   r   )r   r   arrayrh   r-   rL   rec
fromarraysrN   nanr+   headrE   )
r0   r1   datamdatar2   maskrecarraydf_originalrO   resultr   r   r   test_setitem_chained_setfault   sD   





z*TestChaining.test_setitem_chained_setfaultc                 C   s   t ddU 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 d|d d< d|d d< |rDt	|| nt	|| W d    d S W d    d S 1 s]w   Y  d S )Nr!   raiser   r<   ABr   rW   r   int64)r   dtyperE   r   )
r	   r   listr   r)   reshaperN   _is_copyr-   rL   )r0   r1   rO   r2   rw   r   r   r   test_detect_chained_assignment   s   "z+TestChaining.test_detect_chained_assignmentc                 C   sV  t ttdddtjtddtjdd}| }|jd u s"J |r8d|d d< d	|d d
< t	
|| d S |stjttd d|d d< W d    n1 sRw   Y  tjttd tj|d d
< W d    n1 spw   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   rW   rE   rX   r{   rE   r   r|   r   matchr<   r}   r   rX   float64)r   r   ranger   rn   r)   r   rN   r   r-   rL   r`   raisesr   msgrq   r   astype)r0   using_array_managerr1   r2   rw   rO   r   r   r   %test_detect_chained_assignment_raises   s0   z2TestChaining.test_detect_chained_assignment_raisesc                 C   s   t ttdddtjtddtjdd}|r"d|jd d< d S tj	t
td	 d|jd d< W d    d S 1 s<w   Y  d S )
Nr   r~   r   rW   r   r{   r   rE   r   )r   r   r   r   rn   r)   r   rB   r`   r   r   r   r/   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}d|| d< d S tjt	t
d	 |jjd}d|| d< W d    d S 1 sGw   Y  d S )
N)r5   r5   r6   r7   r6   r5   r:   r=   r~   r   )r?   rA   o*   rA   r   )r   r   r   r   r?   str
startswithr`   r   r   r   r0   r1   r2   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}| }|s:tjttd d|jd d< W d    n1 s5w   Y  |rJd|d d< t|| d S |svtjttd d|d d< W d    n1 sdw   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   rE   )r   rE   )	r   rN   r`   r   r   r   rB   r-   rL   )r0   r   r1   rO   r2   rw   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 )NrE   r   r   __tmp__picklerX   )r   r   r-   ensure_clean	to_picklepdread_pickle)r0   r2   pathdf2r   r   r   -test_detect_chained_assignment_is_copy_pickle2  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   rW   c                 S      t | dkS N
   r   r   r   r   r   <lambda>N      zSTestChaining.test_detect_chained_assignment_setting_entire_column.<locals>.<lambda>r   )	r   r+   r   r   applyrB   rN   r   lower)r0   r2   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sJ |d tj|d< d S )Nr   c                 S   r   r   r   r   r   r   r   r   Y  r   zKTestChaining.test_detect_chained_assignment_implicit_take.<locals>.<lambda>r   )r   r   r   rB   r   r   r   r0   r2   r   r   r   r   ,test_detect_chained_assignment_implicit_takeT  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   e  r   zLTestChaining.test_detect_chained_assignment_implicit_take2.<locals>.<lambda>r   )	r`   skipr   r   r   rB   r   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   r   r   r   r   r   r   r   r   u  r   zATestChaining.test_detect_chained_assignment_str.<locals>.<lambda>r   )r   r   r   rB   r   r   r   r   r   r   "test_detect_chained_assignment_strq  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 )Nr?   r   )r   dropnar   r0   r2   r   r   r   &test_detect_chained_assignment_is_copyx  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   rW   r   )r   r   r   randnr+   sort_valuesr-   rM   rZ   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)r?   r?   r?   )rW      	   )column1column2r   r@   r   r   rA   )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&d|jdd d< t|| d S tjt	t
d	 d|jdd d< W d    d S 1 sBw   Y  d S )
Nr   r   countr   r@   groupr?   r"   r   )r   r   r)   rN   r+   r-   rL   r`   r   r   r   )r0   r1   r2   rw   r   r   r   /test_detect_chained_assignment_undefined_column  s   "z<TestChaining.test_detect_chained_assignment_undefined_columnc                 C   sV  t tdddtjdtjdddg dd}| }|r8d|jd	 d
< d|jd	 d< d|d d	< t	|| |st
jttd d|jd	 d
< W d    n1 sSw   Y  t
jttd d|jd	 d< W d    n1 sqw   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?   r@   rA   de)rE   rX   rI   rJ   rm   r   rJ   rI   r   )r   rI   )r   r   r   r   r   r)   rN   rB   r-   rL   r`   r   r   r   )r0   r   r1   r2   rw   r   r   r   -test_detect_chained_assignment_changing_dtype  s8   

"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}|r3|dg | |dg |< t	
|| d S tjttd |dg | |dg |< W d    d S 1 sRw   Y  d S )	NrW   zab..r?   r@   r   r>   rA   r   )r   r   r   r   rq   rN   r   isnarA   r-   rL   r`   r   r   r   )r0   r1   r2   rw   ru   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   )r0   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}|rd|jd d< d S tdd$ tt d|jd d< W d    n1 s3w   Y  W d    n1 sBw   Y  tdd	/ tjtt	d
 d|jd d< W d    n1 sfw   Y  W d    d S W d    d S 1 s~w   Y  d S )Nr   r   r   r   r   rE   r!   warnrz   r   )
r   rB   r	   r-   assert_produces_warningr   r`   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<   rW   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   rN   rB   r	   r-   r   r   filename__file__rL   )r0   r   r1   r2   rw   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   rE   r   )r   rE   )r   r   zerosonesr+   rB   r-   assert_numpy_array_equal)r0   r2   rO   rx   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 )NrE   r   zHello FriendrX   )r-   makeDataFramer+   rB   rG   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"   r~   r   r   r"   )r   rG   r   r   r   r<   r   )r"      )r?   r@   rA   r   r   r   )r<   r   )r   r   r   r   r   name)r   r   r   r   r   valuesatr-   rL   r   rM   )r0   r2   rO   r   r   r   test_cache_updating2&  s"   
z!TestChaining.test_cache_updating2c                 C   s   t dd T ttddgd d}d|d< dgt| }d|d	 jd
< |j|  d|d	 jd
< |s>|d	 jd
 dks=J n|d	 jd
 dksIJ W d    d S W d    d S 1 s\w   Y  d S )Nr!   r"   r#   r$   r'   r(   Tgp=
ף?r&   r   g333333?)r	   r   r   r   r+   )r0   r1   r2   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 )Nr?   )r         (   rW   r   )r   rB   r-   rL   rM   r   r   r   r   r   'test_getitem_loc_assignment_slice_stateN  s    z4TestChaining.test_getitem_loc_assignment_slice_stateN)#r]   r^   r_   ry   r`   ra   arm_slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rb   r   r   td&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rc      sV    0

#













%	

	rc   )r
   )stringr   r   numpyr   r`   pandas.errorsr   r   pandas.util._test_decoratorsutil_test_decoratorsr   pandasr   r   r   r   r   r	   pandas._testing_testingr-   r   r   r    rc   r   r   r   r   <module>   s    
	d