a
    ü
þdÅ¢  ã                   @   s  d dl m Z  d dlZ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„ 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.„ Z0d/d0„ Z1d1d2„ Z2d3d4„ Z3ej4 5d5¡e!d6gd7d8d9„ ƒƒZ6d:d;„ Z7d<d=„ Z8e"d>gd?d@dAdB„ ƒZ9e"dCgd?d@dDdE„ ƒZ:e"dFgd?d@dGdH„ ƒZ;e"dIgd?d@dJdK„ ƒZ<dLdM„ Z=dNdO„ Z>dPdQ„ Z?dRdS„ Z@dTdU„ ZAdVdW„ ZBe"dXgd?d@dYdZ„ ƒZCd[d\„ ZDej4 5d]¡d^d_„ ƒZEd`da„ ZFej4 5d]¡dbdc„ ƒZGej4 5d]¡ddde„ ƒZHe"dfgƒdgdh„ ƒZIe"digd?d]djdkdl„ ƒZJdmdn„ ZKdodp„ ZLdqdr„ ZMdsdt„ ZNdudv„ ZOdwdx„ ZPdydz„ ZQe
jR Sd{d|d}g¡d~d„ ƒZTd€d„ ZUd‚dƒ„ ZVd„d…„ ZWd†d‡„ ZXdˆd‰„ ZYdŠd‹„ ZZdŒd„ Z[ej4 5d]¡e
jR SdŽej\ej]g¡dd„ ƒƒZ^d‘d’„ Z_d“d”„ Z`d•d–„ Zad—d˜„ Zbd™dš„ Zcd›dœ„ Zde"dgd6gd?d5dždŸd„ ƒZee!d6gd7d d¡„ ƒZfd¢d£„ ZgdS )¤é    )ÚdatetimeN)ÚSimpleNamespace)Úassert_array_equalÚassert_array_almost_equal)Ú
CollectionÚLineCollectionÚEventCollectionÚPolyCollection)Úcheck_figures_equalÚimage_comparisonc               
   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-   új/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/matplotlib/tests/test_collections.pyÚgenerate_EventCollection_plot   sD    ù


ø
r/   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   )r/   Ú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   )
r/   r!   ÚhstackZset_positionsr2   r   r3   r1   r&   r'   ©Úspltr)   r,   Únew_positionsr-   r-   r.   Ú$test__EventCollection__set_positionsW   s    
ý
rA   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   é#   )r/   r!   r=   Úswitch_orientationZadd_positionsr2   r   r3   r1   r&   r'   r>   r-   r-   r.   Ú$test__EventCollection__add_positionse   s     

ÿü
rD   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<   )
r/   r!   r=   Zappend_positionsr2   r   r3   r1   r&   r'   r>   r-   r-   r.   Ú'test__EventCollection__append_positionsw   s    

ÿü
rE   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<   )
r/   r!   r=   Zextend_positionsr2   r   r3   r1   r&   r'   r>   r-   r-   r.   Ú'test__EventCollection__extend_positions‡   s    
ÿü
rF   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   )	r/   rC   r4   r5   r3   r1   r&   r(   r'   )r?   r)   r,   Únew_orientationr@   r-   r-   r.   Ú)test__EventCollection__switch_orientation—   s    ý
rI   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)
r/   rC   r3   r4   r5   r!   r2   r   r1   r&   r>   r-   r-   r.   Ú,test__EventCollection__switch_orientation_2x¨   s    ürJ   Z%EventCollection_plot__set_orientationc                  C   sx   t ƒ \} }}d}| |¡ || ¡ ks*J ‚| ¡ r6J ‚t||d |d |d |ƒ |  d¡ |  dd¡ |  dd	¡ d S )
NrG   r   r   r   z EventCollection: set_orientationr   r    r   r   )r/   Zset_orientationr4   r5   r1   r&   r(   r'   )r?   r)   r,   rH   r-   r-   r.   Ú&test__EventCollection__set_orientation½   s    
ü
rK   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ìÿÿÿé   )r/   Zset_linelengthr6   r1   r&   r(   )r?   r)   r,   Znew_linelengthr-   r-   r.   Ú%test__EventCollection__set_linelengthÎ   s    
ü
rN   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úÿÿÿéüÿÿÿ)r/   Zset_lineoffsetr7   r1   r&   r(   )r?   r)   r,   Znew_lineoffsetr-   r-   r.   Ú%test__EventCollection__set_lineoffsetÝ   s    
ü
rP   )Ú#EventCollection_plot__set_linestylerQ   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   )ç      @rS   )r   é   rT   zEventCollection: set_)r/   Úsetr#   Zgetpr&   )ÚpropÚvalueÚexpectedr?   r)   r:   r-   r-   r.   Útest__EventCollection__set_propì   s    

ýrY   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)	r/   r!   r"   Ú	set_colorr8   r9   r2   r   r&   )r?   r)   r:   Z	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   rG   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.   r1     s"    
ÿÿr1   c                  C   s4   t  g ¡} |  t ¡ ¡}t| ¡ tj ¡  ¡ ƒ d S ©N)	ÚmcollectionsÚPathCollectionÚget_datalimÚmtransformsÚIdentityTransformr   Ú
get_pointsÚBboxÚnull)ÚcolZcol_data_limr-   r-   r.   Útest_null_collection_datalim!  s
    
ÿro   c                  C   sR   t  ¡ } t t ddg¡g¡}|  |¡ | t 	¡ ¡}t
| ¡ tj ¡  ¡ ƒ d S )N©r   r   )r   r   )r#   Úaxesrf   rg   ÚmpathÚPathr%   rh   ri   rj   r   rk   rl   rm   )r+   r)   Zcoll_data_limr-   r-   r.   Útest_no_offsets_datalim(  s    
ÿrt   c                  C   sL   t  ¡  t  ¡ } |  ddgddg¡ | jj}|  g g ¡ | jj|ksHJ ‚d S )Nr   r   )r#   Úfigurerq   ÚscatterÚdataLimÚbounds)r+   rx   r-   r-   r.   Útest_add_collection3  s    ry   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ë®`8F×>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marginsrv   Zplot)Úfig_testÚfig_refZx_valsZy_valsÚxÚyÚax_testÚax_refr-   r-   r.   Útest_collection_log_datalim>  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      "@éûÿÿÿrM   éþÿÿÿé   é   é    ©Ú	transform)g      4@g      >@g      .@rS   )r#   rq   r!   ÚarangeÚlinspaceÚreshapeZquiverrh   Ú	transDatarx   ru   r   ri   ÚAffine2DÚ	translateÚsinÚcosrw   )r+   r…   r†   ÚuÚvÚqÚtransr-   r-   r.   Útest_quiver_limitsX  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‹   rM   rŽ   r   r   r‘   r’   )rM   é   rL   é   r   ©Údecimal)r#   rq   r!   r•   r   ri   r˜   r™   r—   Zbarbsrš   r›   r   rw   rx   )r+   r…   r†   rŸ   r-   r-   r.   Útest_barb_limitsi  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   rM   r…   r\   )ÚunitsÚoffsetsÚoffset_transformÚ
facecolors)r#   r$   r!   r”   r   ZvstackÚravelÚTZ	ones_likerf   ÚEllipseCollectionr—   r%   Úautoscale_view)r*   r+   r…   r†   ÚXÚYZXYZwwÚhhÚaaÚecr-   r-   r.   Útest_EllipseCollectionw  s    

