U
    \	¸a£  ã                
   @   sŒ  d dl mZ d dlmZ d dlZd dlZd dlmZ d dlZd dlZd dl	Z
d dlZd dlmZ d dlmZ d dlmZmZmZmZmZmZmZ d dlmZmZmZmZm Z  d d	l!m"Z"m#Z# d d
l$m%Z%m&Z&m'Z' d dl(m)Z* d dl+Z+e#dgdddd„ ƒZ,e#dgdddd„ ƒZ-e#dgddgdddd„ ƒZ.e+j/ 0dddg¡e#dgddgdd d!„ ƒƒZ1d"d#„ Z2e+j/ 0d$d%d&d'd(d)g¡e"dgdd*d+„ ƒƒZ3e"dgdd,d-„ ƒZ4e"ƒ d.d/„ ƒZ5d0d1„ Z6d2d3„ Z7e+j/ 0d4dd5d6d7g¡d8d9„ ƒZ8e+j/ 0d4ddd:d;dg¡d<d=„ ƒZ9d>d?„ Z:d@dA„ Z;dBdC„ Z<e#dDgdddEdF„ ƒZ=dGdH„ Z>e+j/ 0dIdJdKggdLdMfdNdOggdPdPfg¡dQdR„ ƒZ?e#dSgdddTdU„ ƒZ@e#dVgdddWdX„ ƒZAe#dYgdddZd[d\„ ƒZBe"dgdd]d^„ ƒZCd_d`„ ZDdadb„ ZEe#dcgddddde„ ƒZFe#dfgdddgdgdhdi„ ƒZGdjdk„ ZHe#dlgdddZdmdn„ ƒZIe#dogdddpdq„ ƒZJe#drgddgdddsdtdu„ ƒZKe#dvgdddZdwdx„ ƒZLdydz„ ZMe#d{gdddZd|d}„ ƒZNd~d„ ZOd€d„ ZPd‚dƒ„ ZQd„d…„ ZRd†d‡„ ZSdˆd‰„ ZTe+j/ 0dŠee Ud‹¡e UdŒ¡e Ud¡ VdŽ¡fe e Ud‹¡e UdŒ¡e Ud¡ Vd¡fg¡d‘d’„ ƒZWd“d”„ ZXd•d–„ ZYe#d—gddd˜d™„ ƒZZe#dšgdd›dœddž„ ƒZ[dŸd „ Z\d¡d¢„ Z]e#d£gdd¤dœd¥d¦„ ƒZ^e#d§gddd¨d©„ ƒZ_dªd«„ Z`e#d¬gddd­d®„ ƒZae#d¯ge b¡ d°krÆd nd±ddd²d³d´„ ƒZcdµd¶„ Zde+j/ 0d·d¸d¹„ dº e¡ D ƒ¡d»d¼„ ƒZfe#d½gdddZd¾d¿„ ƒZge#dÀgdddZdÁdÂ„ ƒZhe#dÃgdddZdÄdÅ„ ƒZie+j/ 0dÆejjejkdÇdÈ„ dÉdÈ„ g¡dÊdË„ ƒZldÌdÍ„ ZmdÎdÏ„ ZndÐdÑ„ Zoe+j/ 0dÒdÓdÔg¡e+j/ 0dÕdÖd×g¡dØdÙ„ ƒƒZpdÚdÛ„ ZqdÜdÝ„ ZrdÞdß„ Zsdàdá„ Zte"ƒ dâdã„ ƒZudädå„ Zve+j/ d¡dædç„ ƒZwe+j/jxe+j/jydèdé„ ƒƒZzG dêdë„ dëej{ƒZ|dìdí„ Z}dîdï„ Z~e"dgddðdñ„ ƒZe+j/ 0dòdódôg¡e"dgddõdö„ ƒƒZ€e"ƒ d÷dø„ ƒZdS )ùé    )Ú	ExitStack)ÚcopyN)ÚPath)Úassert_array_equal)ÚImage)Ú_apiÚcolorsÚimageÚpatchesÚpyplotÚstyleÚrcParams)Ú	AxesImageÚ	BboxImageÚFigureImageÚNonUniformImageÚPcolorImage)Úcheck_figures_equalÚimage_comparison)ÚBboxÚAffine2DÚTransformedBboxZimage_interpsZmpl20)r   c                  C   s†   dt jd< t d¡ dd¡} t  d¡\}\}}}|j| dd | d	¡ | d¡ |j| d
d | d
¡ |j| dd | d¡ dS )z5Make the basic nearest, bilinear and bicubic interps.é   ztext.kerning_factoréd   é   é   é   Únearest©Úinterpolationzthree interpolationsÚbilinearZbicubicN)	Úpltr   ÚnpÚarangeÚreshapeÚsubplotsÚimshowÚ	set_titleZ
set_ylabel)ÚXÚfigÚax1Úax2Úax3© r-   ú?/tmp/pip-unpacked-wheel-wjyw_3jo/matplotlib/tests/test_image.pyÚtest_image_interps   s    



r/   zinterp_alpha.pngT)Úremove_textc                  C   sf   t  dd¡\} \}}t d¡}t d¡|d< t tjdtjd¡|d< |j|dd	 |j|d
d	 dS )z:Test the interpolation of the alpha channel on RGBA imagesé   é   )r   r   é   ©r   r   ).r1   ©Údtype©.r   Únoner   r    N)r!   r%   r"   ÚzerosÚonesZtrilÚuint8r&   )r)   ZaxlZaxrÚimgr-   r-   r.   Útest_alpha_interp-   s    
r=   Zinterp_nearest_vs_noneZpdfÚsvg)Ú
extensionsr0   c                  C   s„   dt d< tjdddgdddggd	d
dgd
ddgggtjd} t dd¡\}\}}|j| dd | d¡ |j| dd | d¡ dS )z5Test the effect of "nearest" and "none" interpolationr   úsavefig.dpiéÚ   é¥   é    éz   ég   éî   é   éÿ   r   éc   éG   r5   r1   r2   r8   r   zinterpolation noner   zinterpolation nearestN)r   r"   Úarrayr;   r!   r%   r&   r'   )r(   r)   r*   r+   r-   r-   r.   Útest_interp_nearest_vs_none:   s    ÿÿ
rL   ÚsuppressCompositeFÚfigimageÚpng)r?   c                 C   s  t jddd}| |_t t d¡d t d¡d ¡\}}t |d |d  ||  ¡}t d|d  d|d   ¡}||d  }|j|d	d	d
d |j|d d d…d d …f d	dd
d |j|d d …d d d…f dd	d
d |j|d d d…d d d…f ddd
d d S )N©r2   r2   r   ©ÚfigsizeÚdpig      Y@r2   r   é2   r   r   Úlower)ZxoZyoÚoriginéÿÿÿÿ)r!   ÚfigurerM   r"   Zix_r#   ÚsinrN   )rM   r)   ÚxÚyÚzÚcr<   r-   r-   r.   Útest_figimageL   s    $$$r^   c                  C   sF   t  ¡ \} }| dddg¡ t ¡ }|  |¡ | d¡ t  |¡ d S )Nr1   r2   r   r   )r!   r%   ÚplotÚioÚBytesIOÚsavefigÚseekÚimread)r)   ÚaxÚbufferr-   r-   r.   Útest_image_python_io\   s    

