o
    re1  ã                   @   sÈ  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#j$d	d
e	j# %dddg¡e	j# %dddg¡e	j#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dd„ ƒƒƒƒZ&dd „ Z'eed!d"„ ƒƒZ(ed#gƒd$d%„ ƒZ)eed#gƒd&d'„ ƒƒZ*d(d)„ Z+ed*d+„ ƒZ,ed,d-„ ƒZ-ed.d/„ ƒZ.ed0gƒd1d2„ ƒZ/ed3gƒd4d5„ ƒZ0ed6gƒd7d8„ ƒZ1edgd9d:d;„ ƒZ2ed<d=„ ƒZ3ed>gd?d@dAdB„ ƒZ4e	j# %dCdDdEg¡dFdG„ ƒZ5dHdI„ Z6dJdK„ Z7dLdM„ Z8edNgdOdPdQdR„ ƒZ9edSgdTdPdUdV„ ƒZ:edWgƒdXdY„ ƒZ;edZgd[d\id?d]d^d_„ ƒZ<d`da„ Z=dS )bé    )ÚCounter)ÚPathN)ÚcbookÚpathÚpatheffectsÚfont_manager)ÚFigure)ÚEllipse)Úneeds_ghostscriptÚneeds_usetex)Úcheck_figures_equalÚimage_comparisoné   )ZrerunsÚ	papersizeÚletterÚfigureÚorientationZ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)Zidsc                 C   s$  |  d¡dkr)zt d¡ W nH tjy( } zt t|ƒ¡ W Y d }~n3d }~ww |  d¡dkrWzt d¡ t d¡ W n tjyV } zt t|ƒ¡ W Y d }~nd }~ww tj |¡ t	 
¡ \}}t ¡ }t ¡  }	|rv| d¡ | dd	gdd	g¡ d
}
tjd s‹|
d7 }
| |
¡ g }|  d¡rœ| t¡ |  d¡r§| tj¡ z|j|| ||d |j|	| ||d W n t|ƒyÖ } zt t|ƒ¡ W Y d }~nd }~ww |jrÜJ ‚|	jráJ ‚| ¡  d¡}|	 ¡ }| dkrN|  d¡dkr|dkrd| ¡ vsJ ‚nFd| ¡ v sJ ‚n<|  d¡s|  d¡r:|dkr%dnd}|dkr0d| nd}||v s9J ‚n|dkrGd|vsFJ ‚nd|v sNJ ‚t dd|¡}t dd|¡}|| dd¡ksgJ ‚W d   ƒ n1 srw   Y  W d   ƒ d S W d   ƒ d S 1 s‹w   Y  d S )Nr   r   Úgszps.userdistillerr   Z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ÚmplZ_get_executable_infoZExecutableNotFoundErrorÚpytestÚskipÚstrÚrcParamsÚupdateÚpltÚsubplotsÚioÚStringIOÚBytesIOZ
set_yscaleÚplotÚ	set_titleÚappendÚRuntimeErrorÚMatplotlibDeprecationWarningÚsavefigÚtupleÚclosedÚgetvalueÚencodeÚlowerÚreÚsubÚreplace)r   Zuse_logr)   r   r   ÚexcÚfigÚaxZs_bufZb_bufÚtitleZallowable_exceptionsZs_valZb_valÚwidthÚwanted© rD   úPD:\Projects\ConvertPro\env\Lib\site-packages\matplotlib/tests/test_backend_ps.pyÚtest_savefig_to_stringio   s~   €ÿ
€ÿ






ÿ

ÿ€ÿ



ÿ
TÉrF   c                  C   sl   t jdddgtjd< t ¡ \} }| g d¢¡ t ¡ }| j	|dd W d   ƒ d S 1 s/w   Y  d S )Né   Úw)Ú	linewidthÚ
foregroundzpath.effects)r   r   r   r   ©r   )
r   Z
withStroker%   r)   r+   r,   r0   r-   r/   r5   )r?   r@   r   rD   rD   rE   Útest_patheffectsu   s   
ÿ
"ÿrL   c                 C   s~   t | dƒ}| ¡  tjtt|ƒd# dtjd< t 	g d¢¡ t 
d¡ tj|d dd	 W d   ƒ d S 1 s8w   Y  d S )
Nzshort-1)ÚtempdirTr   )r   r   r   rG   z\textbf{time} (s)ztex_demo.epsr   rK   )r   Úmkdirr   Z_setattr_cmÚtempfiler(   r%   r)   r+   r0   Úxlabelr5   )ZtmpdirZbase_tempdirrD   rD   rE   Útest_tilde_in_tempfilename~   s   


"úrQ   z	empty.epsc                  C   s@   t  ¡ \} }| ¡  |jddgddd |jdddddd d S )Nr   r   Úr©ÚcolorÚalphaç      à?Úfoo)r+   r,   Úset_axis_offr0   Útext©r?   r@   rD   rD   rE   Útest_transparency‘   s   r[   c                  C   sJ   dt jd< t ¡ \} }| ¡  |jddgddd |jdddddd d S )	NTr   r   r   rR   rS   rV   rW   )r%   r)   r+   r,   rX   r0   rY   rZ   rD   rD   rE   Útest_transparency_tex™   s
   
