o
    ҷh3                  
   @   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
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+d, Ze jdddgd-d. Ze jdddgd/d0 Zd1d2 Ze jdeg d3g d4d5eg d3g d6d5d7feg d3g d4d5eg d8g d9d5d:fgd;d< Zd=d> Zd?d@ Ze jdAdBdCgdDdE Ze jdFg dGdHdI ZdJdK ZdLdM ZdNdO Ze jdPdQdRgdSdT ZdUdV ZdWdX ZdYdZ Z d[d\ Z!d]d^ Z"d_d` Z#dadb Z$dcdd Z%dS )e    N)	DataFrameTF)paramsc                 C      | j S Nparamrequest r
   \/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/util/test_assert_frame_equal.pyby_blocks_fixture      r   r   Seriesc                 C   r   r   r   r   r
   r
   r   obj_fixture   r   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   
check_likec                 C   s   t g dg ddg dd}t g dg ddg dd}| sH| d	}tjt|d
 tj||| |d W d    d S 1 sAw   Y  d S t||| |d d S )N                  ABr   r   cindex)r   r   r   )r   r   r   r#   r   r   z.index are differentmatchr   obj)r   pytestraisesAssertionErrorr   r   r   )r   r   df1df2msgr
   r
   r   #test_frame_equal_row_order_mismatch%   s   
"r1   zdf1,df2r    r   )r   r   r   r   r   r   c                 C   sN   | d}t jt|d tj| ||d W d    d S 1 s w   Y  d S )Nz are differentr'   r*   r+   r,   r-   r   r   )r.   r/   r   r0   r
   r
   r   test_frame_equal_shape_mismatch2   s   
"r4   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   sl   d|i}|r*t jt|d tj| |fi | W d    d S 1 s#w   Y  d S tj| |fi | d S )Ncheck_index_typer'   r3   )r.   r/   r0   r7   r   r
   r
   r   %test_frame_equal_index_dtype_mismatch@   s   "r8   c                 C   s   ddg}t |d}t |d}d| i}|d d|d< | rCd}tjt|d tj||fi | W d    d S 1 s<w   Y  d S tj||fi | d S )Ncol1col2)columnscheck_dtypeint64z)Attributes of DataFrame\..* are differentr'   )r   astyper+   r,   r-   r   r   )r<   r;   r.   r/   r   r0   r
   r
   r   test_empty_dtypes_   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    d S 1 sBw   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'\)
At positional index 2, first diff: c != dr   r   r   r"   r$   )r   r   dr'   r)   r   r+   r,   r-   r   r   r   r   r0   r.   r/   r
   r
   r   test_frame_equal_index_mismatcho   s   "rC   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    d S 1 sBw   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)   rA   rB   r
   r
   r   !test_frame_equal_columns_mismatch   s   "rD   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    d S 1 s<w   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'   	by_blocksr*   rA   )r   r   r*   r0   r.   r/   r
   r
   r   test_frame_equal_block_mismatch   s   "rH   )   á   à   ä)   é   è   ë)r    E)rL   rM   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   )erP   rP   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   sR   |j |d}tjt|d tj| |||d W d    d S 1 s"w   Y  d S )Nr2   r'   rF   )formatr+   r,   r-   r   r   )r.   r/   r0   r   r   r
   r
   r   test_frame_equal_unicode   s   "rR   c                  C   sv   t dg didd} | t}d}tj| |dd tjt|d tj| |d	d W d    d S 1 s4w   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r<   r'   T)r   r>   intr   r   r+   r,   r-   leftrightr0   r
   r
   r   0test_assert_frame_equal_extension_dtype_mismatch   s   
"r[   c                  C   s|   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    d S 1 s7w   Y  d S )Nr   r   r   intervalrT   zAttributes of DataFrame\.iloc\[:, 0\] \(column name="a"\) are different

Attribute "dtype" are different
\[left\]:  interval\[int64, right\]
\[right\]: objectFrV   r'   T)
r   pdIntervalr>   objectr   r   r+   r,   r-   rX   r
   r
   r   /test_assert_frame_equal_interval_dtype_mismatch   s   