rg   z!img_size, fig_size, interpolation)r   r2   Úhanning)r   r   r   )r   é
   r   )r   ç333333@rh   )r   g333333"@r   c           	      C   s¢   t j d¡ tjd }t j t|| ƒt|| ƒ¡}| |fD ]}| ||¡ q<|  ¡ }| 	ddddg¡ |j
|dd | ¡ }| 	ddddg¡ |j
||d d S )Né!N,r@   r   r1   Úantialiasedr   )r"   ÚrandomÚseedr!   r   ÚrandÚintÚset_size_inchesr%   Úset_positionr&   )	Úfig_testÚfig_refZimg_sizeZfig_sizer   rS   ÚAr)   Úaxsr-   r-   r.   Útest_imshow_antialiasede   s    
rw   c                 C   s¶   t j d¡ tjd }t j t|d ƒt|d ƒ¡}| |fD ]}| dd¡ q<|  ¡ }|j	|dd | 
ddg¡ | ddg¡ | ¡ }|j	|d	d | 
ddg¡ | ddg¡ d S )
Nrk   r@   r   rj   rl   r   ri   r   r   )r"   rm   rn   r!   r   ro   rp   rq   r%   r&   Úset_xlimÚset_ylim)rs   rt   rS   ru   r)   rv   r-   r-   r.   Útest_imshow_zoom}   s    
rz   c                 C   sŽ   t  d¡ ttƒjd }ttƒjd }|  d¡}|d  t |¡¡ |d  t |¡¡ | d¡}|d  t	 
|¡¡ |d  t	 
|¡¡ d S )NÚdefaultú%baseline_images/pngsuite/basn3p04.pngú%baseline_images/test_image/uint16.tifr2   r   r1   )r   Zuser   Ú__file__Úparentr%   r&   r   Úopenr!   rd   )rs   rt   Zpng_pathZ	tiff_pathrv   r-   r-   r.   Útest_imshow_pil   s    


r   c                  C   sF   t  tj tj t¡ddd¡¡} | jtj	ks0t
‚t | ¡dksBt
‚d S )NZbaseline_imagesZ
test_imagez
uint16.tifé €ÿ)r!   rd   ÚosÚpathÚjoinÚdirnamer~   r6   r"   Úuint16ÚAssertionErrorÚsum©r<   r-   r-   r.   Útest_imread_pil_uint16œ   s      ÿr‹   c                  C   s:   t  ttƒjd ¡} | jtjks$t‚t 	| ¡dks6t‚d S )Nr}   r‚   )
r!   rd   r   r~   r   r6   r"   r‡   rˆ   r‰   rŠ   r-   r-   r.   Útest_imread_fspath£   s
    ÿrŒ   ÚfmtÚjpgÚjpegÚtiffc                 C   sÄ   | dk}t j d¡ t j dd¡}t ¡ }tj||| dd t ¡ }tj||| dd | d¡ tj	|| d}| d¡ tj	|| d}|j
ddd	| fksžt‚|j
ddd	| fks¶t‚t||ƒ d S )
N)rŽ   r   r1   i@  r2   )ÚformatrS   r   r   ©r‘   r   )r"   rm   rn   ro   r`   ra   r!   Úimsaverc   rd   Úshaperˆ   r   )r   Z	has_alphaÚdataZ	buff_dpi1Zbuff_dpi100Zarr_dpi1Z
arr_dpi100r-   r-   r.   Útest_imsaveª   s    	

r–   ÚpsZepsc                 C   s&   t jttjƒt ddgg¡| d d S )Nr   r1   r’   )r!   r“   r   rƒ   Údevnullr"   rK   )r   r-   r-   r.   Útest_imsave_fspathÍ   s    r™   c                  C   s”   t j d¡ dD ]~} t j ddd¡}t ¡ }tj||| dd | d¡ t 	|¡}d|  
d	¡}| d
krv|d d d… }d|  
d	¡}t||ƒ qd S )Nr1   )rU   Úupperé   r3   rO   )rV   r‘   r   rH   r;   rU   rW   )r"   rm   rn   ro   r`   ra   r!   r“   rc   rd   Úastyper   )rV   r•   ÚbuffZarr_bufr-   r-   r.   Útest_imsave_color_alphaÒ   s    

rž   c                  C   sh   ddl m}  t ¡ }| ƒ }| dd¡ tj|ddgddggdd	|id
 t |¡}|j	d dksdt
‚d S )Nr   )ÚPngInfoZSoftwareÚtestr1   r2   r   rO   Úpnginfo©r‘   Ú
pil_kwargs)ZPIL.PngImagePluginrŸ   r`   ra   Úadd_textr!   r“   r   r€   Úinforˆ   )rŸ   Úbufr¡   Úimr-   r-   r.   Útest_imsave_pil_kwargs_pngë   s     ÿ
r¨   c                     sp   ddl m‰  t ¡ } ddi}tj| ddgddggd|d	 t | ¡}‡ fd
d„|j 	¡ D ƒ}|d dkslt
‚d S )Nr   )ÚTAGS_V2Údescriptionz
test imager1   r2   r   r   r¢   c                    s   i | ]\}}ˆ | j |“qS r-   )Úname)Ú.0ÚkÚv©ZTAGSr-   r.   Ú
<dictcomp>ü   s      z/test_imsave_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)ZPIL.TiffTagsr©   r`   ra   r!   r“   r   r€   Ztag_v2Úitemsrˆ   )r¦   r£   r§   Útagsr-   r¯   r.   Útest_imsave_pil_kwargs_tiffö   s    
r³   Zimage_alphac                  C   sd   t j d¡ t j dd¡} t dd¡\}\}}}|j| ddd |j| ddd |j| dd	d d S )
Nr   r   r1   r   ç      ð?r8   )Úalphar   ç      à?r   )r"   rm   rn   ro   r!   r%   r&   )ÚZr)   r*   r+   r,   r-   r-   r.   Útest_image_alpha   s    r¸   c            
      C   s|  ddl m}  t ¡ \}}|jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksrt‚d
