o
    jBT                     @   s  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d	d
 Zedgde dkrQd n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d0d1 Z%d2d3 Z&d4d5 Z'ed6gddd7d8 Z(ed9gddd:d; Z)ed<gd=d> Z*d?d@ Z+dAdB Z,dS )C    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               @{Gz?         ?)	linewidth)gɿgQѿ)nparangesinpipltsubplotsplotset_ylim)tsfigax r   e/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_simplification.pytest_clipping   s
   r   overflowx86_64gy&1|?)r
   Ztolc                  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   g333333g333333?)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sJ 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/   )
   r1      r2   Zclipr-   )r-   r.   )r      )	r	   cleanedr   verticescodesSTOPMOVETOLINETOCURVE3)path
simplifiedZsimplified_clippedr   r   r   test_clipping_out_of_bounds5   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  size2   roundr   Zsolid_joinstyler   Tsimplifyic  )r   randomseeduniformr   r   r   canvasdrawget_pathget_transformtransform_pathr5   r6   rA   r(   r   r   p1r<   	transformr=   r   r   r   
test_noiseL   s   

rR   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   TrE   )r   r   r   rL   rM   rN   r5   inverted)r(   r)   r   r   rP   r<   rQ   r=   r   r   r   _get_simplified^   s   
z9test_antiparallel_simplification.<locals>._get_simplified)r   r   r   r   r   r/   )      ?r/   r/   r   rU   r   rU   r+   r   r   )rU   r/   rV   r/   rW   rU   g       )rU   r/   rV   r/   r   rU   )rU   r/   r   r/   r4   rU   r"   )rU   r/   r   r/   r/   rU   )r   r6   )rT   r(   r)   r=   r   r   r    test_antiparallel_simplification]   sf   




rX   angle   r4   r   offsetrU   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   r/   rV   )r/   r   r   r   r   )r7   )r/   r   r   r   TrE   )r   rG   rH   randr   cosmaxminr	   ZvstackTr5   r   r6   r   r7   )rY   r[   scaleZvert_offsetsr(   r)   Zx_maxZx_minZy_maxZy_minZ
p_expectedpZ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sNJ d S )Nr   r   r?   r@   r   rC   rD   TrE   ib  )r   rG   rH   r   linspacer   rI   r   r   r   rJ   rK   rL   rM   rN   r5   r6   rA   rO   r   r   r   test_sine_plus_noise   s   

rg   Zsimplify_curveg rh?c                  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)fc)r   r   )r   	PathPatchr	   r   nanr9   r;   	CLOSEPOLYr   r   	add_patchr&   r   )Zpp1r   r   r   r   r   test_simplify_curve   s   

rq   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 qNt|  t| d S )Nr   r4   r   rk   Z	facecolorrW   r/   rV   )g      g      @)Zxlimylim)r   flattenr	   r   rn   r9   r:   ro   rp   r   rm   r;   ZCURVE4Zflatsetr   )fig_testfig_refZax_testZax_refr<   r   r   r   r   test_closed_path_nan_removal   s   "$""  " ((((......ry   c              
   C   sR  g }t dD ]J}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axisrV   )r\   r\   rk   rs   )ranger   rollZconcatenateappendfullr%   r	   r:   r9   ro   ZtileZset_size_inchesZ
add_artistr   rm   copy)rw   rx   r6   r|   r[   patternr7   r<   r   r   r   test_closed_path_clippingg  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   rp   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sKJ d S )Ni   r   r   r   TrE   $   )r   r   r   r   r   absZfftr   r   Zblackmanr%   rJ   rK   rL   rM   rN   r5   r6   rA   )r   r   r   rP   r<   rQ   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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)Zdtyper   )r   r         Y@r   r3   r/   r   )r   Z
frombufferbase64decodebytesZreshaper%   r	   iter_segmentsr   ZIdentityTransformlistr9   )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    d S 1 s9w   Y  d S )NFzpath.simplifyi i  )r   ZrcParamsr   r   rG   r^   rn   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   r4   r   rZ   r   r\   r0   )Zfigsizer   )leftbottomZwspaceZhspace)r   r   r   r   )r   r\   F)rt   Zautoscale_onr/   r   r   r\   	   )r   Z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   rV   r   r/   r/      )r/   r/   r   r/   r   rV   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   rn   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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>)Fr\   )r   r   r   r   r3   rB   (   K   A   r/   r   c                 S      g | ]
\}}t ||fqS r   r   .0r(   r)   r   r   r   
<listcomp>      z&test_clipping_full.<locals>.<listcomp>c                 S   r   r   r   r   r   r   r   r     r   )r	   r   r   )rd   r=   r   r   r   test_clipping_full  s   r   c                  C   s
  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 ]}|jdd}t|j	|j	 t|j
|j
 q9t 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
}|jd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
}|jdd}t|j	|j	 t|j
|j
 d S )Nri   r0   rj   )ri   r0   rj   )r   rB   )ri   r0   rj   ri   ri   r-   TrE   rV   r   rW   r   rW   r/   )
ri   r0   rj   ri   r   r   r   r   r   r-   rh   )r/   rV   )r   rV   )rV   rV   )rV   r/   )r   rV   r-   )r	   r   rn   r9   r:   ro   r8   r5   r   r6   r7   )pathsZexpected_pathr<   Zsimplified_pathr   r   r   test_simplify_closepoly  sj   r   )-r   r   platformnumpyr   Znumpy.testingr   r   r   Zmatplotlib.testing.decoratorsr   r   r   Zmatplotlib.pyplotZpyplotr   Z
matplotlibr   r   Zmatplotlib.pathr	   r   machiner*   r,   r>   rR   rX   markZparametrizer   re   rg   rq   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sZ    
	
	

&O,

k
(

"

	

