o
    l’×iÅ¢  ã                   @   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-   ú_/home/ubuntu/SoloSpeech/.venv/lib/python3.10/site-packages/matplotlib/tests/test_collections.pyÚgenerate_EventCollection_plot   sD   ù


ø

r/   ÚEventCollection_plot__defaultc                  C   sÊ   t ƒ \} }}t||d |d |d |d ƒ tj |d | ¡ ¡ |d | ¡ ks+J ‚| ¡ s1J ‚|d | ¡ ks;J ‚|d | 	¡ ksEJ ‚| 
¡ dgksNJ ‚| ¡ g| ¡ ¢D ]}tj ||d ¡ qWd S )Nr   r   r   r   ©r   Nr   )r/   Úcheck_segmentsr!   Útestingr   Úget_positionsÚget_orientationÚis_horizontalÚget_linelengthÚget_lineoffsetÚget_linestyleÚ	get_colorÚ
get_colors)Ú_r)   r,   r   r-   r-   r.   Ú test__EventCollection__get_props=   s    üÿr=   Ú#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!   ÚhstackÚset_positionsr3   r   r4   r2   r&   r'   ©Úspltr)   r,   Únew_positionsr-   r-   r.   Ú$test__EventCollection__set_positionsW   s   
ý
rE   Ú#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_orientationÚadd_positionsr3   r   r4   r2   r&   r'   rB   r-   r-   r.   Ú$test__EventCollection__add_positionse   s    

ÿü
rJ   Ú&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@   Úappend_positionsr3   r   r4   r2   r&   r'   rB   r-   r-   r.   Ú'test__EventCollection__append_positionsw   s   

ÿü
rM   Ú&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@   Úextend_positionsr3   r   r4   r2   r&   r'   rB   r-   r-   r.   Ú'test__EventCollection__extend_positions‡   s   
ÿü
rP   Ú(EventCollection_plot__switch_orientationc                  C   sz   t ƒ \} }}d}| ¡  || ¡ ksJ ‚| ¡ rJ ‚| ¡ }t|||d |d |ƒ |  d¡ |  dd¡ |  dd¡ d S )	NÚverticalr   r   z#EventCollection: switch_orientationr   r    r   r   )	r/   rH   r5   r6   r4   r2   r&   r(   r'   )rC   r)   r,   Únew_orientationrD   r-   r-   r.   Ú)test__EventCollection__switch_orientation—   s   ý
rT   Ú,EventCollection_plot__switch_orientation__2xc                  C   s€   t ƒ \} }}| ¡  | ¡  | ¡ }|d | ¡ ksJ ‚| ¡ s"J ‚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/   rH   r4   r5   r6   r!   r3   r   r2   r&   rB   r-   r-   r.   Ú,test__EventCollection__switch_orientation_2x¨   s   ürV   Ú%EventCollection_plot__set_orientationc                  C   sx   t ƒ \} }}d}| |¡ || ¡ ksJ ‚| ¡ rJ ‚t||d |d |d |ƒ |  d¡ |  dd¡ |  dd	¡ d S )
NrR   r   r   r   z EventCollection: set_orientationr   r    r   r   )r/   Úset_orientationr5   r6   r2   r&   r(   r'   )rC   r)   r,   rS   r-   r-   r.   Ú&test__EventCollection__set_orientation½   s   
ü
rY   Ú$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/   Úset_linelengthr7   r2   r&   r(   )rC   r)   r,   Únew_linelengthr-   r-   r.   Ú%test__EventCollection__set_linelengthÎ   s   
ü
r_   Ú$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/   Úset_lineoffsetr8   r2   r&   r(   )rC   r)   r,   Únew_lineoffsetr-   r-   r.   Ú%test__EventCollection__set_lineoffsetÝ   s   
ü
rd   )Ú#EventCollection_plot__set_linestylere   Ú#EventCollection_plot__set_linewidthc                  C   sn   dddgfdddgfdfD ]'\} }}t ƒ \}}}|jdi | |i¤Ž t || ¡|ks,J ‚| d| › ¡ qd S )Nr   Údashed)r   )ç      @rh   )r   é   ri   zEventCollection: set_r-   )r/   Úsetr#   Úgetpr&   )ÚpropÚvalueÚexpectedrC   r)   r<   r-   r-   r.   Útest__EventCollection__set_propì   s   

