U
    sVcm                  
   @   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dddgeddggdddgdejjdeddedddgddggd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dddgeddggdddgdejjdedd edddgddggdddgdd!d" Zejjd#ed dedddged dggdddg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d0dedddgd0dggdddgdd1d2 Zejjd3d4d5 d6d5 d7d5 d8d5 d9d5 d:d5 gd;d<d=d>d?d@gdejjdddgddgddAdB ZejjdddgddgddCdD Z ejjd3dEd5 dFd5 dGd5 dHd5 gdIdJdKdLgddMdN Z!dOdP Z"dQdR Z#ejjd#ed dedddged dggdddgddSdT Z$dUdV Z%dWdX Z&dYdZ Z'd[d\ Z(d]d^ Z)dS )_    N)SettingWithCopyWarning)	DataFrameSeries)	get_arrayc                 C   s   t dddgdddgddd	gd
}| }|ddg }| rbtt|dt|dsVtd|jd< n&tt|dt|dr~td|jd< tt|dt|drtt dddgddd	gd}t|| t|| d S N                  皙?皙?333333?abcr   r   r   r   r   )r   r   )	r   copynpshares_memoryr   AssertionErroriloctmassert_frame_equalusing_copy_on_writedfdf_origsubsetexpected r"   H/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/copy_view/test_indexing.pytest_subset_column_selection   s    "
r$   c                 C   s   t dddgdddgddd	gd
}|ddg }| rNtt|dt|dsNtd|jd< tt|dt|drtt| rtt|dt|dstt dddgddd	gd}t|| d S 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 dddgdddgddd	gd
}| }|dd }|j  tt|dt|ds\t| rd|jd< tt|dt|drtn
d|jd< |j  t ddgddgdd	gd
t	ddd}t
|| | rt
|| n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   r   ranger   r   r   r"   r"   r#   test_subset_row_sliceB   s     "



&
r+   dtypeint64Zfloat64zsingle-blockzmixed-block)idsc           	   
   C   sX  |dko| }t dddgdddgtjdd	d
g|dd}| }|jd d dd f }|j  | rtt|dt|dst	d|jd< tt|dt|drt	nD|rt
nd }tdd& t| d|jd< W 5 Q R X W 5 Q R X t dddgtjdd	d
g|dd}t|| | sH|s0|rHd|jd< t|| nt|| d S )Nr-   r   r   r	   r
   r   r         	   r,   r   r   r   r   chained_assignmentwarnr   r   )r   r   )r   r   arrayr   r   r(   r)   r   r   r   r   pdoption_contextr   assert_produces_warningr   )	r   using_array_managerr,   Zsingle_blockr   r   r    r4   r!   r"   r"   r#   test_subset_column_sliced   s*    &

$
r;   row_indexerr   r   FTslicemaskr6   column_indexerr   r   c           	      C   s   t dddgdddgtjddd	g| 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
rt	|t
r|s| dkr|sd|jd< t|| d S Nr   r   r	   r
   r   r   r/   r0   r1   r2   r   r   r   r5   r&   r-   )r   r   )r   r   r6   r   locr   r*   r   r   
isinstancer=   	r,   r<   r?   r:   r   r   r   r    r!   r"   r"   r#   test_subset_loc_rows_columns   s.    &
 
rD   r	   c           	      C   s   t dddgdddgtjddd	g| 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	rt|t	r|s| dkr|sd|jd< t|| d S r@   )
r   r   r6   r   r   r*   r   r   rB   r=   rC   r"   r"   r#   test_subset_iloc_rows_columns   s.    &
 
rE   indexerc              
   C   s,  t ddddgddddgdd	d
dgd}| }|dd }| tjkrft|tjrf|jdkrft	d |rxd| ||< nL| tjkrt
nd }tdd( t| d| ||< W 5 Q R X W 5 Q R X t dddgdddgdddgdtddd}t|| |rt|| nd|dd< t|| d S )Nr   r   r	   r
   r   r   r/   r   r   r   皙?r   intz&setitem with labels selects on columnsr   r3   r4           r&   )r   r   r   setitemrB   r   Zndarrayr,   pytestskipr   r7   r8   r9   r*   r   )
indexer_sirF   r   r   r   r    r4   r!   r"   r"   r#    test_subset_set_with_row_indexer   s2    (

  rN   c              
   C   s   t ddddgddddgdd	d
dgd}| }|dd }|dk}| rRd||< n6tdd$ tt d||< W 5 Q R X W 5 Q R X t dddgdddgd	d
dgdtddd}t|| | rt|| n(d|j	d< d|j	dddf< t|| d S )Nr   r   r	   r
   r   r   r/   r   r   r   rG   r   r   r3   r4   r&   )r	   r   r   )
r   r   r7   r8   r   r9   r   r*   r   rA   )r   r   r   r    r>   r!   r"   r"   r#   test_subset_set_with_mask  s&    (
 
