a
    Gb--                  
   @   s  d dl Z d dlZd dlmZ d dlmZ e jddgddd Ze jdd	gdd
d Z	dd Z
dd Zdd Ze jdddgdd Ze jdedg diedg difeg dg ddedg difgdd Ze jdejddgd d!gd"d#gd$ejd%d&gd d!gd"d#gd$d'fejddgd(d)gd d!gd*d#d+gd$ejd%d&gd(d)gd d!gd*d#d+gd$d,fgd-d. Zd/d0 Ze jdddgd1d2 Ze jdddgd3d4 Zd5d6 Ze jdeg d7g d8d9eg d7g d:d9d;feg d7g d8d9eg d<g d=d9d>fgd?d@ ZdAdB ZdCdD Ze jdEdFdGgdHdI Ze jdJg dKdLdM ZdNdO ZdPdQ ZdRdS Ze jdTdUdVgdWdX ZdYdZ Z d[d\ Z!dS )]    N)	DataFrameTF)paramsc                 C   s   | j S NZparamZrequest r   Hlib/python3.9/site-packages/pandas/tests/util/test_assert_frame_equal.pyby_blocks_fixture   s    r	   r   ZSeriesc                 C   s   | j S r   r   r   r   r   r   obj_fixture   s    r
   c                 K   s,   t j| |fi | t j|| fi | dS )a4  
    Check that two DataFrame equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : DataFrame
        The first DataFrame to compare.
    b : DataFrame
        The second DataFrame to compare.
    kwargs : dict
        The arguments passed to `tm.assert_frame_equal`.
    N)tmassert_frame_equalabkwargsr   r   r   _assert_frame_equal_both   s    r   c                 K   sJ   d}t jt|d$ tj| |fi | W d   n1 s<0    Y  dS )a  
    Check that two DataFrame are not equal.

    Parameters
    ----------
    a : DataFrame
        The first DataFrame to compare.
    b : DataFrame
        The second DataFrame to compare.
    kwargs : dict
        The arguments passed to `tm.assert_frame_equal`.
    z;The two DataFrames were equal when they shouldn't have beenmatchNpytestraisesAssertionErrorr   r   )r   r   r   msgr   r   r   _assert_not_frame_equal%   s    r   c                 K   s(   t | |fi | t || fi | dS )a<  
    Check that two DataFrame are not equal.

    This check is performed commutatively.

    Parameters
    ----------
    a : DataFrame
        The first DataFrame to compare.
    b : DataFrame
        The second DataFrame to compare.
    kwargs : dict
        The arguments passed to `tm.assert_frame_equal`.
    N)r   r   r   r   r   _assert_not_frame_equal_both7   s    r   
check_likec                 C   s   t g dg ddg dd}t g dg ddg dd}| s| d	}tjt|d
" tj||| |d W d    q1 s0    Y  nt||| |d d S )N                  ABr   r   cindex)r   r   r   )r#   r"   r!   )r(   r   r   z.index are differentr   r   obj)r   r   r   r   r   r   r   )r   r
   df1df2r   r   r   r   #test_frame_equal_row_order_mismatchJ   s    
2r/   zdf1,df2r%   r   )r   r   r   r!   r    r$   c                 C   sL   | d}t jt|d  tj| ||d W d    n1 s>0    Y  d S )Nz are differentr   r,   r   )r-   r.   r
   r   r   r   r   test_frame_equal_shape_mismatchW   s    
r1   zdf1,df2,msgr   r   l1l2)r   r(   r   r)   g      ?g       @zDataFrame\.index are differentg @g      ?r'   r   z$MultiIndex level \[0\] are differentc                 C   sh   d|i}|rPt jt|d$ tj| |fi | W d    qd1 sD0    Y  ntj| |fi | d S )Ncheck_index_typer   r   )r-   r.   r   r4   r   r   r   r   %test_frame_equal_index_dtype_mismatche   s
    4r5   c                 C   s   ddg}t |d}t |d}d| i}|d d|d< | rd}tjt|d$ tj||fi | W d    q1 sv0    Y  ntj||fi | d S )NZcol1Zcol2)columnscheck_dtypeint64z)Attributes of DataFrame\..* are differentr   )r   astyper   r   r   r   r   )r7   r6   r-   r.   r   r   r   r   r   test_empty_dtypes   s    

4r:   c                 C   s   | d| d}t g dg ddg dd}t g dg ddg dd}tjt|d	" tj||| |d
 W d    n1 s0    Y  d S )Nz\.index are different

z\.index values are different \(33\.33333 %\)
\[left\]:  Index\(\['a', 'b', 'c'\], dtype='object'\)
\[right\]: Index\(\['a', 'b', 'd'\], dtype='object'\)r   r    r$   r'   r)   )r   r   dr   r+   r   r   r   r   r   r   r   r
   r   r-   r.   r   r   r   test_frame_equal_index_mismatch   s    r>   c                 C   s   | d| d}t g dg ddg dd}t g dg ddg dd}tjt|d	" tj||| |d
 W d    n1 s0    Y  d S )Nz\.columns are different

z\.columns values are different \(50\.0 %\)
\[left\]:  Index\(\['A', 'B'\], dtype='object'\)
\[right\]: Index\(\['A', 'b'\], dtype='object'\)r   r    r$   r'   r)   )r%   r   r   r+   r<   r=   r   r   r   !test_frame_equal_columns_mismatch   s    r?   c                 C   s   |}| d| d}t g dg dd}t g dg dd}tjt|d" tj||| |d W d    n1 sv0    Y  d S )	Nz2\.iloc\[:, 1\] \(column name="B"\) are different

