§
    ‚Øj1e  ã                   óJ  — d dl Z d dlZd dlZd dlmZ d dlZd dlZd dlm	Z
 d dlZd dlZd dl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 d d	lmZ d d
lmZm Z  d dl!m"Z"m#Z# d dl$m%Z%  e#dgd¬¦  «        d„ ¦   «         Z&d„ Z'd„ Z(d„ Z)d„ Z*d„ Z+d„ Z,d„ Z-d„ Z.d„ Z/d„ Z0e%d„ ¦   «         Z1d„ Z2 e#dgd¬¦  «        d„ ¦   «         Z3 e#d gd¬¦  «        d!„ ¦   «         Z4ej5         6                    d"¦  «         e"d#d$g¬%¦  «        d&„ ¦   «         ¦   «         Z7e%d'„ ¦   «         Z8d(„ Z9 e#d)gd¬¦  «        d*„ ¦   «         Z:d+„ Z; e#d,gd¬¦  «        d-„ ¦   «         Z< e#d.gd¬¦  «        d/„ ¦   «         Z= e#d0gd¬¦  «        d1„ ¦   «         Z> e#d2gd¬¦  «        d3„ ¦   «         Z?ej@         A                    d4d5d6g¦  «        d7„ ¦   «         ZB e#d8gd¬¦  «        d9„ ¦   «         ZCej@         D                     e d:¦  «         d;¬<¦  «         e#d=gd¬¦  «        d>„ ¦   «         ¦   «         ZEej@         D                     e d?¦  «         d@¬<¦  «         e#dAgd¬¦  «        dB„ ¦   «         ¦   «         ZFej@         D                     e dC¦  «         dD¬<¦  «         e#dEgd¬¦  «        dF„ ¦   «         ¦   «         ZGdG„ ZH e"d#g¬%¦  «        dH„ ¦   «         ZI e"d#g¬%¦  «        dI„ ¦   «         ZJ e"d#g¬%¦  «        dJ„ ¦   «         ZK e"d#g¬%¦  «        dK„ ¦   «         ZL e"d#g¬%¦  «        dL„ ¦   «         ZM e"d#gdM¬N¦  «        dO„ ¦   «         ZNdS )Pé    N)ÚPath)Úparse)ÚpyplotÚrcParamsÚfont_manager)Ú_get_data_path)ÚFT2Font)Úget_glyphs_subsetÚfont_as_file)ÚPdfPages)Ú	Rectangle)Ú_gen_multi_font_textÚ_has_tex_package)Úcheck_figures_equalÚimage_comparison)Úneeds_usetexzpdf_use14corefonts.pdfÚ_classic_test)Ústylec                  ó*  — dt           d<   dt           d<   dt           d<   dgt           d<   d	t           d
<   d} t          j        ¦   «         \  }}|                     d¦  «         |                     dd| ddd¬¦  «         |                     dd¬¦  «         d S )NTzpdf.use14corefontsz
sans-serifzfont.familyé   z	font.sizeÚ	Helveticazfont.sans-serifr   úpdf.compressionu�   A three-line text positioned just above a blue line
and containing some French characters and the euro symbol:
"Merci pÃ©pÃ© pour les 10 â‚¬"z0Test PDF backend with option use14corefonts=Trueç      à?ÚcenterÚbottomé   )ÚhorizontalalignmentÚverticalalignmentÚfontsize)Ú	linewidth)r   ÚpltÚsubplotsÚ	set_titleÚtextÚaxhline)r$   ÚfigÚaxs      ú–/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/matplotlib/tests/test_backend_pdf.pyÚtest_use14corefontsr)      s«   € à%)…HÐ!Ñ"Ø*…Hˆ]ÑØ…Hˆ[ÑØ#. -…HÐÑØ"#…HÐÑð"€Dõ Œl‰nŒn�G€CˆØ‡L‚LÐCÑDÔDÐDØ‡G‚GˆC��d°Ø&Øð ñ ô ð ð ‡J‚Jˆs˜c€JÑ"Ô"Ð"Ð"Ð"ó    c                  óÆ  — t          t          j        ¦   «         ¦  «        5 } |                      ¦   «         dk    sJ ‚t	          j        ¦   «         \  }}|                     g d¢¦  «         |                     | d¬¦  «         |                      ¦   «         dk    sJ ‚|                      ¦   «          |                      ¦   «         dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Nr   )é   é   é   Úpdf©Úformatr,   r-   )r   ÚioÚBytesIOÚget_pagecountr!   r"   ÚplotÚsavefig)r/   r&   r'   s      r(   Útest_multipage_pagecountr7   -   s  € Ý	•"”*‘,”,Ñ	Ô	ð ( 3Ø× Ò Ñ"Ô" aÒ'Ð'Ð'Ð'Ý”,‘.”.‰ˆˆRØ
�Š�	�	�	ÑÔÐØ�Š�C ˆÑ&Ô&Ð&Ø× Ò Ñ"Ô" aÒ'Ð'Ð'Ð'Ø�Š‰ŒˆØ× Ò Ñ"Ô" aÒ'Ð'Ð'Ð'Ð'ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð (ð (s   ¡B'CÃCÃCc                  ó¬  — t          j        ¦   «         } t          | ¦  «        5 }t          d¦  «        D ]D}t	          j        ¦   «         \  }}|                     d¦  «         |                     |d¬¦  «         ŒE	 d d d ¦  «         n# 1 swxY w Y   |                      ¦   «         }| 	                    d¦  «        dk    sJ ‚t          |¦  «        dk     sJ ‚d S )Né
   zThis is a long titler/   r0   s	   startxrefr,   i@œ  )r2   r3   r   Úranger!   r"   r#   r6   ÚgetvalueÚcountÚlen)Úpdfior/   Úir&   r'   Úss         r(   Útest_multipage_properfinalizerA   8   s  € ÝŒJ‰LŒL€EÝ	�%‰Œð +˜CÝ�r‘”ð 	+ð 	+ˆAÝ”l‘n”n‰GˆC�Ø�LŠLÐ/Ñ0Ô0Ð0Ø�KŠK˜ EˆKÑ*Ô*Ð*Ð*ð	+ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð
 	�ŠÑÔ€AØ�7Š7�<Ñ Ô  AÒ%Ð%Ð%Ð%Ýˆq‰6Œ6�EŠ>ˆ>ˆ>ˆ>ˆ>ˆ>s   £ABÂB	ÂB	c                 ó\  — | dz  }t          |¦  «        5 }	 d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         rJ ‚| dz  }t          |¦  «        5 }|                     t          j        ¦   «         ¦  «         d d d ¦  «         n# 1 swxY w Y   |                     ¦   «         sJ ‚d S )Nza.pdfzb.pdf)r   Úexistsr6   r!   Úfigure)Útmp_pathÚfnr/   s      r(   Útest_multipage_keep_emptyrG   D   s  € à	�GÑ	€BÝ	�"‰Œð ˜Øðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð à�yŠy‰{Œ{ÐÐˆ?ð 
