o
    hl                     @   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 N selfSubclassedDataFramer   t/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/pandas/tests/frame/test_subclass.py_constructor      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   sd   t jg dg ddg dd}t d  |  |d   W d    d S 1 s+w   Y  d S )Nr   XYr   bcindexr   )tmr   assert_produces_warning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| 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                    r   r   r   r	   CustomSeriesr   r   r   -   r   z^TestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomSeries._constructorc                 S      dS NOKr   r	   r   r   r   custom_series_function1      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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.
            returnNc                    s   t  j|i | d S r   )super__init__)r
   argskw	__class__r   r   r1   :   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_functionC   r.   zjTestDataFrameSubclassing.test_frame_subclassing_and_slicing.<locals>.CustomDataFrame.custom_frame_functionr/   N)
r   r   r   __doc__r1   r   r   _constructor_slicedr7   __classcell__r   r6   r)   r4   r   r6   4   s    r6   
   )col1col2r,   r      )ArA   )rA   Br   r   r   columnsrA   )rA    )rB   rE   )	r   r   range
isinstancer>   r-   r7   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 )Nr   r   r   r!   XXXr   r   r   r   r   )r#   r   testattrlocilocround_trip_pickleassert_frame_equal	_metadata)r
   r&   	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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   r!   r   abcr"   namer   r   rb   r   )r   r[   r^   XYZ)r   r@   r_   r   r    )r   r\   r`   )r#   r   rS   SubclassedSerieslistassert_series_equalrG   rT   r
   r&   resexpr   r   r   test_indexing_sliceds   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   nonexistence   s   zSTestDataFrameSubclassing.test_subclass_attr_err_propagation.<locals>.A.nonexistenceN)r   r   r   r   ro   r   r   r   r   rA      s    rA   z.*i_dont_exist.*)match)r   pytestraisesAttributeErrorro   )r
   rA   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@   r   r   ACEr!   r   r   r[   )r    dABDr   axisr   r   r@   ABCDEr   r[   )r#   r   rh   alignnpnanrG   rV   r   r    rg   ri   )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 )Nru   rv   rw   r!   rx   rz   xrd   r   r{   r   r   r@   r}   r   r[   )
