a
    ëÝEbº—  ã                
   @   sò  d dl Z d dlmZ d dlZd dlmZ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 d dlmZmZmZmZ d dlmZmZ d dl m!Z! dd	„ Z"ed
gƒdd„ ƒZ#edgƒdd„ ƒZ$edgƒdd„ ƒZ%edgƒdd„ ƒZ&edgƒdd„ ƒZ'edgƒdd„ ƒZ(edgƒdd„ ƒZ)edgƒd d!„ ƒZ*ed"gƒd#d$„ ƒZ+ed%gƒd&d'„ ƒZ,eg d(¢ƒd)d*„ ƒZ-ed+gƒd,d-„ ƒZ.d.d/„ Z/d0d1„ Z0d2d3„ Z1e
j2 3d4¡ed5gd6�d7d8„ ƒƒZ4d9d:„ Z5d;d<„ Z6ed=gd>d?�d@dA„ ƒZ7edBgd>d?�dCdD„ ƒZ8edEgd>d?�dFdG„ ƒZ9edHgd>d?�dIdJ„ ƒZ:dKdL„ Z;dMdN„ Z<edOgd>d?�dPdQ„ ƒZ=dRdS„ Z>e
j2 3dT¡dUdV„ ƒZ?e
j2 3dT¡dWdX„ ƒZ@e
j2 3dT¡dYdZ„ ƒZAed[gƒd\d]„ ƒZBed^gd>dTd_�d`da„ ƒZCdbdc„ ZDddde„ ZEdfdg„ ZFdhdi„ ZGdjdk„ ZHdldm„ ZIdndo„ ZJejK Ldpd>i fdqi fd>eMdqdr�fdqeMdsdt�fg¡ed5gd6�dudv„ ƒƒZNed5gd6�dwdx„ ƒZOdydz„ ZPd{d|„ ZQd}d~„ ZRdd€„ ZSd�d‚„ ZTdƒd„„ ZUd…d†„ ZVe
j2 3dT¡ejK Ld‡ejWejXg¡dˆd‰„ ƒƒZYdŠd‹„ ZZdŒd�„ Z[dŽd�„ Z\d�d‘„ Z]d’d“„ Z^d”d•„ Z_d–d—„ Z`dS )˜é    N)ÚSimpleNamespace)Úassert_array_equalÚassert_array_almost_equal)Ú
MouseEvent)Ú
CollectionÚLineCollectionÚEventCollectionÚPolyCollection)Úcheck_figures_equalÚimage_comparison)ÚMatplotlibDeprecationWarningc               
   C   s®   t  g d¢¡} t  g d¢¡}d}d}d}d}g d¢}d}d	}t| |||||||d
�}	t ¡ \}
}| |	¡ | d¡ | ||||||||dœ	}| dd¡ | dd¡ ||	|fS )z,Generate the initial collection and plot it.)ç        ç      ð?ç       @ç      @g      @g       @g      *@g      5@)g      A@g     €K@g     @V@Ú
horizontalé   ç      à?é   ©r   r   r   r   ÚsolidT)ÚorientationÚ
lineoffsetÚ
linelengthÚ	linewidthÚcolorÚ	linestyleÚantialiasedzEventCollection: default)	Ú	positionsÚextra_positionsr   r   r   r   r   r   r   éÿÿÿÿé   r   )	ÚnpÚarrayr   ÚpltÚsubplotsÚadd_collectionÚ	set_titleÚset_xlimÚset_ylim)r   r   r   r   r   r   r   r   r   ÚcollÚfigÚaxÚprops© r.   úa/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_collections.pyÚgenerate_EventCollection_plot   sD    ù


ø
r0   ZEventCollection_plot__defaultc                  C   sÊ   t ƒ \} }}t||d |d |d |d ƒ tj |d | ¡ ¡ |d | ¡ ksVJ ‚| ¡ sbJ ‚|d | ¡ ksvJ ‚|d | 	¡ ksŠJ ‚| 
¡ dgksœJ ‚| ¡ g| ¡ ¢D ]}tj ||d ¡ q®d S )Nr   r   r   r   ©r   Nr   )r0   Úcheck_segmentsr"   Útestingr   Úget_positionsÚget_orientationÚis_horizontalÚget_linelengthÚget_lineoffsetZget_linestyleÚ	get_colorÚ
get_colors)Ú_r*   r-   r   r.   r.   r/   Ú test__EventCollection__get_props<   s    ür<   Z#EventCollection_plot__set_positionsc                  C   st   t ƒ \} }}t |d |d g¡}| |¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd¡ d S )	Nr   r   r   r   r   zEventCollection: set_positionsr    éZ   )
r0   r"   ÚhstackZset_positionsr3   r   r4   r2   r'   r(   ©Úspltr*   r-   Únew_positionsr.   r.   r/   Ú$test__EventCollection__set_positionsV   s    
ý
rB   Z#EventCollection_plot__add_positionsc                  C   s�   t ƒ \} }}t |d |d d g¡}| ¡  | |d d ¡ | ¡  tj || ¡ ¡ t|||d |d |d ƒ |  	d¡ |  
dd	¡ d S )
Nr   r   r   r   r   r   zEventCollection: add_positionsr    é#   )r0   r"   r>   Úswitch_orientationZadd_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   Ú$test__EventCollection__add_positionsd   s     

ÿü
rE   Z&EventCollection_plot__append_positionsc                  C   s€   t ƒ \} }}t |d |d d g¡}| |d d ¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd	¡ d S )
Nr   r   r   r   r   r   z!EventCollection: append_positionsr    r=   )
r0   r"   r>   Zappend_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   Ú'test__EventCollection__append_positionsv   s    

