
    gAT                        d dl Z d dlZd dlZd dlZd dlmZmZ d dlZd dl	m
Z
mZmZ d dlmZ d dlmZmZ d dlmZ  edgd      d	        Z ed
gd ej,                         dk(  rdnd       d        Z edgd      d        Zd Zd Zd Zej8                  j;                  dd ej<                  dz  ej<                  dz  ej<                  dz  g      ej8                  j;                  dd dg      d               Zd Z  edgdd      d        Z! e
       d        Z" e
       d         Z# ed!gd      d"        Z$ ed#gd      d$        Z%d% Z&d& Z' ed'gd      d(        Z( ed)gd      d*        Z) ed+g      d,        Z*d- Z+d. Z,y)/    N)assert_array_almost_equalassert_array_equal)check_figures_equalimage_comparisonremove_ticks_and_titles)patches
transforms)PathclippingT)remove_textc                      t        j                  ddd      } t        j                  dt         j                  z  | z        }t	        j
                         \  }}|j                  | |d       |j                  d       y )N               @{Gz?         ?)	linewidth)gɿgQѿ)nparangesinpipltsubplotsplotset_ylim)tsfigaxs       a/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_simplification.pytest_clippingr!      s[    
		#sD!A
qwqyAllnGCGGAqCG KK    overflowarm64gy&1|?)r   tolc                      t        j                  g d      } t        j                  t        |             }t	        j
                         \  }}|j                  | |       |j                  dd       y )N)r   r         @g     jAr      )r   arrayr   lenr   r   r   set_xlimxyr   r   s       r    test_overflowr/      sO     	'(A
		#a&AllnGCGGAqMKK1r"   clipping_diamondc                      t        j                  g d      } t        j                  g d      }t        j                         \  }}|j	                  | |       |j                  dd       |j                  dd       y )N)r   r   r         r   )r   r   r2   r   r   g333333g333333?)r   r)   r   r   r   r+   r   r,   s       r    test_diamondr3   *   sX    
+,A
+,AllnGCGGAqMKKcKKcr"   c                     t        g d      } | j                  d      }t        |j                  dg       |j                  t         j
                  gk(  sJ t        g dt         j                  t         j                  t         j                  g      } | j                  d      }t        |j                  dg       |j                  t         j
                  gk(  sJ t        g dt         j                  t         j                  t         j                  g      } | j                         }| j                  d      }t        |j                  |j                         t        |j                  |j                         y )N)r   r      r   r   r7   )
   r9      r:   clipr5   )r5   r6   )r      )	r
   cleanedr   verticescodesSTOPMOVETOLINETOCURVE3)path
simplifiedsimplified_clippeds      r    test_clipping_out_of_boundsrH   5   s   ()D#34Jz**VH5		{*** (dkk4;;79D#34Jz**VH5		{*** (dkk4;;79DJ+;<z**,>,G,GHz'');)A)ABr"   c                     t         j                  j                  d       t         j                  j                  d      dz  } t	        j
                         \  }}|j                  | dd      }|j                  j                          |d   j                         }|d   j                         }|j                  |      }|j                  d	      }|j                  j                  d
k(  sJ y )Nr   P  size2   roundr   solid_joinstyler   Tsimplifyic  )r   randomseeduniformr   r   r   canvasdrawget_pathget_transformtransform_pathr>   r?   rL   r-   r   r   p1rE   	transformrF   s          r    
test_noiser^   L   s    IINN1
		u%*AllnGC	Gs	;B JJOOa5>>D1##%I##D)Dt,J##u,,,r"   c                  b   d } g d}g d} | ||      }t        ddgddgddgddgg|j                  d d	d d f          g d}g d
} | ||      }t        ddgddgddgddgg|j                  d d	d d f          g d}g d} | ||      }t        ddgddgddgddgddgg|j                  d d	d d f          g d}g d} | ||      }t        ddgddgddgg|j                  d d	d d f          g d}g d} | ||      }t        ddgddgddgddgg|j                  d d	d d f          y )Nc                 (   t        j                         \  }}|j                  | |      }|d   j                         }|d   j	                         }|j                  |      }|j                  d      }|j                         j                  |      }|S )Nr   TrQ   )r   r   r   rX   rY   rZ   r>   inverted)r-   r.   r   r   r\   rE   r]   rF   s           r    _get_simplifiedz9test_antiparallel_simplification.<locals>._get_simplified^   s    ,,.RWWQ]!u~~qE'')	''-\\4\0
'')88D
r"   )r   r   r   r   r   r7   )      ?r7   r7   r   rc   r   rc   r2   r   r   )rc   r7   rd   r7   re   rc   g       )rc   r7   rd   r7   r   rc   )rc   r7   r   r7   r=   rc   r'   )rc   r7   r   r7   r7   rc   )r   r?   )rb   r-   r.   rF   s       r     test_antiparallel_simplificationrf   ]   s   
 	AA A&JCy "Cy "Bx "Cy* )11#2#q&9	; 	AA A&JCy "Bx "Cy "Cy* )11#2#q&9	; 	AA A&JCy "Bx "Cy "Bx "Cy	*
 )11#2#q&9; 	AA A&JCy "Bx "Cy* )11#2#q&9; 	AA A&JCy "Bx "Bx "Cy* )11#2#q&9	;r"   angle   r=   r   offsetrc   c                 *   d}t         j                  j                  d       t         j                  j                  d      |z
  |z  }d|d<   d|d<   t        j                  |       |z  }t        j
                  |       |z  }|dd  j                         }|dd  j                         }|dd  j                         }|dd  j                         }	|dkD  r%t        ddg||g||	g|d   |d   gddggg d      }
