a
    ëÝEbÛ&  ã                   @   sL  d dl Z d dlZd dlmZ d dlmZmZ d dlZd dl	m
Z
mZmZmZ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dd„ Zdd„ Z edgdd�dd„ ƒZ!dd„ Z"dd„ Z#ej$ %d¡dd„ ƒZ&dd „ Z'd!d"„ Z(d#d$„ Z)ej*d%d&„ ƒZ+d'd(„ Z,d)d*„ Z-d+d,„ Z.d-d.„ Z/d/d0„ Z0d1d2„ Z1dS )3é    N)Úassert_array_almost_equal)ÚImageÚTiffTags)ÚcollectionsÚpathÚpyplotÚ
transformsÚrcParams)ÚRendererAgg)ÚFigure)Úimread)ÚPath)Úimage_comparison)ÚIdentityTransformc                  C   s„   t ddgƒ} |  d¡ | j d¡ t ¡ }| j||  ¡ dd� | d¡ | j||  ¡ dd� | d¡ t	t
t|ƒd ƒd	d
d� d S )Né   çš™™™™™Ù?)r   r   r   ç      Ð?Únone)Z	facecolorZ	edgecolorr   ©r   r   )ç        ç      ð?r   r   é   )Údecimal)r   Zset_facecolorÚpatchZ	set_alphaÚioÚBytesIOÚsavefigZget_facecolorÚseekr   Útupler   )ÚfigÚbuf© r!   úY/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/matplotlib/tests/test_agg.pyÚtest_repeated_save_with_alpha   s$    
þ
þ
þr#   c               
   C   sh   t  ¡ } t ¡ \}}t t ddgddgddgddgddgg¡g¡}| |¡ | 	dd¡ t 
| ¡ d S )Niöÿÿÿé   é
   éûÿÿÿgü©ñÒMbP?r   )r   r   ÚpltÚsubplotsr   ZPathCollectionr   r   Z
add_artistÚset_xlimr   )ÚbuffÚfÚaxZ
collectionr!   r!   r"   Ú!test_large_single_path_collection2   s    (ÿ
r-   c                  C   sV   t  d¡\} }d}t |¡}| |¡ | ||d |d ¡ t ¡ }| j|dd� d S )Nr   éè  gš™™™™™é?g333333ó?Úpng©Úformat)	r'   r(   ÚnpZarangeZsemilogxZfill_betweenr   r   r   )r   r,   ZstepsÚdatar    r!   r!   r"   Útest_marker_with_nan@   s    

r4   c                  C   sR   t  ¡ } tƒ }| ¡ }t d¡}|d d d…  d9  < | |¡ |j| dd� d S )Né † é   éÿÿÿÿr/   r0   )r   r   r   r(   r2   ÚonesÚplotr   )r*   r   r,   Úpointsr!   r!   r"   Útest_long_pathL   s    

r;   zagg_filter.pngT)Zremove_textc                     sr  dd„ ‰d$‡fdd„	‰G dd„ dƒ} G dd	„ d	| ƒ‰G ‡fd
d„d| ƒ‰ G ‡ ‡fdd„d| ƒ}t  ¡ \}}|jg d¢g d¢dddddddd�	\}|jg d¢g d¢dddddddd�	\}|dƒ}||fD ]v}| ¡ }| ¡ }	| ||	¡\}
|
 |¡ tj| ¡ |j	dddd�}|
 
|¡ |
 | ¡ d ¡ |
 |¡ |
 d ¡ qÆ| d!d"¡ | d!d"¡ |j d#¡ |j d#¡ d S )%Nc                 S   sv   t jd| d  | |dd…  | d| d  | d| d…  f }t  |¡}t j|| ¡  |dd�}||d | d … S )Nr6   r   r   r7   Zsame)Úmode)r2   Zr_ZhanningZconvolveÚsum)ÚxÚ
window_lenÚsÚwÚyr!   r!   r"   Úsmooth1dX   s    6ÿ
z!test_agg_filter.<locals>.smooth1dr   c                    s:   t t|ƒdƒd d }t ˆ d| |¡} t ˆ d| |¡} | S )Nr   r6   r   r   )ÚmaxÚintr2   Zapply_along_axis)ÚAÚsigmar?   )rC   r!   r"   Úsmooth2d`   s    z!test_agg_filter.<locals>.smooth2dc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )z#test_agg_filter.<locals>.BaseFilterc                 S   s   dS )Nr   r!   ©ÚselfÚdpir!   r!   r"   Úget_padh   s    z+test_agg_filter.<locals>.BaseFilter.get_padc                 S   s   t dƒ‚d S )Nz"Should be overridden by subclasses)ÚNotImplementedError)rJ   Ú
padded_srcrK   r!   r!   r"   Úprocess_imagek   s    z1test_agg_filter.<locals>.BaseFilter.process_imagec                 S   s@   |   |¡}t |||f||fdgd¡}|  ||¡}|| | fS )Nr   Zconstant)rL   r2   ÚpadrO   )rJ   ÚimrK   rP   rN   Ú	tgt_imager!   r!   r"   Ú__call__n   s    
ÿz,test_agg_filter.<locals>.BaseFilter.__call__N)Ú__name__Ú
__module__Ú__qualname__rL   rO   rS   r!   r!   r!   r"   Ú
BaseFilterf   s   rW   c                   @   s&   e Zd Zd	dd„Zdd„ Zdd„ ZdS )
z%test_agg_filter.<locals>.OffsetFilterr   c                 S   s
   || _ d S ©N)Úoffsets)rJ   rY   r!   r!   r"   Ú__init__w   s    z.test_agg_filter.<locals>.OffsetFilter.__init__c                 S   s   t t| jƒd | ƒS )NéH   )rE   rD   rY   rI   r!   r!   r"   rL   z   s    z-test_agg_filter.<locals>.OffsetFilter.get_padc                 S   sH   | j \}}tj|t|d | ƒdd�}tj|t|d | ƒ dd�}|S )Nr[   r   )Zaxisr   )rY   r2   ZrollrE   )rJ   rN   rK   ÚoxZoyZa1Za2r!   r!   r"   rO   }   s    
