
    EVf`I                        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      d        Z e
dgd      d        Zd Zd Zd Zej4                  j7                  dd ej8                  dz  ej8                  dz  ej8                  dz  g      ej4                  j7                  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)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       m/var/www/html/software/conda/envs/catlas/lib/python3.12/site-packages/matplotlib/tests/test_simplification.pytest_clippingr!      s[    
		#sD!A
qwqyAllnGCGGAqCG KK    overflowc                      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-      sM    
'(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   r0   r   r   g333333g333333?)r   r'   r   r   r   r)   r   r*   s       r    test_diamondr1   (   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   r5   )
   r7      r8   clipr3   )r3   r4   )r      )	r
   cleanedr   verticescodesSTOPMOVETOLINETOCURVE3)path
simplifiedsimplified_clippeds      r    test_clipping_out_of_boundsrF   3   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=   rJ   r+   r   r   p1rC   	transformrD   s          r    
test_noiser\   J   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   TrO   )r   r   r   rV   rW   rX   r<   inverted)r+   r,   r   r   rZ   rC   r[   rD   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   r5   )      ?r5   r5   r   ra   r   ra   r0   r   r   )ra   r5   rb   r5   rc   ra   g       )ra   r5   rb   r5   r   ra   )ra   r5   r   r5   r;   ra   r%   )ra   r5   r   r5   r5   ra   )r   r=   )r`   r+   r,   rD   s       r     test_antiparallel_simplificationrd   [   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   offsetra   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   r5   rb   )r5   r   r   r   r   )r>   )r5   r   r   r   TrO   )r   rQ   rR   randr   cosmaxminr
   vstackTr<   r   r=   r   r>   )re   rg   scalevert_offsetsr+   r,   x_maxx_miny_maxy_min
p_expectedpp2s                r    test_angled_antiparallelrz      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   rH   rI   r   rL   rM   TrO   ib  )r   rQ   rR   r   linspacer   rS   r   r   r   rT   rU   rV   rW   rX   r<   r=   rJ   rY   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?)r   tolc                     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 )
Nr3   )r5   r   )r5   r5   r5   )r   r   )r   r   none)fc)r   r   )r   	PathPatchr
   r   nanr@   rB   	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   	facecolorrc   r5   rb   )g      g      @)xlimylim)r   flattenr
   r   r   r@   rA   r   r   r   r   rB   CURVE4flatsetr   )fig_testfig_refax_testax_refrC   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      ?r5   r   r   )axisrb   )ri   ri   r   r   )ranger   rollconcatenateappendfullr(   r
   rA   r@   r   tileset_size_inches
add_artistr   r   copy)r   r   r=   r   rg   patternr>   rC   s           r    test_closed_path_clippingr   e  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 )Nr3   r5   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   TrO   $   )r   r   r   r   r   absfftr   r   blackmanr(   rT   rU   rV   rW   rX   r<   r=   rJ   )r   r   r   rZ   rC   r[   rD   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   r9   r5   r   )r   
frombufferbase64decodebytesreshaper(   r
   iter_segmentsr	   IdentityTransformlistr@   )datavertsrC   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   rQ   rk   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   r5   r   r   r   r;   r   rf   r   ri   r6   )figsizer   )leftbottomwspacehspace)r   r   r   r   )r   ri   F)r   autoscale_onr5   r   r   ri   	   )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   r5   r   r5   r   rb   r   r5   r5      )r5   r5   r   r5   r   rb   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>)Fri   )r   r   r   r   r9   rK   (   K   A   r5   r   )r
   r   r   )rx   rD   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)*r   r   numpyr   numpy.testingr   r   r   matplotlib.testing.decoratorsr   r   r   matplotlib.pyplotpyplotr   
matplotlibr   r	   matplotlib.pathr
   r!   r-   r1   rF   r\   rd   markparametrizer   rz   r}   r   r   r   r   r   r   r   r   r   r   r    r"   r    <module>r      s    	  G D D  *   :,D1  2  :,D1 2 %&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  '() *r"   