o
    re_8                     @   sZ  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 Zej j!dddd Z"dd Z#dd Z$edgd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. d0v rd1ndd2d3d4 Z/ed5gdd#d6d7 Z0d8d9 Z1ed:gd;d<d=d> Z2d?d@ Z3e dAdB Z4ej 5dCdDdEged&d'dFdG Z6dHdI Z7dJdK Z8edLgdd/dMdNdO Z9e dPdQ Z:dRdS Z;e dTdU Z<edVgd'dWdX Z=dYdZ Z>dS )[z%
Tests specific to the lines module.
    N)SimpleNamespace)cycler)assert_array_equal)_path)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)cxcyxyZradius r   KD:\Projects\ConvertPro\env\Lib\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 sLJ 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   6   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   r4   c                  C   s   t jtdd tdg  W d    n1 sw   Y  t jtdd tg d W d    n1 s5w   Y  tg g } t tj | d W d    n1 sVw   Y  t tj | 	d W d    d S 1 srw   Y  d S )Nzxdata must bematchr   zydata must ber   )
pytestraisesRuntimeErrorr   r    ZwarnsmplZMatplotlibDeprecationWarningZ	set_xdataZ	set_ydataliner   r   r   test_invalid_line_dataX   s   "r=   Zline_dashesTgMb`?)remove_texttolc                  C   s$   t  \} }|jtdddd d S )N
   r/      	linestylelw)r   r1   plotranger3   r   r   r   test_line_dashesh   s   rG   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   r1   rE   rF   r#   r$   r3   r   r   r   test_line_colorsq   s   rL   c                  C   F   t g g } tt | d W d    d S 1 sw   Y  d S NZfoobar)r   r    r7   r8   
ValueErrorZ	set_colorr;   r   r   r   test_valid_colors{      "rP   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@   )rC   rK   )r'   r(   lsr   r   r   test_linestyle_variants   s   
rY   c                  C   rM   )NZaardvark)r   r    r7   r8   rO   Zset_linestyler;   r   r   r   test_valid_linestyles   rQ   rZ   zdrawstyle_variants.png)r>   c                  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   r1   zipflatrE   rF   set)r'   axsZdssr(   Zdsr   r   r   test_drawstyle_variants   s   re   )png)
extensionsc                 C   sT   |   }td}||d | |  }t dd}|j||||j d d S )Nr_   g     @@        )Z	transform)add_subplotr
   arangerE   mtransformsZAffine2D	translateZ	transData)fig_reffig_testr(   r   tr   r   r   test_no_subslice_with_transform   s   
rp   c                  C   rM   rN   )r   r    r7   r8   rO   set_drawstyler;   r   r   r   test_valid_drawstyles   rQ   rr   c                  C   s   t ddt j d} t | }t \}}|| |\}|d t|	 j
dt|  d ks2J |d t|	 j
t| ksDJ d S )Nr   r   r@   r]   r   r\   )r
   r   pisinr   r1   rE   rq   lenget_pathvertices)r   r   r'   r(   r<   r   r   r   test_set_drawstyle   s   

"
rx   Zline_collection_dashesZmpl20)aarch64ppc64les390xg?)r>   styler?   c                  C   r+   r,   r0   r3   r   r   r   test_set_line_coll_dash_image   s   r}   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 ]$\}}	t
| }
|j|d | || d|d   |d||	|	d|
|
dd q7q-|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-   rA   )	markerZ
markersizeZmarkerfacecoloralt	fillstylelabelZ	linewidthrI   ZmarkeredgecolorZmarkeredgewidthg      @   )	itertoolscycler
   r   r   r1   	enumerater   r    Z
fillStylesnextrE   Zset_ylimZset_xlim)colorsZaltcolorr   r   r'   r(   jr   ifsrI   r   r   r   test_marker_fill_styles   s0    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   orH   )r   red)r   ZmarkerfacecolorN)r   rE   r   Zget_fillstyleZget_markerfacecolor)r)   r   r   r   test_markerfacecolor_fillstyle   s
   r   Zscaled_linesr\   )r|   c            	      C   s   t dd} t \}}g d}ttjd }tt||D ]&\}\}}t dddD ]}|j	| |t 
d d|  f||d	| q+qd S )
Nr       )rT   rW   rU   axes.prop_cycler   r@   2   皙?rB   )r
   r   r   r1   r   