z3test_agg_filter.<locals>.OffsetFilter.process_imageN)r   ©rT   rU   rV   rZ   rL   rO   r!   r!   r!   r"   ÚOffsetFilteru   s   
r^   c                       s.   e Zd ZdZddd„Zdd„ Z‡ fdd	„Zd
S )z'test_agg_filter.<locals>.GaussianFilterzSimple Gaussian filter.ç      à?©r   r   r   c                 S   s   || _ || _|| _d S rX   )rG   ÚalphaÚcolor)rJ   rG   ra   rb   r!   r!   r"   rZ   †   s    z0test_agg_filter.<locals>.GaussianFilter.__init__c                 S   s   t | jd d | ƒS ©Nr   r[   )rE   rG   rI   r!   r!   r"   rL   ‹   s    z/test_agg_filter.<locals>.GaussianFilter.get_padc                    sh   t  |¡}| j|d d …d d …d d…f< ˆ |d d …d d …df | j | jd | ƒ|d d …d d …df< |S rc   )r2   Z
empty_likerb   ra   rG   )rJ   rN   rK   rR   ©rH   r!   r"   rO   Ž   s    
ÿz5test_agg_filter.<locals>.GaussianFilter.process_imageN)r_   r`   )rT   rU   rV   Ú__doc__rZ   rL   rO   r!   rd   r!   r"   ÚGaussianFilterƒ   s   
rf   c                       s,   e Zd Zd‡ ‡fdd„	Zdd„ Zdd	„ Zd
S )z)test_agg_filter.<locals>.DropShadowFilterç333333Ó?r`   r   c                    s   ˆ |||ƒ| _ ˆ|ƒ| _d S rX   )Úgauss_filterÚoffset_filter)rJ   rG   ra   rb   rY   ©rf   r^   r!   r"   rZ   —   s    z2test_agg_filter.<locals>.DropShadowFilter.__init__c                 S   s   t | j |¡| j |¡ƒS rX   )rD   rh   rL   ri   rI   r!   r!   r"   rL   ›   s    
ÿz1test_agg_filter.<locals>.DropShadowFilter.get_padc                 S   s    | j  ||¡}| j ||¡}|S rX   )rh   rO   ri   )rJ   rN   rK   Út1Út2r!   r!   r"   rO   Ÿ   s    z7test_agg_filter.<locals>.DropShadowFilter.process_imageN)rg   r`   r   r]   r!   rj   r!   r"   ÚDropShadowFilter•   s   rm   )çš™™™™™¹?r_   çÍÌÌÌÌÌì?)rn   ro   r_   zbo-ÚbrA   r$   r%   zLine 1)ZmecZmfcZlwZmewÚmsÚlabel)r_   gš™™™™™É?gffffffæ?zro-Úré   g      @g      Àr:   )r>   rB   Zunitsr_   Tr   r   F)r   )r'   r(   r9   Z	get_xdataZ	get_ydataZupdate_fromÚmtransformsZoffset_copyZget_transformÚfigureZset_transformZ
set_zorderZ
get_zorderZset_agg_filterZset_rasterizedr)   Zset_ylimZxaxisZset_visibleZyaxis)rW   rm   r   r,   Úline1Úline2ÚgaussÚlineÚxxÚyyZshadowZotr!   )rf   r^   rC   rH   r"   Útest_agg_filterV   s<    ÿÿ
ÿ

r}   c                  C   sL   t jdd�} t ¡ }t t¡� |  |¡ W d   ƒ n1 s>0    Y  d S )N)i,  r.   )Zfigsize)r'   rv   r   r   ÚpytestÚraisesÚ
ValueErrorr   )r   r*   r!   r!   r"   Útest_too_large_imageÉ   s    r�   c                  C   sd   t dƒ} t ¡ \}}| | t | ¡¡ |j ¡  t ¡ \}}dtd< | | t | ¡¡ |j ¡  d S )NéÈ   éi   úagg.path.chunksize)	Úranger'   r(   r9   r2   ÚsinÚcanvasÚdrawr	   )r>   r   r,   r!   r!   r"   Útest_chunksizeÐ   s    
r‰   ZAggc                  C   sL   t  g d¢g d¢¡ t ¡ } t j| ddd� t | ¡}|jd dksHJ ‚d S )N)r   r   r6   )r   r   r   Zjpgr‚   )r1   rK   rK   )r‚   r‚   )r'   r9   r   r   r   r   ÚopenÚinfo)r    rQ   r!   r!   r"   Útest_jpeg_dpiß   s
    