�GÑ	€BÝ	�"‰Œð "˜Ø�Š•C”J‘L”LÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "à�9Š9‰;Œ;ÐÐˆ;ÐÐs   •#£'ª'Á'BÂBÂBc                  ó|  — t          j        t          j        ddd¦  «        t          j        ddd¦  «        ¦  «        \  } }t          j        |dz  ¦  «        }t	          j        ¦   «         \  }}|                     dd¦  «         |                     |g d¢¬¦  «         |                     |d d d	…         g d
¢¬¦  «         dt          j        d<   t          t          j        ¦   «         ¦  «        5 }|                     |d¬¦  «         t          |j        j        ¦  «        dk    sJ ‚	 d d d ¦  «         n# 1 swxY w Y   dt          j        d<   t          t          j        ¦   «         ¦  «        5 }|                     |d¬¦  «         t          |j        j        ¦  «        dk    sJ ‚	 d d d ¦  «         d S # 1 swxY w Y   d S )Néûÿÿÿé   r,   r-   r   r.   )r   r,   r   r,   )Úextentéÿÿÿÿ)r-   r.   r   r,   Tzimage.composite_imager/   r0   F)ÚnpÚmeshgridÚarangeÚsinr!   r"   Úset_xlimÚimshowr   r   r2   r3   r6   r=   Ú_fileÚ_images)ÚXÚYÚZr&   r'   r/   s         r(   Útest_composite_imagerX   R   s  € õ Œ;•r”y  Q¨Ñ*Ô*­B¬I°b¸!¸QÑ,?Ô,?Ñ@Ô@�D€A€qÝ
Œˆq�A‰v‰Œ€AÝŒl‰nŒn�G€CˆØ‡K‚K��1ÑÔÐØ‡I‚Iˆa˜˜˜€IÑ%Ô%Ð%Ø‡I‚Iˆa���"�Œg˜l˜l˜l€IÑ+Ô+Ð+Ø,0…C„LÐ(Ñ)Ý	•"”*‘,”,Ñ	Ô	ð + 3Ø�Š�C ˆÑ&Ô&Ð&Ý�3”9Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð -2…C„LÐ(Ñ)Ý	•"”*‘,”,Ñ	Ô	ð + 3Ø�Š�C ˆÑ&Ô&Ð&Ý�3”9Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*Ð*ð+ð +ð +ñ +ô +ð +ð +ð +ð +ð +ð +ð +øøøð +ð +ð +ð +ð +ð +s$   Ã.7D2Ä2D6Ä9D6Å,7F1Æ1F5Æ8F5c                  óž  — t          j        d¦  «        } t          j        dt          j        ¬¦  «        }t          j        d¦  «        |d d …ddf<   dt          d<   t          j        ¦   «         }| 	                    |d¬¦  «         t          j        ¦   «         }|                     |d	d
¬¦  «         | j                             |¦  «        5 }|j        \  }t!          | j        ¦  «        t!          d¦  «        k     r|j                             ¦   «         \  }n(|                     ¦   «                              ¦   «         \  }|                      |¦  «        }|j        sJ ‚|                     ¦   «         }t          j        |                     d¦  «        ¦  «        }	d d d ¦  «         n# 1 swxY w Y   t          j                             ||	¦  «         d S )NÚpikepdf)é   r,   r.   )Údtyper[   r   Tr   )Úresizer/   rD   )r1   Údpiz10.9.0ÚRGB)ÚpytestÚimportorskiprM   ÚzerosÚuint8rO   r   r!   rD   Úfigimager2   r3   r6   ÚPdfÚopenÚpagesÚparse_versionÚ__version__ÚimagesÚvaluesÚ
get_imagesÚPdfImageÚindexedÚas_pil_imageÚasarrayÚconvertÚtestingÚassert_array_equal)
rZ   Údatar&   Úbufr/   ÚpageÚimageÚ	pdf_imageÚ	pil_imageÚrgbs
             r(   Útest_indexed_imager{   e   sÅ  € åÔ! )Ñ,Ô,€GåŒ8�K¥r¤xÐ0Ñ0Ô0€DÝ”I˜c‘N”N€DˆˆˆˆAˆqˆ�Mà"&…HÐÑÝ
Œ*‰,Œ,€CØ‡L‚L�˜d€LÑ#Ô#Ð#Ý
Œ*‰,Œ,€CØ‡K‚K�˜E x€KÑ0Ô0Ð0à	Œ×	Ò	˜#Ñ	Ô	ð 	3 #Ø”	‰ˆÝ˜Ô,Ñ-Ô-µ¸hÑ0GÔ0GÒGÐGØ”[×'Ò'Ñ)Ô)‰FˆEˆEà—_’_Ñ&Ô&×-Ò-Ñ/Ô/‰FˆEØ×$Ò$ UÑ+Ô+ˆ	ØÔ Ð Ð Ð Ø×*Ò*Ñ,Ô,ˆ	ÝŒj˜×*Ò*¨5Ñ1Ô1Ñ2Ô2ˆð	3ð 	3ð 	3ñ 	3ô 	3ð 	3ð 	3ð 	3ð 	3ð 	3ð 	3øøøð 	3ð 	3ð 	3ð 	3õ „J×!Ò! $¨Ñ,Ô,Ð,Ð,Ð,s   Ã
CF"Æ"F&Æ)F&c                 óª  — t          j        d¦  «        }|                      dd¦  «         t          j        ¦   «         \  }}|                     t          d¦  «        ¦  «         ddddt          j        d	d
dt          j        t          j	        d¦  «        ¦  «        ¬¦  «        ddœ}t          j        ¦   «         }|                     ||d¬¦  «         |j                             |¦  «        5 }d„ |j                             ¦   «         D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |dddt"          j        › d�dddt"          j        › �ddddœ	k    sJ ‚d S )NrZ   ÚSOURCE_DATE_EPOCHÚ0rJ   ÚmeúMultipage PDFú	Test pageútest,pdf,multipageé°  r   r,   r   ©ÚtzinfoÚTrue©ÚAuthorÚTitleÚSubjectÚKeywordsÚModDateÚTrappedr/   )Úmetadatar1   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS © ©Ústr©Ú.0ÚkÚvs      r(   ú
<dictcomp>z)test_savefig_metadata.<locals>.<dictcomp>”   ó$   € Ð:Ð:Ð:™d˜a �•3�q‘6”6Ð:Ð:Ð:r*   úD:19700101000000ZúMatplotlib vú, https://matplotlib.orgúD:19680801000000ZúMatplotlib pdf backend vú/True©	z/Authorz/CreationDatez/Creatorz	/Keywordsz/ModDatez	/Producerz/Subjectz/Titlez/Trapped)r`   ra   Úsetenvr!   r"   r5   r:   ÚdatetimeÚtimezoneÚ	timedeltar2   r3   r6   re   rf   ÚdocinfoÚitemsÚmplri   ©ÚmonkeypatchrZ   r&   r'   Úmdru   r/   Úinfos           r(   Útest_savefig_metadatar«   €   s±  € ÝÔ! )Ñ,Ô,€GØ×ÒÐ*¨CÑ0Ô0Ð0åŒl‰nŒn�G€CˆØ‡G‚G�E�!‰HŒHÑÔÐð Ø ØØ(ÝÔ$Ø�!�Q�xÔ0µÔ1CÀAÑ1FÔ1FÑGÔGðIñ Iô Iàð
ð 
€Bõ Œ*‰,Œ,€CØ‡K‚K�˜b¨€KÑ/Ô/Ð/à	Œ×	Ò	˜#Ñ	Ô	ð ; #Ø:Ð: c¤k×&7Ò&7Ñ&9Ô&9Ð:Ñ:Ô:ˆð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ØØ,ØL¥3¤?ÐLÐLÐLØ)Ø'ØAµ´ÐAÐAØØ!Øð
ð 
ò 
ð 
ð 
ð 
ð 
ð 
s   Ã+$DÄDÄ"Dc                  ó$  — t          j        ¦   «         \  } }t          j        t          d¬¦  «        5  |                      t          j        ¦   «         dddi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                      t          j        ¦   «         ddd	i¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d
¬¦  «        5  |                      t          j        ¦   «         dddi¬¦  «         d d d ¦  «         n# 1 swxY w Y   t          j        t          d¬¦  «        5  |                      t          j        ¦   «         dddi¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz#Unknown infodict keyword: 'foobar'.)Úmatchr/   ÚfoobarÚinvalid)r1   rŽ   z%not an instance of datetime.datetime.rŒ   z
1968-08-01z'not one of {"True", "False", "Unknown"}r�   Úfooznot an instance of str.r‰   iÒ  )r!   r"   r`   ÚwarnsÚUserWarningr6   r2   r3   ©r&   r'   s     r(   Útest_invalid_metadatar´   £   s¸  € ÝŒl‰nŒn�G€Cˆå	Œ•kØAð
Cñ 
Cô 
Cð Pð Pà�Š•B”J‘L”L¨¸(ÀIÐ9NˆÑOÔOÐOðPð Pð Pñ Pô Pð Pð Pð Pð Pð Pð Pøøøð Pð Pð Pð Põ 
Œ•kØCð
Eñ 
Eô 
Eð 8ð 8à�Š•B”J‘L”L¨Ø'¨Ð6ð 	ñ 	8ô 	8ð 	8ð8ð 8ð 8ñ 8ô 8ð 8ð 8ð 8ð 8ð 8ð 8øøøð 8ð 8ð 8ð 8õ
 
Œ•kØEð
Gñ 
Gô 
Gð Mð Mà�Š•B”J‘L”L¨¸)ÀUÐ9KˆÑLÔLÐLðMð Mð Mñ Mô Mð Mð Mð Mð Mð Mð Møøøð Mð Mð Mð Mõ 
Œ•kÐ)BÐ	CÑ	CÔ	Cð Jð JØ�Š•B”J‘L”L¨¸'À4¸ˆÑIÔIÐIðJð Jð Jñ Jô Jð Jð Jð Jð Jð Jð Jð Jøøøð Jð Jð Jð Jð Jð JsG   ²,A*Á*A.Á1A.Â,CÃCÃCÃ.,D&Ä&D*Ä-D*Å,FÆF	ÆF	c                 ó   — t          j        d¦  «        }|                      dd¦  «         t          j        ¦   «         \  }}|                     t          d¦  «        ¦  «         ddddt          j        d	d
dt          j        t          j	        d¦  «        ¦  «        ¬¦  «        ddœ}t          j        ¦   «         }t          ||¬¦  «        5 }|                     |¦  «         |                     |¦  «         d d d ¦  «         n# 1 swxY w Y   |j                             |¦  «        5 }d„ |j                             ¦   «         D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |dddt$          j        › d�dddt$          j        › �ddddœ	k    sJ ‚d S )NrZ   r}   r~   rJ   r   r€   r�   r‚   rƒ   r   r,   r   r„   r†   r‡   )rŽ   c                 ó4   — i | ]\  }}|t          |¦  «        “ŒS r�   r‘   r“   s      r(   r—   z+test_multipage_metadata.<locals>.<dictcomp>Í   r˜   r*   r™   rš   r›   rœ   r�   rž   rŸ   )r`   ra   r    r!   r"   r5   r:   r¡   r¢   r£   r2   r3   r   r6   re   rf   r¤   r¥   r¦   ri   r§   s           r(   Útest_multipage_metadatar·   ·   s$  € ÝÔ! )Ñ,Ô,€GØ×ÒÐ*¨CÑ0Ô0Ð0åŒl‰nŒn�G€CˆØ‡G‚G�E�!‰HŒHÑÔÐð Ø ØØ(ÝÔ$Ø�!�Q�xÔ0µÔ1CÀAÑ1FÔ1FÑGÔGðIñ Iô Iàð
ð 
€Bõ Œ*‰,Œ,€CÝ	�# Ð	#Ñ	#Ô	#ð  sØ�Š�CÑÔÐØ�Š�CÑÔÐðð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð ð 
Œ×	Ò	˜#Ñ	Ô	ð ; #Ø:Ð: c¤k×&7Ò&7Ñ&9Ô&9Ð:Ñ:Ô:ˆð;ð ;ð ;ñ ;ô ;ð ;ð ;ð ;ð ;ð ;ð ;øøøð ;ð ;ð ;ð ;ð ØØ,ØL¥3¤?ÐLÐLÐLØ)Ø'ØAµ´ÐAÐAØØ!Øð
ð 
ò 
ð 
ð 
ð 
ð 
ð 
s$   Ã
+DÄDÄDÄ&$EÅEÅEc                  ó¨  ‡‡— t          j        d¦  «        } dŠt          j        d¬¦  «        }|                     ddd‰› d�¬¦  «         |                     dd	d
‰› d�¬¦  «         t          j        ¦   «         5 }|                     |d¬¦  «         | j         	                    |¦  «        5 }|j
        d         j        }dD ]a\  }Št          ˆˆfd„|D ¦   «         d ¦  «        }|€J ‚t          |dd ¦  «        �J ‚|j        d         t          j        |¦  «        dz  k    sJ ‚Œb	 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 )NrZ   ú&https://test_text_urls.matplotlib.org/©r-   r,   ©Úfigsizeçš™™™™™¹?ztest plain 123Úplain)Úurlgš™™™™™Ù?ztest mathtext $123$Úmathtextr/   r0   r   ))z0.1r¾   )z0.4rÀ   c              3   óD   •K  — | ]}|j         j        ‰› ‰› �k    ¯|V — Œd S ©N©ÚAÚURI)r”   ÚaÚfragmentÚtest_urls     €€r(   ú	<genexpr>z!test_text_urls.<locals>.<genexpr>ï   s<   øè è € ÐMÐM˜1¨!¬#¬'¸Ð5LÀ(Ð5LÐ5LÒ*LÐ*L�QÐ*LÐ*LÐ*LÐ*LÐMÐMr*   Ú
