
    P/PhAT                        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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. 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       d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_simplification.pytest_clippingr!      sm    
	#sD!!A
qwqyAlnnGCGGAqCG   KK    overflowarm64gy&1|?)r   tolc                      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/      si     	'''((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   r2   r   r   g333333g333333?)r   r)   r   r   r   r+   r   r,   s       r    test_diamondr3   *   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   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   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?   rL   r-   r   r   p1rE   	transformrF   s          r    
test_noiser^   L   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   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0
''))88D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#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   offsetrc   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   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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   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    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?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	                    \  }}|
                    |            |                    d	           |                    d	           d S )
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    

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   	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      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      ?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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 )Nr5   r7   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   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    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   r;   r7   r   )r   
frombufferbase64decodebytesreshaper*   r
   iter_segmentsr	   IdentityTransformlistrB   )datavertsrE   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   rS   rm   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   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%	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   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     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>)Frk   )r   r   r   r   r;   rM   (   K   A   r7   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   )rz   rF   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"   c                  4   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 ]L}|                    d          }t          |j	        |j	                   t          |j
        |j
                   Mt          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
          }|                    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
          }|                    d          }t          |j	        |j	                   t          |j
        |j
                   d S )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    666BFBF+;<;T[$.IK K444;T[$.IK KLE III+t{DK+ty23 3M  G G,,,55=1?3KLLL=.0EFFFF "&"&)9'7RVRV,<>dk4;dk4;HI ID  O O O+t{DK+t{DK+ty23 3M llDl11O}-/GHHH}*O,ABBB '&"&!8Wg" dk4;dk4;./ /D &'7626*Hgw!7F4 +t{DK+t{DK+t{DI?@ @M llDl11O}-/GHHH}*O,ABBBB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"   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/x/11W<<ee!E E E E E %&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  '())  *)   0C 0C 0C 0C 0Cr"   