a
    ëÝEb±E  ã                   @   s®  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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"d#�d$d%„ ƒZ(ed&gd!d'�d(d)„ ƒZ)ed*gd"d+�d,d-„ ƒZ*d.d/„ Z+d0d1„ Z,ed2gd!d'�d3d4„ ƒZ-ed5gd!d'�d6d7„ ƒZ.ed8gd!d'�d9d:„ ƒZ/ed;gd<d!g d=¢d>�d?d@„ ƒZ0dAdB„ Z1dCdD„ Z2dEdF„ Z3dGdH„ Z4ej  dIe 5dJdK„ dLD ƒ¡¡dMdN„ ƒZ6ej  dOe7dPdQdRƒ¡dSdT„ ƒZ8dUdV„ Z9dWdX„ Z:dYdZ„ Z;d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 s0J ‚t|  ¡ jt	j
 ¡ jƒ d S )N©r   é   T©Úclosed)r   ÚnpZzerosÚverticesÚshapeÚcodesr   Úget_extentsÚextentsr   ÚBboxÚnull©Úpath© r   úZ/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_path.pyÚtest_empty_closed_path   s    

ÿr   c                     sH   t  ¡ ‰ ‡ fdd„} t t¡� | ƒ  W d   ƒ n1 s:0    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 sL0    Y  t  d¡ ddd¡}tjtt d|j› �¡d�� t	|ƒ W d   ƒ n1 s¤0    Y  t  d¡ dd¡}t  d¡}t d|j› d	|j› �¡}tjt|d�� t	||ƒ W d   ƒ n1 �s0    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   sJ   g d¢} t | dd�}ddg}| |¡}|jdks4J ‚tj |ddg¡ d S )N)©r   r   ©r   é   ©r.   r.   )r.   r   r,   Tr   ©ç      à?r1   )ç      ø?r1   ÚboolF)r   Úcontains_pointsÚdtyper   ÚtestingÚassert_equal)Zverts2r   ÚpointsÚretr   r   r   Útest_point_in_path6   s    
r:   c                  C   s4   t  ¡ } g d¢}| j|dd�}tj |g d¢¡ d S )N))ç        r;   )ç      ô?r;   )çÍÌÌÌÌÌì?r=   g      à¿)Zradius)TFF)r   r   r4   r   r6   r7   )r   r8   Úresultr   r   r   Ú$test_contains_points_negative_radiusA   s    r?   r.   r
   ))r;   r;   ç      è?ç      ð?)r;   r;   rA   r1   )r;   rA   rA   rA   )rA   r   rA   r   zpath, extentsc                 C   s   t  |  ¡ j|k¡sJ ‚d S )N)r   Úallr   r   )r   r   r   r   r   Útest_exact_extentsZ   s    rC   Ú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
   )r;   r;   rA   rA   )r   ÚMOVETOr   rB   r   r   )rD   r   r   r   r   Útest_extents_with_ignored_codesh   s    þþrF   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 rhJ ‚d S ©Nr   r.   r1   )r   Úarrayr   Únanr4   Úlen)ÚboxÚpÚtestÚcontainsr   r   r   Útest_point_in_path_nanr   s    (
rO   c                  C   s„   t  ¡ \} }|jddd� | dd¡}| ¡  |j d¡|j¡sDJ ‚| ¡  |j d¡|j¡rbJ ‚| ¡  |j d¡|j¡r€J ‚d S )	NÚlogr-   )ZxscaleÚylimr.   é
   )é   r1   r0   )é2   r1   )ÚpltÚsubplotsÚsetZaxvspanÚget_pathZcontains_pointÚ	transDataÚ	transform)ÚfigÚaxZpolygonr   r   r   Útest_nonlinear_containment{   s    ÿÿÿr]   zarrow_contains_point.pngTZmpl20)Úremove_textÚstylec                  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 ]f\}\}	}
