
    P/Ph*                     ,   d dl Z d dlZd dlmZ d dlmZmZmZ d dl	Z	d dl
mZ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 Zd Z d Z!d Z" edgd          d             Z#d Z$d Z%e	j&        '                    d          d             Z(d Z)d Z*e	j&        +                     ej,        d           d          d             Z-e	j&        +                     ej,        d           d          d             Z.d Z/d Z0d  Z1dS )!    N)assert_array_almost_equal)featuresImageTiffTags)collectionspatheffectspyplot
transformsrcParams
rc_context)RendererAgg)Figure)imread)Path)image_comparison)IdentityTransformc                     t          ddg          } |                     d           | j                            d           t	          j                    }|                     ||                                 d           |                    d           |                     ||                                 d           |                    d           t          t          t          |          d                   d	d
           d S )N   皙?)r   r   r         ?none)	facecolor	edgecolorr   r   r   )              ?r   r      )decimal)r   set_facecolorpatch	set_alphaioBytesIOsavefigget_facecolorseekr   tupler   )figbufs     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_agg.pytest_repeated_save_with_alphar+      s    !S

Ck"""I *,,CKK++--   " " " HHQKKKKK++--   " " " HHQKKKeF3KK$5664&') ) ) ) ) )    c            
      8   t          j                    } t          j                    \  }}t	          j        t          ddgddgddgddgddgg          g          }|                    |           |                    dd           t          j	        |            d S )Ni   
   gMbP?r   )
r"   r#   pltsubplotsr   PathCollectionr   
add_artistset_xlimr$   )bufffax
collections       r*   !test_large_single_path_collectionr:   3   s    :<<D
 LNNEAr+	Qx"a2r(S"IQx@	A	ABD DJMM*KKKr,   c                     t          j        d          \  } }d}t          j        |          }|                    |           |                    ||dz  |dz             t          j                    }|                     |d           d S )Nr   i  g?g333333?pngformat)	r1   r2   nparangesemilogxfill_betweenr"   r#   r$   )r(   r8   stepsdatar)   s        r*   test_marker_with_nanrE   A   s     l1ooGCE9UDKKOOD$s(DH---
*,,CKKEK"""""r,   c                     t          j                    } t                      }|                                }t	          j        d          }|d d dxx         dz  cc<   |                    |           |                    | d           d S )N順    r<   r=   )r"   r#   r   r2   r?   onesplotr$   )r6   r(   r8   pointss       r*   test_long_pathrM   M   sy    :<<D
((C	BWWF
33Q3KKK2KKKGGFOOOKKUK#####r,   zagg_filter.pngT)remove_textc                  
   d d"fd	 G d d          }  G d d|            G fdd	|            G fd
d|           }t          j                    \  }}|                    g dg dddddddd	  	        \  }|                    g dg dddddddd	  	        \  } |d          }||fD ]}|                                }|                                }	|                    ||	          \  }
|
                    |           t          j        |                                |ddd          }|
	                    |           |

                    |                                dz
             |
                    |           |
                    d           |                    dd            |                    dd            |j                            d!           |j                            d!           d S )#Nc                 $   t           j        d| d         z  | |dd         z
  | d| d         z  | d| d         z
  f         }t          j        |          }t          j        ||                                z  |d          }||dz
  | dz            S )NrH   r   r   rI   same)mode)r?   r_hanningconvolvesum)x
