a
    s=icá/  ã                   @   s"  d Z ddlZddlZddlmZ ddlmZ ddlZddlm	Z	 ddl
Z
ddl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mZ d	d
„ Ze
jjdddd„ ƒZ dd„ Z!edgdddd„ ƒZ"dd„ Z#dd„ Z$dd„ Z%dd„ Z&edgdddd „ ƒZ'ed!d"d#d$„ ƒZ(d%d&„ Z)d'd(„ Z*ed)gdd*d+d,d-„ ƒZ+ed.gddd/d0„ ƒZ,d1d2„ Z-ed3gd4d5d6d7„ ƒZ.d8d9„ Z/eƒ d:d;„ ƒZ0e
j 1d<d=d>g¡ed!d"d?d@„ ƒƒZ2dAdB„ Z3dCdD„ Z4edEgdd*d+dFdG„ ƒZ5eƒ dHdI„ ƒZ6dJdK„ Z7eƒ dLdM„ ƒZ8edNgd"dOdP„ ƒZ9dS )Qz%
Tests specific to the lines module.
é    N)ÚSimpleNamespace)Úcycler)Úassert_array_equal)ÚMarkerStyle)ÚPath)Úimage_comparisonÚcheck_figures_equalc                  C   sH   d\} }t  ddg¡t  ddg¡ }}d}tt | ||||¡dgƒ dS )zTest a problematic case.)i)  i†  g     H@g     ÀW@g     ˜@gÃõ(\Â@r   N)ÚnpÚarrayr   ÚmlinesZsegment_hits)ZcxÚcyÚxÚyZradius© r   úl/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/matplotlib/tests/test_lines.pyÚtest_segment_hits   s    r   é   )Zrerunsc            
      C   sœ   d} t  dd| ¡}t jj| d}t ¡ }t ¡ }t ||¡}| 	d¡ t
tj|jjdddƒ}| |¡ t
tj|jjdddƒ}|| }d}	||	k s˜J ‚d	S )
ac  
    GitHub issue #1256 identified a bug in Line.draw method

    Despite visibility attribute set to False, the draw method was not
    returning early enough and some pre-rendering code was executed
    though not necessary.

    Consequence was an excessive draw time for invisible Line instances
    holding a large number of points (Npts> 10**6)
    i€–˜ r   é   ©ÚsizeFr   )ÚnumberÚrepeaté   N)r	   ÚlinspaceÚrandomÚnormalÚpltÚfigureZsubplotr   ÚLine2DZset_visibleÚminÚtimeitr   ÚcanvasÚdrawÚadd_line)
ÚNr   r   ÚfigÚaxÚlZ	t_no_lineZt_invisible_lineZslowdown_factorZslowdown_thresholdr   r   r   Útest_invisible_Line_rendering"   s    

r(   c                  C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd d S ©Nr   é   é   ©r   )r   r   )Z
linestyles©r   Úsubplotsr	   r   ÚseedZcontourZrandn©r%   r&   r   r   r   Útest_set_line_coll_dashN   s    r1   Zline_dashesT)Úremove_textc                  C   s$   t  ¡ \} }|jtdƒddd d S )Né
   r,   é   ©Ú	linestyleÚlw)r   r.   ÚplotÚranger0   r   r   r   Útest_line_dashesV   s    r:   c                  C   st   t  ¡ \} }|jtdƒdd |jtdƒdd |jtdƒdd |jtdƒdd |jtdƒdd | j ¡  d S )Nr3   Únone)ÚcolorÚrz.3)r   r   r   r   )r   r   r   ©r   r.   r8   r9   r!   r"   r0   r   r   r   Útest_line_colors]   s    r?   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S ©NZfoobar)r   r   ÚpytestÚraisesÚ
ValueErrorZ	set_color©Úliner   r   r   Útest_valid_colorsg   s    rF   c                  C   sP   t  ¡ \} }ddddddddd	d
dg ffD ]}|jtdƒ|d q*| j ¡  d S )Nú-Zsolidú--Údashedz-.Údashdotú:Údotted)r   N)r   r   r   r3   )r6   r>   )r%   r&   Úlsr   r   r   Útest_linestyle_variantsm   s    
þrN   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S )NZaardvark)r   r   rA   rB   rC   Zset_linestylerD   r   r   r   Útest_valid_linestylesw   s    rO   zdrawstyle_variants.pngc                  C   sP   t  d¡\} }g d¢}t|j|ƒD ](\}}|jtdƒ|d |jddd q"d S )Né   )Údefaultz	steps-midú	steps-prez
steps-postÚstepsNéÐ  ©Z	drawstyle)r   r   )ZxlimZylim)r   r.   ÚzipÚflatr8   r9   Úset)r%   ÚaxsZdssr&   Zdsr   r   r   Útest_drawstyle_variants}   s
    rZ   )Úpng)Ú
