o
    îÇhÞ¼  ã                   @   s  d dl m Z  d dlZd dl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" d dl#m$Z$m%Z% ej&dd	gd
dd„ ƒ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&„ ƒZ0e%d'gƒd(d)„ ƒZ1e%d*gƒd+d,„ ƒZ2e%g d-¢ƒd.d/„ ƒZ3e%d0gƒd1d2„ ƒZ4d3d4„ Z5d5d6„ Z6d7d8„ Z7d9d:„ Z8d;d<„ Z9ej: ;d=¡e$d>gd?d@dA„ ƒƒZ<dBdC„ Z=dDdE„ Z>e%dFgdGe ?¡ dHkrd ndIdJdKdL„ ƒZ@dMdN„ ZAe%dOgdGd=dPdQdR„ ƒZBe%dSgdGdTdUdV„ ƒZCe%dWgdGdTdXdY„ ƒZDdZd[„ ZEd\d]„ ZFd^d_„ ZGd`da„ ZHdbdc„ ZIddde„ ZJe%dfgdGdTdgdh„ ƒZKdidj„ ZLej: ;dk¡dldm„ ƒZMdndo„ ZNej: ;dk¡dpdq„ ƒZOej: ;dk¡drds„ ƒZPe%dtgƒdudv„ ƒZQe%dwgdGdkdPdxdy„ ƒZRdzd{„ ZSd|d}„ ZTd~d„ ZUd€d„ ZVe$d>gd?ejW Xd‚i dƒd„ig¡d…d†„ ƒƒZYejW Xd‡dˆd‰dŠddd‹gdŒ dfdŽddgddd‘fg¡d’d“„ ƒZZd”d•„ Z[d–d—„ Z\d˜d™„ Z]ejW Xdšd›dœg¡ddž„ ƒZ^dŸd „ Z_d¡d¢„ Z`d£d¤„ Zad¥d¦„ Zbd§d¨„ Zcd©dª„ Zdd«d¬„ Zed­d®„ Zfej: ;dk¡d¯d°„ ƒZgd±d²„ Zhd³d´„ Zidµd¶„ Zjd·d¸„ Zkd¹dº„ Zld»d¼„ Zme%d½gd>gdGd=d¾d¿d½„ ƒZne$d>gd?dÀdÁ„ ƒZodÂdÃ„ ZpejW XdÄdÅdÆdÇgg¡e$d>gd?dÈdÉ„ ƒƒZqe$g dÊ¢d?dËdÌ„ ƒZrdS )Íé    )ÚdatetimeN)ÚSimpleNamespace)Úassert_array_equalÚassert_array_almost_equal)Ú
CollectionÚLineCollectionÚEventCollectionÚPolyCollection)ÚFillBetweenPolyCollection)Úcheck_figures_equalÚimage_comparisonÚ
pcolormeshÚpcolor)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úu/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/matplotlib/tests/test_collections.pyÚpcfunc   s   r   c               
   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Úpropsr   r   r   Úgenerate_EventCollection_plot   sD   ù


ø

r7   Ú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$   )r7   Úcheck_segmentsr+   Útestingr   Úget_positionsÚget_orientationÚis_horizontalÚget_linelengthÚget_lineoffsetÚget_linestyleÚ	get_colorÚ
get_colors)Ú_r3   r6   r$   r   r   r   Ú test__EventCollection__get_propsE   s    üÿrE   Ú#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   )
r7   r+   ÚhstackÚset_positionsr;   r   r<   r:   r0   r1   ©Úspltr3   r6   Únew_positionsr   r   r   Ú$test__EventCollection__set_positions_   s   
ý
rM   Ú#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)   é#   )r7   r+   rH   Úswitch_orientationÚadd_positionsr;   r   r<   r:   r0   r1   rJ   r   r   r   Ú$test__EventCollection__add_positionsm   s    

ÿü
rR   Ú&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)   rG   )
r7   r+   rH   Úappend_positionsr;   r   r<   r:   r0   r1   rJ   r   r   r   Ú'test__EventCollection__append_positions   s   

