a
    ëÝEb`I  ã                   @   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	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�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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$d%„ ƒZe	ƒ d&d'„ ƒZ e	ƒ d(d)„ ƒZ!e
d*gdd�d+d,„ ƒZ"e
d-gdd�d.d/„ ƒZ#d0d1„ Z$d2d3„ Z%e
d4gdd�d5d6„ ƒZ&e
d7gdd�d8d9„ ƒZ'e
d:gƒd;d<„ ƒZ(d=d>„ Z)dS )?é    N)Úassert_array_almost_equalÚassert_array_equal)Úcheck_figures_equalÚimage_comparisonÚremove_ticks_and_titles)ÚpatchesÚ
transforms)ÚPathZ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   úd/home/ja/django-apps/lartica_env/lib/python3.9/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)   Z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 g d¢ƒ} | jdd�}t|jdgƒ |jt jgks8J ‚t g d¢t jt jt jgƒ} | jdd�}t|jdgƒ |jt jgks~J ‚t g d¢t jt jt jgƒ} |  ¡ }| jdd�}t|j|jƒ t|j|jƒ d S )N)©r   r   ©é   r   ©r   r.   )é
   r0   é   r1   ©Zclipr,   )r,   r-   )r   é   )	r	   Úcleanedr   ÚverticesÚcodesÚSTOPÚMOVETOÚLINETOÚCURVE3)ÚpathÚ
simplifiedZsimplified_clippedr   r   r   Útest_clipping_out_of_bounds3   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s‚J ‚d S )Nr   éPÃ  ©Úsizeé2   Úroundr   ©Zsolid_joinstyler   T©Úsimplifyi¨c  )r   ÚrandomÚseedÚuniformr   r   r   ÚcanvasÚdrawÚget_pathÚget_transformÚtransform_pathr4   r5   r@   ©r'   r   r   Úp1r;   Ú	transformr<   r   r   r   Ú
test_noiseJ   s    

rQ   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   TrD   )r   r   r   rK   rL   rM   r4   Úinverted)r'   r(   r   r   rO   r;   rP   r<   r   r   r   Ú_get_simplified\   s    
z9test_antiparallel_simplification.<locals>._get_simplified)r   r   r   r   r   r.   )ç      à?r.   éÿÿÿÿr.   r   rT   r   rT   r*   r   r   éþÿÿÿ)rT   r.   rU   r.   rV   rT   g       À)rT   r.   rU   r.   r   rT   )rT   r.   r   r.   r3   rT   r!   )rT   r.   r   r.   r.   rT   )r   r5   )rS   r'   r(   r<   r   r   r   Ú test_antiparallel_simplification[   sf    
ýü
ýü
üû
þý
ýürW   Úangleé   r3   r   ÚoffsetrT   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rÐtddg||g||	g|d |d gddggg d¢d�}
n0t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   r.   rU   )r.   r   r   r   r   )r6   )r.   r   r   r   TrD   )r   rF   rG   Úrandr   ÚcosÚmaxÚminr	   ZvstackÚTr4   r   r5   r   r6   )rX   rZ   ÚscaleZvert_offsetsr'   r(   Zx_maxZx_minZy_maxZy_minZ
p_expectedÚpÚp2r   r   r   Útest_angled_antiparallelª   sB    üûýüÿre   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sœJ ‚d S )Nr   r   r>   r?   r   rB   rC   TrD   i˜b  )r   rF   rG   r   Úlinspacer   rH   r   r   r   rI   rJ   rK   rL   rM   r4   r5   r@   rN   r   r   r   Útest_sine_plus_noiseØ   s    ÿ

rg   Zsimplify_curvegœÄ °rh‘?)r
   Ztolc                  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 )
Nr,   )r.   r   )r.   r.   r.   )r   r   )r   r   Únone)Zfc)r   r   )r   Ú	PathPatchr	   r   Únanr8   r:   Ú	CLOSEPOLYr   r   Ú	add_patchr%   r   )Zpp1r   r   r   r   r   Útest_simplify_curveê   s    ÿÿþû

rm   c                 C   sÆ  |   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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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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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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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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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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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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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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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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d�¡ g |j¢|j¢D ]}|jd
d
d� �qœt| ƒ t|ƒ d S )Nr   éýÿÿÿr3   r   rh   ©Z	facecolorrV   r.   rU   )g      Àg      @)ZxlimÚylim)r   Úflattenr	   r   rj   r8   r9   rk   rl   r   ri   r:   ZCURVE4ZflatÚsetr   )Úfig_testÚfig_refZax_testZax_refr;   r   r   r   r   Útest_closed_path_nan_removalù   sä    "þ$þ"þ"þ  ÿÿý" ÿÿý(ÿþ(ÿþ(ÿþ(ÿþ.ÿþ.ÿþ.ÿþ.ÿþ.ÿþ.ÿþru   c              
   C   sR  g }t dƒD ]”}d| d }ddgddgddgddgd|d  dgd|d  |g|d |g|d dgg}tj||dd�}t ||d d…d d …f f¡}| |¡ qt t|d ƒtj¡}tj	|d< tj
|d	< t |t|ƒ¡}t |¡}|  d
¡ t||ƒ}|  tj|dd�¡ | d
¡ | ¡ }tj||tj
k< t||ƒ}| tj|dd�¡ d S )Né   gš™™™™™¹?g      à¿g      ø?r.   r   r   )ZaxisrU   )r[   r[   rh   ro   )Úranger   ÚrollZconcatenateÚappendÚfullr$   r	   r9   r8   rk   ZtileZset_size_inchesZ
add_artistr   ri   Úcopy)rs   rt   r5   rx   rZ   Úpatternr6   r;   r   r   r   Útest_closed_path_clippinge  s.    ü






r}   Zhatch_simplifyc               	   C   s>   t  ¡ \} }| t jdddddd�¡ | d¡ | d¡ d S )Nr,   r.   Fú/)ÚfillZhatch)gÍÌÌÌÌÌÜ?gš™™™™™á?)r   r   rl   Z	Rectangler%   r   )r   r   r   r   r   Ú
test_hatchŽ  s    
r€   Z	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s–J ‚d S )Ni   r   r   r   TrD   é$   )r   r   r   r   r   ÚabsZfftr   r   Zblackmanr$   rI   rJ   rK   rL   rM   r4   r5   r@   )r   r   r   rO   r;   rP   r<   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s`J ‚|d d tjksvJ ‚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)Zdtyper   )r   r   ç      Y@r„   r2   r.   r   )r   Z
frombufferÚbase64ÚdecodebytesZreshaper$   r	   Úiter_segmentsr   ZIdentityTransformÚlistr8   )ÚdataZvertsr;   Z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   ƒ n1 sp0    Y  d S )NFzpath.simplifyi€„ iè  )r   ZrcParamsr   r   rF   r]   rj   r   r   ÚpytestZraisesÚOverflowErrorZsavefigÚioÚBytesIO)ÚxxÚyyr   r   r   r   r   Ú(test_throw_rendering_complexity_exceededÈ  s    


r‘   Z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   r.   r   r   r   r3   r   rY   r   r[   r/   )Zfigsizer   )ÚleftÚbottomZwspaceZhspace)r   r   r   r   )r   r[   F)rp   Zautoscale_onr.   r“   r’   r[   é	   )r   ÚfigureZsubplots_adjustZadd_axesr   ZxaxisZset_major_locatorZMultipleLocatorZyaxisZset_ticks_positionr%   )Zdatr   r   r   r   r   Útest_clipperÔ  s    
r–   Z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   r.   r   r.   r   rU   r   r.   r.   é€   )r.   r.   r   r.   r   rU   r   r   r   Úro)r   r#   r   r   r   r&   r   r   r   Útest_para_equal_perpä  s
    r™   Z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   rf   r   rj   r   r   r   r   r&   r   r   r   Útest_clipping_with_nansî  s    