ÿü
rF   Z&EventCollection_plot__extend_positionsc                  C   sˆ   t ƒ \} }}t |d |d dd … g¡}| |d dd … ¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd	¡ d S )
Nr   r   r   r   r   r   z!EventCollection: extend_positionsr    r=   )
r0   r"   r>   Zextend_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   Ú'test__EventCollection__extend_positions†   s    
ÿü
rG   Z(EventCollection_plot__switch_orientationc                  C   sz   t ƒ \} }}d}| ¡  || ¡ ks(J ‚| ¡ r4J ‚| ¡ }t|||d |d |ƒ |  d¡ |  dd¡ |  dd¡ d S )	NÚverticalr   r   z#EventCollection: switch_orientationr    r!   r   r   )	r0   rD   r5   r6   r4   r2   r'   r)   r(   )r@   r*   r-   Únew_orientationrA   r.   r.   r/   Ú)test__EventCollection__switch_orientation–   s    ý
rJ   Z,EventCollection_plot__switch_orientation__2xc                  C   s€   t ƒ \} }}| ¡  | ¡  | ¡ }|d | ¡ ks8J ‚| ¡ sDJ ‚tj |d |¡ t|||d |d |d ƒ |  	d¡ dS )zc
    Check that calling switch_orientation twice sets the orientation back to
    the default.
    r   r   r   r   z&EventCollection: switch_orientation 2xN)
r0   rD   r4   r5   r6   r"   r3   r   r2   r'   r?   r.   r.   r/   Ú,test__EventCollection__switch_orientation_2x§   s    ürK   Z%EventCollection_plot__set_orientationc                  C   sx   t ƒ \} }}d}| |¡ || ¡ ks*J ‚| ¡ r6J ‚t||d |d |d |ƒ |  d¡ |  dd¡ |  dd	¡ d S )
NrH   r   r   r   z EventCollection: set_orientationr    r!   r   r   )r0   Zset_orientationr5   r6   r2   r'   r)   r(   )r@   r*   r-   rI   r.   r.   r/   Ú&test__EventCollection__set_orientation¼   s    
ü
rL   Z$EventCollection_plot__set_linelengthc                  C   s`   t ƒ \} }}d}| |¡ || ¡ ks*J ‚t||d ||d |d ƒ |  d¡ |  dd¡ d S )Né   r   r   r   zEventCollection: set_linelengthiìÿÿÿé   )r0   Zset_linelengthr7   r2   r'   r)   )r@   r*   r-   Znew_linelengthr.   r.   r/   Ú%test__EventCollection__set_linelengthÍ   s    
ü
rO   Z$EventCollection_plot__set_lineoffsetc                  C   s`   t ƒ \} }}d}| |¡ || ¡ ks*J ‚t||d |d ||d ƒ |  d¡ |  dd¡ d S )Ng      Àr   r   r   zEventCollection: set_lineoffsetiúÿÿÿéüÿÿÿ)r0   Zset_lineoffsetr8   r2   r'   r)   )r@   r*   r-   Znew_lineoffsetr.   r.   r/   Ú%test__EventCollection__set_lineoffsetÜ   s    
ü
rQ   )Ú#EventCollection_plot__set_linestylerR   Z#EventCollection_plot__set_linewidthc                  C   sn   dddgfdddgfdfD ]N\} }}t ƒ \}}}|jf i | |i¤Ž t || ¡|ksXJ ‚| d| › �¡ qd S )Nr   Údashed)r   )ç      @rT   )r   é   rU   zEventCollection: set_)r0   Úsetr$   Zgetpr'   )ÚpropÚvalueÚexpectedr@   r*   r;   r.   r.   r/   Útest__EventCollection__set_propë   s    

ýrZ   ZEventCollection_plot__set_colorc                  C   sX   t ƒ \} }}t g d¢¡}| |¡ | ¡ g| ¡ ¢D ]}tj ||¡ q6|  d¡ d S )N)r   r   r   r   zEventCollection: set_color)	r0   r"   r#   Ú	set_colorr9   r:   r3   r   r'   )r@   r*   r;   Ú	new_colorr   r.   r.   r/   Ú test__EventCollection__set_colorü   s    
r]   c           
      C   sÎ   |   ¡ }| ¡ dks(| ¡ dks(|du r2d}d}n| ¡ dkrHd}d}ntdƒ‚t|ƒD ]p\}}	|	d|f ||d  ks|J ‚|	d|f ||d  ks˜J ‚|	d|f || ks°J ‚|	d|f || ksXJ ‚qXdS )	zp
    Test helper checking that all values in the segment are correct, given a
    particular set of inputs.
    r   ÚnoneNr   r   rH   z.orientation must be 'horizontal' or 'vertical'r   )Úget_segmentsÚlowerÚ
ValueErrorÚ	enumerate)
r*   r   r   r   r   ÚsegmentsZpos1Úpos2ÚiÚsegmentr.   r.   r/   r2     s"    
ÿÿr2   c                  C   s4   t  g ¡} |  t ¡ ¡}t| ¡ tj ¡  ¡ ƒ d S ©N)	ÚmcollectionsÚPathCollectionÚget_datalimÚmtransformsÚIdentityTransformr   Z
get_pointsZBboxÚnull)ÚcolZcol_data_limr.   r.   r/   Útest_null_collection_datalim   s
    