rO   c              
   C   s   t dddgdddgddd	gd
}| }|dd }| rRtjddgdd|d< nDtdd2 tt tjddgdd|d< W 5 Q R X W 5 Q R X |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   r   r   r   r   
      r-   r2   r   r3   r4   r&   )r   r   r   r6   r7   r8   r   r9   r   r(   r)   r*   r   r   r"   r"   r#   test_subset_set_column/  s    "*
 rR   c              
   C   sT  t dddgdddgtjddd	g|d
d}| }|dd }| rftjddgdd
|jd d df< n^tddL |r|dnd}tjt	|d& tjddgdd
|jd d df< W 5 Q R X W 5 Q R X |j
  t ddgddgtjdd	g|d
dtddd}t|| | s|r$t|| n,tjddgdd
|jdddf< t|| d S )Nr   r   r	   r
   r   r   r/   r0   r1   r2   r   rP   rQ   r-   r   r3   r4   FTraise_on_extra_warningsr&   )r   r   r6   r   rA   r7   r8   r   r9   r   r(   r)   r*   r   )r   r:   r,   r   r   r    rT   r!   r"   r"   r#   test_subset_set_column_with_locD  s0    &"4
  rU   c              
   C   s   t ddddgi}| }|dd }| r>d|jd d df< nPtdd> |rTdnd	}tjt|d
 d|jd d df< W 5 Q R X W 5 Q R X |j	  t dddgit
ddd}t|| | s|rt|| nd|jdddf< t|| d S )Nr   r   r   r	   r   r3   r4   FTrS   r&   )r   r   rA   r7   r8   r   r9   r   r(   r)   r*   r   )r   r:   r   r   r    rT   r!   r"   r"   r#    test_subset_set_column_with_loc2l  s&    &
rV   c              
      s   t dddgdddgtjddd	g|d
d}| }|dd  | rRd ddg< n:tdd( tt d ddg< W 5 Q R X W 5 Q R X  j	
  | rt fdddD st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   r/   r0   r1   r2   r   r   r   r   r3   r4   c                 3   s   | ]} j |V  qd S )N)r(   Z_has_no_reference).0ir    r"   r#   	<genexpr>  s     z*test_subset_set_columns.<locals>.<genexpr>)r   r   r&   )r   r   r6   r   r7   r8   r   r9   r   r(   r)   allr   r*   r   )r   r,   r   r   r!   r"   rY   r#   test_subset_set_columns  s     & 
&r\   r   c              
   C   s  t dddgdddgddd	gd
}| }|dd }|rNd|jd d | f< nDtdd2 tjtdd d|jd d | f< W 5 Q R X W 5 Q R X |j	  t ddgddgdd	gd
t
ddd}|d d|d< t|| |s|rt|| n d|jdddgf< t|| d S )Nr   r   r	   r   r   r   r
   r   r   r   r   r3   r4   FrS   rI   r&   r   r-   r   )r   r   rA   r7   r8   r   r9   r   r(   r)   r*   Zastyper   )rF   r   r:   r   r   r    r!   r"   r"   r#   #test_subset_set_with_column_indexer  s&    
" &
&r]   methodc                 C   s   | ddg dd S Nr   r   r   r   r"   r   r"   r"   r#   <lambda>      ra   c                 C   s   | dd ddg S Nr   r   r   r   r"   r`   r"   r"   r#   ra     rb   c                 C   s   | ddg j dd S r_   r   r`   r"   r"   r#   ra     rb   c                 C   s   | ddg j dd S )Nr   r   r   r   rA   r`   r"   r"   r#   ra     rb   c                 C   s   | dd j d d ddf S )Nr   r   rd   r`   r"   r"   r#   ra     rb   c                 C   s   | dd j d d ddf S rc   re   r`   r"   r"   r#   ra     rb   zrow-getitem-slicezcolumn-getitemzrow-iloc-slicezrow-loc-slicezcolumn-iloc-slicezcolumn-loc-slicec           
      C   s   t dddgdddgtjddd	g|d
d}| }| jjjdkpR| jjjdkoR|}||}d|jd< |sn|s|t	|| n|jd dkst
||}d|jd< t ddgddgd}	|s|st	||	 n|jd dkst
d S )Nr   r   r	   r
   r   r   r/   r0   r1   r2   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   r6   r   nodeZcallspecidr   r   r   r   )
requestr^   r,   r   r:   r   r   Zsubset_is_viewr    r!   r"   r"   r#   test_subset_chained_getitem  s*    &


rj   c                 C   s   t dddgdddgtjddd	g| d
d}| }|d d  d dd }|  d|jd< |rpt|| n|jd dkst|d d  d dd }|  d|jd< t	ddgdd}|rt
|| n|jd dkstd S )Nr   r   r	   r
   r   r   r/   r0   r1   r2   r   r   r   r   name)r   r   r6   r   Z_clear_item_cacher   r   r   r   r   assert_series_equal)r,   r   r   r   r    r!   r"   r"   r#   "test_subset_chained_getitem_column  s"    &

