a
    ü
þdr4  ã                   @   s^  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 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 0¡ d/v r|d0ndd1d2d3„ ƒZ1ed4gddd5d6„ ƒZ2d7d8„ Z3ed9gd:d;d<d=„ ƒZ4d>d?„ Z5eƒ d@dA„ ƒZ6ej" 7dBdCdDg¡ed%d&dEdF„ ƒƒZ8dGdH„ Z9dIdJ„ Z:edKgdd.dLdMdN„ ƒZ;eƒ dOdP„ ƒZ<dQdR„ Z=eƒ dSdT„ ƒZ>edUgd&dVdW„ ƒZ?dS )Xz%
Tests specific to the lines module.
é    N)ÚSimpleNamespace)Úcycler)Úassert_array_equal)Ú_path)Ú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   úd/var/www/html/stable-diffusion-webui/venv/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ÚdrawZ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_dashQ   s    r2   c                  C   sì   t jtdd t dg ¡ W d   ƒ n1 s00    Y  t jtdd t g d¡ W d   ƒ n1 sj0    Y  t g g ¡} t  t¡ |  d¡ W d   ƒ n1 sª0    Y  t  t¡ |  d¡ W d   ƒ n1 sÞ0    Y  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_dataY   s    **(r9   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_dashesi   s    rB   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   r/   r@   rA   r#   r$   r1   r   r   r   Útest_line_colorsp   s    rG   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S ©NZfoobar)r   r    r4   r5   Ú
ValueErrorZ	set_colorr7   r   r   r   Útest_valid_colorsz   s    rJ   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>   rF   )r&   r'   Úlsr   r   r   Útest_linestyle_variants€   s    
þrR   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S )NZaardvark)r   r    r4   r5   rI   Zset_linestyler7   r   r   r   Útest_valid_linestylesŠ   s    rS   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Úflatr@   rA   Ú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 )NrX   g     @Ÿ@ç        )Z	transform)Úadd_subplotr   Úaranger@   ÚmtransformsZAffine2DÚ	translateZ	transData)Úfig_refÚfig_testr'   r   Útr   r   r   Útest_no_subslice_with_transform   s    
ri   c                  C   sD   t  g g ¡} t t¡ |  d¡ W d   ƒ n1 s60    Y  d S rH   )r   r    r4   r5   rI   Úset_drawstyler7   r   r   r   Útest_valid_drawstyles¨   s    rk   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   r;   rV   r   rU   )r   r   ÚpiÚsinr   r/   r@   rj   ÚlenÚget_pathÚvertices)r   r   r&   r'   r8   r   r   r   Útest_set_drawstyle®   s    

"
rq   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.   r1   r   r   r   Útest_set_line_coll_dash_image»   s    rv   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dƒD ]^\}}ttjj	ƒD ]H\}}	t
| ƒ}
|j|d | || d|d   |d||	|	d|
|
dd qnqZ| d
dg¡ | ddg¡ d S )N©r   r   r   Úgz#ff0000ÚcÚmr   )r   r   r   Z
lightgreenr   r   é	   zov^<>8sp*hHDdPXr;   ç      à?r   r+   r<   )	ÚmarkerZ
markersizeZmarkerfacecoloraltÚ	fillstyleÚlabelZ	linewidthrD   ZmarkeredgecolorZmarkeredgewidthg      @éûÿÿÿé›   )Ú	itertoolsÚcycler   r   r   r/   Ú	enumerater   r    Z
fillStylesÚnextr@   Zset_ylimZset_xlim)ÚcolorsZaltcolorr   r   r&   r'   Újr}   ÚiÚfsrD   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   ÚorC   )r~   Úred)r}   ZmarkerfacecolorN)r   r@   r   Zget_fillstyleZget_markerfacecolor)r(   r   r   r   Útest_markerfacecolor_fillstyleä   s
    ÿrŽ   Zscaled_linesrU   )ru   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   é    )rM   rP   rN   úaxes.prop_cycler|   r;   é2   çš™™™™™¹?r=   )r   r   r   r/   r   Ú