|j |	|
g¡\}}td| j||ƒ}t
|ƒD ],\}}| |¡\}}|rò|j|	|
ddd� qòqºd S )Nr	   )r1   g      Ð?)r2   r@   z->é(   )Ú
arrowstyleÚmutation_scale)r1   r.   )r2   r<   z]-[)r1   r2   )r2   g      ü?ÚfancyF)ra   Úfillrb   r   r
   gš™™™™™¹?Zbutton_press_eventrS   Úr)ÚsÚc)rU   rV   Úset_xlimÚset_ylimr   ZFancyArrowPatchÚ	add_patchr   Zmeshgridr&   Ú	enumerateÚzipZravelrY   rZ   r   ZcanvasrN   Zscatter)r[   r\   ÚarrowZarrow1Úarrow2Zpatches_listÚXÚYÚkÚxÚyZxdispZydispÚeventÚmÚpatchZinsideÚresr   r   r   Útest_arrow_contains_point‡   s<    

þ
þ
ý

ÿ"rx   zpath_clipping.svg)r^   c               	   C   s´   t jdd�} tg d¢g d¢g d¢g d¢g d¢g d¢g d	¢gƒD ]p\}}|  d
d|d ¡}g d¢}| |d |d |d  ¡ | |d |d |d  ¡ | t|dddd�¡ q>d S )N)g      @gÍÌÌÌÌÌ@)Zfigsize)©éÈ   rz   ©rz   é^  ©é�  r|   )r~   rz   )ry   r{   r}   ©r~   éd   )©rz   r€   r{   r}   r   )r�   ©rz   éŸ  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   )rU   Úfigurerk   Zadd_subplotrh   ri   rj   r   )r[   ÚiZxyr\   Zbboxr   r   r   Útest_path_clipping®   s"    ùÿrŠ   zsemi_log_with_zero.png)r_   c                  C   s^   t  dd¡} dd| d d   d }t ¡ \}}|j| |ddd	d
� | dd¡ | d¡ d S )NiöÿÿÿrR   rA   r
   r.   é   ú-oé   rq   )ZlwZmarkeredgecolorgH¯¼šò×z>T)r   r&   rU   rV   Zsemilogyri   Úgrid©rr   rs   r[   r\   r   r   r   Útest_log_transform_with_zeroÂ   s    r�   c                  C   s   t  ¡ } | jjdksJ ‚d S )Nr	   )r   Úmake_compound_pathr   r   )re   r   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sHJ ‚d S )Nr   r#   )r   rE   ÚSTOPr‘   r   Úsumr   )ÚzeroÚpathsZcompound_pathr   r   r   Útest_make_compound_path_stopsÔ   s    
r—   zxkcd.pngc                  C   sn   t j d¡ t  ddt j d¡} t  | ¡}t ¡ �( t ¡ \}}| 	| |¡ W d   ƒ n1 s`0    Y  d S )Nr   r
   r€   )
r   ÚrandomÚseedÚlinspaceÚpiÚsinrU   ÚxkcdrV   Ú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 ¡ �R t ¡ \}}|j| |ddd� |j| |ddd� |j| |d	dd� W d   ƒ n1 s”0    Y  d S )
Nr   rS   é   ç      @ú+rR   )ÚmsÚoú^)	r   r˜   r™   rš   ÚonesrU   r�   rV   rž   )rr   Úy1Úy2Zy3r[   r\   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"   éÿÿÿÿ)rU   Zerrorbarr   r&   r¦   ZxlimrQ   )ÚNr   r   r   Útest_marker_paths_pdfù   s    þr­   Znan_pathÚdefault)ZpdfÚsvgÚepsZpng)r_   r^   Ú
extensionsc                  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"   rS   r%   rª   é	   rR   r!   rŒ   )r   rI   rU   rV   rž   )Zy0r§   r[   r\   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¡�sJ ‚t  	|d0 |d, k¡�s*J ‚d S )1Ngm¥”Rú?g·DpTU•ò?g     €ù?g�_9çœõ?g     Àþ?g      ö?g¥ÝÇUUu@gF^9ï½÷ú?g      ÿ?g$z|ï½ù?g["8ªªj@g¥ÝÇUU•@gƒ˜øaŒ1ü?g["8ªªŠ@g²}L”RJý?g·DpTU•ÿ?gm¥”Rþ?g      @g=:¿rÎ9ÿ?g["8ªªÊ@gALü0Æ @g¥ÝÇUU@gyå¼÷Þÿ?gI»�«ªêÿ?g¿³Ï9ç @g["8ªª
@g�_9çœ@g     à@gº¡ÆB@g¥ÝÇUUÕ@gq1PcŒ1@g     @ÿ?ghÖæœs@g¥ÝÇUUõ@güíÂA!@gm¥”R@g     €@gáb Æc@g     @û?g9ìßqaŸ @gI»�«ªªò?)rA   r2   gÍÌÌÌÌÌ @r¡   r.   r   Tr   éþÿÿÿr«   )
r   rH   r   ZvstackÚTr   r   Zclip_to_bboxÚto_polygonsrB   )Ú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 )	NrR   r‹   r`   )ÚwidthÚheightF)r»   r¼   Úclosed_only)r½   é   )r   r   r¶   )ÚdatarL   Zclosed_datar   r   r   Útest_path_to_polygons4  s"    ÿÿrÀ   c                  C   sŠ   ddgddgg} t jt jg}t | ƒ}t | |ƒ}| ¡ }| ¡ }||usJJ ‚|j|jusZJ ‚||usfJ ‚|j|jusvJ ‚|j|jus†J ‚d S ©Nr   r.   )r   rE   ÚLINETOÚdeepcopyr   r   ©Zvertsr   Zpath1Zpath2Z
path1_copyZ
path2_copyr   r   r   Útest_path_deepcopyI  s    
rÅ   c                  C   sŠ   ddgddgg} t jt jg}t | ƒ}t | |ƒ}| ¡ }| ¡ }||usJJ ‚|j|ju sZJ ‚||usfJ ‚|j|ju svJ ‚|j|ju s†J ‚d S rÁ   )r   rE   rÂ   Úcopyr   r   rÄ   r   r   r   Útest_path_shallowcopyX  s    
rÇ   Úphic                 C   s   g | ]}t  g d ¢¡| ‘qS ))
r   r�   r¾   é-   é<   éK   éZ   éi   éx   é‡   )r   rH   )Ú.0Údeltar   r   r   Ú
<listcomp>g  s   ÿrÒ   )r«   r   r.   c                 C   s†  g d¢}t  ¡  t | ¡¡}tddgƒ}| |¡}| |¡rF| |¡sJJ ‚tddgƒ}| |¡}| |¡rt| |¡sxJ ‚| tddgƒ¡}| tddgƒ¡}| |¡r°| |¡s´J ‚| tddgƒ¡}| tddgƒ¡}| |¡rì| |¡sðJ ‚| |¡sþJ ‚| tdd	gƒ¡}| td
dgƒ¡}| |¡�r:| |¡�s>J ‚| tddgƒ¡}| tddgƒ¡}| |¡�sz| |¡�r~J ‚| tddgƒ¡}| tddgƒ¡}| |¡�sº| |¡�r¾J ‚|D ]V}| tddgƒ¡}| td| dfd| dfgƒ¡}| |¡�s| |¡�rÂJ ‚�qÂ|D ]N}| tddgƒ¡}| tdd| fdgƒ¡}| |¡�sf| |¡�rJ ‚�q|D ]N}| tddgƒ¡}| tdd| fdgƒ¡}| |¡�rº| |¡�srJ ‚�qr| tddgƒ¡}| tg d¢ƒ¡}| |¡�rþ| |¡�sJ ‚| tddgƒ¡}| tddgƒ¡}| |¡�s>| |¡�rBJ ‚| tddgƒ¡}| tddgƒ¡}| |¡�s~| |¡�r‚J ‚d S )N)gñhãˆµøä>g:Œ0âŽyE>g»½×Ùß|Û=gê-�™—q=)r´   r   )r
   r   r,   r-   )r   r#   )r.   r#   ©r   rS   )rS   rS   r/   )r#   r#   )r#   r   )r   r%   )r   rª   r   r.   rS   )r-   r	   rÓ   )r.   r«   )r   r«   )r=   r.   )r;   ç      À)rA   rÔ   )rA   ç      @)r;   rÕ   )r   ZAffine2DÚrotater   Zdeg2radr   Ztransform_pathÚintersects_path)rÈ   Z	eps_arrayrZ   ÚaÚbr°   r   r   r   Útest_path_intersect_pathg  sZ    

