o
    g1$                     @   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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#d!d" Z$d#d$ Z%ed%gdd&d'd(d) Z&ed*gddd+d, Z'd-d. Z(ed/gd0d1d2d3 Z)d4d5 Z*e d6d7 Z+ed8d9d:d; Z,d<d= Z-e d>d? Z.d@dA Z/dS )Bz%
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   mlinessegment_hits)cxcyxyradius r   Y/home/ubuntu/cloudmapper/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   

r1   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_dashL   s   r>   line_dashesT)remove_textc                  C   s$   t  \} }|jtdddd d S )N
   r6      	linestylelw)r   r9   plotranger=   r   r   r   test_line_dashesT   s   rH   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 )NrA   none)colorrz.3)r   r   r   r   )r   r   r   r   r9   rF   rG   r&   r'   r=   r   r   r   test_line_colors[   s   rM   c                  C   F   t g g } tt | d W d    d S 1 sw   Y  d S Nfoobar)r   r"   pytestraises
ValueError	set_colorliner   r   r   test_valid_colorse      "rW   c                  C   s6   t  \} }dD ]}|jtd|d q| j  d S )N)-solidz--dashedz-.dashdot:dottedrA   )rD   rL   )r*   r+   lsr   r   r   test_linestyle_variantsk   s   r`   c                  C   rN   )Naardvark)r   r"   rQ   rR   rS   set_linestylerU   r   r   r   test_valid_linestyless   rX   rc   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stepsNi  )	drawstyle)r   r   )xlimylim)r   r9   zipflatrF   rG   set)r*   axsdssr+   dsr   r   r   test_drawstyle_variantsy   s   rq   c                  C   rN   rO   )r   r"   rQ   rR   rS   set_drawstylerU   r   r   r   test_valid_drawstyles   rX   rs   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   rA   rf   r   re   )r	   r   pisinr   r9   rF   rr   lenget_pathvertices)r   r   r*   r+   rV   r   r   r   test_set_drawstyle   s   

"
ry   line_collection_dashesmpl20)r@   stylec                  C   r2   r3   r8   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tjj	D ]/\}}ttjj
D ]$\}}	t| }
|j|d | || d|d   |d||	|	d|
|
dd q9q/|d
dg |ddg d S )Nr   r   r   gz#ff0000cmr   )r   r   r   
lightgreenr   r   	   rA         ?r   r4   rB   )	marker
markersizemarkerfacecoloralt	fillstylelabel	linewidthrJ   markeredgecolormarkeredgewidthg      @   )	itertoolscycler	   r
   r   r9   	enumerater   r"   filled_markers
fillStylesnextrF   set_ylimset_xlim)colorsaltcolorr   r   r*   r+   jr   ifsrJ   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   orI   )r   red)r   markerfacecolorN)r   rF   r   get_fillstyleget_markerfacecolor)r,   r   r   r   test_markerfacecolor_fillstyle   s
   r   scaled_linesre   )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       )r[   r^   r\   zaxes.prop_cycler   rA   2   g?rC   )r	   r   r   r9   r   
matplotlibrcParamsr   rk   rF   ones)	thr*   r+   lins_stylesr   r   r_   styrE   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 r3J d S )Nr   r   r   r   r   rB   d   r   r   )r   r"   
_is_sortedr	   r
   nanrU   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-or~   )r   r   r   r   	markevery)r9   steprF   fig_testfig_refr   r   r   test_step_markers   s   &r   )png)
extensionsc                 C   s   t jd t ddd}t jt|}d ddg dddgtd	d
dddt t||dk g	}g d}|dd}| dd}t	|j
|D ]\}}	|j||d|	d qGt	|j
|D ]\}}	t t|	tt}
|j||d|
d q[d S )N*   r   r         )r   rB   )r   rB      rB   rA   r   333333?)r   g?r   )	111111111111111000100010001000100001000010010001000001001000000000000100000101010000110110110111100101001101110101110001110110z-gDr   )r	   r   r:   r   randrv   slicearanger9   rk   rl   rF   r
   listastypeintbool)r   r   tr   casesAcasesBaxsAaxsBr+   casemer   r   r   test_markevery   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)r   sr   g      g      ?g        g       @T)closedr      )r   ms)r   r   r   )r   r9   rF   r   r&   r'   
get_marker
set_markerr   r   rx   )r*   r+   rV   	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   )add_subplotrF   r   r   r   r   test_odd_dashes  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)pickerr4   )r   
pickradiusind)
r   r9   r   bboxwidthheightrF   containsr   set_pickradius)r*   r+   mouse_eventl0foundindicesl1l2r   r   r   test_picking  s$   
r   )0__doc__r   r%   typesr   r   numpyr	   numpy.testingr   rQ   r   matplotlib.lineslinesr   matplotlib.markersr   matplotlib.pathr   matplotlib.pyplotpyplotr   matplotlib.testing.decoratorsr   r   r   markflakyr1   r>   rH   rM   rW   r`   rc   rq   rs   ry   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sX    

+