n!t        ddg||g|d   |d   gddggg d	      }
t        t        j                  ||g      j                        }|j                  d
      }t        |
j                  |j                         t        |
j                  |j                         y )N   i!N,   r   r7   rd   )r7   r   r   r   r   )r@   )r7   r   r   r   TrQ   )r   rS   rT   randr   cosmaxminr
   vstackTr>   r   r?   r   r@   )rg   ri   scalevert_offsetsr-   r.   x_maxx_miny_maxy_min
p_expectedpp2s                r    test_angled_antiparallelr|      s    EIINN8 IINN2&/58LLOLO
u$A
u$A abEIIKEabEIIKEabEIIKEabEIIKEzAq6!5>!5>bE1R5>q6	#
 !01
 Aq6!5>bE1R5>q6# !-	.
 	RYY1v  !A	
D	!Bj11 kk+z''2r"   c                  R   t         j                  j                  d       t        j                  t        j                  dt         j
                  dz  d            t         j                  j                  d      dz  z   } t        j                         \  }}|j                  | dd      }|j                  j                          |d   j                         }|d   j                         }|j                  |      }|j                  d	      }|j                   j"                  d
k(  sJ y )Nr   r   rJ   rK   r   rN   rO   TrQ   ib  )r   rS   rT   r   linspacer   rU   r   r   r   rV   rW   rX   rY   rZ   r>   r?   rL   r[   s          r    test_sine_plus_noiser      s    IINN1	Aruus{E2	3					&	-
.A llnGC	Gs	;B JJOOa5>>D1##%I##D)Dt,J##u,,,r"   simplify_curveg rh?c                     t        j                  t        dddt        j                  dfddddgt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      d      } t        j                         \  }}|j                  |        |j                  d	       |j                  d	       y )
Nr5   r7   r   r7   r7   r7   )r   r   r   r   none)fc)r   r   )r   	PathPatchr
   r   nanrB   rD   	CLOSEPOLYr   r   	add_patchr+   r   )pp1r   r   s      r    test_simplify_curver      s    


fffrvvqk666kk4;;T[[$++kk4;;8	9 C llnGCLLKKKKr"   c                    | j                  dd      j                         }|j                  dd      j                         }t        dt        j                  gddgddgddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        dt        j                  gddgddgddgdt        j                  ggt        j
                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddggt        j
                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddggt        j
                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        dt        j                  gddgddgddgddgddgddgddgdt        j                  gddgg
t        j
                  t        j                  t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  g
      }|d   j                  t        j                  |d             t        dt        j                  gddgddgddgdt        j                  gddgddgddgdt        j                  gddgg
t        j
                  t        j                  t        j                  t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  t        j                  g
      }|d   j                  t        j                  |d             t        d	d	gdd	gdt        j                  gddgd	dgd	d	ggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        d	d	gdd	gdt        j                  gddgd	dgd	d	ggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        d	d	gdd	gdt        j                  gddgddgd	dgd	d	ggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        d	d	gdd	gdt        j                  gddgddgd	dgd	d	ggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddgddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgdt        j                  gddgddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgddgdt        j                  gddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             t        ddgddgddgddgdt        j                  gddgddggt        j
                  t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g      }|d   j                  t        j                  |d             g |j                  |j                  D ]  }|j                  d
d
        t        |        t        |       y )Nr   r=   r   r   	facecolorre   r7   rd   )g      g      @)xlimylim)r   flattenr
   r   r   rB   rC   r   r   r   r   rD   CURVE4flatsetr   )fig_testfig_refax_testax_refrE   r   s         r    test_closed_path_nan_removalr      s5	   1%--/Ga#++-F 
