o
    jZ                     @   s  d dl Z d dlZd dlZd dlmZ d dlZd dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d	d
 Zdd Zdd Zdd Zejde
g dddddfe
g dddddfe
g dddddfe
g dddddfe
g dddddfe
g dddddfgdd Zdd Ze
d d gdd gddgd dgge
je
je
je
jge
d d gd dgdd gge
je
je
jge
d dgddgge
je
j ge
dd gge
jggZ!g d!Z"ejd"e#e!e"d#d$ Z$ejd%e
j%e
j&gd&d' Z'd(d) Z(d*d+ Z)ed,gdd-e * d.krd nd/d0d1d2 Z+ed3gdd4d5d6 Z,ed7gd-d8d9d: Z-d;d< Z.d=d> Z/ed?gdd4d@dA Z0edBgdd4dCdD Z1edEgdd4dFdG Z2edHgdIdg dJe * d.krnd ndKdLdMdN Z3dOdP Z4dQdR Z5dSdT Z6dUdV Z7dWdX Z8ejdYe9dZd[ d\D d]d^ Z:ejd_e;d`dadbdcdd Z<dedf Z=dgdh Z>didj Z?dkdl Z@dmdn ZAdodp ZBdqdr ZCdS )s    N)assert_array_equal)patches)Path)Polygon)image_comparison)
transforms)
MouseEventc                  C   sL   t tddd} | jjdksJ | jd u sJ t|  jt	j
 j d S )Nr      Tclosed)r   npzerosverticesshapecodesr   get_extentsextentsr   Bboxnullpath r   [/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/matplotlib/tests/test_path.pytest_empty_closed_path   s   

r   c                     sJ   t    fdd} tt |   W d    d S 1 sw   Y  d S )Nc                      s    j d  _ d S )N       @)r   r   r   r   r   modify_vertices   s   z+test_readonly_path.<locals>.modify_vertices)r   unit_circlepytestraisesAttributeError)r   r   r   r   test_readonly_path   s
   "r!   c                  C   s"  t ddd} tjttd| j d t	|  W d    n1 s&w   Y  t dddd}tjttd|j d t	| W d    n1 sRw   Y  t ddd}t d}td|j d	|j }tjt|d t	|| W d    d S 1 sw   Y  d S )
N         z
has shape )matchr
      zYour vertices have shape z but your codes have shape )
r   arangeZreshaper   r   
ValueErrorreescaper   r   )Z
bad_verts1Z
bad_verts2Z
good_vertsZ	bad_codesmsgr   r   r   test_path_exceptions$   s(   


"r,   c                  C   sD   t g d} ddg}| |}|jdksJ tj|ddg d S )N)r   r   r      r/   r/   r/   r         ?r3   )      ?r3   boolTF)r   Z_create_closedcontains_pointsdtyper   testingassert_equal)r   pointsretr   r   r   test_point_in_path7   s
   
r<   z#other_path, inside, inverted_inside)      ?r>   )r>         ?)r?   r?   )r?   r>   r=   Tr   F)      пrA   rA         ?rC   rC   rC   rA   r@   )r@   rB   r2   rD   rE   r@   )r=   )r>         ?)rF   rF   )rF   r>   r=   r-   r.   r0   r1   r-   )r
   r
   )r
   r$   r$   r$   )r$   r
   rH   c                 C   s8   t g ddd}|| |u sJ | ||u sJ d S )NrG   Tr   )r   Zcontains_path)
other_pathinsideZinverted_insider   r   r   r   test_contains_path@   s   rL   c                  C   s4   t  } g d}| j|dd}tj|g d d S )N))        rM   )rF   rM   )?rN   g      )Zradius)TFF)r   r   r6   r   r8   r9   )r   r:   resultr   r   r   $test_contains_points_negative_radiusS   s   rP   r/   r
   ))rM   rM   r?         ?)rM   rM   rQ   r3   )rM   rQ   rQ   rQ   )rQ   r   rQ   r   zpath, extentsc                 C   s   t |  j|ksJ d S N)r   allr   r   )r   r   r   r   r   test_exact_extentsl   s   rT   ignored_codec                 C   sB   t ddgddgddggt jt j| g}t| jdksJ d S )Nr   r/   r
   )rM   rM   rQ   rQ   )r   MOVETOr   rS   r   r   )rU   r   r   r   r   test_extents_with_ignored_codesz   s   rW   c                  C   sl   t ddgddgddgddgddgg} t| }t t jdgg}||}t|dks.J |d r4J d S Nr   r/   r3   )r   arrayr   nanr6   len)boxptestcontainsr   r   r   test_point_in_path_nan   s   (
r`   c                  C   s   t  \} }|jddd |dd}| |jd| s#J | |jd| r3J | |jd| rCJ d S )	Nlogr.   )Zxscaleylimr/   
   )   r3   r2   )2   r3   )	pltsubplotssetZaxvspanget_pathZcontains_point	transData	transformZget_transform)figaxZpolygonr   r   r   test_nonlinear_containment   s   rn   zarrow_contains_point.pngZmpl20x86_64gS㥛?)remove_textstyletolc                  C   s&  t  \} }|d |d tjddddd}|| tjddd	dd}|| tjd
