o
    g\                     @   s`   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 G dd dZdS )    N)	DataFrameIndex
MultiIndexSeriesc                   @   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?S )@TestDataFrameSubclassingc                    s  G fdddt G  fdddt tdtdd} |}t| s)J |j}t|s3J | dks;J |dd	 }t| sHJ | dksPJ td
dg} ddgddgg|d}t|d  slJ tddg} ddgddgg|d}t|d sJ 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 N selfCustomSeriesr	   ^/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/pandas/tests/frame/test_subclass.py_constructor      z^TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries._constructorc                 S      dS NOKr	   r
   r	   r	   r   custom_series_function      zhTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries.custom_series_functionN)__name__
__module____qualname__propertyr   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                    r   r   r	   r
   )CustomDataFramer	   r   r   &   r   zaTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame._constructorc                 S   r   r   r	   r
   r	   r	   r   custom_frame_function,   r   zjTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.custom_frame_function)
r   r   r   __doc__r   r   r   _constructor_slicedr!   __classcell__r	   r    r   r   r   r       s    r    
   )col1col2r         )Ar+   )r+   Br         columnsr+   )r+    )r,   r1   )	r   r   range
isinstancer'   r   r!   r   from_tuples)r   datacdf
cdf_seriescdf_rowsmcol	cdf_multi
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sJ |dg jdks$J |jddgd d f jdks4J |jd	d
gd d f jdksDJ |jd	d
d d f jdksTJ t |}t || |j|jksgJ |j|jksoJ d S )Nr)   r-   r.   )XYabcindexXXXr>   rA   rB   r   r)   )tmSubclassedDataFrametestattrlocilocround_trip_pickleassert_frame_equal	_metadata)r   df	unpickledr	   r	   r   test_dataframe_metadataH   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s6J |jd d d
f }t jg dtddd	}t || t|t jsYJ |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 |jdd d f }t jg dtddd	}t || t|t jsJ d S )Nr=      r*            	   r>   r?   Zr@   rD   r>   abcrE   namer)   r?   rZ   rA   )r)   rS   rV   XYZ)r-   r*   rW   rB   rC   )r.   rT   rX   )rG   rH   rJ   SubclassedSerieslistassert_series_equalr3   rK   r   rO   resexpr	   r	   r   test_indexing_sliced\   s6   z-TestDataFrameSubclassing.test_indexing_slicedc                 C   sL   G dd dt }tjtdd | j W d    d S 1 sw   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   )i_dont_existr
   r	   r	   r   bar   s   zJTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.A.barN)r   r   r   r   rg   r	   r	   r	   r   r+      s    r+   z.*i_dont_exist.*)match)r   pytestraisesAttributeErrorrg   )r   r+   r	   r	   r   "test_subclass_attr_err_propagation   s   
"z;TestDataFrameSubclassing.test_subclass_attr_err_propagationc                 C   sD  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seJ t || t|t jssJ t || |j|j	\}}t|t j
sJ t ||j t|t j
sJ t ||j	 d S )Nr)   r.   r*   rA   rB   ACErD   r)   r-   rS   )rC   dABDr   axisr)   r.   r*   ABCDEr-   rS   )rG   rH   r`   alignnpnanr3   rM   rA   rC   r_   ra   )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sXJ t || t|t jsfJ t 	|| ||\}}t|t js{J t 	|| t|t jsJ t || d S )Nrm   rn   ro   rD   rp   rr   xr\   r   rs   r)   r.   r*   ru   r-   rS   )
rG   rH   r`   r_   rv   rw   rx   r3   rM   ra   )r   rO   sr{   r|   r}   r~   r	   r	   r    test_subclass_align_combinations   s&    $z9TestDataFrameSubclassing.test_subclass_align_combinationsc                 C   sH   t ddgi}| D ]\}}t|t jsJ t ||j|  qd S )NrA   r)   )rG   rH   iterrowsr3   r_   ra   rJ   )r   rO   irowr	   r	   r   test_subclass_iterrows   s
   z/TestDataFrameSubclassing.test_subclass_iterrowsc                 C   `   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=   rR   rU   r@   rY   rE   r0   )	r)   r-   r.   rS   r*   rT   rV   rW   rX   	aaabbbccc	XYZXYZXYZrD   )rG   rH   stackr_   r`   ra   rb   r	   r	   r   test_subclass_stack      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yyyr   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   AAAABBBBccddccddyzyzyzyzr   r   r   Wr>   r]   WXWXWXWXr   r   r   yz	rG   rH   r   r4   r`   zipr   r   rM   r   rO   rd   rc   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   r   r&   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r>   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   r   )Nr=   rR   rU   r@   rY   r   )	r)   rS   rV   r-   r*   rW   r.   rT   rX   	XXXYYYZZZ	abcabcabcrD   )rG   rH   unstackr_   r`   ra   rb   r	   r	   r   test_subclass_unstackO  r   z.TestDataFrameSubclassing.test_subclass_unstackc              
   C   H  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   r   )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   rC   rq   ABABABABr   r   r   	rG   rH   r   r4   r`   r   r   r   rM   r   r	   r	   r   test_subclass_unstack_multi^  s>   
	

	z4TestDataFrameSubclassing.test_subclass_unstack_multic              
   C   r   )Nr   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   r   r   r   r   )r   r   r   r   r   r   r   r   rC   rq   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   )rE   r0   valuesrE   r0   r   r   r   r   r+   r,   r   )r   r   r   )rG   rH   pivotrE   r]   r0   rM   )r   rO   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   )id_varsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   variablevaluer/   )rG   rH   pdmeltrM   )r   cheese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.   rA   rB   rC   )r   r)   r-   rq   ef      @333333?ffffff?皙	@?皙?)A1970A1980B1970B1980r>   id)rA   rB   rC   rq   r   r   )r   r   r   r   r  r  )  r  r    r	  r	  )r   r)   r-   r   r)   r-   )r>   r+   r,   yearr  r
  )r>   r+   r,   r+   r,   )r   j)rw   randomseedrandnrG   rH   dictr   r2   rE   tolist	set_indexr   wide_to_longrM   )r   r   rO   exp_datar   
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sYJ t || t g dg dg dg dg}|jdd dd}t|t jsJ t || |jd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rJ t || d S )Nc                 S   s   t | tjsJ d S r   )r3   rG   r_   r   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 r   r	   r   r  r	   r   <lambda>      z@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>c                    r  r   r	   r  r  r	   r   r    r  r)   rs   )r   r   r   r   )r   r   r   g      @c                    r  r   r	   r  )r  r	   r   r  &  r  r=   c                 S   s   t g dS Nr=   )rG   r_   r  r	   r	   r   r  ,  s    c                 S      g dS r  r	   r  r	   r	   r   r  0  r  expand)rt   result_typec                 S   r  r  r	   r  r	   r	   r   r  6  r  )rG   rH   applyr3   rM   r_   ra   )r   rO   r   resultr	   )r  r  r   test_subclassed_apply  sD   