QuadPointsr,   éH   )r`   ra   r!   rD   r$   r2   r3   r6   re   rf   rg   ÚAnnotsÚnextÚgetattrÚRectÚdecimalÚDecimal)	rZ   r&   Úfdr/   ÚannotsÚyÚannotrÇ   rÈ   s	          @@r(   Útest_text_urlsrÖ   Ü   s(  øø€ ÝÔ! )Ñ,Ô,€Gà7€Hå
Œ*˜VÐ
$Ñ
$Ô
$€CØ‡H‚HˆS�#Ð'°Ð-?Ð-?Ð-?€HÑ@Ô@Ð@Ø‡H‚HˆS�#Ð,°XÐ2GÐ2GÐ2G€HÑHÔHÐHå	Œ‰Œð @˜Ø�Š�B˜uˆÑ%Ô%Ð%àŒ[×Ò˜bÑ!Ô!ð 	@ SØ”Y˜q”\Ô(ˆFð  Gð @ð @‘��8ÝØMÐMÐMÐMÐM ÐMÑMÔMØñô �ð Ð(Ð(Ð(Ý˜u l°DÑ9Ô9ÐAÐAÐAà”z !”}­¬¸Ñ(:Ô(:¸RÑ(?Ò?Ð?Ð?Ð?Ð?ð@ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s7   Á92EÂ+A7D/Ä#EÄ/D3	Ä3EÄ6D3	Ä7EÅEÅEc                  óp  ‡— t          j        d¦  «        } dŠt          j        d¬¦  «        }|                     dddd‰› ¬¦  «         t          j        ¦   «         5 }|                     |d	¬
¦  «         | j         	                    |¦  «        5 }|j
        d         j        }t          ˆfd„|D ¦   «         d ¦  «        }|€J ‚t          |dd ¦  «        €J ‚|j        d         |j        d         t!          j        d¦  «        z
  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 )NrZ   r¹   )r,   r,   r»   r½   ÚNé-   )Úrotationr¿   r/   r0   r   c              3   ó>   •K  — | ]}|j         j        ‰› k    ¯|V — Œd S rÂ   rÃ   ©r”   rÆ   rÈ   s     €r(   rÉ   z)test_text_rotated_urls.<locals>.<genexpr>  s3   øè è € Ð?Ð?�q a¤c¤g°H°Ò&>Ð&>�Ð&>Ð&>Ð&>Ð&>Ð?Ð?r*   rÊ   é   z0.00001)r`   ra   r!   rD   r$   r2   r3   r6   re   rf   rg   rÌ   rÍ   rÎ   rÏ   rÊ   rÐ   rÑ   ©rZ   r&   rÒ   r/   rÓ   rÕ   rÈ   s         @r(   Útest_text_rotated_urlsrß   ÷   sö  ø€ ÝÔ! )Ñ,Ô,€Gà7€Hå
