o
    im                  	   @   s  d dl Zd dlZd dlmZ d dlZd dlmZmZ d dl	m
Z d dlmZ dd Zdd Zd	d
 Zejjdddgddgddd Zejjdddgddgdejjdeddeg deddggg ddejjdeddeg dddggg dddd Zejjdddgddgdejjdeddeg deddggg ddejjdeddeg dddggg dddd Zejjd ed deg d!ed dggg ddd"d# Zd$d% Zd&d' Zejjdddgddgdd(d) Zd*d+ Zejjdddgddgdd,d- Zejjd ed.deg d!d.dggg ddd/d0 Zejjd1d2d3 d4d3 d5d3 d6d3 d7d3 d8d3 gg d9dejjdddgddgdd:d; Zejjdddgddgdd<d= Z ejjd1d>d3 d?d3 d@d3 dAd3 gg dBddCdD Z!dEdF Z"dGdH Z#ejjd ed deg d!ed dggg dddIdJ Z$dKdL Z%dMdN Z&dOdP Z'dQdR Z(dSdT Z)dS )U    N)SettingWithCopyWarning)	DataFrameSeries)	get_arrayc                 C   s   t g dg dg dd}| }|ddg }| r.tt|dt|ds(J d|jd< ntt|dt|dr<J d|jd< tt|dt|drOJ t g d	g dd
}t|| t|| d S )N                  皙?皙?333333?abcr   r   r   r   r   r   r   r	   r   r   )r   copynpshares_memoryr   iloctmassert_frame_equalusing_copy_on_writedfdf_origsubsetexpected r%   _/var/www/edux/Edux_v2/venv/lib/python3.10/site-packages/pandas/tests/copy_view/test_indexing.pytest_subset_column_selection   s   
r'   c                 C   s   t g dg dg dd}|ddg }| r$tt|dt|ds$J d|jd< tt|dt|dr7J | rGtt|dt|dsGJ t g dg dd	}t|| d S )
Nr   r
   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r    r!   r#   r$   r%   r%   r&   *test_subset_column_selection_modify_parent-   s   
r(   c                 C   s   t g dg dg dd}| }|dd }|j  tt|dt|ds+J | rAd|jd	< tt|dt|dr@J nd|jd	< |j  t ddgd
dgddgdtddd}t	
|| | rnt	
|| d S d|jd< t	
|| d S )Nr   r
   r   r   r   r	   r   r   r   r   r   r   r   index)r   r   )r   r   _mgr_verify_integrityr   r   r   r   ranger   r   r   r%   r%   r&   test_subset_row_sliceB   s    



&
r.   dtypeint64float64zsingle-blockzmixed-block)idsc           	   	   C   sr  |dko| }t g dg dtjg d|dd}| }|jd d dd f }|j  | rRtt|dt|ds>J d	|jd
< tt|dt|drQJ n6|rVt	nd }t
dd" t| d	|jd
< W d    n1 stw   Y  W d    n1 sw   Y  t g dtjg d|dd}t|| | s|s|rd	|jd< t|| d S t|| d S )Nr0   r   r
         	   r/   r   r   r   r   r   chained_assignmentwarn)r   r   r   r   r   )r   r   )r   r   arrayr   r   r+   r,   r   r   r   pdoption_contextr   assert_produces_warningr   )	r    using_array_managerr/   single_blockr!   r"   r#   r9   r$   r%   r%   r&   test_subset_column_sliced   s0    

 
rA   row_indexerr   r   )FTT)slicemaskr;   column_indexerr   r   c           	      C   s   t g dg dtjg d| dd}| }|j||f }d|jd< t ddgtjd	d
g| ddtddd}t|| t	|t
rUt	|t
rU|sP| dkrU|sUd|jd< t|| d S Nr   r
   r3   r7   r   r   r   r   r5   r6   r:   r   r	   r)   r0   )r   r   )r   r   r;   r   locr   r-   r   r   