z\.iloc\[:, 1\] \(column name="B"\) values are different \(33\.33333 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[4, 5, 6\]
\[right\]: \[4, 5, 7\]r   r    r$   )r!   r"      r   Z	by_blocksr,   r<   )r	   r
   r,   r   r-   r.   r   r   r   test_frame_equal_block_mismatch   s    rB   )   á   à   ä)   é   è   ë)r%   E)rF   rG   u   e̊u   {obj}\.iloc\[:, 1\] \(column name="E"\) are different

{obj}\.iloc\[:, 1\] \(column name="E"\) values are different \(33\.33333 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[é, è, ë\]
\[right\]: \[é, è, e̊\])r   r   r   )erJ   rJ   u   {obj}\.iloc\[:, 0\] \(column name="A"\) are different

{obj}\.iloc\[:, 0\] \(column name="A"\) values are different \(100\.0 %\)
\[index\]: \[0, 1, 2\]
\[left\]:  \[á, à, ä\]
\[right\]: \[a, a, a\]c                 C   sP   |j |d}tjt|d" tj| |||d W d    n1 sB0    Y  d S )Nr0   r   rA   )formatr   r   r   r   r   )r-   r.   r   r	   r
   r   r   r   test_frame_equal_unicode   s    rL   c                  C   st   t dg didd} | t}d}tj| |dd tjt|d  tj| |d	d W d    n1 sf0    Y  d S )
Nr   r   Int64dtypezAttributes of DataFrame\.iloc\[:, 0\] \(column name="a"\) are different

Attribute "dtype" are different
\[left\]:  Int64
\[right\]: int[32|64]Fr7   r   T)r   r9   intr   r   r   r   r   leftrightr   r   r   r   0test_assert_frame_equal_extension_dtype_mismatch   s    
rU   c                  C   sz   t dtddgidd} | t}d}tj| |dd tjt	|d	  tj| |d
d W d    n1 sl0    Y  d S )Nr   r   r   ZintervalrN   zAttributes of DataFrame\.iloc\[:, 0\] \(column name="a"\) are different

Attribute "dtype" are different
\[left\]:  interval\[int64, right\]
\[right\]: objectFrP   r   T)
r   pdZIntervalr9   objectr   r   r   r   r   rR   r   r   r   /test_assert_frame_equal_interval_dtype_mismatch   s    
rX   right_dtypeZInt32r8   c                 C   s<   t dg didd}t dg di| d}tj||dd d S )Nr   r   rM   rN   FrP   r   r   r   )rY   rS   rT   r   r   r   7test_assert_frame_equal_ignore_extension_dtype_mismatch  s    r[   rO   )ztimedelta64[ns]zdatetime64[ns, UTC]z	Period[D]c                 C   s0   t dg i| d}t dg i}tj||dd d S )Nr   rN   FrP   rZ   )rO   r-   r.   r   r   r   4test_assert_frame_equal_datetime_like_dtype_mismatch  s    	r\   c                  C   s   t  } t  jdd}t| |  t|| tj| |dd tj|| dd tjtdd t| | W d    n1 s|0    Y  tjtdd t| | W d    n1 s0    Y  d S )NF)allows_duplicate_labelsZcheck_flagsz<Flagsr   )r   Z	set_flagsr   r   r   r   r   rS   rT   r   r   r   test_allows_duplicate_labels!  s    *r`   c                  C   s0   t g dgg dg dd} tj| | dd d S )N)r   r   r   )ZfooZbar*   )r   testr   )r6   r*   Tr   rZ   )Zdfr   r   r   +test_assert_frame_equal_columns_mixed_dtype0  s    rd   c                 C   s$   | ddg|d}t j||dd d S )Nr   r   rN   T)check_exact)r   assert_equal)frame_or_seriesany_numeric_ea_dtyper,   r   r   r    test_frame_equal_extension_dtype6  s    ri   indexer)r   r   )r   r   c                 C   s   |df}| ddg||d  d}| ddg||d  d}d}t jt|d" tj||dd	d
 W d    n1 sr0    Y  d S )Nr8   r   r   r   rN   zI(Series|DataFrame.iloc\[:, 0\] \(column name="0"\) classes) are differentr   TF)re   r7   )r   r   r   r   rf   )rg   rh   rj   ZdtypesZobj1Zobj2r   r   r   r   test_frame_equal_mixed_dtypes<  s    rk   c                  C   sl   t tjg ddd} t tjddddd}tjtdd  tj| |d	d
 W d    n1 s^0    Y  d S )NrW   rN   r)   r   r   )startstopstepzDataFrame.index are differentr   Trc   )	r   rV   ZIndexZ
RangeIndexr   r   r   r   r   )r-   r.   r   r   r   4test_assert_frame_equal_check_like_different_indexesF  s    ro   c                  C   s   t ddgddgg} d| j_t ddgddgg}d|j_tj| |dd tjtdd	  tj| |dd W d    n1 s|0    Y  d S )
Nr   r   r   r!   FTr^   r]   r   )r   flagsr]   r   r   r   r   r   r_   r   r   r   0test_assert_frame_equal_checking_allow_dups_flagN  s    rq   )"r   ZpandasrV   r   Zpandas._testingZ_testingr   Zfixturer	   r
   r   r   r   ZmarkZparametrizer/   r1   Zfrom_recordsr5   r:   r>   r?   rB   rL   rU   rX   r[   r\   r`   rd   ri   rk   ro   rq   r   r   r   r   <module>   s   


$









	