
    ^j1                        d dl Z 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#d Z$ edgdd      d        Z%d Z&d Z'e
jP                  jS                  d      d        Z*d Z+d Z, e d      d        Z- e d      d        Z.d Z/d  Z0 e d      d!        Z1 e d      d"        Z2d# Z3d$ Z4d% Z5d& Z6y)'    N)assert_array_almost_equal)featuresImageTiffTags)collectionspatheffectspyplot
transformsrcParams
rc_context)RendererAgg)Figure)imread)Path)image_comparison)IdentityTransformc                    t        j                         5  t        j                  d       t        j                  | j                               }d d d        t        j                  j                   |  d      S # 1 sw Y   .xY w)Nignorez support not available)reason)	warningscatch_warningssimplefilterr   checklowerpytestmarkskipif)name	availables     d/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/matplotlib/tests/test_agg.pyrequire_pillow_featurer!      sk    		 	 	" 1h'NN4::<0	1 ;;)mtf<R4STT1 1s   9A;;Bc                     t        ddg      } | j                  d       | j                  j                  d       t	        j
                         }| j                  || j                         d       |j                  d       | j                  || j                         d       |j                  d       t        t        t        |      d         d	d
       y )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     r    test_repeated_save_with_alphar9      s     !S
Ck"II **,CKK++-   " HHQKKK++-   " HHQKeF3K$564&')    c            
      &   t        j                         } t        j                         \  }}t	        j
                  t        ddgddgddgddgddgg      g      }|j                  |       |j                  dd       t        j                  |        y )Ni   
   gMbP?r#   )
r1   r2   pltsubplotsr   PathCollectionr   
add_artistset_xlimr3   )bufffax
collections       r    !test_large_single_path_collectionrH   ;   s    ::<D
 LLNEAr++	Qx"a2r(S"IQx@	ABDJMM*KKKKr:   c                     t        j                  d      \  } }d}t        j                  |      }|j	                  |       |j                  ||dz  |dz         t        j                         }| j                  |d       y )Nr#   i  g?g333333?pngformat)	r?   r@   nparangesemilogxfill_betweenr1   r2   r3   )r7   rF   stepsdatar8   s        r    test_marker_with_nanrS   I   sg     ll1oGCE99UDKKOOD$s(DH-
**,CKKEK"r:   c                      t        j                         } t               }|j                         }t	        j
                  d      }|d d dxx   dz  cc<   |j                  |       |j                  | d       y )N順    rJ   rK   )r1   r2   r   r@   rM   onesplotr3   )rD   r7   rF   pointss       r    test_long_pathr[   U   sZ    ::<D
(C	BWWWF
3Q3K2KGGFOKKUK#r:   zagg_filter.pngT_classic_test)remove_textstylec                     d d"fd	 G d d      }  G d d|        G fdd	|        G fd
d|       }t        j                         \  }}|j                  g dg dddddddd	      \  }|j                  g dg dddddddd	      \  } |d      }||fD ]  }|j                         }|j	                         }	|j                  ||	      \  }
|
j                  |       t        j                  |j                         |ddd      }|
j                  |       |
j                  |j                         dz
         |
j                  |       |
j                  d        |j                  dd        |j                  dd        |j                   j#                  d!       |j$                  j#                  d!       y )#Nc                     t         j                  d| d   z  | |dd   z
  | d| d   z  | d| d   z
  f   }t        j                  |      }t        j                  ||j	                         z  |d      }||dz
  | dz    S )NrV   r   r#   rW   same)mode)rM   r_hanningconvolvesum)x