matplotlibrcParamsr   ra   rE   Zones)	thr'   r(   Zlins_stylesr   r   rX   ZstyrD   r   r   r   test_lw_scaling   s   .r   c                  C   s   t tg dsJ t tdtjdgsJ t ddgtjgd  ddg r-J dtjj } t	tjg|  t
|  d S )Nr   r   r   r   r   rA   d   r   r   )r   Zis_sorted_and_has_non_nanr
   r   nanr   r    Z_subslice_optim_min_sizer   rE   rF   )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-or~   )r   r   r   r   	markevery)r1   steprE   rn   rm   r   r   r   test_step_markers   s   &r   parentr   axesc              
      s6  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rR|d d }|d d }fdd}fdd}n"|dkrtt	ddj
t	ddj
 fdd} fdd}|D ]	}	||||	d qv|D ]}	t t|	tt}
||||
d qd S )N*   r   r         )r   rA   )r   rA      rA   r@   r   r   333333?)r   皙?)	Z11111111111111Z10001000100010Z00100001000010Z01000100000100Z10000000000001Z00000101010000Z01110001110110Z11011011011110Z01010011011101r   c                        tj| |d|d d S Nr   r   r   
add_artistr   r    r   r   r   )rn   r   r   add_test     z test_markevery.<locals>.add_testc                   r   r   r   r   )rm   r   r   add_ref  r   ztest_markevery.<locals>.add_refr   r   c                      t  j| |d|d d S Nz-gDr   r   rE   r   )axs_testr   r   r   &     c                   r   r   r   r   )axs_refr   r   r   )  r   r   )r
   r   r2   r   Zrandru   slicerj   iterr1   rb   r   listZastypeintbool)rn   rm   r   r   r   Z
cases_testZ	cases_refr   r   casemer   )r   r   rm   rn   r   test_markevery  s2   r   c                  C   sb   t  } | tjddgddgddd tt | j	  W d    d S 1 s*w   Y  d S )Nr   r   r   r   r   )
r   r   r   r   r    r7   r8   rO   r#   r$   )r'   r   r   r   .test_markevery_figure_line_unsupported_relsize4  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   r1   rE   r   r#   r$   Z
get_markerZ
set_markerr   Z_create_closedr   rw   )r'   r(   r<   Z	triangle1line2line3r   r   r   test_marker_as_markerstyle;  s   



r   zstriped_line.png)r>   r|   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bluerS   rA    )rI   gapcolorrC   rD   r   r   black)r   )r   rA   r   r   r   )rI   r   rC   rD   r   alpha)Zhandlelength)r
   r   Zdefault_rngr   r1   rE   uniformZlegend)rng_r(   r   r   r   test_striped_linesO  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   )ri   rE   r   r   r   r   test_odd_dashesZ  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	\}||\}}|sGJ t|d
 dg |jddgddgdd\}||\}}|rgJ |	d ||\}}|swJ t|d
 dg d S )Nr      )r   r   r   r   T)pickerr-   )r   Z
pickradiusind)
r   r1   r   ZbboxwidthheightrE   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   r[   r   z.-r   r^   )r   r   r   r`   )r
   rj   ri   rE   rF   rq   )rn   rm   ro   r)   r   r   r   test_input_copyz  s
   
"r   rf   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 q9t	||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      ?)rh   r   )g?r   Zjet皙?皙?r   rA   r   zo-)r   rI   r   )r   r:   Z	colormapsr
   r   ru   ri   r   rE   r   r   r   )rn   rm   casesZcmapr   r   r   rd   r   r   r(   r   r   r   r   test_markevery_prop_cycle  s$   
r   c                  C   s  t  \} }|jddd}|dd}|dd |d |dd |dd | d	ks2J | dks:J | d
ksBJ | dksJJ t	j
tdd |dd W d    n1 sbw   Y  t	j
tdd |d W d    d S 1 sw   Y  d S )N)r   r   333333?)Zslope)r   r   r   r   g333333@r   )r   r   )r   r   )r   r   z.Cannot set an 'xy2' value while 'slope' is setr5   z-Cannot set a 'slope' value while 'xy2' is setr   )r   r1   ZaxlineZset_xy1Z	set_slopeZset_xy2Zget_xy1Z	get_slopeZget_xy2r7   r8   rO   )r'   r(   line1r   r   r   r   test_axline_setters  s*   
"r   )?__doc__r   platformr"   typesr   r   numpyr
   Znumpy.testingr   r7   r   r:   r   Zmatplotlib.lineslinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrk   Zmatplotlib.testing.decoratorsr   r	   r   markZflakyr*   r4   r=   rG   rL   rP   rY   rZ   re   rp   rr   rx   machiner}   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s~    

+










,






