
    P/Ph81                        d dl mZ 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
mZmZmZmZ d dlmZ d dlmZ d dlmZmZ d dlmZmZ d dl
Zd dlm Z d dlmZ d dl m!Z" e	j#        $                    d	
          e	j#        %                    dddg          e	j#        %                    dddg          e	j#        %                    dddi fddddifddddifddddifddi fddddifddddifgg d          d                                                 Z&d Z'eed                         Z( ed g          d!             Z)e ed g          d"                         Z*d# Z+ed$             Z,ed%             Z-ed&             Z. ed'g          d(             Z/ ed)g          d*             Z0 ed+g          d,             Z1 edg-          d.             Z2ed/             Z3 ed0gd12          d3             Z4e	j#        %                    d4d5d6g          d7             Z5d8 Z6d9 Z7d: Z8 ed;gd<=          d>             Z9 ed?gd@=          dA             Z: edBg          dC             Z; edDgdEdFid1G          dH             Z<dI Z=dS )J    )Counter)PathN)cbookpathpatheffectsfont_manager)Figure)Ellipse)needs_ghostscriptneeds_usetex)check_figures_equalimage_comparison   )reruns	papersizeletterfigureorientationportrait	landscapezformat, use_log, rcParamspsFps.usedistillerghostscriptxpdftext.usetexTeps	ps.useafm)r   zps with distiller=ghostscriptzps with distiller=xpdfzps with usetexr   zeps afmzeps with usetex)idsc                    t           j                            |           t           j        d         dk    rS	 t          j        d           n# t           j        $ r+}t          j        t          |                     Y d }~nd }~ww xY wt           j        d         dk    rg	 t          j        d           t          j        d           n=# t           j        $ r+}t          j        t          |                     Y d }~nd }~ww xY wt          j	                    \  }}t          j                    5 }t          j                    5 }	|r|                    d           |                    ddgddg           d	}
t           j        d
         s|