ÿü
rU   Ú&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)   rG   )
r7   r+   rH   Úextend_positionsr;   r   r<   r:   r0   r1   rJ   r   r   r   Ú'test__EventCollection__extend_positions   s   
ÿü
rX   Ú(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   )	r7   rP   r=   r>   r<   r:   r0   r2   r1   )rK   r3   r6   Únew_orientationrL   r   r   r   Ú)test__EventCollection__switch_orientationŸ   s   ý
r\   Ú,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)
r7   rP   r<   r=   r>   r+   r;   r   r:   r0   rJ   r   r   r   Ú,test__EventCollection__switch_orientation_2x°   s   ür^   Ú%EventCollection_plot__set_orientationc                  C   sx   t ƒ \} }}d}| |¡ || ¡ ksJ ‚| ¡ rJ ‚t||d |d |d |ƒ |  d¡ |  dd¡ |  dd	¡ d S )
NrZ   r'   r"   r!   z EventCollection: set_orientationr)   r*   r   r   )r7   Úset_orientationr=   r>   r:   r0   r2   r1   )rK   r3   r6   r[   r   r   r   Ú&test__EventCollection__set_orientationÅ   s   
ü
ra   Ú$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ìÿÿÿé   )r7   Úset_linelengthr?   r:   r0   r2   )rK   r3   r6   Únew_linelengthr   r   r   Ú%test__EventCollection__set_linelengthÖ   s   
ü
rg   Ú$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úÿÿÿéüÿÿÿ)r7   Úset_lineoffsetr@   r:   r0   r2   )rK   r3   r6   Únew_lineoffsetr   r   r   Ú%test__EventCollection__set_lineoffsetå   s   
ü
rl   )Ú#EventCollection_plot__set_linestylerm   Ú#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   )ç      @rp   )r#   é   rq   zEventCollection: set_r   )r7   Úsetr-   Úgetpr0   )ÚpropÚvalueÚexpectedrK   r3   rD   r   r   r   Útest__EventCollection__set_propô   s   

ýørw   Ú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)	r7   r+   r,   Ú	set_colorrB   rC   r;   r   r0   )rK   r3   rD   Ú	new_colorr$   r   r   r   Ú test__EventCollection__set_color  s   
r{   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   rZ   z.orientation must be 'horizontal' or 'vertical'r   )Úget_segmentsÚlowerÚ
ValueErrorÚ	enumerate)
r3   r'   r"   r!   r    ÚsegmentsÚpos1Úpos2ÚiÚsegmentr   r   r   r:     s   ür:   c                  C   s`   t  d¡ d¡} tj| t  d¡d}| d¡dksJ ‚| t  d¡d ¡ | d¡dks.J ‚d S )Né   )é   é   r   r‡   )r,   r   gUUUUUUå?rq   )r+   ÚarangeÚreshapeÚmcollectionsr   ÚnormÚ	set_array)Úlinesr3   r   r   r   Útest_collection_norm_autoscale)  s
   r   c                  C   s4   t  g ¡} |  t ¡ ¡}t| ¡ tj ¡  ¡ ƒ d S r   )	r‹   ÚPathCollectionÚget_datalimÚmtransformsÚIdentityTransformr   Ú
get_pointsÚBboxÚnull)ÚcolÚcol_data_limr   r   r   Útest_null_collection_datalim3  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–   )r5   r3   Ú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)r5   r£   r   r   r   Útest_add_collectionE  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_datalimP  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      "@éûÿÿÿrd   éþÿÿÿr‡   é   é    ©Ú	transform)g      4@g      >@g      .@rp   )r-   r›   r+   r‰   ÚlinspacerŠ   Úquiverr‘   Ú	transDatar£   r    r®   r’   ÚAffine2DÚ	translateÚsinÚcosr¢   )r5   r¸   r¹   ÚuÚvÚqÚtransr   r   r   Útest_quiver_limitsj  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¾   rd   rÁ   r‡   rÂ   rÃ   rÄ   )rd   é   rc   é   r   ©Údecimal)r-   r›   r+   rÆ   r®   r’   rÉ   rÊ   rÈ   ÚbarbsrË   rÌ   r   r¢   r£   )r5   r¸   r¹   rÐ   r   r   r   Útest_barb_limits{  s    

