U
    ea                     @   sp   d dl Zd dlZd dlm  mZ d dlZd dlm	Z	m
Z
mZmZ d dlmZ e dd ZG dd dZdS )    N)	DataFrameIndex
MultiIndexSeriesc                      s&   G  fdddt   ddddgiS )Nc                       s   e Zd Ze fddZdS )z2gpd_style_subclass_df.<locals>.SubclassedDataFramec                    s    S N selfSubclassedDataFramer   a/var/www/html/assets/scripts/venv/lib/python3.8/site-packages/pandas/tests/frame/test_subclass.py_constructor   s    z?gpd_style_subclass_df.<locals>.SubclassedDataFrame._constructorN)__name__
__module____qualname__propertyr   r   r
   r   r   r      s   r   a         )r   r   r   r
   r   gpd_style_subclass_df   s    r   c                   @   s0  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zejd#d$d% Zd&d' Zd(d) Zd*d+ Zejd,d-d.gd/d0 Zd1d2 Zd3d4 Zej d5d6 Z!d7d8 Z"d9d: Z#d;d< Z$d=d> Z%d?d@ Z&dAdB Z'dCdD Z(dES )FTestDataFrameSubclassingc                    s  G fdddt G  fdddt tdtdd} |}t| sRt|j}t|sft| dksvt|dd	 }t| st| dkstt	d
dg} ddgddgg|d}t|d  stt	ddg} ddgddgg|d}t|d std S )Nc                       s$   e Zd Ze fddZdd ZdS )zQTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeriesc                    s    S r   r   r   CustomSeriesr   r   r       s    z^TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries._constructorc                 S   s   dS NOKr   r   r   r   r   custom_series_function$   s    zhTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries.custom_series_functionN)r   r   r   r   r   r   r   r   r   r   r      s   r   c                       sB   e Zd ZdZdd fddZefddZZdd	 Z  Z	S )
zTTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFramez
            Subclasses pandas DF, fills DF with simulation results, adds some
            custom plotting functions.
            N)returnc                    s   t  j|| d S r   )super__init__)r	   argskw	__class__r   r   r   -   s    z]TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.__init__c                    s    S r   r   r   )CustomDataFramer   r   r   0   s    zaTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame._constructorc                 S   s   dS r   r   r   r   r   r   custom_frame_function6   s    zjTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.custom_frame_function)
r   r   r   __doc__r   r   r   Z_constructor_slicedr%   __classcell__r   r$   r   r"   r   r$   '   s   r$   
   )col1Zcol2r   r      )Ar,   )r,   Br   r   r   columnsr,   )r,    )r-   r0   )