Œ*˜VÐ
$Ñ
$Ô
$€CØ‡H‚HˆS�#�s R°¨]€HÑ;Ô;Ð;å	Œ‰Œð @˜Ø�Š�B˜uˆÑ%Ô%Ð%àŒ[×Ò˜bÑ!Ô!ð 	@ SØ”Y˜q”\Ô(ˆFõ Ø?Ð?Ð?Ð?˜FÐ?Ñ?Ô?Øñô ˆEð Ð$Ð$Ð$Ý˜5 ,°Ñ5Ô5ÐAÐAÐAà”:˜a”=ØÔ Ô"¥W¤_°YÑ%?Ô%?Ñ?ò@ð @ð @ð @ð @ð	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s7   Á2D+ÂA9DÄD+ÄD	ÄD+ÄD	ÄD+Ä+D/Ä2D/c                  ó8  ‡— t          j        d¦  «        } dŠt          j        d¬¦  «        }|                     dddd‰› d	�¬
¦  «         t          j        ¦   «         5 }|                     |d¬¦  «         | j         	                    |¦  «        5 }|j
        d         j        }t          ˆfd„|D ¦   «         d ¦  «        }|€J ‚|j        d         t          j        d¦  «        dz  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 )NrZ   r¹   rº   r»   r½   gffffffæ?ztest tex $123$TÚtex)Úusetexr¿   r/   r0   r   c              3   óB   •K  — | ]}|j         j        ‰› d �k    ¯|V — ŒdS )rá   NrÃ   rÜ   s     €r(   rÉ   z%test_text_urls_tex.<locals>.<genexpr>#  s:   øè è € ÐBÐB�q a¤c¤g°HÐ1AÐ1AÐ1AÒ&AÐ&A�Ð&AÐ&AÐ&AÐ&AÐBÐBr*   r,   z0.7rË   )r`   ra   r!   rD   r$   r2   r3   r6   re   rf   rg   rÌ   rÍ   rÏ   rÐ   rÑ   rÞ   s         @r(   Útest_text_urls_texrä     sÎ  ø€ åÔ! )Ñ,Ô,€Gà7€Hå
Œ*˜VÐ
$Ñ
$Ô
$€CØ‡H‚HˆS�#Ð'°¸XÐ:JÐ:JÐ:J€HÑKÔKÐKå	Œ‰Œð @˜Ø�Š�B˜uˆÑ%Ô%Ð%àŒ[×Ò˜bÑ!Ô!ð 
	@ SØ”Y˜q”\Ô(ˆFõ ØBÐBÐBÐB˜FÐBÑBÔBØñô ˆEð Ð$Ð$Ð$à”:˜a”=¥G¤O°EÑ$:Ô$:¸RÑ$?Ò?Ð?Ð?Ð?Ð?ð
	@ð 
	@ð 
	@ñ 
	@ô 
	@ð 
	@ð 
	@ð 
	@ð 
	@ð 
	@ð 
	@øøøð 
	@ð 
	@ð 
	@ð 
	@ð@ð @ð @ñ @ô @ð @ð @ð @ð @ð @ð @ð @øøøð @ð @ð @ð @ð @ð @s7   Á2DÂAC7Ã+DÃ7C;	Ã;DÃ>C;	Ã?DÄDÄDc                 ó¨   — t          | dz  ¦  «        5 }|                     t          j        ¦   «         ¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nz
unused.pdf)r   r6   r!   rD   )rE   r/   s     r(   Útest_pdfpages_fspathræ   *  sŽ   € Ý	�(˜\Ñ)Ñ	*Ô	*ð "¨cØ�Š•C”J‘L”LÑ!Ô!Ð!ð"ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s   “'AÁAÁAzhatching_legend.pdfÚmpl20c                 óÀ   — t          j        d¬¦  «        }t          ddgdddd¬¦  «        }t          ddgdddd¬¦  «        }|                     ||||gg d¢¦  «         d	S )
z.Test for correct hatching on patches in legend)r,   r-   r»   r   ÚgreenÚXXXX)Ú	facecolorÚhatchÚblue)Ú rî   rî   rî   N)r!   rD   r   Úlegend)Útext_placeholdersr&   rÆ   Úbs       r(   Útest_hatching_legendrò   /  sy   € õ Œ*˜VÐ
$Ñ
$Ô
$€Cå�1�a�&˜!˜Q¨'¸Ð@Ñ@Ô@€AÝ�1�a�&˜!˜Q¨&¸Ð?Ñ?Ô?€Að ‡J‚J��1�a˜ˆ|Ð-Ð-Ð-Ñ.Ô.Ð.Ð.Ð.r*   zgrayscale_alpha.pdfc                  óR  — t           j        ddd…ddd…f         \  } }t          j        | dz  |dz  z    ¦  «        }t           j        ||dk     <   t	          j        ¦   «         \  }}|                     |dd¬¦  «         |                     g ¦  «         |                     g ¦  «         dS )z9Masking images with NaN did not work for grayscale imageséþÿÿÿr-   r½   ÚnoneÚgray_r)ÚinterpolationÚcmapN)	rM   ÚogridÚexpÚnanr!   r"   rR   Ú
set_xticksÚ
set_yticks)ÚxrÔ   Úddr&   r'   s        r(   Útest_grayscale_alphar   <  s¢   € õ Œ8�B�q˜�G˜R  "˜WÐ$Ô%�D€A€qÝ	Œ�!�Q‘$˜˜A™‘+�Ñ	Ô	€BÝ”&€B€rˆB‚w�KÝŒl‰nŒn�G€CˆØ‡I‚Iˆb ¨X€IÑ6Ô6Ð6Ø‡M‚M�"ÑÔÐØ‡M‚M�"ÑÔÐÐÐr*   Údefaultr/   Úeps)Ú
extensionsc           	      ó"  — |                       ¦   «         }|                     ¦   «          |                     t          j        t          j        ddd¦  «        ¦  «        dd¬¦  «         |                      ¦   «         }|                     ¦   «          d S )NrI   rJ   éd   r–   rõ   ©Úc)Úadd_subplotÚset_axis_offr5   rM   rP   Úlinspace)Úfig_testÚfig_refÚax_testÚax_refs       r(   Ú'test_pdf_eps_savefig_when_color_is_noner  H  s€   € ð ×"Ò"Ñ$Ô$€GØ×ÒÑÔÐØ‡L‚L•”�œ B¨¨3Ñ/Ô/Ñ0Ô0°#¸€LÑ@Ô@Ð@Ø× Ò Ñ"Ô"€FØ
×ÒÑÔÐÐÐr*   c                  óä   — t          j        d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 callz$22_2_2$T)râ   r/   r0   N)r!   Úxlabelr`   ÚraisesÚRuntimeErrorr6   r2   r3   r�   r*   r(   Útest_failing_latexr  R  s¨   € õ „Jˆz $Ð'Ñ'Ô'Ð'Ý	Œ•|Ñ	$Ô	$ð 0ð 0ÝŒ•B”J‘L”L¨Ð/Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0ð 0ð 0s   °(A%Á%A)Á,A)c                  ó²   — t          j        ¦   «         \  } }|                     g g d¬¦  «         |                      t	          j        ¦   «         d¬¦  «         d S )NT)Ú
rasterizedr/   r0   )r!   r"   r5   r6   r2   r3   r³   s     r(   Útest_empty_rasterizedr  Z  sK   € åŒl‰nŒn�G€CˆØ‡G‚GˆB�˜t€GÑ$Ô$Ð$Ø‡K‚K•”
‘” U€KÑ+Ô+Ð+Ð+Ð+r*   zkerning.pdfc                  ó”   — t          j        ¦   «         } d}|                      dd|d¬¦  «         |                      dd|d¬¦  «         d S )Nu   AVAVAVAVAVAVAVAVâ‚¬AAVVr   g      Ð?rJ   ©Úsizeg      è?é   )r!   rD   r$   )r&   r@   s     r(   Útest_kerningr  a  sL   € å
Œ*‰,Œ,€CØ!€AØ‡H‚HˆQ��Q˜Q€HÑÔÐØ‡H‚HˆQ��Q˜R€HÑ Ô Ð Ð Ð r*   c                  óž  ‡— t          t          d¦  «        ¦  «        } d}t          | ¦  «        }|                     |¦  «         |                     ¦   «         Šˆfd„|D ¦   «         }t          t          j        | d¦  «        |¦  «        5 }t          t          |j	        ¦  «        ¦  «        }d d d ¦  «         n# 1 swxY w Y   |                     |¦  «         |                     ¦   «         }h |£d„ |D ¦   «         k    sJ ‚t          |¦  «        t          ‰¦  «        k     sJ ‚|                     ¦   «         |                     ¦   «         k    sJ ‚d S )Nzfonts/ttf/DejaVuSerif.ttfz%these should be subsetted! 1234567890c                 ó:   •— h | ]}‰t          |¦  «                 ’ŒS r�   )Úord)r”   r  Ú	nosubcmaps     €r(   ú	<setcomp>z%test_glyphs_subset.<locals>.<setcomp>s  s$   ø€ Ð6Ð6Ð6¨1�Y�s 1™vœvÔ&Ð6Ð6Ð6r*   r   c                 ó,   — h | ]}t          |¦  «        ’ŒS r�   )Úchr)r”   Úkeys     r(   r!  z%test_glyphs_subset.<locals>.<setcomp>z  s   € Ð4Ð4Ð4 S�˜C™œÐ4Ð4Ð4r*   )r’   r   r	   Úset_textÚget_charmapr
   ÚfmÚFontPathr   Úfontr=   Úget_num_glyphs)ÚfpathÚcharsÚ	nosubfontÚglyph_indicesÚsubsetÚsubfontÚsubcmapr   s          @r(   Útest_glyphs_subsetr2  i  s‹  ø€ Ý•Ð:Ñ;Ô;Ñ<Ô<€EØ3€Eõ ˜‘”€IØ×Ò�uÑÔÐØ×%Ò%Ñ'Ô'€Ið 7Ð6Ð6Ð6°Ð6Ñ6Ô6€MÝ	�2œ; u¨aÑ0Ô0°-Ñ	@Ô	@ð 5ÀFÝ�, v¤{Ñ3Ô3Ñ4Ô4ˆð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5à×Ò�UÑÔÐØ×!Ò!Ñ#Ô#€Gð ˆUˆ8Ð4Ð4¨GÐ4Ñ4Ô4Ò4Ð4Ð4Ð4õ ˆw‰<Œ<�#˜i™.œ.Ò(Ð(Ð(Ð(ð ×!Ò!Ñ#Ô# y×'?Ò'?Ñ'AÔ'AÒAÐAÐAÐAÐAÐAs   Â	"B7Â7B;Â>B;zmulti_font_type3.pdfc                  óà   — t          ¦   «         \  } }t          j        d| d¬¦  «         t          j        dd¬¦  «         t          j        d¬¦  «        }|                     d	d	|d
d
¬¦  «         d S )Nr)  é   ©Úfamilyr  r/   r.   ©Úfonttype©r   rÝ   r»   r   r   ©r   r   ©r   r!   ÚrcrD   r$   ©ÚfontsÚtest_strr&   s      r(   Útest_multi_font_type3r@  ƒ  s„   € å*Ñ,Ô,�O€Eˆ8Ý„Fˆ6˜% bÐ)Ñ)Ô)Ð)Ý„Fˆ5˜1ÐÑÔÐå
Œ*˜VÐ
$Ñ
$Ô
$€CØ‡H‚HˆS�#�xØ!)¸Xð ñ Gô Gð Gð Gð Gr*   zmulti_font_type42.pdfc                  óà   — t          ¦   «         \  } }t          j        d| d¬¦  «         t          j        dd¬¦  «         t          j        d¬¦  «        }|                     d	d	|d
d
¬¦  «         d S )Nr)  r4  r5  r/   é*   r7  r9  r»   r   r   r:  r;  r=  s      r(   Útest_multi_font_type42rC  Ž  s„   € å*Ñ,Ô,�O€Eˆ8Ý„Fˆ6˜% bÐ)Ñ)Ô)Ð)Ý„Fˆ5˜2ÐÑÔÐå
Œ*˜VÐ
$Ñ
$Ô
$€CØ‡H‚HˆS�#�xØ!)¸Xð ñ Gô Gð Gð Gð Gr*   zttc_type3.pdfc            	      ó  — t          j        dg¬¦  «        } t          t          j        | ¦  «        ¦  «        j        dk    rt          j        d¦  «         ddg}t          j        dd¬¦  «         t          j        d	d
¬¦  «         t          j	        dt          |¦  «        dz  f¬¦  «                             t          |¦  «        ¦  «        }t          ||¦  «        D ]/\  }}|                     dd|› dt          j        › �|dd¬¦  «         Œ0d S )NúWenQuanYi Zen Hei©r6  úwqy-zenhei.ttcú"Font wqy-zenhei.ttc may be missingúWenQuanYi Zen Hei Monor)  r4  r  r/   r.   r7  é   r-   r»   r   ú: r   ©r)  r   r   ©r'  ÚFontPropertiesr   ÚfindfontÚnamer`   Úskipr!   r<  rD   r=   Ú
subfiguresÚzipr$   ÚstringÚascii_uppercase©Úfpr>  Úfigsr)  r&   s        r(   Útest_ttc_type3rY  ™  s   € å	Ô	Ð#6Ð"7Ð	8Ñ	8Ô	8€BÝ�BŒK˜‰OŒOÑÔÔ!Ð%5Ò5Ð5ÝŒÐ8Ñ9Ô9Ð9à Ð":Ð;€EÝ„Fˆ6˜ÐÑÔÐÝ„Fˆ5˜1ÐÑÔÐåŒ:˜q¥# e¡*¤*¨q¡.Ð1Ð2Ñ2Ô2×=Ò=½cÀ%¹j¼jÑIÔI€DÝ˜ Ñ%Ô%ð Kð K‰	ˆˆcØ�Š��c˜dÐ>Ð>¥fÔ&<Ð>Ð>ÀTØ%-Àð 	ñ 	Kô 	Kð 	Kð 	KðKð Kr*   zttc_type42.pdfc            	      ó  — t          j        dg¬¦  «        } t          t          j        | ¦  «        ¦  «        j        dk    rt          j        d¦  «         ddg}t          j        dd¬¦  «         t          j        d	d
¬¦  «         t          j	        dt          |¦  «        dz  f¬¦  «                             t          |¦  «        ¦  «        }t          ||¦  «        D ]/\  }}|                     dd|› dt          j        › �|dd¬¦  «         Œ0d S )NrE  rF  rG  rH  rI  r)  r4  r  r/   rB  r7  rJ  r-   r»   r   rK  r   rL  rM  rV  s        r(   Útest_ttc_type42r[  ©  s   € å	Ô	Ð#6Ð"7Ð	8Ñ	8Ô	8€BÝ�BŒK˜‰OŒOÑÔÔ!Ð%5Ò5Ð5ÝŒÐ8Ñ9Ô9Ð9à Ð":Ð;€EÝ„Fˆ6˜ÐÑÔÐÝ„Fˆ5˜2ÐÑÔÐåŒ:˜q¥# e¡*¤*¨q¡.Ð1Ð2Ñ2Ô2×=Ò=½cÀ%¹j¼jÑIÔI€DÝ˜ Ñ%Ô%ð Kð K‰	ˆˆcØ�Š��c˜dÐ>Ð>¥fÔ&<Ð>Ð>ÀTØ%-Àð 	ñ 	Kô 	Kð 	Kð 	KðKð Kr*   zfamily_name, file_name)z	Noto SanszNotoSans-Regular.otf)ÚFreeMonozFreeMono.otfc                 óŠ  — t          j        | g¬¦  «        }t          t          j        |¦  «        ¦  «        j        |k    rt          j        d| › d�¦  «         t          j        d| gd¬¦  «         t          j	        ¦   «         }| 
                    ddd	¦  «         |                     t          j        ¦   «         d
¬¦  «         d S )NrF  zFont z may be missingr)  é   r5  g333333Ã?gffffffÞ?u   ÐŸÑ€Ð¸Ð²ÐµÑ‚ Ð¼Ð¸Ñ€!r/   r0   )r'  rN  r   rO  rP  r`   rQ  r!   r<  rD   r$   r6   r2   r3   )Úfamily_nameÚ	file_namerW  r&   s       r(   Útest_otf_font_smokera  ¹  s°   € õ
 