extensionsc                 C   sT   |   ¡ }t d¡}| |d |¡ |  ¡ }t ¡  dd¡}|j||||j d d S )NrT   g     @Ÿ@ç        )Z	transform)Úadd_subplotr	   Úaranger8   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr&   r   Útr   r   r   Útest_no_subslice_with_transformŠ   s    
re   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S r@   )r   r   rA   rB   rC   Úset_drawstylerD   r   r   r   Útest_valid_drawstyles•   s    rg   c                  C   sŒ   t  ddt j d¡} t  | ¡}t ¡ \}}| | |¡\}| d¡ t| 	¡ j
ƒdt| ƒ d ksdJ ‚| d¡ t| 	¡ j
ƒt| ƒksˆJ ‚d S )Nr   r   r3   rR   r   rQ   )r	   r   ÚpiÚsinr   r.   r8   rf   ÚlenÚget_pathÚvertices)r   r   r%   r&   rE   r   r   r   Útest_set_drawstyle›   s    

"
rm   Zline_collection_dashesZmpl20)r2   Ústylec                  C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd d S r)   r-   r0   r   r   r   Útest_set_line_coll_dash_image¨   s    ro   zmarker_fill_styles.pngc                  C   sÞ   t  g d¢dddddt g d¢¡g¡} d}t d	d	g¡}t d
dg¡}t ¡ \}}ttjj	ƒD ]^\}}ttjj
ƒD ]H\}}	t| ƒ}
|j|d | || d|d   |d||	|	d|
|
dd qrq^| d
dg¡ | ddg¡ d S )N©r   r   r   Úgz#ff0000ÚcÚmr   )r   r   r   Z
lightgreenr   r   é	   r3   ç      à?r   r*   r4   )	ÚmarkerZ
markersizeZmarkerfacecoloraltÚ	fillstyleÚlabelZ	linewidthr<   ZmarkeredgecolorZmarkeredgewidthg      @éûÿÿÿé›   )Ú	itertoolsÚcycler	   r
   r   r.   Ú	enumerater   r   Zfilled_markersZ
fillStylesÚnextr8   Zset_ylimZset_xlim)ÚcolorsZaltcolorr   r   r%   r&   Újrv   ÚiÚfsr<   r   r   r   Útest_marker_fill_styles¯   s.    ÿ ÷
rƒ   c                  C   sB   t jg d¢tddddd\} |  ¡ dks.J ‚|  ¡ dks>J ‚dS )z=Test that markerfacecolor does not override fillstyle='none'.©r   r   r   Úor;   )rw   Úred)rv   ZmarkerfacecolorN)r   r8   r   Zget_fillstyleZget_markerfacecolor)r'   r   r   r   Útest_markerfacecolor_fillstyleË   s
    ÿr‡   Zscaled_linesrQ   )rn   c            	      C   sŽ   t  dd¡} t ¡ \}}g d¢}ttjd ƒ}tt||ƒƒD ]L\}\}}t  ddd¡D ]0}|j	| |t  
d¡ d|  f||d	œ|¤Ž qVq<d S )
Nr   é    )rI   rL   rJ   úaxes.prop_cycleru   r3   é2   çš™™™™™¹?r5   )r	   r   r   r.   r   Ú
matplotlibÚrcParamsr}   rV   r8   Zones)	Úthr%   r&   Zlins_stylesr   r€   rM   Zstyr7   r   r   r   Útest_lw_scalingÓ   s    r   c                  C   sj   t  g g ¡} |  t g d¢¡¡s$J ‚|  t dtjdg¡¡s@J ‚|  ddgtjgd  ddg ¡rfJ ‚d S )N©r   r   r   r   r   r4   éd   r   r   )r   r   Z
_is_sortedr	   r
   ÚnanrD   r   r   r   Útest_nan_is_sortedÞ   s    r“   c                 C   s:   |   ¡  ddgd¡ |  ¡ jg d¢g d¢dddgd d S )Nr   r   z-orp   )r   r   r   r   ©Ú	markevery)r.   Ústepr8   ©rc   rb   r   r   r   Útest_step_markerså   s    r˜   Úparentr   Úaxesc              
      s8  t j d¡ t  ddd¡}t j t|ƒ¡}d ddg d¢ddgtd	d
dƒt  t|ƒ¡|dk ddg	}g d¢}|dkr¤|d d… }|d d… }‡fdd„}‡fdd„}nD|dkrètˆ 	dd¡j
ƒ‰tˆ 	dd¡j
ƒ‰ ‡fdd„}‡ fdd„}|D ]}	||||	d qì|D ].}	t  t|	ƒ¡ t¡ t¡}
||||
d qd S )Né*   r   r   é   é   )r   r4   )r   r4   é   éÿÿÿÿr4   r3   r   ru   ç333333Ó?)r    gš™™™™™Ù?)	Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   éþÿÿÿc                   s   ˆ   tj| |d|d¡ d S ©Nr…   ©rv   r•   ©Ú
add_artistr   r   ©r   r   r•   )rc   r   r   Úadd_testÿ   s    ÿz test_markevery.<locals>.add_testc                   s   ˆ   tj| |d|d¡ d S r¢   r¤   r¦   )rb   r   r   Úadd_ref  s    ÿztest_markevery.<locals>.add_refrš   r   c                   s   t ˆ ƒj| |d|d d S ©Nz-gDr”   ©r~   r8   r¦   )Úaxs_testr   r   r§     s    c                   s   t ˆ ƒj| |d|d d S r©   rª   r¦   )Úaxs_refr   r   r¨     s    r”   )r	   r   r/   r   Zrandrj   Úslicer_   Úiterr.   rW   r
   ÚlistZastypeÚintÚbool)rc   rb   r™   r   r   Z