r   r   range
isinstanceAssertionErrorr*   r   r%   r   from_tuples)r	   dataZcdfZ
cdf_seriesZcdf_rowsZmcolZ	cdf_multiZ
cdf_multi2r   r(   r   "test_frame_subclassing_and_slicing   s"    z;TestDataFrameSubclassing.test_frame_subclassing_and_slicingc                 C   s   t jdddgdddgddddgd}d	|_|jd	ks:t|d
g jd	ksNt|jddgd d f jd	ksnt|jddgd d f jd	kst|jddd d f jd	kstt |}t || |j|jkst|j|jkstd S )Nr   r   r   )XYr   bcindexXXXr7   r   )	tmr   Ztestattrr3   locilocZround_trip_pickleassert_frame_equal	_metadata)r	   dfZ	unpickledr   r   r   test_dataframe_metadataR   s        
z0TestDataFrameSubclassing.test_dataframe_metadatac                 C   s  t jdddgdddgddd	gd
dddgd}|jd d df }t jdddgtddd}t || t|t jsvt|jd d df }t jdddgtddd}t || t|t jst|jd d df }t jddd	gtddd}t || t|t jst|jdd d f }t jdddgtddd}t || t|t jsRt|jdd d f }t jdddgtddd}t || t|t jst|jdd d f }t jddd	gtddd}t || t|t jstd S )Nr   r   r      r+            	   )r7   r8   Zr   r9   r:   r;   r7   abcr<   namer8   rJ   ZXYZ)	r>   r   r?   SubclassedSerieslistassert_series_equalr2   r3   r@   r	   rC   resexpr   r   r   test_indexing_slicedf   s8     z-TestDataFrameSubclassing.test_indexing_slicedc              	   C   s6   G dd dt }tjtdd | j W 5 Q R X d S )Nc                   @   s   e Zd Zedd ZdS )zFTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.Ac                 S   s   | j S r   )Zi_dont_existr   r   r   r   bar   s    zJTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.A.barN)r   r   r   r   rU   r   r   r   r   r,      s   r,   z.*i_dont_exist.*)match)r   pytestZraisesAttributeErrorrU   )r	   r,   r   r   r   "test_subclass_attr_err_propagation   s    z;TestDataFrameSubclassing.test_subclass_attr_err_propagationc                 C   sP  t jdddgdddgdtdd}t jdddgdddgd	td
d}|j|dd\}}t jdtjdtjdgdtjdtjdgdtdd}t jddtjdtjgddtjdtjgd	tdd}t|t jstt || t|t jstt || |j	|j
\}}t|t jstt ||j	 t|t js>tt ||j
 d S )Nr   r   r+   r   r9   ACEr;   r   rE   )r:   dABDr   axisABCDE)r>   r   rO   alignnpnanr2   r3   rA   r   r:   rN   rP   )r	   df1df2res1res2exp1exp2r   r   r   test_subclass_align   s4      $$z,TestDataFrameSubclassing.test_subclass_alignc                 C   s*  t jdddgdddgdtdd}t jdddgtd	d