ÿro   c                  C   sV   t  ¡  t  ¡ } |  ddgddg¡}|  |¡ | jj}|  g g ¡}| jj|ksRJ ‚d S )Nr   r   )r$   ÚfigureÚaxesÚscatterr&   ÚdataLimÚbounds)r,   r*   rt   r.   r.   r/   Útest_add_collection'  s    
ru   Zmpl20Zpng)Ú
extensionsc                 C   s�   g d¢}g d¢}t  ||¡\}}| ¡ }| ¡ }|  ¡ }| d¡ | d¡ d|_| ||¡ | ¡ }| d¡ | d¡ |j||ddd� d S )N)g¥+ócÒ>gë®`8�F×>gq�[€;uÝ>gƒy7½/¤â>gÖÿ9Ì—ç>gWÇ!Üí>gÄ-–Iåò>g\p5ê÷>gd‘jDþ>g—y¹´K'?gÈ~Í+»=?gFEAL ®?g��|™0j?gÇ÷GKe’?gÞ�´=B?)r   çš™™™™™¹?g²�ï§ÆKÇ?gsh‘í|?Õ?g‡ÙÎ÷Sã?gš™™™™™ñ?r   g…ëQ¸@g�Âõ(\�@g333333(@g      6@gÍÌÌÌÌÌC@g33333ÓQ@Úlogr   ÚoÚ )ÚmarkerÚls)	r"   ÚmeshgridÚflattenr%   Z
set_xscaleZ
set_yscaleZmarginsrr   Zplot)Úfig_testÚfig_refZx_valsZy_valsÚxÚyZax_testZax_refr.   r.   r/   Útest_collection_log_datalim3  s    



rƒ   c                  C   sä   t  ¡ } t d¡t d¡ }}t ddd¡ dd¡ }}t  ||||¡}| | j¡j	dks^J ‚t  
¡  t  ¡ } t ddd¡}t dd	d¡}t ||¡\}}t ¡  d
d¡| j }t j||t |¡t |¡|d� | jj	dksàJ ‚d S )Né   é
   r   éP   )r   r   g      @g      "@éûÿÿÿrN   éþÿÿÿé   é   é    ©Ú	transform)g      4@g      >@g      .@rT   )r$   rq   r"   ÚarangeÚlinspaceÚreshapeZquiverrj   Ú	transDatart   rp   r}   rk   ÚAffine2DÚ	translateÚsinÚcosrs   )r,   r�   r‚   ÚuÚvÚqÚtransr.   r.   r/   Útest_quiver_limitsM  s     rš   c                  C   s€   t  ¡ } t ddd¡}t ddd¡}t ||¡\}}t ¡  dd¡| j }t j	||t 
|¡t |¡|d� t| jjd	d
d� d S )Nr‡   r…   rN   rˆ   r‰   rŠ   r‹   rŒ   )rN   é   rM   é   r   ©Údecimal)r$   rq   r"   r�   r}   rk   r’   r“   r‘   Zbarbsr”   r•   r   rs   rt   )r,   r�   r‚   r™   r.   r.   r/   Útest_barb_limits^  s     
ÿrŸ   z EllipseCollection_test_image.pngT)Úremove_textc               	   C   sž   t  ¡ \} }t d¡}t d¡}t ||¡\}}t | ¡ | ¡ f¡j}||d  }||d  }t |¡d }	t	j
|||	d||jdd�}
| |
¡ | ¡  d S )Nr‰   é   r    rN   r�   r^   )ÚunitsÚoffsetsÚtransOffsetÚ
facecolors)r$   r%   r"   rŽ   r}   ZvstackÚravelÚTZ	ones_likerh   ÚEllipseCollectionr‘   r&   Úautoscale_view)r+   r,   r�   r‚   ÚXÚYZXYZwwÚhhÚaaÚecr.   r.   r/   Útest_EllipseCollectionl  s     


ü
r¯   zpolycollection_close.pngc                  C   sL  ddl m}  ddgddgddgddggddgddgddgddggddgddgddgddggddgddgddgddggg}t ¡ }| | |dd	�¡}g d
¢}ttdƒƒ}tj|t	|ƒ dd�}| 
d¡ g }g }t||ƒD ]0\}	}
| |	gt	|ƒ ¡ | |
gt	|ƒ ¡ qØ| |¡ |j||dd� | dd¡ | dd¡ | dd¡ d S )Nr   )ÚAxes3Dr   r   r   r   ç      @F)Zauto_add_to_figure)ÚrÚgÚbr‚   ÚkrU   g      Ð?©r   gffffffæ?r‚   )ÚzsZzdirr‰   r¡   )Zmpl_toolkits.mplot3dr°   r$   rp   Zadd_axesÚlistÚrangerh   r	   ÚlenÚ	set_alphaÚzipÚextendr[   Zadd_collection3dZ
set_xlim3dZ
set_zlim3dZ
set_ylim3d)r°   Z	vertsQuadr+   r,   ÚcolorsZzposZpolyr·   ÚcsÚzÚcr.   r.   r/   Útest_polycollection_close‚  s0    üÿ

rÂ   z regularpolycollection_rotate.pngc            	      C   sš   t jd d…d d…f \} }t  |  ¡ | ¡ g¡}t  ddt j t|ƒ¡}t ¡ \}}t	||ƒD ].\}}t
jdd||g|jd�}|j|dd� q^| ¡  d S )	Nr…   r   r   r‰   )éd   )ÚsizesÚrotationr£   r¤   T©Zautolim)r"   ZmgridZ	transposer~   r�   Úpirº   r$   r%   r¼   rh   ÚRegularPolyCollectionr‘   r&   r©   )	ÚxxÚyyZ	xy_pointsZ	rotationsr+   r,   ÚxyÚalpharn   r.   r.   r/   Ú!test_regularpolycollection_rotate§  s    þrÍ   zregularpolycollection_scale.pngc                  C   s`   G dd„ dt jƒ} t ¡ \}}dg}tjd g}| |||jd�}|j|dd� | g d¢¡ d S )	Nc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )z:test_regularpolycollection_scale.<locals>.SquareCollectionc                    s    t ƒ jddtjd i|¤Ž d S )Nr‰   rÅ   r±   )r‰   )ÚsuperÚ__init__r"   rÇ   )ÚselfÚkwargs©Ú	__class__r.   r/   rÏ   »  s    zCtest_regularpolycollection_scale.<locals>.SquareCollection.__init__c                 S   sJ   | j }d|jj }||jj |jj }||jj |jj }t ¡  	||¡S )z4Return transform scaling circle areas to data space.g      R@)
rq   rp   ÚdpiZbboxÚwidthZviewLimÚheightrk   r’   Úscale)rÐ   r,   Z
pts2pixelsZscale_xZscale_yr.   r.   r/   Úget_transform¾  s
    zHtest_regularpolycollection_scale.<locals>.SquareCollection.get_transform)Ú__name__Ú