ýøro   ÚEventCollection_plot__set_colorc                  C   sX   t ƒ \} }}t g d¢¡}| |¡ | ¡ g| ¡ ¢D ]	}tj ||¡ q|  d¡ d S )N)r   r   r   r   zEventCollection: set_color)	r/   r!   r"   Ú	set_colorr:   r;   r3   r   r&   )rC   r)   r<   Ú	new_colorr   r-   r-   r.   Ú test__EventCollection__set_colorý   s   
rs   c           
      C   sÎ   |   ¡ }| ¡ dks| ¡ dks|du rd}d}n| ¡ dkr$d}d}ntdƒ‚t|ƒD ]8\}}	|	d|f ||d  ks>J ‚|	d|f ||d  ksLJ ‚|	d|f || ksXJ ‚|	d|f || ksdJ ‚q,dS )	zp
    Test helper checking that all values in the segment are correct, given a
    particular set of inputs.
    r   ÚnoneNr   r   rR   z.orientation must be 'horizontal' or 'vertical'r   )Úget_segmentsÚlowerÚ
ValueErrorÚ	enumerate)
r)   r   r   r   r   ÚsegmentsÚ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   Ú
get_pointsÚBboxÚnull)ÚcolÚcol_data_limr-   r-   r.   Útest_null_collection_datalim!  s
   
ÿr‰   c                  C   sR   t  ¡ } t t ddg¡g¡}|  |¡ | t 	¡ ¡}t
| ¡ tj ¡  ¡ ƒ d S )N©r   r   )r   r   )r#   Úaxesr   r€   ÚmpathÚPathr%   r   r‚   rƒ   r   r„   r…   r†   )r+   r)   Úcoll_data_limr-   r-   r.   Útest_no_offsets_datalim(  s   
ÿr   c                  C   sL   t  ¡  t  ¡ } |  ddgddg¡ | jj}|  g g ¡ | jj|ks$J ‚d S )Nr   r   )r#   Úfigurer‹   ÚscatterÚdataLimÚbounds)r+   r“   r-   r-   r.   Útest_add_collection3  s   r”   Úmpl20Ú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$   Ú
set_xscaleÚ
set_yscaleÚmarginsr‘   Úplot)Úfig_testÚfig_refÚx_valsÚ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spJ ‚d S )Né   é
   r   éP   )r   r   g      @g      "@éûÿÿÿr\   éþÿÿÿé   é   é    ©Ú	transform)g      4@g      >@g      .@rh   )r#   r‹   r!   ÚarangeÚlinspaceÚreshapeÚquiverr   Ú	transDatar“   r   rž   r‚   ÚAffine2DÚ	translateÚsinÚcosr’   )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®   r\   r±   r²   r³   r´   rµ   )r\   é   r[   é   r   ©Údecimal)r#   r‹   r!   r¸   rž   r‚   r¼   r½   r»   Úbarbsr¾   r¿   r   r’   r“   )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   r\   r¨   rt   )ÚunitsÚoffsetsÚoffset_transformÚ
facecolors)r#   r$   r!   r·   rž   ÚvstackÚravelÚTÚ	ones_liker   ÚEllipseCollectionr»   r%   Úautoscale_view)r*   r+   r¨   r©   ÚXÚYÚXYÚ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 ]\}	}
| |	gt	|ƒ ¡ | |
gt	|ƒ ¡ qj| |¡ |j||dd | dd¡ | dd¡ | dd¡ d S )Nr   )ÚAxes3Dr   r   r   r   ç      @)ÚrÚgÚbr©   Úkri   ç      Ð?©r   gffffffæ?r©   )ÚzsÚzdirr²   rÌ   )Úmpl_toolkits.mplot3drß   r#   r   Úadd_axesÚlistÚranger   r	   ÚlenÚ	set_alphaÚzipÚextendrq   Úadd_collection3dÚ
set_xlim3dÚ
set_zlim3dÚ
set_ylim3d)rß   Ú	vertsQuadr*   r+   ÚcolorsÚzposÚ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©Úautolim)r!   ÚmgridÚ	transposerŸ   r¸   Úpirí   r#   r$   rï   r   ÚRegularPolyCollectionr»   r%   rÖ   )	ÚxxÚyyÚ	xy_pointsÚ	rotationsr*   r+   ÚxyÚalphar‡   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@)
r‹   r   ÚdpiÚbboxÚwidthÚviewLimÚheightr‚   r¼   Úscale)r  r+   Ú
pts2pixelsÚscale_xÚ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Ï   Tr   )r   r   r   r   )	r   r  r#   r$   r!   r  r»   r%   Úaxis)r!  r*   r+   r
  Úcircle_areasÚ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}| |¡\}}|s-J ‚t	|d	 dgƒ d S )
