o
    lir4                     @   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 rd0n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   mlinessegment_hits)cxcyxyradius r   Y/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_lines.pytest_segment_hits   s   r      )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figuresubplotr   Line2Dset_visiblemintimeitr   canvasdrawadd_line)
Nr   r   figaxl	t_no_linet_invisible_lineslowdown_factorslowdown_thresholdr   r   r   test_invisible_Line_rendering%   s   

r4   c                  C   6   t  \} }tjd |jtjdddgd d S Nr         r   )r   r   )
linestylesr"   subplotsr   r    seedcontourrandnr-   r.   r   r   r   test_set_line_coll_dashQ   s   rA   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 | d W d    n1 sUw   Y  t t | d W d    d S 1 spw   Y  d S )Nzxdata must be)matchr   zydata must ber   )	pytestraisesRuntimeErrorr   r%   warnsr
   	set_xdata	set_ydataliner   r   r   test_invalid_line_dataY   s   "rK   line_dashesT)remove_textc                  C   s$   t  \} }|jtdddd d S )N
   r9      	linestylelw)r"   r<   plotranger@   r   r   r   test_line_dashesi   s   rU   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 )NrN   none)colorrz.3)r   r   r   r   )r   r   r   r"   r<   rS   rT   r)   r*   r@   r   r   r   test_line_colorsp   s   rZ   c                  C   F   t g g } tt | d W d    d S 1 sw   Y  d S Nfoobar)r   r%   rC   rD   
ValueError	set_colorrI   r   r   r   test_valid_colorsz      "r`   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-solid--dashedz-.dashdot:dotted)r   N)r   r   r   rN   )rQ   rY   )r-   r.   lsr   r   r   test_linestyle_variants   s   
rj   c                  C   r[   )Naardvark)r   r%   rC   rD   r^   set_linestylerI   r   r   r   test_valid_linestyles   ra   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-poststepsN  	drawstyle)r   r   )xlimylim)r"   r<   zipflatrS   rT   set)r-   axsdssr.   dsr   r   r   test_drawstyle_variants   s   r}   )png)
extensionsc                 C   sT   |   }td}||d | |  }t dd}|j||||j d d S )Nrr   g     @@        )	transform)add_subplotr   arangerS   mtransformsAffine2D	translate	transData)fig_reffig_testr.   r   tr   r   r   test_no_subslice_with_transform   s   
r   c                  C   r[   r\   )r   r%   rC   rD   r^   set_drawstylerI   r   r   r   test_valid_drawstyles   ra   r   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   rN   rp   r   ro   )r   r   pisinr"   r<   rS   r   lenget_pathvertices)r   r   r-   r.   rJ   r   r   r   test_set_drawstyle   s   

"
r   line_collection_dashesmpl20)aarch64ppc64les390xg?)rM   styletolc                  C   r5   r6   r;   r@   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   
lightgreenr   r   	   zov^<>8sp*hHDdPXrN         ?r   r7   rO   )	marker
markersizemarkerfacecoloralt	fillstylelabel	linewidthrW   markeredgecolormarkeredgewidthg      @   )	itertoolscycler   r   r"   r<   	enumerater   r%   
fillStylesnextrS   set_ylimset_xlim)colorsaltcolorr   r   r-   r.   jr   ifsrW   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   orV   )r   red)r   markerfacecolorN)r"   rS   r   get_fillstyleget_markerfacecolor)r/   r   r   r   test_markerfacecolor_fillstyle   s
   r   scaled_linesro   )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       )re   rh   rf   axes.prop_cycler   rN   2   皙?rP   )r   r   r"   r<   r   
matplotlibrcParamsr   rw   rS   ones)	thr-   r.   lins_stylesr   r   ri   styrR   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   rO   d   r   r   )r   is_sorted_and_has_non_nanr   r   nanr   r%   _subslice_optim_min_sizer"   rS   rT   )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)r<   steprS   r   r   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   rO   )r   rO      rO   rN   r   r   333333?)r   g?)	111111111111111000100010001000100001000010010001000001001000000000000100000101010000011100011101101101101101111001010011011101r#   c                        tj| |d|d d S Nr   r   r   
add_artistr   r%   r   r   r   )r   r   r   add_test     z test_markevery.<locals>.add_testc                   r   r   r   r   )r   r   r   add_ref  r   ztest_markevery.<locals>.add_refr   r   c                      t  j| |d|d d S Nz-gDr   r   rS   r   )axs_testr   r   r   %     c                   r   r   r   r   )axs_refr   r   r   (  r   r   )r   r    r=   r   randr   slicer   iterr<   rx   r   listastypeintbool)r   r   r   r   r   
cases_test	cases_refr   r   casemer   )r   r   r   r   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%   rC   rD   r^   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<   rS   r   r)   r*   
get_marker
set_markerr   _create_closedr   r   )r-   r.   rJ   	triangle1line2line3r   r   r   test_marker_as_markerstyle:  s   



r  zstriped_line.png)rM   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   orangebluerd   rO    )rW   gapcolorrQ   rR   r   r   black)r   )r   rO   r   r   r   )rW   r  rQ   rR   r   alpha)handlelength)r   r    default_rngr"   r<   rS   uniform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   )r   rS   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	\}||\}}|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)pickerr7   )r#  
pickradiusind)
r"   r<   r   bboxwidthheightrS   containsr   set_pickradius)r-   r.   mouse_eventl0foundindicesl1l2r   r   r   test_picking_  s$   
r1  c                 C   s^   t ddd}|  ||d\}td|d d < |d | jg dg dddd d S )	Nr   rn   r   z.-r   rq   )r   r   r   rs   )r   r   r   rS   rT   r   )r   r   r   r/   r   r   r   test_input_copyy  s
   
"r2  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 q9t	||dt
jd< |  }
t|D ]\}}|
|| d q\dS )z*Test that we can set markevery prop_cycle.N   )r8   r3  )      r8   r   r   r      r   r   r   g      ?)r   r   )g?r   jetg?g?r   rO   r   zo-)r   rW   r   )r   mpl	colormapsr   r   r   r   r   rS   r   r   r   )r   r   casescmapr   r   r   rz   r   r   r.   r  r   r   r   test_markevery_prop_cycle  s$   
r<  )@__doc__r   platformr(   typesr   r   numpyr   numpy.testingr   rC   r   r8  r   matplotlib.lineslinesr   matplotlib.markersr   matplotlib.pathr   matplotlib.pyplotpyplotr"   matplotlib.transforms
transformsr   matplotlib.testing.decoratorsr   r	   matplotlib._api.deprecationr
   r   markflakyr4   rA   rK   rU   rZ   r`   rj   rm   r}   r   r   r   machiner   r   r   r   r   r   parametrizer  r  r  r  r!  r1  r2  r<  r   r   r   r   <module>   s~    

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




