U
    sVc4?                     @   s  d Z ddlZddlZddlZddlZddlmZ	 ej
jddZG dd dZG dd dZej
jd	ed
d
geddgeddgeeddgd eedgd eedgd eddgeedd
gd ejddgg	dd ddd Zdd Zdd Zdd Zej
dej ddd d!d fej d"dd#gd d!d$fej d%d d!d fej d&d'd d d!d$fgd(d) Z!d*d+ Z"dS ),z1Tests dealing with the NDFrame.allows_duplicates.    NzNot implemented.reasonc                   @   s^  e Zd Zejdeje	g fejddgfej
i fej
dddgifgdd Zejdedged	ded
ejed
dedejgdd Zejdejddddgdejdddgdgedd Zdd Zdd Zejdd	dgejddejdedgejddejddgddgd d! Zd"d# Zejjd$d%d&d' Zejd(ejdddgdjdd)ejddd*gdjdd)gi fejdddgdjdd)ejdddgdjdd)gd+difejdddgdjdd)ejdddgdjdd)gd,difej
dddgiddgdjdd)ej
dddgidd*gdjdd)gi fej
dddgiddgdjdd)ej
dddgiddgdjdd)gd+difej
dddgiddgdjdd)ej
d-ddgiddgdjdd)gd,difej
dddgiddgdjdd)ejddgddgd-d.jdd)gd,difgd/d0 Zejd1ejej
dddgiddgdjdd)ej
d-ddgidd*gdjdd)ddd2dedejej
dddgiddgdjdd)ej
d-ddgidd*gdddd2dedej
dddgiddgdej
d-ddgidd*gdddd2dfgd3d4 Zed5d6 Zejdddged7d8 Z d9S ):TestPreservesz	cls, data      Ac                 C   s<   ||}|j jdkst||jdd}|j jdks8td S )NTFallows_duplicate_labels)flagsr	   AssertionError	set_flags)selfclsdataresult r   N/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/generic/test_duplicate_labels.pytest_construction_ok   s    
z"TestPreserves.test_construction_okfuncaaddrenamenameabsc                 C   s6   t jddgddgdjdd}||jjdks2td S Nr   r   r   bindexFr   )pdSeriesr   r
   r	   r   )r   r   sr   r   r   test_preserved_series!   s    z#TestPreserves.test_preserved_seriesotherr   r   cr   c                 C   sP   t jddgddgdjdd}||\}}|jjdks<t|jjdksLtd S r   )r   r   r   Zalignr
   r	   r   )r   r"   r    r   r   r   r   r   