r›   c                  C   sÔ   t ddggd ƒ} t| jg d¢d�ƒ}|g ks2J ‚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sŠJ ‚t ddggd	gƒ} t| jg d¢d�ƒ}dd„ |D ƒddgd	fgksÐJ ‚d S )NgêŒ 9Y>)Fr[   )r   r   rš   rš   r2   rA   é(   éK   éA   r.   r   c                 S   s   g | ]\}}t |ƒ|f‘qS r   ©rˆ   ©Ú.0r'   r(   r   r   r   Ú
<listcomp>   ó    z&test_clipping_full.<locals>.<listcomp>c                 S   s   g | ]\}}t |ƒ|f‘qS r   rŸ   r    r   r   r   r¢     r£   )r	   rˆ   r‡   )rc   r<   r   r   r   Útest_clipping_fullù  s    ÿÿr¤   )*r…   r�   Únumpyr   Znumpy.testingr   r   r‹   Zmatplotlib.testing.decoratorsr   r   r   Zmatplotlib.pyplotZpyplotr   Z
matplotlibr   r   Zmatplotlib.pathr	   r   r)   r+   r=   rQ   rW   ÚmarkZparametrizer   re   rg   rm   ru   r}   r€   rƒ   rŠ   r‘   r–   r™   r›   r¤   r   r   r   r   Ú<module>   sP   
	
	

O&,

k
(

"

	