ddddd}|| |||g}tt	dddt	ddd\}}t
t| | D ]3\}\}	}
|j|	|
g\}}td| j||}t
|D ]\}}||\}}|r|j|	|
ddd qyq]d S )Nr	   )r3   r>   )r4   r?   z->(   )
arrowstylemutation_scale)r3   r/   )r4   rF   z]-[)r3   r4   )r4   rC   fancyF)rt   fillru   r   r
   g?Zbutton_press_eventrd   r)sc)rf   rg   set_xlimset_ylimr   ZFancyArrowPatch	add_patchr   Zmeshgridr'   	enumeratezipZravelrj   rk   r   Zcanvasr_   Zscatter)rl   rm   arrowZarrow1arrow2Zpatches_listXYkxyZxdispZydispeventmpatchrK   resr   r   r   test_arrow_contains_point   sB   





"r   zpath_clipping.svg)rp   c               	   C   s   t jdd} tg dg dg dg dg dg dg d	gD ]8\}}| d
d|d }g d}||d |d |d   ||d |d |d   |t|dddd qd S )N)g      @g@)Zfigsize)   r   r   ^    r   )r   r   )r   r   r   r   d   )r   r   r   r   r   )r   r     r   r   )r   r   r   r   r   )r   r   r   r   )r   r   r   r   r#   r
   r/   )r      i  i  r   r$   noneredT)Z	facecolorZ	edgecolorr   )rf   Zfigurer~   Zadd_subplotr{   r|   r}   r   )rl   iZxyrm   Zbboxr   r   r   test_path_clipping   s$   
r   zsemi_log_with_zero.png)rq   c                  C   s^   t dd} dd| d d   d }t \}}|j| |ddd	d
 |dd |d d S )Nirc   rQ   r
   r/      -o   r   )ZlwZmarkeredgecolorgHz>T)r   r'   rf   rg   Zsemilogyr|   gridr   r   rl   rm   r   r   r   test_log_transform_with_zero   s   r   c                  C   sz   t  } | jjdksJ t | | }|jjdksJ |jjdks"J t t dg| }|jjdks3J |jjdks;J d S )Nr	   )r   r-   )r/   r
   )r/   )r   make_compound_pathr   r   r   )emptyr2Zr3r   r   r   test_make_compound_path_empty   s   r   c                  C   sL   ddg} dt | | gt jt jgg }t j| }t|jt jkdks$J d S )Nr   r$   )r   rV   STOPr   r   sumr   )zeropathsZcompound_pathr   r   r   test_make_compound_path_stops   s   
r   zxkcd.pngc                  C   sp   t jd t ddt j d} t | }t  t \}}|	| | W d    d S 1 s1w   Y  d S )Nr   r
   r   )
r   randomseedlinspacepisinrf   xkcdrg   plotr   r   r   r   	test_xkcd   s   

"r   zxkcd_marker.pngc                  C   s   t jd t ddd} | }d|  }dt d }t * t \}}|j| |ddd |j| |ddd |j| |d	dd W d    d S 1 sKw   Y  d S )
Nr   rd            @+rc   )mso^)	r   r   r   r   onesrf   r   rg   r   )r   y1y2Zy3rl   rm   r   r   r   test_xkcd_marker  s   
"r   zmarker_paths.pdfc                  C   sD   d} t t| t| d t|  t d|  t dd d S )N   r#   )rf   Zerrorbarr   r'   r   Zxlimrb   )Nr   r   r   test_marker_paths_pdf  s   r   Znan_pathdefault)ZpdfsvgepsZpngg;On?)rq   rp   
extensionsrr   c                  C   sV   dt jdt jdddg} t jdt jddt jd	g}t \}}|| d
 ||d
 d S )Nr   r
   r#   rd   r&   r   	   rc   r"   r   )r   rZ   rf   rg   r   )Zy0r   rl   rm   r   r   r   test_nan_isolated_points  s
   r   c                  C   s*  t ddgddgddgddgdd	gd
