a
    ëÝEb‰)  ã                   @   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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;„ ƒZ/e
j 0d<d=d>g¡ed!d"�d?d@„ ƒƒZ1dAdB„ Z2dCdD„ Z3eƒ dEdF„ ƒZ4dGdH„ Z5dS )Iz%
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   ú[/home/ja/django-apps/lartica_env/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_dashM   s    r0   Zline_dashesT)Úremove_textc                  C   s$   t  ¡ \} }|jtdƒddd� d S )Né
   r+   é   ©Ú	linestyleÚlw)r   r-   ÚplotÚranger/   r   r   r   Útest_line_dashesU   s    r9   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 )Nr2   Únone)ÚcolorÚrz.3)r   r   r   r   )r   r   r   ©r   r-   r7   r8   r    r!   r/   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_colorsf   s    rE   c                  C   s6   t  ¡ \} }dD ]}|jtdƒ|d� q| j ¡  d S )N)ú-Zsolidz--Údashedz-.Údashdotú:Údottedr2   )r5   r=   )r$   r%   Úlsr   r   r   Útest_linestyle_variantsl   s    rL   c                  C   sD   t  g g ¡} t t¡� |  d¡ W d   ƒ n1 s60    Y  d S )NZaardvark)r   r   r@   rA   rB   Zset_linestylerC   r   r   r   Útest_valid_linestylest   s    rM   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-postZstepsNéÐ  )Z	drawstyle)r   r   )ZxlimZylim)r   r-   ÚzipÚflatr7   r8   Úset)r$   ZaxsZdssr%   Zdsr   r   r   Útest_drawstyle_variantsz   s
    rU   )Zpng)Ú
extensionsc                 C   sT   |   ¡ }t d¡}| |d |¡ |  ¡ }t ¡  dd¡}|j||||j d� d S )NrQ   g     @Ÿ@ç        )Z	transform)Úadd_subplotr	   Úaranger7   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr%   r   Útr   r   r   Útest_no_subslice_with_transform‡   s    
r_   c                  C   sD   t  g g ¡} t t¡� |  d¡ W d   ƒ n1 s60    Y  d S r?   )r   r   r@   rA   rB   Úset_drawstylerC   r   r   r   Útest_valid_drawstyles’   s    ra   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   r2   rP   r   rO   )r	   r   ÚpiÚsinr   r-   r7   r`   ÚlenÚget_pathÚvertices)r   r   r$   r%   rD   r   r   r   Útest_set_drawstyle˜   s    

"
rg   Zline_collection_dashesZmpl20)r1   Ústylec                  C   s6   t  ¡ \} }tj d¡ |jtj dd¡dgd� d S r(   r,   r/   r   r   r   Útest_set_line_coll_dash_image¥   s    ri   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   é	   r2   ç      à?r   r)   r3   )	ÚmarkerZ
markersizeZmarkerfacecoloraltÚ	fillstyleÚlabelZ	linewidthr;   ZmarkeredgecolorZmarkeredgewidthg      @éûÿÿÿé›   )Ú	itertoolsÚcycler	   r
   r   r-   Ú	enumerater   r   Zfilled_markersZ
fillStylesÚnextr7   Zset_ylimZset_xlim)ÚcolorsZaltcolorr   r   r$   r%   Újrp   Ú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:   )rq   Úred)rp   ZmarkerfacecolorN)r   r7   r   Zget_fillstyleZget_markerfacecolor)r&   r   r   r   Útest_markerfacecolor_fillstyleÈ   s
    ÿr�   Zscaled_linesrO   )rh   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   é    )rG   rJ   rH   zaxes.prop_cyclero   r2   é2   gš™™™™™¹?r4   )r	   r   r   r-   r   Ú
matplotlibZrcParamsrw   rR   r7   Zones)	Úthr$   r%   Zlins_stylesr   rz   rK   Zstyr6   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   r3   éd   r   r   )r   r   Z
_is_sortedr	   r
   ÚnanrC   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-orj   )r   r   r   r   ©Ú	markevery)r-   Ústepr7   ©r]   r\   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   r3   )r   r3   é   éÿÿÿÿr3   r2   r   ro   ç333333Ó?)r—   gš™™™™™Ù?)	Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   éþÿÿÿc                   s   ˆ   tj| |d|d�¡ d S ©Nr   ©rp   rŒ   ©Ú
add_artistr   r   ©r   r   rŒ   )r]   r   r   Úadd_testü   s    ÿz test_markevery.<locals>.add_testc                   s   ˆ   tj| |d|d�¡ d S r™   r›   r�   )r\   r   r   Úadd_ref   s    ÿztest_markevery.<locals>.add_refr‘   r   c                   s   t ˆ ƒj| |d|d� d S ©Nz-gDr‹   ©rx   r7   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randrd   ÚslicerY   Úiterr-   rS   r
   ÚlistZastypeÚintÚbool)r]   r\   r�   r   r   Z
cases_testZ	cases_refrž   rŸ   ÚcaseÚmer   )r£   r¢   r\   r]   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   ro   rš   )
r   r   rœ   r   r   r@   rA   rB   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ddggd
d�}|jg d¢t|ƒdd�\}|jg d¢|dd�\}t	| ¡ j
|j
ƒ t	| ¡ j
|j
ƒ d S )N)r   r”   r   ÚD)rp   Úsr   g      ð¿g      ð?rW   g       @T)Úclosedr~   é   )rp   Úms)r   r   r   )r   r-   r7   r   r    r!   Z
get_markerZ
set_markerr   r   rf   )r$   r%   rD   Z	triangle1Úline2Úline3r   r   r   Útest_marker_as_markerstyle  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   )rX   r7   rŽ   r   r   r   Útest_odd_dashes1  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Úheightr7   Úcontainsr   Zset_pickradius)r$   r%   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_picking7  s$    ÿ
rÁ   )6Ú__doc__ru   r   Útypesr   r   Únumpyr	   Znumpy.testingr   r@   r„   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrZ   Zmatplotlib.testing.decoratorsr   r   r   ÚmarkZflakyr'   r0   r9   r>   rE   rL   rM   rU   r_   ra   rg   ri   r}   r�   r†   rŠ   r�   Zparametrizer«   r¬   r´   r¶   rÁ   r   r   r   r   Ú<module>   s`   

+








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