__module__Ú__qualname__rÏ   rØ   Ú__classcell__r.   r.   rÒ   r/   ÚSquareCollectionº  s   rÝ   )r   r   r   )rÄ   r£   r¤   TrÆ   )r    r   r    r   )	rh   rÈ   r$   r%   r"   rÇ   r‘   r&   Úaxis)rÝ   r+   r,   rË   Zcircle_areasZsquaresr.   r.   r/   Ú test_regularpolycollection_scale¶  s    ÿrß   c                  C   sn   t  ¡ \} }|jdgdgdgdd�}| jt ¡ | jd� tddd�}| |¡\}}|sZJ ‚t	|d	 dgƒ d S )
Nr   iè  T)Zpicker)rÔ   iE  éð   )r�   r‚   Úind)
r$   r%   rr   ZsavefigÚioÚBytesIOrÔ   r   Úcontainsr   )r+   r,   rn   Zmouse_eventÚfoundÚindicesr.   r.   r/   Útest_pickingÓ  s    rç   c                   C   s,   t jg d¢g d¢dddgfd� t  ¡  d S )N©r   r   r   r   r   )r   )r$   rr   Údrawr.   r.   r.   r/   Útest_linestyle_single_dashesÝ  s     rê   zsize_in_xy.pngc                  C   s`   t  ¡ \} }d\}}}d}ddg}tj|||d||jd�}| |¡ | dd¡ | dd¡ d S )N)©r…   r…   r…   r   rë   )rM   rM   rË   )r¢   r£   r¤   r   r›   )r$   r%   rh   r¨   r‘   r&   r(   r)   )r+   r,   ÚwidthsZheightsZanglesÚcoordsÚer.   r.   r/   Útest_size_in_xyâ  s    
ü
rï   c                 C   sŠ   g d¢}| j g d¢|d� }}| j g d¢|d�}| j g d¢|d�}| j g d¢|d�}t|d� t|d� t|d	� t|d
� t|d� d S )N)é   é   é   )ÚredÚblueÚgreen)Úindex©r   r   r¡   )r   rS   Zdashdot)TFT)Ú
edgecolors)r¥   )Ú
linewidths)Z
linestyles)Zantialiaseds)ZSeriesr   )Úpdrö   r®   ZfcZlwr|   r­   r.   r.   r/   Útest_pandas_indexingõ  s    



rû   Údefaultc                  C   s”   t  g ¡} |  ddg¡ |  g d¢¡ |  ¡ dgd ks<J ‚|  ¡ g d¢d ksTJ ‚|  g d¢¡ |  ¡ dgd ksxJ ‚|  ¡ g d¢k ¡ s�J ‚d S )Nú-r÷   r1   rœ   r   )rý   rý   rý   r¡   )rh   ri   Zset_linestylesZset_linewidthsZget_linestylesZget_linewidthsÚall©rn   r.   r.   r/   Útest_lslw_bcast  s    
r   c                  C   s<   t jg dd�} |  ¡ dksJ ‚|  d¡ |  ¡ dks8J ‚d S )NÚround)ZcapstyleZbutt)rh   ri   Zget_capstyleÚset_capstylerÿ   r.   r.   r/   Útest_capstyle  s    
r  c                  C   s<   t jg dd�} |  ¡ dksJ ‚|  d¡ |  ¡ dks8J ‚d S )Nr  )Z	joinstyleÚmiter)rh   ri   Zget_joinstyleÚset_joinstylerÿ   r.   r.   r/   Útest_joinstyle  s    
r  zcap_and_joinstyle.pngc                  C   sÎ   t  ¡ \} }| ddg¡ | ddg¡ t g d¢¡}t dgdgdgg¡t g d¢g¡ }t d	¡}||d d …d d …d
f< ||d d …d d …df< t|g d¢d�}| d¡ | 	d¡ | 
|¡ | d¡ d S )Ng      à¿g      ø?ç      @)r   r   r   r   r   r   )r   r   r   )r¡   r¡   r   r   r   )r…   rM   rN   r¶   r  r  z2Line collection with customized caps and joinstyle)r$   r%   r(   r)   r"   r#   Zzerosr   r  r  r&   r'   )r+   r,   r�   ZysZsegsZline_segmentsr.   r.   r/   Útest_cap_and_joinstyle_image$  s    &



r  zscatter_post_alpha.png)r    Ústylec                  C   s6   t  ¡ \} }|jtdƒtdƒtdƒd�}| d¡ d S )NrU   ©rÁ   rw   )r$   r%   rr   r¹   r»   )r+   r,   Úscr.   r.   r/   Útest_scatter_post_alpha8  s    r  c                  C   sŒ  t  d¡} | d }t d¡\}\}}|j| | | |d�}|j| | | d�}| |¡ t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ t d¡\}\}}|j| | g d¢|d�}|j| | d|d�}t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ t d¡\}\}}|j| | g d¢d	�}| |¡ |j| | dd	�}| |¡ t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ d S )
NrU   r   )rÁ   rÌ   r
  r    )r²   r³   r´   rÁ   Úm)r   rÌ   r²   )r   )	r"   rŽ   r$   r%   rr   r»   ré   r   Úget_facecolors)r�   rÌ   r+   Úax0Úax1Zsc0Zsc1r.   r.   r/   Útest_scatter_alpha_array@  s.    



r  c               	   C   s€  t j d¡ t j dd¡\} }t j d¡}t jjdddd�}t jjdddd�}t ¡ \}}|j| |||dd	dd
�}|jdd�\}}t	|ƒdks’J ‚t
t  |¡ t¡t  d¡ƒ t  dd„ |D ƒ¡}	| t  d¡d ¡}
t
|	|
ƒ |j||dd�}|jdd�\}}t	|ƒdk�sJ ‚|j||dd�}|jdddd�\}}t  dd„ |D ƒ¡}t
|dƒ t  dd„ |D ƒ¡}t
|dƒ |j||dd�}|jddddd„ d�\}}dd„ |D ƒ}t  t  |¡ t¡d ¡}t||ƒ |j||dd�}tjjdd g d!¢d"�}|j|d�\}}t	|ƒt	|ƒk�sJ ‚g d#¢}|j|ddd$�\}}t
t  |¡ t¡|dd … ƒ ||||fD ]}| |¡ �q`|j ¡  d S )%Né!N,r   r…   r   rU   )Úsizei,  Zjetry   )rÁ   ÚsÚcmapr{   rù   z{x:g})Úfmtc                 S   s   g | ]}|  ¡ ‘qS r.   )r9   ©Ú.0Úliner.   r.   r/   Ú
<listcomp>j  ó    z7test_pathcollection_legend_elements.<locals>.<listcomp>r‰   r   )Úlocé	   )ÚnumrÄ   r   ró   )rW   rÌ   r   c                 S   s   g | ]}|  ¡ ‘qS r.   )Z	get_alphar  r.   r.   r/   r  t  r  c                 S   s   g | ]}|  ¡ ‘qS r.   )Zget_markerfacecolorr  r.   r.   r/   r  v  r  z{x:.2f}c                 S   s   d|  S )Nr   r.   )r�   r.   r.   r/   Ú<lambda>{  r  z5test_pathcollection_legend_elements.<locals>.<lambda>)rW   r  r  Úfuncc                 S   s   g | ]}|  ¡ ‘qS r.   ©Zget_markersizer  r.   r.   r/   r  |  r  r¡   r„   )r   r   r  r¡   rU   rœ   r„   r…   )ZnbinsZmin_n_ticksZsteps)r    r   g33333³K@i  )r  rW   r  )r"   ÚrandomÚseedZrandÚrandintr$   r%   rr   Úlegend_elementsrº   r   r#   ZastypeÚfloatrŽ   r  ZlegendÚsqrtr   ÚmplZtickerZMaxNLocatorZ
add_artistÚcanvasré   )r�   r‚   rÁ   r  r+   r,   r  ÚhÚlr¾   Zcolors2Úl1Úh2Zlab2Úl2rÌ   r   Úl3ZactsizesZlabeledsizesÚl4r  Úh5Zlab5ZlevelsÚh6Zlab6r.   r.   r/   Ú#test_pathcollection_legend_elements]  sR    



