o
    ÞÁg(+  ã                   @   sœ  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	 d dl
mZ d dlmZmZ d dlmZ e	dgddd	d
„ ƒZe	dgdddd„ ƒZe	dgdddd„ ƒZdd„ Zdd„ Zej dd ejd ejd ejd g¡ej dd dg¡dd„ ƒƒZdd„ Ze	dgddd d!„ ƒZe	d"gddd#d$„ ƒZe	d%gddd&d'„ ƒZd(d)„ Zd*d+„ Z e	d,gddd-d.„ ƒZ!e	d/gddd0d1„ ƒZ"e	d2gƒd3d4„ ƒZ#d5d6„ Z$dS )7é    N)Úassert_array_almost_equalÚassert_array_equal)Úimage_comparison)ÚpatchesÚ
transforms)ÚPathÚclippingT)Úremove_textc                  C   sL   t  ddd¡} t  dt j |  ¡}t ¡ \}}|j| |dd | d¡ d S )Nç        ç       @ç{®Gáz„?é   ç      ð?)Ú	linewidth)gš™™™™™É¿gìQ¸…ëÑ¿)ÚnpÚarangeÚsinÚpiÚpltÚsubplotsÚplotÚset_ylim)ÚtÚsÚfigÚax© r   úb/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/matplotlib/tests/test_simplification.pyÚtest_clipping   s
   r   Úoverflowc                  C   sD   t  g d¢¡} t  t| ƒ¡}t ¡ \}}| | |¡ | dd¡ d S )N)r   r   ç      @g     jAr   é   )r   Úarrayr   Úlenr   r   r   Úset_xlim©ÚxÚyr   r   r   r   r   Útest_overflow   s
   r(   Úclipping_diamondc                  C   sP   t  g d¢¡} t  g d¢¡}t ¡ \}}| | |¡ | dd¡ | dd¡ d S )N)r
   r   r
   ç      ð¿r
   )r   r
   r*   r
   r   g333333ã¿g333333ã?)r   r"   r   r   r   r$   r   r%   r   r   r   Útest_diamond'   s   r+   c                  C   s†   t j d¡ t jjddd } t ¡ \}}|j| ddd}|j ¡  |d  	¡ }|d  
¡ }| |¡}|jdd	}|jjd
ksAJ ‚d S )Nr   éPÃ  ©Úsizeé2   Úroundr   ©Úsolid_joinstyler   T©Úsimplifyi¨c  )r   ÚrandomÚseedÚuniformr   r   r   ÚcanvasÚdrawÚget_pathÚget_transformÚtransform_pathÚcleanedÚverticesr.   ©r&   r   r   Úp1ÚpathÚ	transformÚ
simplifiedr   r   r   Ú
test_noise2   s   

rD   c                  C   s’  d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                 S   sX   t  ¡ \}}| | |¡}|d  ¡ }|d  ¡ }| |¡}|jdd}| ¡  |¡}|S )Nr   Tr3   )r   r   r   r:   r;   r<   r=   Úinverted)r&   r'   r   r   r@   rA   rB   rC   r   r   r   Ú_get_simplifiedD   s   
z9test_antiparallel_simplification.<locals>._get_simplified)r   r   r   r   r   é   )ç      à?rG   éÿÿÿÿrG   r   rH   r
   rH   r*   r   r   éþÿÿÿ)rH   rG   rI   rG   rJ   rH   g       À)rH   rG   rI   rG   r   rH   )rH   rG   r   rG   é   rH   r    )rH   rG   r   rG   rG   rH   )r   r>   )rF   r&   r'   rC   r   r   r   Ú test_antiparallel_simplificationC   sf   
ýü
ýü
üû
þý
ýürL   Úangleé   rK   r   ÚoffsetrH   c                 C   s@  d}t j d¡ t j d¡| | }d|d< d|d< t  | ¡| }t  | ¡| }|dd …  ¡ }|dd …  ¡ }|dd …  ¡ }|dd …  ¡ }	|dkrhtddg||g||	g|d |d gddggg d¢d}
ntddg||g|d |d gddggg d	¢d}
tt  	||g¡j
ƒ}|jd
d}t|
j|jƒ t|
j|jƒ d S )Né   i!N,é   r   rG   rI   )rG   r   r   r   r   )Úcodes)rG   r   r   r   Tr3   )r   r5   r6   Úrandr   ÚcosÚmaxÚminr   ÚvstackÚTr=   r   r>   r   rR   )rM   rO   ÚscaleÚvert_offsetsr&   r'   Úx_maxÚx_minÚy_maxÚy_minÚ
p_expectedÚpÚp2r   r   r   Útest_angled_antiparallel’   sB   üûýüÿrb   c                  C   s    t j d¡ t  t  dt jd d¡¡t jjddd  } t ¡ \}}|j	| ddd}|j
 ¡  |d  ¡ }|d  ¡ }| |¡}|jdd	}|jjd
ksNJ ‚d S )Nr   r   r,   r-   r   r0   r1   Tr3   i˜b  )r   r5   r6   r   Úlinspacer   r7   r   r   r   r8   r9   r:   r;   r<   r=   r>   r.   r?   r   r   r   Útest_sine_plus_noiseÀ   s   ÿ