d}|j|dd\}}t jdtjdtjdgdtjdtjdgdtdd}t jddtjdtjgtdd
d}t|t jstt 	|| t|t jstt 
|| ||\}}t|t jstt 
|| t|t jstt 	|| d S )Nr   r   r+   rZ   r[   r;   r   rE   r]   xrL   r   r^   r`   )r>   r   rO   rN   ra   rb   rc   r2   r3   rA   rP   )r	   rC   srf   rg   rh   ri   r   r   r    test_subclass_align_combinations   s*    $$  z9TestDataFrameSubclassing.test_subclass_align_combinationsc                 C   sH   t ddgi}| D ]*\}}t|t js0tt ||j|  qd S )Nr   r   )r>   r   Ziterrowsr2   rN   r3   rP   r?   )r	   rC   irowr   r   r   test_subclass_iterrows   s    z/TestDataFrameSubclassing.test_subclass_iterrowsc              
   C   sx   t jdddgdddgddd	ggd
ddgdddgd}| }t jddddddddd	g	tdtdgd}t || d S )Nr   r   r   rE   r+   rF   rG   rH   rI   r   r9   r:   r7   r8   rJ   r<   r/   Z	aaabbbcccZ	XYZXYZXYZr;   )r>   r   stackrN   rO   rP   rQ   r   r   r   test_subclass_stack   s     z,TestDataFrameSubclassing.test_subclass_stackc              
   C   s  t jddddgddddgd	d
ddgddddggtjtttdtdddgdtjtttdtdddgdd}t jddgddgddgddgd	dgd
dgddgddggtjtttdtdtddddgdtddgdd d}| }t || |d}t || t jddgddgddgddgd	d
gddgddgddggtjtttdtdtd!dddgdtd"d#gdd d}|d}t || d S )$Nr)                                  !   (   )   *   +   AABBcdcdaaacccnamesWWXXyzyzwwwyyyrq   AAAABBBBccddccddyzyzyzyzWr7   rM   WXWXWXWXyz	r>   r   r   r4   rO   zipr   rr   rA   r	   rC   rS   rR   r   r   r   test_subclass_stack_multi   sb    *  




z2TestDataFrameSubclassing.test_subclass_stack_multic              
   C   s  t jddddgddddgd	d
ddgddddggtjtttdtdddgdtjtttdtdddgdd}t jddgddgddgddgd	dgd
dgddgddggtjtttdtdtddddgdtddgdd d}| }t || |d}t || t jd!d"gddgd#d$gddgd%d&gddgd'd(gddggtjtttdtdtd)dddgdtd*d+gdd d}|d}t || d S ),Nr)   rt         (@      *@rw   rx         6@      7@r{   r|         @@     @@r   r         E@     E@r   r   r   r   r   r   r   r   r   rq   r   r   r   r   r7   r   g      $@g      &@g      4@      5@g      >@g      ?@g      D@g     D@r   r   r   r   r   r   r   r   test_subclass_stack_multi_mixed  sj    



  



z8TestDataFrameSubclassing.test_subclass_stack_multi_mixedc              
   C   sx   t jdddgdddgddd	ggd
ddgdddgd}| }t jddddddddd	g	tdtdgd}t || d S )Nr   r   r   rE   r+   rF   rG   rH   rI   r   r9   r:   r7   r8   rJ   rq   Z	XXXYYYZZZZ	abcabcabcr;   )r>   r   unstackrN   rO   rP   rQ   r   r   r   test_subclass_unstackY  s     z.TestDataFrameSubclassing.test_subclass_unstackc              
   C   s  t jddddgddddgd	d
ddgddddggtjtttdtdddgdtjtttdtdddgdd}t jddddddddgd	dd
dddddggtddgddtjtttdtdtd dddgdd}| }t || |d}t || t jdd	dd
ddddgddddddddggtd!d"gddtjtttdtdtd#dddgdd}|d}t || d S )$Nr)   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r,   r-   r   WWWWXXXXyyzzyyzzcdcdcdcdr:   r\   ABABABAB	r>   r   r   r4   rO   r   r   r   rA   r   r   r   r   test_subclass_unstack_multih  sB    *  
&	
&	
z4TestDataFrameSubclassing.test_subclass_unstack_multic              
   C   s  t jddddgddddgd	d
ddgddddggtjtttdtdddgdtjtttdtdddgdd}t jddddddddgd	dd
dddddggtddgddtjtttdtdtd dddgdd}| }t || |d}t || t jdd	dd
ddddgddddddddggtd!d"gddtjtttdtdtd#dddgdd}|d}t || d S )$Nr)   rt   r   r   rw   rx   r   r   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   r,   r-   r   r   r   r   r:   r\   r   r   r   r   r   r   !test_subclass_unstack_multi_mixed  sR    



  

z:TestDataFrameSubclassing.test_subclass_unstack_multi_mixedc              
   C   s   t ddddddgddddddgddddddgd	}|jd
ddd	}t ddddddddd}d\|j_|j_t || d S )Nr,   r-   COneTwog      ?g       @g      @)r<   r/   valuesr<   r/   r   r,   r-   r   )r   r   rq   )r>   r   Zpivotr<   rM   r/   rA   )r	   rC   Zpivotedexpectedr   r   r   test_subclass_pivot  s    

z,TestDataFrameSubclassing.test_subclass_pivotc                 C   s   t ddgddgddgddgd	}tj|d
dgd}t jddddgddddgddddgddddggd
dddgd}t || d S )NJohnMaryDoeBo      @      @      )firstlastheightweightr   r   )Zid_varsr   r   variablevaluer.   )r>   r   pdZmeltrA   )r	   ZcheeseZmeltedr   r   r   r   test_subclassed_melt  s"    	





z-TestDataFrameSubclassing.test_subclassed_meltc              
   C   s   t jd t jd}tddddddd	dd
dddddddtttd|d}|j	|d< |
 |
  dddddd	gd
dddddgddddddgddddddgd}t|}|ddgdddg }tj|ddgddd}t|| d S )N{   r   r   r9   r:   )r   r   r   r\   efg      @g333333?gffffff?g	@g?g?)ZA1970ZA1980ZB1970ZB1980r7   idi  i  r   r   r   )r7   r,   r-   yearr   r   r7   r,   r-   )rn   j)rb   randomseedrandnr>   r   dictr   r1   r<   tolistZ	set_indexr   Zwide_to_longrA   )r	   rk   rC   Zexp_datar   Z
long_framer   r   r   test_subclassed_wide_to_long  s*    






z5TestDataFrameSubclassing.test_subclassed_wide_to_longc                    s  dd  dd t jddddgd	d
ddgddddgd	d
ddggddddgd}| fdd |j fdddd t jddddgd	d
ddgddddgd	d
ddggddddgd}|jfdddd}t|t jstt || t dddgdddgdddgdddgg}|jdd dd}t|t js4tt || |jdd ddd }t|t jsftt || t dddgdddgdddgdddgg}|jd!d dd}t|t jrtt || d S )"Nc                 S   s   t | tjstd S r   )r2   r>   rN   r3   ro   r   r   r   check_row_subclass  s    zJTestDataFrameSubclassing.test_subclassed_apply.<locals>.check_row_subclassc                 S   s    | d dkr| d  d7  < | S )Nr   r   r   g      ?r   r   r   r   r   stretch  s    z?TestDataFrameSubclassing.test_subclassed_apply.<locals>.stretchr   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   c                    s    | S r   r   rk   r   r   r   <lambda>#      z@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>c                    s    | S r   r   r   r   r   r   r   $  r   r   r^   g      @c                    s    | S r   r   r   )r   r   r   r   0  r   r   r   c                 S   s   t dddgS Nr   r   r   )r>   rN   r   r   r   r   r   6  r   c                 S   s
   dddgS r   r   r   r   r   r   r   :  r   expand)r_   Zresult_typec                 S   s
   dddgS r   r   r   r   r   r   r   @  r   )r>   r   applyr2   r3   rA   rN   rP   )r	   rC   r   resultr   )r   r   r   test_subclassed_apply  sD    











**z.TestDataFrameSubclassing.test_subclassed_applyz*ignore:.*None will no longer:FutureWarningc                 C   sD   t dddgdddgddd	gd
}t|| }t|t js@td S Nr   r   r   rE   r+   rF   rG   rH   rI   r   r>   r   getattrr2   rN   r3   )r	   Zall_reductionsrC   r   r   r   r   test_subclassed_reductionsD  s    $z3TestDataFrameSubclassing.test_subclassed_reductionsc              	   C   sX  t dddddgdtjdddgdd	d	d	dgd
}| }t|t jsJtt dddgdddgdddgd}| }t|t jstt jddddgddddgddddgddd d!ggtj	t
tt
d"t
d#d$d%gd&tj	t
tt
d't
d(d)d*gd&d+}t t |jdd,}W 5 Q R X t|t js2tt  }| }t|t jsTtd S )-Nr   ZMylaZLewisg      8@r   r~      FT)ZPersonZAgeSingler   r   r   r+   rF   rG   rH   r   r)   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   rq   )level)r>   r   rb   rc   countr2   rN   r3   r   r4   rO   r   Zassert_produces_warningFutureWarningr	   rC   r   r   r   r   test_subclassed_countL  s8    $*  	z.TestDataFrameSubclassing.test_subclassed_countc                 C   sB   t jddgddgdddgd}|ddg}t|t js>td S )Nr   rE   r   )Znum_legsZ	num_wingsZfalcondogr;   )r>   r   isinr2   r3   r   r   r   r   	test_isinm  s     z"TestDataFrameSubclassing.test_isinc                 C   s`   t dddgdddgddd	gd
}| }t|t js<tt  }| }t|t js\td S r   )r>   r   Z
duplicatedr2   rN   r3   r   r   r   r   test_duplicatedu  s    $z(TestDataFrameSubclassing.test_duplicated
idx_methodidxmaxidxminc                 C   sD   t dddgdddgddd	gd
}t|| }t|t js@td S r   r   )r	   r   rC   r   r   r   r   test_idx  s    $z!TestDataFrameSubclassing.test_idxc                 C   s   t ddddgddddgg}t ddddg}||}t|t jsJtt ddddgddddgg}t ddddg}||}t|t jstd S )Nr   r   r   )r>   r   rN   dotr2   r3   )r	   rC   rl   r   r   r   r   test_dot  s    