rn   c                 C   s   | dd dd S Nr   r   r   r"   sr"   r"   r#   ra   0  rb   c                 C   s   | j dd j dd S )Nr   r	   r   rd   rp   r"   r"   r#   ra   1  rb   c                 C   s   | j dd j dd S ro   re   rp   r"   r"   r#   ra   2  rb   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   )rA   r   rp   r"   r"   r#   ra   3  s       getitemr   rA   z
long-chainc                 C   s   t dddgdddgd}| }| |}d|jd< |rDt|| n|jd dksVt|jdd jdd }d|jd< t ddgddgd}|rt|| n|jd dkstd S 	Nr   r   r	   r   r   r   r&   r   )r   r   r   r   rm   r   )r^   r   rq   s_origr    r!   r"   r"   r#   "test_subset_chained_getitem_series-  s    

ru   c                 C   s   t dddgdddgddd	gd
}| }|d d  jd jdd }d|jd< | sX|rft|| n|jd dksxt|d d  jd jdd }d|jd< tddgddgdd}| s|rt|| n|jd dkstd S )Nr   r   r	   r
   r   r   r/   r0   r1   r   r   r   r   r   )r'   rl   )r   r   r   r   r   r   r   rm   )r   r:   r   r   r    r!   r"   r"   r#   $test_subset_chained_single_block_rowS  s    "

rv   c                 C   s   t dddgdddgd}| }|d d  }t|j|js@td|jd< | rbt|j|jrbtt dddgdddgd}t|| | rt|| n|jd dkstd S rs   )	r   r   r   r   valuesr   r   r   rm   )r   rq   rt   r    r!   r"   r"   r#   test_series_getitem_slicep  s    
rx   c                 C   s~   t dddgdddgd}| }|d d  }d| ||< t dddgdddgd}t|| |rnt|| nt|| d S rs   )r   r   r   rm   )rM   rF   r   rq   rt   r    r!   r"   r"   r#   #test_series_subset_set_with_indexer  s    ry   c                 C   s   t dddgdddgddd	gd
}| }|d d  }tt|dt|dsRt|d= tt|dt|dsttt|| t||ddg  |j	  d|j
d< | rt|| n|j
d dkstd S )Nr   r   r	   r
   r   r   r   r   r   r   r   r   r   d   )r   r   )r   r   r   r   r   r   r   r   r(   r)   rA   )r   r   r   Zdf2r"   r"   r#   test_del_frame  s    "

r{   c                  C   s   t dddgdddgd} |  }| d d  }t| j|js@t|d= t| j|jrZtt| | t||ddg  |j}d|jd< |d	 dkstd S )
Nr   r   r	   r   r   r   r&   rz   r   )	r   r   r   r   rw   r   r   rm   rA   )rq   rt   s2rw   r"   r"   r#   test_del_series  s    
r}   c              
   C   s   t dddgdddgddd	gd
}| }|d }t|jt|dsJt| sR|r\d|d< n6tdd$ t	
t d|d< W 5 Q R X W 5 Q R X tdddgdd}t	|| | rt	|| t	|d |d  nd|jd< t	|| d S )Nr   r   r	   r
   r   r   r   r   r   r   r   r   r3   r4   rk   r   )r   r   r   r   rw   r   r   r7   r8   r   r9   r   r   rm   r   r   r   r:   r   r   rq   r!   r"   r"   r#   test_column_as_series  s     "

r   c              
   C   s   t dddgdddgddd	gd
}| }|d }| s:|rDd|d< n6tdd$ tt d|d< W 5 Q R X W 5 Q R X tdddgtdd}t	|| | rt
|| t	|d |d  n||d< t
|| d S )Nr   r   r	   r
   r   r   r   r   r   r   r   Zfoor   r3   r4   )r,   rl   )r   r   r7   r8   r   r9   r   r   objectrm   r   r~   r"   r"   r#   %test_column_as_series_set_with_upcast  s    "
r   c                  C   s   t dddgdddgd} tdd	d
g}|| d< tt| d|jrHtd|d< t dddgdddgdd	d
gd}t| | d| j	d< tdd	d
g}t
|| d S )Nr   r   r	   r   r   r   rf   rP   rQ      newr   )r   r   r   rz   )r   r   )r   r   r   r   r   rw   r   r   r   rA   rm   )r   rq   r!   Z
expected_sr"   r"   r#   %test_dataframe_add_column_from_series  s    "
r   )*Znumpyr   rK   Zpandas.errorsr   Zpandasr7   r   r   Zpandas._testingZ_testingr   Zpandas.tests.copy_view.utilr   r$   r%   r+   markZparametrizer;   r=   r6   rD   rE   rN   rO   rR   rU   rV   r\   r]   rj   rn   ru   rv   rx   ry   r{   r}   r   r   r   r"   r"   r"   r#   <module>   s   "  
$  $"  $"$
$  
%"  

"	  '  



$
