o
    ˆ‚¡e!¯  ã                   @   sf  d dl m 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"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%„ ƒZ.e#d&gƒd'd(„ ƒZ/e#d)gƒd*d+„ ƒZ0e#g d,¢ƒd-d.„ ƒZ1e#d/gƒd0d1„ ƒZ2d2d3„ Z3d4d5„ Z4d6d7„ Z5d8d9„ Z6ej7 8d:¡e"d;gd<d=d>„ ƒƒZ9d?d@„ Z:dAdB„ Z;e#dCgdDdEdFdG„ ƒZ<e#dHgdDd:dIdJdK„ ƒZ=e#dLgdDdEdMdN„ ƒZ>e#dOgdDdEdPdQ„ ƒZ?dRdS„ Z@dTdU„ ZAdVdW„ ZBdXdY„ ZCdZd[„ ZDd\d]„ ZEe#d^gdDdEd_d`„ ƒZFdadb„ ZGej7 8dc¡ddde„ ƒZHdfdg„ ZIej7 8dc¡dhdi„ ƒZJej7 8dc¡djdk„ ƒZKe#dlgƒdmdn„ ƒZLe#dogdDdcdIdpdq„ ƒZMdrds„ ZNdtdu„ ZOdvdw„ ZPdxdy„ ZQdzd{„ ZRd|d}„ ZSd~d„ ZTejU Vd€dd‚g¡dƒd„„ ƒZWd…d†„ ZXd‡dˆ„ ZYd‰dŠ„ ZZd‹dŒ„ Z[ddŽ„ Z\dd„ Z]d‘d’„ Z^d“d”„ Z_ej7 8dc¡d•d–„ ƒZ`d—d˜„ Zad™dš„ Zbd›dœ„ Zcddž„ ZddŸd „ Zed¡d¢„ Zfe#d£gd;gdDd:d¤d¥d£„ ƒZge"d;gd<d¦d§„ ƒZhd¨d©„ ZiejU Vdªd«d¬d­gg¡e"d;gd<e jd®d¯i¡d°d±„ ƒƒƒZkdS )²é    )ÚdatetimeN)ÚSimpleNamespace)Úassert_array_equalÚassert_array_almost_equal)Ú
CollectionÚLineCollectionÚEventCollectionÚPolyCollection)Úcheck_figures_equalÚimage_comparisonÚ
pcolormeshÚpcolor)Úparamsc                 C   s   | j S ©N)Úparam)Úrequest© r   úP/var/www/myenv/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   ù


ø

r6   Ú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#   )r6   Úcheck_segmentsr*   Útestingr   Úget_positionsÚget_orientationÚis_horizontalÚget_linelengthÚget_lineoffsetÚget_linestyleÚ	get_colorÚ
get_colors)Ú_r2   r5   r#   r   r   r   Ú test__EventCollection__get_propsC   s    üÿrD   Ú#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   )
r6   r*   ÚhstackÚset_positionsr:   r   r;   r9   r/   r0   ©Úspltr2   r5   Únew_positionsr   r   r   Ú$test__EventCollection__set_positions]   s   
ý
rL   Ú#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(   é#   )r6   r*   rG   Úswitch_orientationÚadd_positionsr:   r   r;   r9   r/   r0   rI   r   r   r   Ú$test__EventCollection__add_positionsk   s    

ÿü
rQ   Ú&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(   rF   )
r6   r*   rG   Úappend_positionsr:   r   r;   r9   r/   r0   rI   r   r   r   Ú'test__EventCollection__append_positions}   s   

