o
    7?eX                     @   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   )Zaxisc                 S   s    g | ]}t |d  |d  qS )r   r   )letters).0x r   p/home/www/facesmatcher.com/pyenv/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_rngZintegers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   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   皙@Zaabb        ccr"   g(\?r   )
r	   r   r   arangereprtmraises_chained_assignment_errorilocZ_clear_item_cacheZ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   r<   r   )r8   r<   r#   g      ?)r   r   r%   loc)r+   r/   contr-   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  rA   rA   z5/7/2014z5/9/2014)index)r   r   r   )r@   r@   r@   )r
      i,  )CDrD   rE   )
r   r   r   Ziterrowsr=   r'   assert_frame_equalassert_series_equalcopyr(   )r+   r,   expectedoutr-   r5   ZeixZixrowZ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   r7      r:   r;   r@   B)rB   r   r   r<   )r   Z_item_cacher   )r+   r,   r-   serr   r   r   (test_altering_series_clears_parent_cache|   s   "z4TestCaching.test_altering_series_clears_parent_cacheN)
__name__
__module____qualname__r.   pytestmarkparametrizer?   rM   rQ   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leftrZ   rZ   rY   rZ   timeout)rY   rZ   rZ   rZ   rY   rZ   noneresponser[   r\   )names)r]   Z	response1r@   barbahfoo)ra   r_   r`   ra   r_   r   )r   r   arrayr]   r'   r(   rF   ZrecZ
fromarraysrH   nanr)   headr@   )
r+   r,   dataZmdatar-   maskZrecarraydf_originalrI   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   r7   ABr   rN   r   int64)r   dtyper@   r   )r	   r   listr   r%   reshaperH   _is_copyr'   r(   rF   )r+   r,   rI   r-   rg   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   rn   ro   rN   r@   rO   rk   r@   r   rl   r   matchr7   rm   r   rO   float64)r   r   ranger   rb   r%   rx   rH   rr   r'   r(   rF   rU   raisesr   msgrc   rp   Zastype)r+   using_array_managerr,   r-   rg   rI   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   rn   rt   rN   ru   rk   r   r@   rv   )r   r   ry   r   rb   r%   rx   r'   r(   r=   rU   rz   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}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)r0   r0   r1   r2   r1   r0   r5   r8   rn   rt   )r:   r<   o*   r<   rv   )r   r   ry   rr   r:   str
startswithr'   r(   rU   rz   r   r{   r+   r,   r-   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   r7   ru   Zaaar   r   rv   r   r   r@   )r   r@   )
r   rH   rU   rz   r   r{   r=   r'   r(   rF   )r+   r|   r,   rI   r-   rg   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 )Nr@   r   r   Z__tmp__picklerO   )r   rr   r'   Zensure_cleanZ	to_picklepdZread_pickle)r+   r-   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   rN   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)   rr   r   applyr=   rH   r   lower)r+   r-   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   r=   rr   r   r   r+   r-   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   )	rU   skipr   r   r   r=   rr   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   r=   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 )Nr:   r   )r   Zdropnarr   r+   r-   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   rN   r   )	r   r   r   r   standard_normalr)   Zsort_valuesr'   rG   )r+   r-   rP   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:   )rN      	   )column1column2r   r;   r   r   r<   )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   r;   groupr:   r   rv   )r   r   r%   rH   r'   r(   r)   rF   rU   rz   r   r{   )r+   r,   r-   rg   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 )NZ20130101r   )Zperiodsr   rn   rt   r:   r;   r<   de)r@   rO   rD   rE   ra   rE   rD   )Zextra_warningsrv   )r   rD   )r   r   r   r   r   r   r%   rH   r'   r(   r=   FutureWarningrF   rU   rz   r   r{   )r+   r|   r,   r-   rg   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 )	NrN   zab..r:   r;   r   r9   r<   rv   )r   rp   ry   r   rc   rH   r   Zisnar<   r'   r(   rF   rU   rz   r   r{   )r+   r,   r-   rg   rf   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 )Nr9   )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   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   ru   r   r   r@   r   warnrj   rv   )r   r'   r(   r=   r	   assert_produces_warningr   rU   rz   r   r{   r*   r   r   r   .test_detect_chained_assignment_warnings_errors  s*   

"z;TestChaining.test_detect_chained_assignment_warnings_errorsrhsr7   r   )r   r   r7   rN   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   r7   r   r   r   r   )r   r   r%   rq   rH   r=   r	   r'   r   r   filename__file__rF   )r+   r   r,   r-   rg   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   r7   ru   r@   r   )r   r@   )r   r   zerosZonesr)   r=   r'   Zassert_numpy_array_equal)r+   r-   rI   rh   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 sJ d|d jv s"J d S )Nr@   r   zHello FriendrO   )r'   ZmakeDataFramer)   r=   rB   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   rn   rt   r   r   )r   rB   r   r   z	read-onlyrv   r   r7   r   )r      )r:   r;   r<   r   r   r   )r7   r   )r   r   r   r   r   name)r   r   r   ry   rH   rU   rz   
ValueErrorr   valuesr'   rF   atr   rG   )r+   r,   r-   Zdf_origrI   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   ry   r   r'   r(   r)   )r+   r,   r-   Z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 )Nr:   )r         (   rN   r   )r   r'   r(   r=   rF   rG   r   r*   r   r   r   'test_getitem_loc_assignment_slice_staten  s   
 z4TestChaining.test_getitem_loc_assignment_slice_stateN)#rR   rS   rT   ri   rU   rV   Zarm_slowrs   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rW   r   r   tdZ&skip_array_manager_not_yet_implementedr   r   r   r   r   r   r   r   r   rX      sV    ;

$





	






'	

	rX   )r
   )stringr   r   numpyr   rU   Zpandas.errorsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr   Zpandasr   r   r   r   r   r	   Zpandas._testingZ_testingr'   r{   r   r   rX   r   r   r   r   <module>   s    
	m