ÿr×   z EllipseCollection_test_image.pngTÚx86_64g/Ý$•?)Úremove_textÚtolc               	   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)   rd   r¸   r|   )ÚunitsÚoffsetsÚoffset_transformÚ
facecolors)r-   r.   r+   r‰   r®   ÚvstackÚravelÚTÚ	ones_liker‹   ÚEllipseCollectionrÈ   r/   Úautoscale_view)r4   r5   r¸   r¹   ÚXÚYÚXYÚwwÚhhÚaaÚecr   r   r   Útest_EllipseCollection‰  s   

þ
rì   c                  C   sT  t j d¡} d}d}d}|  d¡d }t ¡ \}}tj||||d|jd}t|j	t  
|¡ ¡ d	 ƒ t|jt  
|¡ ¡ d	 ƒ t|jt  |¡ ¡ ƒ t| ¡ |ƒ t| ¡ |ƒ t| ¡ |ƒ | |¡ | d
d¡ | d
d¡ |  d¡d }|  d¡d }	|  d¡d }
|j||	|
d t| ¡ | ¡ ƒ t| ¡ |	 ¡ ƒ t| ¡ |
 ¡ ƒ d S )Nr   )r   )rˆ   )é-   )r¾   r   r¾   r¸   )ÚwidthsÚheightsÚanglesrÜ   rÛ   rÝ   r   rÁ   é   r   rˆ   é´   )rî   rï   rð   )r+   ÚrandomÚdefault_rngr-   r.   r‹   rã   rÈ   r   Ú_widthsr,   rà   Ú_heightsÚ_anglesÚdeg2radÚ
get_widthsÚget_heightsÚ
get_anglesr/   r1   r2   rr   )Úrngrî   rï   rð   rÜ   r4   r5   rë   Ú
new_widthsÚnew_heightsÚ
new_anglesr   r   r   Ú$test_EllipseCollection_setter_getterž  s<   ú	
r   zpolycollection_close.png)rÙ   Ústylec                  C   sR  ddl m}  dtjd< 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
|ƒ ¡ qo| |¡ |j||dd | dd¡ | dd¡ | dd¡ d S )Nr   )ÚAxes3DTzaxes3d.automarginr   r   r   r   ç      @)ÚrÚgÚbr¹   Úkrq   ç      Ð?©r#   gffffffæ?r¹   )ÚzsÚzdirr‡   rˆ   )Úmpl_toolkits.mplot3dr  r-   ÚrcParamsr    Úadd_axesÚlistÚranger‹   r	   ÚlenÚ	set_alphaÚzipÚextendry   Úadd_collection3dÚ
set_xlim3dÚ
set_zlim3dÚ
set_ylim3d)r  Ú	vertsQuadr4   r5   ÚcolorsÚzposÚpolyr
  ÚcsÚzÚcr   r   r   Útest_polycollection_closeÉ  s2   
üÿ

r   z regularpolycollection_rotate.png)rÙ   c            	      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Ú	rotationsr4   r5   ÚxyÚalphar—   r   r   r   Ú!test_regularpolycollection_rotateï  s   þr0  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   r2    s    zCtest_regularpolycollection_scale.<locals>.SquareCollection.__init__c                 S   sP   | j }d|jddj }||jj |jj }||jj |jj }t ¡  	||¡S )z4Return transform scaling circle areas to data space.g      R@T)Úroot)
r›   Ú
get_figureÚdpiÚbboxÚwidthÚviewLimÚheightr’   rÉ   Úscale)r3  r5   Ú
pts2pixelsÚscale_xÚscale_yr   r   r   Úget_transform  s
   zHtest_regularpolycollection_scale.<locals>.SquareCollection.get_transform)Ú__name__Ú