isinstancerC   	r/   rB   rE   r?   r    r!   r"   r#   r$   r%   r%   r&   test_subset_loc_rows_columns   &    
"
rJ   r	   c           	      C   s   t g dg dtjg d| dd}| }|j||f }d|jd< t ddgtjd	d
g| ddtddd}t|| t|t	rUt|t	rU|sP| dkrU|sUd|jd< t|| d S rF   )
r   r   r;   r   r   r-   r   r   rH   rC   rI   r%   r%   r&   test_subset_iloc_rows_columns   rK   rL   indexer)TTFc              	   C   sB  t g dg dg dd}| }|dd }| tju r-t|tjr-|jdkr-t	d |r6d	| ||< n:| tju r=t
nd }td
d# t| d	| ||< W d    n1 s\w   Y  W d    n1 skw   Y  t g dg dg ddtddd}t|| |rt|| d S d	|dd< t|| d S )Nr   r   r	   r   r   r   r   r4   r   r   r   皙?r   r   r   intz&setitem with labels selects on columnsr   r8   r9   )r   r   r   )r   r   r4   )        rS   rQ   r)   r	   )r   r   r   setitemrH   r   ndarrayr/   pytestskipr   r<   r=   r>   r-   r   )
indexer_sirM   r    r!   r"   r#   r9   r$   r%   r%   r&    test_subset_set_with_row_indexer   s2   



rY   c              	   C   s  t g dg dg dd}| }|dd }|dk}| r#d||< n/td	d
! tt d||< W d    n1 s>w   Y  W d    n1 sMw   Y  t g dg dg ddtddd}t|| | rut|| d S d|j	d< d|j	dddf< t|| d S )NrN   rO   rP   r   r   r   r	   r   r8   r9   )r   r	   r   )r   r   r   )r   r   rQ   r)   )r	   r   r   )
r   r   r<   r=   r   r>   r   r-   r   rG   )r    r!   r"   r#   rD   r$   r%   r%   r&   test_subset_set_with_mask  s*   


rZ   c              	   C   s  t g dg dg dd}| }|dd }| r&tjddgd	d
|d< n6tdd( tt tjddgd	d
|d< W d    n1 sHw   Y  W d    n1 sWw   Y  |j	
  t ddgddgddgdtddd}t|| t|| d S )Nr   r
   r   r   r   r	   
      r0   r7   r   r8   r9   r   r   r   r   r)   )r   r   r   r;   r<   r=   r   r>   r   r+   r,   r-   r   r   r%   r%   r&   test_subset_set_column/  s"   
r]   c              	   C   st  t g dg dtjg d|dd}| }|dd }| r0tjdd	gd
d|jd d df< nCtdd5 |r;dnd}tjt	|d tjdd	gd
d|jd d df< W d    n1 s_w   Y  W d    n1 snw   Y  |j
  t dd	gddgtjddg|ddtddd}t|| | s|rt|| d S tjdd	gd