window_lenswys        r*   smooth1dz!test_agg_filter.<locals>.smooth1dY   s    EadFQz!B''AaeGaJ;r8I6J,JJLJz""K!%%''	16222Azk!m+,,r,   r   c                     t          t          |          d          dz  dz   }t          j        d| |          } t          j        d| |          } | S )Nr   rH   r   r   )maxintr?   apply_along_axis)AsigmarX   r\   s      r*   smooth2dz!test_agg_filter.<locals>.smooth2da   sS    UQ''!+a/
!Q
;;!Q
;;r,   c                        e Zd Zd Zd Zd ZdS )#test_agg_filter.<locals>.BaseFilterc                     dS )Nr    selfdpis     r*   get_padz+test_agg_filter.<locals>.BaseFilter.get_padi   s    1r,   c                      t          d          )Nz"Should be overridden by subclasses)NotImplementedError)ri   
padded_srcrj   s      r*   process_imagez1test_agg_filter.<locals>.BaseFilter.process_imagel   s    %&JKKKr,   c                     |                      |          }t          j        |||f||fdgd          }|                     ||          }|| | fS )Nr   constant)rk   r?   padro   )ri   imrj   rr   rn   	tgt_images         r*   __call__z,test_agg_filter.<locals>.BaseFilter.__call__o   s`    ,,s##Cc3Z#sV$D *, ,J**:s;;IsdSD((r,   N)__name__
__module____qualname__rk   ro   ru   rg   r,   r*   
BaseFilterre   g   sD        	 	 		L 	L 	L	) 	) 	) 	) 	)r,   ry   c                   "    e Zd ZddZd Zd ZdS )%test_agg_filter.<locals>.OffsetFilterr   c                     || _         d S N)offsets)ri   r~   s     r*   __init__z.test_agg_filter.<locals>.OffsetFilter.__init__x   s    "DLLLr,   c                 P    t          t          | j                  dz  |z            S )NH   )r_   r^   r~   rh   s     r*   rk   z-test_agg_filter.<locals>.OffsetFilter.get_pad{   s$    s4<((2-3444r,   c                     | j         \  }}t          j        |t          |dz  |z            d          }t          j        |t          |dz  |z             d          }|S )Nr   r   )axisr   )r~   r?   rollr_   )ri   rn   rj   oxoya1a2s          r*   ro   z3test_agg_filter.<locals>.OffsetFilter.process_image~   sa    \FBSb3%7%7a@@@Bc"r'C-000q999BIr,   N)r   rv   rw   rx   r   rk   ro   rg   r,   r*   OffsetFilterr{   v   sF        	# 	# 	# 	#	5 	5 	5	 	 	 	 	r,   r   c                   ,    e Zd ZdZddZd Z fdZdS )	'test_agg_filter.<locals>.GaussianFilterzSimple Gaussian filter.      ?r   r   r   c                 0    || _         || _        || _        d S r}   )rb   alphacolor)ri   rb   r   r   s       r*   r   z0test_agg_filter.<locals>.GaussianFilter.__init__   s    DJDJDJJJr,   c                 <    t          | j        dz  dz  |z            S Nr   r   )r_   rb   rh   s     r*   rk   z/test_agg_filter.<locals>.GaussianFilter.get_pad   s     tz!|b(3.///r,   c                     t          j        |          }| j        |d d d d d df<    |d d d d df         | j        z  | j        dz  |z            |d d d d df<   |S r   )r?   
empty_liker   r   rb   )ri   rn   rj   rt   rc   s       r*   ro   z5test_agg_filter.<locals>.GaussianFilter.process_image   s    j11I"&*IaaaBQBh!)*QQQ1W*=
*J*.*r/C*?"A "AIaaaAgr,   N)r   r   )rv   rw   rx   __doc__r   rk   ro   )rc   s   r*   GaussianFilterr      sW        %%	 	 	 	
	0 	0 	0	 	 	 	 	 	 	r,   r   c                   *    e Zd Zd fd	Zd Zd ZdS )	)test_agg_filter.<locals>.DropShadowFilter333333?r   r   c                 L     |||          | _          |          | _        d S r}   )gauss_filteroffset_filter)ri   rb   r   r   r~   r   r   s        r*   r   z2test_agg_filter.<locals>.DropShadowFilter.__init__   s1     .ueU C CD!-g!6!6Dr,   c                     t          | j                            |          | j                            |                    S r}   )r^   r   rk   r   rh   s     r*   rk   z1test_agg_filter.<locals>.DropShadowFilter.get_pad   s;    t(0055)11#668 8 8r,   c                 r    | j                             ||          }| j                            ||          }|S r}   )r   ro   r   )ri   rn   rj   t1t2s        r*   ro   z7test_agg_filter.<locals>.DropShadowFilter.process_image   s7    "00SAAB#11"c::BIr,   N)r   r   r   r   )r   r   s   r*   DropShadowFilterr      sV        	7 	7 	7 	7 	7 	7 	7	8 	8 	8	 	 	 	 	r,   r   )皙?r   ?)r   r   r   zbo-brZ   r.   r/   zLine 1)mecmfclwmewmslabel)r   g?gffffff?zro-r   g      @g      rL   )rW   r[   unitsr   Tr   r   F)r   )r1   r2   rK   	get_xdata	get_ydataupdate_frommtransformsoffset_copyget_transformset_transform
set_zorder
get_zorderset_agg_filterset_rasterizedr5   set_ylimxaxisset_visibleyaxis)ry   r   r(   r8   line1line2gausslinexxyyshadow	transformr   r   r\   rc   s               @@@@r*   test_agg_filterr   W   s   - - -     ) ) ) ) ) ) ) )    z            $       :    lnnGC WW___ooou#!r  K KFEWW___ooou#!r  K KFE QE $ $ ^^^^''"b//4     +  #HF F F	Y''' 	$//++c1222e$$$d####KKBKKBHHr,   c                      t          j        d          } t          j                    }t	          j        t                    5  |                     |           d d d            d S # 1 swxY w Y   d S )N)i,  i   )figsize)r1   figurer"   r#   pytestraises
ValueErrorr$   )r(   r6   s     r*   test_too_large_imager      s    
*\
*
*
*C:<<D	z	"	"  D                 s   A%%A),A)c                     t          d          } t          j                    \  }}|                    | t	          j        |                      |j                                         t          j                    \  }}dt          d<   |                    | t	          j        |                      |j                                         d S )N   i   agg.path.chunksize)	ranger1   r2   rK   r?   sincanvasdrawr   )rW   r(   r8   s      r*   test_chunksizer      s    c

A lnnGCGGArvayyJOO lnnGC%(H!"GGArvayyJOOr,   Aggc                      t          j        g dg d           t          j                    } t          j        | dd           t          j        |           }|j        d         dk    sJ d S )Nr   r   rH   r   r   r   jpgr   )r>   rj   rj   )r   r   )r1   rK   r"   r#   r$   r   openinfor)   rs   s     r*   test_jpeg_dpir      sj     HYYY			"""
*,,CKEs++++	CB75>Z''''''r,   c                     ddl m}  t          j                    } |             }|                    dd           t          j                                        |dd|i           t          j	        |          }|j
        d         dk    sJ d S )Nr   )PngInfoSoftwaretestr<   pnginfor>   
pil_kwargs)PIL.PngImagePluginr   r"   r#   add_textr1   r   r$   r   r   r   )r   r)   r   rs   s       r*   test_pil_kwargs_pngr      s    ******
*,,CgiiGZ(((JLLU	77KLLL	CB7:&((((((r,   c                     t          j                    } ddi}t          j                                        | d|           t          j        |           }d |j                                        D             }|d         dk    sJ d S )Ndescriptionz
test imagetiffr   c                 D    i | ]\  }}t           j        |         j        |S rg   )r   TAGS_V2name).0kvs      r*   
<dictcomp>z(test_pil_kwargs_tiff.<locals>.<dictcomp>   s)    FFFDAqHQ$aFFFr,   ImageDescription)	r"   r#   r1   r   r$   r   r   tag_v2items)r)   r   rs   tagss       r*   test_pil_kwargs_tiffr      s    
*,,C.JJLLV
CCC	CBFFBIOO4E4EFFFD"#|333333r,   webpzWebP support not available)reasonc                     t          j        g dg d           t          j                    } ddi}t          j        | d|           t          |          dk    sJ t          j                    }ddi}t          j        |d|           t          |          dk    sJ |                                j        |                                 j        k    sJ d S )Nr   r   qualityr   r   r   d   )r1   rK   r"   r#   r$   len	getbuffernbytes)	buf_smallpil_kwargs_low	buf_largepil_kwargs_highs       r*   test_pil_kwargs_webpr     s    HYYY			"""
I^NK	&^DDDD~!####
I #&OK	&_EEEE1$$$$  ')*=*=*?*?*FFFFFFFr,   c                      t          j        g dg d           t          j                    } t          j        | dd           t          j        |           }|j        dk    sJ d S )Nr   r   r   T)r>   transparentRGBA)r1   rK   r"   r#   r$   r   r   rR   r   s     r*   test_webp_alphar	  
  sd    HYYY			"""
*,,CKF5555	CB7fr,   c                  <   t          j                    \  } }|                    dgdg                              t	          ddg                     t          j        t                    5  | j        	                                 d d d            d S # 1 swxY w Y   d S )Nr   )r   r   )rH   r   )
r1   r2   scatter	set_pathsr   r   r   	TypeErrorr   r   )r(   r8   s     r*   (test_draw_path_collection_error_handlingr    s    lnnGCJJsQC""4(8#9#9:::	y	!	!  
                 s   *BBBc                     d} d}d|z  }d|z  }t          j        d||           }t          j        |           |z  }d|d d d<   t          t          j        ||f          j                  }d|_        t          |||          }|                                }|	                    d           |
                    d           |                    d	           t          j        t          d
          5  |                    ||t!                                 d d d            n# 1 swxY w Y   |                    d            t          j        t          d          5  |                    ||t!                      d           d d d            n# 1 swxY w Y   t#          ddi          5  t          j        t          d          5  |                    ||t!                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t#          ddi          5  t          j        t          d          5  |                    ||t!                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t#          ddi          5  t          j        t          d          5  |                    ||t!                                 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d|_        t          j        t          d          5  |                    ||t!                                 d d d            d S # 1 swxY w Y   d S )NrG   i  r.      r   rH   r   r   /zcannot split hatched path)matchzcannot split filled path)r   r   r   r   z
Please seti@B zPlease reducei_ Fzshould_simplify is False)r?   linspacerJ   r   vstackTsimplify_thresholdr   new_gcset_linewidthset_foreground	set_hatchr   r   OverflowError	draw_pathr   r   should_simplify)	Nrj   rZ   hrW   r[   pathragcs	            r*   test_chunksize_failsr#    sp    	A
C	#A	#A 	Aq!A


QAAcccF	1a&!!#$$DD 
Q3		B	BQcLL	},G	H	H	H 4 4
R0223334 4 4 4 4 4 4 4 4 4 4 4 4 4 4LL	},F	G	G	G ? ?
R022I>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
)1-	.	. 8 8]==== 	8 	8LLT#4#6#6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 
)95	6	6 8 8]=@@@ 	8 	8LLT#4#6#6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8
 
)62	3	3 8 8]=@@@ 	8 	8LLT#4#6#6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 !D	},F	G	G	G 4 4
R0223334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   2$D""D&)D&%FFF*H$G6*H6G:	:H=G:	>HHH)J$I5)J5I9	9J<I9	=JJJ(L$K4(L4K8	8L;K8	<LLL8$M))M-0M-c                      t          j                    } |                     d                              g dg dt	          j        d          g           | j                                         d S )N3d)
projectionr   r   )	linewidth)path_effects)r1   r   add_subplotr  r   Stroker   r   )r(   s    r*   test_non_tuple_rgbafacer+  O  ss    
*,,COOtO$$,,		999K,>,K,K,K+L - N N NJOOr,   )2r"   numpyr?   numpy.testingr   PILr   r   r   r   
matplotlibr   r   r	   r1   r
   r   r   r   matplotlib.backends.backend_aggr   matplotlib.figurer   matplotlib.imager   matplotlib.pathr   matplotlib.testing.decoratorsr   matplotlib.transformsr   r+   r:   rE   rM   r   r   r   markbackendr   r   r   skipifcheckr  r	  r  r#  r+  rg   r,   r*   <module>r:     s   				     3 3 3 3 3 3 ) ) ) ) ) ) ) ) ) )                 8 7 7 7 7 7 $ $ $ $ $ $ # # # # # #             : : : : : : 3 3 3 3 3 3) ) )>  	# 	# 	#$ $ $ #$$777n  n  87n b     U( ( () ) )4 4 4 v...7STT
G 
G UT
G v...7STT  UT  24 24 24j    r,   