\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ks°t‚| ¡  |jt d¡ dd¡dd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	kst‚t ¡ \}}|jt d¡ dd¡ddddgd}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡dks„t‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d ksÄt‚d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d kst‚tƒ  d¡ d¡}	|jt d¡ dd¡|	|j d}d\}}|j 	||g¡\}}| d|j
||ƒ}| |¡d	ksxt‚d S )Nr   ©Ú
MouseEventr   ri   rš   )rV   ©r3   r3   Úmotion_notify_eventé,   )g333333$@r3   rU   r¶   ©Úextent)ç      Ð?rÀ   é7   )ç      è?rÀ   )ç{®Gáz„?g{®Gáz„¿r2   )Ú	transform)r   ri   )Úmatplotlib.backend_basesrº   r!   r%   r&   r"   r#   r$   Ú	transDatarÄ   ÚcanvasÚget_cursor_datarˆ   Úclearr   ZscaleÚrotate)
rº   r)   re   r§   rZ   r[   ÚxdispÚydispÚeventZtransr-   r-   r.   Útest_cursor_data  sN    
$ÿrÎ   z/data, text_without_colorbar, text_with_colorbari'  i'  z[1e+04]z[10001]g°rh‘í|¿?g/Ý$•ï?z[0.123]c           
      C   sÂ   ddl m} t ¡ \}}| | ¡}|j ddg¡\}}|d|j||ƒ}	| |	¡| d d ks`t	‚| 
| |	¡¡|ksxt	‚| |¡ |j ¡  | |	¡| d d ks¦t	‚| 
| |	¡¡|ks¾t	‚d S )Nr   r¹   r¼   )rÅ   rº   r!   r%   r&   rÆ   rÄ   rÇ   rÈ   rˆ   Úformat_cursor_dataÚcolorbarÚdraw)
r•   Ztext_without_colorbarZtext_with_colorbarrº   r)   re   r§   rË   rÌ   rÍ   r-   r-   r.   Útest_format_cursor_dataR  s    
ÿ

ÿrÒ   Z
image_clipc                  C   sF   ddgddgg} t  ¡ \}}| | ¡}tjdd|jd}| |¡ d S )Nr1   r2   r   r3   ©r   r   )ZradiusrÄ   )r!   r%   r&   r
   ZCirclerÆ   Úset_clip_path)Údr)   re   r§   Úpatchr-   r-   r.   Útest_image_clipk  s
    
r×   Zimage_cliprectc                  C   sN   t  ¡ \} }ddgddgg}|j|dd}tjddd|jjd}| |¡ d S )	Nr1   r2   r   r3   ©r   r   r   r   r¾   ©r1   r1   )ZxyÚwidthÚheightrÄ   )r!   r%   r&   r
   Z	RectangleZaxesrÆ   rÔ   )r)   re   rÕ   r§   Zrectr-   r-   r.   Útest_image_cliprectu  s       ÿrÜ   r&   )r0   r   c                  C   sH   t  ¡ \} }t d¡ d¡}|j|ddd | dd¡ | dd¡ d S )Nr   ©ri   ri   r    ©r1   r2   r1   r2   ©r   r¿   r   r   )r!   r%   r"   r#   r$   r&   rx   ry   ©r)   re   Úarrr-   r-   r.   Útest_imshow  s
    râ   c                 C   s†   t  d¡ d¡}| ¡ }|j|d d …d d …df ddd | dd¡ | dd¡ |  ¡ }|j|ddd | dd¡ | dd¡ d S )Nr   )ri   ri   r1   r   r    rÞ   rß   r   )r"   r#   r$   r%   r&   rx   ry   )rs   rt   rá   re   r-   r-   r.   Útest_imshow_10_10_1Š  s    "rã   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )NéÈ   )ri   ri   r2   ©	r!   r%   r"   r#   r$   ÚpytestÚraisesÚ	TypeErrorr&   rà   r-   r-   r.   Útest_imshow_10_10_2™  s    ré   c               	   C   s@   t  ¡ \} }t d¡ d¡}t t¡ | |¡ W 5 Q R X d S )Niô  )ri   ri   r   rå   rà   r-   r-   r.   Útest_imshow_10_10_5   s    rê   Zno_interpolation_originc                  C   sP   t  d¡\} }|d jt d¡ d¡ddd |d jt d¡ d¡dd	 d S )
Nr2   r   r   )r2   rT   rU   r8   )rV   r   r1   r   )r!   r%   r&   r"   r#   r$   )r)   rv   r-   r-   r.   Útest_no_interpolation_origin§  s
    ÿrë   Zimage_shift)r0   r?   c                  C   sT   dd„ t ddƒD ƒ} d}d}t ¡ \}}|j| t ¡ d||ddfd | d	¡ d S )
Nc                    s$   g | ]‰ ‡ fd d„t ddƒD ƒ‘qS )c                    s   g | ]}d | d ˆ   ‘qS )r1   r-   )r¬   rZ   ©r[   r-   r.   Ú
<listcomp>±  s     z/test_image_shift.<locals>.<listcomp>.<listcomp>r1   r   )Úrange)r¬   r-   rì   r.   rí   ±  s     z$test_image_shift.<locals>.<listcomp>r1   r   gMòãûk&Ag˜Šäûk&Ar8   )Únormr   r¿   Úauto)rî   r!   r%   r&   r   ÚLogNormZ
set_aspect)ZimgDataZtMinZtMaxr)   re   r-   r-   r.   Útest_image_shift¯  s    
ÿrò   c                  C   s  t jddgd} | jddddgdd}t t d¡d¡ dd	¡}|j|d
ddddgddd}d }}| | |g¡ | 	| |g¡ | 
g ¡ | g ¡ t ¡ }| j|dd | d¡ t  |¡}t|d d …df ƒ\}}}	}
t|d d …df ƒ\}}}	}
|dkstdƒ‚d S )Nr1   ©rR   r   F)Úframeoné   é   r   é	   rš   éöÿÿÿri   r8   Úgray)rV   r¿   r   Úcmapr2   )r   r1   r   )Ú	facecolorrW   r   z.Expected a non-green edge - but sadly, it was.)r!   rX   Úadd_axesr"   Ztiler#   r$   r&   rx   ry   Ú
set_xticksÚ
set_yticksr`   ra   rb   rc   rd   r‰   rˆ   )r)   re   r•   r§   rZ   r[   r¦   ÚrÚgÚbÚar-   r-   r.   Útest_image_edges»  s&     ÿ



r  Zimage_composite_backgroundc                  C   sf   t  ¡ \} }t d¡ dd¡}|j|ddddgd |j|ddddgd | d	¡ | ddg¡ d S )
Nrõ   r3   r   r   r2   rö   r¾   r   )r1   r   r   r¶   )r!   r%   r"   r#   r$   r&   Úset_facecolorrx   rà   r-   r-   r.   Útest_image_composite_background×  s    
r  Zimage_composite_alphac                  C   s¢  t  ¡ \} }t d¡}d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡|dd…dd…df< t d	¡}d|dd…dd…df< d|dd…dd…df< t t ddd¡t ddd¡ddd… f¡dd…tjf |dd…dd…df< |j|dd
ddgdd |j|d
dddgdd |j|ddddgd |j|dddd
gd |j|ddd
dgdd |j|ddddgdd | d¡ | 	ddg¡ | 
ddg¡ dS )z{
    Tests that the alpha value is recognized and correctly applied in the
    process of compositing images together.
    )é   é   r3   r1   Nr   gš™™™™™ñ?çš™™™™™¹?rW   r   )r  r  r3   r2   r   ç333333Ó?)r¿   rµ   ç333333ã?r3   r¾   )r   r¶   r   r1   )r!   r%   r"   r9   Zconcatenater#   Znewaxisr&   r  rx   ry   )r)   re   rá   Zarr2r-   r-   r.   Útest_image_composite_alphaâ  s.    