dz  }
|                    |
           g }t           j        d
         r|                    t"                     t           j        d         r|                    t           j                   	 |                    || ||           |                    |	| ||           n@# t)          |          $ r+}t          j        t          |                     Y d }~nd }~ww xY w|j        rJ |	j        rJ |                                                    d          }|	                                }| dk    rt           j        d         dk    r8|dk    rd|                                vsJ nnd|                                v sJ nUt           j        d         st           j        d
         r|dk    rdnd}|dk    rd|z   nd}||v sJ n|dk    rd|vsJ nd|v sJ t3          j        dd|          }t3          j        dd|          }||                    dd          k    sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   gsr   pdftopslog      u	   Déjà vur   u    −€r   )formatr   	papertypeasciir   r   s   letterr   s   432.0s   576.0s   -dDEVICEWIDTHPOINTS=s   -sPAPERSIZEs   %%DocumentPaperSizess   (?<=
%%CreationDate: ).*    s   
   
)mplrcParamsupdate_get_executable_infoExecutableNotFoundErrorpytestskipstrpltsubplotsioStringIOBytesIO
set_yscaleplot	set_titleappendRuntimeErrorMatplotlibDeprecationWarningsavefigtupleclosedgetvalueencodelowerresubreplace)r%   use_logr+   r   r   excfigaxs_bufb_buftitleallowable_exceptionss_valb_valwidthwanteds                   `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/matplotlib/tests/test_backend_ps.pytest_savefig_to_stringiorS      s   * L!!!
|%&-77	"$T***** 	" 	" 	"KC!!!!!!!!	"	'	(F	2	2	"$T***$Y////* 	" 	" 	"KC!!!!!!!!	" lnnGC	 76% 76 	!MM%   
AA|M* 	433E
U!<& 	6 ''555<$ 	J ''(HIII	"KKf+"+  - - -KKf+"+  - - - -)** 	" 	" 	"KC!!!!!!!!	" <<  ''00  T>> |-.&88 (($EKKMM99999$55555/0 	<CL4O 	<$/;$>$>H=F(=R=R1E99- ((2%?????2e;;;;
 3S%@@3S%@@gu5555555o76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76 76s   A B!BB (C	 	D!C>>D/OB?O2H65O6I3!I.)O.I33EO5OO	OO		OO Oc                  .   t          j        dd          gt          j        d<   t	          j                    \  } }|                    g d           t          j                    5 }| 	                    |d           d d d            d S # 1 swxY w Y   d S )N   w)	linewidth
foregroundzpath.effects)r#   r$   r   r   r%   )
r   
withStroker*   r+   r2   r3   r8   r4   r6   r=   )rH   rI   r   s      rR   test_patheffectsr[   t   s    s;;;$=CL lnnGCGGIII	 %Bt$$$% % % % % % % % % % % % % % % % % %s   %B

BBc                 ^   | dz  }|                                  t          j        t          t	          |                    5  dt
          j        d<   t          j        g d           t          j	        d           t          j
        |dz  d	           d d d            d S # 1 swxY w Y   d S )
Nzshort-1)tempdirTr   )r#   r$   r   rU   z\textbf{time} (s)ztex_demo.epsr   rY   )mkdirr   _setattr_cmtempfiler1   r*   r+   r2   r8   xlabelr=   )tmp_pathbase_tempdirs     rR   test_tilde_in_tempfilenamerd   }   s    i'L 
	8S->->	?	?	? @ @&*]#
'(((L>1$????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AB""B&)B&z	empty.epsc                      t          j                    \  } }|                                 |                    ddgdd           |                    ddddd           d S )Nr   r#   rcoloralpha      ?foo)r2   r3   set_axis_offr8   textrH   rI   s     rR   test_transparencyro      s_    lnnGCOOGGQF#QG'''GGBEAG.....r(   c                      dt           j        d<   t          j                    \  } }|                                 |                    ddgdd           |                    ddddd           d S )	NTr   r   r#   rf   rg   rj   rk   )r*   r+   r2   r3   rl   r8   rm   rn   s     rR   test_transparency_texrq      sm     #'CLlnnGCOOGGQF#QG'''GGBEAG.....r(   c            	      |   t          j                    \  } }t          j                    5 }|                     |d           |                                }d d d            n# 1 swxY w Y   t          j        d|t          j                  }|sJ t          j        d|t          j                  }|sJ t          dd          D ]v}d|
                    |          vsJ t          |
                    |                    t          j        t          |
                    |                    d          k    sJ wd S )Nr   rY   s$   ^%%BoundingBox: (.+) (.+) (.+) (.+)$s)   ^%%HiResBoundingBox: (.+) (.+) (.+) (.+)$r#         .)r2   r3   r4   r6   r=   r@   rC   search	MULTILINErangegroupintr/   approxfloat)rH   rI   bufbbhibbis         rR   	test_bboxr      s[   lnnGC	 C&&&llnn               
:C	N	NBIII9A3\# #DKKK1a[[ J J288A;;&&&&288A;;6=tzz!}}1E1Eq#I#IIIIIIJ Js   ,A""A&)A&c                      dt           j        d<   t          j        d           t	          j        t                    5  t          j        t          j	                    d           ddd           dS # 1 swxY w Y   dS )z"Test failing latex subprocess callTr   z$22_2_2$r   rY   N)
r*   r+   r2   ra   r/   raisesr;   r=   r4   r6    r(   rR   test_failing_latexr      s     #'CLJz	|	$	$ / /BJLL..../ / / / / / / / / / / / / / / / / /s   (A22A69A6c                     |                      d           t          j        dddd           t          j        dddd           t          j        t	          j                    d	           | j        \  }d
|                                v sJ d S )NWARNING皙?rk   T)usetex皙?barr   rY   zas if usetex=False)	set_levelr2   figtextr=   r4   r6   records
getMessage)caplogrecords     rR   test_partial_usetexr      s    
YKBd++++KBd++++K
T****nGF6#4#4#6#6666666r(   c                     t           j                            ddd           t          j        ddd           t          j        t          j                    d           d S )NTz$\usepackage{color,graphicx,textcomp})r   ztext.latex.preamblerj   rk   r   rY   )r*   r+   r,   r2   r   r=   r4   r6   )r   s    rR   test_usetex_preambler      sc    LF    
 KBK
T******r(   z
useafm.epsc                      dt           j        d<   t          j                    \  } }|                                 |                    d           |                    ddd           d S )NTr   rj   qk)r*   r+   r2   r3   rl   axhlinerm   rn   s     rR   test_useafmr      sX     $CLlnnGCOOJJrNNNGGBDr(   z	type3.epsc                  2    t          j        ddd           d S )Nrj   zI/J)r2   r   r   r(   rR   test_type3_fontr      s    KBr(   zcoloredhatcheszerolw.epsc                  J   t          j                    } |                     t          ddddddd                     |                     t          dd	d	d
ddd                     |                     t          ddddddd                     |                                  d S )N)r   r   r#   /nonerf   r   )hatch	facecolor	edgecolorrW   )rj   rj   rj   +gr   )r#   r#   g333333?g?\b)r2   gca	add_patchr
   rl   )rI   s    rR   !test_colored_hatch_zero_linewidthr      s    	BLLASF#&!5 5 5 6 6 6LLS#SF#&#7 7 7 8 8 8LLc#&!5 5 5 6 6 6OOr(   )
extensionsc                     |                                  }|                    ddd| j        d           |                                  d S )Nr   helloT)	transformclip_on)add_subplotrm   transFigure)fig_testfig_refrI   s      rR   test_text_clipr      sJ    					BGGAq'X%94GHHHr(   c                     t          j                    }|                    ddd           | dz  }|                    |           t          j        j                            |d           d S )Nrj   defztest.epsF)cache)r2   r   rm   r=   r*   testingcompareconvert)rb   rH   outs      rR   test_d_glyphr      se     *,,CHHRU
Z
CKKK511111r(   ztype42_without_prep.epsmpl20)stylec                  n    dt           j        d<   dt           j        d<   t          j        ddd           d S )N*   ps.fonttypestixzmathtext.fontsetrj   zMass $m$)r*   r+   r2   r   r   r(   rR   test_type42_font_without_prepr      s7     #%CL'-CL#$KS*%%%%%r(   fonttype342c                 j   | t           j        d<   t          j                    \  }}|                    ddd           t          j                    }|                    |d           dt          |  d	          z   d
z   }t          j
        ||                                t          j                  sJ d S )Nr   g      ?rj   z&Forty-two is the answer to everything!r   rY   s
   /FontType zutf-8)encodings    def)r*   r+   r2   r3   rm   r4   r6   r=   bytesrC   ru   r@   rv   )r   rH   rI   r|   tests        rR   test_fonttyper   	  s    "*CLlnnGCGGD#?@@@
*,,CKKDK!!!5HAAAAGKD9T3<<>>2<8888888r(   c                      t          j                    \  } }|                    ddgd           t          j                    }|                     |d           |                                dk    sJ dS )z-Test that dashed lines do not break PS outputr   r#   z--)	linestyler   rY   N)r2   r3   r8   r4   r6   r=   tell)rH   rI   r|   s      rR   test_linedashr     se    lnnGCGGQFdG###
*,,CKKDK!!!88::>>>>>>r(   c                      t                      } |                     ddd           t          j                    }|                     |d           |                     |d           d S )Nrj   z
foo

r   rY   r   )r	   rm   r4   r6   r=   )r   r|   s     rR   test_empty_liner   $  s^    XXF
KKS+&&&
*,,C
NN3uN%%%
NN3tN$$$$$r(   c                  *   t                      } |                     ddt          d                    }|j        D ]0}|                    g g            |                    ddg           1|                     d           t          j                    }| 	                    |d	
           |
                    d           d |                                D             }t          t          |                                                    dk    sJ d S )NrU   polar)
projection)
subplot_kw)xticksyticksr#   r$   zhello, worldr   rY   r   c                 n    g | ]2}|                     d           |                    d          d         3S )r    r   )
startswith	partition).0lns     rR   
<listcomp>z0test_no_duplicate_definition.<locals>.<listcomp>:  sJ     " " "mmC  "2<<Q " " "r(   )r	   r3   dictflatsetr8   suptitler4   r5   r=   seek	readlinesmaxr   values)rH   axsrI   r|   wdss        rR   test_no_duplicate_definitionr   -  s   
((C
,,q!(@(@(@,
A
ACh  
b$$$
ALL   
+--CKKEK"""HHQKKK" "" " "C ws||""$$%%******r(   zmulti_font_type3.epsgRQ?)tolc                  `   t          j        dg          } t          t          j        |                     j        dk    rt          j        d           t          j        dddgd           t          j        d	d
           t          j	                    }|
                    ddd           d S )NWenQuanYi Zen Heifamilywqy-zenhei.ttcFont may be missingfontDejaVu Sans   r   sizer   r   r   333333?ffffff?"   There are 几个汉字 in between!fmFontPropertiesr   findfontnamer/   r0   r2   rcr   rm   fprH   s     rR   test_multi_font_type3r   A  s    		#6"7	8	8	8BBKOO!%555)***F6=*=>RHHHHF4!