ÿ


ÿr3  c                  C   s2   t  g d¢¡} t| ƒ}t j | t  g d¢¡¡ d S )N)r¡   r   r   r…   )r"   r#   r   r3   r   )Zarrr*   r.   r.   r/   Útest_EventCollection_nosort�  s    r4  c                  C   s  t jdt jd� ddd¡} t| ƒ}tt| ƒƒ}t|jƒt|jƒksFJ ‚t|j|jƒD ]0\}}t  	|j
|j
¡spJ ‚t  	|j|j¡sTJ ‚qTt jdtd�}dd„ | D ƒ|d d …< t|ƒ}t|jƒt|jƒksÊJ ‚t|j|jƒD ]0\}}t  	|j
|j
¡sôJ ‚t  	|j|j¡sØJ ‚qØd S )Nr†   )Zdtyper…   r‰   r   c                 S   s   g | ]}t d d„ |D ƒƒ‘qS )c                 s   s   | ]}t |ƒV  qd S rg   ©Útuple)r  r‚   r.   r.   r/   Ú	<genexpr>¡  r  z=test_collection_set_verts_array.<locals>.<listcomp>.<genexpr>r5  ©r  r�   r.   r.   r/   r  ¡  r  z3test_collection_set_verts_array.<locals>.<listcomp>)r"   rŽ   Údoubler�   r	   r¸   rº   Ú_pathsr¼   Úarray_equalÚ	_verticesÚ_codesÚemptyÚobject)ZvertsZcol_arrZcol_listZapZlpZverts_tupleZcol_arr_tupleZatpr.   r.   r/   Útest_collection_set_verts_array—  s    r@  c                  C   sx   g t dƒ¢} tƒ }| | ¡ tjtdd�� | d¡ W d   ƒ n1 sJ0    Y  d| d< t | | ¡ ¡ 	¡ stJ ‚d S )Nr…   z^Image data of dtype©ÚmatchZwrong_inputé-   rU   )
r¹   r   Ú	set_arrayÚpytestÚraisesÚ	TypeErrorr"   Ú	not_equalÚ	get_arrayÚany)ÚvalsrÁ   r.   r.   r/   Útest_collection_set_array©  s    
(rL  c                  C   sœ   g d¢} d}t  t  | d¡t  d|gt| ƒ¡g¡}| t| ƒddg¡}t ¡ \}}t 	|j
|j¡}| t||d�¡ |jddd� t j | ¡ d	d
g¡ d S )N)r   r   r‰   çš™™™™™É?r   r   rŒ   TF)ZscalexZscaleyr   r±   )r"   Zcolumn_stackÚrepeatÚtilerº   r�   r$   r%   rk   Zblended_transform_factoryr‘   Z	transAxesr&   r   r©   r3   Úassert_allcloseÚget_xlim)ÚarÖ   Zxy_pairsZ	line_segsÚfr,   r™   r.   r.   r/   Útest_blended_collection_autolim¹  s    &rT  c                  C   sH   t  ¡ \} }| dd¡ tj | ¡ ddg¡ tj | ¡ ddg¡ d S )Nr   g¸…ëQ¸®¿g¸…ëQ¸®?)r$   r%   rr   r"   r3   rP  Zget_ylimrQ  )r+   r,   r.   r.   r/   Útest_singleton_autolimÇ  s    rU  zflat_ref, kwargsF)r   Z__initialization_delayed__rŒ   c                 C   sš  ddl m} g d¢}g d¢}t ||¡\}}|d| 7 }tj||gdd�}	|	jdksXJ ‚t dd	d
¡ d	d¡}
|  ¡ }|j	ddd� d|v r¤t
 ¡  d¡|j |d< ||	fi |¤Ž}| |