þ
rµ   zpolycollection_close.pngc                  C   sH  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 ¡ }| | |ƒ¡}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   ç      @)ÚrÚgÚbr†   ÚkrT   ç      Ð?©r   gffffffæ?r†   )ÚzsZzdirr   r§   )Zmpl_toolkits.mplot3dr¶   r#   ru   Zadd_axesÚlistÚrangerf   r	   ÚlenÚ	set_alphaÚzipÚextendrZ   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Ã   rf   Ú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   ru   ÚdpiZbboxÚwidthZviewLimÚheightri   r˜   Z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ã   rp   r   )rË   r©   rª   TrÍ   )r   r   r   r   )	rf   rÏ   r#   r$   r!   rÎ   r—   r%   Z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$   rv   ZsavefigÚioÚBytesIOrÛ   r   Úcontainsr   )r*   r+   rn   Úmouse_eventÚfoundÚindicesr-   r-   r.   Útest_pickingÜ  s    rí   c                  C   sô   t  d¡} | d d …d f | d d d …f  }t ¡ \}}| |¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d}| 	|¡\}	}
|	sŒJ ‚t
|
d dgƒ d\}}| ¡  ||f¡\} }t||| |d}| 	|¡\}	}
|	sàJ ‚t
|
d dgƒ d S )Nr   ©r   r   ©ÚxdataÚydatar…   r†   ræ   r   ©ç      ø?ró   rT   )r!   r”   r#   r$   Ú
pcolormeshÚdraw_without_renderingrÞ   r“   r   ré   r   )r…   r°   r*   r+   Úmeshrð   rñ   r†   rê   rë   rì   r-   r-   r.   Útest_quadmesh_containsæ  s"    
 
