a
    Pfl                     @   s   d dl Zd dlZd dlZd dlmZmZmZmZ d dl	m
Z ejdZe dd ZG dd dZG dd	 d	eZd
d ZG dd deZG dd deZG dd dZdS )    N)	DataFrameIndex
MultiIndexSerieszMignore:Passing a BlockManager|Passing a SingleBlockManager:DeprecationWarningc                      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   Y/var/www/ai-form-bot/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d#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zejd-d.d/gd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"d>d? Z#d@dA Z$dBdC Z%dDdE Z&dFS )GTestDataFrameSubclassingc                 C   sb   t jg dg ddg dd}t d $ |  |d   W d    n1 sT0    Y  d S )Nr   XYr   bcindexr   )tmr   assert_produces_warningZisna)r	   dfr   r   r   test_no_warning_on_mgr   s    z/TestDataFrameSubclassing.test_no_warning_on_mgrc                    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_function1   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   =   s    zaTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame._constructorc                 S   s   dS r'   r   r   r   r   r   custom_frame_functionC   s    zjTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.custom_frame_function)
r   r   r   __doc__r-   r   r   Z_constructor_slicedr3   __classcell__r   r2   r&   r0   r   r2   4   s   r2   
   )col1Zcol2r(   r      )Ar:   )r:   Br   r   r   columnsr:   )r:    )r;   r>   )	r   r   range
isinstancer8   r)   r3   r   from_tuples)r	   dataZcdfZ
cdf_seriesZcdf_rowsZmcolZ	cdf_multiZ
cdf_multi2r   r6   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   r   r   r   XXXr   r   r   r   r   )r!   r   ZtestattrlocilocZround_trip_pickleassert_frame_equal	_metadata)r	   r#   Z	unpickledr   r   r   test_dataframe_metadata_   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      r9            	   r   r   Zr   r   r   abcr    namer   r   rR   r   )r   rK   rN   ZXYZ)r   r9   rO   r   r   )r   rL   rP   )r!   r   rE   SubclassedSerieslistassert_series_equalr@   rF   r	   r#   resexpr   r   r   test_indexing_sliceds   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   nonexistence   s    zSTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.A.nonexistenceN)r   r   r   r   r]   r   r   r   r   r:      s   r:   z.*i_dont_exist.*)match)r   pytestZraisesAttributeErrorr]   )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   r9   r   r   ACEr   r   r   rK   )r   dABDr   axisr   r   r9   ABCDEr   rK   )r!   r   rW   alignnpnanr@   rG   r   r   rV   rX   )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 )Nrb   rc   rd   r   re   rg   xrT   r   rh   r   r   r9   rj   r   rK   )
r!   r   rW   rV   rk   rl   rm   r@   rG   rX   )r	   r#   srp   rq   rr   rs   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iterrowsr@   rV   rX   rE   )r	   r#   irowr   r   r   test_subclass_iterrows   s    z/TestDataFrameSubclassing.test_subclass_iterrowsc                 C   sd   t jg dg dg dgg dg dd}|jdd}t jg d	td
tdgd}t || d S )Nr   rJ   rM   r   rQ   r    r=   TZfuture_stack)	r   r   r   rK   r9   rL   rN   rO   rP   Z	aaabbbcccZ	XYZXYZXYZr   )r!   r   stackrV   rW   rX   rY   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}|jd&d'}t || |jdd&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}|jdd&d'}t || d S ),Nr7                                  !   (   )   *   +   AABBcdcdaaacccnamesWWXXyzyzwwwyyyr{   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   AAAABBBBccddccddyzyzyzyzr   r   r   Wr   rU   Tr|   WXWXWXWXr   r   r   yz	r!   r   r   rA   rW   zipr   r}   rG   r	   r#   r[   rZ   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}|jd&d'}t || |jdd&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d0g d1d	td2d3gdd%d}|jdd&d'}t || d S )4Nr7   r         (@      *@r   r         6@      7@r   r         @@     @@r   r         E@     E@r   r   r   r   r   r   r   r   r   r{   r7   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Tr|   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   rJ   rM   r   rQ   r{   )	r   rK   rN   r   r9   rO   r   rL   rP   Z	XXXYYYZZZZ	abcabcabcr   )r!   r   unstackrV   rW   rX   rY   r   r   r   test_subclass_unstackf  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 )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r{   )r7   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r:   r;   r   WWWWXXXXyyzzyyzzcdcdcdcdr   r   r   )r7   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   rf   ABABABABr   r   r   	r!   r   r   rA   rW   r   r   r   rG   r   r   r   r   test_subclass_unstack_multiu  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   r{   )r7   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r:   r;   r   r   r   r   r   )r7   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   rf   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   r{   )r!   r   Zpivotr    rU   r=   rG   )r	   r#   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meltrG   )r	   ZcheeseZmeltedr   r   r   r   test_subclassed_melt  s"    	
z-TestDataFrameSubclassing.test_subclassed_meltc              
   C   s   t jd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 )Nr   r   r   r   r   r   r   r   rf   ef      @333333?ffffff?皙	@?皙?)ZA1970ZA1980ZB1970ZB1980r   id)r   r   r   rf   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;   )rx   j)rl   randomdefault_rngstandard_normalr!   r   dictr   r?   r    tolistZ	set_indexr   Zwide_to_longrG   )r	   ru   r#   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   )r@   r!   rV   ry   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   ru   r   r   r   <lambda>/      z@TestDataFrameSubclassing.test_subclassed_apply.<locals>.<lambda>c                    s    | S r   r   r   r   r   r   r   0  r   r   rh   )r   r   r   r   )r   r   r   g      @c                    s    | S r   r   r   )r   r   r   r   <  r   r   c                 S   s   t g dS Nr   )r!   rV   r   r   r   r   r   B  r   c                 S   s   g dS r   r   r   r   r   r   r   F  r   expand)ri   Zresult_typec                 S   s   g dS r   r   r   r   r   r   r   L  r   )r!   r   applyr@   rG   rV   rX   )r	   r#   r   resultr   )r   r   r   test_subclassed_apply  sD    