¡ | |¡ |jdksÖJ ‚| ¡ }|j	ddd� d|v �rt
 ¡  d¡|j |d< t t¡�: |dd	|�r6|	 ¡  dd	¡n|	fi |¤Ž}W d   ƒ n1 �sZ0    Y  | |�rv|
 ¡ n|
¡ | |¡ |jdk�s–J ‚d S )Nr   ©ÚQuadMesh©r   r   r   r   ©r   r   r   rM  r    ©rÞ   ©r¡   r‰   r   r   rœ   r¡   ©r   rU   ©r   r‰   ©ZxlimZylimr�   g333333ó?Zflat)Úmatplotlib.collectionsrW  r"   r}   ÚstackÚshaper�   r�   Úadd_subplotrV   rk   r’   r×   r‘   rD  r&   Z_shadingrE  Úwarnsr   Úcopyr~   )r   r€   Zflat_refrÑ   rW  r�   r‚   rª   r«   rí   ÚCr,   Úqmeshr.   r.   r/   Ú"test_quadmesh_deprecated_signatureÎ  s:    


ÿþ&
rg  c                 C   s,  ddl m} g d¢}g d¢}t ||¡\}}|d| 7 }tj||gdd�}|jdksXJ ‚| ¡  dd	¡}t dd	d
¡ dd¡}	|  	¡ }
|
j
ddd� ||ddd�}| |	¡ |
 |¡ | 	¡ }
|
j
ddd� t t¡�, |dd	| ¡  dd	¡ddƒ}W d   ƒ n1 �s
0    Y  | |	¡ |
 |¡ d S )Nr   rV  rX  rY  rM  r    rZ  r[  r   rñ   r¡   r‰   r\  r]  r^  FÚgouraud)r   Úshading)r_  rW  r"   r}   r`  ra  rd  r�   r�   rb  rV   rD  r&   rE  rc  r   )r   r€   rW  r�   r‚   rª   r«   rí   Zcoords_flatre  r,   rf  r.   r.   r/   Ú#test_quadmesh_deprecated_positionalù  s,    

ÿ$
rj  c                  C   s<  t  d¡} t  d¡}t j d¡}t ¡ \}}| | ||¡}t t¡�" | 	| 
dd¡¡ W d   ƒ n1 sl0    Y  t  d¡ 
d¡}tjtdd	�� | 	|¡ W d   ƒ n1 s´0    Y  tjtd
d	�� | 	| ¡ ¡ W d   ƒ n1 sð0    Y  t  d¡} t  d¡}t j d¡}t ¡ \}}|j| ||dd�}d S )Nrð   r„   )é   r…   r…   rk  é6   )rœ   r  zFDimensions of A \(6, 9\) are incompatible with X \(11\) and/or Y \(8\)rA  zEDimensions of A \(54,\) are incompatible with X \(11\) and/or Y \(8\)rh  ©ri  )r"   rŽ   r"  r$   r%   Ú
pcolormeshrE  rc  r   rD  r�   rF  rG  r¦   ©r�   r‚   rÀ   r+   r,   r*   r.   r.   r/   Ú"test_quadmesh_set_array_validation  s"    