dgddgddgddgddgddgddgddgddgddgddgdd gd!d"gd#d"gd$d%gd&d'gd(d)gg} d*\}}}}tt | d d d+f | d d d,f fjd-d.}t||g||gg}|| d, }t 	|d/ |d0 ksJ t 	|d0 |d, ksJ d S )1NgmR?gDpTU?g     ?g_9?g     ?g      ?gUUu@gF^9?g      ?g$z|?g["8j@gUU@ga1?g["8@g}LRJ?gDpTU?gmR?g      @g=:r9?g["8@gAL0 @gUU@gy?gI?g9 @g["8
@g_9@g     @gB@gUU@gq1Pc1@g     @?ghs@gUU@gA!@gmR@g     @gbc@g     @?g9qa @gI?)rQ   r4   g @r   r/   r   Tr   r   )
r   rY   r   ZvstackTr   r   Zclip_to_bboxto_polygonsrS   )handZr0Zc0r1c1ZpolyZ	clip_rectZpoly_clippedr   r   r   (test_path_no_doubled_point_in_to_polygon*  s>   0r   c                  C   s   ddgddgg} t | }t|jdddg  t|jdddd| g t| g  t|jdd| g ddgddgddgg} ddgddgddgddgg}t | }t|jddd|g t|jdddd| g t| |g t|jdd| g d S )	Nrc   r   rs   )widthheightF)r   r   closed_only)r      )r   r   r   )datar]   Zclosed_datar   r   r   test_path_to_polygonsM  s"   r   c                  C   s   ddgddgg} t jt jg}t | dd}t | |dd}| }| }||us)J |j|jus1J t|j|j |js=J |jrBJ ||usHJ |j|jusPJ t|j|j |j|jus_J t|j|j |jskJ |jrpJ d S )Nr   r/   Treadonly)r   rV   LINETOdeepcopyr   r   r   r   Zvertsr   Zpath1Zpath2Z
path1_copyZ
path2_copyr   r   r   test_path_deepcopyb  s$   


r   c                  C   s   G dd dt } | ddgddggdd}| }||usJ |js#J |jr(J |j|u s/J G dd dt }|ddgddggdd}| }||usMJ |jsRJ |jrWJ |jd |u s`J |jd |u siJ d S )	Nc                          e Zd Z fddZ  ZS )z/test_path_deepcopy_cycle.<locals>.PathWithCyclec                    s   t  j|i | | | _d S rR   super__init__r   selfargskwargs	__class__r   r   r   z  s   
z8test_path_deepcopy_cycle.<locals>.PathWithCycle.__init____name__
__module____qualname__r   __classcell__r   r   r   r   PathWithCycley      r   r   r/   Tr   c                       r   )z0test_path_deepcopy_cycle.<locals>.PathWithCycle2c                    s"   t  j|i | | gd | _d S )Nr
   r   r   r   r   r   r     s   z9test_path_deepcopy_cycle.<locals>.PathWithCycle2.__init__r   r   r   r   r   PathWithCycle2  r   r   )r   r   r   r   )r   r]   Zp_copyr   Zp2Zp2_copyr   r   r   test_path_deepcopy_cyclex  s   



r   c                  C   s   ddgddgg} t jt jg}t | }t | |}| }| }||us%J |j|ju s-J ||us3J |j|ju s;J |j|ju sCJ d S )Nr   r/   )r   rV   r   copyr   r   r   r   r   r   test_path_shallowcopy  s   
r   phic                 C   s   g | ]}t g d | qS ))
r   r   r   -   <   K   Z   i   x      )r   rY   ).0deltar   r   r   
<listcomp>  s    r   )r   r   r/   c                 C   sx  g d}t  t| }tddg}||}||r#||s%J tddg}||}||r:||s<J |tddg}|tddg}||rX||sZJ |tddg}|tddg}||rv||sxJ ||sJ |tdd	g}|td
dg}||r||sJ |tddg}|tddg}||s||rJ |tddg}|tddg}||s||rJ |D ]*}|tddg}|td| dfd| dfg}||s||rJ q|D ]'}|tddg}|tdd| fdg}||s,||r.J q|D ]'}|tddg}|tdd| fdg}||rV||sXJ q2|tddg}|tg d}||rx||szJ |tddg}|tddg}||s||rJ |tddg}|tddg}||s||rJ d S )N)gh㈵>g:0yE>g|=g-q=)r   r   )r
   r   r-   r.   )r   r$   )r/   r$   r   rd   )rd   rd   r0   rI   )r$   r   )r   r&   )r   r   r   r/   rd   )r.   r	   r   )r/   r   )r   r   )rN   r/   )rM         )rQ   r   )rQ         @)rM   r   )r   ZAffine2Drotater   Zdeg2radr   Ztransform_pathintersects_path)r   Z	eps_arrayrk   abr   r   r   r   test_path_intersect_path  sZ   