ÿü
rT   Ú&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(   rF   )
r6   r*   rG   Úextend_positionsr:   r   r;   r9   r/   r0   rI   r   r   r   Ú'test__EventCollection__extend_positions   s   
ÿü
rW   Ú(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   )	r6   rO   r<   r=   r;   r9   r/   r1   r0   )rJ   r2   r5   Únew_orientationrK   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)
r6   rO   r;   r<   r=   r*   r:   r   r9   r/   rI   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 )
NrY   r&   r!   r    z EventCollection: set_orientationr(   r)   r   r   )r6   Úset_orientationr<   r=   r9   r/   r1   r0   )rJ   r2   r5   rZ   r   r   r   Ú&test__EventCollection__set_orientationÃ   s   
ü
r`   Ú$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ìÿÿÿé   )r6   Úset_linelengthr>   r9   r/   r1   )rJ   r2   r5   Únew_linelengthr   r   r   Ú%test__EventCollection__set_linelengthÔ   s   
ü
rf   Ú$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úÿÿÿéüÿÿÿ)r6   Úset_lineoffsetr?   r9   r/   r1   )rJ   r2   r5   Únew_lineoffsetr   r   r   Ú%test__EventCollection__set_lineoffsetã   s   
ü
rk   )Ú#EventCollection_plot__set_linestylerl   Ú#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   )ç      @ro   )r"   é   rp   zEventCollection: set_r   )r6   Úsetr,   Úgetpr/   )ÚpropÚvalueÚexpectedrJ   r2   rC   r   r   r   Útest__EventCollection__set_propò   s   

ýørv   Ú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)	r6   r*   r+   Ú	set_colorrA   rB   r:   r   r/   )rJ   r2   rC   Ú	new_colorr#   r   r   r   Ú test__EventCollection__set_color  s   
rz   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   rY   z.orientation must be 'horizontal' or 'vertical'r   )Úget_segmentsÚlowerÚ
ValueErrorÚ	enumerate)
r2   r&   r!   r    r   ÚsegmentsÚpos1Úpos2ÚiÚsegmentr   r   r   r9     s   ür9   c                  C   s4   t  g ¡} |  t ¡ ¡}t| ¡ tj ¡  ¡ ƒ d S r   )	Ú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Œ   )r4   r2   Ú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)r4   r™   r   r   r   Útest_add_collection9  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_datalimD  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      "@éûÿÿÿrc   éþÿÿÿé   é   é    ©Ú	transform)g      4@g      >@g      .@ro   )r,   r‘   r*   ÚarangeÚlinspaceÚreshapeÚquiverr‡   Ú	transDatar™   r–   r¤   rˆ   ÚAffine2DÚ	translateÚsinÚcosr˜   )r4   r®   r¯   ÚuÚvÚqÚtransr   r   r   Útest_quiver_limits^  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´   rc   r·   r¸   r¹   rº   r»   )rc   é   rb   é   r   ©Údecimal)r,   r‘   r*   r¾   r¤   rˆ   rÂ   rÃ   rÁ   ÚbarbsrÄ   rÅ   r   r˜   r™   )r4   r®   r¯   rÉ   r   r   r   Útest_barb_limitso  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(   rc   r®   r{   )ÚunitsÚoffsetsÚoffset_transformÚ
facecolors)r,   r-   r*   r½   r¤   ÚvstackÚravelÚTÚ	ones_liker…   ÚEllipseCollectionrÁ   r.   Úautoscale_view)r3   r4   r®   r¯   ÚXÚYÚXYÚwwÚhhÚaaÚecr   r   r   Útest_EllipseCollection}  s   

þ
rä   zpolycollection_close.png)rÑ   Ústylec                  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¯   Úkrp   ç      Ð?©r"   gffffffæ?r¯   )ÚzsÚzdirr¸   rÒ   )Úmpl_toolkits.mplot3dræ   r,   r–   Úadd_axesÚlistÚranger…   r	   ÚlenÚ	set_alphaÚzipÚextendrx   Úadd_collection3dÚ
set_xlim3dÚ
set_zlim3dÚ
set_ylim3d)ræ   Ú	vertsQuadr3   r4   Ú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Ú	rotationsr3   r4   Ú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  r4   Ú
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(  r3   r4   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   )r3   r4   r   Úmouse_eventÚfoundÚindicesr   r   r   Útest_pickingâ  s   r7  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   ©ç      ø?r=  rp   )r*   r½   r,   r-   r   Údraw_without_renderingr#  r¼   r   r3  r   )r®   rÝ   r3   r4   Úmeshr:  r;  r¯   r4  r5  r6  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      Ð¿Tr9  )r,   r-   r   r>  r#  r¼   r   r3  )r®   r¯   r3   r4   r?  ÚpointsÚpointr:  r;  ru   r4  r5  r6  r   r   r   Útest_quadmesh_contains_concave  s   
ûrD  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¸   r8  r9  r   )r*   r½   r,   r-   r   Ú_Ar>  r#  r¼   r   Úget_cursor_dataÚ	set_arrayÚonesÚshaper   )	r®   rÝ   r3   r4   r?  r:  r;  r¯   r4  r   r   r   Útest_quadmesh_cursor_data  s   
 
rJ  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<  r9  é	   )r,   r-   r   r*   rH  r>  r#  r¼   r   r   rF  )r®   r3   r4   r?  r:  r;  r¯   r4  r   r   r   Ú)test_quadmesh_cursor_data_multiple_points+  s   rM  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_dashes7  s    rP  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   rQ  )rb   rb   r  )rÓ   rÔ   rÕ   r   rË   )r,   r-   r…   rÛ   rÁ   r.   r0   r1   )r3   r4   ÚwidthsÚheightsÚanglesÚcoordsÚer   r   r   Útest_size_in_xy<  s   
þ
rW  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   rn   Údashdot)TFT)Ú
edgecolors)rÖ   )Ú
linewidths)Ú
linestyles)Úantialiaseds)ÚSeriesr   )Úpdr^  rã   ÚfcÚlwr£   râ   r   r   r   Útest_pandas_indexingM  s   



ri  Ú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ú-r_  r8   rÌ   r   )rk  rk  rk  rÒ   )r…   r†   Úset_linestylesÚset_linewidthsÚget_linestylesÚget_linewidthsÚall©r   r   r   r   Útest_lslw_bcast^  s   
rr  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_linestylel  s   "ÿrz  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_capstylerq  r   r   r   Útest_capstyler  ó   

r  c                  C   r{  )Nr|  )Ú	joinstyleÚmiter)r…   r†   Úget_joinstyleÚset_joinstylerq  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 )NrA  r=  ç      @)r   r   r   r   r   r   )r   r   r   )rÒ   rÒ   r   r   r   )r´   rb   rc   rí   r|  r„  z2Line collection with customized caps and joinstyle)r,   r-   r0   r1   r*   r+   Úzerosr   r€  r†  r.   r/   )r3   r4   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 )Nrp   ry  rž   )r,   r-   r—   ró   rõ   )r3   r4   Ú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 )
Nrp   r   )r  r  ry  r(   )rè   ré   rê   r  Úm)r#   r  rè   )r#   )	r*   r½   r,   r-   r—   rõ   rO  r   Úget_facecolors)r®   r  r3   Ú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   rp   )Úsizei,  Újetr    )r  ÚsÚcmapr¢   rb  z{x:g})Úfmt)Ú0Ú1Ú2Ú3Ú4c                 S   ó   g | ]}|  ¡ ‘qS r   )rA   ©Ú.0Úliner   r   r   Ú
<listcomp>Ì  ó    z7test_pathcollection_legend_elements.<locals>.<listcomp>r¸   r   )ÚlocrL  )Únumr  r   r[  )rs   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ª  )r[  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>)rs   r©  rœ  Úfuncc                 S   r¢  r   ©Úget_markersizer£  r   r   r   r¦  Ü  r§  rÒ   r³   )r   r   rˆ  rÒ   rp   rÌ   r³   r´   )ÚnbinsÚmin_n_ticksÚsteps)r(   r   g33333³K@i  )r©  rs   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   Úlegendrp  Úsqrtr·  r   ÚmplÚtickerÚMaxNLocatorÚ
add_artistÚcanvasrO  )r®   r¯   r  rš  r3   r4   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   )Úarrr2   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 dtypers  Úwrong_inputé-   rp   )
ró   r   rG  rv  rw  Ú	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Ü   r:   Úassert_allcloseÚget_xlim)Úar  Úxy_pairsÚ	line_segsÚfr4   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*   r:   rü  Úget_ylimrý  )r3   r4   r   r   r   Útest_singleton_autolim'  s   r  ztransform, expected)rÁ   )rA  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¼   ru   r3   r4   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 )NrX  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)rs  r´   r  é6   )rÌ   rL  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,))rL  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))rL  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  rv  rw  r~   ÚreÚescaperG  r¿   rØ   rH  r   )r   r®   r¯   r  r3   r4   r2   r   r   r   Ú"test_quadmesh_set_array_validation>  sX   



ÿý

ÿý

ÿý


ÿý


ÿý


ÿý

r  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jtjdd | t  d¡¡ W d   ƒ n1 sÓw   Y  t  d	¡ d
¡}| |¡ | ¡  t	| 
¡ ƒd	ksóJ ‚t j |d¡}| |¡ | ¡  t	| 
¡ ƒdksJ ‚d S )NrN  )r   r   r   rÒ   r(   r   r   rp   zSetting a PolyQuadMeshrs  rÌ   )rÒ   r   r   r¸   )r*   r¤   r,   r   Úupdate_scalarmappableÚget_facecolorÚmaÚmasked_wherer   rô   Ú	get_pathsr   rv  ÚwarnsrÀ  ÚMatplotlibDeprecationWarningrG  rH  r½   r¿   Úmasked_less)r  r  ÚzzÚquadmeshÚquadmesh_fcÚpolymeshr   r   r   Ú'test_polyquadmesh_masked_vertices_arrayn  sB   :
ÿþ

r  c                 C   sd   g d¢}g d¢}t jdd}t  ||¡\}}tt| ƒ|||ƒ}t  |j|jg¡j}t| ¡ |ƒ d S )NrN  )r   r¸   rÌ   )r   r   )rI  )	r*   rH  r¤   r  r,   ÚstackrÙ   r   Úget_coordinates)r   r®   r¯   r  r  r  r2   rU  r   r   r   Útest_quadmesh_get_coordinates£  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¸   rL  rK  é   )r¸   r¸   r	  r
  )r*   r½   r¿   r,   r-   r   rH  rI  rG  rÄ  rO  rÞ  rð  )r®   r¯   r  r3   r4   r2   r   r   r   Útest_quadmesh_set_array¯  s(   







r   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›  Únorm)r   r   )r,   r-   rÀ  Ú	colormapsrý   Ú	Normalizer  rÄ  rO  r*   rÞ  r‘  r"  r#  )r   r3   r4   r›  r$  r2   r   r   r   Útest_quadmesh_vmin_vmaxÍ  s   

(
,r'  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¸   rL  rK  r   )r  r(   )r*   r½   r¿   ÚmaxrØ   r,   r-   r  rõ   rO  r   r‘  )r   r®   r¯   r  r  Ú
alpha_flatr3   r’  r“  Úcoll1Úcoll2r   r   r   Útest_quadmesh_alpha_arrayÝ  s&   



r,  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 )NrY  )rÒ   r¸   z^Data array shapers  r   ç333333ã?)r,   r-   r  r*   r½   r¿   rv  rw  r~   rõ   r  )r   r3   r4   Ú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   rp   )rô  gš™™™™™Ù?r-  gš™™™™™é?©rš  r  c                 S   s   d|  S )Nrp   r   r1  r   r   r   r¯    r°  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rs   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 )rp   r   r   rÛ  r   r   r   r¦    s    rÍ   N)r*   r¹  rº  r,   r-   r—   r½  r   )rÝ   rÞ   ÚCÚSÚlegend_sizesr3   r4   rŽ  ÚhandlesÚlabelsÚhandle_sizesr   r   r   Ú+test_legend_inverse_size_label_relationshipþ  s   

ÿr8  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 )NrY  rÒ   r¸   r[  r{   )ra  rÖ   r   r   )r   r   r   r   )r   r   r   )r   r   r   )rY  rÒ   )rY  r¸   )r  r,   r*   r½   r¿   r  ÚmcolorsÚto_rgba_arrayÚ_get_default_facecolorÚget_cmapr$  rØ   Ú
same_colorÚget_edgecolorÚset_facecolorÚset_edgecolorr  rõ   rÞ  rG  rH  )r   r  r.  Úface_defaultÚmappedr   r   r   Útest_color_logic  sl   










 rC  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_linewidthr9  r=  r>  Ú
get_zorderr  )Úlcr   r   r   Útest_LineCollection_args_  s   ÿrJ  c                 C   sx   t  d¡ dd¡}tt| ƒ|ƒ}| | ¡ ¡ | ¡  | |¡ | ¡  t jdt jd ddd¡}| |¡ | ¡  d S )NrY  rÒ   r¸   é$   r×  )	r*   r½   r¿   r  r,   rG  rØ   r  Úuint8)r   r  r.  r   r   r   Útest_array_dimensionsm  s   

rM  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|   rp  )r€   rI  Úreadbackr   r   r   Útest_get_segments}  s   

rP  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  rQ  )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   
rY  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)rZ  rT  rU  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´   rp   é   rÅ  z
2021-11-29)r*   r¾   rÄ   Útimedelta64Ú
datetime64r,   r—   Úget_offsetsrR  rò   rö   r:   rü  r-   )r®   r¯   ÚdrŽ  Úoff0r3   r4   r   r   r   Útest_set_offset_units¥  s   
rd  Ú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æ  rY  rb   r¸   é1   é4   é5   r  é7   é8   ©r   r   rÒ   r¸   rp   )r   r   r   r   r   ©Úmask)r   r*   r  r+   r,   r-   r—   )Ú
unmasked_xÚmasked_yr3   r4   r   r   r   re  ¹  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 )Nrl  ©r   r   r   r   r   rm  r   rÌ   )r   r   rp   )
r*   r  r+   r½   Úadd_subplotr—   rR  r÷  Ú
set_xticksÚ
set_yticks)r«   rª   r®   r¯   r°   Úscatr±   r   r   r   Útest_masked_set_offsetsÌ  s   


rv  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 )Nrl  rq  rm  r   rÌ   )r*   r  r+   r½   r,   r-   r—   r÷  rR  Ú
isinstancera  Útype)r®   r¯   r3   r4   ru  Úmasked_offsetsÚunmasked_offsetsr   r   r   Útest_check_offsets_dtypeÝ  s   

r{  ÚgapcolorÚorangerè   rë   zlines.linewidthrc   c           
   	   C   s°   |   d¡}|  d¡}||fD ]}| dd¡ | dd¡ qtddƒ}g d¢}|j|dd||dd t|tƒr9|g}t|t 	|¡t 	|¡ƒD ]\}}}	|j
|dd|	|dd qEd S )Néo   r   rÌ   r   )ú:rk  z--r   )r$   r|  r  )rr  r0   r1   ró   Úvlinesrw  Ústrrö   Ú	itertoolsÚcycleÚaxvline)
rª   r«   r|  r°   r±   r4   r®   rc  Úgcolr£   r   r   r   Útest_striped_linesí  s   



ÿþr†  )lr   r1  r‚  r  Útypesr   Únumpyr*   Únumpy.testingr   r   rv  Ú
matplotlibrÀ  Úmatplotlib.pyplotÚpyplotr,   Úmatplotlib.collectionsÚcollectionsr…   Úmatplotlib.colorsrý   r9  Úmatplotlib.pathÚpathr’   Úmatplotlib.transformsÚ
transformsrˆ   r   r   r   r	   Úmatplotlib.testing.decoratorsr
   r   Úfixturer   r6   rD   rL   rQ   rT   rW   r[   r]   r`   rf   rk   rv   rz   r9   r   r•   rš   rå   Úcontextr²   rÊ   rÐ   rä   r  r  r,  r7  r@  rD  rJ  rM  rP  rW  ri  rr  rz  r  r‡  r  r  r–  rÔ  rÖ  rë  ró  r  r  ÚmarkÚparametrizer  r  r  r  r   r'  r,  r/  r8  rC  rJ  rM  rP  rY  r]  rd  re  rv  r{  Ú
rc_contextr†  r   r   r   r   Ú<module>   sò    
(












	



$








	
	
ÿ
1þ
05	

E	
ÿ