$ÿ
$ÿÿ
r  Zrasterize_10dpi)r?   r0   r   c                  C   sÔ   t  ddgddgg¡} tjdddd\}}|d  | ¡ |d jddgddgdd	d
 |d jddd |d jddgddgdd |d jddd |D ],}| g ¡ | g ¡ |j	d d …  
d¡ qšdtd< d S )Nr1   r2   r   r3   )r   r1   ró   r   g      4@T)Ú	linewidthZ
rasterized©r   r1   )rW   r2   ©ZxlimÚylim)r  Fri   r@   )r"   Úasarrayr!   r%   r&   r_   Úsetrý   rþ   ZspinesZset_visibler   )r<   r)   rv   re   r-   r-   r.   Útest_rasterize_dpiý  s    	

r  Zbbox_image_invertedc                  C   sÈ   t  d¡ d¡} t ¡ \}}tttddgddggƒ|jƒdd}| 	| ¡ | 
d¡ | dd¡ | dd¡ | |¡ t  d¡} tttdd	gd
dggƒ|jjƒdd}| 	| ¡ | 
d¡ | |¡ d S )Nr   rÝ   r   r   r   Fri   r  çš™™™™™É?r	  rÀ   )r"   r#   r$   r!   r%   r   r   r   rÆ   Úset_dataZset_clip_onrx   ry   Z
add_artistÚidentityrX   ZtransFigure)r	   r)   re   Zbbox_imr-   r-   r.   Útest_bbox_image_inverted  s(    þ



ÿþ

r  c               	   C   sÀ   t  ddddgddddgdd	d
dgddddgg¡} tjddd\}}| ddddg¡ | dd¡ | dd¡ |j| ddddgdd}|j 	¡  |jj
}| |¡}t| ¡ ddgddggƒ d S )NrÀ   rÂ   r´   r  gÍÌÌÌÌÌä?r¶   gš™™™™™Ù?r
  r	  ç        r  gffffffæ?gÍÌÌÌÌÌì?rÝ   r   rQ   r   r1   r   )r¿   r   i  rä   i¼  i„  )r"   rK   r!   r%   rr   rx   ry   r&   rÇ   rÑ   ÚrendererZget_window_extentr   Z
get_points)r§   r)   re   Zim_objr  Zim_bboxr-   r-   r.   Ú$test_get_window_extent_for_AxisImage5  s"    
 
ÿ 
 ÿ

r  zzoom_and_clip_upper_origin.pngc                  C   sF   t  d¡} |  d¡} t ¡ \}}| | ¡ | dd¡ | dd¡ d S )Nr   rÝ   ç       @ç      à¿)r"   r#   r$   r!   r%   r&   ry   rx   )r	   r)   re   r-   r-   r.   Útest_zoom_and_clip_upper_originJ  s    


r  c                  C   s   t  ¡ } t| ƒ}| d¡ d S )NZBlues)r!   Úgcar   Zset_cmap©re   r§   r-   r-   r.   Útest_nonuniformimage_setcmapV  s    r  c                  C   s"   t  ¡ } t| ƒ}| t  ¡ ¡ d S ©N)r!   r  r   Úset_normÚ	Normalizer  r-   r-   r.   Útest_nonuniformimage_setnorm\  s    r#  c                  C   sn   t jddd} tdƒD ]"}t  ddd¡d | |d d …f< qt dd¡}| |  ¡ ¡ t 	¡ \}}| 
|¡ d S )	NrÝ   r;   r5   ri   r  r´   rH   ÚL)r"   r:   rî   Úlinspacer   ÚnewZputdataÚflattenr!   r%   r&   )ZimdÚir§   r)   re   r-   r-   r.   Útest_jpeg_2db  s     r)  c                  C   s¨   t jddd tjdtd} t ddd¡| d< t  | ¡ t ¡ }t j	|d	d
dd | 
d¡ t |¡}t| d¡ƒ}d|  krˆdksŽn t‚| d¡}|dks¤t‚d S )NrÙ   é,  rQ   )r*  r*  r3   r5   r  r´   r7   ZredrŽ   )rû   r‘   rS   r   é   é¯   é¹   rÓ   )éþ   r   r   )r!   rX   r"   r9   Úfloatr%  rN   r`   ra   rb   rc   r   r€   ÚlenZ	getcolorsrˆ   Zgetpixel)r§   r   r	   Z
num_colorsZcorner_pixelr-   r-   r.   Útest_jpeg_alpham  s    