r÷   c                  C   s¦   ddgddgg} ddgddgg}t  ¡ \}}| | |dgg¡}| ¡  g d¢}|D ]N}|\}}}	| ¡  ||f¡\} }t||| |d}
| |
¡\}}||	u sRJ ‚qRd S )Nr   r   r   ))ç      à¿r¼   T)r   r¼   F)r   r¼   T)r   g      Ð¿Trï   )r#   r$   rô   rõ   rÞ   r“   r   ré   )r…   r†   r*   r+   rö   ZpointsZpointrð   rñ   rX   rê   rë   rì   r-   r-   r.   Útest_quadmesh_contains_concaveü  s    
rù   c            	      C   s¶   t  d¡} | d d …d f | d d d …f  }t ¡ \}}| |¡}d |_| ¡  d\}}| ¡  ||f¡\} }t	||| |d}| 
|¡d u sŽJ ‚| t  |j¡¡ t| 
|¡dgƒ d S )Nr   rî   rï   r   )r!   r”   r#   r$   rô   Z_Arõ   rÞ   r“   r   Úget_cursor_dataÚ	set_arrayÚonesÚshaper   )	r…   r°   r*   r+   rö   rð   rñ   r†   rê   r-   r-   r.   Útest_quadmesh_cursor_data  s    
 
rþ   c                  C   sx   g d¢} t  ¡ \}}| | | t d¡¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d}t	| 
|¡t d¡ƒ d S )N)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†   rê   r-   r-   r.   Ú)test_quadmesh_cursor_data_multiple_points%  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#   rv   Údrawr-   r-   r-   r.   Útest_linestyle_single_dashes1  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  )rL   rL   rÒ   )r¨   r©   rª   r   r¡   )r#   r$   rf   r®   r—   r%   r'   r(   )r*   r+   ZwidthsZheightsZanglesÚcoordsÚer-   r-   r.   Útest_size_in_xy6  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)é   é   é   )ÚredZblueZgreen)Úindex©r   r   r§   )r   rR   Zdashdot)TFT)Ú
edgecolors)r«   )Ú
linewidths)Z
linestyles)Zantialiaseds)ZSeriesr   )Úpdr  r´   ZfcZlwr€   r³   r-   r-   r.   Útest_pandas_indexingG  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 ¡ sJ ‚d S )Nú-r  r0   r¢   r   )r  r  r  r§   )rf   rg   Zset_linestylesZset_linewidthsZget_linestylesZget_linewidthsÚall©rn   r-   r-   r.   Útest_lslw_bcastX  s    
r  c                  C   sB   t ƒ } tjtdd |  d¡ W d   ƒ n1 s40    Y  d S )Nz"Do not know how to convert 'fuzzy'©ÚmatchZfuzzy)r   ÚpytestÚraisesr_   Zset_linestyle©rÈ   r-   r-   r.   Útest_set_wrong_linestylef  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)rf   rg   Zget_capstyleÚset_capstyler  r-   r-   r.   Útest_capstylel  s    
r   c                  C   s<   t jg dd} |  ¡ dksJ ‚|  d¡ |  ¡ dks8J ‚d S )Nr  )Z	joinstyleÚmiter)rf   rg   Zget_joinstyleÚset_joinstyler  r-   r-   r.   Útest_joinstylet  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 )Nrø   ró   ç      @)r   r   r   r   r   r   )r   r   r   )r§   r§   r   r   r   )r‹   rL   rM   r½   r  r!  z2Line collection with customized caps and joinstyle)r#   r$   r'   r(   r!   r"   Ú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 )NrT   r  r{   )r#   r$   rv   rÀ   rÂ   )r*   r+   Úscr-   r-   r.   Útest_scatter_post_alpha  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 )
NrT   r   )rÈ   rÓ   r  r   )r¸   r¹   rº   rÈ   Úm)r   rÓ   r¸   )r   )	r!   r”   r#   r$   rv   rÂ   r  r   Úget_facecolors)r…   rÓ   r*   Úax0Úax1Zsc0Zsc1r-   r-   r.   Útest_scatter_alpha_array˜  s.    