Nr   iè  T)Úpicker)r  iE  éð   )r¨   r©   Úind)
r#   r$   r‘   ÚsavefigÚioÚBytesIOr  r   Úcontainsr   )r*   r+   r‡   Úmouse_eventÚfoundÚindicesr-   r-   r.   Útest_pickingÜ  s   r0  c                  C   sô   t  d¡} | d d …d f | d d d …f  }t ¡ \}}| |¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d}| 	|¡\}	}
|	sFJ ‚t
|
d dgƒ d\}}| ¡  ||f¡\} }t||| |d}| 	|¡\}	}
|	spJ ‚t
|
d dgƒ d S )Nr²   ©r   r   ©ÚxdataÚydatar¨   r©   r(  r   ©ç      ø?r6  ri   )r!   r·   r#   r$   Ú
pcolormeshÚdraw_without_renderingr  r¶   r   r,  r   )r¨   r×   r*   r+   Úmeshr3  r4  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 ]'}|\}}}	| ¡  ||f¡\} }t||| |d}
| |
¡\}}||	u sPJ ‚q)d S )Nr   r   r   ))ç      à¿rå   T)r   rå   F)r   rå   T)r   g      Ð¿Tr2  )r#   r$   r7  r8  r  r¶   r   r,  )r¨   r©   r*   r+   r9  ÚpointsÚpointr3  r4  rn   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 sGJ ‚| t  |j¡¡ t| 
|¡dgƒ d S )Nr²   r1  r2  r   )r!   r·   r#   r$   r7  Ú_Ar8  r  r¶   r   Úget_cursor_dataÚ	set_arrayÚonesÚshaper   )	r¨   r×   r*   r+   r9  r3  r4  r©   r-  r-   r-   r.   Útest_quadmesh_cursor_data  s   
 
rD  c                  C   sx   g d¢} t  ¡ \}}| | | t d¡¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d}t	| 
|¡t d¡ƒ d S )N)r   r   r   r   ©rÌ   rÌ   r5  r2  é	   )r#   r$   r7  r!   rB  r8  r  r¶   r   r   r@  )r¨   r*   r+   r9  r3  r4  r©   r-  r-   r-   r.   Ú)test_quadmesh_cursor_data_multiple_points%  s   rG  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#   r‘   Údrawr-   r-   r-   r.   Útest_linestyle_single_dashes1  s    rJ  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   rK  )r[   r[   r
  )rÍ   rÎ   rÏ   r   rÅ   )r#   r$   r   rÕ   r»   r%   r'   r(   )r*   r+   ÚwidthsÚheightsÚanglesÚcoordsÚer-   r-   r.   Útest_size_in_xy6  s   
þ
rQ  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   rg   Údashdot)TFT)Ú
edgecolors)rÐ   )Ú
linewidths)Ú
linestyles)Úantialiaseds)ÚSeriesr   )ÚpdrX  rÝ   ÚfcÚlwr   rÜ   r-   r-   r.   Útest_pandas_indexingG  s   