__module__Ú__qualname__r2  rB  Ú__classcell__r   r   r5  r   ÚSquareCollection  s    rG  rš   r   )r"  rÜ   rÝ   Tr$  )r)   r   r)   r   )	r‹   r)  r-   r.   r+   r(  rÈ   r/   Úaxis)rG  r4   r5   r.  Úcircle_areasÚsquaresr   r   r   Ú test_regularpolycollection_scaleþ  s   ÿrK  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)r9  iE  éð   )r¸   r¹   Úind)
r-   r.   r¡   ÚsavefigÚioÚBytesIOr9  r   Úcontainsr   )r4   r5   r—   Úmouse_eventÚfoundÚindicesr   r   r   Útest_picking  s   rV  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¹   rN  r   ©ç      ø?r\  rq   )r+   r‰   r-   r.   r   Údraw_without_renderingrB  rÅ   r   rR  r   )r¸   rå   r4   r5   ÚmeshrY  rZ  r¹   rS  rT  rU  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      Ð¿TrX  )r-   r.   r   r]  rB  rÅ   r   rR  )r¸   r¹   r4   r5   r^  ÚpointsÚpointrY  rZ  rv   rS  rT  rU  r   r   r   Útest_quadmesh_contains_concave;  s   
ûrc  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‡   rW  rX  r   )r+   r‰   r-   r.   r   Ú_Ar]  rB  rÅ   r   Úget_cursor_datar   ÚonesÚshaper   )	r¸   rå   r4   r5   r^  rY  rZ  r¹   rS  r   r   r   Útest_quadmesh_cursor_dataP  s   
 
rh  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[  rX  é	   )r-   r.   r   r+   rf  r]  rB  rÅ   r   r   re  )r¸   r4   r5   r^  rY  rZ  r¹   rS  r   r   r   Ú)test_quadmesh_cursor_data_multiple_pointsd  s   rk  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_dashesp  s    rn  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   ro  )rc   rc   r.  )rÛ   rÜ   rÝ   r   rÒ   )r-   r.   r‹   rã   rÈ   r/   r1   r2   )r4   r5   rî   rï   rð   ÚcoordsÚer   r   r   Útest_size_in_xyu  s   
þ
rr  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)é   rñ   é   )ÚredÚblueÚgreen)Úindex©r   r   rˆ   )r   ro   Údashdot)TFT)Ú
edgecolors)rÞ   )Ú
linewidths)Ú
linestyles)Úantialiaseds)ÚSeriesr   )Úpdrx  rë   ÚfcÚ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s*J ‚|  g d¢¡ |  ¡ dgd ks<J ‚|  ¡ g d¢k ¡ sHJ ‚d S )Nú-ry  r9   rÓ   r   )r…  r…  r…  rˆ   )r‹   r   Úset_linestylesÚset_linewidthsÚget_linestylesÚget_linewidthsÚall©r—   r   r   r   Útest_lslw_bcast—  s   
rŒ  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Úraisesr   Úset_linestyle©r  r   r   r   Útest_set_wrong_linestyle¥  s   "ÿr”  c                  C   óV   t  g ¡} |  ¡ d u sJ ‚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_capstyler‹  r   r   r   Útest_capstyle«  ó   