window_lenswys        r    smooth1dz!test_agg_filter.<locals>.smooth1da   s    EEadFQz!B''AaeGaJ;r8I6J,JJLJJz"KK!%%'	162Azk!m,,r:   r,   c                     t        t        |      d      dz  dz   }t        j                  d| |      } t        j                  d| |      } | S )Nr,   rV   r#   r   )maxintrM   apply_along_axis)Asigmarh   rl   s      r    smooth2dz!test_agg_filter.<locals>.smooth2di   sN    UQ'!+a/
!Q
;!Q
;r:   c                       e Zd Zd Zd Zd Zy)#test_agg_filter.<locals>.BaseFilterc                      y)Nr    selfdpis     r    get_padz+test_agg_filter.<locals>.BaseFilter.get_padq   s    r:   c                     t        d      )Nz"Should be overridden by subclasses)NotImplementedError)ry   
padded_srcrz   s      r    process_imagez1test_agg_filter.<locals>.BaseFilter.process_imaget   s    %&JKKr:   c                     | j                  |      }t        j                  |||f||fdgd      }| j                  ||      }|| | fS )Nr)   constant)r{   rM   padr   )ry   imrz   r   r~   	tgt_images         r    __call__z,test_agg_filter.<locals>.BaseFilter.__call__w   sW    ,,s#Cc3Z#sV$D *,J**:s;IsdSD((r:   N)__name__
__module____qualname__r{   r   r   rw   r:   r    
BaseFilterru   o   s    		L	)r:   r   c                        e Zd ZddZd Zd Zy)%test_agg_filter.<locals>.OffsetFilterc                     || _         y N)offsets)ry   r   s     r    __init__z.test_agg_filter.<locals>.OffsetFilter.__init__   s	    "DLr:   c                 J    t        t        | j                        dz  |z        S )NH   )ro   rn   r   rx   s     r    r{   z-test_agg_filter.<locals>.OffsetFilter.get_pad   s     s4<<(2-344r:   c                     | j                   \  }}t        j                  |t        |dz  |z        d      }t        j                  |t        |dz  |z         d      }|S )Nr   r#   )axisr   )r   rM   rollro   )ry   r~   rz   oxoya1a2s          r    r   z3test_agg_filter.<locals>.OffsetFilter.process_image   sU    \\FBSb3%7a@Bc"r'C-00q9BIr:   N)r)   r   r   r   r   r{   r   rw   r:   r    OffsetFilterr   ~   s    	#	5	r:   r   c                   *    e Zd ZdZddZd Z fdZy)'test_agg_filter.<locals>.GaussianFilterzSimple Gaussian filter.c                 .    || _         || _        || _        y r   )rr   alphacolor)ry   rr   r   r   s       r    r   z0test_agg_filter.<locals>.GaussianFilter.__init__   s    DJDJDJr:   c                 >    t        | j                  dz  dz  |z        S Nr,   r   )ro   rr   rx   s     r    r{   z/test_agg_filter.<locals>.GaussianFilter.get_pad   s    tzz!|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   )rM   
empty_liker   r   rr   )ry   r~   rz   r   rs   s       r    r   z5test_agg_filter.<locals>.GaussianFilter.process_image   sk    j1I"&**IaBQBh!)*Q1W*=

*J*.**r/C*?"AIaAgr:   N)      ?r   r   r   )r   r   r   __doc__r   r{   r   )rs   s   r    GaussianFilterr      s    %	
	0	r:   r   c                   (    e Zd Zd fd	Zd Zd Zy))test_agg_filter.<locals>.DropShadowFilterc                 >     |||      | _          |      | _        y r   )gauss_filteroffset_filter)ry   rr   r   r   r   r   r   s        r    r   z2test_agg_filter.<locals>.DropShadowFilter.__init__   s!     .ueU CD!-g!6Dr:   c                 ~    t        | j                  j                  |      | j                  j                  |            S r   )rn   r   r{   r   rx   s     r    r{   z1test_agg_filter.<locals>.DropShadowFilter.get_pad   s6    t((005))11#68 8r:   c                 v    | j                   j                  ||      }| j                  j                  ||      }|S r   )r   r   r   )ry   r~   rz   t1t2s        r    r   z7test_agg_filter.<locals>.DropShadowFilter.process_image   s7    ""00SAB##11"c:BIr:   N)g333333?r   r)   r   )r   r   s   r    DropShadowFilterr      s    	7	8	r:   r   )皙?r   ?)r   r   r   zbo-brj   r<   r=   zLine 1)mecmfclwmewmslabel)r   g?gffffff?zro-r   g      @g      rZ   )rg   rk   unitsr   Tr*   r+   F)r,   )r?   r@   rY   	get_xdata	get_ydataupdate_frommtransformsoffset_copyget_transformset_transform
set_zorder
get_zorderset_agg_filterset_rasterizedrC   set_ylimxaxisset_visibleyaxis)r   r   r7   rF   line1line2gausslinexxyyshadow	transformr   r   rl   rs   s               @@@@r    test_agg_filterr   _   s   -) )z  $:  llnGC WW_ou#!r  KFEWW_ou#!r  KFE QE $ ^^^^''"b/4   ++ #HF	Y' 	$//+c12e$d##$& KKBKKBHHHHr:   c                      t        j                  d      } t        j                         }t	        j
                  t              5  | j                  |       d d d        y # 1 sw Y   y xY w)N)i,  i   )figsize)r?   figurer1   r2   r   raises
