a
    <b!_                     @   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   p/Users/vegardjervell/Documents/master/model/venv/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                   @   s   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&dAS )B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                       s<   e Zd ZdZ 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.
            c                    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-   r0   )	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indexZXXXr6   r   r9   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+            	   r6   r7   Zr8   r;   r6   abcr<   namer   r7   rL   r   )r   rE   rH   ZXYZ)r   r+   rI   r9   r:   )r   rF   rJ   )r=   r   r>   SubclassedSerieslistassert_series_equalr2   r?   r	   rB   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   rW   r   r   r   r   r,      s   r,   z.*i_dont_exist.*)match)r   pytestZraisesAttributeErrorrW   )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   r9   ACEr;   r   r   rE   )r:   dABDr   axisr   r   r+   ABCDEr   rE   )r=   r   rQ   alignnpnanr2   r@   r   r:   rP   rR   )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;   r_   ra   xrN   r   rb   r   r   r+   rd   r   rE   )
r=   r   rQ   rP   re   rf   rg   r2   r@   rR   )r	   rB   srj   rk   rl   rm   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iterrowsr2   rP   rR   r>   )r	   rB   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   rD   rG   r8   rK   r<   r/   )	r   r   r   rE   r+   rF   rH   rI   rJ   Z	aaabbbcccZ	XYZXYZXYZr;   )r=   r   stackrP   rQ   rR   rS   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yyyru   r)   rz   ry   r{   r}   r   r~   r   r   r   r   r   r   r   r   r   AAAABBBBccddccddyzyzyzyzr   r   r   Wr6   rO   WXWXWXWXr   r   r   yz	r=   r   r   r3   rQ   zipr   rv   r@   r	   rB   rU   rT   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)   ry         (@      *@r}   r~         6@      7@r   r         @@     @@r   r         E@     E@r   r   r   r   r   r   r   r   r   ru   r)   r   ry   r   r}   r   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r6   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   rD   rG   r8   rK   ru   )	r   rE   rH   r   r+   rI   r   rF   rJ   Z	XXXYYYZZZZ	abcabcabcr;   )r=   r   unstackrP   rQ   rR   rS   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 )Nrx   r|   r   r   r   r   r   r   r   r   r   r   r   ru   )r)   r}   ry   r~   rz   r   r{   r   )r   r   r   r   r   r   r   r   r,   r-   r   WWWWXXXXyyzzyyzzcdcdcdcdr   r   r   )r)   r   ry   r   rz   r   r{   r   )r}   r   r~   r   r   r   r   r   r:   r`   ABABABABr   r   r   	r=   r   r   r3   rQ   r   r   r   r@   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   ru   )r)   r}   ry   r~   r   r   r   r   )r   r   r   r   r   r   r   r   r,   r-   r   r   r   r   r   )r)   r   ry   r   r   r   r   r   )r}   r   r~   r   r   r   r   r   r:   r`   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<   r/   valuesr<   r/   r   r   r   r   r,   r-   r   )r   r   ru   )r=   r   Zpivotr<   rO   r/   r@   )r	   rB   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meltr@   )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   r9   r:   )r   r   r   r`   ef      @333333?ffffff?皙	@?皙?)ZA1970ZA1980ZB1970ZB1980r6   id)r   r9   r:   r`   r   r   )r   r   r   r   r   r   )  r   r     r   r   )r   r   r   r   r   r   )r6   r,   r-   yearr   r   )r6   r,   r-   r,   r-   )rr   j)rf   randomseedrandnr=   r   dictr   r1   r<   tolistZ	set_indexr   Zwide_to_longr@   )r	   ro   rB   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   )r2   r=   rP   rs   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   ro   r   r   r   <lambda>#      z@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>c                    s    | S r   r   r   r   r   r   r   $  r   r   rb   )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=   rP   r   r   r   r   r   6  r   c                 S   s   g dS r   r   r   r   r   r   r   :  r   expand)rc   Zresult_typec                 S   s   g dS r   r   r   r   r   r   r   @  r   )r=   r   applyr2   r@   rP   rR   )r	   rB   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   rD   rG   r   r=   r   getattrr2   rP   )r	   Zall_reductionsrB   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+   rF   )rH   rI   r   r   rx   r|   r   r   r   r   r   r   r   r   r   r   r   ru   r   )level)r=   r   rf   rg   countr2   rP   r   r3   rQ   r   Zassert_produces_warningFutureWarningr	   rB   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   rE   r   )Znum_legsZ	num_wingsZfalconZdogr;   )r=   r   isinr2   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
duplicatedr2   rP   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
  rB   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   rP   dotr2   )r	   rB   rp   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   rD   rG   r   Fr;   )r=   r   Zmemory_usager2   rP   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   r9   r:   r`   r   )ZoneZtwoZthreeZfourr+   rE   ru   r   TZkendall)rc   Zdropmethod)r=   r   rf   r   r   Zcorrwithr2   rP   )r	   r<   r/   rh   ri   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   rf   rg   Zasofr2   rP   )r	   NrngrB   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  r2   rP   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  r2   rP   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_dtypesr2   type)r	   r   rB   r   r   r   r   &test_convert_dtypes_preserves_subclass  s
    z?TestDataFrameSubclassing.test_convert_dtypes_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	   rh   ri   r   r   r   test_equals_subclass  s    z-TestDataFrameSubclassing.test_equals_subclassN)'r   r   r   r5   rC   rV   r[   rn   rq   rt   rw   r   r   r   r   r   r   r   r   r   rY   markfilterwarningsr   r  r  r	  Zparametrizer  r  r  tdZskip_if_no_scipyr  r  r  r  r  r  r   r   r   r   r      sB   7#
9>'26

!

	
	r   )Znumpyrf   rY   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   
	