0(,

rp  c                  C   s`   g d¢} g d¢}t jdd�}t  | |¡\}}t |||¡}t  |j|jg¡j}t| ¡ |ƒ d S )Nrè   )r   r‰   rœ   )r   r   )ra  )	r"   Úonesr}   r$   rn  r`  r§   r   Zget_coordinates)r�   r‚   rÀ   rÉ   rÊ   r*   rí   r.   r.   r/   Útest_quadmesh_get_coordinates2  s    rr  c                  C   s<  t  d¡} t  d¡}t  d¡ d¡}t ¡ \}}| | |t  |j¡¡}| |¡ |j	 
¡  t  | ¡ |¡snJ ‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡s¢J ‚t  d¡ d¡}t ¡ \}}|j| |t  |j¡dd�}| |¡ |j	 
¡  t  | ¡ |¡�sJ ‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡�s8J ‚d S )Nr‰   r  ©r¡   r¡   é   )r‰   r‰   rh  rm  )r"   rŽ   r�   r$   r%   rn  rq  ra  rD  r)  ré   r;  rI  ro  r.   r.   r/   Útest_quadmesh_set_array>  s(    







ru  c                  C   s°   t  ¡ \} }tj d¡}tjjddd�}|jdgg||d�}| j 	¡  t
 | ¡ dd d …f ||dƒƒ¡snJ ‚d\|_|_| j 	¡  t
 | ¡ dd d …f ||dƒƒ¡s¬J ‚d S )NZplasmar   r   )ÚvminÚvmax)r  Únorm)r   r   )r$   r%   r(  ÚcmÚget_cmapr¾   Z	Normalizern  r)  ré   r"   r;  r  rv  rw  )r+   r,   r  rx  r*   r.   r.   r/   Útest_quadmesh_vmin_vmax\  s    
(
r{  c            
      C   s,  t  d¡} t  d¡}t  d¡ d¡}|| ¡  }| ¡ }t d¡\}\}}|j| |||d�}| | ||¡}	|	 |¡ t 	¡  t
| ¡ d d …df |ƒ t
|	 ¡ d d …df |ƒ t d¡\}\}}|j| |||d�}| | ||¡}	|	 |¡ t 	¡  t
| ¡ d d …df |ƒ t
|	 ¡ d d …df |ƒ d S )Nr‰   r  rs  r   )rÌ   r    )r"   rŽ   r�   Úmaxr¦   r$   r%   rn  r»   ré   r   r  )
r�   r‚   rÀ   rÌ   Z
alpha_flatr+   r  r  Zcoll1Zcoll2r.   r.   r/   Útest_quadmesh_alpha_arrayl  s&    



r}  c                  C   sj   t  ¡ \} }| t d¡ d¡¡}tjtdd��& | 	ddg¡ | 
¡  W d   ƒ n1 s\0    Y  d S )Nrñ   )r¡   r‰   z^Data array shaperA  r   ç333333ã?)r$   r%   rn  r"   rŽ   r�   rE  rF  ra   r»   Úupdate_scalarmappable)r+   r,   Úpcr.   r.   r/   Útest_alpha_validation„  s
    r�  c                  C   s¦   t j d¡ t j d¡} t j d¡}dt j d¡ }d| }g d¢}t ¡ \}}|j| ||d�}|jd|dd	„ d
�\}}	dd„ |D ƒ}
dd„ |
D ƒ}
t|
|dd� dS )z|
    Ensure legend markers scale appropriately when label and size are
    inversely related.
    Here label = 5 / size
    r  é2   r   rU   )rM  gš™™™™™Ù?r~  gš™™™™™é?©r  rÄ   c                 S   s   d|  S )NrU   r.   rƒ  r.   r.   r/   r  ž  r  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rW   r  r   c                 S   s   g | ]}|  ¡ ‘qS r.   r!  r8  r.   r.   r/   r  ¢  r  z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  ‘qS )rU   r   r.   r8  r.   r.   r/   r  £  r  r�   N)r"   r"  r#  r$   r%   rr   r%  r   )rª   r«   re  ÚSZlegend_sizesr+   r,   r  ZhandlesÚlabelsZhandle_sizesr.   r.   r/   Ú+test_legend_inverse_size_label_relationship�  s    
