a
    ëÝEb7£  ã                	   @   s   d dl m Z  d dlZd dlmZ d dlZd dlmZ 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mZ d d	lmZmZ d d
lmZ d dlmZ d dlmZmZmZ d dl m!Z" d dl#m$Z% d dl&m'Z' edgddge (¡ dk�rd ndd�dd„ ƒZ)dd„ Z*dd„ Z+dd„ Z,dd„ Z-edgƒdd„ ƒZ.ed gƒd!d"„ ƒZ/d#d$„ Z0d%d&„ Z1d'd(„ Z2ed)gƒd*d+„ ƒZ3d,d-„ Z4ed.gddgd/d0d1œd2�d3d4„ ƒZ5d5d6„ Z6d7d8„ Z7d9d:„ Z8d;d<„ Z9d=d>„ Z:ej; <d?g d@¢¡dAdB„ ƒZ=ej> ?dC¡dDdE„ ƒZ@ej; <dFdGejAfdHejBdGfg¡dIdJ„ ƒZCdKdL„ ZDdMdN„ ZEdOdP„ ZFdQdR„ ZGdSdT„ ZHej; <dUejIdVej; JdV¡gdW�ejIdXej; JdX¡gdW�g¡dYdZ„ ƒZKd[d\„ ZLd]d^„ ZMd_d`„ ZNeddagdb�dcdd„ ƒZOej; <deg df¢¡dgdh„ ƒZPdidj„ ZQdkdl„ ZRdmdn„ ZSej> ?do¡dpdq„ ƒZTdrds„ ZUedtgdodudvdwœdxdy�dzd{„ ƒZVeg d|¢db�d}d~„ ƒZWG dd€„ d€ƒZXd�d‚„ ZYedƒgdod„dvid…dy�d†d‡„ ƒZZdˆd‰„ Z[edŠgdod„dvid…dy�d‹dŒ„ ƒZ\ed�gdod„dvid…dy�dŽd�„ ƒZ]d�d‘„ Z^ej> ?do¡d’d“„ ƒZ_ed”gdodxd•�d–d—„ ƒZ`d˜d™„ Zadšd›„ Zbdœd�„ ZcdždŸ„ Zdd d¡„ ZedS )¢é    )ÚdatetimeN)ÚPath)ÚTimer)ÚSimpleNamespace)ÚImage)ÚcbookÚrcParams)ÚMatplotlibDeprecationWarning)Úimage_comparisonÚcheck_figures_equal)ÚAxes)ÚFigure)ÚAutoMinorLocatorÚFixedFormatterÚScalarFormatterZfigure_align_labelsÚpngÚsvgÚx86_64ç{®Gáz„?)Ú
extensionsZtolc                  C   s¢  t jdd�} t dd¡}|  |dd d…f ¡}| t ddd¡¡ | d¡ |  |d	 ¡}| t dd
d¡¡ t	dƒD ]Ž}|  |d|f ¡}| d| ¡ | 
d| ¡ |dv rÆ|j d¡ |j ¡  |dkræ| ¡ D ]}| d¡ qÖ|dkrv|j d¡ |j ¡  qvt	dƒD ]†}|  |d|f ¡}| 
d|› �¡ | d|› �¡ |dk�r| t dd
d¡¡ |j d¡ |j ¡  | ¡ D ]}| d¡ �q€�q|  ¡  d S )NT)Útight_layouté   r   é   g    €„.Aéè  z	Ylabel0 0)r   éÿÿÿÿg     ˆÃ@éd   é   z
YLabel1 %dz
XLabel1 %d)r   r   ÚtopéZ   ÚrightzXLabel2 zYLabel2 é
   )ÚpltÚfigureÚgridspecZGridSpecÚadd_subplotÚplotÚnpÚarangeÚ
set_ylabelÚrangeÚ
set_xlabelÚxaxisZset_label_positionZtick_topÚget_xticklabelsZset_rotationÚyaxisZ
tick_rightZalign_labels)ÚfigÚgsÚaxÚiZtick© r2   ú\/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_figure.pyÚtest_align_labels   s>    



r4   c                  C   s  t  dd¡\} }t|jƒD ]<\}}| d¡ | d¡ | t d¡| t d¡| ¡ q|  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]0\}}|jj ¡ d ||< |jj ¡ d ||< qŽtj |d d… |dd … ¡ tj |d d d… |dd d… ¡ t jdddd�\} }t|jƒD ]2\}}| d¡ | d¡ | tj d	d	¡¡}�q| j||d
� |  ¡  |  	¡  |  
¡  t d¡}t d¡}t|jƒD ]2\}}|jj ¡ d ||< |jj ¡ d ||< �q–tj |d d… |dd … ¡ tj |d d d… |dd d… ¡ d S )Nr   ÚBooZWhoé   r   r   T©Úconstrained_layoutr    ©r0   )r!   ÚsubplotsÚ	enumerateÚflatr*   r%   r&   r'   Zalign_ylabelsZalign_xlabelsÚdraw_without_renderingÚzerosr+   ÚlabelÚget_positionr-   ÚtestingÚassert_allcloseÚ
pcolormeshÚrandomÚrandnÚcolorbar)r.   ÚaxsÚnnr0   ZxnZynÚpcr2   r2   r3   Útest_align_labels_stray_axesB   s>    

"

"



rJ   c                  C   s  t  d¡ t  d¡} t  d¡ t  d¡ t  ¡  t  d¡ t  d¡ t  d¡ t  ¡ g d¢ksbJ ‚t  ¡ g d¢ksvJ ‚t  d	¡ t  ¡  t  d
¡ t  d¡ t  ¡ ddgks°J ‚t  ¡ ddgksÄJ ‚t  | ¡ t  ¡ | ksÞJ ‚t t¡� t  t	ƒ ¡ W d   ƒ n1 �s0    Y  d S )NÚallÚtodayr   Útomorrowr   r   )r   r   r   r6   é   )Ú rL   rO   rM   rO   r    rN   rO   )
r!   Úcloser"   Zget_fignumsZget_figlabelsZgcfÚpytestÚraisesÚ
ValueErrorr   )Z	fig_todayr2   r2   r3   Útest_figure_labele   s(    










rT   c                   C   s’   t  d¡ t  d¡ t  d¡ t  ¡  t  d¡s4J ‚t  d¡sBJ ‚t  d¡sPJ ‚t  d¡s^J ‚t  d¡ t  d¡ t  d¡r€J ‚t  d¡rŽJ ‚d S )NÚoner   Úthreer6   )r!   r"   Zfignum_existsrP   r2   r2   r2   r3   Útest_fignum_exists}   s    




