a
    j=ica                     @   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g d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   q/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/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| sRJ |j}t|sfJ | dksvJ |dd	 }t| sJ | dksJ td
dg} ddgddgg|d}t|d  sJ tddg} ddgddgg|d}t|d sJ 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|i | 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.   r1   )	r   r   range
isinstancer+   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g dg ddg dd}d|_|jdks4J |dg jdksHJ |jddgd d f jdkshJ |jd	d
gd d f jdksJ |jd	d
d d f jdksJ t |}t || |j|jksJ |j|jksJ d S )Nr   )XYr   bcindexXXXr7   r   r:   r   r   )tmr   Ztestattr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g dg dg ddg dd}|jd d df }t jg dtddd	}t || t|t jslJ |jd d d
f }t jg dtddd	}t || t|t jsJ |jd d df }t jg dtddd	}t || t|t jsJ |jdd d f }t jg dtddd	}t || t|t js@J |jd
d d f }t jg dtddd	}t || t|t jsJ |jdd d f }t jg dtddd	}t || t|t jsJ d S )Nr      r,            	   r7   r8   Zr9   r<   r7   abcr=   namer   r8   rN   r   )r   rG   rJ   ZXYZ)r   r,   rK   r:   r;   )r   rH   rL   )r?   r   r@   SubclassedSerieslistassert_series_equalr3   rA   r	   rD   resexpr   r   r   test_indexing_slicedf   s6    z-TestDataFrameSubclassing.test_indexing_slicedc                 C   sJ   G dd dt }tjtdd | j W d    n1 s<0    Y  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   rY   r   r   r   r   r-      s   r-   z.*i_dont_exist.*)match)r   pytestZraisesAttributeErrorrY   )r	   r-   r   r   r   "test_subclass_attr_err_propagation   s    z;TestDataFrameSubclassing.test_subclass_attr_err_propagationc                 C   sH  t jg dg ddtdd}t jg dg d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sJ t || t|t jsJ t || |j|j	\}}t|t j
sJ t ||j t|t j
s6J t ||j	 d S )Nr   r   r,   r   r:   ACEr<   r   r   rG   )r;   dABDr   axisr   r   r,   ABCDEr   rG   )r?   r   rS   alignnpnanr3   rB   r   r;   rR   rT   )r	   df1df2res1res2exp1exp2r   r   r   test_subclass_align   s0    $$z,TestDataFrameSubclassing.test_subclass_alignc                 C   s$  t jg dg ddtdd}t jg d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sJ t || t|t jsJ t 	|| ||\}}t|t jsJ t 	|| t|t jsJ t || d S )Nr^   r_   r`   r<   ra   rc   xrP   r   rd   r   r   r,   rf   r   rG   )
r?   r   rS   rR   rg   rh   ri   r3   rB   rT   )r	   rD   srl   rm   rn   ro   r   r   r    test_subclass_align_combinations   s&     $z9TestDataFrameSubclassing.test_subclass_align_combinationsc                 C   sH   t ddgi}| D ]*\}}t|t js0J t ||j|  qd S )Nr   r   )r?   r   Ziterrowsr3   rR   rT   r@   )r	   rD   irowr   r   r   test_subclass_iterrows   s    z/TestDataFrameSubclassing.test_subclass_iterrowsc                 C   s`   t jg dg dg dgg dg dd}| }t jg dtdtd	gd
}t || d S )Nr   rF   rI   r9   rM   r=   r0   )	r   r   r   rG   r,   rH   rJ   rK   rL   Z	aaabbbcccZ	XYZXYZXYZr<   )r?   r   stackrR   rS   rT   rU   r   r   r   test_subclass_stack   s    z,TestDataFrameSubclassing.test_subclass_stackc              
   C   s  t jg dg dg dg d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!g d"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&g d'd	td(d)gdd%d}|d}t || d S )*Nr*                                  !   (   )   *   +   AABBcdcdaaacccnamesWWXXyzyzwwwyyyrw   r*   r|   r{   r}   r   r   r   r   r   r   r   r   r   r   r   r   AAAABBBBccddccddyzyzyzyzr   r   r   Wr7   rQ   WXWXWXWXr   r   r   yz	r?   r   r   r4   rS   zipr   rx   rB   r	   rD   rW   rV   r   r   r   test_subclass_stack_multi   s^    




z2TestDataFrameSubclassing.test_subclass_stack_multic              
   C   s  t jg dg dg dg d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!g d"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.g d/d	td0d1gdd%d}|d}t || d S )2Nr*   r{         (@      *@r   r         6@      7@r   r         @@     @@r   r         E@     E@r   r   r   r   r   r   r   r   r   rw   r*   r   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   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   r   test_subclass_stack_multi_mixed  sf    



