
    ^j                         d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ ej                  j!                  dg d	      d
        Zd Zy)    )PathN)approx)_image)compare_images)_image_directories)ImageComparisonFailurezim1, im2, tol, expect_rms))basn3p02.pngbasn3p02-minorchange.png
   N)r	   r
   r   gBs@)r	   zbasn3p02-1px-offset.pngr   g%̴V@)r	   zbasn3p02-half-1px-offset.pngr   g     O@)r	   zbasn3p02-scrambled.pngr   gD/Xe@)
all127.png
all128.pngr      )r   r   r   r   c                     |j                  |       t        t        t        d             \  }}|| z  }t	        j
                  ||z  |       t        || z  ||d      }	||	J y|	J |	d   t        |d      k(  sJ y)a  
    Compare two images, expecting a particular RMS error.

    im1 and im2 are filenames relative to the baseline_dir directory.

    tol is the tolerance to pass to compare_images.

    expect_rms is the expected RMS value, or None. If None, the test will
    succeed if compare_images succeeds. Otherwise, the test will succeed if
    compare_images fails and returns an RMS error almost equal to this value.
    c                       y)Ndummy r       o/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_compare_images.py<lambda>z2test_image_comparison_expect_rms.<locals>.<lambda>@   s    r   T)tolin_decoratorNrmsg-C6?)abs)chdirmapr   r   shutilcopyfiler   r   )
im1im2r   
expect_rmstmp_pathmonkeypatchbaseline_dir
result_dir
result_im2resultss
             r    test_image_comparison_expect_rmsr'      s    ` h"4);O)LML* c!J
OOL3&
3sJCdDG """u~
!====r   c            
      b   t        j                  dt         j                        } t        j                  t
        d      5  t        j                  | d d d d df   |        d d d        t        j                  t
        d      5  t        j                  | | d d d d d d t         j                  t         j                  f          d d d        t        j                  t
        d      5  t        j                  | d d d d d df   |        d d d        t        j                  t
        d	      5  t        j                  | | d d
d d d d f          d d d        t        j                  t
        d      5  t        j                  | | d d d dd d f          d d d        t        j                  t
        d      5  t        j                  | | d d d d d df          d d d        y # 1 sw Y   xY w# 1 sw Y   0xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)N)   r)      )dtypez+must be 3-dimensional, but is 2-dimensional)matchr   z+must be 3-dimensional, but is 5-dimensionalz#must be RGB or RGBA but has depth 2   z5expected size: \(16, 16, 4\) actual size \(8, 16, 4\)   z5expected size: \(16, 16, 4\) actual size \(16, 6, 4\)   z6expected size: \(16, 16, 4\) actual size \(16, 16, 3\)   )	npzerosuint8pytestraisesr   r   calculate_rms_and_diffnewaxis)imgs    r   test_invalid_inputr9   O   s   
((;bhh
/C	-J
L 9%%c!Q'lC89 
-J
L Q%%c3q!Q

BJJ/N+OPQ 
-B
D :%%c!Q(mS9: 
-U
W :%%c3rr1ax=9: 
-U
W :%%c3q"1"ax=9: 
-V
X :%%c3q!RaRx=9: :!9 9Q Q: :: :: :: :sI   !G'AG4)#H/#H5#H;#H%'G14G>H
HH"%H.)pathlibr   r   numpyr1   r4   r   
matplotlibr   matplotlib.testing.comparer   matplotlib.testing.decoratorsr   matplotlib.testing.exceptionsr   markparametrizer'   r9   r   r   r   <module>rB      sS          5 < @  B>C B>>:r   