d|jdddf< t|| d S )Nr   r
   r3   r7   r   r   r	   r[   r\   r0   r   r8   r9   FTraise_on_extra_warningsr   r   r5   r6   r)   )r   r   r;   r   rG   r<   r=   r   r>   r   r+   r,   r-   r   )r    r?   r/   r!   r"   r#   r_   r$   r%   r%   r&   test_subset_set_column_with_locD  s6    ""

  r`   c              	   C   s  t dg di}| }|dd }| rd|jd d df< n<tdd. |r)dnd	}tjt|d
 d|jd d df< W d    n1 sFw   Y  W d    n1 sUw   Y  |j	  t dddgit
ddd}t|| | sv|r~t|| d S d|jdddf< t|| d S )Nr   r   r   r	   r   r8   r9   FTr^   r)   )r   r   rG   r<   r=   r   r>   r   r+   r,   r-   r   )r    r?   r!   r"   r#   r_   r$   r%   r%   r&    test_subset_set_column_with_loc2l  s,   

ra   c              	      s  t g dg dtjg d|dd}| }|dd  | r&d d	d
g< n1tdd# tt d d	d
g< W d    n1 sCw   Y  W d    n1 sRw   Y   j	
  | rkt fdddD skJ t ddgddgddgdtddd}t | t|| d S )Nr   r
   r3   r7   r   r   r	   r   r   r   r8   r9   c                 3   s    | ]	} j |V  qd S )N)r+   _has_no_reference).0ir#   r%   r&   	<genexpr>  s    z*test_subset_set_columns.<locals>.<genexpr>)r   r   r   r   r)   )r   r   r;   r   r<   r=   r   r>   r   r+   r,   allr-   r   )r    r/   r!   r"   r$   r%   re   r&   test_subset_set_columns  s&    
&rh   r   c              	   C   s>  t g dg dg dd}| }|dd }|r$d|jd d | f< n6tdd	( tjtd
d d|jd d | f< W d    n1 sFw   Y  W d    n1 sUw   Y  |j	  t ddgddgddgdt
ddd}|d d|d< t|| |s|rt|| d S d|jdddgf< t|| d S )Nr   r   r
   r   r   r	   r   r8   r9   Fr^   rS   r   r   r)   r   r0   r   r   )r   r   rG   r<   r=   r   r>   r   r+   r,   r-   astyper   )rM   r    r?   r!   r"   r#   r$   r%   r%   r&   #test_subset_set_with_column_indexer  s*   

&rj   methodc                 C   s   | ddg dd S Nr   r   r   r   r%   r!   r%   r%   r&   <lambda>      rn   c                 C   s   | dd ddg S Nr   r   r   r   r%   rm   r%   r%   r&   rn     ro   c                 C      | ddg j dd S rl   r   rm   r%   r%   r&   rn         c                 C   rq   )Nr   r   r   r   rG   rm   r%   r%   r&   rn     rs   c                 C   s   | dd j d d ddf S )Nr   r   rr   rm   r%   r%   r&   rn         c                 C   s   | dd j d d ddf S rp   rt   rm   r%   r%   r&   rn     ru   )zrow-getitem-slicezcolumn-getitemzrow-iloc-slicezrow-loc-slicezcolumn-iloc-slicezcolumn-loc-slicec           
      C   s   t g dg dtjg d|dd}| }| jjjdv p&| jjjdv o&|}||}d|jd	< |s4|s;t	|| n	|jd	 dksDJ ||}d|jd	< t d
dgddgd}	|s\|sdt	||	 d S |jd	 dksmJ d S )Nr   r
   r3   r7   r   )zsingle-block-column-iloc-slicezsingle-block-column-loc-slice)zmixed-block-column-iloc-slicezmixed-block-column-loc-slicer   r   r   r   r   r   r   r   )
r   r   r;   r   nodecallspecidr   r   r   )
requestrk   r/   r    r?   r!   r"   subset_is_viewr#   r$   r%   r%   r&   test_subset_chained_getitem  s*    


r|   c                 C   s   t g dg dtjg d| dd}| }|d d  d dd }|  d|jd< |r5t|| n	|jd	 dks>J |d d  d dd }|  d|jd	< td
dgdd}|ret	|| d S |jd dksnJ d S )Nr   r
   r3   r7   r   r   r   r   r   r   name)
r   r   r;   r   _clear_item_cacher   r   r   r   assert_series_equal)r/   r    r!   r"   r#   r$   r%   r%   r&   "test_subset_chained_getitem_column  s"    

r   c                 C   s   | dd dd S Nr   r   r   r%   sr%   r%   r&   rn   0  ro   c                 C      | j dd j dd S )Nr   r	   r   rr   r   r%   r%   r&   rn   1      c                 C   r   r   rt   r   r%   r%   r&   rn   2  r   c                 C   s6   | j dd jdd jdd j dd jdd S )Nr   r   r   r	   r   r   r   )rG   r   r   r%   r%   r&   rn   3  s    )getitemr   rG   z
long-chainc                 C   s   t g dg dd}| }| |}d|jd< |r t|| n	|jd dks)J |jdd jdd }d|jd< t ddgdd	gd}|rNt|| d S |jd dksWJ d S )
Nr   r   r)   r   r	   r   r   r   r   )r   r   r   r   r   )rk   r    r   s_origr#   r$   r%   r%   r&   "test_subset_chained_getitem_series-  s   

r   c                 C   s   t g dg dg dd}| }|d d  jd jdd }d|jd< | s)|r0t|| n	|jd dks9J |d d  jd jdd }d|jd< tdd	gd
dgdd}| s[|rct|| d S |jd dkslJ d S )Nr   r
   r3   r   r   r   r   r   r   r   r   )r*   r~   )r   r   r   r   r   r   r   )r    r?   r!   r"   r#   r$   r%   r%   r&   $test_subset_chained_single_block_rowS  s   

r   c                 C   s   t g dg dd}| }|d d  }t|j|jsJ d|jd< | r/t|j|jr/J t g dg dd}t|| | rIt|| d S |jd dksRJ d S )Nr   r   r)   r   r   )r   r   r   r   valuesr   r   r   )r    r   r   r#   r$   r%   r%   r&   test_series_getitem_slicep  s   
r   c                 C   sx   t g dg dd}| }|d d  }d| ||< t g dg dd}t|| |r4t|| d S t|| d S )Nr   r   r)   r   )r   r   r	   )r   r   r   r   )rX   rM   r    r   r   r#   r$   r%   r%   r&   #test_series_subset_set_with_indexer  s   r   c                 C   s   t g dg dg dd}| }|d d  }tt|dt|ds&J |d= tt|dt|ds7J t|| t||ddg  |j  d|j	d	< | r[t|| d S |j	d	 dksdJ d S )
Nr   r
   r   r   r   r   r   d   )r   r   )
r   r   r   r   r   r   r   r+   r,   rG   )r    r!   r"   df2r%   r%   r&   test_del_frame  s   

r   c                  C   s   t g dg dd} |  }| d d  }t| j|jsJ |d= t| j|jr+J t| | t||ddg  |j}d|jd< |d dksKJ d S )	Nr   r   r)   r   r   r   r   r   )r   r   r   r   r   r   r   rG   )r   r   s2r   r%   r%   r&   test_del_series  s   
r   c              	   C   s  t g dg dg dd}| }|d }t|jt|ds"J | s&|r+d|d< n/tdd! t	t
 d|d< W d    n1 sFw   Y  W d    n1 sUw   Y  tg d	dd
}t|| | r|t|| t|d |d  d S d|jd< t|| d S )Nr   r
   r   r   r   r   r8   r9   r   r}   r   )r   r   r   r   r   r   r<   r=   r   r>   r   r   r   r   r   r    r?   r!   r"   r   r$   r%   r%   r&   test_column_as_series  s&   


r   c              	   C   s   t g dg dg dd}| }|d }| s|rd|d< n/tdd	! tt d|d< W d    n1 s:w   Y  W d    n1 sIw   Y  tg d
tdd}t	|| | rqt
|| t	|d |d  d S ||d< t
|| d S )Nr   r
   r   r   r   foor   r8   r9   )r   r   r	   )r/   r~   )r   r   r<   r=   r   r>   r   r   objectr   r   r   r%   r%   r&   %test_column_as_series_set_with_upcast  s$   

r   c                  C   s   t g dg dd} tg d}|| d< tt| d|jr!J d|d< t g dg dg dd}t| | d| jd	< tg d
}t	|| d S )Nr   r   rv   )r[   r\      newr   )r   r   r   r   )r   r   )r   r\   r   )
r   r   r   r   r   r   r   r   rG   r   )r!   r   r$   
expected_sr%   r%   r&   %test_dataframe_add_column_from_series  s   
r   )*numpyr   rV   pandas.errorsr   pandasr<   r   r   pandas._testing_testingr   pandas.tests.copy_view.utilr   r'   r(   r.   markparametrizerA   rC   r;   rJ   rL   rY   rZ   r]   r`   ra   rh   rj   r|   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   <module>   s    "
$"""""
$
%"

"'


"