r\   c                  C   sÈ   t  ¡ \} }t ¡ }| j|dd | ¡ }W d   ƒ n1 s w   Y  t d|tj¡}|s1J ‚t d|tj¡}|s=J ‚t	ddƒD ]}d| 
|¡vsMJ ‚t| 
|¡ƒt t| 
|¡ƒd¡ksaJ ‚qBd S )Nr   rK   s$   ^%%BoundingBox: (.+) (.+) (.+) (.+)$s)   ^%%HiResBoundingBox: (.+) (.+) (.+) (.+)$r   é   ó   .)r+   r,   r-   r/   r5   r8   r;   ÚsearchÚ	MULTILINEÚrangeÚgroupÚintr&   ZapproxÚfloat)r?   r@   ÚbufZbbZhibbÚirD   rD   rE   Ú	test_bbox£   s   

þÿ*ýrg   c                   C   sV   dt jd< t d¡ t t¡ tjt 	¡ dd W d  ƒ dS 1 s$w   Y  dS )z"Test failing latex subprocess callTr   z$22_2_2$r   rK   N)
r%   r)   r+   rP   r&   Zraisesr3   r5   r-   r/   rD   rD   rD   rE   Útest_failing_latexµ   s
   

"ÿrh   c                 C   s\   |   d¡ tjddddd tjddddd tjt ¡ dd	 | j\}d
| ¡ v s,J ‚d S )NÚWARNINGçš™™™™™¹?rW   T)Zusetexçš™™™™™É?Úbarr   rK   zas if usetex=False)Z	set_levelr+   Úfigtextr5   r-   r/   ÚrecordsÚ
getMessage)ÚcaplogÚrecordrD   rD   rE   Útest_partial_usetex¿   s   
rr   c                 C   s6   t j dddœ¡ t ddd¡ tjt ¡ dd d S )NTz$\usepackage{color,graphicx,textcomp})r   ztext.latex.preamblerV   rW   r   rK   )r%   r)   r*   r+   rm   r5   r-   r/   )rp   rD   rD   rE   Útest_usetex_preambleÉ   s   ýrs   z
useafm.epsc                  C   s:   dt jd< t ¡ \} }| ¡  | d¡ | ddd¡ d S )NTr   rV   Zqk)r%   r)   r+   r,   rX   ZaxhlinerY   rZ   rD   rD   rE   Útest_useafmÔ   s
   

rt   z	type3.epsc                   C   s   t  ddd¡ d S )NrV   zI/J)r+   rm   rD   rD   rD   rE   Útest_type3_fontÝ   s   ru   zcoloredhatcheszerolw.epsc                  C   sh   t  ¡ } |  tdddddddd¡ |  tdd	d	d
dddd¡ |  tdddddddd¡ |  ¡  d S )N)r   r   r   ú/ÚnonerR   r   )ZhatchZ	facecolorÚ	edgecolorrI   )rV   rV   rV   ú+Úgrk   )r   r   g333333Ó?gš™™™™™é?ú\Úb)r+   ZgcaZ	add_patchr	   rX   )r@   rD   rD   rE   Ú!test_colored_hatch_zero_linewidthâ   s   ÿÿÿr}   )Ú
extensionsc                 C   s*   |   ¡ }|jddd| jdd |  ¡  d S )Nr   ZhelloT)Z	transformZclip_on)Zadd_subplotrY   ZtransFigure)Zfig_testZfig_refr@   rD   rD   rE   Útest_text_clipî   s   r   c                 C   s>   t  ¡ }| ddd¡ | d }| |¡ tjjj|dd d S )NrV   Údefztest.epsF)Úcache)r+   r   rY   r5   r%   ÚtestingÚcompareÚconvert)Útmp_pathr?   ÚoutrD   rD   rE   Útest_d_glyphö   s
   
r‡   ztype42_without_prep.epsZmpl20)Ústylec                   C   s&   dt jd< dt jd< t ddd¡ d S )Né*   úps.fonttypeZstixzmathtext.fontsetrV   zMass $m$)r%   r)   r+   rm   rD   rD   rD   rE   Útest_type42_font_without_prep  s   

r‹   ÚfonttypeÚ3Z42c                 C   sl   | t jd< t ¡ \}}| ddd¡ t ¡ }|j|dd dt| › dd	 d
 }t	 