rc  Údefaultc                  C   s”   t  g ¡} |  ddg¡ |  g d¢¡ |  ¡ dgd ksJ ‚|  ¡ g d¢d ks*J ‚|  g d¢¡ |  ¡ dgd ks<J ‚|  ¡ g d¢k ¡ sHJ ‚d S )Nú-rY  r1   rÆ   r   )re  re  re  rÌ   )r   r€   Úset_linestylesÚset_linewidthsÚget_linestylesÚget_linewidthsÚall©r‡   r-   r-   r.   Útest_lslw_bcastX  s   
rl  c                  C   sD   t ƒ } tjtdd |  d¡ W d   ƒ d S 1 sw   Y  d S )Nz"Do not know how to convert 'fuzzy'©ÚmatchÚfuzzy)r   ÚpytestÚraisesrw   Úset_linestyle©rû   r-   r-   r.   Útest_set_wrong_linestylef  s   "ÿrt  c                  C   ó<   t jg dd} |  ¡ dksJ ‚|  d¡ |  ¡ dksJ ‚d S )NÚround)ÚcapstyleÚbutt)r   r€   Úget_capstyleÚset_capstylerk  r-   r-   r.   Útest_capstylel  ó   
r{  c                  C   ru  )Nrv  )Ú	joinstyleÚmiter)r   r€   Úget_joinstyleÚset_joinstylerk  r-   r-   r.   Útest_joinstylet  r|  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;  r6  ç      @)r   r   r   r   r   r   )r   r   r   )rÌ   rÌ   r   r   r   )r®   r[   r\   ræ   rv  r~  z2Line collection with customized caps and joinstyle)r#   r$   r'   r(   r!   r"   Úzerosr   rz  r€  r%   r&   )r*   r+   r¨   ÚysÚsegsÚ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 )Nri   rs  r˜   )r#   r$   r‘   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 )
Nri   r   )rû   r  rs  r   )rá   râ   rã   rû   Úm)r   r  rá   )r   )	r!   r·   r#   r$   r‘   rî   rI  r   Úget_facecolors)r¨   r  r*   Úax0Úax1Úsc0Ú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sIJ ‚|g d¢ksQJ ‚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 ƒƒsŸJ ‚tdd„ |D ƒƒsªJ ‚|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 ]}| |¡ q|j ¡  d S )(Né!N,r   r®   r   ri   )Úsizei,  Újetrš   )rû   ÚsÚcmaprœ   r\  z{x:g})Úfmt)Ú0Ú1Ú2Ú3Ú4c                 S   ó   g | ]}|  ¡ ‘qS r-   )r:   ©Ú.0Úliner-   r-   r.   Ú
<listcomp>Â  ó    z7test_pathcollection_legend_elements.<locals>.<listcomp>r²   r   )ÚlocrF  )Únumrþ   r   rU  )rl   r  r   c                 s   ó    | ]	}|  ¡ d kV  qdS )r   N)Ú	get_alpharž  r-   r-   r.   Ú	<genexpr>Ì  ó   € z6test_pathcollection_legend_elements.<locals>.<genexpr>c                 s   r¥  )rU  N)Úget_markerfacecolorrž  r-   r-   r.   r§  Í  r¨  z{x:.2f}c                 S   s   d|  S )Nr   r-   )r¨   r-   r-   r.   Ú<lambda>Ñ  ó    z5test_pathcollection_legend_elements.<locals>.<lambda>)rl   r¤  r—  Úfuncc                 S   r  r-   ©Úget_markersizerž  r-   r-   r.   r¡  Ò  r¢  rÌ   r­   )r   r   r‚  rÌ   ri   rÆ   r­   r®   )ÚnbinsÚmin_n_ticksÚsteps)r   r   g33333³K@i  )r¤  rl   r—  c                 S   s   g | ]}t |ƒ‘qS r-   )Úfloat)rŸ  Úlr-   r-   r.   r¡  Þ  r¢  )r!   ÚrandomÚseedÚrandÚrandintr#   r$   r‘   Úlegend_elementsrí   r"   r–  r·   r   Úlegendrj  Úsqrtr²  r   ÚmplÚtickerÚMaxNLocatorÚ
add_artistÚcanvasrI  )r¨   r©   rû   r•  r*   r+   r‰  Úhr³  rö   Úcolors2Úl1Úh2Úlab2Úl2Úl3ÚactsizesÚlabeledsizesÚl4r£  Úh5Úlab5ÚlevelsÚh6Úlab6r-   r-   r.   Ú#test_pathcollection_legend_elementsµ  sN   


ÿ