rW   c                  C   sº   d} d}t jdd�}| | ¡ dd„ |jD ƒ| gks8J ‚t jddd�}| d	d	|¡ ||u s`J ‚d
d„ |jD ƒ| |gks|J ‚t jddddd�\}}||u sžJ ‚dd„ |jD ƒg ks¶J ‚d S )NzA fancy plotzReally fancy!r   )Únumc                 S   s   g | ]}|  ¡ ‘qS r2   ©Zget_text©Ú.0Útr2   r2   r3   Ú
<listcomp>”   ó    z$test_clf_keyword.<locals>.<listcomp>F)rX   Úclearç      à?c                 S   s   g | ]}|  ¡ ‘qS r2   rY   rZ   r2   r2   r3   r]   ™   r^   r   Tc                 S   s   g | ]}|  ¡ ‘qS r2   rY   rZ   r2   r2   r3   r]   �   r^   )r!   r"   ÚsuptitleZtextsÚtextr:   )Ztext1Ztext2Zfig0Zfig1Zfig2Úax2r2   r2   r3   Útest_clf_keyword�   s    
rd   Zfigure_todayc                  C   sh   t  d¡} |  ¡ }| |  ¡ ¡ | t d¡¡ t  d¡ t  ddgddgd¡ t  d¡ t  d¡ d S )NrL   rN   rM   r   r   Úr)	r!   r"   r$   Ú	set_titleÚ	get_labelr%   r&   r'   rP   ©r.   r0   r2   r2   r3   Útest_figure    s    


ri   Zfigure_legendc                  C   s°   t  d¡\} }|d jddgddgddd� |d jddgddgddd� |d jddgd	d	gdd
d� |d jddgddgddd� |d jddgddgddd� |  ¡  d S )Nr   r   r   ÚxÚg)r?   ÚcolorÚyre   r`   ÚkZ_yÚzÚb)r!   r:   r%   Zlegend©r.   rG   r2   r2   r3   Útest_figure_legend¯   s    rr   c                  C   s  t  ¡ } t t¡�  |  ¡ d u s$J ‚W d   ƒ n1 s80    Y  |  g d¢¡}tjtdd��$ | jdd�|u stJ ‚W d   ƒ n1 sˆ0    Y  |  ¡ |u s¢J ‚| jg d¢d�}tjtdd��$ | jdd�|u sÖJ ‚W d   ƒ n1 sê0    Y  |  ¡ |u �sJ ‚| j	dd	d�}|  ¡ |u �s&J ‚tjtdd��& | jd
d�|u �sLJ ‚W d   ƒ n1 �sb0    Y  |  	d¡}|  ¡ |u �sˆJ ‚tjtdd��& | jd
d�|u �s®J ‚W d   ƒ n1 �sÄ0    Y  tjtdd��& | jd
d�|u�sôJ ‚W d   ƒ n1 �s
0    Y  |  ¡  
¡  ¡ dk�s.J ‚|  |¡ | j||||gk�sPJ ‚|  ¡ |u �sbJ ‚|  	|¡ | j||||gk�s„J ‚|  ¡ |u �s–J ‚|  |¡ tjtdd��& | jdd�|u �sÆJ ‚W d   ƒ n1 �sÜ0    Y  |  ¡ |u �søJ ‚| j||||gk�sJ ‚d S )N©r   r   r   r   z5Calling gca\(\) with keyword arguments was deprecated©ÚmatchÚrectilinear©Ú
projection)çš™™™™™¹?ry   çš™™™™™é?rz   ©Zrectéy   ÚpolarT)r}   éz   )r   r   r   r   )r!   r"   rQ   rR   Ú	TypeErrorÚadd_axesÚwarnsr	   Zgcar$   Úget_subplotspecZget_geometryÚaxesZsca)r.   Úax0Úax1rc   Úax3r2   r2   r3   Útest_gca»   sf    .þ2þ2þ6
þ6þ6


þ6r‡   c                  C   sö   t  ¡ } | jtd� t t¡� | jtdd� W d   ƒ n1 sB0    Y  t t¡� | jtdd� W d   ƒ n1 sz0    Y  t t¡� | jddd� W d   ƒ n1 s²0    Y  t t¡� | jdd� W d   ƒ n1 sè0    Y  d S )	N)Ú
axes_classÚ3d)rˆ   rx   T)rˆ   r}   )rx   r}   é*   rw   )r!   r"   r$   r   rQ   rR   rS   r   ©r.   r2   r2   r3   Útest_add_subplot_subclassú   s    ,,,rŒ   c                  C   s®  t  ¡ } tjtdd�� |  ddd¡ W d   ƒ n1 s:0    Y  tjtdd�� |  ddd¡ W d   ƒ n1 sv0    Y  tjtdd�� |  ddd¡ W d   ƒ n1 s²0    Y  tjtdd�� |  ddd¡ W d   ƒ n1 sî0    Y  tjtd	d�� |  d
¡ W d   ƒ n1 �s(0    Y  tjtd	d�� |  d¡ W d   ƒ n1 �sb0    Y  tjtdd�� |  dd¡ W d   ƒ n1 �sž0    Y  tjtdd��  |  dddd¡ W d   ƒ n1 �sÞ0    Y  tjtdd�� |  ddd¡ W d   ƒ n1 �s0    Y  tjtdd�� |  ddd¡ W d   ƒ n1 �sZ0    Y  t  ¡ \}}tjtdd�� |  |¡ W d   ƒ n1 �s 0    Y  d S )Nz,Number of columns must be a positive integerrt   r   r   r   z)Number of rows must be a positive integerznum must be 1 <= num <= 4rN   zmust be a three-digit integerrŠ   r   z2takes 1 or 3 positional arguments but 2 were givenz2takes 1 or 3 positional arguments but 4 were givenr   r6   z2Number of rows must be a positive integer, not '2'Ú2z5Number of columns must be a positive integer, not 2.0g       @z8The Subplot must have been created in the present figure)r!   r"   rQ   rR   rS   r$   r   r:   ©r.   Ú_r0   r2   r2   r3   Útest_add_subplot_invalid  sD    ÿ,ÿ,,,**,0ÿ.ÿ.ÿr�   Zfigure_suptitlec                  C   s.   t  ¡ \} }| jddd� | jdddd� d S )NZhellore   )rl   Útitlerk   Z30)rl   Zrotation)r!   r:   ra   )r.   r�   r2   r2   r3   Útest_suptitle.  s    r’   c                  C   sV   t  ¡ \} }tjjddd�}| jd|d�}| ¡ | ¡ ks>J ‚| ¡ | ¡ ksRJ ‚d S )NZlargeÚbold)ÚsizeÚweightzfontprops title)Zfontproperties)	r!   r:   ÚmplZfont_managerZFontPropertiesra   Zget_fontsizeZget_size_in_pointsZ
get_weight)r.   r0   ZfpsÚtxtr2   r2   r3   Útest_suptitle_fontproperties5  s
    r˜   Zalpha_background©r   r   çš™™™™™Ù?Únone)Ú	facecolorZ	edgecolor)r   Úsavefig_kwargc                  C   sJ   t jddgd�} |  d¡ | j d¡ | j tjjddgddd	d