Ô	 ; -Ð	0Ñ	0Ô	0€BÝ�BŒK˜‰OŒOÑÔÔ! YÒ.Ð.ÝŒÐ8˜KÐ8Ð8Ð8Ñ9Ô9Ð9å„Fˆ6˜;˜-¨bÐ1Ñ1Ô1Ð1å
Œ*‰,Œ,€CØ‡H‚HˆT�5Ð0Ñ1Ô1Ð1Ø‡K‚K•”
‘” U€KÑ+Ô+Ð+Ð+Ð+r*   ztruetype-conversion.pdfc                 ó  — dt           j        d<   t          j        ¦   «         \  }}|                     dddt          t          ¦  «        j        dz  d¬¦  «         |                     g ¦  «         | 	                    g ¦  «         d S )Nr.   zpdf.fonttyper   ÚABCDEzdata/mpltest.ttfrË   )r)  r   )
r¦   r   r!   r"   r$   r   Ú__file__Úparentrü   rý   )Úrecwarnr&   r'   s      r(   Útest_truetype_conversionrg  É  s�   € ð $%…C„L�Ñ ÝŒl‰nŒn�G€CˆØ‡G‚GˆAˆq�'Ý•h‘”Ô&Ð);Ñ;Àbð ñ Jô Jð Jà‡M‚M�"ÑÔÐØ‡M‚M�"ÑÔÐÐÐr*   Ú
heuristicazLaTeX lacks heuristica package)Úreasonzfont-heuristica.pdfc                  óþ   — d                      d¦  «        t          j        d<   t          j        ¦   «         \  } }|                     ddddd¬¦  «         |                     g ¦  «         |                     g ¦  «         d S )	Nú
)z\usepackage{heuristica}ú\usepackage[T1]{fontenc}ú\usepackage[utf8]{inputenc}útext.latex.preambler½   zBHTem fi ffl 1234Té2   ©râ   r   ©Újoinr¦   r   r!   r"   r$   rü   rý   r³   s     r(   Útest_font_heuristicars  Õ  s|   € ð
 +/¯)ª)ð 5ñ +ô +…C„LÐ&Ñ'õ
 Œl‰nŒn�G€CˆØ‡G‚GˆC�Ð*°4À"€GÑEÔEÐEØ‡M‚M�"ÑÔÐØ‡M‚M�"ÑÔÐÐÐr*   Ú