test_align0   s    zTestPreserves.test_alignc                 C   sf   t jddgddgdddgdjd	d
}|jdg jjd	ks@t|jd d ddgf jjd	ksbtd S )Nr   r         r   Br   r   r   Fr   r   r(   )r   	DataFramer   locr
   r	   r   r   dfr   r   r   test_preserved_frame;   s
     z"TestPreserves.test_preserved_framec                 C   s,   t jtdjdd}| jjdks(td S )N)dtypeFr   )r   r   floatr   to_framer
   r	   r   )r   Zserr   r   r   test_to_frameB   s    zTestPreserves.test_to_framesubframeFT)Zmarksr   c                 C   sx   t jddgdddgdjdd}|r,| }t|t jrD|rD| }t||}|jjdks`t	||jjdkstt	d S )	Nr   r   r   r   r   )r   r   Fr   )
r   r   r   r0   
isinstanceoperatormethodcallerr
   r	   r   )r   r   r"   r3   r,   r   r   r   test_binopsF   s    zTestPreserves.test_binopsc                 C   s   t dddgijdd}|dg jjdks0t|d jjdksDt|jd jjdksZt|jdg jjdksrt|jddgf jjdkstd S )Nr   r   r   Fr   r   )r   r)   r   r
   r	   r   r*   r+   r   r   r   test_preserve_getitemW   s    z#TestPreserves.test_preserve_getitemzUnclear behavior.r   c                 C   sL   t ddgijdd}|d jjdks,td|j_|d jjdksHtd S )Nr   r   Fr   T)r   r)   r   r
   r	   r   r+   r   r   r   "test_ndframe_getitem_caching_issue_   s    z0TestPreserves.test_ndframe_getitem_caching_issueobjs, kwargsr   dZignore_indexaxisr(   r   r   c                 C   s"   t j|f|}|jjdkstd S )NF)r   concatr
   r	   r   )r   objskwargsr   r   r   r   test_concath   s    VzTestPreserves.test_concatzleft, right, kwargs, expectedZ
left_indexZright_indexc                 C   s$   t j||f|}|jj|ks td S N)r   merger
   r	   r   )r   leftrightrA   expectedr   r   r   r   
test_merge   s    #zTestPreserves.test_mergec                 C   sF   t ddddgijdd}|dddgd}|jjdksBtd S )	Nr   r   r   r%   Fr   r   count)r   r)   r   groupbyZaggr
   r	   r   )r   r,   r   r   r   r   test_groupby   s    zTestPreserves.test_groupbyc                 C   sz   t jdt jdddddd}|r(| }|d jjdksBt|	d jjdks\t|
d jjdksvtd S )	Nr   2000   )Zperiodsr   F)r   r   r	   r%   )r   r   Z
date_ranger0   ZrollingZmeanr
   r	   r   ZewmZ	expanding)r   r3   r,   r   r   r   test_window   s    zTestPreserves.test_windowN)!__name__
__module____qualname__pytestmarkparametrizer   r   nparrayr)   r   r6   
itemgetterr7   strupperr   r!   not_implementedr$   r-   r1   paramr8   r9   xfailr:   r   rB   rI   rL   rO   r   r   r   r   r      s  	




 $ 
U
"


r   c                   @   s  e Zd Zejdejddgedfej	dddgifej	ddgddgdfej	dddgifgdd	 Z
ejd
ejddgedej	ddgdej	ddgdgdd Zdd Zejdeddgdfeddgdfeedddgfdeddgdfdfeddgdfeedddgfdeeddgdfdgdd Zejdejdddgddjddejdddgddjddgddifgd d! Zed"d# ZdS )$
TestRaisesz	cls, axesr   )r   r.   r   r   )r   columnsr_   c              	   C   sR   |f |}|j jdkstd}tjtjj|d |f |jdd W 5 Q R X d S )NTIndex has duplicates.matchFr   )	r
   r	   r   rS   raisesr   errorsDuplicateLabelErrorr   )r   r   Zaxesr   msgr   r   r   test_set_flags_with_duplicates  s
    

z)TestRaises.test_set_flags_with_duplicatesr   r   r   r_   c              	   C   s>   d}t jtjj|d d|j_W 5 Q R X |jjdks:td S )Nr`   ra   FT)rS   rc   r   rd   re   r
   r	   r   )r   r   rf   r   r   r   +test_setting_allows_duplicate_labels_raises  s    	z6TestRaises.test_setting_allows_duplicate_labels_raisesc              	   C   sd   t jdddgd}t jddgddgdjdd}d}tjt jj|d	 t ||g W 5 Q R X d S )