""z.TestDataFrameSubclassing.test_subclassed_applyz*ignore:.*None will no longer:FutureWarningc                 C   >   t g dg dg dd}t|| }t|t jsJ d S Nr=   rR   rU   r   rG   rH   getattrr3   r_   )r   all_reductionsrO   r#  r	   r	   r   test_subclassed_reductions:  s   z3TestDataFrameSubclassing.test_subclassed_reductionsc              	   C   sF  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s:J 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 sw   Y  t|t jsJ t  }| }t|t jsJ d S )N)r   MylaLewisr   r+  g      8@r   r      )FTTTF)PersonAgeSingle)r)   r   r.   )r   r*   rT   )rV   rW   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r)   )level)rG   rH   rw   rx   countr3   r_   r   r4   r`   r   assert_produces_warningFutureWarningr   rO   r#  r	   r	   r   test_subclassed_countB  s6   	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-   rS   r   )num_legs	num_wingsfalcondogrD   )rG   rH   isinr3   r5  r	   r	   r   	test_isinc  s
   z"TestDataFrameSubclassing.test_isinc                 C   sZ   t g dg dg dd}| }t|t jsJ t  }| }t|t js+J d S r&  )rG   rH   
duplicatedr3   r_   r5  r	   r	   r   test_duplicatedk  s   z(TestDataFrameSubclassing.test_duplicated
idx_methodidxmaxidxminc                 C   r%  r&  r'  )r   r?  rO   r#  r	   r	   r   test_idxu  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)   )rG   rH   r_   dotr3   )r   rO   r   r#  r	   r	   r   test_dot|  s   

z!TestDataFrameSubclassing.test_dotc                 C   sV   t g dg dg dd}| }t|t jsJ |jdd}t|t js)J d S )Nr=   rR   rU   r   FrD   )rG   rH   memory_usager3   r_   r5  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s7J d S )
N)rA   rB   rC   rq   r   )onetwothreefourr*   rS   r   r)   Tkendall)rt   dropmethod)rG   rH   rw   r  r  corrwithr3   r_   )r   rE   r0   ry   rz   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s8J ||d }t|tjsGJ |d}t|tjsTJ d S )	Nr.   z1/1/199053s)periodsfreqr   rD   rC  z
1989-12-31)	r   
date_rangerG   rH   rw   rx   asofr3   r_   )r   NrngrO   r#  r	   r	   r   	test_asof  s   	
z"TestDataFrameSubclassing.test_asofc                 C   :   t g dg dg dd}| }t|t jsJ d S r&  )rG   rH   rA  r3   r_   r5  r	   r	   r   test_idxmin_preserves_subclass     z7TestDataFrameSubclassing.test_idxmin_preserves_subclassc                 C   r[  r&  )rG   rH   r@  r3   r_   r5  r	   r	   r   test_idxmax_preserves_subclass  r]  z7TestDataFrameSubclassing.test_idxmax_preserves_subclassc                 C   sB   t dg di}tdg di}||sJ ||sJ d S )NrA   r=   )r   rG   rH   equals)r   ry   rz   r	   r	   r   test_equals_subclass  s   z-TestDataFrameSubclassing.test_equals_subclassN)&r   r   r   r<   rQ   re   rl   r   r   r   r   r   r   r   r   r   r   r   r  r$  ri   markfilterwarningsr*  r6  r<  r>  parametrizerB  rF  rH  tdskip_if_no_scipyrR  rZ  r\  r^  r`  r	   r	   r	   r   r      sB    7#
9>'2
6
!

	
r   )numpyrw   ri   pandas.util._test_decoratorsutil_test_decoratorsrd  pandasr   r   r   r   r   pandas._testing_testingrG   r   r	   r	   r	   r   <module>   s    