U
    Fvf+   ã                   @   sž  d dl mZ d dlZd dlZd dlZd dlZd dl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 d dlmZ d dlmZ d dlmZ d	d
„ Zdd„ Ze	j  !d¡edgddd„ ƒƒZ"dd„ Z#e	j  !d¡edgddd„ ƒƒZ$dd„ Z%dd„ Z&dd„ Z'dd„ Z(dd„ Z)G d d!„ d!ƒZ*d"d#„ Z+d$d%„ Z,d&d'„ Z-d(d)„ Z.ej/ 0d*e
j1 2¡ ¡d+d,„ ƒZ3d-d.„ Z4d/d0„ Z5d1d2„ Z6d3d4„ Z7d5d6„ Z8dS )7é    )ÚBytesION)Úcm)Úsubprocess_run_helper)Úcheck_figures_equal)Úrrulewrapper)ÚVertexSelector)Úparasite_axesc                  C   sè   t  ¡ } t | tƒ tj¡ t  d¡}t |tƒ tj¡ t jdd}t jt	 
d¡dd t  ¡  t |tƒ tj¡ t  ¡  t jt	 
d¡t	 
d¡d t t  ¡ tƒ tj¡ t  ¡ } t  ¡ }t  t	 
d¡¡ | d¡ t | tƒ tj¡ d S )	Néy   Úpolar)Z
projectioné
   Zfoobar©Úlabel)ÚxÚheightÚlog)ÚpltÚfigureÚpickleÚdumpr   ÚHIGHEST_PROTOCOLÚsubplotÚaxesÚplotÚnpÚarangeÚlegendÚbarZgcaZ
set_yscale©ÚfigÚax© r    ú@/tmp/pip-unpacked-wheel-7vhvci0g/matplotlib/tests/test_pickle.pyÚtest_simple   s     

r"   c                 C   s¾  |   d¡ t | ¡ t d¡ t d¡t d¡ }}t ddd¡ dd¡ } }}t |d ¡}t 	ddd	¡ t 
ttdƒƒ¡ t 	ddd
¡ tj|ddgd t ¡  t 	ddd¡ t |¡ t 	ddd¡ t |¡ t 	ddd¡ t |¡ t 	ddd¡}| dd¡ | dd¡ t ||||¡ t 	ddd¡}| dd¡ | dd¡ t ||||¡ t 	ddd¡ tj||d
 dd tjdd t 	ddd¡ tj||d ddd tjdd d S )N)r   é   z!Can you fit any more in a figure?é   r   r   éP   g333333ã¿é   é   é   z//Zooo)Zhatchesé   é   r#   é   é	   z$x^2$r   z
upper left)Úlocg      à¿gš™™™™™É?gš™™™™™Ù?)ZxerrZyerrT)Z	draggable)Úset_size_inchesr   r   Zsuptitler   r   ZlinspaceÚreshapeÚsinr   r   ÚlistÚrangeZcontourfZcolorbarZ
pcolormeshÚimshowZpcolorÚset_xlimZset_ylimZ
streamplotZquiverZscatterr   Zerrorbar)Úfig_refr   ÚyÚdataÚuÚvr   r    r    r!   Ú_generate_complete_test_figure0   s>    





r:   ÚdefaultZpng)Ú
extensionsc                 C   st   t |ƒ t |tj¡}ddd„ t |¡D ƒks2t‚t |¡}|j 	¡  |  
| ¡ ¡ |  |jj ¡ ¡ t |¡ d S )NZFigureCanvasAggc                 S   s   g | ]\}}}|‘qS r    r    )Ú.0ÚopÚargÚposr    r    r!   Ú
<listcomp>i   s     z!test_complete.<locals>.<listcomp>)r:   r   Údumpsr   ÚpickletoolsZgenopsÚAssertionErrorÚloadsÚcanvasÚdrawr.   Úget_size_inchesÚfigimageÚrendererÚbuffer_rgbar   Úclose)Úfig_testr5   ZpklZloadedr    r    r!   Útest_complete_   s    

rN   c               	   C   sP   dd l } dd l}| jd }t|dƒ}| |¡}W 5 Q R X tt| |¡ƒƒ d S )Nr   ÚPICKLE_FILE_PATHÚrb)Úosr   ÚenvironÚopenÚloadÚprintÚstrrB   )rQ   r   ÚpathZblobr   r    r    r!   Ú_pickle_load_subprocesss   s    
rX   c              	   C   s®   t |ƒ |d }| ¡ rt‚| d¡}t ||tj¡ W 5 Q R X | ¡ sNt‚ttddt	|ƒid}t 
t |j¡¡}|j ¡  |  | ¡ ¡ |  |jj ¡ ¡ t |¡ d S )Nzsinus.pickleÚwbé<   rO   )ÚtimeoutZ	extra_env)r:   ÚexistsrD   rS   r   r   r   r   rX   rV   rE   ÚastÚliteral_evalÚstdoutrF   rG   r.   rH   rI   rJ   rK   r   rL   )rM   r5   Ztmp_pathÚfpÚfileÚprocZ
loaded_figr    r    r!   Ú test_pickle_load_from_subprocess   s     
ý
rc   c                  C   sp   t  d¡} tƒ }t | |tj¡ t  d¡ t jjj	i ks<t
‚t | ¡ ¡} t jjj	i ks\t
‚|  ¡ dkslt
‚d S )Nza labelÚall)r   r   r   r   r   r   rL   Z_pylab_helpersZGcfZfigsrD   rE   Ú	getbufferZ	get_label)r   Úbufr    r    r!   Útest_gcf›   s    

