
    (?e`I                     J   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j                            dd ej        dz  ej        dz  ej        dz  g          e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S ),    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                    \  }}|                    | |d           |                    d           d S )N               @{Gz?         ?)	linewidth)gɿgQѿ)nparangesinpipltsubplotsplotset_ylim)tsfigaxs       Dlib/python3.11/site-packages/matplotlib/tests/test_simplification.pytest_clippingr!      sm    
	#sD!!A
qwqyAlnnGCGGAqCG   KK    overflowc                      t          j        g d          } t          j        t          |                     }t	          j                    \  }}|                    | |           |                    dd           d S )N)r   r         @g     jAr      )r   arrayr   lenr   r   r   set_xlimxyr   r   s       r    test_overflowr-      sg    
'''((A
	#a&&AlnnGCGGAqMMMKK1r"   clipping_diamondc                     t          j        g d          } t          j        g d          }t          j                    \  }}|                    | |           |                    dd           |                    dd           d S )N)r   r   r         r   )r   r   r0   r   r   g333333g333333?)r   r'   r   r   r   r)   r   r*   s       r    test_diamondr1   (   s|    
+++,,A
+++,,AlnnGCGGAqMMMKKcKKcr"   c                     t          g d          } |                     d          }t          |j        dg           |j        t           j        gk    sJ t          g dt           j        t           j        t           j        g          } |                     d          }t          |j        dg           |j        t           j        gk    sJ t          g dt           j        t           j        t           j        g          } |                                 }|                     d          }t          |j        |j                   t          |j        |j                   d S )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   sB   ((())D#344Jz*VH555	{**** (((dk4;79 9D#344Jz*VH555	{**** (((dk4;79 9DJ+;<<z*,>,GHHHz');)ABBBBBr"   c                     t           j                            d           t           j                            d          dz  } t	          j                    \  }}|                    | dd          }|j                                         |d         	                                }|d         
                                }|                    |          }|                    d	          }|j        j        d
k    sJ d S )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    INN1
	u%%*AlnnGC	Gs	;	;B JOOa5>>D1##%%I##D))Dt,,J#u,,,,,,r"   c                     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                    d S )Nc                 j   t          j                    \  }}|                    | |          }|d                                         }|d                                         }|                    |          }|                    d          }|                                                    |          }|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0
''))88D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#2#qqq&9	; ; ; 	AA A&&JCy "Bx "Cy "Cy* )1#2#qqq&9	; ; ; 	AA A&&JCy "Bx "Cy "Bx "Cy	*
 )1#2#qqq&9; ; ; 	AA A&&JCy "Bx "Cy* )1#2#qqq&9; ; ; 	AA A&&JCy "Bx "Bx "Cy* )1#2#qqq&9	; ; ; ; ;r"   angle   r;   r   offsetra   c                    d}t           j                            d           t           j                            d          |z
  |z  }d|d<   d|d<   t          j        |           |z  }t          j        |           |z  }|dd                                          }|dd                                          }|dd                                          }|dd                                          }	|dk    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
                  }|                    d
          }t          |
j        |j                   t          |
j        |j                   d S )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INN8 INN2&&/58LLOLO
u$A
u$A abbEIIKKEabbEIIKKEabbEIIKKEabbEIIKKEzzAq6!5>!5>bE1R5>q6	#
 !01 1 1

 Aq6!5>bE1R5>q6# !-	. . .
 	RY1v !!A	
D	!	!Bj1 k+ + +z'22222r"   c                  f   t           j                            d           t          j        t          j        dt           j        dz  d                    t           j                            d          dz  z   } t          j                    \  }}|	                    | dd          }|j
                                         |d                                         }|d                                         }|                    |          }|                    d	          }|j        j        d
k    sJ d S )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    INN1	Arus{E22	3	3					&	&	-
.A lnnGC	Gs	;	;B JOO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	                    \  }}|
                    |            |                    d	           |                    d	           d S )
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    

fffrvqk666k4;T[$+k4;8	9 	9   C lnnGCLLKKKKr"   c                 >   |                      dd                                          }|                     dd                                          }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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             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                             t          j
        |d                     g |j        |j        D ]}|                    d
d
           t          |            t          |           d S )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      sB	   1%%--//Ga##++--F 
bf2wAQ"b:	dk4;T^LN ND AJ*46BBBCCC
bf2wAQ"bf>	dk4;T[IK KD 1I)$&AAABBB 
bAr7QFRL2r(;	dk4;T^LN ND AJ*46BBBCCC
bAr7QFRL2r(;	dk4;T[IK KD 1I)$&AAABBB 
bf2wAQ"b
bAr7QFRL2r(	<	dk4;T^	dk4;T^	MN ND
 AJ*46BBBCCC
bf2wAQ"bf
bAr7QFRL2r(	<	dk4;T[	dk4;T[	JK KD
 1I)$&AAABBB 
bAr7QK!Q"a2r(C	dk4;T[		 D AJ*46BBBCCC
bAr7QK!Q"a2r(C	dk4;T[		 D 1I)$&AAABBB 
bAr7QFQK"a2r(C	dk4;T[		 D AJ*46BBBCCC
bAr7QFQK"a2r(C	dk4;T[		 D 1I)$&AAABBB 
bAr7QK!Q!Q"a2r(K	dk4;T[	dn	&' 'D AJ*46BBBCCC
bAr7QK!Q!Q"a2r(K	dk4;T[	dn	&' 'D 1I)$&AAABBB 
bAr7QFQK!Q"a2r(K	dk4;T[	dk	#$ $D AJ*46BBBCCC
bAr7QFQK!Q"a2r(K	dk4;T[	dk	#$ $D 1I)$&AAABBB 
bAr7QFQFQK"a2r(K	dk4;T[	dk	#$ $D AJ*46BBBCCC
bAr7QFQFQK"a2r(K	dk4;T[	dk	#$ $D 1I)$&AAABBB ,+v{+ 3 3
Kk2222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          }|                    |           t          j        t          |d                   t          j                  }t          j	        |d<   t          j
        |d	<   t          j        |t          |                    }t          j        |          }|                     d
           t          ||          }|                     t          j        |d                     |                    d
           |                                }t          j        ||t          j
        k    <   t          ||          }|                    t          j        |d                     d S )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00.'72A2qqq5>!:;;     GC$$dk22E{E!HE"IGE3x==))E~h''HV$$$%  D)$&AAABBB F###JJLLE%)[E%4>
!"%  Dw(@@@AAAAAr"   hatch_simplifyc            	          t          j                    \  } }|                    t          j        ddddd                     |                    d           |                    d           d S )Nr3   r5   F/)fillhatch)g?g?)r   r   r   	Rectangler)   r   )r   r   s     r    
test_hatchr     sb    lnnGCLLvq!%sCCCDDDKKKKr"   	fft_peaksc                  z   t          j                    \  } }t          j        d          }|                    t          t          j                            t          j        dt          j        z  dz  |z            t          j	        t          |                    z                                }| j                                         |d                                         }|d                                         }|                    |          }|                    d          }|j        j        dk    sJ d S )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    lnnGC
	%A	RVZZqws{1} 5 5bk#a&&6I6I IJJKK	L	LB JOOa5>>D1##%%I##D))Dt,,J#r))))))r"   c                     d} t          j        t          j        |           d          }|                    t          |          dz  df          }t          |          }|                    t          j	                    d          }t          |          }t          |          dk    sJ |d         d         t          j        k    sJ d S )	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, M&,T22%@@@EMM3u::?A.//E;;Dj:<<#;  = =D::Dt99>>>>71:$$$$$$r"   c                     dt           j        d<   t          j        d          } t          j                            d          }t          j        |d<   t          j                    \  }}|                    | |           t          j
        t                    5  |                    t          j                               d d d            d S # 1 swxY w Y   d S )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    $)CL!	9		B			"	"BvBtHlnnGCGGBOOO	}	%	% " "BJLL!!!" " " " " " " " " " " " " " " " " "s   'CCCclipper_edgec                     d} t          j        d          }|                    dddd           |                    ddd	          }|                    |            |j                            t          j        d
                     |j                            t          j        d
                     |j        	                    d           |j        	                    d           |
                    dd           d S )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%	H	HBGGCLLLHs2155666Hs2155666H)))H'''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                    \  }}|                    | dz   |dz              |                    | dz   |dz   d           d S )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     s    
***aS3Y677A
***aS3Y677AlnnGCGGAE1q5GGAE1q5$r"   clipping_with_nansc                     t          j        ddd          } t          j        |           }t           j        | d d d<   t	          j                    \  }}|                    | |           |                    dd           d S )Nr   gQ@i  d   g      пg      ?)r   r|   r   r   r   r   r   r   r*   s       r    test_clipping_with_nansr     sm    
Ax&&A
q		AvAeeeHlnnGCGGAqMMMKKtr"   c                     t          ddggdz            } t          |                     g d                    }|g k    sJ t          ddgddggd	d
g          } t          |                     g d                    }d |D             ddgd	fddgd
fgk    sJ t          ddggd	g          } t          |                     g d                    }d |D             ddgd	fgk    sJ d S )Ngꌠ9Y>)Fri   )r   r   r   r   r9   rK   (   K   A   r5   r   c                 6    g | ]\  }}t          |          |fS  r   .0r+   r,   s      r    
<listcomp>z&test_clipping_full.<locals>.<listcomp>   &    111dad1ggq\111r"   c                 6    g | ]\  }}t          |          |fS r   r   r   s      r    r   z&test_clipping_full.<locals>.<listcomp>  r   r"   )r
   r   r   )rx   rD   s     r    test_clipping_fullr     sC   tTl^a  Aaoo+;+;+;o<<==Jr2hR!Aq6**Aaoo+;+;+;o<<==J11j1112h]b"XqM*+ + + + 	r2hZ!Aaoo+;+;+;o<<==J11j1112h]O     r"   )*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"   r    <module>r      s    				     G G G G G G G G D D D D D D D D D D       * * * * * * * *             :,D111    21  :,D111  21 %&D999  :9C C C.- - -"G; G; G;^ 1beAgruQwa"@AAAr7++)3 )3 ,+ BA)3X- - -$ #$$EBBB  CB h% h% h%V %B %B %BP #$$777  87 ;-T222* * 32*% % %D	" 	" 	" >"555  65 $%4888    98  '())  *)    r"   