
    h*                        S SK r S SKrS SKJr  S SKJrJrJr  S SK	r	S SK
JrJrJrJrJrJr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S rS r S r!S r"\" S/SS9S 5       r#S r$S r%\	RL                  RO                  S5      S 5       r(S r)S r*\	RL                  RW                  \RX                  " S5      (       + SS9S 5       r-\	RL                  RW                  \RX                  " S5      (       + SS9S 5       r.S r/S r0S  r1g)!    N)assert_array_almost_equal)featuresImageTiffTags)collectionspatheffectspyplot
transformsrcParams
rc_context)RendererAgg)Figure)imread)Path)image_comparison)IdentityTransformc                     [        SS/5      n U R                  S5        U R                  R                  S5        [        R
                  " 5       nU R                  UU R                  5       SS9  UR                  S5        U R                  UU R                  5       SS9  UR                  S5        [        [        [        U5      S   5      S	S
S9  g )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     K/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_agg.pytest_repeated_save_with_alphar+      s     !S
Ck"II **,CKK++-   " HHQKKK++-   " HHQKeF3K$564&')    c            
      ,   [         R                  " 5       n [        R                  " 5       u  p[        R
                  " [        SS/SS/SS/SS/SS//5      /5      nUR                  U5        UR                  SS5        [        R                  " U 5        g )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
 LLNEA++	Qx"a2r(S"IQx@	ABDJMM*KKKKr,   c                      [         R                  " S5      u  pSn[        R                  " U5      nUR	                  U5        UR                  X3S-  US-  5        [        R                  " 5       nU R                  USS9  g )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   sc     ll1oGCE99UDKKOODs(DH-
**,CKKEK"r,   c                      [         R                  " 5       n [        5       nUR                  5       n[        R
                  " S5      nUS S S2==   S-  ss'   UR                  U5        UR                  U SS9  g )N順    r<   r=   )r"   r#   r   r2   r?   onesplotr$   )r6   r(   r8   pointss       r*   test_long_pathrM   M   sZ    ::<D
(C	BWWWF
3Q3K2KGGFOKKUK#r,   zagg_filter.pngT)remove_textc                  ~  ^^^^ S mS"U4S jjm " S S5      n  " S SU 5      m " U4S jS	U 5      m " UU4S
 jSU 5      n[         R                  " 5       u  p#UR                  / SQ/ SQSSSSSSSS9	u  nUR                  / SQ/ SQSSSSSSSS9	u  nU" S5      nXE4 H  nUR                  5       nUR	                  5       n	UR                  X5      u  n
U
R                  U5        [        R                  " UR                  5       USSSS9nU
R                  U5        U
R                  UR                  5       S-
  5        U
R                  U5        U
R                  S5        M     UR                  SS 5        UR                  SS 5        UR                   R#                  S!5        UR$                  R#                  S!5        g )#Nc                     [         R                  SU S   -  XSS2   -
  U SU S   -  U SU* S2   -
  4   n[         R                  " U5      n[         R                  " X3R	                  5       -  USS9nXAS-
  U* S-    $ )NrH   r   r   rI   same)mode)r?   r_hanningconvolvesum)x
window_lenswys        r*   smooth1d!test_agg_filter.<locals>.smooth1dY   s    EEadFQ!B''AaeGaJ;r8I6J,JJLJJz"KK%%'	162Azk!m,,r,   r   c                    > [        [        U5      S5      S-  S-   n[        R                  " TSX5      n [        R                  " TSX5      n U $ )Nr   rH   r   r   )maxintr?   apply_along_axis)AsigmarX   r\   s      r*   smooth2d!test_agg_filter.<locals>.smooth2da   sJ    UQ'!+a/
!Q;!Q;r,   c                   &    \ rS rSrS rS rS rSrg)#test_agg_filter.<locals>.BaseFilterg   c                     g)Nr    selfdpis     r*   get_pad+test_agg_filter.<locals>.BaseFilter.get_padi   s    r,   c                     [        S5      e)Nz"Should be overridden by subclasses)NotImplementedError)rl   
padded_srcrm   s      r*   process_image1test_agg_filter.<locals>.BaseFilter.process_imagel   s    %&JKKr,   c                     U R                  U5      n[        R                  " XU4X34S/S5      nU R                  XB5      nXS* U* 4$ )Nr   constant)rn   r?   padrs   )rl   imrm   rw   rr   	tgt_images         r*   __call__,test_agg_filter.<locals>.BaseFilter.__call__o   sO    ,,s#C3Z#V$D *,J**:;IdSD((r,   rj   N)__name__
__module____qualname____firstlineno__rn   rs   rz   __static_attributes__rj   r,   r*   
BaseFilterrg   g   s    		L	)r,   r   c                   *    \ rS rSrSS jrS rS rSrg)%test_agg_filter.<locals>.OffsetFilterv   c                     Xl         g Noffsets)rl   r   s     r*   __init__.test_agg_filter.<locals>.OffsetFilter.__init__x   s    "Lr,   c                 J    [        [        U R                  5      S-  U-  5      $ )NH   )r`   r_   r   rk   s     r*   rn   -test_agg_filter.<locals>.OffsetFilter.get_pad{   s     s4<<(2-344r,   c                     U R                   u  p4[        R                  " U[        US-  U-  5      SS9n[        R                  " U[        US-  U-  5      * SS9nU$ )Nr   r   )axisr   )r   r?   rollr`   )rl   rr   rm   oxoya1a2s          r*   rs   3test_agg_filter.<locals>.OffsetFilter.process_image~   sS    \\FBSb3%7a@Bc"r'C-00q9BIr,   r   N)r   r|   r}   r~   r   r   rn   rs   r   rj   r,   r*   OffsetFilterr   v   s    	#	5	r,   r   c                   6   > \ rS rSrSrSS jrS rU 4S jrSrg)	'test_agg_filter.<locals>.GaussianFilter   zSimple Gaussian filter.c                 (    Xl         X l        X0l        g r   )rc   alphacolor)rl   rc   r   r   s       r*   r   0test_agg_filter.<locals>.GaussianFilter.__init__   s    JJJr,   c                 >    [        U R                  S-  S-  U-  5      $ Nr   r   )r`   rc   rk   s     r*   rn   /test_agg_filter.<locals>.GaussianFilter.get_pad   s    tzz!|b(3.//r,   c                    > [         R                  " U5      nU R                  US S 2S S 2S S24'   T" US S 2S S 2S4   U R                  -  U R                  S-  U-  5      US S 2S S 2S4'   U$ r   )r?   
empty_liker   r   rc   )rl   rr   rm   ry   rd   s       r*   rs   5test_agg_filter.<locals>.GaussianFilter.process_image   sk    j1I"&**IaBQBh!)*Q1W*=

*J*.**r/C*?"AIaAgr,   )r   r   rc   N)      ?r   r   r   )	r|   r}   r~   r   __doc__r   rn   rs   r   )rd   s   r*   GaussianFilterr      s    %	
	0	 	r,   r   c                   4   > \ rS rSrSU U4S jjrS rS rSrg))test_agg_filter.<locals>.DropShadowFilter   c                 <   > T" XU5      U l         T" U5      U l        g r   gauss_filteroffset_filter)rl   rc   r   r   r   r   r   s        r*   r   2test_agg_filter.<locals>.DropShadowFilter.__init__   s     .uU CD!-g!6Dr,   c                 ~    [        U R                  R                  U5      U R                  R                  U5      5      $ r   )r_   r   rn   r   rk   s     r*   rn   1test_agg_filter.<locals>.DropShadowFilter.get_pad   s6    t((005))11#68 8r,   c                 r    U R                   R                  X5      nU R                  R                  X25      nU$ r   )r   rs   r   )rl   rr   rm   t1t2s        r*   rs   7test_agg_filter.<locals>.DropShadowFilter.process_image   s3    ""00AB##11":BIr,   r   N)g333333?r   r   r   )r   r   s   r*   DropShadowFilterr      s    	7 	7	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)r   r   r(   r8   line1line2gausslinexxyyshadow	transformr   r   r\   rd   s               @@@@r*   test_agg_filterr   W   s   -) )z  $ :  llnGC WW_ou#!r  KFEWW_ou#!r  KFE QE ^^^^''"/4   ++ #HF	Y' 	$//+c12e$d## & KKBKKBHHHHr,   c                      [         R                  " SS9n [        R                  " 5       n[        R
                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = f)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-c                     [        S5      n [        R                  " 5       u  pUR                  U [        R
                  " U 5      5        UR                  R                  5         [        R                  " 5       u  pS[        S'   UR                  U [        R
                  " U 5      5        UR                  R                  5         g )N   i   agg.path.chunksize)	ranger1   r2   rK   r?   sincanvasdrawr   )rW   r(   r8   s      r*   test_chunksizer      s|    c
A llnGCGGArvvayJJOO llnGC%(H!"GGArvvayJJOOr,   Aggc                      [         R                  " / SQ/ SQ5        [        R                  " 5       n [         R                  " U SSS9  [
        R                  " U 5      nUR                  S   S:X  d   eg )Nr   r   rH   r   r   r   jpgr   )r>   rm   rm   )r   r   )r1   rK   r"   r#   r$   r   openinfor)   rx   s     r*   test_jpeg_dpir      sP     HHY	"
**,CKKEs+	CB775>Z'''r,   c                     SSK Jn   [        R                  " 5       nU " 5       nUR	                  SS5        [
        R                  " 5       R                  USSU0S9  [        R                  " U5      nUR                  S   S:X  d   eg )Nr   )PngInfoSoftwaretestr<   pnginfor>   
pil_kwargs)PIL.PngImagePluginr   r"   r#   add_textr1   r   r$   r   r   r   )r   r)   r   rx   s       r*   test_pil_kwargs_pngr      sk    *
**,CiGZ(JJLU	77KL	CB77:&(((r,   c                  `   [         R                  " 5       n SS0n[        R                  " 5       R	                  U SUS9  [
        R                  " U 5      nUR                  R                  5        VVs0 s H#  u  p4[        R                  U   R                  U_M%     nnnUS   S:X  d   eg s  snnf )Ndescriptionz
test imagetiffr   ImageDescription)r"   r#   r1   r   r$   r   r   tag_v2itemsr   TAGS_V2name)r)   r   rx   kvtagss         r*   test_pil_kwargs_tiffr
     s    
**,C.JJJLV
C	CB46IIOO4EF4EDAHQ$$a'4EDF"#|333 Gs   1*B*webpzWebP support not available)reasonc                     [         R                  " / SQ/ SQ5        [        R                  " 5       n SS0n[         R                  " U SUS9  [        U5      S:X  d   e[        R                  " 5       nSS0n[         R                  " USUS9  [        U5      S:X  d   eUR                  5       R                  U R                  5       R                  :  d   eg )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    HHY	"

I^NKK	&^D~!###

I #&OKK	&_E1$$$ '')*=*=*?*F*FFFFr,   c                      [         R                  " / SQ/ SQ5        [        R                  " 5       n [         R                  " U SSS9  [
        R                  " U 5      nUR                  S:X  d   eg )Nr   r   r  T)r>   transparentRGBA)r1   rK   r"   r#   r$   r   r   rR   r   s     r*   test_webp_alphar  
  sJ    HHY	"
**,CKKF5	CB77fr,   c                  *   [         R                  " 5       u  pUR                  S/S/5      R                  [	        SS/5      5        [
        R                  " [        5         U R                  R                  5         S S S 5        g ! , (       d  f       g = f)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\    llnGCJJsQC""4(8#9:	y	!

 
"	!	!s    B
Bc                  P   Sn SnSU-  nSU-  n[         R                  " SX 5      n[         R                  " U 5      U-  nSUS S S2'   [        [         R                  " XE45      R
                  5      nSUl        [        X#U5      nUR                  5       nUR                  S5        UR                  S5        UR                  S	5        [        R                  " [        S
S9   UR                  X[!        5       5        S S S 5        UR                  S 5        [        R                  " [        SS9   UR                  X[!        5       S5        S S S 5        [#        SS05         [        R                  " [        SS9   UR                  X[!        5       5        S S S 5        S S S 5        [#        SS05         [        R                  " [        SS9   UR                  X[!        5       5        S S S 5        S S S 5        [#        SS05         [        R                  " [        SS9   UR                  X[!        5       5        S S S 5        S S S 5        SUl        [        R                  " [        SS9   UR                  X[!        5       5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       GN[= f! , (       d  f       GN#= f! , (       d  f       GN-= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)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)	Nrm   rZ   hrW   r[   pathragcs	            r*   test_chunksize_failsr5    sJ    	A
C	#A	#A 	AqA

QAAccF		1&!##$DD 
Q3	B	BQcLL	},G	H
R023 
ILL	},F	G
R02I> 
H 
)1-	.]]==LL#4#67 > 
/
 
)95	6]]=@LL#4#67 A 
7
 
)62	3]]=@LL#4#67 A 
4 !D	},F	G
R023 
H	G/ 
I	H 
H	G
 >= 
/	. A@ 
7	6 A@ 
4	3
 
H	Gs    J-JK8J/K0K$
K%K$LK57L'L
J
J,/
J>	9K
K
K!	K$$
K25
L	?L
L
L%c                      [         R                  " 5       n U R                  SS9R                  / SQ/ SQ[        R
                  " SS9/S9  U R                  R                  5         g )N3d)
projectionr   r   )	linewidth)path_effects)r1   r   add_subplotr  r   Stroker   r   )r(   s    r*   test_non_tuple_rgbafacer=  O  sO    
**,COOtO$,,9K,>,>,K+L - NJJOO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   r5  r=  rj   r,   r*   <module>rL     s    	  3 ) )   8 $ #   : 3)>	#$ #$$7n  8n b U( ()4 v..7ST
G U
G v..7ST U24jr,   