r›  c                  C   r•  )Nr–  )Ú	joinstyleÚmiter)r‹   r   Úget_joinstyleÚset_joinstyler‹  r   r   r   Útest_joinstyleµ  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`  r\  ç      @)r   r   r   r   r   r   )r   r   r   )rˆ   rˆ   r   r   r   )r¾   rc   rd   r	  r–  rž  z2Line collection with customized caps and joinstyle)r-   r.   r1   r2   r+   r,   Úzerosr   rš  r   r/   r0   )r4   r5   r¸   ÚysÚsegsÚline_segmentsr   r   r   Útest_cap_and_joinstyle_image¿  s   &



r§  zscatter_post_alpha.pngc                  C   s6   t  ¡ \} }|jtdƒtdƒtdƒd}| d¡ d S )Nrq   r“  r¨   )r-   r.   r¡   r  r  )r4   r5   Ú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 )
Nrq   r   )r  r/  r“  r)   )r  r  r  r  Úm)r$   r/  r  )r$   )	r+   r‰   r-   r.   r¡   r  rm  r   Úget_facecolors)r¸   r/  r4   Ú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   rq   )Úsizei,  Újetrª   )r  ÚsÚcmapr¬   r|  z{x:g})Úfmt)Ú0Ú1Ú2Ú3Ú4c                 S   ó   g | ]}|  ¡ ‘qS r   )rB   ©Ú.0Úliner   r   r   Ú
<listcomp>  ó    z7test_pathcollection_legend_elements.<locals>.<listcomp>r‡   r   )Úlocrj  )Únumr"  r   ru  )rt   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>)rt   rÃ  r¶  Úfuncc                 S   r¼  r   ©Úget_markersizer½  r   r   r   rÀ    rÁ  rˆ   r½   )r   r   r¢  rˆ   rq   rÓ   r½   r¾   )ÚnbinsÚmin_n_ticksÚsteps)r)   r   g33333³K@i  )rÃ  rt   r¶  c                 S   s   g | ]}t |ƒ‘qS r   )Úfloat)r¾  Úlr   r   r   rÀ  !  rÁ  )r+   ró   ÚseedÚrandÚrandintr-   r.   r¡   Úlegend_elementsr  r,   rµ  r‰   r   ÚlegendrŠ  ÚsqrtrÑ  r   ÚmplÚtickerÚMaxNLocatorÚ
add_artistÚcanvasrm  )r¸   r¹   r  r´  r4   r5   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   r;   r   )Úarrr3   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_array0  s   þr  r4  ÚstepÚprec                 C   sd   t  dd¡}t  |¡}|d }| ¡ j|||fi |¤Ž |  ¡ j|ddfi |¤Ž}| |||¡ d S )Nr   é   çš™™™™™É?r)   g333333ó?)r+   rÆ   rË   r.   Úfill_betweenÚset_data)r´   rµ   r4  ÚtÚf1Úf2r3   r   r   r   Ú*test_fill_between_poly_collection_set_dataB  s   
r  )Út_directionr  rg  ÚwhereÚmsg)r  NNNz't_direction must be 'x' or 'y', got 'z')r¸   N)r)   r   Nz'x' is not 1-dimensionalr¸   Frˆ   z0where size \(3\) does not match 'x' size \(\d+\)r¹   r   r   z5'y' has size \d+, but 'x1' has an unequal size of \d+c                 C   s„   t  dd¡}|d u rt  |¡nt  |¡}|d }|r|j|Ž }tjt|d t| ||||d W d   ƒ d S 1 s;w   Y  d S )Nr   r  r  r  )r  )	r+   rÆ   rË   ÚasarrayrŠ   r  r‘  r   r
   )r  r  rg  r  r  r  r  r   r   r   Ú'test_fill_between_poly_collection_raiseO  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 dtyper  Úwrong_inputrí   rq   )
r  r   r   r  r‘  Ú	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   rÄ   TF)ÚscalexÚscaleyr   r  )r+   Úcolumn_stackÚrepeatÚtiler  rŠ   r-   r.   r’   Úblended_transform_factoryrÈ   Ú	transAxesr/   r   rä   r;   Úassert_allcloseÚget_xlim)Úar=  Úxy_pairsÚ	line_segsÚfr5   rÐ   r   r   r   Útest_blended_collection_autolimo  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+   r;   r"  Úget_ylimr#  )r4   r5   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+   r;   r"  r)  r#  )rÅ   rv   r4   r5   r   r   r   Útest_autolim_with_zeros„  s
   	r,  c                 C   s.  t  d¡}t  d¡}t j d¡}t ¡ \}}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 sdw   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 )Nrs  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¾   r-  é6   )rÓ   rj  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,))rj  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))rj  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.   r+  r  r‘  r   ÚreÚescaper   rŠ   rà   rf  r   )r   r¸   r¹   r  r4   r5   r3   r   r   r   Ú"test_quadmesh_set_array_validation”  sX   



ÿý

ÿý

ÿý


ÿý


ÿý


ÿý

r4  c                  C   sÞ  t  g d¢g d¢¡\} }| | d d…d d…f }t | ||¡}| ¡  | ¡ dd …d d …f }t j | dk|dk@ | ¡} t | ||¡}| ¡  t	| 
¡ ƒdksQJ ‚t|| ¡ ƒ t j | dk|dk@ |¡}t | ||¡}| ¡  t	| 
¡ ƒdkszJ ‚t|| ¡ ƒ t j | d d…d d…f dk|d d…d d…f dk@ |¡}t |¡}| ¡  t	| 
¡ ƒdks±J ‚t|| ¡ ƒ t  d¡ d¡}| |¡ | ¡  t	| 
¡ ƒdksÓJ ‚t j |d	¡}| |¡ | ¡  t	| 
¡ ƒd
ksíJ ‚d S )Nrl  )r   r   r   rˆ   r)   r   r   rq   rÓ   )rˆ   r   r   r‡   )r+   r®   r-   r   Úupdate_scalarmappableÚget_facecolorÚmaÚmasked_wherer   r  Ú	get_pathsr   r‰   rŠ   r   Úmasked_less)r*  r+  ÚzzÚquadmeshÚquadmesh_fcÚpolymeshr   r   r   Ú'test_polyquadmesh_masked_vertices_arrayÄ  s8   :


r?  c                 C   sd   g d¢}g d¢}t jdd}t  ||¡\}}tt| ƒ|||ƒ}t  |j|jg¡j}t| ¡ |ƒ d S )Nrl  )r   r‡   rÓ   )r   r   )rg  )	r+   rf  r®   r+  r-   Ústackrá   r   Úget_coordinates)r   r¸   r¹   r  r*  r+  r3   rp  r   r   r   Útest_quadmesh_get_coordinatesô  s   rB  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‡   rj  ri  r  )r‡   r‡   r/  r0  )r+   r‰   rŠ   r-   r.   r   rf  rg  r   rÝ  rm  r÷  r  )r¸   r¹   r  r4   r5   r3   r   r   r   Útest_quadmesh_set_array   s(   







rC  c                 C   s²   t  ¡ \}}tjd }tjjddd}t|| ƒdgg||d}|j ¡  t	 
| ¡ dd d …f ||dƒƒ¡s8J ‚d\|_|_|j ¡  t	 
| ¡ dd d …f ||dƒƒ¡sWJ ‚d S )NÚplasmar   r   )ÚvminÚvmax)rµ  rŒ   )r   r   )r-   r.   rÙ  Ú	colormapsr  Ú	Normalizer+  rÝ  rm  r+   r÷  r«  rE  rF  )r   r4   r5   rµ  rŒ   r3   r   r   r   Útest_quadmesh_vmin_vmax  s   

(
,rI  c                 C   s<  t  d¡}t  d¡}t  d¡ d¡}|| ¡  }| ¡ }t d¡\}\}}t|| ƒ||||d}	t|| ƒ|||ƒ}
|
 |¡ t 	¡  t
|	 ¡ d d …df |ƒ t
|
 ¡ d d …df |ƒ t d¡\}\}}t|| ƒ||||d}	t|| ƒ|||ƒ}
|
 |¡ t 	¡  t
|	 ¡ d d …df |ƒ t
|
 ¡ d d …df |ƒ d S )Nr‡   rj  ri  r   )r/  r)   )r+   r‰   rŠ   Úmaxrà   r-   r.   r+  r  rm  r   r«  )r   r¸   r¹   r  r/  Ú
alpha_flatr4   r¬  r­  Úcoll1Úcoll2r   r   r   Útest_quadmesh_alpha_array.  s&   



rN  c                 C   sp   t  ¡ \}}t|| ƒt d¡ d¡ƒ}tjtdd | 	ddg¡ | 
¡  W d   ƒ d S 1 s1w   Y  d S )Nrñ   )rˆ   r‡   z^Data array shaper  r   ç333333ã?)r-   r.   r+  r+   r‰   rŠ   r  r‘  r   r  r5  )r   r4   r5   Úpcr   r   r   Útest_alpha_validationF  s   
"þrQ  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   rq   )r  çš™™™™™Ù?rO  gš™™™™™é?©r´  r"  c                 S   s   d|  S )Nrq   r   rT  r   r   r   rÉ  `  rÊ  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rt   rÃ  rË  c                 S   r¼  r   rÌ  rô  r   r   r   rÀ  d  rÁ  z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  ‘qS )rq   r   r   rô  r   r   r   rÀ  e  s    rÔ   N)r+   ró   rÓ  r-   r.   r¡   rÖ  r   )rå   ræ   ÚCÚSÚlegend_sizesr4   r5   r¨  ÚhandlesÚlabelsÚhandle_sizesr   r   r   Ú+test_legend_inverse_size_label_relationshipO  s   