�¡ d S )Nr   r   ©Úfigsizer™   rš   é   é   ç333333ã?Úred)ZradiusÚalpharœ   )	r!   r"   Úset_facecolorÚpatchZ	set_alphaZpatchesÚappendr–   ZCirclePolygonr‹   r2   r2   r3   Ú
test_alpha=  s    
ÿr¨   c                  C   sL   t  t¡�. ttd d ƒD ]} t ¡  qW d   ƒ n1 s>0    Y  d S )Nzfigure.max_open_warningr   )rQ   r�   ÚRuntimeWarningr)   r   r!   r"   )r1   r2   r2   r3   Útest_too_many_figuresL  s    rª   c                     sL   G dd„ dt ƒ‰ G ‡ fdd„dƒ} t ¡ }|jddd| ƒ d� t |¡ d S )Nc                   @   s   e Zd Zddœdd„ZdS )z.test_iterability_axes_argument.<locals>.MyAxesN)Úmyclassc                _   s   t j| g|¢R i |¤ŽS ©N)r   Ú__init__)Úselfr«   ÚargsÚkwargsr2   r2   r3   r­   ^  s    z7test_iterability_axes_argument.<locals>.MyAxes.__init__)Ú__name__Ú
__module__Ú__qualname__r­   r2   r2   r2   r3   ÚMyAxes]  s   r´   c                       s    e Zd Zdd„ Z‡ fdd„ZdS )z/test_iterability_axes_argument.<locals>.MyClassc                 S   s   |dkrt dƒ‚d S )NÚazitem should be a)rS   )r®   Úitemr2   r2   r3   Ú__getitem__c  s    z;test_iterability_axes_argument.<locals>.MyClass.__getitem__c                    s   ˆ d| ifS )Nr«   r2   ©r®   ©r´   r2   r3   Ú_as_mpl_axesg  s    z<test_iterability_axes_argument.<locals>.MyClass._as_mpl_axesN)r±   r²   r³   r·   rº   r2   r¹   r2   r3   ÚMyClassa  s   r»   r   rw   )r   r!   r"   r$   rP   )r»   r.   r2   r¹   r3   Útest_iterability_axes_argumentR  s
    	r¼   c                  C   s–   t  ¡ } |  d¡ |  ¡ dks"J ‚|  d¡ |  ¡ dks<J ‚|  dd¡ |  ¡ dksXJ ‚|  ¡ dkshJ ‚|  d¡ |  ¡ dks‚J ‚|  ¡ dks’J ‚d S )NrN   r   r   r6   )r   r   r   )r!   r"   Zset_figwidthZget_figwidthZset_figheightZget_figheightÚset_size_inchesr‹   r2   r2   r3   Útest_set_fig_sizeo  s    


r¾   c                  C   sh   t  dd¡\} }|d  ¡  | ¡ d d… D ]}|| jv s,J ‚q,|d | jvsRJ ‚t| jƒdksdJ ‚d S )Nr   )r   r   r   r   )r!   r:   ÚremoveZravelrƒ   Úlen©r.   rG   r0   r2   r2   r3   Útest_axes_remove…  s    rÂ   c                  C   s˜   t  t d¡t d¡ ¡\} }||  dks.J ‚t  d¡\} }||  dksLJ ‚t  t d¡¡\} }||  dkspJ ‚t  t d¡¡\} }||  dks”J ‚d S )Nr   r   )r   r   r`   )r   r   )r!   Z	figaspectr&   Zfloat64r>   )ÚwÚhr2   r2   r3   Útest_figaspectŽ  s    rÅ   Úwhich)ÚbothÚmajorÚminorc           
      C   s.  g d¢}g d¢}d}g d¢}t  |¡}t  |¡}t ¡ \}}| ||¡ | ¡  | ¡  |j t	dƒ¡ t
 ¡ �, t
 dd¡ |j t|ƒ¡ W d   ƒ n1 s¢0    Y  | d|d	| ¡ | d
v rð|jd  dd¡D ]}	t|	 ¡ ƒ|ksÖJ ‚qÖ| dv �r*|jd  dd¡D ]}	t|	 ¡ ƒ|k�sJ ‚�qd S )N)z
3 Jan 2013z
4 Jan 2013z
5 Jan 2013z
6 Jan 2013z
7 Jan 2013z
8 Jan 2013z
9 Jan 2013z10 Jan 2013z11 Jan 2013z12 Jan 2013z13 Jan 2013z14 Jan 2013)z16:44:00z16:45:00z16:46:00z16:47:00z16:48:00z16:49:00z16:51:00z16:52:00z16:53:00z16:55:00z16:56:00z16:57:00é<   )r   r   r   r6   rN   é   é   r   Úignorez=FixedFormatter should only be used together with FixedLocatorçš™™™™™É?r   )rÇ   rÈ   r   FrÈ   )rÇ   rÉ   TrÉ   )ÚmdatesZdatestr2numr!   r:   r%   Z
yaxis_dateZ
xaxis_dater+   Zset_minor_locatorr   ÚwarningsÚcatch_warningsÚfilterwarningsZset_minor_formatterr   Zautofmt_xdaterƒ   r,   ÚintZget_rotation)
rÆ   ÚdateÚtimeZangleZminorsrj   rm   r.   r0   r?   r2   r2   r3   Útest_autofmt_xdate™  s0    


þ.
rÖ   Údefaultc                  C   sn   t jdd�} |  ¡  | jjjdks&J ‚| jjjdks8J ‚d| _|  ¡  | jjjdksXJ ‚| jjjdksjJ ‚d S )N)r6   r6   rž   i�  é2   éÈ   )r!   r"   r=   ÚcanvasÚrendererÚheightÚwidthÚdpir‹   r2   r2   r3   Útest_change_dpiÁ  s    rß   zwidth, heightr   )r   r   c                 C   s|   t  t¡�  tj| |fd� W d   ƒ n1 s00    Y  t ¡ }t  t¡� | | |¡ W d   ƒ n1 sn0    Y  d S )Nrž   )rQ   rR   rS   r!   r"   r½   )rÝ   rÜ   r.   r2   r2   r3   Útest_invalid_figure_sizeÍ  s
    .rà   c                  C   sÒ   t  ¡ } t t¡�$ |  dddtjf¡ W d   ƒ n1 s<0    Y  tjtdd��& | jg d¢g d¢d� W d   ƒ n1 s€0    Y  t  	¡ \}}tjtdd�� |  |¡ W d   ƒ n1 sÄ0    Y  d S )Nry   r`   z#multiple values for argument 'rect'rt   rs   r{   z5The Axes must have been created in the present figure)