bff2wAQ"b:	dkk4;;T^^LND AJ**46BC
bff2wAQ"bff>	dkk4;;T[[IKD 1I))$&AB 
bAr7QFRL2r(;	dkk4;;T^^LND AJ**46BC
bAr7QFRL2r(;	dkk4;;T[[IKD 1I))$&AB 
bff2wAQ"b
bAr7QFRL2r(	<	dkk4;;T^^	dkk4;;T^^	MND
 AJ**46BC
bff2wAQ"bff
bAr7QFRL2r(	<	dkk4;;T[[	dkk4;;T[[	JKD
 1I))$&AB 
bAr7QK!Q"a2r(C	dkk4;;T[[		D AJ**46BC
bAr7QK!Q"a2r(C	dkk4;;T[[		D 1I))$&AB 
bAr7QFQK"a2r(C	dkk4;;T[[		D AJ**46BC
bAr7QFQK"a2r(C	dkk4;;T[[		D 1I))$&AB 
bAr7QK!Q!Q"a2r(K	dkk4;;T[[	dnn	&'D AJ**46BC
bAr7QK!Q!Q"a2r(K	dkk4;;T[[	dnn	&'D 1I))$&AB 
bAr7QFQK!Q"a2r(K	dkk4;;T[[	dkk	#$D AJ**46BC
bAr7QFQK!Q"a2r(K	dkk4;;T[[	dkk	#$D 1I))$&AB 
bAr7QFQFQK"a2r(K	dkk4;;T[[	dkk	#$D AJ**46BC
bAr7QFQFQK"a2r(K	dkk4;;T[[	dkk	#$D 1I))$&AB ,+v{{+ 3
Kk23H%G$r"   c           
         g }t        d      D ]  }d|z  dz   }ddgddgddgddgd|dz  z
  dgd|dz  z
  |g|dz  |g|dz  dgg}t        j                  ||d      }t        j                  ||d dd d f   f      }|j	                  |        t        j
                  t        |d         t        j                        }t        j                  |d<   t        j                  |d	<   t        j                  |t        |            }t        j                  |      }| j                  d
       t        ||      }| j                  t        j                  |d             |j                  d
       |j!                         }t        j                  ||t        j                  k(  <   t        ||      }|j                  t        j                  |d             y )N   g?g      g      ?r7   r   r   )axisrd   )rk   rk   r   r   )ranger   rollconcatenateappendfullr*   r
   rC   rB   r   tileset_size_inches