ÿr[  c                 C   sd  t t| ƒ} t d¡ dd¡}| |ddd}| ¡  t | ¡ ¡}| 	¡ | 
| ¡ ¡ƒ}t | ¡ d¡s5J ‚| |ƒ}| d¡ | d¡ | ¡  t | ¡ d¡sQJ ‚t | ¡ g d¢g¡s^J ‚| d¡ | ¡  t | ¡ g d	¢g¡stJ ‚| d ¡ | ¡  t | ¡ g d¢g¡sŠJ ‚| d ¡ | ¡  t | ¡ |¡sJ ‚| 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 | ¡ |¡s1J ‚t | ¡ g d¢g¡s?J ‚| d ¡ | ¡  t | ¡ t d¡¡sVJ ‚t | ¡ g d¢g¡sdJ ‚| |d
t d¡d}| ¡  t | ¡ |¡s}J ‚t | ¡ g d¢g¡s‹J ‚| d ¡ | ¡  t | ¡ t d¡¡s¢J ‚t | ¡ g d¢g¡s°J ‚d S )Nrñ   rˆ   r‡   ru  r|   )r{  rÞ   r   r   )r   r   r   r   )r   r   r   )r   r   r   )rñ   rˆ   )rñ   r‡   )r+  r-   r+   r‰   rŠ   r5  ÚmcolorsÚto_rgba_arrayÚ_get_default_facecolorÚget_cmaprŒ   rà   Ú
same_colorÚget_edgecolorÚset_facecolorÚset_edgecolorr6  r  r÷  r   rf  )r   r  rP  Úface_defaultÚmappedr   r   r   Útest_color_logicj  sl   










 rf  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   )Ú	facecolorr|   )r   Úget_linewidthr\  r`  ra  Ú
get_zorderr6  )Úlcr   r   r   Útest_LineCollection_args°  s   ÿrm  c                 C   sx   t  d¡ dd¡}tt| ƒ|ƒ}| | ¡ ¡ | ¡  | |¡ | ¡  t jdt jd ddd¡}| |¡ | ¡  d S )Nrñ   rˆ   r‡   é$   rð  )	r+   r‰   rŠ   r+  r-   r   rà   r5  Úuint8)r   r  rP  r   r   r   Útest_array_dimensions¾  s   

rp  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   r}   rŠ  )r   rl  Úreadbackr   r   r   Útest_get_segmentsÎ  s   

rs  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"  ro  )r"  rÜ   )r’   r“   r‹   ÚCircleCollectionÚset_offsetsr‘   r£   )Úidentityr"  r–   ÚinitÚlateÚnull_boundsÚinit_boundsÚlate_boundsr   r   r   Útest_set_offsets_late×  s   
r|  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)r}  rw  rx  r   r   r   Útest_set_offset_transformì  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¾   rq   r†   rÞ  z
2021-11-29)r+   rÆ   rË   Útimedelta64Ú
datetime64r-   r¡   Úget_offsetsru  r  r  r;   r"  r.   )r¸   r¹   Údr¨  Úoff0r4   r5   r   r   r   Útest_set_offset_unitsö  s   
r†  Ú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æ  rñ   rc   r‡   é1   é4   é5   r.  é7   é8   ©r   r   rˆ   r‡   rq   )r   r   r   r   r   ©Úmask)r   r+   r7  r,   r-   r.   r¡   )Ú
unmasked_xÚmasked_yr4   r5   r   r   r   r‡  
  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   rq   )
r+   r7  r,   r‰   Úadd_subplotr¡   ru  r  Ú
set_xticksÚ
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|ƒƒs6J ‚t  | |g¡}| |¡ t	| 
¡ t|ƒƒsMJ ‚d S )NrŽ  r“  r  r   rÓ   )r+   r7  r,   r‰   r-   r.   r¡   r  ru  Ú
isinstancerƒ  Útype)r¸   r¹   r4   r5   r—  Úmasked_offsetsÚunmasked_offsetsr   r   r   Útest_check_offsets_dtype.  s   

r  ÚgapcolorÚoranger  r  c           
   
   C   s´   |   d¡}|  d¡}||fD ]}| dd¡ | dd¡ qtddƒ}g d¢}|j|ddd||dd t|tƒr:|g}t|t 	|¡t 	|¡ƒD ]\}}}	|j
|ddd|	|dd qFd S )	Néo   r   rÓ   r   )ú:r…  z--rd   r   )r#   r%   rž  r/  )r”  r1   r2   r  Úvlinesr™  Ústrr  Ú	itertoolsÚcycleÚaxvline)
r´   rµ   rž  rº   r»   r5   r¸   r}  Úgcolr­   r   r   r   Útest_striped_lines>  s"   


ÿ
ÿþr¨  )r¦   ÚpdfÚsvgÚepsc                 C   s°   |   ¡ }|  ¡ }d}g d¢g d¢g}t|dd}| |¡ t d|i¡ t|dd}W d   ƒ n1 s5w   Y  | |¡ | |¡ | ¡ | ¡   krS|ksVJ ‚ J ‚d S )Nr   ))r¨   r¨   )r¨   rS  )rS  rS  )rS  r¨   ))rO  rO  )rO  çÍÌÌÌÌÌì?)r¬  r¬  )r¬  rO  r¸   )Úhatchzhatch.linewidth)r”  r	   Úset_hatch_linewidthrÙ  Ú
rc_contextr/   Úget_hatch_linewidth)r´   rµ   rº   r»   r‚  ÚpolygonsÚrefÚtestr   r   r   Útest_hatch_linewidthV  s   þ
ÿ

(r´  )sr   rP  r¤  Úplatformr2  Útypesr   Únumpyr+   Únumpy.testingr   r   r  Ú
matplotlibrÙ  Úmatplotlib.pyplotÚpyplotr-   Úmatplotlib.collectionsÚcollectionsr‹   Úmatplotlib.colorsr  r\  Úmatplotlib.pathÚpathrœ   Úmatplotlib.transformsÚ
transformsr’   r   r   r   r	   r
   Úmatplotlib.testing.decoratorsr   r   Úfixturer   r7   rE   rM   rR   rU   rX   r\   r^   ra   rg   rl   rw   r{   r:   r   r™   rŸ   r¤   r  Úcontextr¼   rÑ   r×   Úmachinerì   r   r   r0  rK  rV  r_  rc  rh  rk  rn  rr  rƒ  rŒ  r”  r›  r¡  r§  r©  r°  rí  rï  r  ÚmarkÚparametrizer  r  r  r(  r*  r,  r4  r?  rB  rC  rI  rN  rQ  r[  rf  rm  rp  rs  r|  r€  r†  r‡  r˜  r  r¨  r´  r   r   r   r   Ú<module>   s   
(












	


ÿ
+
%








	
	
ÿ
1
ü

þ
00	

E	
ÿ