r#   r   rh   rg   r~   r   r   rG   rV   ri   )r
   r&   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 )Nr   r   )r#   r   iterrowsrG   rg   ri   rS   )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   rZ   r]   r   ra   r"   rD   Tfuture_stack)	r   r   r   r[   r@   r\   r^   r_   r`   	aaabbbccc	XYZXYZXYZr!   )r#   r   stackrg   rh   ri   rj   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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   re   Tr   WXWXWXWXr   r   r   yz	r#   r   r   rH   rh   zipr   r   rV   r
   r&   rl   rk   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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   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   rZ   r]   r   ra   r   )	r   r[   r^   r   r@   r_   r   r\   r`   	XXXYYYZZZ	abcabcabcr!   )r#   r   unstackrg   rh   ri   rj   r   r   r   test_subclass_unstackf  s   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   rA   rB   r   WWWWXXXXyyzzyyzzcdcdcdcdr   r   r   )r=   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r    ry   ABABABABr   r   r   	r#   r   r   rH   rh   r   r   r   rV   r   r   r   r   test_subclass_unstack_multiu  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   rA   rB   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   !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)rA   rB   Cr   rB   rA   )Oner   r   Twor   r   )      ?       @      @r   r   r   )r"   rD   valuesr"   rD   r   r   r   r   rA   rB   r   )r   r   r   )r#   r   pivotr"   re   rD   rV   )r
   r&   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valuerC   )r#   r   pdmeltrV   )r
   cheese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   ry   ef      @333333?ffffff?皙	@?皙?)A1970A1980B1970B1980r   id)r   r   r    ry   r  r  )r  r  r  r  r	  r
  )  r  r    r  r  )r   r   r   r   r   r   )r   rA   rB   yearr  r  )r   rA   rB   rA   rB   )r   j)r   randomdefault_rngstandard_normalr#   r   dictr   rF   r"   tolist	set_indexr   wide_to_longrV   )r
   r   r&   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   )rG   r#   rg   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   rC   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$  0  r%  r   r{   )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   )r#   rg   r"  r   r   r   r$  B  s    c                 S      g dS r&  r   r"  r   r   r   r$  F  r%  expand)r|   result_typec                 S   r'  r&  r   r"  r   r   r   r$  L  r%  )r#   r   applyrG   rV   rg   ri   )r
   r&   r   resultr   )r  r   r   test_subclassed_apply  sD   

""z.TestDataFrameSubclassing.test_subclassed_applyc                 C   >   t g dg dg dd}t|| }t|t jsJ d S Nr   rZ   r]   r   r#   r   getattrrG   rg   )r
   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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szJ t  }| }t|t jsJ d S )N)r   MylaLewisr   r3  g      8@r   r      )FTTTF)PersonAgeSingle)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   countrG   rg   r   rH   rh   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   r[   r   )num_legs	num_wingsfalcondogr!   )r#   r   isinrG   r:  r   r   r   	test_isinv  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.  )r#   r   
duplicatedrG   rg   r:  r   r   r   test_duplicated}  s   z(TestDataFrameSubclassing.test_duplicated
idx_methodidxmaxidxminc                 C   r-  r.  r/  )r
   rD  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   rg   dotrG   )r
   r&   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   rZ   r]   r   Fr!   )r#   r   memory_usagerG   rg   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
s@J d S )Nscipy)r   r   r    ry   r  )onetwothreefourr   )r@   r[   r   )r[   r[   r[   r   Tkendall)r|   dropmethod)rq   importorskipr#   r   r   r  r  r  corrwithrG   rg   )r
   r"   rD   r   r   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   r!   rH  z
1989-12-31)	r   
date_ranger#   r   r   r   asofrG   rg   )r
   Nrngr&   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.  )r#   r   rF  rG   rg   r:  r   r   r   test_idxmin_preserves_subclass     z7TestDataFrameSubclassing.test_idxmin_preserves_subclassc                 C   rb  r.  )r#   r   rE  rG   rg   r:  r   r   r   test_idxmax_preserves_subclass  rd  z7TestDataFrameSubclassing.test_idxmax_preserves_subclassc                 C   sT   t g dg dg dd}| }t|t jsJ | }t|t|s(J d S r.  )r#   r   convert_dtypesrG   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s#J d S r.  )r#   r   astyper   int64int32float64rG   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}||sJ ||sJ d S Nr   r   )r   r#   r   equals)r
   r   r   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 s'w   Y  t dg d
i}t|t js=J t || d S )NrA   r  zAThe 'method' keyword in SubclassedDataFrame.replace is deprecatedF)rp   raise_on_extra_warningsr   r   ffill)rU  )r   r   r   )r#   r   r$   FutureWarningreplacerG   rV   )r
   r&   msgr+  r   r   r   r   test_replace_list_method  s   z1TestDataFrameSubclassing.test_replace_list_methodN)'r   r   r   r'   rP   rY   rm   rt   r   r   r   r   r   r   r   r   r   r   r  r  r,  r2  r;  rA  rC  rq   markparametrizerG  rK  rM  rY  ra  rc  re  rh  rm  rp  rv  r   r   r   r   r      sF    7#
9>'26	
	r   c                       s0   e Zd ZdgZd fddZedd Z  ZS )	MySubclassWithMetadatamy_metadatar/   Nc                    sD   t  j|i | |dd }|rt|d tr|d j}|| _d S )Nrz  r   )r0   r1   poprG   ry  rz  )r
   r2   kwargsrz  r4   r   r   r1     s
   

zMySubclassWithMetadata.__init__c                 C   s   t S r   )ry  r	   r   r   r   r     r   z#MySubclassWithMetadata._constructorr8   )r   r   r   rW   r1   r   r   r;   r   r   r4   r   ry    s
    ry  c                  C   s<   t tjddg dd} | ddg }t|t sJ d S )Nr   )r@   r   r   rC   rA   rB   )ry  r   r  r  rG   )r&   subsetr   r   r   test_constructor_with_metadata	  s
   r~  c                   @      e Zd ZdZdS )SimpleDataFrameSubClassz;A subclass of DataFrame that does not define a constructor.Nr   r   r   r9   r   r   r   r   r        r  c                   @   r  )SimpleSeriesSubClassz8A subclass of Series that does not define a constructor.Nr  r   r   r   r   r    r  r  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 rn  )r   r  copyrg  r#   rV   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   r  r  r#   ri   r  r   r   r   test_copy_series%  s   z/TestSubclassWithoutConstructor.test_copy_seriesc                 C   s@   t g d}| }t| }t|tu sJ t|| d S r&  )r   to_framer  rg  r   r#   rV   )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 rn  )r  r   groupbyrg  )r
   r&   _vr   r   r   test_groupby5  s   z+TestSubclassWithoutConstructor.test_groupbyN)r   r   r   r  r  r  r  r   r   r   r   r    s
    	
r  )numpyr   rq   pandasr   r   r   r   r   pandas._testing_testingr#   rw  filterwarnings
pytestmarkfixturer   r   ry  r~  r  r  r  r   r   r   r   <module>   s*    
	     b