ValueErrorr3   )r7   rD   s     r    test_too_large_imager      sH    
**\
*C::<D	z	" D  s   AA(c                     t        d      } t        j                         \  }}|j                  | t	        j
                  |              |j                  j                          t        j                         \  }}dt        d<   |j                  | t	        j
                  |              |j                  j                          y )N   i   agg.path.chunksize)	ranger?   r@   rY   rM   sincanvasdrawr   )rg   r7   rF   s      r    test_chunksizer      s    c
A llnGCGGArvvayJJOO llnGC%(H!"GGArvvayJJOOr:   Aggc                      t        j                  g dg d       t        j                         } t        j                  | dd       t        j                  |       }|j                  d   dk(  sJ y )Nr   r#   rV   r   r#   r   jpgr   )rL   rz   rz   )r   r   )r?   rY   r1   r2   r3   r   openinfor8   r   s     r    test_jpeg_dpir      sP     HHY	"
**,CKKEs+	CB775>Z'''r:   c                     ddl m}  t        j                         } |        }|j	                  dd       t        j                         j                  |dd|i       t        j                  |      }|j                  d   dk(  sJ y )Nr   )PngInfoSoftwaretestrJ   pnginforL   
pil_kwargs)PIL.PngImagePluginr   r1   r2   add_textr?   r   r3   r   r   r   )r   r8   r   r   s       r    test_pil_kwargs_pngr      sk    *
**,CiGZ(JJLU	77KL	CB77:&(((r:   c                  Z   t        j                         } ddi}t        j                         j	                  | d|       t        j                  |       }|j                  j                         D ci c]#  \  }}t        j                  |   j                  |% }}}|d   dk(  sJ y c c}}w )Ndescriptionz
test imagetiffr   ImageDescription)r1   r2   r?   r   r3   r   r   tag_v2itemsr   TAGS_V2r   )r8   r   r   kvtagss         r    test_pil_kwargs_tiffr     s    
**,C.JJJLV
C	CB46IIOO4EFDAqHQ$$a'FDF"#|333 Gs   1(B'WebPc                     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                  | j                         j                  kD  sJ y )Nr   r   qualityr#   webpr   d   r?   rY   r1   r2   r3   len	getbuffernbytes	buf_smallpil_kwargs_low	buf_largepil_kwargs_highs       r    test_pil_kwargs_webpr        HHY	"

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

I #&OKK	&_E1$$$ '')*=*=*?*F*FFFFr:   AVIFc                     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                  | j                         j                  kD  sJ y )Nr   r   r  r#   avifr   r  r  r  s       r    test_pil_kwargs_avifr    r  r:   c                  >   t        j                  g dg d       t        j                         } t        j                  | dd       t        j                  |       }|j                  dk(  sJ |j                  d   t        |j                  j                        k\  sJ y )Nr   r   gifFrL   transparentPtransparencyr?   rY   r1   r2   r3   r   r   rb   r   r	  palettecolorsr   s     r    test_gif_no_alphar      sn    HHY	"
**,CKKEu5	CB77c>>77>"c"***;*;&<<<<r:   c                  >   t        j                  g dg d       t        j                         } t        j                  | dd       t        j                  |       }|j                  dk(  sJ |j                  d   t        |j                  j                        k  sJ y )Nr   r   r  Tr  r  r  r  r   s     r    test_gif_alphar"  )  sn    HHY	"
**,CKKEt4	CB77c>>77>"S):):%;;;;r:   c                      t        j                  g dg d       t        j                         } t        j                  | dd       t        j                  |       }|j                  dk(  sJ y )Nr   r   r  Tr  RGBAr?   rY   r1   r2   r3   r   r   rb   r   s     r    test_webp_alphar&  2  J    HHY	"
**,CKKF5	CB77fr:   c                      t        j                  g dg d       t        j                         } t        j                  | dd       t        j                  |       }|j                  dk(  sJ y )Nr   r   r  Tr  r$  r%  r   s     r    test_avif_alphar)  ;  r'  r:   c                     t        j                         \  } }|j                  dgdg      j                  t	        ddg             t        j                  t              5  | j                  j                          d d d        y # 1 sw Y   y xY w)Nr#   )r   r#   )rV   r,   )
r?   r@   scatter	set_pathsr   r   r   	TypeErrorr   r   )r7   rF   s     r    (test_draw_path_collection_error_handlingr.  D  sg    llnGCJJsQC""4(8#9:	y	! 

  s   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        |||      }|j                         }	|	j                  d       |	j                  d       |	j                  d	       t        j                  t        d
      5  |j                  |	|t!                      d d d        |	j                  d        t        j                  t        d      5  |j                  |	|t!               d       d d d        t#        ddi      5  t        j                  t        d      5  |j                  |	|t!                      d d d        d d d        t#        ddi      5  t        j                  t        d      5  |j                  |	|t!                      d d d        d d d        t#        ddi      5  t        j                  t        d      5  |j                  |	|t!                      d d d        d d d        d|_        t        j                  t        d      5  |j                  |	|t!                      d d d        y # 1 sw Y   xY w# 1 sw Y   ]xY w# 1 sw Y   xY w# 1 sw Y   "xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrU   i  r<      r   rV   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)rM   linspacerX   r   vstackTsimplify_thresholdr   new_gcset_linewidthset_foreground	set_hatchr   r   OverflowError	draw_pathr   r   should_simplify)
high_memoryNrz   rj   hrg   rk   pathragcs
             r    test_chunksize_failsrD  K  s    	A
C	#A	#A 	Aq!A

QAAccF		1a&!##$DD 
Q3	B	BQcLL	},G	H 4
R0234LL	},F	G ?
R02I>? 
)1-	. 8]]== 	8LLT#4#67	88
 
)95	6 8]]=@ 	8LLT#4#67	88
 
)62	3 8]]=@ 	8LLT#4#67	88 !D	},F	G 4
R0234 4/4 4? ?
	8 	88 8	8 	88 8	8 	88 8
4 4s   "J2J*$K J7K9KK1KK5*K)K58LJ'*J47K	<KKK	KK&)K2	.K55K>L
c                      t        j                         } | j                  d      j                  g dg dt	        j
                  d      g       | j                  j                          y )N3d)
projectionr   r   )	linewidth)path_effects)r?   r   add_subplotr+  r   Stroker   r   r7   s    r    test_non_tuple_rgbafacerM    sO    
**,COOtO$,,9K,>,>,K+L - NJJOOr:   c                      t        j                  dd      } | j                  j                  dk  sJ | j                  j                          | j                  j                         j                  dk(  sJ y )N)r#   g=
ףp= @r  )r   rz      )rO  r  r   )r?   r   bboxheightr   r   buffer_rgbashaperL  s    r    -test_rendered_height_floating_point_precisionrT    sW    
**YC
0C88??S   JJOO::!!#))]:::r:   )7r1   r   numpyrM   numpy.testingr   PILr   r   r   r   
matplotlibr   r   r	   r?   r
   r   r   r   matplotlib.backends.backend_aggr   matplotlib.figurer   matplotlib.imager   matplotlib.pathr   matplotlib.testing.decoratorsr   matplotlib.transformsr   r!   r9   rH   rS   r[   r   r   r   r   backendr   r   r  r  r  r   r"  r&  r)  r.  rD  rM  rT  rw   r:   r    <module>r`     s5   	   3 ) )   8 $ #   : 3U)>	#$ #$$oNn  On b U( ()4 
G  
G 
G  
G=<      24j;r:   