ÿ rÏ  c                  C   s2   t  g d¢¡} t| ƒ}t j | t  g d¢¡¡ d S )N)rÌ   r   r   r®   )r!   r"   r   r3   r   )Úarrr)   r-   r-   r.   Útest_EventCollection_nosortæ  s   rÑ  c                  C   s  t jdt jd ddd¡} t| ƒ}tt| ƒƒ}t|jƒt|jƒks#J ‚t|j|jƒD ]\}}t  	|j
|j
¡s8J ‚t  	|j|j¡sBJ ‚q*t jdtd}dd„ | D ƒ|d d …< t|ƒ}t|jƒt|jƒkseJ ‚t|j|jƒD ]\}}t  	|j
|j
¡szJ ‚t  	|j|j¡s„J ‚qld S )Nr¯   )Údtyper®   r²   r   c                 S   s   g | ]}t d d„ |D ƒƒ‘qS )c                 s   s    | ]}t |ƒV  qd S r~   ©Útuple)rŸ  r©   r-   r-   r.   r§  ÷  s   € z=test_collection_set_verts_array.<locals>.<listcomp>.<genexpr>rÓ  ©rŸ  r¨   r-   r-   r.   r¡  ÷  s    z3test_collection_set_verts_array.<locals>.<listcomp>)r!   r·   Údoubler¹   r	   rë   rí   Ú_pathsrï   Úarray_equalÚ	_verticesÚ_codesÚemptyÚobject)ÚvertsÚcol_arrÚcol_listÚapÚlpÚverts_tupleÚcol_arr_tupleÚ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 s%w   Y  d| d< t | | ¡ ¡ 	¡ s:J ‚d S )Nr®   z^Image data of dtyperm  Úwrong_inputé-   ri   )
rì   r   rA  rp  rq  Ú	TypeErrorr!   Ú	not_equalÚ	get_arrayÚany)Úvalsrû   r-   r-   r.   Útest_collection_set_arrayÿ  s   
ÿrí  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)ÚscalexÚscaleyr   rà   )r!   Úcolumn_stackÚrepeatÚtilerí   r¹   r#   r$   r‚   Úblended_transform_factoryr»   Ú	transAxesr%   r   rÖ   r3   Úassert_allcloseÚget_xlim)Úar  Úxy_pairsÚ	line_segsÚfr+   rÃ   r-   r-   r.   Útest_blended_collection_autolim  s   &rü  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$   r‘   r!   r3   rö  Úget_ylimr÷  )r*   r+   r-   r-   r.   Útest_singleton_autolim  s   rþ  ztransform, expected)r»   )r;  g      @)rõ  )gffffff@gš™™™™™	@c                 C   sV   t  ¡ \}}|jddt|| ƒd | dd¡ tj | ¡ |¡ tj | ¡ |¡ d S )Nr   rµ   rÌ   )	r#   r$   r‘   Úgetattrr!   r3   rö  rý  r÷  )r¶   rn   r*   r+   r-   r-   r.   Útest_autolim_with_zeros$  s
   	r   c                  C   s*  t  d¡} t  d¡}t j d¡}t ¡ \}}| | ||¡}tjtt	 
d¡d | | dd¡¡ W d   ƒ n1 s;w   Y  t  d¡ d	¡}tjtt	 
d
¡d | |¡ W d   ƒ n1 sbw   Y  tjtt	 
d¡d | | ¡ ¡ W d   ƒ n1 sƒw   Y  t  d¡}tjtt	 
d¡d | |¡ W d   ƒ n1 s§w   Y  t  d¡}tjtt	 
d¡d | |¡ W d   ƒ n1 sËw   Y  t  d¡}tjtt	 
d¡d | |¡ W d   ƒ n1 sïw   Y  t  d¡} t  d¡}t j d¡}t ¡ \}}|j| ||dd}d S )NrR  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)rm  r®   r  é6   )rÆ   rF  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,))rF  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))rF  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))r  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©Úshading)r!   r·   r´  r#   r$   r7  rp  rq  rw   ÚreÚescaperA  r¹   rÒ   rB  ©r¨   r©   rú   r*   r+   r)   r-   r-   r.   Ú"test_quadmesh_set_array_validation4  sX   



ÿý

ÿý

ÿý


ÿý


ÿý


ÿý

