U
    Âmœdâ3  ã                   @   sR  d 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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	lmZ d
d„ Z ej!j"dd�dd„ ƒZ#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-e /¡ d.k�rpd/ndd0�d1d2„ ƒZ0ed3gdd�d4d5„ ƒZ1d6d7„ Z2ed8gd9d:�d;d<„ ƒZ3d=d>„ Z4eƒ d?d@„ ƒZ5ej! 6dAdBdCg¡ed$d%�dDdE„ ƒƒZ7dFdG„ Z8dHdI„ Z9edJgdd-dK�dLdM„ ƒZ:eƒ dNdO„ ƒZ;dPdQ„ Z<eƒ dRdS„ ƒZ=edTgd%�dUdV„ ƒZ>dS )Wz%
Tests specific to the lines module.
é    N)ÚSimpleNamespace)Úcycler)Úassert_array_equal)ÚMarkerStyle)ÚPath)Úimage_comparisonÚcheck_figures_equal)ÚMatplotlibDeprecationWarningc                  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   úT/home/sam/Atlas/atlas_env/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_dashP   s    r3   c               	   C   sœ   t jtdd�� t dg ¡ W 5 Q R X t jtdd�� t g d¡ W 5 Q R X t g g ¡} t  t¡� |  d¡ W 5 Q R X t  t¡� |  d¡ W 5 Q R X d S )Nzxdata must be)Úmatchr   zydata must ber   )	ÚpytestÚraisesÚRuntimeErrorr   r   Zwarnsr	   Z	set_xdataZ	set_ydata©Úliner   r   r   Útest_invalid_line_dataX   s    r:   Zline_dashesT)Úremove_textc                  C   s$   t  ¡ \} }|jtdƒddd� d S )Né
   r.   é   ©Ú	linestyleÚlw)r   r0   ÚplotÚranger2   r   r   r   Útest_line_dashesh   s    rC   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 )Nr<   Únone)ÚcolorÚrz.3)r   r   r   r   )r   r   r   ©r   r0   rA   rB   r"   r#   r2   r   r   r   Útest_line_colorso   s    rH   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S ©NZfoobar)r   r   r5   r6   Ú
ValueErrorZ	set_colorr8   r   r   r   Útest_valid_colorsy   s    rK   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   r<   )r?   rG   )r'   r(   Úlsr   r   r   Útest_linestyle_variants   s         þrS   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S )NZaardvark)r   r   r5   r6   rJ   Zset_linestyler8   r   r   r   Útest_valid_linestyles‰   s    rT   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   r0   ÚzipÚflatrA   rB   Ú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 )NrY   g     @Ÿ@ç        )Z	transform)Úadd_subplotr
   ÚarangerA   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr(   r   Útr   r   r   Útest_no_subslice_with_transformœ   s    
rj   c               	   C   s0   t  g g ¡} t t¡� |  d¡ W 5 Q R X d S rI   )r   r   r5   r6   rJ   Úset_drawstyler8   r   r   r   Útest_valid_drawstyles§   s    rl   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   r<   rW   r   rV   )r
   r   ÚpiÚsinr   r0   rA   rk   ÚlenÚget_pathÚverticesr%   )r   r   r'   r(   r9   r   r   r   Útest_set_drawstyle­   s    

"
rr   Zline_collection_dashesZmpl20)Úaarch64Úppc64leÚs390xgÍÌÌÌÌÌä?)r;   ÚstyleZtolc                  C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd� d S r+   r/   r2   r   r   r   Útest_set_line_coll_dash_imageº   s    rw   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d
ƒ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 )Nr   r   Úgz#ff0000ÚcÚmr   Z
lightgreené	   zov^<>8sp*hHDdPXr<   ç      à?r   r,   r=   )	ÚmarkerZ
markersizeZmarkerfacecoloraltÚ	fillstyleÚlabelZ	linewidthrE   ZmarkeredgecolorZmarkeredgewidthg      @éûÿÿÿé›   )Ú	itertoolsÚcycler
   r   r   r0   Ú	enumerater   r   Z