|| ¡ t	j¡s4J ‚d S )NrŠ   g      Ð?rV   z&Forty-two is the answer to everything!r   rK   s
   /FontType zutf-8)Úencodings    def)r%   r)   r+   r,   rY   r-   r/   r5   Úbytesr;   r_   r8   r`   )rŒ   r?   r@   re   ÚtestrD   rD   rE   Útest_fonttype
  s   
r‘   c                  C   sH   t  ¡ \} }|jddgdd t ¡ }| j|dd | ¡ dks"J ‚dS )z-Test that dashed lines do not break PS outputr   r   z--)Z	linestyler   rK   N)r+   r,   r0   r-   r/   r5   Útell)r?   r@   re   rD   rD   rE   Útest_linedash  s
   r“   c                  C   s<   t ƒ } |  ddd¡ t ¡ }| j|dd | j|dd d S )NrV   z
foo

r   rK   r   )r   rY   r-   r/   r5   )r   re   rD   rD   rE   Útest_empty_line%  s
   r”   c                  C   sœ   t ƒ } | jddtddd}|jD ]}|jg g d | ddg¡ q|  d¡ t ¡ }| j	|d	d
 | 
d¡ dd„ | ¡ D ƒ}tt|ƒ ¡ ƒdksLJ ‚d S )NrG   Zpolar)Z
projection)Z
subplot_kw)ZxticksZyticksr   r   zhello, worldr   rK   r   c                 S   s$   g | ]}|  d ¡r| d¡d ‘qS )rv   ú r   )Ú
startswithÚ	partition)Ú.0ÚlnrD   rD   rE   Ú
<listcomp>;  s    þz0test_no_duplicate_definition.<locals>.<listcomp>)r   r,   ÚdictZflatÚsetr0   Zsuptitler-   r.   r5   ÚseekÚ	readlinesÚmaxr   Úvalues)r?   Zaxsr@   re   ZwdsrD   rD   rE   Útest_no_duplicate_definition.  s   


ÿr¡   zmulti_font_type3.epsgR¸…ëQà?)Ztolc                  C   óh   t jdgd} tt  | ¡ƒjdkrt d¡ tjdddgdd tjd	d
d t 	¡ }| 
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!©ÚfmZFontPropertiesr   ZfindfontÚnamer&   r'   r+   Úrcr   rY   ©Úfpr?   rD   rD   rE   Útest_multi_font_type3B  ó   
r·   zmulti_font_type42.epsgš™™™™™ù?c                  C   r¢   )Nr£   r¤   r¦   r§   r¨   r©   rª   r«   r   r‰   r­   r®   r¯   r°   r±   rµ   rD   rD   rE   Útest_multi_font_type42O  r¸   r¹   zscatter.epsc            	      C   sÂ   t j d¡} |  ddd¡}|  ddd¡}|  ddd¡}t ¡ \}}|j|||g d¢dd	 | ¡  d
d„ tddƒD ƒ}|  ddd¡ 	dd¡}ddg}t
j||dd|d}| |¡ | dd¡ d S )Ni!N,r   r   é
   é   éd   )gÍÌÌÌÌÌì?rk   rj   ú<)rx   Úmarkerc                 S   s   g | ]}t j |¡‘qS rD   )r   r   Zunit_regular_polygon)r˜   rf   rD   rD   rE   rš   e  s    z(test_path_collection.<locals>.<listcomp>r   é   éÈ   é   r   g{®Gáz”?g{®Gáz¤?éÿÿÿÿÚyellow)ZzorderZ
facecolorsÚoffsets)ÚnpÚrandomZdefault_rngÚuniformr+   r,   ÚscatterrX   ra   ZreshapeÚmcollectionsZPathCollectionZadd_collectionZset_xlim)	ÚrngZxvalsZyvalsÚsizesr?   r@   ÚpathsrÄ   ZpcrD   rD   rE   Útest_path_collection\  s   
ÿ
rÍ   zcolorbar_shift.epsZbbox_inchesZtight)Zsavefig_kwargrˆ   c                 C   sL   t  g d¢¡}t  g d¢|j¡}tjddgddgddg||d t ¡  d S )N)rR   rz   r|   )rÂ   g      à¿rV   r   r   r   )ÚcÚcmapÚnorm)ÚmcolorsZListedColormapZBoundaryNormÚNr+   rÈ   Zcolorbar)r…   rÏ   rÐ   rD   rD   rE   Útest_colorbar_shiftn  s    rÓ   c                  C   s„   t  ¡ } t tj¡ | jt ¡ ddd W d   ƒ n1 sw   Y  t tj¡ dtj	d< W d   ƒ d S 1 s;w   Y  d S )Nr   Úauto)r   r    zps.papersize)
r+   r   r&   Zwarnsr%   r4   r5   r-   r/   r)   )r?   rD   rD   rE   Útest_auto_papersize_deprecationw  s   ÿ"ÿrÕ   )>Úcollectionsr   Úpathlibr   r-   r;   rO   ÚnumpyrÅ   r&   Z
matplotlibr   r   r   r   r²   Zmatplotlib.figurer   Zmatplotlib.patchesr	   Zmatplotlib.testing._markersr
   r   Zmatplotlib.testing.decoratorsr   r   r%   Zmatplotlib.collectionsrÉ   Zmatplotlib.colorsÚcolorsrÑ   Zmatplotlib.pyplotZpyplotr+   ÚmarkZflakyZparametrizerF   rL   rQ   r[   r\   rg   rh   rr   rs   rt   ru   r}   r   r‡   r‹   r‘   r“   r”   r¡   r·   r¹   rÍ   rÓ   rÕ   rD   rD   rD   rE   Ú<module>   s–    ùøK	

	
	










	


ÿ