r	  c                  C   s`   g d¢} g d¢}t jdd}t  | |¡\}}t |||¡}t  |j|jg¡j}t| ¡ |ƒ d S )NrH  )r   r²   rÆ   )r   r   )rC  )	r!   rB  rž   r#   r7  ÚstackrÓ   r   Úget_coordinates)r¨   r©   rú   r  r  r)   rO  r-   r-   r.   Útest_quadmesh_get_coordinatesd  s   r  c                  C   s8  t  d¡} t  d¡}t  d¡ d¡}t ¡ \}}| | |t  |j¡¡}| |¡ |j	 
¡  t  | ¡ |¡s7J ‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡sQJ ‚t  d¡ d¡}t ¡ \}}|j| |t  |j¡dd}| |¡ |j	 
¡  t  | ¡ |¡s€J ‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡sšJ ‚d S )Nr²   rF  rE  é   )r²   r²   r  r  )r!   r·   r¹   r#   r$   r7  rB  rC  rA  r¿  rI  rØ  rê  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ƒƒ¡s6J ‚d\|_|_| j ¡  t	 
| ¡ dd d …f ||dƒƒ¡sUJ ‚d S )NÚplasmar   r   )ÚvminÚvmax)r–  Únorm)r   r   )r#   r$   r»  Ú	colormapsrö   Ú	Normalizer7  r¿  rI  r!   rØ  rŒ  r  r  )r*   r+   r–  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²   rF  rE  r   )r  r   )r!   r·   r¹   ÚmaxrÒ   r#   r$   r7  rî   rI  r   rŒ  )
r¨   r©   rú   r  Ú
alpha_flatr*   r  rŽ  Úcoll1Úcoll2r-   r-   r.   Útest_quadmesh_alpha_arrayž  s&   



r  c                  C   sl   t  ¡ \} }| t d¡ d¡¡}tjtdd | 	ddg¡ | 
¡  W d   ƒ d S 1 s/w   Y  d S )NrS  )rÌ   r²   z^Data array shaperm  r   ç333333ã?)r#   r$   r7  r!   r·   r¹   rp  rq  rw   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   ri   )rî  gš™™™™™Ù?r  gš™™™™™é?©r•  rþ   c                 S   s   d|  S )Nri   r-   r   r-   r-   r.   rª  Ð  r«  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rl   r¤  r¬  c                 S   r  r-   r­  rÕ  r-   r-   r.   r¡  Ô  r¢  z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  ‘qS )ri   r   r-   rÕ  r-   r-   r.   r¡  Õ  s    rÇ   N)r!   r´  rµ  r#   r$   r‘   r¸  r   )r×   rØ   ÚCÚSÚlegend_sizesr*   r+   r‰  ÚhandlesÚlabelsÚhandle_sizesr-   r-   r.   Ú+test_legend_inverse_size_label_relationship¿  s   

ÿr'  Úpcfuncc                 C   s^  t  d¡ dd¡}| |ddd}| ¡  t | ¡ ¡}| ¡ | | 	¡ ¡ƒ}t 
| ¡ d¡s0J ‚| |ƒ}| d¡ | d¡ | ¡  t 
| ¡ d¡sLJ ‚t 
| ¡ g d¢g¡sYJ ‚| d¡ | ¡  t 
| ¡ g d	¢g¡soJ ‚| d ¡ | ¡  t 
| ¡ g d¢g¡s…J ‚| d ¡ | ¡  t 
| ¡ |¡s˜J ‚| d ¡ | ¡  t 
| ¡ |¡s«J ‚t 
| ¡ d¡sµJ ‚| 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 
| ¡ |¡s.J ‚t 
| ¡ g d¢g¡s<J ‚| d ¡ | ¡  t 
| ¡ t  d¡¡sSJ ‚t 
| ¡ g d¢g¡saJ ‚| |d
t  d¡d}| ¡  t 
| ¡ |¡szJ ‚t 
| ¡ g d¢g¡sˆJ ‚| d ¡ | ¡  t 
| ¡ t  d¡¡sŸJ ‚t 
| ¡ g d¢g¡s­J ‚d S )NrS  rÌ   r²   rU  rt   )r[  rÐ   r   r   )r   r   r   r   )r   r   r   )r   r   r   )rS  rÌ   )rS  r²   )r!   r·   r¹   r  ÚmcolorsÚto_rgba_arrayÚ_get_default_facecolorÚget_cmapr  rÒ   Ú
same_colorÚget_edgecolorÚset_facecolorÚset_edgecolorÚget_facecolorrî   rA  rB  )r(  rú   r  Úface_defaultÚmappedr-   r-   r.   Útest_color_logicÚ  sj   








 r4  c                  C   sŒ   t d dddg d¢d} |  ¡ d dksJ ‚t |  ¡ d¡sJ ‚|  ¡ dks'J ‚t |  ¡ g d¢g¡s4J ‚t d d d} t |  ¡ d¡sDJ ‚d S )	Ngš™™™™™@rá   rÌ   )r   r   r   r   )r   Ú	edgecolorÚzorderrÐ   r   )Ú	facecolorrt   )r   Úget_linewidthr)  r-  r.  Ú
get_zorderr1  )Ú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 s)w   Y  t 
| ¡}| | ¡ | 	¡  t  d¡ ddd¡} | | ¡ d S )NrS  rÌ   r²   z^Collections can only maprm  é$   )r!   r·   r¹   r#   Úpcolorrp  rq  rw   rA  r  r7  )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!   ró  r¸   rÓ   r   ru   rj  )ry   r:  Úreadbackr-   r-   r.   Útest_get_segments<  s   

rA  c                  C   s~   t  ¡ } dg}tj|d}tj|dd}tj|d}| d¡ | | ¡j}| | ¡j}| | ¡j}||ks7J ‚||ks=J ‚d S )Nr   )rþ   rK  )rþ   rÎ   )r‚   rƒ   r   ÚCircleCollectionÚset_offsetsr   r“   )Úidentityrþ   r†   ÚinitÚlateÚnull_boundsÚinit_boundsÚlate_boundsr-   r-   r.   Útest_set_offsets_lateE  s   
rJ  c                  C   sV   t  ¡  dd¡} tj| d}t ¡ }| | ¡ | | ¡   kr&| ¡ ks)J ‚ J ‚d S )Nr   )rÏ   )r‚   r¼   Úskewr   r   Úset_offset_transformÚget_offset_transform)rK  rE  rF  r-   r-   r.   Útest_set_offset_transformZ  s
   
(rN  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®   ri   é   rÀ  z
2021-11-29)r!   r¸   r¾   Útimedelta64Ú
datetime64r#   r‘   Úget_offsetsrC  rë   rï   r3   rö  r$   )r¨   r©   Údr‰  Úoff0r*   r+   r-   r-   r.   Útest_set_offset_unitsd  s   
rU  Útest_check_masked_offsets)Úbaseline_imagesr—   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æ  rS  r[   r²   é1   é4   é5   r  é7   é8   ©r   r   rÌ   r²   ri   )r   r   r   r   r   ©Úmask)r   r!   Úmar"   r#   r$   r‘   )Ú
unmasked_xÚmasked_yr*   r+   r-   r-   r.   rV  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   ri   )
r!   r`  r"   r·   Úadd_subplotr‘   rC  rñ  Ú
set_xticksÚ
set_yticks)r¥   r¤   r¨   r©   rª   Úscatr«   r-   r-   r.   Útest_masked_set_offsets‹  s   