add_artistr   r   copy)r   r   r?   r   ri   patternr@   rE   s           r    test_closed_path_clippingr   g  s   Ha !tc! 3K$T{S#J!^S!A
NF#;aZ 6A:s"3	
 '''4a0..'72A2q5>!:; !& GGC$dkk2E{{E!HE"IGGE3x=)E~~h'HV$% D))$&AB F#JJLE%)[[E%4>>
!"% Dw((@Ar"   hatch_simplifyc            	          t        j                         \  } }|j                  t        j                  ddddd             |j	                  d       |j                  d       y )Nr5   r7   F/)fillhatch)g?g?)r   r   r   	Rectangler+   r   )r   r   s     r    
test_hatchr     sF    llnGCLLvq!%sCDKKKKr"   	fft_peaksc                  X   t        j                         \  } }t        j                  d      }|j	                  t        t        j                  j                  t        j                  dt        j                  z  dz  |z        t        j                  t        |            z                    }| j                  j                          |d   j                         }|d   j                         }|j                  |      }|j!                  d      }|j"                  j$                  dk(  sJ y )Ni   r   r   r   TrQ   $   )r   r   r   r   r   absfftr   r   blackmanr*   rV   rW   rX   rY   rZ   r>   r?   rL   )r   r   r   r\   rE   r]   rF   s          r    test_fft_peaksr     s    llnGC
		%A	RVVZZqws{1} 5bkk#a&6I IJK	LB JJOOa5>>D1##%I##D)Dt,J##r)))r"   c                  f   d} t        j                  t        j                  |       d      }|j	                  t        |      dz  df      }t        |      }|j                  t        j                         d      }t        |      }t        |      dk(  sJ |d   d   t        j                  k(  sJ y )	Ns  
ZwAAAAku+v9UAQAA+Tj6/z8CAADpQ/r/KAMAANlO+v8QBAAAyVn6//UEAAC6ZPr/2gUAAKpv+v+8
BgAAm3r6/50HAACLhfr/ewgAAHyQ+v9ZCQAAbZv6/zQKAABepvr/DgsAAE+x+v/lCwAAQLz6/7wM
AAAxx/r/kA0AACPS+v9jDgAAFN36/zQPAAAF6Pr/AxAAAPfy+v/QEAAA6f36/5wRAADbCPv/ZhIA
AMwT+/8uEwAAvh77//UTAACwKfv/uRQAAKM0+/98FQAAlT/7/z0WAACHSvv//RYAAHlV+/+7FwAA
bGD7/3cYAABea/v/MRkAAFF2+//pGQAARIH7/6AaAAA3jPv/VRsAACmX+/8JHAAAHKL7/7ocAAAP
rfv/ah0AAAO4+/8YHgAA9sL7/8QeAADpzfv/bx8AANzY+/8YIAAA0OP7/78gAADD7vv/ZCEAALf5
+/8IIgAAqwT8/6kiAACeD/z/SiMAAJIa/P/oIwAAhiX8/4QkAAB6MPz/HyUAAG47/P+4JQAAYkb8
/1AmAABWUfz/5SYAAEpc/P95JwAAPmf8/wsoAAAzcvz/nCgAACd9/P8qKQAAHIj8/7cpAAAQk/z/
QyoAAAWe/P/MKgAA+aj8/1QrAADus/z/2isAAOO+/P9eLAAA2Mn8/+AsAADM1Pz/YS0AAMHf/P/g
LQAAtur8/10uAACr9fz/2C4AAKEA/f9SLwAAlgv9/8ovAACLFv3/QDAAAIAh/f+1MAAAdSz9/ycx
AABrN/3/mDEAAGBC/f8IMgAAVk39/3UyAABLWP3/4TIAAEFj/f9LMwAANm79/7MzAAAsef3/GjQA
ACKE/f9+NAAAF4/9/+E0AAANmv3/QzUAAAOl/f+iNQAA+a/9/wA2AADvuv3/XDYAAOXF/f+2NgAA
29D9/w83AADR2/3/ZjcAAMfm/f+7NwAAvfH9/w44AACz/P3/XzgAAKkH/v+vOAAAnxL+//04AACW
Hf7/SjkAAIwo/v+UOQAAgjP+/905AAB5Pv7/JDoAAG9J/v9pOgAAZVT+/606AABcX/7/7zoAAFJq
/v8vOwAASXX+/207AAA/gP7/qjsAADaL/v/lOwAALZb+/x48AAAjof7/VTwAABqs/v+LPAAAELf+
/788AAAHwv7/8TwAAP7M/v8hPQAA9df+/1A9AADr4v7/fT0AAOLt/v+oPQAA2fj+/9E9AADQA///
+T0AAMYO//8fPgAAvRn//0M+AAC0JP//ZT4AAKsv//+GPgAAojr//6U+AACZRf//wj4AAJBQ///d
PgAAh1v///c+AAB+Zv//Dz8AAHRx//8lPwAAa3z//zk/AABih///TD8AAFmS//9dPwAAUJ3//2w/
AABHqP//ej8AAD6z//+FPwAANb7//48/AAAsyf//lz8AACPU//+ePwAAGt///6M/AAAR6v//pj8A
AAj1//+nPwAA/////w==z<i4)dtyper   )r   r         Y@r   r;   r7   r   )r   
frombufferbase64decodebytesreshaper*   r
   iter_segmentsr	   IdentityTransformlistrB   )datavertsrE   segss       r    test_start_with_movetor     s    D, MM&,,T2%@EMM3u:?A./E;Dj::<#;  =D:Dt9>>71:$$$r"   c                     dt         j                  d<   t        j                  d      } t        j                  j                  d      }t        j                  |d<   t        j                         \  }}|j                  | |       t        j                  t              5  |j                  t        j                                d d d        y # 1 sw Y   y xY w)NFzpath.simplifyi i  )r   rcParamsr   r   rS   rm   r   r   r   pytestraisesOverflowErrorsavefigioBytesIO)xxyyr   r   s       r    (test_throw_rendering_complexity_exceededr     s    $)CLL!	9	B			"BvvBtHllnGCGGBO	}	% "BJJL!" " "s   $C

Cclipper_edgec                     d} t        j                  d      }|j                  dddd       |j                  ddd	      }|j	                  |        |j
                  j                  t        j                  d
             |j                  j                  t        j                  d
             |j
                  j                  d       |j                  j                  d       |j                  dd       y )N)
r   r7   r   r   r   r=   r   rh   r   rk   r8   )figsizer   )leftbottomwspacehspace)r   r   r   r   )r   rk   F)r   autoscale_onr7   r   r   rk   	   )r   figuresubplots_adjustadd_axesr   xaxisset_major_locatorMultipleLocatoryaxisset_ticks_positionr+   )datr   r   s      r    test_clipperr     s    
(C
**V
$CQq1=	&V%	HBGGCLHHs22156HHs22156HH)HH'KK1r"   para_equal_perpc                     t        j                  g ddgdz  z         } t        j                  g ddgdz  z         }t        j                         \  }}|j	                  | dz   |dz          |j	                  | dz   |dz   d       y )N)r   r7   r   r7   r   rd   r   r7   r7      )r7   r7   r   r7   r   rd   r   r   r   ro)r   r)   r   r   r   r,   s       r    test_para_equal_perpr     ss    
*aS3Y67A
*aS3Y67AllnGCGGAE1q5GGAE1q5$r"   clipping_with_nansc                      t        j                  ddd      } t        j                  |       }t         j                  | d d d<   t	        j
                         \  }}|j                  | |       |j                  dd       y )Nr   gQ@i  d   g      пg      ?)r   r~   r   r   r   r   r   r   r,   s       r    test_clipping_with_nansr     s\    
Ax&A
q	AvvAeeHllnGCGGAqMKKtr"   c                     t        ddggdz        } t        | j                  g d            }|g k(  sJ t        ddgddggd	d
g      } t        | j                  g d            }|D cg c]  \  }}t        |      |f c}}ddgd	fddgd
fgk(  sJ t        ddggd	g      } t        | j                  g d            }|D cg c]  \  }}t        |      |f c}}ddgd	fgk(  sJ y c c}}w c c}}w )Ngꌠ9Y>)Frk   )r   r   r   r   r;   rM   (   K   A   r7   r   )r
   r   r   )rz   rF   r-   r.   s       r    test_clipping_fullr     s   tTl^a Aaoo+;o<=Jr2hR!Aq6*Aaoo+;o<=J&01dad1gq\12h]b"XqM*+ , + 	r2hZ!Aaoo+;o<=J&01dad1gq\12h]O   2
 2s   ,C.C4c                  
   t        dddt        j                  t        j                  fgt         j                  t         j                  t         j                  t         j
                  g      t        g dt         j                  t         j                  t         j                  t         j
                  g      g} t        g dt         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g      }| D ]T  }|j                  d      }t        |j                  |j                         t        |j                  |j                         V t        dddt        j                  t        j                  fdd	d
t        j                  t        j                  fgt         j                  t         j                  t         j                  t         j
                  t         j                  t         j                  t         j                  t         j
                  g      }t        g dt         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g
      }|j                  d      }t        |j                  |j                         t        |j                  |j                         t        dddt        j                  t        j                  fdd
dddg	t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j
                  t         j                  g	      }t        dddt        j                  t        j                  fdd
ddddg
t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  t         j                  g
      }|j                  d      }t        |j                  |j                         t        |j                  |j                         y )Nr   r8   r   )r   r8   r   )r   rM   )r   r8   r   r   r   r5   TrQ   rd   r   re   r   re   r7   )
r   r8   r   r   r   r   r   r   r   r5   r   )r7   rd   )r   rd   )rd   rd   )rd   r7   )r   rd   r5   )r
   r   r   rB   rC   r   rA   r>   r   r?   r@   )pathsexpected_pathrE   simplified_paths       r    test_simplify_closepolyr     s.    666BFFBFF+;<;;T[[$..IK4;;T[[$..IKLE I++t{{DKK++tyy23M  G,,,5=11?3K3KL=..0E0EFG "&&"&&)9'7RVVRVV,<>dkk4;;dkk4;;HID  O++t{{DKK++t{{DKK++tyy23M llDl1O}--/G/GH}**O,A,AB '&&"&&!8Wg" dkk4;;dkk4;;./D &'766266*Hgw!7F4 ++t{{DKK++t{{DKK++t{{DII?@M llDl1O}--/G/GH}**O,A,ABr"   )-r   r   platformnumpyr   numpy.testingr   r   r   matplotlib.testing.decoratorsr   r   r   matplotlib.pyplotpyplotr   
matplotlibr   r	   matplotlib.pathr
   r!   machiner/   r3   rH   r^   rf   markparametrizer   r|   r   r   r   r   r   r   r   r   r   r   r   r   r    r"   r    <module>r     s    	   G D D  *   :,D1  2  :,D/x//1W<e!EE %&D9 :C.-"G;^ 1beeAgruuQwa"@AAr7+)3 , B)3X-$ #$$EB C h% h%V %B %BP #$$7 8 ;-T2* 3*%D	" >"5 6 $%48  9  '() * 0Cr"   