z8TestDataFrameSubclassing.test_subclass_stack_multi_mixedc                 C   s`   t jg dg dg dgg dg dd}| }t jg dtdtd	gd
}t || d S )Nr   rF   rI   r9   rM   rw   )	r   rG   rJ   r   r,   rK   r   rH   rL   Z	XXXYYYZZZZ	abcabcabcr<   )r?   r   unstackrR   rS   rT   rU   r   r   r   test_subclass_unstackY  s    z.TestDataFrameSubclassing.test_subclass_unstackc              
   C   sH  t jg dg dg dg d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g dg dgtddgddtjtttdtdtdg dd	d}| }t || |d}t || t jg dg dgtddgddtjtttdtdtdg dd	d}|d}t || d S )Nrz   r~   r   r   r   r   r   r   r   r   r   r   r   rw   )r*   r   r{   r   r|   r   r}   r   )r   r   r   r   r   r   r   r   r-   r.   r   WWWWXXXXyyzzyyzzcdcdcdcdr   r   r   )r*   r   r{   r   r|   r   r}   r   )r   r   r   r   r   r   r   r   r;   rb   ABABABABr   r   r   	r?   r   r   r4   rS   r   r   r   rB   r   r   r   r   test_subclass_unstack_multih  s>    
	
	
z4TestDataFrameSubclassing.test_subclass_unstack_multic              
   C   sH  t jg dg dg dg d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g dg dgtddgddtjtttdtdtdg dd	d}| }t || |d}t || t jg dg dgtddgddtjtttdtdtdg dd	d}|d}t || d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   rw   )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   r   r   r   r   )r   r   r   r   r   r   r   r   r;   rb   r   r   r   r   r   r   r   !test_subclass_unstack_multi_mixed  sN    

z:TestDataFrameSubclassing.test_subclass_unstack_multi_mixedc                 C   sn   t g dg dg dd}|jdddd}t dd	d
ddd	d
dd}d\|j_|j_t || d S )N)r-   r.   Cr   r.   r-   )Oner   r   Twor   r   )      ?       @      @r   r   r   )r=   r0   valuesr=   r0   r   r   r   r   r-   r.   r   )r   r   rw   )r?   r   Zpivotr=   rQ   r0   rB   )r	   rD   Zpivotedexpectedr   r   r   test_subclass_pivot  s    

z,TestDataFrameSubclassing.test_subclass_pivotc                 C   sp   t ddgddgddgddgd	}tj|d
dgd}t jg dg dg dg dgg dd}t || d S )NJohnMaryDoeBo      @      @      )firstlastheightweightr   r   )Zid_varsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   variablevaluer/   )r?   r   pdZmeltrB   )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< |
 |
  g dg dg dg dd}t|}|ddgg d }tj|ddgddd}t|| d S )N{   r   r   r:   r;   r   r   r   rb   ef      @333333?ffffff?皙	@?皙?)ZA1970ZA1980ZB1970ZB1980r7   id)r   r:   r;   rb   r   r   )r   r   r   r   r   r   )  r   r     r   r   )r   r   r   r   r   r   )r7   r-   r.   yearr   r   )r7   r-   r.   r-   r.   )rt   j)rh   randomseedrandnr?   r   dictr   r2   r=   tolistZ	set_indexr   Zwide_to_longrB   )r	   rq   rD   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g dg dg dg dgg d	d
}| fdd |j fdddd t jg dg dg dg dgg d	d
}|jfdddd}t|t jsJ t || t g dg dg dg dg}|jdd dd}t|t jsJ t || |jdd ddd}t|t js6J t || t g dg dg dg dg}|jdd dd}t|t jrJ t || d S )Nc                 S   s   t | tjsJ d S r   )r3   r?   rR   ru   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/   c                    s    | S r   r   rq   r   r   r   <lambda>#      z@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>c                    s    | S r   r   r   r   r   r   r   $  r   r   rd   )r   r   r   r   )r   r   r   g      @c                    s    | S r   r   r   )r   r   r   r   0  r   r   c                 S   s   t g dS Nr   )r?   rR   r   r   r   r   r   6  r   c                 S   s   g dS r   r   r   r   r   r   r   :  r   expand)re   Zresult_typec                 S   s   g dS r   r   r   r   r   r   r   @  r   )r?   r   applyr3   rB   rR   rT   )r	   rD   r   resultr   )r   r   r   test_subclassed_apply  sD    

""z.TestDataFrameSubclassing.test_subclassed_applyz*ignore:.*None will no longer:FutureWarningc                 C   s>   t g dg dg dd}t|| }t|t js:J d S Nr   rF   rI   r   r?   r   getattrr3   rR   )r	   Zall_reductionsrD   r   r   r   r   test_subclassed_reductionsD  s    z3TestDataFrameSubclassing.test_subclassed_reductionsc              	   C   sL  t g ddtjdddgg dd}| }t|t js>J t g dg d	g d
d}| }t|t jstJ t jg dg dg dg d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 d    n1 s
0    Y  t|t js&J t  }| }t|t jsHJ d S )N)r   MylaZLewisr   r  g      8@r   r      )FTTTF)ZPersonZAgeSingle)r   r   r   )r   r,   rH   )rJ   rK   r   r   rz   r~   r   r   r   r   r   r   r   r   r   r   r   rw   r   )level)r?   r   rh   ri   countr3   rR   r   r4   rS   r   Zassert_produces_warningFutureWarningr	   rD   r   r   r   r   test_subclassed_countL  s4    	,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>J d S )Nr   rG   r   )Znum_legsZ	num_wingsZfalcondogr<   )r?   r   isinr3   r  r   r   r   	test_isinm  s
    z"TestDataFrameSubclassing.test_isinc                 C   sZ   t g dg dg dd}| }t|t js6J t  }| }t|t jsVJ d S r   )r?   r   Z
duplicatedr3   rR   r  r   r   r   test_duplicatedu  s    z(TestDataFrameSubclassing.test_duplicated
idx_methodidxmaxidxminc                 C   s>   t g dg dg dd}t|| }t|t js:J d S r   r   )r	   r  rD   r   r   r   r   test_idx  s    z!TestDataFrameSubclassing.test_idxc                 C   s   t g dg dg}t g d}||}t|t js>J t g dg dg}t g d}||}t|t js|J d S )N)r   r   )r   r   r   r   )r   r   r   r   )r?   r   rR   dotr3   )r	   rD   rr   r   r   r   r   test_dot  s    

z!TestDataFrameSubclassing.test_dotc                 C   sV   t g dg dg dd}| }t|t js6J |jdd}t|t jsRJ d S )Nr   rF   rI   r   Fr<   )r?   r   Zmemory_usager3   rR   r  r   r   r   test_memory_usage  s
    z*TestDataFrameSubclassing.test_memory_usagec                 C   sr   g d}g d}t jtjdd||d}t jtjdd|d d |d}|j|dddd	}t|t jsnJ d S )
N)r   r:   r;   rb   r   )onetwothreefourr,   rG   rw   r   TZkendall)re   Zdropmethod)r?   r   rh   r   r   Zcorrwithr3   rR   )r	   r=   r0   rj   rk   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spJ ||d }t|tjsJ |d}t|tjsJ d S )	Nr   z1/1/1990Z53s)Zperiodsfreqr   r<   r  z
1989-12-31)	r   Z
date_ranger?   r   rh   ri   Zasofr3   rR   )r	   NrngrD   r   r   r   r   	test_asof  s    	
z"TestDataFrameSubclassing.test_asofc                 C   s:   t g dg dg dd}| }t|t js6J d S r   )r?   r   r  r3   rR   r  r   r   r   test_idxmin_preserves_subclass  s    z7TestDataFrameSubclassing.test_idxmin_preserves_subclassc                 C   s:   t g dg dg dd}| }t|t js6J d S r   )r?   r   r  r3   rR   r  r   r   r   test_idxmax_preserves_subclass  s    z7TestDataFrameSubclassing.test_idxmax_preserves_subclassc                 C   sT   t g dg dg dd}| }t|t js6J | }t|t|sPJ d S r   )r?   r   Zconvert_dtypesr3   type)r	   r   rD   r   r   r   r   &test_convert_dtypes_preserves_subclass  s
    z?TestDataFrameSubclassing.test_convert_dtypes_preserves_subclassc                 C   sJ   t g dg dg dd}|tjtjtjd}t|t jsFJ d S r   )r?   r   Zastyperh   int64int32float64r3   r  r   r   r   test_astype_preserves_subclass  s    z7TestDataFrameSubclassing.test_astype_preserves_subclassc                 C   sB   t dg di}tdg di}||s0J ||s>J d S )Nr   r   )r   r?   r   equals)r	   rj   rk   r   r   r   test_equals_subclass  s    z-TestDataFrameSubclassing.test_equals_subclassc                 C   sV   t dg di}|jddgdd}t dg di}t|t jsFJ t || d S )Nr-   r   r   r   Zffill)r  )r   r   r   )r?   r   replacer3   rB   )r	   rD   r   r   r   r   r   test_replace_list_method  s
    z1TestDataFrameSubclassing.test_replace_list_methodN))r   r   r   r6   rE   rX   r]   rp   rs   rv   ry   r   r   r   r   r   r   r   r   r   r[   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   )numpyrh   r[   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   
	