r!   r"   rQ   rR   rS   r€   r&   Únanr   r:   rŽ   r2   r2   r3   Útest_invalid_figure_add_axesÛ  s    24ÿrâ   c                  C   s  t jdddddd�\} }|jD ]}| g d¢g d¢¡ q| d¡ | d¡ |dd d …f D ]}dt|jjdd	�ƒks\J ‚q\|d
d d …f D ]}dt|jjdd	�ƒk sŒJ ‚qŒ|d d …d
f D ]}dt|j	jdd	�ƒks¼J ‚q¼|d d …df D ]}dt|j	jdd	�ƒk sìJ ‚qìd S )Nr   TF)ÚsharexÚshareyZsqueeze)r    r    é   Úlogr   rÇ   )rÆ   r   )
r!   r:   r<   r%   Z
set_yscaleZ
set_xscalerÀ   r+   Zget_ticklabelsr-   rÁ   r2   r2   r3   Útest_subplots_shareax_loglabelsê  s    


rç   c                  C   sJ   t  ¡ } d}tjt|d�� |  dd¡ W d   ƒ n1 s<0    Y  d S )Nz9savefig\(\) takes 2 positional arguments but 3 were givenrt   z
fname1.pngz
fname2.png)r!   r"   rQ   rR   r   Úsavefig)r.   Úmsgr2   r2   r3   Útest_savefigÿ  s    rê   c               	   C   s^   t  ¡ } d}dD ]H}tjtj|d��$ | jt ¡ |dd� W d   ƒ q1 sN0    Y  qd S )Nz@savefig\(\) got unexpected keyword argument "non_existent_kwarg")r   Úpdfr   ZtifZjpgrt   T)ÚformatZnon_existent_kwarg)	r!   r"   rQ   r�   r   r	   rè   ÚioÚBytesIO)r.   ré   rì   r2   r2   r3   Útest_savefig_warns  s
    rï   c                  C   s„   t  ¡ } tjtdd�� | jddd� W d   ƒ n1 s:0    Y  tjtdd�� | jddd� W d   ƒ n1 sv0    Y  d S )	NzNo module named '@absent'rt   Útestzmodule://@absent)Úbackendz-The 'pdf' backend does not support png outputztest.pngrë   )r!   r"   rQ   rR   ÚModuleNotFoundErrorrè   rS   r‹   r2   r2   r3   Útest_savefig_backend  s    ,ÿró   rñ   ZAgg)ZmarksZCairoc                 C   sà   t  ¡ \}}| g d¢¡ t ¡ �0}|j|dd� t |¡}| ¡  W d   ƒ n1 sX0    Y  t  ¡ \}}| g d¢¡ |j	 
d¡ t ¡ �0}|j|dd� t |¡}| ¡  W d   ƒ n1 sÆ0    Y  ||ksÜJ ‚d S )N©r   r   r   r   )rì   r   )r!   r:   r%   rí   rî   rè   r   ÚopenÚloadrÚ   Z_set_device_pixel_ratio)rñ   r.   r0   ÚbufZratio1Zratio2r2   r2   r3   Útest_savefig_pixel_ratio  s    

&

&rø   c                  C   s"   t jddd�} t| ƒdksJ ‚d S )N)r    r    r    )rŸ   rÞ   z!<Figure size 100x200 with 0 Axes>)r!   r"   Úreprr‹   r2   r2   r3   Útest_figure_repr/  s    rú   c                  C   sj   t d d�} |  ¡ rJ ‚|  ¡ r"J ‚t dd�} |  ¡ s8J ‚|  ¡ rDJ ‚t dd�} |  ¡ rZJ ‚|  ¡ sfJ ‚d S )N©ÚlayoutÚtightÚconstrained)r   Úget_tight_layoutÚget_constrained_layoutr‹   r2   r2   r3   Útest_valid_layouts4  s    