fillStylesÚnextrA   Zset_ylimZset_xlim)ÚcolorsZaltcolorr   r   r'   r(   Újr}   ÚiÚfsrE   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   ÚorD   )r~   Úred)r}   ZmarkerfacecolorN)r   rA   r   Zget_fillstyler%   Zget_markerfacecolor)r)   r   r   r   Útest_markerfacecolor_fillstyleã   s
    ÿr�   Zscaled_linesrV   )rv   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   é    rN   rQ   rO   úaxes.prop_cycler|   r<   é2   çš™™™™™¹?r>   )r
   r   r   r0   r   Ú
matplotlibÚrcParamsr„   r[   rA   Zones)	Úthr'   r(   Zlins_stylesr   r‡   rR   Zstyr@   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   r=   éd   r   )r   r   Z
_is_sortedr
   r   r%   Únanr8   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)r0   ÚsteprA   ©rh   rg   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   r=   r=   é   éÿÿÿÿr<   r   r|   ç333333Ó?)r¥   gš™™™™™Ù?Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   éþÿÿÿc                   s   ˆ   tj| |d|d�¡ d S ©Nr‹   ©r}   rš   ©Ú
add_artistr   r   ©r   r   rš   )rh   r   r   Úadd_test  s    ÿz test_markevery.<locals>.add_testc                   s   ˆ   tj| |d|d�¡ d S r§   r©   r«   )rg   r   r   Úadd_ref  s    ÿztest_markevery.<locals>.add_refrŸ   r   c                   s   t ˆ ƒj| |d|d� d S ©Nz-gDr™   ©r…   rA   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   r1   r   Zrandro   Úslicerd   Úiterr0   r\   r   ÚlistZastypeÚintÚbool)rh   rg   rž   r   r   Z
cases_testZ	cases_refr¬   r­   ÚcaseÚmer   )r±   r°   rg   rh   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‹   r|   r¨   )
r   r   rª   r   r   r5   r6   rJ   r"   r#   )r'   r   r   r   Ú.test_markevery_figure_line_unsupported_relsize1  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)r}   Úsr‹   r¤   r   r   é   )r}   Úms)r   r0   rA   r   r"   r#   Z
get_markerr%   Z
set_markerr   Z_create_closedr   rq   )r'   r(   r9   Z	triangle1Úline2Úline3r   r   r   Útest_marker_as_markerstyle8  s    



rÁ   zstriped_line.png)r;   rv   c               	   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ÚbluerM   r=   ú )rE   Úgapcolorr?   r@   r   rŒ   Úblack)r   )r   r=   r¢   r   r|   )rE   rÅ   r?   r@   r   Úalpha)Zhandlelength)r
   r   Zdefault_rngr   r0   rA   ÚuniformZlegend)ÚrngÚ_r(   r   r   r   Útest_striped_linesL  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)rc   rA   rœ   r   r   r   Útest_odd_dashesW  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   r0   r   ZbboxÚwidthÚheightrA   Úcontainsr%   r   Zset_pickradius)r'   r(   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_picking]  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   rU   r   z.-r   rX   r¢   rZ   )r
   rd   rc   rA   rB   rk   )rh   rg   ri   r)   r   r   r   Útest_input_copyw  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      ø?)rb   r‘   )gÍÌÌÌÌÌÜ?r‘   Zjetgš™™™™™É?gš™™™™™é?r   r=   r   zo-)rš   rE   r�   )r²   ÚmplZ	colormapsr
   r   ro   rc   r„   rA   r   r’   r“   )rh   rg   ZcasesZcmapr†   r   r   r^   rˆ   rš   r(   rÊ   r   r   r   Útest_markevery_prop_cycle‚  s*    
    þ
ÿrß   )?Ú__doc__r‚   Úplatformr!   Útypesr   r   Únumpyr
   Znumpy.testingr   r5   r’   rÞ   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsre   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib._api.deprecationr	   r   ÚmarkZflakyr*   r3   r:   rC   rH   rK   rS   rT   r_   rj   rl   rr   Úmachinerw   rŠ   r�   r•   r˜   r�   Zparametrizer¹   rº   rÁ   rË   rÍ   rØ   rÙ   rß   r   r   r   r   Ú<module>   s~   

+





  þ



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