rg   c                  C   sX   ddl m}  t ¡ }| |ƒ}| ddd¡}| dddgdddg¡ t |tƒ tj	¡ d S )Nr   )ÚFigureCanvasPdfr'   r(   r&   )
Zmatplotlib.backends.backend_pdfrh   ÚmfigureÚFigureÚadd_subplotr   r   r   r   r   )rh   r   Ú_r   r    r    r!   Útest_no_pyplot¦   s    rm   c                  C   s*   ddl m}  | dddƒ}t |tƒ ¡ d S )Nr   )ÚRendererAggr   é   é   )Úmatplotlib.backends.backend_aggrn   r   r   r   )rn   rJ   r    r    r!   Útest_renderer°   s    rr   c                  C   s^   ddl m}  | dƒ}|jj}| ddd¡}| t d¡ dd¡¡ |j 	¡  t
 |tƒ ¡ d S )Nr   )Únew_figure_manageriè  r'   é   r&   r)   )rq   rs   rF   r   rk   r3   r   r   r/   rG   r   r   r   )rs   Úmanagerr   r   r    r    r!   Ú
test_image¶   s    
rv   c                  C   s4   t jdd t  ¡ } t | ¡}t |¡ t  ¡  d S )NT)r
   )r   r   Zgcfr   rB   rE   rG   )r   Úpfr    r    r!   Ú
test_polarÂ   s
    

rx   c                   @   s   e Zd Zdd„ ZdS )ÚTransformBlobc                 C   sJ   t  ¡ | _t  ¡ | _t  | j| j¡| _t  | j¡| _t  | j| j¡| _d S ©N)	ÚmtransformsZIdentityTransformÚidentityZ	identity2ZCompositeGenericTransformÚ	compositeZTransformWrapperÚwrapperÚ
composite2)Úselfr    r    r!   Ú__init__Ë   s    

þþzTransformBlob.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r    r    r    r!   ry   Ê   s   ry   c                  C   s|   t ƒ } t | ¡}~ t |¡} | jj| jks.t‚dd„ | jj 	¡ D ƒ| j
gksPt‚| jj| jjksdt‚| jj| jjksxt‚d S )Nc                 S   s   g | ]
}|ƒ ‘qS r    r    )r=   r9   r    r    r!   rA   ã   s     z"test_transform.<locals>.<listcomp>)ry   r   rB   rE   r~   Z_childr}   rD   Ú_parentsÚvaluesr   Z
input_dimsZoutput_dims)Úobjrw   r    r    r!   Útest_transformÚ   s    

"rˆ   c                  C   s@   t dƒ} zt t | ¡¡ W n tk
r:   tdƒ ‚ Y nX d S )Nr(   z!rrulewrapper pickling test failed)r   r   rE   rB   ÚRecursionErrorrU   )Úrr    r    r!   Útest_rrulewrapperé   s    r‹   c                  C   sN   t jddd\} }t t | ¡¡} | jd  dd¡ | jd  ¡ dksJt‚d S )	Nr(   T)Zsharexr   r   ro   r'   )r   ro   )	r   Úsubplotsr   rE   rB   r   r4   Zget_xlimrD   )r   Zaxsr    r    r!   Útest_sharedò   s    r   c                  C   sH   t  ¡ \} }| ddddg¡ |jdtjtjfd t t 	| ¡¡ d S )Ngš™™™™™¹?g333333Ó?Útop)Z	functions)
r   rŒ   Z
inset_axesZsecondary_xaxisr   ZsquareÚsqrtr   rE   rB   r   r    r    r!   Útest_inset_and_secondaryù   s    r   Úcmapc                 C   s   t  | ¡ d S rz   )r   rB   )r‘   r    r    r!   Ú	test_cmap   s    r’   c                  C   sN   t  ¡ } | jd k	st‚tƒ }t | |¡ | d¡ t |¡}|jd k	sJt‚d S )Nr   )	ri   rj   rF   rD   r   r   r   ÚseekrT   )r   ÚoutZfig2r    r    r!   Útest_unpickle_canvas  s    

r•   c                  C   s4   t  ddddg¡} tt t | ¡¡ƒt jks0t‚d S )Nr   r'   )r   Z	host_axesÚtyper   rE   rB   ZHostAxesrD   )r   r    r    r!   Útest_mpl_toolkits  s    r—   c                   C   s*   t t t tj ¡ ¡¡ƒtjjks&t‚d S rz   )r–   r   rE   rB   ÚmplÚcolorsZLogNormrD   r    r    r    r!   Útest_standard_norm  s    ÿrš   c                  C   s<   t j t jjt jj¡ƒ } tt t 	| ¡¡ƒt| ƒks8t
‚d S rz   )r˜   r™   Zmake_norm_from_scaleZscaleZ
LogitScaleZ	Normalizer–   r   rE   rB   rD   )Zlogit_norm_instancer    r    r!   Útest_dynamic_norm  s     ÿÿr›   c                  C   s,   t jddgdd\} t t t| ƒ¡¡ d S )Nr   r'   T)Zpicker)r   r   r   rE   rB   r   )Úliner    r    r!   Útest_vertexselector   s    r   )9Úior   r]   r   rC   Znumpyr   ZpytestZ
matplotlibr˜   r   Zmatplotlib.testingr   Zmatplotlib.testing.decoratorsr   Zmatplotlib.datesr   Zmatplotlib.linesr   Zmatplotlib.pyplotZpyplotr   Zmatplotlib.transformsZ
transformsr{   Zmatplotlib.figurer   ri   Zmpl_toolkits.axes_grid1r   r"   r:   ÚstyleÚcontextrN   rX   rc   rg   rm   rr   rv   rx   ry   rˆ   r‹   r   r   ÚmarkZparametrizeZ
_colormapsr†   r’   r•   r—   rš   r›   r   r    r    r    r!   Ú<module>   sR   /




	

