o
    i_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)ZcxcyxyZradius r   j/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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   r3   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   r0   plotranger2   r   r   r   test_line_dashesh   s   rF   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   rD   rE   r"   r#   r2   r   r   r   test_line_colorsq   s   rK   c                  C   F   t g g } tt | d W d    d S 1 sw   Y  d S NZfoobar)r   r   r6   r7   
ValueErrorZ	set_colorr:   r   r   r   test_valid_colors{      "rO   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?   )rB   rJ   )r&   r'   lsr   r   r   test_linestyle_variants   s   
rX   c                  C   rL   )NZaardvark)r   r   r6   r7   rN   Zset_linestyler:   r   r   r   test_valid_linestyles   rP   rY   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   r0   zipflatrD   rE   set)r&   axsZdssr'   Zdsr   r   r   test_drawstyle_variants   s   rd   )png)
extensionsc                 C   sT   |   }td}||d | |  }t dd}|j||||j d d S )Nr^   g     @@        )Z	transform)add_subplotr
   arangerD   mtransformsZAffine2D	translateZ	transData)fig_reffig_testr'   r   tr   r   r   test_no_subslice_with_transform   s   
ro   c                  C   rL   rM   )r   r   r6   r7   rN   set_drawstyler:   r   r   r   test_valid_drawstyles   rP   rq   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   r0   rD   rp   lenget_pathvertices)r   r   r&   r'   r;   r   r   r   test_set_drawstyle   s   

"
rw   Zline_collection_dashesZmpl20)aarch64ppc64les390xg?)r=   styler>   c                  C   r*   r+   r/   r2   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,   r@   )	markerZ
markersizeZmarkerfacecoloralt	fillstylelabelZ	linewidthrH   ZmarkeredgecolorZmarkeredgewidthg      @   )	itertoolscycler
   r   r   r0   	enumerater   r   Z
fillStylesnextrD   Zset_ylimZset_xlim)colorsZaltcolorr   r   r&   r'   jr   ifsrH   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   orG   )r   red)r   ZmarkerfacecolorN)r   rD   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       )rS   rV   rT   axes.prop_cycler   r?   2   皙?rA   )r
   r   r   r0   r   
matplotlibrcParamsr   r`   rD   Zones)	thr&   r'   Zlins_stylesr   r   rW   ZstyrC   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   r@   d   r   r   )r   Zis_sorted_and_has_non_nanr
   r   nanr   r   Z_subslice_optim_min_sizer   rD   rE   )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)r0   steprD   rm   rl   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   r@   )r   r@      r@   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   )rm   r   r   add_test     z test_markevery.<locals>.add_testc                   r   r   r   r   )rl   r   r   add_ref  r   ztest_markevery.<locals>.add_refr   r   c                      t  j| |d|d d S Nz-gDr   r   rD   r   )axs_testr   r   r   &     c                   r   r   r   r   )axs_refr   r   r   )  r   r   )r
   r   r1   r   Zrandrt   sliceri   iterr0   ra   r   listZastypeintbool)rm   rl   r   r   r   Z
cases_testZ	cases_refr   r   casemer   )r   r   rl   rm   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   r6   r7   rN   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   r0   rD   r   r"   r#   Z
get_markerZ
set_markerr   Z_create_closedr   rv   )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bluerR   r@    )rH   gapcolorrB   rC   r   r   black)r   )r   r@   r   r   r   )rH   r   rB   rC   r   alpha)Zhandlelength)r
   r   Zdefault_rngr   r0   rD   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   )rh   rD   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   r0   r   ZbboxwidthheightrD   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   rZ   r   z.-r   r]   )r   r   r   r_   )r
   ri   rh   rD   rE   rp   )rm   rl   rn   r(   r   r   r   test_input_copyz  s
   
"r   re   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      ?)rg   r   )g?r   Zjet皙?皙?r   r@   r   zo-)r   rH   r   )r   r9   Z	colormapsr
   r   rt   rh   r   rD   r   r   r   )rm   rl   casesZcmapr   r   r   rc   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 setr4   z-Cannot set a 'slope' value while 'xy2' is setr   )r   r0   ZaxlineZset_xy1Z	set_slopeZset_xy2Zget_xy1Z	get_slopeZget_xy2r6   r7   rN   )r&   r'   line1r   r   r   r   test_axline_setters  s*   
"r   )?__doc__r   platformr!   typesr   r   numpyr
   Znumpy.testingr   r6   r   r9   r   Zmatplotlib.lineslinesr   Zmatplotlib.markersr   Zmatplotlib.pathr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsrj   Zmatplotlib.testing.decoratorsr   r	   r   markZflakyr)   r3   r<   rF   rK   rO   rX   rY   rd   ro   rq   rw   machiner|   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s~    

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