r.  c               	   C   sf  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 ‚|g d¢ks¢J ‚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 ƒƒsBJ ‚tdd„ |D ƒƒsZJ ‚|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&\}}d'd„ |D ƒ|dd … ks:J ‚||||fD ]}| |¡ qF|j ¡  d S )(Né!N,r   r‹   r   rT   )Úsizei,  Zjetr}   )rÈ   ÚsÚcmapr   r  z{x:g})Úfmt)Ú0Ú1Ú2Ú3Ú4c                 S   s   g | ]}|  ¡ ‘qS r-   )r8   ©Ú.0Úliner-   r-   r.   Ú
<listcomp>Â  ó    z7test_pathcollection_legend_elements.<locals>.<listcomp>r   r   )Úlocr   )ÚnumrË   r   r  )rV   rÓ   r   c                 s   s   | ]}|  ¡ d kV  qdS )r   N)Z	get_alphar9  r-   r-   r.   Ú	<genexpr>Ì  r=  z6test_pathcollection_legend_elements.<locals>.<genexpr>c                 s   s   | ]}|  ¡ d kV  qdS )r  N)Zget_markerfacecolorr9  r-   r-   r.   r@  Í  r=  z{x:.2f}c                 S   s   d|  S )Nr   r-   )r…   r-   r-   r.   Ú<lambda>Ñ  r=  z5test_pathcollection_legend_elements.<locals>.<lambda>)rV   r?  r3  Úfuncc                 S   s   g | ]}|  ¡ ‘qS r-   ©Zget_markersizer9  r-   r-   r.   r<  Ò  r=  r§   rŠ   )r   r   r$  r§   rT   r¢   rŠ   r‹   )ZnbinsZmin_n_ticksZsteps)r   r   g33333³K@i  )r?  rV   r3  c                 S   s   g | ]}t |ƒ‘qS r-   )Úfloat)r:  Úlr-   r-   r.   r<  Þ  r=  )r!   ÚrandomÚseedZrandÚrandintr#   r$   rv   Úlegend_elementsrÁ   r"   r2  r”   r   Zlegendr  ÚsqrtrD  r   ÚmplZtickerZMaxNLocatorZ
add_artistÚcanvasr  )r…   r†   rÈ   r1  r*   r+   r(  ÚhrE  rÅ   Zcolors2Úl1Úh2Zlab2Úl2Úl3ZactsizesZlabeledsizesÚl4r>  Úh5Zlab5ÚlevelsÚh6Zlab6r-   r-   r.   Ú#test_pathcollection_legend_elementsµ  sN    

ÿ


ÿ rV  c                  C   s2   t  g d¢¡} t| ƒ}t j | t  g d¢¡¡ d S )N)r§   r   r   r‹   )r!   r"   r   r2   r   )Zarrr)   r-   r-   r.   Útest_EventCollection_nosortæ  s    rW  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 re   ©Útuple)r:  r†   r-   r-   r.   r@  ÷  r=  z=test_collection_set_verts_array.<locals>.<listcomp>.<genexpr>rX  ©r:  r…   r-   r-   r.   r<  ÷  r=  z3test_collection_set_verts_array.<locals>.<listcomp>)r!   r”   Údoubler–   r	   r¿   rÁ   Z_pathsrÃ   Úarray_equalÚ	_verticesÚ_codesÚemptyÚobject)ZvertsZcol_arrZcol_listZapÚlpZverts_tupleZcol_arr_tupleZatpr-   r-   r.   Útest_collection_set_verts_arrayí  s    rb  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 dtyper  Zwrong_inputé-   rT   )
rÀ   r   rû   r  r  Ú	TypeErrorr!   Ú	not_equalÚ	get_arrayÚany)ÚvalsrÈ   r-   r-   r.   Útest_collection_set_arrayÿ  s    
(ri  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!   Úcolumn_stackÚrepeatÚtilerÁ   r–   r#   r$   ri   Zblended_transform_factoryr—   Ú	transAxesr%   r   r¯   r2   Úassert_allcloseÚget_xlim)ÚarÝ   Zxy_pairsZ	line_segsÚfr+   rŸ   r-   r-   r.   Útest_blended_collection_autolim  s    &rs  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$   rv   r!   r2   ro  Úget_ylimrp  )r*   r+   r-   r-   r.   Útest_singleton_autolim  s    ru  ztransform, expected)r—   )rø   g      @)rn  )gffffff@gš™™™™™	@c                 C   sV   t  ¡ \}}|jddt|| ƒd | dd¡ tj | ¡ |¡ tj | ¡ |¡ d S )Nr   r’   r§   )	r#   r$   rv   Úgetattrr!   r2   ro  rt  rp  )r“   rX   r*   r+   r-   r-   r.   Útest_autolim_with_zeros$  s
    	rw  c                  C   s2  t  d¡} t  d¡}t j d¡}t ¡ \}}| | ||¡}tjtt	 