cases_testZ	cases_refr§   r¨   ÚcaseÚmer   )r¬   r«   rb   rc   r   Útest_markeveryë   s0    ýr´   c                  C   s`   t  ¡ } |  tjddgddgddd¡ t t¡ | j 	¡  W d   ƒ n1 sR0    Y  d S )Nr   r   r…   ru   r£   )
r   r   r¥   r   r   rA   rB   rC   r!   r"   )r%   r   r   r   Ú.test_markevery_figure_line_unsupported_relsize  s     rµ   c                  C   sÞ   t  ¡ \} }|jg d¢tdƒd\}| j ¡  | ¡ dks>J ‚| d¡ | j ¡  | tdƒ¡ | j ¡  t 	ddgddgdd	gg¡}|jg d
¢t|ƒdd\}|jg d¢|dd\}t
| ¡ j|jƒ t
| ¡ j|jƒ d S )N)r   r   r   ÚD)rv   Úsr…   rŸ   r   r   r   r„   é   )rv   Úms)r   r   r   )r   r.   r8   r   r!   r"   Z
get_markerZ
set_markerr   Z_create_closedr   rl   )r%   r&   rE   Z	triangle1Úline2Úline3r   r   r   Útest_marker_as_markerstyle   s    



r¼   zstriped_line.pngc               	   C   sf   t j d¡} t ¡ \}}|j| jdddddddd	 |j| jddd
dddddd |jdd d S )Ni!N,é   r   ZorangeÚbluerH   r4   ú )r<   Úgapcolorr6   r7   rx   r†   Úblack)r   )r   r4   r   r   ru   )r<   rÀ   r6   r7   rx   Úalpha)Zhandlelength)r	   r   Zdefault_rngr   r.   r8   ÚuniformÚlegend)ÚrngÚ_r&   r   r   r   Útest_striped_lines4  s    ÿÿrÇ   c                 C   s8   |   ¡ jddgg d¢d |  ¡ jddgg d¢d d S )Nr   r   r   )Údashes)r   r   r   r   r   r   )r^   r8   r—   r   r   r   Útest_odd_dashes?  s    rÉ   c                  C   s  t  ¡ \} }t| jjd | jjd d d}|jddgddgdd\}| |¡\}}|r\J ‚|jddgddgddd	\}| |¡\}}|sŽJ ‚t|d
 dgƒ |jddgddgdd\}| |¡\}}|rÎJ ‚| 	d¡ | |¡\}}|sîJ ‚t|d
 dgƒ d S )Nr   é   )r   r   r   r   T)Úpickerr*   )rË   Z
pickradiusÚind)
r   r.   r   ZbboxÚwidthÚheightr8   Úcontainsr   Zset_pickradius)r%   r&   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_pickingE  s$    ÿ
rÔ   c                 C   s^   t  ddd¡}|  ¡  ||d¡\}tdƒ|d d …< | d¡ | ¡ jg d¢g d¢ddd d S )	Nr   rP   r   z.-r   rS   )r   r   r   rU   )r	   r_   r^   r8   r9   rf   )rc   rb   rd   r'   r   r   r   Útest_input_copy_  s
    
rÕ   r[   c                 C   sÖ   dddg d¢ddgt ddd	ƒd
ddddg}tjd }|t ddt|ƒ¡ƒ}t dd¡}d|d  }| ¡ }t|ƒD ]"\}}	|j|| d|	|| d qrt	||dt
jd< |  ¡ }
t|ƒD ]\}}|
 || d¡ q¸dS )z*Test that we can set markevery prop_cycle.Né   )r+   rÖ   )é   é   r+   r   rŸ   r‘   éÈ   r   r‹   r    g      ø?)r]   r‹   )gÍÌÌÌÌÌÜ?r‹   Zjetgš™™™™™É?gš™™™™™é?r   r4   r   zo-)r•   r<   r‰   )r­   ÚmplZ	colormapsr	   r   rj   r^   r}   r8   r   rŒ   r   )rc   rb   ZcasesZcmapr   r   r   rY   r   r•   r&   rÆ   r   r   r   Útest_markevery_prop_cyclej  s"    þ
ÿrÛ   ):Ú__doc__r{   r    Útypesr   r   Únumpyr	   Znumpy.testingr   rA   rŒ   rÚ   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsr`   Zmatplotlib.testing.decoratorsr   r   r   ÚmarkZflakyr(   r1   r:   r?   rF   rN   rO   rZ   re   rg   rm   ro   rƒ   r‡   r   r“   r˜   Zparametrizer´   rµ   r¼   rÇ   rÉ   rÔ   rÕ   rÛ   r   r   r   r   Ú<module>   sn   

+










,