r1  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S ©Nrõ   r5   ©r3   r   çÍÌÌÌÌÌ#@rÓ   r   úvalue changed)
r!   r  r   r"   r#   r/  r$   r  Ú_Arˆ   )re   r§   r\   r-   r-   r.   Útest_axesimage_setdata…  s    
r7  c                  C   sP   t  ¡ } t| ƒ}tjdtd d¡}| |¡ d|d< |jd dksLt	dƒ‚d S r2  )
r!   Zgcfr   r"   r#   r/  r$   r  r6  rˆ   )r)   r§   r\   r-   r-   r.   Útest_figureimage_setdataŽ  s    
r8  zimage_cls,x,y,aç      @ç      @g      (@r3  g      @)r   r2   c                 C   sŽ   t  ¡ }| |ƒ}| |||¡ d |d<  |d< |d< |jd |jd   krf|jd   krfdkspn tdƒ‚| ||| |jd˜¡¡ d S )Nr4  r   rÓ   r5  rW   )rW   )	r!   r  r  r6  Z_AxZ_Ayrˆ   r$   r”   )Z	image_clsrZ   r[   r  re   r§   r-   r-   r.   Útest_setdata_xya—  s    :r;  c            
      C   sâ   ddl m}  tj d¡ tj dd¡}t dd¡\}}|d  |¡}|d  |¡}tj	||d d tj	||d d t
 ¡ }tj|dd t
 | ¡ ¡}|  |¡}d }| d	¡D ]*}	|d krÈ|	d
 }q²|	d
 |kr²ds²t‚q²d S )Nr   )ÚElementTreeri   r1   r2   )re   r>   r’   r	   rÚ   F)Z	xml.etreer<  r"   rm   rn   ro   r!   r%   Z
pcolormeshrÐ   r`   ra   rb   ÚgetvalueÚparseÚiterrˆ   )
r<  r•   r)   re   Úp1Úp2r   ÚtreerÚ   r	   r-   r-   r.   Útest_minimized_rasterized§  s$    

rC  c               	   C   st   t tƒjd } dtjdkrdnd |  ¡  ¡  }t ¡  t	 
|¡ W 5 Q R X tj |¡}t	 
|¡ W 5 Q R X d S )Nr|   zfile:Úwin32z///Ú )r   r~   r   ÚsysÚplatformÚresolveÚas_posixr   Ú'suppress_matplotlib_deprecation_warningr!   rd   ÚurllibÚrequestÚurlopen)r„   ÚurlÚfiler-   r-   r.   Útest_load_from_urlÈ  s    ÿ
þ
rP  Zlog_scale_imagec                  C   sR   t  d¡} d| d d d…< t ¡ \}}|j| ddddgddddd |jd	d
 d S )NrÝ   r1   r2   r   ÚviridisrW   rð   )r¿   rú   ÚvmaxÚvminÚaspectÚlog)Zyscale)r"   r9   r!   r%   r&   r  )r·   r)   re   r-   r-   r.   Útest_log_scale_imageÓ  s    
ÿrV  Zrotate_imagegffffffÖ?)r0   Útolc               	   C   s0  d} t  dd| ¡ }}t  ||¡\}}t  |d |d   d ¡dt j  }t  |d d d |d d d   d ¡dt j d d  }|| }t dd¡\}}	|	j|dd	d
ddddgdd}
tƒ  	d¡|	j
 }|
 |¡ |
 ¡ \}}}}|	j|||||g|||||gdd|d |	 dd¡ |	 dd¡ d S )NrÀ   ç      Àr9  r2   r1   ç      ø?r¶   r8   rQ  rU   éþÿÿÿr3   éýÿÿÿT)r   rú   rV   r¿   Úclip_oné   zr--r   )ZlwrÄ   r   r   )r"   r#   ÚmeshgridÚexpÚpir!   r%   r&   r   Z
rotate_degrÆ   Zset_transformZ
get_extentr_   rx   ry   )ÚdeltarZ   r[   r(   ÚYÚZ1ÚZ2r·   r)   r*   Zim1Ztrans_data2Úx1Zx2Úy1Úy2r-   r-   r.   Útest_rotate_imageâ  s,    &*ÿ

 þ
 ÿrh  c                  C   sR   t  ¡ } t d¡}tj| |dd |  d¡ t | ¡}|jd d… |jksNt	‚d S )N)iá  iA  rO   r’   r   r2   )
r`   ra   r"   r9   r!   r“   rc   rd   r”   rˆ   )r   r§   r<   r-   r-   r.   Útest_image_preserve_sizeþ  s    


ri  c                  C   sÌ   d} t  | t¡}tj| | fdd}t |ddddg¡}| ¡  | |¡ |j|dddd	 t	 
¡ }|j|d
d | d¡ t |¡}|jdks’t‚tt  |d d …d d …df t¡t  | t¡d d d… ƒ d S )Né   F)rR   rô   r  r´   r   rU   rð   )r   rV   rT  r1   )rS   r   )rj  rj  r3   rW   )r"   r  r/  r!   rX   ZAxesÚset_axis_offrü   r&   r`   ra   rb   rc   rd   r”   rˆ   r   r  Úbool)Únr•   r)   re   r   r<   r-   r-   r.   Útest_image_preserve_size2
  s    


ÿrn  zmask_image_over_under.pngr´   c                  C   s~  dt jd< d} t dd| ¡ }}t ||¡\}}t |d |d   d ¡dtj  }t |d d d |d d	 d   d ¡dtj d	 d  }d
||  }t jjj	dddd}tj
 |dk|¡}	t  dd¡\}
\}}|j|	d|tjdddddddddgd}| d¡ |
j|dd|d
d |j|	d|tjdddd d!d	dgd"dd#dddddgd}| d$¡ |
j|dd%d|d
d& d S )'NFzpcolormesh.snapgš™™™™™™?rX  r9  r2   r1   rY  r¶   ri   rÿ   r   r  ©ZoverÚunderÚbadg333333ó?r    g      ð¿r´   )rS  rR  ÚcliprU   r[  r   )r   rú   rï   rV   r¿   zGreen=low, Red=high, Blue=badÚbothZ
horizontal)ÚextendÚorientationre   rT  r   rW   r  gš™™™™™É¿r   r  r+  )Zncolorsrr  zWith BoundaryNormZproportional)rt  Úspacingru  re   rT  )r!   r   r"   r#   r^  r_  r`  Úcmrù   Úwith_extremesÚmaZmasked_wherer%   r&   r   r"  r'   rÐ   ZBoundaryNorm)ra  rZ   r[   r(   rb  rc  rd  r·   ZpaletteZZmr)   r*   r+   r§   r-   r-   r.   Útest_mask_image_over_under   sL    
&*ÿ 
ý

 ÿ ÿ 
