U
    d»{já/  ã                   @   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   úZ/var/www/html/bwave/python/venv/lib/python3.8/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˜t‚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ÚAssertionError)
Ú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    r2   Zline_dashesT)Úremove_textc                  C   s$   t  ¡ \} }|jtdƒddd� d S )Né
   r-   é   ©Ú	linestyleÚlw)r   r/   ÚplotÚranger1   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 )Nr4   Únone)ÚcolorÚrz.3)r   r   r   r   )r   r   r   ©r   r/   r9   r:   r!   r"   r1   r   r   r   Útest_line_colors]   s    r@   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S ©NZfoobar)r   r   ÚpytestÚraisesÚ
ValueErrorZ	set_color©Úliner   r   r   Útest_valid_colorsg   s    rG   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   r4   )r7   r?   )r&   r'   Úlsr   r   r   Útest_linestyle_variantsm   s         þrO   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S )NZaardvark)r   r   rB   rC   rD   Zset_linestylerE   r   r   r   Útest_valid_linestylesw   s    rP   zdrawstyle_variants.pngc                  C   sX   t  d¡\} }dddddd g}t|j|ƒD ](\}}|jtdƒ|d� |jd	d	d
� q*d S )Né   Údefaultz	steps-midú	steps-prez
steps-postÚstepséÐ  ©Z	drawstyle)r   r   )ZxlimZylim)r   r/   ÚzipÚflatr9   r:   Úset)r&   ÚaxsZdssr'   Zdsr   r   r   Útest_drawstyle_variants}   s
    r[   )Úpng)Ú
extensionsc                 C   sT   |   ¡ }t d¡}| |d |¡ |  ¡ }t ¡  dd¡}|j||||j d� d S )NrU   g     @Ÿ@ç        )Z	transform)Úadd_subplotr	   Úaranger9   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr'   r   Útr   r   r   Útest_no_subslice_with_transformŠ   s    
rf   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S rA   )r   r   rB   rC   rD   Úset_drawstylerE   r   r   r   Útest_valid_drawstyles•   s    rh   c                  C   sŒ   t  ddt j d¡} t  | ¡}t ¡ \}}| | |¡\}| d¡ t| 	¡ j
ƒdt| ƒ d ksdt‚| d¡ t| 	¡ j
ƒt| ƒksˆt‚d S )Nr   r   r4   rS   r   rR   )r	   r   ÚpiÚsinr   r/   r9   rg   ÚlenÚget_pathÚverticesr$   )r   r   r&   r'   rF   r   r   r   Útest_set_drawstyle›   s    

"
rn   Zline_collection_dashesZmpl20)r3   Ústylec                  C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd� d S r*   r.   r1   r   r   r   Útest_set_line_coll_dash_image¨   s    rp   zmarker_fill_styles.pngc                  C   sâ   t  dddgdddddt dddg¡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� qvqb| ddg¡ | ddg¡ d S )Nr   r   Úgz#ff0000ÚcÚmr   Z
lightgreené	   r4   ç      à?r   r+   r5   )	ÚmarkerZ
markersizeZmarkerfacecoloraltÚ	fillstyleÚlabelZ	linewidthr=   ZmarkeredgecolorZmarkeredgewidthg      @éûÿÿÿé›   )Ú	itertoolsÚcycler	   r
   r   r/   Ú	enumerater   r   Zfilled_markersZ
fillStylesÚnextr9   Zset_ylimZset_xlim)ÚcolorsZaltcolorr   r   r&   r'   Újrv   ÚiÚfsr=   r   r   r   Útest_marker_fill_styles¯   s.    ÿ ÷
rƒ   c                  C   sD   t jdddgtddd�dd�\} |  ¡ dks0t‚|  ¡ dks@t‚d	S )
z=Test that markerfacecolor does not override fillstyle='none'.r   r   r   Úor<   )rw   Úred)rv   ZmarkerfacecolorN)r   r9   r   Zget_fillstyler$   Zget_markerfacecolor)r(   r   r   r   Útest_markerfacecolor_fillstyleË   s
    ÿr†   Zscaled_linesrR   )ro   c            	      C   s�   t  dd¡} t ¡ \}}dddg}ttjd ƒ}tt||ƒƒD ]L\}\}}t  ddd¡D ]0}|j	| |t  