Nr   r   r   r   r   Fr   r`   ra   )r   r   r   rS   rc   rd   re   r?   r   r   r   rf   r   r   r   test_series_raises'  s
    zTestRaises.test_series_raiseszgetter, targetr   Nr*   Zilocc              	   C   sj   t jddgddgdddgdjd	d
}|r8t||}n|}d}tjt jj|d || W 5 Q R X d S )Nr   r   r%   r&   r'   r   r   r   Fr   r`   ra   )r   r)   r   getattrrS   rc   rd   re   )r   gettertargetr,   rf   r   r   r   test_getitem_raises.  s     zTestRaises.test_getitem_raisesr;   r   r>   Fr   r   r=   c              	   C   s4   d}t jtjj|d tj|f| W 5 Q R X d S )Nr`   ra   )rS   rc   r   rd   re   r?   )r   r@   rA   rf   r   r   r   test_concat_raisesJ  s    zTestRaises.test_concat_raisesc              	   C   s|   t jddddgidddgdjd	d
}t jddddgidddgd}d}tjt jj|d t j||ddd W 5 Q R X d S )Nr   r   r   r   r   r   r#   r   Fr   r(   r`   ra   TrC   )r   r)   r   rS   rc   rd   re   rE   rj   r   r   r   test_merge_raises_  s    zTestRaises.test_merge_raises)rP   rQ   rR   rS   rT   rU   r   r   r/   r)   rg   ri   rk   r6   rX   r\   ro   r   rp   r[   rq   r   r   r   r   r^     s\   	



r^   idxr   r   g?rM   Dr   Z1D)r   r   c                 C   s
   t | jS rD   )typerP   xr   r   r   <lambda>w      rw   )idsc              	   C   s   d}t jtjj|d tjd| djdd W 5 Q R X t jtjj|d$ tjdddgi| djdd W 5 Q R X t jtjj|d" tjddgg| d	jdd W 5 Q R X d S )
Nr`   ra   r   r   Fr   r   r   rh   )rS   rc   r   rd   re   r   r   r)   )rr   rf   r   r   r   test_raises_basicj  s     (rz   c                  C   sX   t dddddg} |  }t jdddgddggit jddgd	d
d}t|| d S )Nr   r   r#   	positionsr   r   r   r%   labelr4   r   )r   Index_format_duplicate_messager)   tmassert_frame_equalrr   r   rH   r   r   r   $test_format_duplicate_labels_message  s     r   c                  C   sd   t jdgdddddgg} |  }t jdddgdd	ggit jdgddggd
}t|| d S )Nr   r   r   r#   r{   r   r   r   r%   r   )r   
MultiIndexZfrom_productr~   r)   r   r   r   r   r   r   *test_format_duplicate_labels_message_multi  s    r   c               	   C   sR   t dddgijdd} d}tjt|d | jddd	d
gdd W 5 Q R X d S )Nr   r   r   Fr   Cannot specifyra   r   r%   r&   T)Zallow_duplicates)r   r)   r   rS   rc   
ValueErrorinsert)r,   rf   r   r   r   test_dataframe_insert_raises  s    r   zmethod, frame_onlyZ	set_indexr   T)Zinplaceset_axisr(   FZreset_indexr   c                 C   s   | S rD   r   ru   r   r   r   rw     rx   c              
   C   s   t ddgddgdjdd}|d }d|j_d}d	}d
t| krJt}nd }tjt	|d( t
j||d | | W 5 Q R X W 5 Q R X |stjt	|d( t
j||d | | W 5 Q R X W 5 Q R X d S )Nr   r   r   r'   Fr   r   r   z!Series.set_axis 'inplace' keywordr   ra   )r   r)   r   r
   r	   rY   FutureWarningrS   rc   r   r   Zassert_produces_warning)methodZ
frame_onlyr,   r    rf   Zwarn_msgwarnr   r   r   test_inplace_raises  s"    
r   c                  C   s\   t ddgjdd} t| }t| | t dg ijdd} t| }t| | d S )Nr   r   Fr   r   )r   r   r   r   Zround_trip_pickleZassert_series_equalr)   r   )r   r   r   r   r   test_pickle  s    

r   )#__doc__r6   ZnumpyrV   rS   Zpandasr   Zpandas._testingZ_testingr   rT   r]   r[   r   r^   rU   r}   ZPeriodIndexZPeriodZDatetimeIndexZ	TimestampZTimedeltaIndexZ	TimedeltaZCategoricalIndexZIntervalIndexZIntervalr   from_tuplesrz   r   r   r   r7   r   r   r   r   r   r   <module>   sJ    wd
	
	