d¡d" | | dd¡¡ W d   ƒ n1 sv0    Y  t  d¡ d	¡}tjtt	 
d
¡d | |¡ W d   ƒ n1 sÄ0    Y  tjtt	 
d¡d | | ¡ ¡ W d   ƒ n1 s0    Y  t  d¡}tjtt	 
d¡d | |¡ W d   ƒ n1 sR0    Y  t  d¡}tjtt	 
d¡d | |¡ W d   ƒ n1 sœ0    Y  t  d¡}tjt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‹   zuFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (10, 7)r  r‹   rx  é6   )r¢   r   ztFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (6, 9)zsFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (54,))r   r¢   r§   zwFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (9, 6, 3))r   r¢   r   zwFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (9, 6, 4))rx  r‹   r   zxFor X (11) and Y (8) with flat shading, A should have shape (7, 10, 3) or (7, 10, 4) or (7, 10) or (70,), not (7, 10, 2)Úgouraud©Zshading)r!   r”   rF  r#   r$   rô   r  r  r_   ÚreÚescaperû   r–   r¬   rü   ©r…   r†   rÇ   r*   r+   r)   r-   r-   r.   Ú"test_quadmesh_set_array_validation4  sL    


ÿ
0
ÿ
(
ÿ
.

ÿ
*

ÿ
*

ÿ
*

r  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   )rý   )	r!   rü   r   r#   rô   Ústackr­   r   Zget_coordinates)r…   r†   rÇ   rÐ   rÑ   r)   r  r-   r-   r.   Útest_quadmesh_get_coordinatesd  s    r  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   rz  r{  )r!   r”   r–   r#   r$   rô   rü   rý   rû   rL  r  r\  rf  r~  r-   r-   r.   Útest_quadmesh_set_arrayp  s(    







rƒ  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ƒƒ¡slJ ‚d\|_|_| j ¡  t	 
| ¡ dd d …f ||dƒƒ¡sªJ ‚d S )NZplasmar   r   )ÚvminÚvmax)r2  Únorm)r   r   )r#   r$   rK  Z	colormapsrÅ   Z	Normalizerô   rL  r  r!   r\  r+  r„  r…  )r*   r+   r2  r†  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   rÿ   r   )rÓ   r   )r!   r”   r–   Úmaxr¬   r#   r$   rô   rÂ   r  r   r+  )
r…   r†   rÇ   rÓ   Z
alpha_flatr*   r,  r-  Zcoll1Zcoll2r-   r-   r.   Útest_quadmesh_alpha_arrayž  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 shaper  r   ç333333ã?)r#   r$   rô   r!   r”   r–   r  r  r_   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   rT   )rj  gš™™™™™Ù?rŠ  gš™™™™™é?©r1  rË   c                 S   s   d|  S )NrT   r-   r  r-   r-   r.   rA  Ð  r=  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rV   r?  rB  c                 S   s   g | ]}|  ¡ ‘qS r-   rC  rZ  r-   r-   r.   r<  Ô  r=  z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  ‘qS )rT   r   r-   rZ  r-   r-   r.   r<  Õ  r=  r£   N)r!   rF  rG  r#   r$   rv   rI  r   )r°   r±   ÚCÚ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_facecolorZget_cmapr†  r¬   Ú
same_colorÚget_edgecolorZset_facecolorZset_edgecolorÚget_facecolorrÂ   rû   rü   )r”  rÇ   rŒ  Zface_defaultZmappedr-   r-   r.   Útest_color_logicÚ  sj    