"   rÚ   Úoffseti0ýÿÿii  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   Úmaxr6   Z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
�ƒ}| | ¡rŠJ ‚|  |¡r˜J ‚d S )Ng•äÎÆ‰@g¤›íŸ‡ @g¿¼�Ð…íŠ@g®ƒÿ„äŸ@g`m”¡$‹@gêÉ;E @g6ÇÚ[éý‰@gÑ‡6Ê1 @)r.   r
   r
   r
   éO   )r5   g-�¹HßŠ@gG�NìÄê @güê`³ŠØŠ@g{×âK›Ê @gù¸ºŒî
¡@)r.   r
   r
   r
   r
   )r   r   rH   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¡ƒ}| | ¡sNJ ‚|  |¡s\J ‚d S rG   )r   r   rH   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 ]4}|jdd�}t|ƒdks¦J ‚|jd t j	ks†J ‚q†d S )NT)Zremove_nansr.   r   )
r   r   rI   rE   Ú	CLOSEPOLYÚCURVE3ÚcleanedrJ   r   r“   )r–   rL   rè   r   r   r   Útest_cleanup_closepolyò  s    
ÿ 
ÿþøré   )<r(   Únumpyr   Znumpy.testingr   r   Z
matplotlibr   Zmatplotlib.pathr   Zmatplotlib.patchesr   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotrU   r   Zmatplotlib.backend_basesr   r   r    r+   r:   r?   rE   ZCURVE4rç   rÂ   Z_test_pathsZ_test_path_extentsÚmarkZparametrizerl   rC   ræ   r“   rF   rO   r]   rx   rŠ   r�   r’   r—   rŸ   r©   r­   r³   rº   rÀ   rÅ   rÇ   ZconcatenaterÚ   Úrangerá   rä   rå   ré   r   r   r   r   Ú<module>   s|   

ÿ&÷

		ÿ
%


	




ÿ
#þ
Q