ü

  ÿrz  Z
mask_imagec                  C   s   t  dd¡\} \}}t d¡}tj|dd…dd…f< |j|dd tjdtd}d|dd…dd…f< tj 	tjdtj
d|¡}|j|dd d S )Nr1   r2   r4   r   r   r5   T)r!   r%   r"   r:   Únanr&   r9   rl  ry  Úmasked_arrayr‡   )r)   r*   r+   ru   r-   r-   r.   Útest_mask_imageB  s    
r}  c                  C   s2   t  dt j¡} t ¡ \}}| | ¡ |j ¡  d S )NrP   )r"   Úfullr{  r!   r%   r&   rÇ   Z	draw_idle)r•   r)   re   r-   r-   r.   Útest_mask_image_allT  s    
r  zimshow_endianess.pngc                  C   s|   t  d¡} t  | | ¡\}}t  |d |d ¡}t dd¡\}\}}tdddd}|j| d	¡f|Ž |j| d
¡f|Ž d S )Nri   r   r1   r2   rU   r   rQ  )rV   r   rú   z<f8z>f8)	r"   r#   r^  Úhypotr!   r%   Údictr&   rœ   )rZ   r(   rb  r·   r)   r*   r+   Úkwargsr-   r-   r.   Útest_imshow_endianess\  s    
rƒ  Zimshow_masked_interpolationÚx86_64rÃ   )rW  r0   r   c            
      C   sð   t  d¡jdddd} d}tjd|| d d	}tj|| td
 ||¡}d|d< d|d< tj	|d< t 
|¡ d¡}d|d< tj ||¡}t  dd¡\}}ttjƒ}| d¡ t|| ¡ ƒD ].\}}	|	 |¡ |	j||| |d |	 d¡ q¼d S )NrQ  rÿ   r  r­   ro  r   r   r1   ©rS  rR  r5   rW   r4   g     jø@)rö   r   )rö   rö   rl  T)r   rö   r   r   rl   )rï   rú   r   Úoff)r!   Úget_cmaprx  r   r"  r"   r#   r/  r$   ÚinfZ
zeros_likerœ   ry  r|  r%   ÚsortedÚmimageZ	_interpd_ÚremoveÚzipÚravelr'   r&   Úaxis)
rú   ÚNrm  r•   Úmaskr)   Zax_gridZinterpsZinterpre   r-   r-   r.   Ú test_imshow_masked_interpolationj  s"    



r‘  c                   C   s   t  ddgdtjgg¡ d S )Nr1   r2   r   )r!   r&   r"   r{  r-   r-   r-   r.   Útest_imshow_no_warn_invalidŽ  s    r’  r6   c                 C   s   g | ]}t  |¡‘qS r-   )r"   r6   )r¬   Úsr-   r-   r.   rí   “  s     rí   zu2 u4 i2 i4 i8 f4 f8c                 C   sÎ   t jd| d d¡}| jdkr&|d8 }|dk }|dk}| jdkrH|d }t ¡ \}}| |¡ ¡ }|| dk ¡ svt	‚| jdkr¦|| d	k ¡ s”t	‚|j
jdksÊt	‚n$|| dk ¡ sºt	‚|j
t jksÊt	‚d S )
Nr*  r5   )ri   ri   r   Úuri   r   rH   Úfr1   )r"   r#   r$   Úkindr!   r%   r&   Z	get_arrayÚallrˆ   r6   r;   )r6   rá   Ztoo_lowZtoo_highÚ_re   Úoutr-   r-   r.   Ú$test_imshow_clips_rgb_to_valid_range’  s    


rš  zimshow_flatfield.pngc                  C   s0   t  ¡ \} }|jt d¡dd}| dd¡ d S )Nr4   r   r   r¶   rY  )r!   r%   r&   r"   r:   Úset_clim©r)   re   r§   r-   r-   r.   Útest_imshow_flatfield§  s    r  zimshow_bignumbers.pngc                  C   sN   dt d< t ¡ \} }tjdddgdddggtjd}| |¡}| d	d
¡ d S )Nr   úimage.interpolationr1   r2   g   ¢”mBr   r3   r5   r   r   )r   r!   r%   r"   rK   Zuint64r&   r›  ©r)   re   r<   Zpcr-   r-   r.   Útest_imshow_bignumbers®  s
     
r   zimshow_bignumbers_real.pngc                  C   sH   dt d< t ¡ \} }t dddgdddgg¡}| |¡}| dd	¡ d S )
Nr   rž  r  r´   g’ÕMÏð€Dr:  r9  r   r   )r   r!   r%   r"   rK   r&   r›  rŸ  r-   r-   r.   Útest_imshow_bignumbers_real¹  s
    
r¡  Ú	make_normc                   C   s
   t  d¡S ©Nr1   )r   Z
SymLogNormr-   r-   r-   r.   Ú<lambda>É  ó    r¤  c                   C   s
   t  d¡S r£  )r   Z	PowerNormr-   r-   r-   r.   r¤  Ê  r¥  c              	   C   sz   t  ¡ \}}tjtdd |jg g| ƒ d}W 5 Q R X | ddddg¡ |j ¡  t 	t
¡ | |j¡ W 5 Q R X d S )Nz)Attempting to set identical left == right©Úmatch)rï   éûÿÿÿr   )r!   r%   ræ   ÚwarnsÚUserWarningr&   Z
set_extentrÇ   rÑ   rç   ÚRuntimeErrorÚ
make_imageZ_cachedRenderer)r¢  r)   re   r§   r-   r-   r.   Útest_empty_imshowÅ  s    ÿ
r­  c               	   C   s^   t  ¡ \} }| tjdtjd¡ t tjtjd¡r:tƒ nt	 
t¡ | j ¡  W 5 Q R X d S )N)r   r   r5   Úequiv)r!   r%   r&   r"   r9   Z
longdoubleZcan_castÚfloat64r   ræ   r©  rª  rÇ   rÑ   ©r)   re   r-   r-   r.   Útest_imshow_float128×  s    ÿr±  c                  C   s0   t  ¡ \} }| tjddgddggtd¡ d S )NTFr5   )r!   r%   r&   r"   rK   rl  r°  r-   r-   r.   Útest_imshow_boolà  s    r²  c               	   C   sD   t  ¡ \} }| t dtj¡¡ t t¡ | j	 
¡  W 5 Q R X d S )NrÝ   )r!   r%   r&   r"   r~  r{  ræ   r©  rª  rÇ   rÑ   r°  r-   r-   r.   Útest_full_invalidå  s    r³  zfmt,counted)r—   s    colorimage)r>   s   <imagezcomposite_image,count)Tr1   )Fr2   c           
      C   sº   t  t  ddd¡t  ddd¡¡\}}t  |d ¡}t ¡ \}}| dd¡ |j|ddddgd |j|d d d… ddddgd |tjd	< t	 