r  c                  C   s4  t jdd�\} }t t¡� | jdd� W d   ƒ n1 s<0    Y  |  ¡ rRJ ‚tjtdd�� tddd	�} W d   ƒ n1 s‚0    Y  |  ¡ s˜J ‚|  ¡ r¤J ‚tjtd
d�� tddd�} W d   ƒ n1 sÔ0    Y  |  ¡ rêJ ‚|  ¡ söJ ‚tj	t
dd�� tdd� W d   ƒ n1 �s&0    Y  d S )NTr7   rz   )r   z4Figure parameters 'layout' and 'tight_layout' cannotrt   rý   F)rü   r   z:Figure parameters 'layout' and 'constrained_layout' cannotrþ   )rü   r8   z('foobar' is not a valid value for layoutZfoobarrû   )r!   r:   rQ   r�   ÚUserWarningZsubplots_adjustr   r   rÿ   rR   rS   rh   r2   r2   r3   Útest_invalid_layoutsB  s     ***ÿr  rë   ©r   c           	   	   C   s8  |   d¡ |  d¡ |  ¡  tjddgddgdd�}tjddgddgdd�}tjddd d	d
�}tjdddd�}tjdd| jddd�}|||||fD ]}|  |¡ q’| ¡  | ¡ }tjddgddg|jddd�}tjddd ddd	d�}tjdd|jddd�}tjdd|jddddd�}||||fD ]}| |¡ �q"d S )Nr   rÎ   çffffffæ?Úl1)Úgidrz   Úl2)r    r    ZC1)Ú	transformr  )r  r`   çš™™™™™©?ZC2)g      @rz   gš™™™™™á?ZcrimsonZC3)r	  rœ   r  é   )r	  r  ÚzorderFr    )r	  Úclip_onr  r  )r	  rœ   r  r  r  )	Úset_dpir:   r!   ZLine2DZCircleZdpi_scale_transZ
add_artistr¿   ZtransFigure)	Úfig_testÚfig_refr  r  Úr1Úr2Zr3rµ   rc   r2   r2   r3   Útest_add_artist[  s8    

ÿÿÿÿÿr  Úfmt)r   rë   ZpsÚepsr   c                 C   sd   t |d | ¡ƒ}t |¡ | d¡�,}|  d¡| d¡ ¡ v sBJ ‚W d   ƒ n1 sV0    Y  d S )Nztest.{}ÚrbÚasciir   )r   rì   r!   rè   rõ   ÚencodeÚreadÚlower)r  ZtmpdirÚoutÚfiler2   r2   r3   Útest_fspathx  s    
r  c                  C   sZ  t  ¡ \} }| dd¡ | ddd¡}| j ¡ }d}t| |¡j|| j	  ƒdk sVJ ‚t| |¡j|| j	  ƒdk sxJ ‚t|  |¡j| ƒdk s”J ‚t|  |¡j
d	 ƒdk s°J ‚| d
¡ d}t| |¡j|| j	  ƒdk sàJ ‚t|  |¡j| ƒdk süJ ‚| d¡ d}t| |¡j|| j	  ƒdk �s.J ‚t|j|g d�j|| j	  ƒdk �sVJ ‚d S )Nr   r   g      ð?r`   zThis dangles over endgR¸…ë"@r   r
  gî|?5^ºå?Fg¢E¶óýT@T)Zbbox_extra_artists)r!   r:   Zset_xlimrb   rÚ   Úget_rendererÚabsÚget_tightbboxÚx1rÞ   Úx0Zset_in_layout)r.   r0   r\   rÛ   Zx1Nom0Zx1Nomr2   r2   r3   Útest_tightbbox‚  s*    
""
"
$ÿÿr#  c                  C   sØ   t jdddd�\} }|d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tj	ƒsbJ ‚t jdddd�\} }|d j 
tƒ ¡ |d  ¡  |d  tdddƒtdddƒgddg¡ t|d j ¡ tƒsÔJ ‚d S )Nr   r   T©rã   r   iÐ  )r!   r:   r¿   r%   r   Ú
isinstancer+   Zget_major_formatterrÏ   ZAutoDateFormatterZset_major_formatterr   rq   r2   r2   r3   Útest_axes_removal›  s    (ÿ(ÿr&  c                  C   s,   t jddd�\} }|d  ¡  | j ¡  d S )Nr   Tr$  r   )r!   r:   r¿   rÚ   Údrawrq   r2   r2   r3   Útest_removed_axis­  s    r(  Zmpl20c                  C   s€   t  ¡ \} }|jdgdgdgdd�}| j ¡  | jr8J ‚t|jj|jj	d  |jj
|jjd  |d d�}|  |¡ | jr|J ‚d S )Nr   r   T)Zpickerr   )rj   rm   ZinaxesZguiEvent)r!   r:   ÚscatterrÚ   r'  Ústaler   Úbboxr"  rÝ   Zy0rÜ   Úpick)r.   r0   ÚcolZmouse_eventr2   r2   r3   Útest_picking_does_not_stale´  s    

þ
r.  c                  C   s@  t  ¡ } |  ddd¡}| ¡ jtddƒks.J ‚| ¡ jtddƒksFJ ‚|  ddd¡}| ¡ jtddƒkslJ ‚| ¡ jtddƒks„J ‚|  ddd¡}| ¡ jtddƒksªJ ‚| ¡ jtddƒksÂJ ‚|  ddd¡}| ¡ jtddƒksèJ ‚| ¡ jtddƒk�sJ ‚t t	¡� |  ddd	¡ W d   ƒ n1 �s20    Y  d S )
Nr   r   ©r   rN   r   r   )r6   rË   )r   rË   )r6   rN   )rË   r   )
r!   r"   r$   r‚   Zrowspanr)   ÚcolspanrQ   rR   Ú
IndexError)r.   r…   rc   r†   Zax4r2   r2   r3   Útest_add_subplot_twotupleÂ  s    r2  ztightbbox_box_aspect.svgrý   Úteal)Zbbox_inchesrœ   T)Ústyler�   Úremove_textc                  C   sL   t  ¡ } |  dd¡}|  |d ¡}| j|d dd�}| d¡ | d¡ d S )	Nr   r   ©r   r   ©r   r   r‰   rw   r`   )r   r   r   )r!   r"   Úadd_gridspecr$   Zset_box_aspect)r.   r/   r…   rc   r2   r2   r3   Útest_tightbbox_box_aspectÔ  s    
r9  )r   rë   r  r   c                 C   s4   |  ¡ }| tdƒ¡ |   ¡ }|jtdƒdd� d S )NrN   T)Zanimated)r:   r%   r)   )r  r  Zax_refZax_testr2   r2   r3   Ú test_animated_with_canvas_changeá  s    r:  c                   @   s  e Zd Zedgd�ej dg d¢g d¢gg d¢g d¢gg¡dd	„ ƒƒZedgd�d
d„ ƒZedgd�dd„ ƒZ	edgd�dd„ ƒZ
edgd�ej dddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfddgddggdfg¡dd„ ƒƒZdd„ Zedgd�ej di ddidg¡d d!„ ƒƒZd"d#„ Zedgd�ej d$g d%¢¡d&d'„ ƒƒZej d(ddgddggd)fddgdddgd*d+ggggd,fd-ddd*gd+gggd.d.ggd/fg¡d0d1„ ƒZedgd�d2d3„ ƒZej d$g d4¢¡d5d6„ ƒZd7d8„ Zd9d:„ ZdS );ÚTestSubplotMosaicr   r  rj   )ÚAr<  ÚB)ÚCÚDr=  )r   r   r   )r   r6   r   c                 C   sÜ   |  |¡}| ¡ D ]\}}| |¡ qtt |¡ƒ}t|ƒt|ƒksHJ ‚| dd¡}| |d d…d d…f ¡}	|	 |d ¡ | |d d …df ¡}
|
 |d ¡ | |d ¡}| |d ¡ | |d ¡}| |d ¡ d S )Nr   r   r   r   ©r   r   ©r   r   )	Úsubplot_mosaicÚitemsrf   Úsortedr&   ÚuniquerÀ   r8  r$   )r®   r  r  rj   Ú	grid_axesrn   r0   Úlabelsr/   ÚaxAÚaxBÚaxCÚaxDr2   r2   r3   Ú