""z.TestDataFrameSubclassing.test_subclassed_applyc                 C   s>   t g dg dg dd}t|| }t|t js:J d S Nr   rJ   rM   r   r!   r   getattrr@   rV   )r	   Zall_reductionsr#   r   r   r   r   test_subclassed_reductionsP  s    z3TestDataFrameSubclassing.test_subclassed_reductionsc              	   C   s  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sJ t  }| }t|t jsJ d S )N)r   MylaZLewisr   r  g      8@r   r      )FTTTF)ZPersonZAgeSingle)r   r   r   )r   r9   rL   )rN   rO   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   )r!   r   rl   rm   countr@   rV   r   rA   rW   r   r	   r#   r   r   r   r   test_subclassed_countW  s2    	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   rK   r   )Znum_legsZ	num_wingsZfalcondogr   )r!   r   isinr@   r
  r   r   r   	test_isinv  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
duplicatedr@   rV   r
  r   r   r   test_duplicated}  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  r#   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   rV   dotr@   )r	   r#   rv   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   rJ   rM   r   Fr   )r!   r   Zmemory_usager@   rV   r
  r   r   r   test_memory_usage  s
    z*TestDataFrameSubclassing.test_memory_usagec                 C   s   t d 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
sJ d S )NZscipy)r   r   r   rf   r   )onetwothreefourr   )r9   rK   r{   )rK   rK   rK   r   TZkendall)ri   Zdropmethod)r_   Zimportorskipr!   r   rl   r   r   r   Zcorrwithr@   rV   )r	   r    r=   rn   ro   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   rl   rm   Zasofr@   rV   )r	   Nrngr#   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  r@   rV   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  r@   rV   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_dtypesr@   type)r	   r   r#   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astyperl   Zint64Zint32Zfloat64r@   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	   rn   ro   r   r   r   test_equals_subclass  s    z-TestDataFrameSubclassing.test_equals_subclassc                 C   s   t dg di}d}t jt|dd" |jddgdd	}W d    n1 sN0    Y  t dg d
i}t|t jszJ t || d S )Nr:   r   zAThe 'method' keyword in SubclassedDataFrame.replace is deprecatedF)r^   Zraise_on_extra_warningsr   r   Zffill)r  )r   r   r   )r!   r   r"   FutureWarningreplacer@   rG   )r	   r#   msgr   r   r   r   r   test_replace_list_method  s    0z1TestDataFrameSubclassing.test_replace_list_methodN)'r   r   r   r$   rC   rI   r\   ra   rt   rw   rz   r~   r   r   r   r   r   r   r   r   r  r  r  r  r  r_   markZparametrizer  r  r  r  r"  r#  r$  r&  r'  r*  r.  r   r   r   r   r      sD   7#
9>'26	
	r   c                       s4   e Zd ZdgZdd fddZedd Z  ZS )MySubclassWithMetadatamy_metadataNr*   c                    sD   t  j|i | |dd }|r:t|d tr:|d j}|| _d S )Nr1  r   )r,   r-   popr@   r0  r1  )r	   r.   kwargsr1  r0   r   r   r-     s
    
zMySubclassWithMetadata.__init__c                 C   s   t S r   )r0  r   r   r   r   r     s    z#MySubclassWithMetadata._constructor)r   r   r   rH   r-   r   r   r5   r   r   r0   r   r0    s   r0  c                  C   s<   t tjddg dd} | ddg }t|t s8J d S )Nr   )r9   r   r   r<   r:   r;   )r0  rl   r   r   r@   )r#   Zsubsetr   r   r   test_constructor_with_metadata	  s
    r4  c                   @   s   e Zd ZdZdS )SimpleDataFrameSubClassz;A subclass of DataFrame that does not define a constructor.Nr   r   r   r4   r   r   r   r   r5    s   r5  c                   @   s   e Zd ZdZdS )SimpleSeriesSubClassz8A subclass of Series that does not define a constructor.Nr6  r   r   r   r   r7    s   r7  c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
TestSubclassWithoutConstructorc                 C   s<   t dg di}t| }t|t u s,J t|| d S r(  )r   r5  copyr%  r!   rG   r	   r   r   r   r   r   test_copy_df  s
    
z+TestSubclassWithoutConstructor.test_copy_dfc                 C   s(   t g d}t| }t|| d S r   )r   r7  r9  r!   rX   r:  r   r   r   test_copy_series%  s    z/TestSubclassWithoutConstructor.test_copy_seriesc                 C   s@   t g d}| }t| }t|tu s0J t|| d S r   )r   Zto_framer7  r%  r   r!   rG   )r	   origr   r   r   r   r   test_series_to_frame+  s    
z3TestSubclassWithoutConstructor.test_series_to_framec                 C   s<   t tdg di}|dD ]\}}t|tu sJ qd S r(  )r5  r   groupbyr%  )r	   r#   _vr   r   r   test_groupby5  s    z+TestSubclassWithoutConstructor.test_groupbyN)r   r   r   r;  r<  r>  rB  r   r   r   r   r8    s   	
r8  )numpyrl   r_   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr!   r/  filterwarningsZ
pytestmarkZfixturer   r   r0  r4  r5  r7  r8  r   r   r   r   <module>   s(   
	     b