¡ }	|j|	| d
 |	 ¡  |¡|ks¶t‚d S )Nr¨  r   r1   r2   r   r   r¾   rW   zimage.composite_imager’   )r"   r^  r#   rY   r!   r%   rx   r&   r   r`   ra   rb   r=  Úcountrˆ   )
r   ZcountedZcomposite_imager´  r(   rb  r·   r)   re   r¦   r-   r-   r.   Útest_compositeì  s    $ 
rµ  c                  C   sT   t  ¡ \} }|jdggdd | ¡  | ¡  | ¡ | ¡   krJdksPn t‚d S )Nr   ©r   r1   r   r1   r¾   r  )r!   r%   r&   ZrelimZ	autoscaleZget_xlimZget_ylimrˆ   r°  r-   r-   r.   Ú
test_relimÿ  s
    r·  c                  C   sx   t  ¡ \} }| ¡  |jddgddggddddd}|jddd | j ¡  t | j 	¡ ¡d	d d
…f dk 
¡ stt‚d S )Nr   rð   )rø   ri   rø   ri   rù   F)rT  r¿   rú   r\  r  r  .r   )r!   r%   rk  r&   r  rÇ   rÑ   r"   rK   Zbuffer_rgbar—  rˆ   rœ  r-   r-   r.   Útest_unclipped  s     ÿ
r¸  c                  C   sÂ   t  d¡\} }|D ]}| ¡  q|d jddgddggddd}| d ¡ | |d j¡ t ¡ }| j	|dd	 | 
¡ ™d
hks„t‚|d jdd t ¡ }| j	|dd	 | 
¡ | 
¡ ks¾t‚d S )Nr2   r1   r   r   rð   r¶  )rT  r¿   Úrgbar’   rH   )rW   r   )r  )r!   r%   rk  r&   rÔ   Zset_clip_boxZbboxr`   ra   rb   r=  rˆ   r  )r)   rv   re   r§   Z
buf_beforeZ	buf_afterr-   r-   r.   Útest_respects_bbox  s    
 
rº  c                  C   s„   t  ¡ \} }| t d¡¡}tjjdgdgd}| |¡dksBt‚tjjdgdgd}| |¡dksht‚tj	}| |¡dks€t‚d S )	Nr»   r   T©r  z[]Fz[0]z[nan])
r!   r%   r&   r"   r9   ry  r|  rÏ   rˆ   r{  )r)   re   r§   r•   r-   r-   r.   Útest_image_cursor_formatting%  s    r¼  c           
      C   sœ   t  dd¡}t  ||¡\}}t  d|d d  |d  ¡}|| ¡  }t d¡}|  ¡ }|j|||dd	 | ¡ }|t	 
¡ |ƒƒ}	||	d
< |j|	dd dS )zPer-pixel alpha channel test.r   r1   r[  r¶   r2   g[Âõ(\ß?rQ  r   )rµ   rú   r   ).rW   r   N)r"   r%  r^  r_  Úmaxr!   r‡  Zadd_subplotr&   r   r"  )
rs   rt   rZ   ZxxÚyyÚzzrµ   rú   re   r¹  r-   r-   r.   Útest_image_array_alpha4  s    
rÀ  c                	   C   s6   t jtdd tjt d¡ddgd W 5 Q R X d S )Nzalpha must be a float, two-dr¦  rP   r1   )rµ   )ræ   rç   rè   r!   r&   r"   r9   r-   r-   r-   r.   Ú!test_image_array_alpha_validationG  s    rÁ  c                  C   sò   t tj d¡ƒ} | jdd tjddd}| ddddg¡}tjd	d	d	ddddd
ddddd	d	d	ddddggt	d}|j
|d| ddd}| d¡ |j ¡  | |jj¡d d }| | |dggd  j ¡ ¡¡d  t¡}t ||k¡sît‚d S )NZautumn_rZ	lightgrey)Úcolor)gffffffþ?r  r   rQ   r   r1   rW   é+   éO   é_   éB   é"   r5   rð   )rT  rú   rS  rR  r†  ri   rH   )r   r!   rw  r‡  Z	set_underrX   rü   r"   rK   r/  r&   rŽ  rÇ   rÑ   r¬  r  rú   rï   ÚTr  rœ   rp   r—  rˆ   )rú   r)   re   r•   r§   Z
from_imageZdirect_computationr-   r-   r.   Útest_exact_vminL  s"    *þ

$ÿþrÉ  c               	   C   s"   t  ¡  t d¡} W 5 Q R X d S )Nz.https://matplotlib.org/1.5.0/_static/logo2.png)r   rJ  rŠ  rd   )r®   r-   r-   r.   Útest_https_imread_smoketesti  s    
rÊ  c                       s@   e Zd Zdd„ Zdd„ Z‡ fdd„Zdd„ Zed	d
„ ƒZ‡  Z	S )Ú
QuantityNDc                 C   s   t  |¡ | ¡}||_|S r   )r"   r  ÚviewÚunits)ÚclsZinput_arrayrÍ  Úobjr-   r-   r.   Ú__new__u  s    zQuantityND.__new__c                 C   s   t |dd ƒ| _d S ©NrÍ  )ÚgetattrrÍ  )ÚselfrÏ  r-   r-   r.   Ú__array_finalize__z  s    zQuantityND.__array_finalize__c                    s<   t | dd ƒ}tt| ƒ |¡}t|tƒs.|d k	r8t||ƒ}|S rÑ  )rÒ  ÚsuperrË  Ú__getitem__Ú
isinstance)rÓ  ÚitemrÍ  Úret©Ú	__class__r-   r.   rÖ  }  s
    
zQuantityND.__getitem__c                 O   sD  t ||ƒ}d|krt‚t|ƒdkrJ|d }t |ddƒ}|t |¡f|Ž}nÖt|ƒdkr|d }|d }	t |ddƒ}
t |	ddƒ}|
d krŒ|n|
}
|d krœ|
n|}|tjtjfkrÂ|
|kr¼t‚|
}n:|tjkrÜ|
› d|› }n |tj	krø|
› d|› d	}nt‚|| 
tj¡|	 
tj¡f|Ž}nt‚|d kr6t |¡}n
t||ƒ}|S )
Nr™  r1   r   rÍ  Zdimensionlessr2   Ú*z/(ú))rÒ  ÚNotImplementedErrorr0  r"   r  ÚaddÚsubtractÚ
ValueErrorÚmultiplyÚdividerÌ  ÚndarrayrK   rË  )rÓ  ZufuncÚmethodÚinputsr‚  ÚfuncZi0ÚunitZout_arrÚi1Zu0Úu1r-   r-   r.   Ú__array_ufunc__„  s:    


 

zQuantityND.__array_ufunc__c                 C   s   |   tj¡S r   )rÌ  r"   rä  )rÓ  r-   r-   r.   r®   ¦  s    zQuantityND.v)
Ú__name__Ú
__module__Ú__qualname__rÐ  rÔ  rÖ  rë  Úpropertyr®   Ú__classcell__r-   r-   rÚ  r.   rË  t  s   "rË  c               	   C   s¶   t ddgdƒ} | d d … \}}t | jt ddg¡k¡s<t‚| jdksJt‚t || jt dg¡k¡sjt‚|| jdks|t‚|| jdksŽt‚t t	¡ |t ddƒ  W 5 Q R X d S )Nr1   r2   Úmr   zm*mzm/(m)r“  )
rË  r"   r—  r®   r  rˆ   rÍ  ræ   rç   rá  )ÚqZq0Zq1r-   r-   r.   Útest_quantitynd«  s     ró  c                  C   s4   t t d¡dƒ} t ¡ \}}| | ¡ |j ¡  d S )NrP   rñ  )rË  r"   r:   r!   r%   r&   rÇ   rÑ   )rá   r)   re   r-   r-   r.   Útest_imshow_quantitynd·  s    
rô  c                 C   s.  t jddt jd}d|dd…d d …f< t jj|dd}d	|jdd…dd…f< t d
¡jdd}|  	¡ }|j
|tjddddd|d}| tjddd¡ |j
|tjddddd|d}| tjddd¡ |jddd | 	¡ }|j
|tjddddd|d |j
|tjddddd|d |jddd d S )Nr4   r1   r5   rW   r   r2   Fr»  TrQ  Úw©rp  r¶   r…  rØ   r   )rï   r¿   r   rú   rZ  )r   ri   r   ri   )r   ri   r  )r"   r~  r¯  ry  rK   r  r!   r‡  rx  r%   r&   r   rñ   r!  r"  r  )rs   rt   r•   Zmasked_datarú   re   r§   r-   r-   r.   Útest_norm_changeÀ  s>      ÿ  ÿ  ÿ  ÿr÷  rZ   rW   r1   c                 C   s²   t jd|t jd}d|dd…d d …f< |  ¡ }|j|tjd| ¡ ddd	d
 t jd|t jd}d|dd…d d …f< | ¡ }t 	d	¡j
dd}|j|tjd| ¡ dd|d
 d S )Nr4   r5   g@Œµx¯Dr   r2   r1   r…  r   rQ  )rï   r   rú   iè  rõ  rö  )r"   r~  r¯  r%   r&   r   rñ   r½  r!   r‡  rx  r"  )rs   rt   rZ   r•   re   rú   r-   r-   r.   Útest_huge_range_logÜ  s     ÿ ÿrø  c           	   
   C   sL  |   dd¡}|  dd¡}ddgddggddgddggddgddggf}dddg}tt||ƒƒD ]è\}\}}||  |¡ ||  |¡ ||  |¡ || j|ddd	d
ddd ||  dd¡ ||  dd¡ || j 	¡  || j
 d¡ || j d¡ || j tjdddddgdd¡ || j tjdddddgdd¡ q^d S )Nr1   r   r   r:   r9   Úmixedr   Úequalrš   ZGreys)r   rT  rV   rú   rS  rR  r  rY  gÍÌÌÌÌÌð?rs  r÷   r2   r   ri   T)ZnbinsZstepsÚinteger)r%   Ú	enumeraterŒ  r'   Zspyr&   rx   ry   ZxaxisZtick_topÚtitleZset_yZset_ticks_positionZset_major_locatorÚmtickerZMaxNLocatorZyaxis)	rs   rt   Zax_testZax_refZ	plot_dataZplot_titlesr(  r\   rý  r-   r-   r.   Útest_spy_boxð  s:    ý
   þ
ÿ
ÿrÿ  )‚Ú
contextlibr   r   r`   rƒ   Úpathlibr   rG  rF  Úurllib.requestrK  Znumpyr"   Znumpy.testingr   ZPILr   Z
matplotlibr   r   r	   rŠ  r
   r   r!   r   r   Zmatplotlib.imager   r   r   r   r   Zmatplotlib.testing.decoratorsr   r   Zmatplotlib.transformsr   r   r   Zmatplotlib.tickerZtickerrþ  ræ   r/   r=   rL   ÚmarkZparametrizer^   rg   rw   rz   r   r‹   rŒ   r–   r™   rž   r¨   r³   r¸   rÎ   rÒ   r×   rÜ   râ   rã   ré   rê   rë   rò   r  r  r  r  r  r  r  r  r#  r)  r1  r7  r8  r#   r$   r;  rC  rP  rV  rh  ri  rn  rz  r}  r  rƒ  Úmachiner‘  r’  Úsplitrš  r  r   r¡  r"  rñ   r­  r±  r²  r³  rµ  r·  r¸  rº  r¼  rÀ  rÁ  rÉ  ÚnetworkZflakyrÊ  rä  rË  ró  rô  r÷  rø  rÿ  r-   r-   r-   r.   Ú<module>   s†  $

 ÿ
	üþ




"



Gþÿ

	





 ÿ
	
  ÿ

 ÿ

		  ÿ  ÿýÿ
	!


!

 þ
! ÿ



 ÿ

ýþ
	ÿ


	7	