rh  c                  C   sž   t jjg d¢g d¢d} t  dd¡}t ¡ \}}| | |¡}t j | |g¡}| |¡ t	| 
¡ t|ƒƒs6J ‚t  | |g¡}| |¡ t	| 
¡ t|ƒƒsMJ ‚d S )Nr]  rc  r^  r   rÆ   )r!   r`  r"   r·   r#   r$   r‘   rñ  rC  Ú
isinstancerR  Útype)r¨   r©   r*   r+   rg  Úmasked_offsetsÚunmasked_offsetsr-   r-   r.   Útest_check_offsets_dtypeœ  s   

rm  )hr   r*  r  Útypesr   Únumpyr!   Únumpy.testingr   r   rp  Ú
matplotlibr»  Úmatplotlib.pyplotÚpyplotr#   Úmatplotlib.collectionsÚcollectionsr   Úmatplotlib.colorsrö   r)  Úmatplotlib.pathÚpathrŒ   Úmatplotlib.transformsÚ
transformsr‚   r   r   r   r	   Úmatplotlib.testing.decoratorsr
   r   r/   r=   rE   rJ   rM   rP   rT   rV   rY   r_   rd   ro   rs   r2   r‰   r   r”   rˆ  Úcontextr¬   rÄ   rÊ   rÞ   rü   r  r%  r0  r:  r>  rD  rG  rJ  rQ  rc  rl  rt  r{  r  r‡  rŠ  r‘  rÏ  rÑ  rå  rí  rü  rþ  ÚmarkÚparametrizer   r	  r  r  r  r  r  r'  r=  r7  r4  r;  r>  rA  rJ  rN  rU  rV  rh  rm  r-   r-   r-   r.   Ú<module>   sä    (












	



$










ÿ
1þ
0	
D	
ÿ