*,,CHHT5>?????r(   zmulti_font_type42.epsg?c                  `   t          j        dg          } t          t          j        |                     j        dk    rt          j        d           t          j        dddgd           t          j        d	d
           t          j	                    }|
                    ddd           d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s     rR   test_multi_font_type42r   N  s    		#6"7	8	8	8BBKOO!%555)***F6=*=>RHHHHF4"
*,,CHHT5>?????r(   zscatter.epsc                  t   t           j                            d          } |                     ddd          }|                     ddd          }|                     ddd          }t	          j                    \  }}|                    |||g dd	           |                                 d
 t          dd          D             }|                     ddd          	                    dd          }ddg}t          j        ||dd|          }|                    |           |                    dd           d S )Ni!N,r   r#   
      d   )g?r   r   <)r   markerc                 L    g | ]!}t           j                            |          "S r   )r   r   unit_regular_polygon)r   r   s     rR   r   z(test_path_collection.<locals>.<listcomp>d  s(    DDD1TY++A..DDDr(   r            r$   g{Gz?g{Gz?yellow)zorder
facecolorsoffsets)nprandomdefault_rnguniformr2   r3   scatterrl   rw   reshapemcollectionsPathCollectionadd_collectionset_xlim)	rngxvalsyvalssizesrH   rI   pathsr  pcs	            rR   test_path_collectionr!  [  s1   
)


)
)CKK1b!!EKK1b!!EKKC$$ElnnGCJJueUooocJJJJOODDaDDDEkk!S"%%--b!44G4LE		$UE"08'
K 
K 
KBbKK1r(   zcolorbar_shift.epsbbox_inchestight)savefig_kwargr   c                     t          j        g d          }t          j        g d|j                  }t	          j        ddgddgddg||           t	          j                     d S )N)rf   r   r   )r  g      rj   r#   r   r#   )ccmapnorm)mcolorsListedColormapBoundaryNormNr2   r  colorbar)rb   r'  r(  s      rR   test_colorbar_shiftr.  m  si     !///22D 2 2 2DF;;DKAA1a&t$????LNNNNNr(   c                  j   t          j                    } t          j        t          d          5  |                     t          j                    dd           d d d            n# 1 swxY w Y   t          j        t          d          5  dt          j	        d<   d d d            d S # 1 swxY w Y   d S )Nz'auto' is not a valid value)matchr   auto)r%   r&   zps.papersize)
r2   r   r/   r   
ValueErrorr=   r4   r6   r*   r+   )rH   s    rR   test_auto_papersize_removalr3  v  s/   
*,,C	z)F	G	G	G B BBJLL&AAAB B B B B B B B B B B B B B B 
z)F	G	G	G . .'-^$. . . . . . . . . . . . . . . . . .s#   *A%%A),A)B((B,/B,)>collectionsr   pathlibr   r4   rC   r`   numpyr  r/   
matplotlibr   r   r   r   r   matplotlib.figurer	   matplotlib.patchesr
   matplotlib.testing._markersr   r   matplotlib.testing.decoratorsr   r   r*   matplotlib.collectionsr  matplotlib.colorscolorsr)  matplotlib.pyplotpyplotr2   markflakyparametrizerS   r[   rd   ro   rq   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r!  r.  r3  r   r(   rR   <module>rD     sZ               				 				       C C C C C C C C C C C C $ $ $ $ $ $ & & & & & & G G G G G G G G O O O O O O O O     - - - - - - # # # # # #       !x&:;;[(ABB4	5"	5$m45	5$f-.	5=$'(
E2
D;%&
EM4()7     "G6 G6#  CB <; (G6T% % % @ @  @" ;-  / / ! / ;-  / / !  /J J J$ / / / 7 7 7 + + + <.!!  "! ;-    !  -.//  0/ (((  )( 2 2 2 ,-W===& & >=& c4[119 9 219	 	 	% % %+ + +( )*555	@ 	@ 65	@ *+555	@ 	@ 65	@ =/""  #"" '(8P! ! ! ! !. . . . .r(   