ÿ
r†  Úpcfuncc                 C   sn  t  d¡ dd¡}| |ddd�}| ¡  t | ¡ ¡}| ¡ | | 	¡ ¡ƒ}t 
| ¡ d¡s`J ‚| |ƒ}| d¡ | d¡ | ¡  t 
| ¡ d¡s˜J ‚t 
| ¡ g d¢g¡s²J ‚| d¡ | ¡  t 
| ¡ g d	¢g¡sÞJ ‚| d ¡ | ¡  t 
| ¡ g d¢g¡�sJ ‚| d ¡ | ¡  t 
| ¡ |¡�s4J ‚| d ¡ | ¡  t 
| ¡ |¡�s\J ‚t 
| ¡ d¡�srJ ‚| d ¡ | ¡  t 
| ¡ d¡�sšJ ‚t 
| ¡ |¡�s°J ‚| | 	¡ ¡ | ¡  t 
| ¡ |¡�sÜJ ‚t 
| ¡ d¡�sòJ ‚| |d
dd�}| ¡  t 
| ¡ |¡�sJ ‚t 
| ¡ g d¢g¡�s:J ‚| |d
t  d¡d�}| ¡  t 
| ¡ |¡�slJ ‚t 
| ¡ g d¢g¡�sˆJ ‚| d ¡ | ¡  t 
| ¡ t  d¡¡�s¶J ‚t 
| ¡ g d¢g¡�sÒJ ‚| |d
t  d¡d�}| ¡  t 
| ¡ |¡�sJ ‚t 
| ¡ g d¢g¡�s J ‚| d ¡ | ¡  t 
| ¡ t  d¡¡�sNJ ‚t 
| ¡ g d¢g¡�sjJ ‚d S )Nrñ   r¡   r‰   ró   r^   )rø   r¥   r   r   )r   r   r   r   )r   r   r   )r   r   r   )rñ   r¡   )rñ   r‰   )r"   rŽ   r�   r  ÚmcolorsZto_rgba_arrayZ_get_default_facecolorrz  rx  r¦   Ú
same_colorÚget_edgecolorZset_facecolorZset_edgecolorÚget_facecolorr»   rD  rq  )r‡  rÀ   r€  Zface_defaultZmappedr.   r.   r/   Útest_color_logic¨  sj    








rŒ  c                  C   s¶   t  t¡�x td dddg d¢d�} |  ¡ d dks6J ‚t |  ¡ d¡sJJ ‚|  ¡ dksZJ ‚t |  	¡ g d¢g¡stJ ‚W d   ƒ n1 sˆ0    Y  td d d�} t |  	¡ d¡s²J ‚d S )	Ngš™™™™™@r²   r¡   )r   r   r   r   )Zzorderr¥   r   )Z	facecolorr^   )
rE  rc  r   r   Zget_linewidthrˆ  r‰  rŠ  Z
get_zorderr‹  )Úlcr.   r.   r/   Útest_LineCollection_argsî  s    8rŽ  c                  C   s|   t  d¡ dd¡} t | ¡}tjtdd��" | | ¡ | 	¡  W d   ƒ n1 sR0    Y  t 
| ¡}| | ¡ | 	¡  d S )Nrñ   r¡   r‰   z^Collections can only maprA  )r"   rŽ   r�   r$   ÚpcolorrE  rF  ra   rD  r  rn  )rÀ   r€  r.   r.   r/   Útest_array_wrong_dimensionsü  s    

&

r�  c                  C   s°   t  ¡ \} }| t d¡d dt d¡d  ¡�^ }}|j ddg¡\}}td| j||ƒ}| 	|¡dkslJ ‚dD ]:}|j d	dg¡\}}td| j||ƒ}| 	|¡d u spJ ‚qpd S )
Nrð   r   rÃ   r   ée   Zmotion_notify_eventr‰   r.   r    )
r$   r%   Zhist2dr"   rŽ   r‘   r�   r   r)  Zget_cursor_data)r+   r,   r;   Zqmr�   r‚   ÚeventZ
out_xydatar.   r.   r/   Útest_quadmesh_cursor_data  s    ÿ
r“  c                  C   sB   t  t  ddd¡d¡j} t| gƒ}| ¡ \}t  | |k¡s>J ‚d S )Nr   r   é   )r   r   )r"   rO  r�   r§   r   r_   rþ   )rc   r�  Zreadbackr.   r.   r/   Útest_get_segments  s    

r•  c                  C   s~   t  ¡ } dg}tj|d�}tj|dd�}tj|d�}| d¡ | | ¡j}| | ¡j}| | ¡j}||ksnJ ‚||kszJ ‚d S )Nr   )rÄ   rë   )rÄ   r£   )rk   rl   rh   ZCircleCollectionÚset_offsetsrj   rt   )ÚidentityrÄ   rm   ÚinitÚlateZnull_boundsZinit_boundsZlate_boundsr.   r.   r/   Útest_set_offsets_late  s    
rš  c                  C   sš   t jtdd��" tjg t ¡ d� W d   ƒ n1 s60    Y  t ¡  dd¡} tjg g | d�}t g ¡}| 	| ¡ | | 
¡   kr�| 
¡ ks–n J ‚d S )Nz-.transOffset. without .offsets. has no effectrA  )r¤   r   )r£   r¤   )rE  rc  r   rh   r   rk   rl   r’   ÚskewZset_offset_transformZget_offset_transform)r›  r˜  r™  r.   r.   r/   Útest_set_offset_transform2  s    ÿÿ$

rœ  c                  C   s¶   t  ddd¡} t  | ¡}| t  dd¡ t  d¡ }t ||¡}| ¡ }| t	t
||ƒƒ¡ t j || ¡ ¡ t ¡ \}}| ||¡}| ¡ }| t	t
||ƒƒ¡ t j || ¡ ¡ d S )Nr   r…   rU   é   r*  z
2021-11-29)r"   r�   r”   Ztimedelta64Z
datetime64r$   rr   Zget_offsetsr–  r¸   r¼   r3   rP  r%   )r�   r‚   Údr  Zoff0r+   r,   r.   r.   r/   Útest_set_offset_unitsA  s    
rŸ  )arâ   Útypesr   Únumpyr"   Znumpy.testingr   r   rE  Z
matplotlibr(  Zmatplotlib.pyplotZpyplotr$   Zmatplotlib.backend_basesr   r_  Úcollectionsrh   Zmatplotlib.colorsr¾   rˆ  Zmatplotlib.transformsZ
transformsrk   r   r   r   r	   Zmatplotlib.testing.decoratorsr
   r   Zmatplotlib._api.deprecationr   r0   r<   rB   rE   rF   rG   rJ   rK   rL   rO   rQ   rZ   r]   r2   ro   ru   r	  Úcontextrƒ   rš   rŸ   r¯   rÂ   rÍ   rß   rç   rê   rï   rû   r   r  r  r  r  r  r3  r4  r@  rL  rT  rU  ÚmarkZparametrizeÚdictrg  rj  rp  rr  ru  r{  r}  r�  r†  r�  rn  rŒ  rŽ  r�  r“  r•  rš  rœ  rŸ  r.   r.   r.   r/   Ú<module>   sÒ   (












	



$










ÿ
3ü
$

	
D	