test_basicë  s    
zTestSubplotMosaic.test_basicc                 C   s  ddgddgg}ddgddgg}|  d	¡ |  d	¡ | ||gg¡}| ¡ D ]}| | ¡ ¡ qL| d
d¡}|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ q”q„|d  dd¡}t|ƒD ]2\}	}
t|
ƒD ] \}}| ||	|f ¡ |¡ qàqÐd S )Nr<  r=  r>  r?  ÚEÚFÚGÚHTr   r   r6  r7  )	Úset_constrained_layoutrB  Úvaluesrf   rg   r8  Úsubgridspecr;   r$   )r®   r  r  rj   rm   rF  r0   r/   Zgs_leftÚjre   rn   r?   Zgs_rightr2   r2   r3   Útest_all_nested  s     

z!TestSubplotMosaic.test_all_nestedc                 C   sî   |  d¡ |  d¡ ddgddgg}dg|gg}| |¡}| ¡ D ]\}}| |¡ qB| dd¡}|d	  dd¡}	| |	d
 ¡}
|
 d¡ | |	d ¡}| d¡ | |	d	 ¡}| d¡ | |	d ¡}| d¡ | |d
 ¡}| d¡ d S )NTr<  r=  r>  r?  rN  r   r   r@  r6  r7  rA  )rQ  rB  rC  rf   r8  rS  r$   )r®   r  r  rj   rm   rF  rn   r0   r/   Zgs_nrH  rI  rJ  rK  ZaxFr2   r2   r3   Útest_nested  s&    






zTestSubplotMosaic.test_nestedc                 C   s<   g d¢g d¢g}d}|  dg|gg¡ |  dg|gg¡ d S )N©r<  r=  r=  ©r>  r>  r?  )rW  rX  rN  )rB  )r®   r  r  rj   Zxtr2   r2   r3   Útest_nested_tuple?  s    z#TestSubplotMosaic.test_nested_tuplezx, empty_sentinelr<  Nr=  Ú.ÚSKIPr   r   r   c                 C   sº   |dkrd|i}ni }|j |fi |¤Ž}| ¡ D ]\}}| |¡ q0tdd„ |D ƒ|dh ƒ}	t|	ƒt|ƒksrJ ‚| dd¡}
| |
d ¡}| |	d ¡ | |
d	 ¡}| |	d
 ¡ d S )Nr[  Úempty_sentinelc                 S   s   h | ]}|D ]}|’qqS r2   r2   )r[   ÚrowÚnamer2   r2   r3   Ú	<setcomp>^  r^   z/TestSubplotMosaic.test_empty.<locals>.<setcomp>rZ  r   r6  r   rA  r   )rB  rC  rf   rD  rÀ   r8  r$   )r®   r  r  rj   r\  r°   rF  rn   r0   rG  r/   rH  rI  r2   r2   r3   Ú
test_emptyG  s    
ÿzTestSubplotMosaic.test_emptyc                 C   sz   t jtdd�� t ddg¡ W d   ƒ n1 s20    Y  t jtdd�� t dg¡ W d   ƒ n1 sl0    Y  d S )Nz
must be 2Drt   ZfooÚbar)rQ   rR   rS   r!   rB  r¸   r2   r2   r3   Útest_fail_list_of_strj  s    ,z'TestSubplotMosaic.test_fail_list_of_strÚ
subplot_kwrx   r}   c           	      C   s\   ddgg}|j ||d�}|pi }| dd¡}|j|d fi |¤Ž}|j|d fi |¤Ž}d S )Nr   r   )rc  r6  r7  )rB  r8  r$   )	r®   r  r  rc  rj   rF  r/   rH  rI  r2   r2   r3   Útest_subplot_kwp  s    
z!TestSubplotMosaic.test_subplot_kwc                 C   s²   t j}|dƒg d¢gksJ ‚|dƒddgddggks8J ‚|dƒddgddgdd	ggksZJ ‚|d
ƒg d¢gkspJ ‚|dƒddgddggksŒJ ‚|dƒddgddgdd	ggks®J ‚d S )NÚABC)r<  r=  r>  zAB;CCr<  r=  r>  zAB;CC;DEr?  rM  z7
                         ABC
                         zR
                         AB
                         CC
                         zn
                         AB
                         CC
                         DE
                         )r   Z_normalize_grid_string)r®   Ú	normalizer2   r2   r3   Útest_string_parser|  s    "þýüz$TestSubplotMosaic.test_string_parserÚstr_pattern)zAAA