"   r  offseti0ii  r   c                 C   sX   | }d|  }t ||}tj|jdd}tj|jdd}tj|d tj|d d S )Nih  r   )Zaxisr   r/   )r   arcr   minr   maxr8   assert_allclose)r  lowhighr   ZminsZmaxsr   r   r   test_full_arc  s   r
  c               	   C   s   t tddgddgddgddgddggtjg d	t jd
} t tddgddgddgddgddggtjg dt jd
}|| rEJ | |rLJ d S )NgƉ@g퟇@gЅ@g@g`m$@g;E@g6[@gч61@)r/   r
   r
   r
   O   )r7   g-Hߊ@gGN@g`؊@g{Kʠ@g
@)r/   r
   r
   r
   r
   )r   r   rY   Z	code_typer   Z	this_pathZoutline_pathr   r   r   !test_disjoint_zero_length_segment  s0   	

r  c                  C   s`   t tddgddgg} t tddgddgddgddgg}|| s'J | |s.J d S rX   )r   r   rY   r   r  r   r   r   "test_intersect_zero_length_segment  s    r  c                  C   s   t tjtjgtjtjggt jt jgt tjtjgtjtjggt tjtjgtjtjgtjtjgtjtjggt jt jt jt jgg} | D ]}|jdd}t|dksSJ |jd t j	ks]J qCd S )NT)Zremove_nansr/   r   )
r   r   rZ   rV   	CLOSEPOLYCURVE3cleanedr[   r   r   )r   r]   r  r   r   r   test_cleanup_closepoly-  s   
 
r  c               	   C   s   t ddgddgddgddgddgddgg} tjtjtjgd }t| |}|d}tjgtjgd  }t j|j|d  d S )Nr   r/   r
   r#   rd   r$   r&   )	r   rY   r   rV   r   interpolatedr8   r   r   )r   r   r   rO   Zexpected_subpath_codesr   r   r   test_interpolated_movetoD  s   


r  c               
   C   s*  t jgt jgd  t jg } g d}t || }|d}tddgddgddgddgddgddgddgg}t jgt jgd  t jg }tj|j	| tj
|j| | t jg7 } |dg7 }t || }|d}tddgdd	gg}t||g}|t jgd 7 }tj|j	| tj
|j| d S )
Nr
   )r#   r$   rd   r#   rd   r$   r-   r#   r$         @      @rd   )r
   r/   r/   )r   rV   r   r  r  r   rY   r8   r  r   r   r   concatenate)r   r   r   rO   expected_verticesexpected_codesZextra_expected_verticesr   r   r   test_interpolated_closepolyV  s4   






r  c               
   C   s   t jgt jgd  t jg d } g d}t || }|d}tddgddgddgddgddgddgddgg}t||d g}t jgt jgd  t jg d }tj	|j
| tj|j| d S )Nr
   )r  r  r  r-   )r   r&   )rc   r   )rc   r&   r-   r#   r$   r  r  rd   )r   rV   r   r  r  r   rY   r  r8   r  r   r   r   )r   r   r   rO   Zexpected_vertices1r  r  r   r   r   "test_interpolated_moveto_closepolyz  s     


 r  c                  C   s$   t td} | d| u sJ d S )Nr	   *   )r   r   r   r  r   r   r   r   test_interpolated_empty_path  s   r   )Dplatformr)   numpyr   Znumpy.testingr   r   Z
matplotlibr   Zmatplotlib.pathr   Zmatplotlib.patchesr   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotrf   r   Zmatplotlib.backend_basesr   r   r!   r,   r<   markZparametrizerL   rP   rV   ZCURVE4r  r   Z_test_pathsZ_test_path_extentsr   rT   r  r   rW   r`   rn   machiner   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  ranger
  r  r  r  r  r  r  r   r   r   r   r   <module>   s    
	

&

		

%


	





#
Q
$