"r`   right_dtypeInt32r=   c                 C   s<   t dg didd}t dg di| d}tj||dd d S )Nr   r   rS   rT   FrV   r   r   r   )ra   rY   rZ   r
   r
   r   7test_assert_frame_equal_ignore_extension_dtype_mismatch   s   rd   rU   )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   rT   FrV   rc   )rU   r.   r/   r
   r
   r   4test_assert_frame_equal_datetime_like_dtype_mismatch   s   	re   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>w   Y  tjtdd t| | W d    d S 1 s\w   Y  d S )NF)allows_duplicate_labelscheck_flagsz<Flagsr'   )r   	set_flagsr   r   r+   r,   r-   rY   rZ   r
   r
   r   test_allows_duplicate_labels   s   "rk   c                  C   s0   t g dgg dg dd} tj| | dd d S )N)r   r   r   )foobar*   )r   testr   )r;   r%   Tr   rc   )dfr
   r
   r   +test_assert_frame_equal_columns_mixed_dtype  s   rr   c                 C   s$   | ddg|d}t j||dd d S )Nr   r   rT   Tcheck_exact)r   assert_equal)frame_or_seriesany_numeric_ea_dtyper*   r
   r
   r    test_frame_equal_extension_dtype  s   rx   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    d S 1 s:w   Y  d S )Nr=   r   r   r   rT   zI(Series|DataFrame.iloc\[:, 0\] \(column name="0"\) classes) are differentr'   TF)rt   r<   )r+   r,   r-   r   ru   )rv   rw   ry   dtypesobj1obj2r0   r
   r
   r   test_frame_equal_mixed_dtypes  s   "r}   c                  C   sn   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    d S 1 s0w   Y  d S )Nr_   rT   r$   r   r   )startstopstepzDataFrame.index are differentr'   Trp   )	r   r]   Index
RangeIndexr+   r,   r-   r   r   r.   r/   r
   r
   r   4test_assert_frame_equal_check_like_different_indexes"  s
   "r   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    d S 1 s?w   Y  d S )
Nr   r   r   r   FTrg   rf   r'   )r   flagsrf   r   r   r+   r,   r-   rj   r
   r
   r   0test_assert_frame_equal_checking_allow_dups_flag*  s   "r   c               	   C   s   t dgdgdggtjtg dtg dgd} t dgdgdggtjtg dtg dgd}tj| |dd d S )	Nr   r   r   r"   r$   r&   Trp   )r   r]   
MultiIndexfrom_arraysCategoricalr   r   rj   r
   r
   r   3test_assert_frame_equal_check_like_categorical_midx7  s"   		r   c                  C   sz   t dtjtjdgddi} t dtjddgddi}d}tjt|d t| | W d    d S 1 s6w   Y  d S )Nr   r   rS   rT   zGDataFrame.iloc\[:, 0\] \(column name="a"\) NA mask values are differentr'   	r   r]   r   NAr+   r,   r-   r   r   r.   r/   r0   r
   r
   r   >test_assert_frame_equal_ea_column_definition_in_exception_maskN  s   "r   c                  C   s   t dtjtjdgddi} t dtjtjdgddi}d}tjt|d t| | W d    n1 s6w   Y  tjt|d tj| |dd	 W d    d S 1 sVw   Y  d S )
Nr   r   rS   rT   r   ?DataFrame.iloc\[:, 0\] \(column name="a"\) values are differentr'   Trs   r   r   r
   r
   r   9test_assert_frame_equal_ea_column_definition_in_exceptionX  s   "r   c                  C   s|   t dtdtdgi} t dtdtdgi}d}tjt|d t| | W d    d S 1 s7w   Y  d S )Nr   z
2019-12-31z
2020-12-31r   r'   )r   r]   	Timestampr+   r,   r-   r   r   r   r
   r
   r   !test_assert_frame_equal_ts_columne  s   "r   c                  C   s@   t dh dh dgi} t dh dh dgi}t| | d S )N
set_column   r   r   r      r   r   r   rc   r   r
   r
   r   test_assert_frame_equal_seto  s   r   c                  C   st   t dh dh dgi} t dh dh dgi}d}tjt|d t| | W d    d S 1 s3w   Y  d S )Nr   r   r   >   r   r   rE   zHDataFrame.iloc\[:, 0\] \(column name="set_column"\) values are differentr'   rA   r   r
   r
   r   $test_assert_frame_equal_set_mismatchv  s   "r   )&r+   pandasr]   r   pandas._testing_testingr   fixturer   r   r   markparametrizer1   r4   from_recordsr8   r?   rC   rD   rH   rR   r[   r`   rd   re   rk   rr   rx   r}   r   r   r   r   r   r   r   r   r
   r
   r
   r   <module>   s    


$









	