rd   Úsimplify_curvec                  C   sx   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d} t 	¡ \}}| 
| ¡ | d	¡ | d	¡ d S )
N©r   r   )rG   r   )rG   rG   rG   )r   r   )r   r   Únone)Úfc)r   r   )r   Ú	PathPatchr   r   ÚnanÚMOVETOÚCURVE3Ú	CLOSEPOLYr   r   Ú	add_patchr$   r   )Úpp1r   r   r   r   r   Útest_simplify_curveÒ   s   ÿÿþû

rp   Úhatch_simplifyc               	   C   s>   t  ¡ \} }| t jdddddd¡ | d¡ | d¡ d S )Nrf   rG   Fú/)ÚfillÚhatch)gÍÌÌÌÌÌÜ?gš™™™™™á?)r   r   rn   Ú	Rectangler$   r   )r   r   r   r   r   Ú
test_hatchá   s   
rv   Ú	fft_peaksc               
   C   sš   t  ¡ \} }t d¡}| ttj t dtj d | ¡t 	t
|ƒ¡ ¡ƒ¡}| j ¡  |d  ¡ }|d  ¡ }| |¡}|jdd}|jjdksKJ ‚d S )Ni   r   r   r   Tr3   é$   )r   r   r   r   r   ÚabsÚfftr   r   Úblackmanr#   r8   r9   r:   r;   r<   r=   r>   r.   )r   r   r   r@   rA   rB   rC   r   r   r   Útest_fft_peaksé   s   
8

r|   c                  C   sz   d} t jt | ¡dd}| t|ƒd df¡}t|ƒ}|jt 	¡ dd}t
|ƒ}t|ƒdks0J ‚|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~   ©ÚcliprG   r   )r   Ú
frombufferÚbase64ÚdecodebytesÚreshaper#   r   Úiter_segmentsr   ÚIdentityTransformÚlistrk   )ÚdataÚvertsrA   Úsegsr   r   r   Útest_start_with_movetoù   s   
ÿr‹   c                  C   s€   dt jd< t d¡} tj d¡}tj|d< t  ¡ \}}| | |¡ t	 
t¡ | t ¡ ¡ W d   ƒ d S 1 s9w   Y  d S )NFzpath.simplifyi@ iè  )r   ÚrcParamsr   r   r5   rS   rj   r   r   ÚpytestÚraisesÚOverflowErrorÚsavefigÚioÚBytesIO)ÚxxÚyyr   r   r   r   r   Ú(test_throw_rendering_complexity_exceeded  s   


"ÿr•   Úclipper_edgec                  C   sˆ   d} t jdd}|jddddd |jdddd	}| | ¡ |j t  d
¡¡ |j t  d
¡¡ |j 	d¡ |j 	d¡ | 
dd¡ d S )N)
r   rG   r   r   r   rK   r   rN   r   rP   )r   rG   )Úfigsizer   )ÚleftÚbottomÚwspaceÚhspace)r   r   r   r   )r   rP   F)ÚylimÚautoscale_onrG   r™   r˜   rP   é	   )r   ÚfigureÚsubplots_adjustÚadd_axesr   ÚxaxisÚset_major_locatorÚMultipleLocatorÚyaxisÚset_ticks_positionr$   )Údatr   r   r   r   r   Útest_clipper'  s   
r¨   Úpara_equal_perpc                  C   sj   t  g d¢dgd  ¡} t  g d¢dgd  ¡}t ¡ \}}| | d |d ¡ | | d |d d¡ d S )N)r   rG   r   rG   r   rI   r   rG   rG   é€   )rG   rG   r   rG   r   rI   r   r   r   Úro)r   r"   r   r   r   r%   r   r   r   Útest_para_equal_perp7  s
   r¬   Úclipping_with_nansc                  C   sP   t  ddd¡} t  | ¡}t j| d d d…< t ¡ \}}| | |¡ | dd¡ d S )Nr   g…ëQ¸@i¸  éd   g      Ð¿g      Ð?)r   rc   r   rj   r   r   r   r   r%   r   r   r   Útest_clipping_with_nansA  s   
r¯   c                  C   sÔ   t ddggd ƒ} t| jg d¢dƒ}|g ksJ ‚t ddgddggd	d
gƒ} t| jg d¢dƒ}dd„ |D ƒddgd	fddgd
fgksEJ ‚t ddggd	gƒ} t| jg d¢dƒ}dd„ |D ƒddgd	fgkshJ ‚d S )NgêŒ 9Y>)FrP   )r   r   r®   r®   r   r/   é(   éK   éA   rG   r   c                 S   ó   g | ]
\}}t |ƒ|f‘qS r   ©r‡   ©Ú.0r&   r'   r   r   r   Ú
<listcomp>S  ó    z&test_clipping_full.<locals>.<listcomp>c                 S   r³   r   r´   rµ   r   r   r   r·   X  r¸   )r   r‡   r…   )r`   rC   r   r   r   Útest_clipping_fullL  s   ÿÿr¹   )%r‚   r‘   Únumpyr   Únumpy.testingr   r   r   Úmatplotlib.testing.decoratorsr   Úmatplotlib.pyplotÚpyplotr   Ú
matplotlibr   r   Úmatplotlib.pathr   r   r(   r+   rD   rL   ÚmarkÚparametrizer   rb   rd   rp   rv   r|   r‹   r•   r¨   r¬   r¯   r¹   r   r   r   r   Ú<module>   sH    
	
	

&O,


"

	

