
    (?e1                        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                    |                     d          dk    rS	 t          j        d           n# t          j        $ r+}t	          j        t          |                     Y d }~nd }~ww xY w|                     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
                    \  }}t          j                    5 }t          j                    5 }	|r|                    d           |                    dd	gdd	g           d
}
t          j        d         s|
dz  }
|                    |
           g }|                     d          r|                    t$                     |                     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    r|                     d          dk    r8|dk    rd|                                vsJ ntd|                                v sJ n[|                     d          s|                     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 t5          j        dd|          }t5          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   gszps.userdistillerr   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   
   
)getmpl_get_executable_infoExecutableNotFoundErrorpytestskipstrrcParamsupdatepltsubplotsioStringIOBytesIO
set_yscaleplot	set_titleappendRuntimeErrorMatplotlibDeprecationWarningsavefigtupleclosedgetvalueencodelowerresubreplace)r%   use_logr1   r   r   excfigaxs_bufb_buftitleallowable_exceptionss_valb_valwidthwanteds                   @lib/python3.11/site-packages/matplotlib/tests/test_backend_ps.pytest_savefig_to_stringiorT      s   * ||%&&-77	"$T***** 	" 	" 	"KC!!!!!!!!	"	(	)	)V	3	3	"$T***$Y////* 	" 	" 	"KC!!!!!!!!	" L!!!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0 	<HLL4O4O 	<$/;$>$>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   0 A*!A%%A*(B0 0C*?!C%%C*5O.	CO2IOI?!I:5O:I??E
O
O.O	O.O	O..O25O2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+   r1   r3   r4   r9   r5   r7   r>   )rI   rJ   r   s      rS   test_patheffectsr\   u   s    s;;;$=CL lnnGCGGIII	 %Bt$$$% % % % % % % % % % % % % % % % % %s   %B

BBc                 t   t          | d          }|                                 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   rV   z\textbf{time} (s)ztex_demo.epsr   rZ   )r   mkdirr   _setattr_cmtempfiler0   r+   r1   r3   r9   xlabelr>   )tmpdirbase_tempdirs     rS   test_tilde_in_tempfilenamere   ~   s    	**L 
	8S->->	?	?	? @ @&*]#
'(((L>1$????@ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @s   AB--B14B1z	empty.epsc                      t          j                    \  } }|                                 |                    ddgdd           |                    ddddd           d S )Nr   r#   rcoloralpha      ?foo)r3   r4   set_axis_offr9   textrI   rJ   s     rS   test_transparencyrp      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#   rg   rh   rk   rl   )r+   r1   r3   r4   rm   r9   rn   ro   s     rS   test_transparency_texrr      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   rZ   s$   ^%%BoundingBox: (.+) (.+) (.+) (.+)$s)   ^%%HiResBoundingBox: (.+) (.+) (.+) (.+)$r#         .)r3   r4   r5   r7   r>   rA   rD   search	MULTILINErangegroupintr.   approxfloat)rI   rJ   bufbbhibbis         rS   	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   rZ   N)
r+   r1   r3   rb   r.   raisesr<   r>   r5   r7    r(   rS   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皙?rl   T)usetex皙?barr   rZ   zas if usetex=False)	set_levelr3   figtextr>   r5   r7   records
getMessage)caplogrecords     rS   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.preamblerk   rl   r   rZ   )r+   r1   r2   r3   r   r>   r5   r7   )r   s    rS   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   rk   qk)r+   r1   r3   r4   rm   axhlinern   ro   s     rS   test_useafmr      sX     $CLlnnGCOOJJrNNNGGBDr(   z	type3.epsc                  2    t          j        ddd           d S )Nrk   zI/J)r3   r   r   r(   rS   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#   /nonerg   r   )hatch	facecolor	edgecolorrX   )rk   rk   rk   +gr   )r#   r#   g333333?g?\b)r3   gca	add_patchr
   rm   )rJ   s    rS   !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_subplotrn   transFigure)fig_testfig_refrJ   s      rS   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 )Nrk   defztest.epsF)cache)r3   r   rn   r>   r+   testingcompareconvert)tmp_pathrI   outs      rS   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.fontsetrk   zMass $m$)r+   r1   r3   r   r   r(   rS   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      ?rk   z&Forty-two is the answer to everything!r   rZ   s
   /FontType zutf-8)encodings    def)r+   r1   r3   r4   rn   r5   r7   r>   bytesrD   rv   rA   rw   )r   rI   rJ   r}   tests        rS   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   rZ   N)r3   r4   r9   r5   r7   r>   tell)rI   rJ   r}   s      rS   test_linedashr     se    lnnGCGGQFdG###
*,,CKKDK!!!88::>>>>>>r(   c                      t                      } |                     ddd           t          j                    }|                     |d           |                     |d           d S )Nrk   z
foo

r   rZ   r   )r	   rn   r5   r7   r>   )r   r}   s     rS   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 )NrV   polar)
projection)
subplot_kw)xticksyticksr#   r$   zhello, worldr   rZ   r   c                 n    g | ]2}|                     d           |                    d          d         3S )r    r   )
startswith	partition).0lns     rS   
<listcomp>z0test_no_duplicate_definition.<locals>.<listcomp>;  sJ     " " "mmC  "2<<Q " " "r(   )r	   r4   dictflatsetr9   suptitler5   r6   r>   seek	readlinesmaxr   values)rI   axsrJ   r}   wdss        rS   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.   r/   r3   rcr   rn   fprI   s     rS   test_multi_font_type3r   B  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     rS   test_multi_font_type42r  O  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     rS   r   z(test_path_collection.<locals>.<listcomp>e  s(    DDD1TY++A..DDDr(   r            r$   g{Gz?g{Gz?yellow)zorder
facecolorsoffsets)nprandomdefault_rnguniformr3   r4   scatterrm   rx   reshapemcollectionsPathCollectionadd_collectionset_xlim)	rngxvalsyvalssizesrI   rJ   pathsr  pcs	            rS   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)rg   r   r   )r  g      rk   r#   r   r#   )ccmapnorm)mcolorsListedColormapBoundaryNormNr3   r  colorbar)r   r)  r*  s      rS   test_colorbar_shiftr0  n  si     !///22D 2 2 2DF;;DKAA1a&t$????LNNNNNr(   c                  v   t          j                    } t          j        t          j                  5  |                     t          j                    dd           d d d            n# 1 swxY w Y   t          j        t          j                  5  dt          j	        d<   d d d            d S # 1 swxY w Y   d S )Nr   auto)r%   r&   zps.papersize)
r3   r   r.   warnsr+   r=   r>   r5   r7   r1   )rI   s    rS   test_auto_papersize_deprecationr4  w  s)   
*,,C	c6	7	7 B BBJLL&AAAB B B B B B B B B B B B B B B 
c6	7	7 . .'-^$. . . . . . . . . . . . . . . . . .s#   *A((A,/A,B..B25B2)>collectionsr   pathlibr   r5   rD   ra   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pyplotr3   markflakyparametrizerT   r\   re   rp   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r#  r0  r4  r   r(   rS   <module>rE     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     "H6 H6#  CB <; (H6V% % % @ @  @" ;-  / / ! / ;-  / / !  /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(   