BBBz	
AAA
BBB
zABC
DEFc                 C   s,   |  |¡}|  dd„ | ¡  d¡D ƒ¡}d S )Nc                 S   s   g | ]}t |ƒ‘qS r2   )Úlist)r[   Úlnr2   r2   r3   r]   –  r^   z;TestSubplotMosaic.test_single_str_input.<locals>.<listcomp>Ú
)rB  ÚstripÚsplit)r®   r  r  rh  rF  r2   r2   r3   Útest_single_str_inputŽ  s    
ÿz'TestSubplotMosaic.test_single_str_inputzx,matchzS(?m)we found that the label .A. specifies a non-rectangular or non-contiguous area.r>  r?  z4There are duplicate keys .* between the outer layout)z	AAA
c
BBBú'All of the rows must be the same lengthrM  ro  c                 C   sD   t  ¡ }tjt|d�� | |¡ W d   ƒ n1 s60    Y  d S )Nrt   )r!   r"   rQ   rR   rS   rB  )r®   rj   ru   r.   r2   r2   r3   Ú	test_fail™  s    zTestSubplotMosaic.test_failc                 C   s(   |  tƒ tƒ gg¡ |  ddgg¡ d S )Nr<  r=  )rB  Úobject)r®   r  r  r2   r2   r3   Útest_hashable_keys³  s    z$TestSubplotMosaic.test_hashable_keys)ÚabcZcabZbcaZcbaZacbZbacc                 C   sD   t  ¡ }| |¡}t|ƒt|ƒks&J ‚t|jƒt| ¡ ƒks@J ‚d S r¬   ©r!   r"   rB  ri  rƒ   rR  )r®   rh  r.   Úax_dictr2   r2   r3   Útest_user_order¸  s    
z!TestSubplotMosaic.test_user_orderc                 C   st   dddgddgggddgdd	d
gdgggggg}t  ¡ }| |¡}t|ƒtdƒksVJ ‚t|jƒt| ¡ ƒkspJ ‚d S )Nr<  r=  r>  r?  rM  rN  rO  rZ  rP  ÚIZ	ABCDEFGHIrt  ©r®   rü   r.   ru  r2   r2   r3   Útest_nested_user_orderÀ  s    ÿÿü
z(TestSubplotMosaic.test_nested_user_orderc                 C   sx   dddgddgggddgdd	d
gdgggggg}t  ¡ }|j|ddd�}|d jddd� tdd„ | ¡ D ƒƒstJ ‚d S )Nr<  r=  r>  r?  rM  rN  rO  rZ  rP  rw  T)rã   rä   ræ   Úlogit)ZxscaleZyscalec                 s   s&   | ]}|  ¡ d ko| ¡ dkV  qdS )ræ   rz  N)Z
get_xscaleZ
get_yscale)r[   r0   r2   r2   r3   Ú	<genexpr>Ù  s   ÿz3TestSubplotMosaic.test_share_all.<locals>.<genexpr>)r!   r"   rB  ÚsetrK   rR  rx  r2   r2   r3   Útest_share_allÎ  s    ÿÿüÿz TestSubplotMosaic.test_share_all)r±   r²   r³   r   rQ   ÚmarkÚparametrizerL  rU  rV  rY  r`  rb  rd  rg  rn  rp  rr  rv  ry  r}  r2   r2   r2   r3   r;  ê  sp   
 ÿ



!


úþ


ÿýþþóþ


ÿ
r;  c                  C   sv   t  ¡ } |  ddd¡}|  ddd¡}t jddd| d�}| ¡  ¡ }| ¡  ¡ }| ¡  ¡ }||ksfJ ‚||ksrJ ‚dS )	z)Test that these all use the same gridspecr   r   r/  r6   )r   r   )r   r   )r0  r.   N)r!   r"   r$   Zsubplot2gridr‚   Zget_gridspec)r.   r…   rc   r†   Zgs1Zgs2Zgs3r2   r2   r3   Útest_reused_gridspecÝ  s    r€  ztest_subfigure.pngrœ   Fc                  C   sä   t j d¡ tjdd�} |  dd¡}|d  dd¡}|jD ]}|jt j 	dd¡ddd	�}q:|d j
||d
� |d  d¡ |d  dd¡}|jD ]}|jt j 	dd¡ddd	�}q�|d j
||dd� |d  d¡ | jddd� d S )Né!N,Tr7   r   r   r   rå   éþÿÿÿ©ZvminZvmaxr9   ú	Left Sider   Úbottom)r0   Úlocationz
Right SideúFigure suptitleúxx-large©Úfontsize)r&   rD   Úseedr!   r"   Ú
subfiguresr:   r<   rC   rE   rF   ra   )r.   ÚsubrG   r0   rI   r2   r2   r3   Útest_subfigureì  s    

rŽ  c                  C   s8   t jdd�} |  dd¡}tj |  | j ¡ ¡j	d¡ d S )NTr7   r   r   g       @)
r!   r"   rŒ  r&   rA   rB   r   rÚ   r  rÝ   )r.   r�  r2   r2   r3   Útest_subfigure_tightbbox  s    þr�  ztest_subfigure_ss.pngc                  C   sº   t j d¡ tjdd�} |  dd¡}| j|d dd�}| dd¡}|jD ]}|j	t j 
d	d	¡d
dd�}qH|j||d� | d¡ |  |d ¡}| t  d¡¡ | d¡ | jddd� d S )Nr�  Tr7   r   r   r   Zpink)rœ   rå   r‚  rƒ  r9   r„  r    r   r‡  rˆ  r‰  )r&   rD   r‹  r!   r"   r8  Úadd_subfigurer:   r<   rC   rE   rF   ra   r$   r%   r'   rf   )r.   r/   r�  rG   r0   rI   r2   r2   r3   Útest_subfigure_ss  s    


r‘  ztest_subfigure_double.pngc            
      C   sœ  t j d¡ tjddd�} |  d¡ | jdddd	�}|d
  d¡ |d
  d¡ |d  d¡ |d  d¡ |d
 jddddgd�}|d
  d¡ |d
  d¡ |d
 jdddd�}|D ]L}d}|j	t j 
dd¡ddd�}|jd|d� |jd|d� |jd|d� q¸|d
 j||d� |d  d¡ |d  d¡ |d jdddd �}t|ƒD ]\}}| d!|› �¡ �qP|d  d"¡ |d  d#¡ |d  dd¡}	d S )$Nr�  T)r    é   ©r8   rŸ   r.   r   r   gìQ¸…ë±?)Úwspacer   Zcoralz
subfigs[0]z
subfigs[1]gffffffö?)Zheight_ratioszsubfigsnest[0]re   ©rä   é   rå   g      Àg      @rƒ  zx-labelr‰  zy-labelZTitler9   zsubfigsnest[1]rk   r   r$  ZylabelÚ	supxlabelÚ	supylabel)r&   rD   r‹  r!   r"   ra   rŒ  r¥   r:   rC   rE   r*   r(   rf   rF   r;   r—  r˜  )
r.   ZsubfigsZsubfigsnestZaxsnest0r0   rŠ  rI   Zaxsnest1rH   ZaxsRightr2   r2   r3   Útest_subfigure_double%  s6    
r™  c               	   C   sX  t jdd�} |  dd¡}|  |d ¡|  |dd…df ¡|  |ddd…f ¡|  |dd …dd …f ¡g}d}d	}tj |d jjd
|d d g¡ tj |d jj	|d |g¡ tj |d jj|d |d g¡ tj |d jj	|d d |g¡ tj |d jj|d dg¡ tj |d jj	||d g¡ t
dƒD ]}||  ¡  �q8|  ¡  d S )NTr7   r   r6  r   r   r   i€  ià  g        r6   )r!   r"   r8  r�  r&   rA   rB   r+  ÚminÚmaxr)   r$   r=   )r.   r/   Zsub_figsrÃ   rÄ   r1   r2   r2   r3   Útest_subfigure_spanningP  s$    ü"""rœ  c            	      C   sò   t jddd�} | jdddddgd�\}}|jdd	d
�}| |dd d…f ¡}|jddgddgd� |j|ddd…f |d�}|jddgddgd� |j|ddd	…f |d�}|  d¡ |  ¡  | ¡ }|  d¡ |  ¡  | ¡ }t	j
 ||¡ d S )NT)r    r   r“  r   r   r   rÌ   )r”  Zwidth_ratiosé   )ZnrowsZncolsr   gæû©!<LÀgkâX.8@iÜ  i  )rj   rm   r   r•  g …ëYI¢_ÀgRã¥óÏ«W@éx   i,  )r!   r"   rŒ  r8  r$   r)  r  r=   Z