matplotlibÚrcParamsr„   rZ   r@   Zones)	Úthr&   r'   Zlins_stylesr   r‡   rQ   Zstyr?   r   r   r   Útest_lw_scalingì   s    r–   c                  C   s‚   t  t g d¢¡¡sJ ‚t  t dtjdg¡¡s4J ‚t  ddgtjgd  ddg ¡rZJ ‚dtjj } t 	tjg|  t
| ƒ¡ d S )N©r   r   r   r   r   r<   éd   r   r   )r   Zis_sorted_and_has_non_nanr   r   Únanr   r    Z_subslice_optim_min_sizer   r@   rA   )Únr   r   r   Útest_is_sorted_and_has_non_nan÷   s
    &r›   c                 C   s:   |   ¡  ddgd¡ |  ¡ jg d¢g d¢dddgd d S )Nr   r   z-orw   )r   r   r   r   ©Ú	markevery)r/   Ústepr@   ©rg   rf   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   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   )rg   r   r   Úadd_test  s    ÿz test_markevery.<locals>.add_testc                   s   ˆ   tj| |d|d¡ d S rª   r¬   r®   )rf   r   r   Úadd_ref  s    ÿztest_markevery.<locals>.add_refr¢   r   c                   s   t ˆ ƒj| |d|d d S ©Nz-gDrœ   ©r…   r@   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randrn   Úslicerc   Úiterr/   r[   r   ÚlistZastypeÚintÚbool)rg   rf   r¡   r   r   Z
cases_testZ	cases_refr¯   r°   ZcaseÚmer   )r´   r³   rf   rg   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Œ   r|   r«   )
r   r   r­   r   r    r4   r5   rI   r#   r$   )r&   r   r   r   Ú.test_markevery_figure_line_unsupported_relsize3  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)r}   ÚsrŒ   r§   r   r   r   r‹   é   )r}   Úms)r   r   r   )r   r/   r@   r   r#   r$   Z
get_markerZ
set_markerr   Z_create_closedr   rp   )r&   r'   r8   Z	triangle1Zline2Zline3r   r   r   Útest_marker_as_markerstyle:  s    



rÁ   zstriped_line.png)r:   ru   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orangeZbluerL   r<   ú )rD   Úgapcolorr>   r?   r   r   Zblack)r   )r   r<   r¥   r   r|   )rD   rÄ   r>   r?   r   Úalpha)Zhandlelength)r   r   Zdefault_rngr   r/   r@   ÚuniformZlegend)ÚrngÚ_r'   r   r   r   Útest_striped_linesN  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   )rb   r@   rŸ   r   r   r   Útest_odd_dashesY  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Úheightr@   Úcontainsr   Zset_pickradius)r&   r'   Zmouse_eventZl0ÚfoundÚindicesÚl1Úl2r   r   r   Útest_picking_  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   rT   r   z.-r   rW   )r   r   r¥   rY   )r   rc   rb   r@   rA   rj   )rg   rf   rh   r(   r   r   r   Útest_input_copyy  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      ø?)ra   r’   )gÍÌÌÌÌÌÜ?r’   Zjetgš™™™™™É?gš™™™™™é?r   r<   r   zo-)r   rD   r   )rµ   ÚmplZ	colormapsr   r   rn   rb   r„   r@   r   r“   r”   )rg   rf   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   r4   r“   rÜ   r   Zmatplotlib.linesÚlinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrd   Zmatplotlib.testing.decoratorsr   r	   Zmatplotlib._api.deprecationr
   r   ÚmarkZflakyr)   r2   r9   rB   rG   rJ   rR   rS   r^   ri   rk   rq   Úmachinerv   rŠ   rŽ   r–   r›   r    Zparametrizer»   r¼   rÁ   rÉ   rË   rÖ   r×   rÝ   r   r   r   r   Ú<module>   s|   

+





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

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