DejaVuSanszLaTeX lacks DejaVuSans packagezfont-dejavusans.pdfc                  ó2  — d                      d¦  «        t          j        d<   t          j        ¦   «         \  } }|                     ddddd¬¦  «         |                     dd	d
dd¬¦  «         |                     g ¦  «         |                     g ¦  «         d S )Nrk  )z\usepackage{DejaVuSans}rl  rm  rn  r½   u   \textsf{Ã±Ã¤Ã¶ ABCDabcd}Tro  rp  ç333333Ó?z\textsf{fi ffl 1234}rq  r³   s     r(   Útest_font_dejavusansrw  å  s™   € ð
 +/¯)ª)ð 5ñ +ô +…C„LÐ&Ñ'õ Œl‰nŒn�G€CˆØ‡G‚GˆC�Ð1¸$È€GÑLÔLÐLØ‡G‚GˆC�Ð-°dÀR€GÑHÔHÐHØ‡M‚M�"ÑÔÐØ‡M‚M�"ÑÔÐÐÐr*   ÚcharterzLaTeX lacks charter packagezfont-bitstream-charter.pdfc                  ó2  — d                      d¦  «        t          j        d<   t          j        ¦   «         \  } }|                     ddddd¬¦  «         |                     dd	d
dd¬¦  «         |                     g ¦  «         |                     g ¦  «         d S )Nrk  )z\usepackage{charter}rl  rm  rn  r½   u   Ã¥Ã¼Å¡ ABCDabcdTro  rp  rv  zfi ffl 1234rq  r³   s     r(   Útest_font_bitstream_charterrz  ÷  s˜   € ð +/¯)ª)ð 5ñ +ô +…C„LÐ&Ñ'õ
 Œl‰nŒn�G€CˆØ‡G‚GˆC�Ð(°À€GÑCÔCÐCØ‡G‚GˆC��n¨T¸B€GÑ?Ô?Ð?Ø‡M‚M�"ÑÔÐØ‡M‚M�"ÑÔÐÐÐr*   c                  ó~  — t           j                             d¦  «        } d}|                      |¦  «        dz  }|                      |¦  «        dz  }|                      |¦  «        }t          j        ¦   «         \  }}|                     |||¬¦  «         |                     dd¦  «         |                     dd¦  «         t          j	        ¦   «         }| 
                    |d¬¦  «         |                     ¦   «         }t          j        |¦  «         t          j        ¦   «         \  }	}
|
                     g g ¦  «         |
                     dd¦  «         |
                     dd¦  «         t          j	        ¦   «         }|	 
                    |d¬¦  «         |                     ¦   «         }t          j        |	¦  «         t          j        ¦   «         \  }}|                     |dz   |dz   |¬¦  «         |                     dd¦  «         |                     dd¦  «         t          j	        ¦   «         }| 
                    |d¬¦  «         |                     ¦   «         }t          j        |¦  «         ||d	z   k     sJ d
|› d|› d�¦   «         ‚||dz   k    sJ d|› d|› d�¦   «         ‚||dz   k    sJ d|› d|› d�¦   «         ‚dS )a(  
    Test that off-axis scatter plots with per-point colors don't bloat PDFs.

    Regression test for issue #2488. When scatter points with per-point colors
    are completely outside the visible axes, the PDF backend should skip
    writing those markers to significantly reduce file size.
    é!N,éè  r9   r  r  é   r/   r0   iˆ  zOff-axis colored scatter PDF (z< bytes) is too large. Expected close to empty scatter size (z- bytes). Markers may not be properly skipped.i˜:  zVisible scatter PDF (z* bytes) should be much larger than empty (z bytes) to validate the test.z- bytes) should be much larger than off-axis (z! bytes) to validate optimization.N)rM   ÚrandomÚdefault_rngr!   r"   ÚscatterrQ   Úset_ylimr2   r3   r6   ÚtellÚclose)ÚrngÚn_pointsrþ   rÔ   r  Úfig1Úax1Úbuf1Úsize_offaxis_coloredÚfig2Úax2Úbuf2Ú