z!TestDataFrameSubclassing.test_dotc                 C   s\   t dddgdddgddd	gd
}| }t|t js<t|jdd}t|t jsXtd S )Nr   r   r   rE   r+   rF   rG   rH   rI   r   Fr;   )r>   r   Zmemory_usager2   rN   r3   r   r   r   r   test_memory_usage  s
    $z*TestDataFrameSubclassing.test_memory_usagec                 C   s|   dddddg}dddd	g}t jtjd
d||d}t jtjdd|d d |d}|j|dddd}t|t jsxtd S )Nr   r9   r:   r\   r   onetwothreefourr+   rE   rq   r   TZkendall)r_   Zdropmethod)	r>   r   rb   r   r   Zcorrwithr2   rN   r3   )r	   r<   r/   rd   re   Zcorrelsr   r   r   test_corrwith  s       
 z&TestDataFrameSubclassing.test_corrwithc                 C   s   d}t jd|dd}tjtjtjtjgtjtjtjgtjtjtjgd|d}||dd  }t|tjspt||d }t|tj	st|d}t|tj	std S )	Nr   z1/1/1990Z53s)Zperiodsfreqr   r;   r   z
1989-12-31)
r   Z
date_ranger>   r   rb   rc   Zasofr2   r3   rN   )r	   NrngrC   r   r   r   r   	test_asof  s    	
z"TestDataFrameSubclassing.test_asofc                 C   s@   t dddgdddgddd	gd
}| }t|t js<td S r   )r>   r   r   r2   rN   r3   r   r   r   r   test_idxmin_preserves_subclass  s    $z7TestDataFrameSubclassing.test_idxmin_preserves_subclassc                 C   s@   t dddgdddgddd	gd
}| }t|t js<td S r   )r>   r   r   r2   rN   r3   r   r   r   r   test_idxmax_preserves_subclass  s    $z7TestDataFrameSubclassing.test_idxmax_preserves_subclassc                 C   sZ   t dddgdddgddd	gd
}| }t|t js<t| }t|t|sVtd S r   )r>   r   Zconvert_dtypesr2   r3   type)r	   r   rC   r   r   r   r   &test_convert_dtypes_preserves_subclass  s
    $z?TestDataFrameSubclassing.test_convert_dtypes_preserves_subclassc                 C   sP   t dddgdddgddd	gd
}|tjtjtjd
}t|t jsLtd S r   )	r>   r   Zastyperb   Zint64Zint32Zfloat64r2   r3   r   r   r   r   test_astype_preserves_subclass  s    $z7TestDataFrameSubclassing.test_astype_preserves_subclassc                 C   sF   t ddddgi}tddddgi}||s4t||sBtd S )Nr   r   r   r   )r   r>   r   equalsr3   )r	   rd   re   r   r   r   test_equals_subclass  s    z-TestDataFrameSubclassing.test_equals_subclassc                 C   sZ   t ddddgi}|jddgdd}t ddddgi}t|t jsJtt || d S )Nr,   r   r   r   Zffill)r   )r>   r   replacer2   r3   rA   )r	   rC   r   r   r   r   r   test_replace_list_method  s
    z1TestDataFrameSubclassing.test_replace_list_methodN))r   r   r   r6   rD   rT   rY   rj   rm   rp   rs   r   r   r   r   r   r   r   r   r   rW   markfilterwarningsr   r   r   r   Zparametrizer   r   r   tdZskip_if_no_scipyr   r   r   r   r   r  r  r  r   r   r   r   r      sF   7#
9>'26

!

	
	r   )numpyrb   rW   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r   r   r   r   Zpandas._testingZ_testingr>   Zfixturer   r   r   r   r   r   <module>   s   
	