r™  c                  C   sŒ   t d dddg d¢d} |  ¡ d dks*J ‚t |  ¡ d¡s>J ‚|  ¡ dksNJ ‚t |  ¡ g d¢g¡shJ ‚t d d d} t |  ¡ d¡sˆJ ‚d S )	Ngš™™™™™@r¸   r§   )r   r   r   r   )r   Z	edgecolorZzorderr«   r   )Z	facecolorr\   )r   Zget_linewidthr•  r–  r—  Z
get_zorderr˜  )Úlcr-   r-   r.   Útest_LineCollection_args   s    ÿr›  c                  C   sš   t  d¡ dd¡} t | ¡}tjtdd" | | ¡ | 	¡  W d   ƒ n1 sR0    Y  t 
| ¡}| | ¡ | 	¡  t  d¡ ddd¡} | | ¡ d S )Nr
  r§   r   z^Collections can only mapr  é$   )r!   r”   r–   r#   Úpcolorr  r  r_   rû   r‹  rô   )rÇ   rŒ  r-   r-   r.   Útest_array_wrong_dimensions.  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!   rm  r•   r­   r   r]   r  )ra   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©   )ri   rj   rf   ZCircleCollectionÚset_offsetsrh   rx   )ÚidentityrË   rm   ÚinitÚlateZnull_boundsZinit_boundsZlate_boundsr-   r-   r.   Útest_set_offsets_lateE  s    
r¥  c                  C   sT   t  ¡  dd¡} tj| d}t ¡ }| | ¡ | | ¡   krJ| ¡ ksPn J ‚d S )Nr   )rª   )ri   r˜   Úskewrf   r   Zset_offset_transformZget_offset_transform)r¦  r£  r¤  r-   r-   r.   Útest_set_offset_transformZ  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‹   rT   é   rM  z
2021-11-29)r!   r•   rš   Ztimedelta64Z
datetime64r#   rv   Úget_offsetsr¡  r¿   rÃ   r2   ro  r$   )r…   r†   Údr(  Zoff0r*   r+   r-   r-   r.   Útest_set_offset_unitsd  s    
r«  Útest_check_masked_offsets)Zbaseline_imagesrz   r¦   r'  c                  C   sˆ   t ddddddƒt ddddddƒt ddddddƒt dddddd	ƒt dddddd
ƒg} tjjg d¢g d¢d}t ¡ \}}| | |¡ d S )Niæ  r
  rL   r   é1   é4   é5   ry  é7   é8   ©r   r   r§   r   rT   )r   r   r   r   r   ©Úmask)r   r!   Úmar"   r#   r$   rv   )Z
unmasked_xZmasked_yr*   r+   r-   r-   r.   r¬  x  s    ûc                 C   s–   t jjg d¢g d¢d}t  dd¡}| ¡ }| ||¡}| t j ||g¡¡ | g ¡ | 	g ¡ |  ¡ }| g d¢g d¢¡ | g ¡ | 	g ¡ d S )Nr²  ©r   r   r   r   r   r³  r   r¢   )r   r   rT   )
r!   rµ  r"   r”   Zadd_subplotrv   r¡  rk  Z
set_xticksZ
set_yticks)r„   rƒ   r…   r†   r‡   Úscatrˆ   r-   r-   r.   Útest_masked_set_offsets‹  s    


r¸  c                  C   sž   t jjg d¢g d¢d} t  dd¡}t ¡ \}}| | |¡}t j | |g¡}| |¡ t	| 
¡ t|ƒƒslJ ‚t  | |g¡}| |¡ t	| 
¡ t|ƒƒsšJ ‚d S )Nr²  r¶  r³  r   r¢   )r!   rµ  r"   r”   r#   r$   rv   rk  r¡  Ú
isinstancer©  Útype)r…   r†   r*   r+   r·  Zmasked_offsetsZunmasked_offsetsr-   r-   r.   Útest_check_offsets_dtypeœ  s    

r»  )hr   rç   r|  Útypesr   Únumpyr!   Znumpy.testingr   r   r  Z
matplotlibrK  Zmatplotlib.pyplotZpyplotr#   Zmatplotlib.collectionsÚcollectionsrf   Zmatplotlib.colorsrÅ   r•  Zmatplotlib.pathÚpathrr   Zmatplotlib.transformsZ
transformsri   r   r   r   r	   Zmatplotlib.testing.decoratorsr
   r   r/   r;   rA   rD   rE   rF   rI   rJ   rK   rN   rP   rY   r[   r1   ro   rt   ry   r'  Úcontextr‰   r    r¥   rµ   rÉ   rÔ   rä   rí   r÷   rù   rþ   r  r  r  r  r  r  r   r#  r&  r)  r.  rV  rW  rb  ri  rs  ru  ÚmarkZparametrizerw  r  r  rƒ  r‡  r‰  r  r“  r  rô   r™  r›  rž  r   r¥  r§  r«  r¬  r¸  r»  r-   r-   r-   r.   Ú<module>   sâ   (












	



$










ÿ
1þ
0	
D	
ÿ