rŒ   c                  C   s^   ddl m}  t ¡ }| ƒ }| dd¡ t ¡ j|dd|id� t 	|¡}|j
d dksZJ ‚d S )Nr   )ÚPngInfoZSoftwareÚtestr/   Úpnginfo©r1   Ú
pil_kwargs)ZPIL.PngImagePluginr�   r   r   Úadd_textr'   rv   r   r   rŠ   r‹   )r�   r    r�   rQ   r!   r!   r"   Útest_pil_kwargs_pngé   s    
r“   c                  C   sV   t  ¡ } ddi}t ¡ j| d|d� t | ¡}dd„ |j ¡ D ƒ}|d dksRJ ‚d S )NÚdescriptionz
test imageZtiffr�   c                 S   s   i | ]\}}t j| j|“qS r!   )r   ZTAGS_V2Úname)Ú.0ÚkÚvr!   r!   r"   Ú
<dictcomp>ø   ó    z(test_pil_kwargs_tiff.<locals>.<dictcomp>ZImageDescription)	r   r   r'   rv   r   r   rŠ   Ztag_v2Úitems)r    r‘   rQ   Útagsr!   r!   r"   Útest_pil_kwargs_tiffó   s    
r�   c                  C   sd   t  ¡ \} }| dgdg¡ t ddg¡¡ t t¡� | j	 
¡  W d   ƒ n1 sV0    Y  d S )Nr   )r   r   )r6   r   )r'   r(   ZscatterZ	set_pathsr   r   r~   r   Ú	TypeErrorr‡   rˆ   )r   r,   r!   r!   r"   Ú(test_draw_path_collection_error_handlingü   s     rŸ   c            
      C   s–   d} d}d| }d| }t  d|| ¡}t  | ¡| }d|d d d…< tƒ }t|||ƒ}| ¡ }| d¡ | d¡ tt  	||f¡j
ƒ}	d|	_|||	|fS )	Nr5   iô  r$   é   r   r6   r   rs   )r2   Zlinspacer8   r   r
   Znew_gcZset_linewidthZset_foregroundr   ZvstackÚTZsimplify_threshold)
ÚNrK   rA   Úhr>   rB   ÚidtÚraÚgcÚpr!   r!   r"   Úchunk_limit_setup  s    

r¨   c                 C   sV   | \}}}}|  d¡ tjtdd�� | |||¡ W d   ƒ n1 sH0    Y  d S )Nú/zhatched path©Úmatch)Z	set_hatchr~   r   ÚOverflowErrorÚ	draw_path©r¨   r¥   r¦   r§   r¤   r!   r!   r"   Útest_chunksize_hatch_fail  s    
r¯   c                 C   sN   | \}}}}t jtdd��  | |||d¡ W d   ƒ n1 s@0    Y  d S )Nzfilled pathrª   )r   r   r   )r~   r   r¬   r­   r®   r!   r!   r"   Útest_chunksize_rgbFace_fail(  s    r°   c                 C   sR   | \}}}}d|_ tjtdd�� | |||¡ W d   ƒ n1 sD0    Y  d S )NFzshould_simplify is Falserª   )Zshould_simplifyr~   r   r¬   r­   r®   r!   r!   r"   Útest_chunksize_no_simplify_fail/  s    r±   c                 C   sT   | \}}}}dt d< tjtdd�� | |||¡ W d   ƒ n1 sF0    Y  d S )Nr   r„   z
Please setrª   ©r	   r~   r   r¬   r­   r®   r!   r!   r"   Útest_chunksize_zero6  s    r³   c                 C   sT   | \}}}}dt d< tjtdd�� | |||¡ W d   ƒ n1 sF0    Y  d S )Ni@B r„   úPlease reducerª   r²   r®   r!   r!   r"   Útest_chunksize_too_big_to_chunk>  s    rµ   c                 C   sT   | \}}}}dt d< tjtdd�� | |||¡ W d   ƒ n1 sF0    Y  d S )Ni�_ r„   r´   rª   r²   r®   r!   r!   r"   Útest_chunksize_toobig_chunksF  s    r¶   )2r   Únumpyr2   Znumpy.testingr   ZPILr   r   r~   Z
matplotlibr   r   r   r'   r   ru   r	   Zmatplotlib.backends.backend_aggr
   Zmatplotlib.figurer   Zmatplotlib.imager   Zmatplotlib.pathr   Zmatplotlib.testing.decoratorsr   Zmatplotlib.transformsr   r#   r-   r4   r;   r}   r�   r‰   ÚmarkÚbackendrŒ   r“   r�   rŸ   Zfixturer¨   r¯   r°   r±   r³   rµ   r¶   r!   r!   r!   r"   Ú<module>   s@   

r

	
	
	