size_emptyÚfig3Úax3Úbuf3Úsize_visibles                    r(   Ú%test_scatter_offaxis_colored_pdf_sizer“    sá  € õ Œ)×
Ò
 Ñ
)Ô
)€Cà€HØ�
Š
�8ÑÔ˜rÑ!€AØ�
Š
�8ÑÔ˜rÑ!€AØ�
Š
�8ÑÔ€Aõ ”‘”�I€Dˆ#Ø‡K‚K��1˜€KÑÔÐØ‡L‚L��RÑÔÐØ‡L‚L��RÑÔÐåŒ:‰<Œ<€DØ‡L‚L�˜e€LÑ$Ô$Ð$ØŸ9š9™;œ;ÐÝ„Iˆd�O„O€Oõ ”‘”�I€Dˆ#Ø‡K‚K��BÑÔÐØ‡L‚L��RÑÔÐØ‡L‚L��RÑÔÐåŒ:‰<Œ<€DØ‡L‚L�˜e€LÑ$Ô$Ð$Ø—’‘”€JÝ„Iˆd�O„O€Oõ ”‘”�I€Dˆ#Ø‡K‚K��B‘˜˜B™ !€KÑ$Ô$Ð$Ø‡L‚L��RÑÔÐØ‡L‚L��RÑÔÐåŒ:‰<Œ<€DØ‡L‚L�˜e€LÑ$Ô$Ð$Ø—9’9‘;”;€LÝ„Iˆd�O„O€Oð   *¨uÑ"4Ò4Ð4Ð4ð	0Ð)=ð 	0ð 	0Ø1;ð	0ð 	0ð 	0ñ 5Ô4Ð4ð ˜* vÑ-Ò-Ð-Ð-ð	A ð 	Að 	AØ!ð	Að 	Að 	Añ .Ô-Ð-ð Ð.°Ñ7Ò7Ð7Ð7ð	R ð 	Rð 	RØ.ð	Rð 	Rð 	Rñ 8Ô7Ð7Ð7Ð7r*   c                 ó6  — t           j                             d¦  «        }d}|                     |¦  «        dz  }|                     |¦  «        dz  }|                     |¦  «        }|                      ¦   «         }|                     |||d¬¦  «         |                     dd¦  «         |                     dd¦  «         |                     ¦   «         }|                     |||d¬¦  «         |                     dd¦  «         |                     dd¦  «         dS )	z±
    Test that on-axis scatter with per-point colors still renders correctly.

    Ensures the optimization for off-axis markers doesn't break normal
    scatter rendering.
    r|  r  rJ   ro  ©r  r@   r   r9   N)rM   r  r€  r"   r�  rQ   r‚  ©	r  r  r…  r†  rþ   rÔ   r  r  r  s	            r(   Ú#test_scatter_offaxis_colored_visualr—  N  s  € õ Œ)×
Ò
 Ñ
)Ô
)€Cà€HØ�
Š
�8ÑÔ˜qÑ €AØ�
Š
�8ÑÔ˜qÑ €AØ�
Š
�8ÑÔ€Að ×ÒÑ!Ô!€GØ‡O‚O�A�q˜A €OÑ$Ô$Ð$Ø×Ò�Q˜ÑÔÐØ×Ò�Q˜ÑÔÐð ×ÒÑÔ€FØ
‡N‚N�1�a˜1 €NÑ#Ô#Ð#Ø
‡O‚O�A�rÑÔÐØ
‡O‚O�A�rÑÔÐÐÐr*   c                 ó  — t           j                             d¦  «        }d}|                     |¦  «        dz  }|                     |¦  «        dz  }|                     |¦  «        dz  dz   }|                     |¦  «        dz  dz   }t          j        ||g¦  «        }t          j        ||g¦  «        }	|                     d|z  ¦  «        }
|                      ¦   «         }|                     ||	|
d¬¦  «         |                     dd¦  «         |                     dd¦  «         |                     ¦   «         }|                     |||
d	|…         d¬¦  «         |                     dd¦  «         |                     dd¦  «         d	S )
z¼
    Test scatter with some points on-axis and some off-axis.

    Ensures the optimization correctly handles the common case where only
    some markers are outside the visible area.
    r|  ro  rJ   é   r-   r•  r   r9   N)rM   r  r€  Úconcatenater"   r�  rQ   r‚  )r  r  r…  r†  Úx_onÚy_onÚx_offÚy_offrþ   rÔ   r  r  r  s                r(   Útest_scatter_mixed_onoff_axisrŸ  j  sy  € õ Œ)×
Ò
 Ñ
)Ô
)€Cð €HØ�:Š:�hÑÔ !Ñ#€DØ�:Š:�hÑÔ !Ñ#€DØ�JŠJ�xÑ Ô  1Ñ$ rÑ)€EØ�JŠJ�xÑ Ô  1Ñ$ rÑ)€Eå
Œ˜˜e�}Ñ%Ô%€AÝ
Œ˜˜e�}Ñ%Ô%€AØ�
Š
�1�x‘<Ñ Ô €Að ×ÒÑ!Ô!€GØ‡O‚O�A�q˜A €OÑ$Ô$Ð$Ø×Ò�Q˜ÑÔÐØ×Ò�Q˜ÑÔÐð ×ÒÑÔ€FØ
‡N‚N�4˜  9 H 9¤°€NÑ4Ô4Ð4Ø
‡O‚O�A�rÑÔÐØ
‡O‚O�A�rÑÔÐÐÐr*   c                 óî  — t          j        g d¢¦  «        }t          j        g d¢¦  «        }t          j        g d¢¦  «        }|                      ¦   «         }|                     |||d¬¦  «         |                     dd¦  «         |                     dd¦  «         |                     ¦   «         }|                     |||d¬¦  «         |                     dd¦  «         |                     dd¦  «         dS )	zÜ
    Test that large markers are rendered when partially visible.

    Addresses reviewer concern: markers with centers outside the canvas but
    with edges extending into the visible area should still be rendered.
    )ç      à¿g      %@rJ   )rJ   rJ   r¡  )gš™™™™™É?r   gš™™™™™é?iô  r•  r   r9   N)rM   Úarrayr"   r�  rQ   r‚  )r  r  rþ   rÔ   r  r  r  s          r(   Ú'test_scatter_large_markers_partial_clipr£  Œ  sñ   € õ 	Œ���Ñ!Ô!€AÝ
Œ���ÑÔ€AÝ
Œ���Ñ!Ô!€Að ×ÒÑ!Ô!€GØ‡O‚O�A�q˜A €OÑ%Ô%Ð%Ø×Ò�Q˜ÑÔÐØ×Ò�Q˜ÑÔÐð ×ÒÑÔ€FØ
‡N‚N�1�a˜1 €NÑ$Ô$Ð$Ø
‡O‚O�A�rÑÔÐØ
‡O‚O�A�rÑÔÐÐÐr*   c                 óê  — t           j                             d¦  «        }d}d|                     |¦  «        dz  z  }d|                     |¦  «        dz  z  }|                     |¦  «        }|                      ¦   «         }|                     |||d¬¦  «         |                     d¦  «         |                     d¦  «         |                     dd¦  «         |                     dd¦  «         |                     ¦   «         }|                     |||d¬¦  «         |                     d¦  «         |                     d¦  «         |                     dd¦  «         |                     dd¦  «         d	S )
z‰
    Test scatter optimization with logarithmic scales.

    Ensures bounds checking works correctly in log-transformed coordinates.
    r|  ro  r9   é   r•  Úlogr  r}  N)	rM   r  r€  r"   r�  Ú