get_xticksr&   rA   rB   )	r.   Z	subfig_blZ	subfig_brr/   r…   rc   r†   Zticks120Zticks300r2   r2   r3   Útest_subfigure_ticksm  s"    
ÿ


rŸ  ztest_subfigure_scatter_size.png)r4  r5  c                  C   sÆ   t  ¡ } |  dd¡}|  |d ¡}|jg d¢g d¢ddd� |jg d¢g d¢g d¢dd� |  |d	 ¡}| dd¡}||d	 fD ]@}|jg d¢g d¢ddd
d� |jg d¢g d¢g d¢ddd� q€d S )Nr   r   rô   rå   Ús)r   Úmarker)r   r6   rN   )r    rå   é(   r   re   )r   r¡  rl   rk   )r!   r"   r8  r$   r)  r�  r:   )r.   r/   r„   ZsfigrG   r0   r2   r2   r3   Útest_subfigure_scatter_size‰  s    r£  c                  C   sê   t  ¡ } |  ddd¡}|  ddd¡}|d us0J ‚||us<J ‚t  ¡  t  ¡ } | jddddd�}| jddddd�}|d us|J ‚||usˆJ ‚t  ¡  t  ¡ } | jddddd�}|  ddd¡}|d usÄJ ‚|jdksÒJ ‚||usÞJ ‚t  ¡  d S )Nr   r}   rw   rv   )r!   r"   r$   rP   r^  ©r.   r0   r…   r2   r2   r3   Útest_add_subplot_kwargsš  s&    r¥  c                  C   sê   t  ¡ } |  g d¢¡}|  g d¢¡}|d us0J ‚||us<J ‚t  ¡  t  ¡ } | jg d¢dd�}| jg d¢dd�}|d us|J ‚||usˆJ ‚t  ¡  t  ¡ } | jg d¢dd�}|  g d¢¡}|d usÄJ ‚|jdksÒJ ‚||usÞJ ‚t  ¡  d S )Nrs   r}   rw   rv   )r!   r"   r€   rP   r^  r¤  r2   r2   r3   Útest_add_axes_kwargs³  s&    r¦  c                    s~   t  dd¡ t ¡ \‰‰ ‡ ‡fdd„}td|ƒ ¡  ˆ ¡ dgksFJ ‚‡ ‡fdd„}td|ƒ ¡  tj 	ˆ d	¡d
dg¡ d S )NrÍ   úcannot show the figurec                      s"   ˆj jg ˆ j d¡¢d‘R Ž  d S )N©ry   rÎ   r   )rÚ   Úbutton_press_eventÚ	transDatar	  r2   ©r0   r.   r2   r3   Úsingle_pressÐ  s    z!test_ginput.<locals>.single_pressry   r¨  c                      sˆ   ˆj jg ˆ j d¡¢d‘R Ž  ˆj  d¡ ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  ˆj jg ˆ j d¡¢d‘R Ž  d S )Nr¨  r   Z	backspace©g333333Ó?rš   ©r`   r¢   r6  r   )rÚ   r©  rª  r	  Úkey_press_eventr2   r«  r2   r3   Úmulti_pressesÖ  s
    z"test_ginput.<locals>.multi_pressesr   r­  r®  )
rÐ   rÒ   r!   r:   r   ÚstartZginputr&   rA   rB   )Úrecwarnr¬  r°  r2   r«  r3   Útest_ginputÌ  s    r³  c                 C   st   t  dd¡ t ¡ }|jdd�d u s(J ‚td|jjdƒ ¡  | ¡ du sLJ ‚td|jj	dƒ ¡  | ¡ du spJ ‚d S )	NrÍ   r§  ry   )Útimeout)ro   T)r   r   r   F)
rÐ   rÒ   r!   r"   Zwaitforbuttonpressr   rÚ   r¯  r±  r©  )r²  r.   r2   r2   r3   Útest_waitforbuttonpressá  s    rµ  c                  C   s>   t dd�} | jdddd�}|  ¡ dks*J ‚| ¡ dks:J ‚d S )Nzwhole Figure)r?   r   z
sub figure)r   rŒ  rg   )r.   Zsub_figr2   r2   r3   Útest_kwargs_passë  s    
r¶  )fr   rí   Úpathlibr   ÚplatformÚ	threadingr   Útypesr   rÐ   Únumpyr&   rQ   ZPILr   Z
matplotlibr–   r   r   Zmatplotlib._api.deprecationr	   Zmatplotlib.testing.decoratorsr
   r   Zmatplotlib.axesr   Zmatplotlib.figurer   Zmatplotlib.tickerr   r   r   Zmatplotlib.pyplotZpyplotr!   Zmatplotlib.datesÚdatesrÏ   Zmatplotlib.gridspecr#   Úmachiner4   rJ   rT   rW   rd   ri   rr   r‡   rŒ   r�   r’   r˜   r¨   rª   r¼   r¾   rÂ   rÅ   r~  r  rÖ   r4  Úcontextrß   rá   Úinfrà   râ   rç   rê   rï   ró   Úparamrñ   rø   rú   r  r  r  r  r#  r&  r(  r.  r2  r9  r:  r;  r€  rŽ  r�  r‘  r™  rœ  rŸ  r£  r¥  r¦  r³  rµ  r¶  r2   r2   r2   r3   Ú<module>   sô   ÿ
'#

?'
ÿü
		
'

ý
	
þ


	

ÿý
	
 tþ

þ
þ
(

ÿ