d	¡ d
|  f||dœ|—Ž qXq>d S )Nr   é    rJ   rM   rK   úaxes.prop_cycleru   r4   é2   çš™™™™™¹?r6   )r	   r   r   r/   r   Ú
matplotlibÚrcParamsr}   rW   r9   Zones)	Úthr&   r'   Zlins_stylesr   r€   rN   Zstyr8   r   r   r   Útest_lw_scalingÓ   s    
rŽ   c                  C   sl   t  g g ¡} |  t dddg¡¡s&t‚|  t dtjdg¡¡sBt‚|  ddgtjgd  ddg ¡rht‚d S )Nr   r   r   r5   éd   r   )r   r   Z
_is_sortedr	   r
   r$   ÚnanrE   r   r   r   Útest_nan_is_sortedÞ   s    r‘   c                 C   s>   |   ¡  ddgd¡ |  ¡ jdddgdddgdddgd� d S )Nr   r   z-or   ©Ú	markevery)r/   Ústepr9   ©rd   rc   r   r   r   Útest_step_markerså   s    r–   Úparentr   Úaxesc              
      sH  t j d¡ t  ddd¡}t j t|ƒ¡}d dddddgdd	gtdd
dƒt  t|ƒ¡|dk ddg	}dddddddddg	}|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   r5   r5   é   éÿÿÿÿr4   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“   )rd   r   r   Úadd_testÿ   s    ÿz test_markevery.<locals>.add_testc                   s   ˆ   tj| |d|d�¡ d S r    r¢   r¤   )rc   r   r   Úadd_ref  s    ÿztest_markevery.<locals>.add_refr˜   r   c                   s   t ˆ ƒj| |d|d� d S ©Nz-gDr’   ©r~   r9   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   r0   r   Zrandrk   Úslicer`   Úiterr/   rX   r
   ÚlistZastypeÚintÚbool)rd   rc   r—   r   r   Z
cases_testZ	cases_refr¥   r¦   ÚcaseÚmer   )rª   r©   rc   rd   r   Útest_markeveryë   sB     
 ý    þr²   c               	   C   sL   t  ¡ } |  tjddgddgddd�¡ t t¡� | j 	¡  W 5 Q R X d S )Nr   r   r„   ru   r¡   )
r   r   r£   r   r   rB   rC   rD   r!   r"   )r&   r   r   r   Ú.test_markevery_figure_line_unsupported_relsize  s     r³   c                  C   sä   t  ¡ \} }|jdddgtdƒd�\}| j ¡  | ¡ dks@t‚| d¡ | j ¡  | tdƒ¡ | j ¡  t	 
ddgd	dgd
dgg¡}|jd	ddgt|ƒdd�\}|jd
dd	g|dd�\}t| ¡ j|jƒ t| ¡ j|jƒ d S )Nr   r›   r   ÚD)rv   Úsr„   r�   r   r   é   )rv   Úms)r   r/   r9   r   r!   r"   Z
get_markerr$   Z
set_markerr   Z_create_closedr   rm   )r&   r'   rF   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ÚbluerI   r5   ú )r=   Úgapcolorr7   r8   rx   r…   Úblack)r   )r   r5   r›   r   ru   )r=   r¾   r7   r8   rx   Úalpha)Zhandlelength)r	   r   Zdefault_rngr   r/   r9   ÚuniformZlegend)ÚrngÚ_r'   r   r   r   Útest_striped_lines4  s      ÿ   ÿrÄ   c                 C   sB   |   ¡ jddgdddgd� |  ¡ jddgddddddgd� d S )Nr   r   r   )Údashes)r_   r9   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\t‚|jddgddgddd	�\}| |¡\}}|sŽt‚t	|d
 dgƒ |jddgddgdd�\}| |¡\}}|rÎt‚| 
d¡ | |¡\}}|sît‚t	|d
 dgƒ d S )Nr   é   )r   r   r   r   T)Úpickerr+   )rÈ   Z
pickradiusÚind)r   r/   r   ZbboxÚwidthÚheightr9   Úcontainsr$   r   Zset_pickradius)r&   r'   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_pickingE  s$    ÿ
rÑ   c                 C   sb   t  ddd¡}|  ¡  ||d¡\}tdƒ|d d …< | d¡ | ¡ jdddgdddgddd� d S )	Nr   rQ   r   z.-r   rT   r›   rV   )r	   r`   r_   r9   r:   rg   )rd   rc   re   r(   r   r   r   Útest_input_copy_  s
    
rÒ   r\   c                 C   sØ   ddddddg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� qtt	||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   r5   r   zo-)r“   r=   rˆ   )r«   ÚmplZ	colormapsr	   r   rk   r_   r}   r9   r   r‹   rŒ   )rd   rc   ZcasesZcmapr   r   r   rZ   r�   r“   r'   rÃ   r   r   r   Útest_markevery_prop_cyclej  s*    
    þ
ÿrØ   ):Ú__doc__r{   r    Útypesr   r   Únumpyr	   Znumpy.testingr   rB   r‹   r×   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsra   Zmatplotlib.testing.decoratorsr   r   r   ÚmarkZflakyr)   r2   r;   r@   rG   rO   rP   r[   rf   rh   rn   rp   rƒ   r†   rŽ   r‘   r–   Zparametrizer²   r³   rº   rÄ   rÆ   rÑ   rÒ   rØ   r   r   r   r   Ú<module>   sn   

+









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