set_xscaleÚ
set_yscalerQ   r‚  r–  s	            r(   Útest_scatter_logscaler©  ¨  sk  € õ Œ)×
Ò
 Ñ
)Ô
)€Cð €HØ
ˆs�zŠz˜(Ñ#Ô# aÑ'Ñ(€AØ
ˆs�zŠz˜(Ñ#Ô# aÑ'Ñ(€AØ�
Š
�8ÑÔ€Að ×ÒÑ!Ô!€GØ‡O‚O�A�q˜A €OÑ$Ô$Ð$Ø×Ò�uÑÔÐØ×Ò�uÑÔÐØ×Ò�S˜$ÑÔÐØ×Ò�S˜$ÑÔÐð ×ÒÑÔ€FØ
‡N‚N�1�a˜1 €NÑ#Ô#Ð#Ø
×Ò�eÑÔÐØ
×Ò�eÑÔÐØ
‡O‚O�C˜ÑÔÐØ
‡O‚O�C˜ÑÔÐÐÐr*   c                 ó  — t           j                             d¦  «        }d}|                     |¦  «        dz  t           j        z  }|                     |¦  «        dz  }|                     |¦  «        }|                      ddi¬¦  «        }|                     |||d¬¦  «         |                     d	d¦  «         |                     ddi¬¦  «        }|                     |||d¬¦  «         |                     d	d¦  «         d
S )z~
    Test scatter optimization with polar coordinates.

    Ensures bounds checking works correctly in polar projections.
    r|  ro  r-   r.   Ú
projectionÚpolar)Ú
subplot_kwr•  r   N)rM   r  r€  Úpir"   r�  r‚  )	r  r  r…  r†  ÚthetaÚrr  r  r  s	            r(   Útest_scatter_polarr±  È  s   € õ Œ)×
Ò
 Ñ
)Ô
)€Cà€HØ�JŠJ�xÑ Ô  1Ñ$¥r¤uÑ,€EØ�
Š
�8ÑÔ˜qÑ €AØ�
Š
�8ÑÔ€Að ×Ò¨L¸'Ð+BÐÑCÔC€GØ‡O‚O�E˜1  R€OÑ(Ô(Ð(Ø×Ò�Q˜ÑÔÐð ×Ò¨,¸Ð)@ÐÑAÔA€FØ
‡N‚N�5˜!˜q B€NÑ'Ô'Ð'Ø
‡O‚O�A�qÑÔÐÐÐr*   g      ð?)r  Útolc                 ó\  — t           j                             d¦  «        }|                     d¬¦  «        }|                     d¬¦  «        }|                      ¦   «         }|                     ||dd¬¦  «         |                     dd¦  «         |                     dd¦  «         |                     ¦   «          |                     ¦   «         }|                     |dz   |dz   dd¬¦  «         |                     d	d
¦  «         |                     d	d
¦  «         |                     ¦   «          dS )aP  
    Test path collection culling with non-canvas-space offsets.

    Hexbin uses a repeated polygon path with offsets transformed by
    AffineDeltaTransform.  The transformed offsets are displacements, not the
    final canvas-space marker centers, so PDF backend culling must account for
    the transformed path bounds as well.
    r|  i'  r  é   rõ   )ÚgridsizeÚ
edgecolorsg       Àg       @g        g      @N)	rM   r  r€  Únormalr"   ÚhexbinrQ   r‚  r	  )r  r  r…  rþ   rÔ   r  r  s          r(   Útest_hexbin_negative_offsetsr¹  á  s  € õ Œ)×
Ò
 Ñ
)Ô
)€CØ�
Š
˜ˆ
ÑÔ€AØ�
Š
˜ˆ
ÑÔ€Aà×ÒÑ!Ô!€GØ‡N‚N�1�a "°€NÑ8Ô8Ð8Ø×Ò�T˜3ÑÔÐØ×Ò�T˜3ÑÔÐØ×ÒÑÔÐà×ÒÑÔ€FØ
‡M‚M�!�c‘'˜1˜s™7¨R¸F€MÑCÔCÐCØ
‡O‚O�C˜ÑÔÐØ
‡O‚O�C˜ÑÔÐØ
×ÒÑÔÐÐÐr*   )Or¡   rÐ   r2   Úpathlibr   rT  ÚnumpyrM   Úpackaging.versionr   rh   r`   Ú
matplotlibr¦   r   r!   r   r   r'  Úmatplotlib.cbookr   Úmatplotlib.ft2fontr	   Ú#matplotlib.backends._backend_pdf_psr
   r   Úmatplotlib.backends.backend_pdfr   Úmatplotlib.patchesr   Úmatplotlib.testingr   r   Úmatplotlib.testing.decoratorsr   r   Úmatplotlib.testing._markersr   r)   r7   rA   rG   rX   r{   r«   r´   r·   rÖ   rß   rä   ræ   rò   r   r   Úcontextr  r  r  r  r2  r@  rC  rY  r[  ÚmarkÚparametrizera  rg  Úskipifrs  rw  rz  r“  r—  rŸ  r£  r©  r±  r¹  r�   r*   r(   ú<module>rÊ     só  ðØ €€€Ø €€€Ø 	€	€	€	Ø Ð Ð Ð Ð Ð Ø €€€à Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø €€€à Ð Ð Ð ðð ð ð ð ð ð ð ð ð ð ,Ð +Ð +Ð +Ð +Ð +Ø &Ð &Ð &Ð &Ð &Ð &Ø OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø (Ð (Ð (Ð (Ð (Ð (Ø EÐ EÐ EÐ EÐ EÐ EÐ EÐ EØ OÐ OÐ OÐ OÐ OÐ OÐ OÐ OØ 4Ð 4Ð 4Ð 4Ð 4Ð 4ð ÐÐ+Ð,°OÐDÑDÔDð#ð #ñ EÔDð#ð&(ð (ð (ð	ð 	ð 	ðð ð ð+ð +ð +ð&-ð -ð -ð6 ð  ð  ðFJð Jð Jð("ð "ð "ðJ@ð @ð @ð6@ð @ð @ð4 ð@ð @ñ „ð@ð0"ð "ð "ð
 ÐÐ(Ð)°Ð9Ñ9Ô9ð	/ð 	/ñ :Ô9ð	/ð ÐÐ(Ð)°ÐAÑAÔAðð ñ BÔAðð „×Ò�9ÑÔØÐ ¨ Ð/Ñ/Ô/ðð ñ 0Ô/ñ Ôðð ð0ð 0ñ „ð0ð,ð ,ð ,ð Ð�=�/¨Ð1Ñ1Ô1ð!ð !ñ 2Ô1ð!ðBð Bð Bð4 ÐÐ)Ð*°'Ð:Ñ:Ô:ðGð Gñ ;Ô:ðGð ÐÐ*Ð+°7Ð;Ñ;Ô;ðGð Gñ <Ô;ðGð Ð�?Ð#¨7Ð3Ñ3Ô3ðKð Kñ 4Ô3ðKð ÐÐ#Ð$¨GÐ4Ñ4Ô4ðKð Kñ 5Ô4ðKð „×ÒÐ1Ø?Ø6ð8ñ9ô 9ð
,ð 
,ñ9ô 9ð
,ð ÐÐ,Ð-°WÐ=Ñ=Ô=ðð ñ >Ô=ðð „×ÒÐ(Ð(¨Ñ6Ô6Ð6Ø;ð ñ =ô =àÐÐ(Ð)°ÐAÑAÔAð
ð 
ñ BÔAñ=ô =ð
ð „×ÒÐ(Ð(¨Ñ6Ô6Ð6Ø;ð ñ =ô =àÐÐ(Ð)°ÐAÑAÔAðð ñ BÔAñ=ô =ðð „×ÒÐ(Ð(¨Ñ3Ô3Ð3Ø8ð ñ :ô :àÐÐ/Ð0¸ÐHÑHÔHð
ð 
ñ IÔHñ:ô :ð
ðDð Dð DðN Ð  Ð(Ñ(Ô(ðð ñ )Ô(ðð6 Ð  Ð(Ñ(Ô(ðð ñ )Ô(ððB Ð  Ð(Ñ(Ô(ðð ñ )Ô(ðð6 Ð  Ð(Ñ(Ô(ðð ñ )Ô(ðð> Ð  Ð(Ñ(Ô(ðð ñ )Ô(ðð0 Ð  ¨SÐ1Ñ1Ô1ðð ñ 2Ô1ðð ð r*   