§
    ‡Ûgj,  ã                   óJ  — 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 d dlm	Z	 d dl
mZ  eddgd¬¦  «        dd	„¦   «         ZegZd
gZd„ Zej                             dee¬¦  «        d„ ¦   «         Zej                             dee¬¦  «        d„ ¦   «         Zej                             dee¬¦  «        d„ ¦   «         Zej                             dee¬¦  «        d„ ¦   «         Zej                             dee¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Zd„ Zd„ Z G d„ d¦  «        ZdS )é    N©Ú_preprocess_data)ÚAxes)Úcheck_figures_equalÚxÚy©Úreplace_namesÚlabel_namerÚxyzc           
      óX   — dt          |¦  «        ›dt          |¦  «        ›d|›d|›d|›�
S ©Nzx: z, y: z, ls: z, w: z	, label: ©Úlist©Úaxr   r   ÚlsÚlabelÚws         ú[/granary/edev/quantum/lib/python3.11/site-packages/matplotlib/tests/test_preprocess_data.pyÚ	plot_funcr      s9   € € õ 	ˆQ‰Œˆˆ•�a‘”��˜"˜"˜"˜a˜a˜a  ð(ð )ó    r   c                  óR  — d„ } d„ }d„ }d„ } t          ddg¬¦  «        | ¦  «          t          ddg¬¦  «        |¦  «          t          ddg¬¦  «        |¦  «         t          j        t          ¦  «        5   t          g d¢¬¦  «        |¦  «         d	d	d	¦  «         n# 1 swxY w Y    t          g d	¬
¦  «        | ¦  «          t          g d	¬
¦  «        |¦  «          t          g d	¬
¦  «        |¦  «          t          g d	¬
¦  «        |¦  «         t          j        t          ¦  «        5   t          d¬¦  «        | ¦  «         d	d	d	¦  «         n# 1 swxY w Y   t          j        t          ¦  «        5   t          d¬¦  «        |¦  «         d	d	d	¦  «         d	S # 1 swxY w Y   d	S )z.Test decorator invocations -> no replacements.c                 ó   — d S ©N© )r   r   r   s      r   Úfuncz%test_compiletime_checks.<locals>.func    ó   € € € r   c                 ó   — d S r   r   )r   r   r   Úargss       r   Ú	func_argsz*test_compiletime_checks.<locals>.func_args!   r   r   c                 ó   — d S r   r   )r   r   r   Úkwargss       r   Úfunc_kwargsz,test_compiletime_checks.<locals>.func_kwargs"   r   r   c                  ó   — d S r   r   )r    r#   s     r   Úfunc_no_ax_argsz0test_compiletime_checks.<locals>.func_no_ax_args#   r   r   r   r   ©r
   )r   r   ÚzNr	   r(   ©r   )r   ÚpytestÚraisesÚAssertionError)r   r!   r$   r&   s       r   Útest_compiletime_checksr-      s±  € ð ÐÐØ(Ð(Ð(Ø-Ð-Ð-Ø.Ð.Ð.ð /Õ C¨ :Ð.Ñ.Ô.¨tÑ4Ô4Ð4Ø.Õ C¨ :Ð.Ñ.Ô.¨{Ñ;Ô;Ð;à.Õ C¨ :Ð.Ñ.Ô.¨yÑ9Ô9Ð9õ 
Œ•~Ñ	&Ô	&ð Cð Cà7Õ   Ð7Ñ7Ô7¸	ÑBÔBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cð
 9Õ 2°4Ð8Ñ8Ô8¸Ñ>Ô>Ð>Ø8Õ 2°4Ð8Ñ8Ô8¸ÑCÔCÐCØ8Õ 2°4Ð8Ñ8Ô8¸ÑEÔEÐEØ8Õ 2°4Ð8Ñ8Ô8¸ÑIÔIÐIõ 
Œ•~Ñ	&Ô	&ð 0ð 0Ø)Õ SÐ)Ñ)Ô)¨$Ñ/Ô/Ð/ð0ð 0ð 0ñ 0ô 0ð 0ð 0ð 0ð 0ð 0ð 0øøøð 0ð 0ð 0ð 0õ 
Œ•~Ñ	&Ô	&ð 5ð 5Ø)Õ SÐ)Ñ)Ô)¨)Ñ4Ô4Ð4ð5ð 5ð 5ñ 5ô 5ð 5ð 5ð 5ð 5ð 5ð 5ð 5øøøð 5ð 5ð 5ð 5ð 5ð 5s6   Á7BÂB#Â&B#Ä+EÅEÅEÅ5FÆF Æ#F r   )Úidsc                 óü   —  | ddd¦  «        dk    sJ ‚ | ddd¬¦  «        dk    sJ ‚ | dddd¬¦  «        dk    sJ ‚ | dddd	¬¦  «        d
k    sJ ‚ | dddd¬¦  «        dk    sJ ‚ | dddd	¬¦  «        d
k    sJ ‚dS )z%Test without data -> no replacements.Nr   r   z.x: ['x'], y: ['y'], ls: x, w: xyz, label: None)r   r   Ú )r   z*x: ['x'], y: ['y'], ls: x, w: xyz, label: Útextz.x: ['x'], y: ['y'], ls: x, w: xyz, label: text)r   r   r   r   )r   s    r   Útest_function_call_without_datar2   >   s  € ð ˆD��s˜CÑ Ô Ø<ò=ð =ð =ð =àˆD�˜ Ð$Ñ$Ô$Ø<ò=ð =ð =ð =àˆD��s˜C rÐ*Ñ*Ô*Ø8ò9ð 9ð 9ð 9àˆD��s˜C vÐ.Ñ.Ô.Ø<ò=ð =ð =ð =àˆD�˜ ¨2Ð.Ñ.Ô.Ø8ò9ð 9ð 9ð 9àˆD�˜ ¨6Ð2Ñ2Ô2Ø<ò=ð =ð =ð =ð =ð =r   c                 ó~   — dddœ} | d|                      ¦   «         |                     ¦   «         ¦  «        dk    sJ ‚dS )z8Tests with dict input, unpacking via preprocess_pipelineé   é   )ÚaÚbNz4x: ['a', 'b'], y: [1, 2], ls: x, w: xyz, label: None)ÚkeysÚvalues©r   Údatas     r   Ú"test_function_call_with_dict_inputr<   O   sY   € ð ˜ÐÐ€DØˆD��t—y’y‘{”{ D§K¢K¡M¤MÑ2Ô2ØBòCð Cð Cð Cð Cð Cr   c                 ó  — ddgddgddœ} | ddd	|¬
¦  «        dk    sJ ‚ | ddd	|¬¦  «        dk    sJ ‚ | ddd	d|¬¦  «        dk    sJ ‚ | ddd	d|¬¦  «        dk    sJ ‚ | ddd	d|¬¦  «        dk    sJ ‚ | ddd	d|¬¦  «        dk    sJ ‚dS )zCTest with dict data -> label comes from the value of 'x' parameter.r4   r5   é   é	   ÚNOT©r6   r7   r   Nr6   r7   ©r;   ú-x: [1, 2], y: [8, 9], ls: x, w: xyz, label: b©r   r   r;   r0   ©r   r;   ú,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r1   ú0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: text©r   r   r   r;   r   r:   s     r   Ú!test_function_call_with_dict_datarI   W   s;  € ð �Q�˜q !˜f¨5Ð1Ð1€DØˆD��s˜C dÐ+Ñ+Ô+Ø;ò<ð <ð <ð <àˆD�˜ ¨$Ð/Ñ/Ô/Ø;ò<ð <ð <ð <àˆD��s˜C r°Ð5Ñ5Ô5Ø:ò;ð ;ð ;ð ;àˆD��s˜C v°DÐ9Ñ9Ô9Ø>ò?ð ?ð ?ð ?àˆD�˜ ¨2°DÐ9Ñ9Ô9Ø:ò;ð ;ð ;ð ;àˆD�˜ ¨6¸Ð=Ñ=Ô=Ø>ò?ð ?ð ?ð ?ð ?ð ?r   c                 ó  — ddgddœ} | ddd|¬¦  «        d	k    sJ ‚ | ddd|¬
¦  «        d	k    sJ ‚ | dddd|¬¦  «        dk    sJ ‚ | dddd|¬¦  «        dk    sJ ‚ | dddd|¬¦  «        dk    sJ ‚ | dddd|¬¦  «        dk    sJ ‚dS )zETest the case that one var is not in data -> half replaces, half keptr4   r5   r@   )r6   r   Nr6   r7   rB   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: brD   r0   rE   z+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r1   z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textrH   r   r:   s     r   Ú-test_function_call_with_dict_data_not_in_datarK   i   s5  € ð �Q�˜eÐ$Ð$€DØˆD��s˜C dÐ+Ñ+Ô+Ø:ò;ð ;ð ;ð ;àˆD�˜ ¨$Ð/Ñ/Ô/Ø:ò;ð ;ð ;ð ;àˆD��s˜C r°Ð5Ñ5Ô5Ø9ò:ð :ð :ð :àˆD��s˜C v°DÐ9Ñ9Ô9Ø=ò>ð >ð >ð >àˆD�˜ ¨2°DÐ9Ñ9Ô9Ø9ò:ð :ð :ð :àˆD�˜ ¨6¸Ð=Ñ=Ô=Ø=ò>ð >ð >ð >ð >ð >r   c                 óÀ  — |                      t          j        ddgt          j        ¬¦  «        t          j        ddgt          j        ¬¦  «        ddgdœ¦  «        } | dd	d
|¬¦  «        dk    sJ ‚ | dd	d
|¬¦  «        dk    sJ ‚ | dd	d
d|¬¦  «        dk    sJ ‚ | dd	d
d|¬¦  «        dk    sJ ‚ | dd	d
d|¬¦  «        dk    sJ ‚ | dd	d
d|¬¦  «        dk    sJ ‚dS )zDTest with pandas dataframe -> label comes from ``data["col"].name``.r4   r5   )Údtyper>   r?   r@   rA   Nr6   r7   rB   rC   rD   r0   rE   rF   r1   rG   rH   )Ú	DataFrameÚnpÚarrayÚint32)r   Úpdr;   s      r   Ú#test_function_call_with_pandas_datarS   {   sy  € ð �<Š<�bœh¨¨1 vµR´XÐ>Ñ>Ô>Ý œh¨¨1 vµR´XÐ>Ñ>Ô>Ø$ e˜nð.ð .ñ /ô /€Dð ˆD��s˜C dÐ+Ñ+Ô+Ø;ò<ð <ð <ð <àˆD�˜ ¨$Ð/Ñ/Ô/Ø;ò<ð <ð <ð <àˆD��s˜C r°Ð5Ñ5Ô5Ø:ò;ð ;ð ;ð ;àˆD��s˜C v°DÐ9Ñ9Ô9Ø>ò?ð ?ð ?ð ?àˆD�˜ ¨2°DÐ9Ñ9Ô9Ø:ò;ð ;ð ;ð ;àˆD�˜ ¨6¸Ð=Ñ=Ô=Ø>ò?ð ?ð ?ð ?ð ?ð ?r   c                  ó^  — ddgddgddœ} t          d¬¦  «        dd„¦   «         } |d
ddd	| ¬¦  «        dk    sJ ‚ |d
ddd	| ¬¦  «        dk    sJ ‚ |d
ddd	d| ¬¦  «        dk    sJ ‚ |d
ddd	d| ¬¦  «        dk    sJ ‚ |d
ddd	d| ¬¦  «        dk    sJ ‚ |d
ddd	d| ¬¦  «        dk    sJ ‚d
S )zETest without a "replace_names" argument, all vars should be replaced.r4   r5   r>   r?   r   )r6   r7   r   r   r)   r   Nr@   c           
      óX   — dt          |¦  «        ›dt          |¦  «        ›d|›d|›d|›�
S r   r   r   s         r   Úfunc_replace_allz8test_function_call_replace_all.<locals>.func_replace_all”   ó9   € € õ �‰GŒGˆGˆG•T˜!‘W”W�W�W˜b˜b˜b ! ! ! U Uð,ð 	,r   r6   r7   )r   r;   rC   )r   r   r   r;   r0   )r   r   r;   rF   r1   rG   )r   r   r   r   r;   )r   Nr@   r   )r;   rV   s     r   Útest_function_call_replace_allrX   �   s}  € à�Q�˜q !˜f¨5Ð1Ð1€Då #Ð&Ñ&Ô&ð,ð ,ð ,ñ 'Ô&ð,ð Ð˜T 3¨¨s¸Ð>Ñ>Ô>Ø;ò<ð <ð <ð <àÐ˜T S¨C°3¸TÐBÑBÔBØ;ò<ð <ð <ð <àÐ˜T 3¨¨s¸"À4ÐHÑHÔHØ:ò;ð ;ð ;ð ;ð 	Ð˜˜s C¨3°fÀ4ÐHÑHÔHØ:ò	;ð 	;ð 	;ð 	;ð 	Ð˜ ¨¨s¸"À4ÐHÑHÔHØ6ò	7ð 	7ð 	7ð 	7ð 	Ð˜ ¨¨s¸&ÀtÐLÑLÔLØ:ò	;ð 	;ð 	;ð 	;ð 	;ð 	;r   c                  ó   — t          ddgd¬¦  «        dd„¦   «         } ddgd	d
gddœ} | ddd|¬¦  «        dk    sJ ‚ | ddd|¬¦  «        dk    sJ ‚ | dddd|¬¦  «        dk    sJ ‚ | dddd|¬¦  «        dk    sJ ‚dS )z<Test with "label_namer=None" -> no label replacement at all.r   r   Nr	   r   c           
      óX   — dt          |¦  «        ›dt          |¦  «        ›d|›d|›d|›�
S r   r   r   s         r   Úfunc_no_labelz1test_no_label_replacements.<locals>.func_no_label­   rW   r   r4   r5   r>   r?   r@   rA   r6   r7   rB   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: NonerD   r0   rE   rF   r1   rG   ©r   Nr   r   )r[   r;   s     r   Útest_no_label_replacementsr]   ª   s  € õ  S¨# J¸DÐAÑAÔAð,ð ,ð ,ñ BÔAð,ð �Q�˜q !˜f¨5Ð1Ð1€DØˆM˜$  S¨tÐ4Ñ4Ô4Ø>ò?ð ?ð ?ð ?àˆM˜$ #¨°4Ð8Ñ8Ô8Ø>ò?ð ?ð ?ð ?àˆM˜$  S°¸Ð>Ñ>Ô>Ø:ò;ð ;ð ;ð ;àˆM˜$  S°¸TÐBÑBÔBØ>ò?ð ?ð ?ð ?ð ?ð ?r   c            	      óÚ   — t          ddgd¬¦  «        dd„¦   «         } ddgddgd	d
œ}t          j        t          ¦  «        5   | d dddd|¬¦  «         d d d ¦  «         d S # 1 swxY w Y   d S )Nr   r   r	   r4   c                 ó   — d S r   r   )r   r   r   r(   s       r   r   z/test_more_args_than_pos_parameter.<locals>.func¾   s   € àˆr   r5   r>   r?   r@   rA   r6   r7   r(   rB   )r4   )r   r*   r+   Ú	TypeErrorr:   s     r   Ú!test_more_args_than_pos_parameterra   ½   sÝ   € Ý S¨# J¸CÐ@Ñ@Ô@ðð ð ñ AÔ@ðð �Q�˜q !˜f¨5Ð1Ð1€DÝ	Œ•yÑ	!Ô	!ð 2ð 2ØˆˆT�3˜˜S #¨DÐ1Ñ1Ô1Ð1ð2ð 2ð 2ñ 2ô 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2øøøð 2ð 2ð 2ð 2ð 2ð 2s   ÁA Á A$Á'A$c                  ó–  — t          ¦   «         d„ ¦   «         } t          j        d| j        ¦  «        sJ ‚t          j        d| j        ¦  «        rJ ‚t          g ¬¦  «        dd„¦   «         } t          j        d| j        ¦  «        rJ ‚t          j        d| j        ¦  «        rJ ‚t          dg¬¦  «        dd„¦   «         } t          j        d| j        ¦  «        rJ ‚t          j        d| j        ¦  «        rJ ‚t          d	d
g¬¦  «        dd„¦   «         } t          j        d| j        ¦  «        rJ ‚t          j        d| j        ¦  «        rJ ‚d S )Nc                 ó   — dS ©z€
        Parameters
        ----------
        data : indexable object, optional
            DATA_PARAMETER_PLACEHOLDER
        Nr   )r   r    r#   s      r   Úfuncyz&test_docstring_addition.<locals>.funcyÈ   r   r   z#all parameters also accept a stringzthe following parametersr'   c                 ó   — dS rd   r   ©r   r   r   r(   Úbars        r   re   z&test_docstring_addition.<locals>.funcyÔ   r   r   rh   c                 ó   — dS rd   r   rg   s        r   re   z&test_docstring_addition.<locals>.funcyà   r   r   z&the following parameters .*: \*bar\*\.r   Útc                 ó   — dS rd   r   )r   r   r   r(   rj   s        r   re   z&test_docstring_addition.<locals>.funcyí   r   r   z+the following parameters .*: \*x\*, \*t\*\.r   )r   ÚreÚsearchÚ__doc__)re   s    r   Útest_docstring_additionro   Ç   s¨  € ÝÑÔðð ñ Ôðõ Œ9Ð;¸U¼]ÑKÔKÐKÐKÐKÝŒyÐ4°e´mÑDÔDÐDÐDÐDå BÐ'Ñ'Ô'ðð ð ñ (Ô'ðõ ŒyÐ?ÀÄÑOÔOÐOÐOÐOÝŒyÐ4°e´mÑDÔDÐDÐDÐDå U GÐ,Ñ,Ô,ðð ð ñ -Ô,ðõ ŒyÐ?ÀÄÑOÔOÐOÐOÐOÝŒyÐBØœñ(ô (ð (ð (ð (õ  S¨# JÐ/Ñ/Ô/ðð ð ñ 0Ô/ðõ ŒyÐ?ÀÄÑOÔOÐOÐOÐOÝŒyÐGØœñ(ô (ð (ð (ð (ð (ð (r   c                  ól   — d} t           j        d| g}t          j        |dd¬¦  «        }d|j        vsJ ‚dS )zƒ
    Test that the docstring contains the correct *data* parameter stub
    for all methods that we run _preprocess_data() on.
    zYimport logging; logging.basicConfig(level=logging.DEBUG); import matplotlib.pyplot as pltz-cT)r1   Úcapture_outputzdata parameter docstring errorN)ÚsysÚ
executableÚ
subprocessÚrunÚstderr)ÚprogramÚcmdÚcompleted_procs      r   Útest_data_parameter_replacementrz   û   sL   € ð	*ð õ
 Œ>˜4 Ð
)€CÝ”^ C¨dÀ4ÐHÑHÔH€NØ+°>Ô3HÐHÐHÐHÐHÐHÐHr   c                   ó  — e Zd Zej        ej        ej        gZej	         
                    de¦  «         edg¬¦  «        d„ ¦   «         ¦   «         Zej	         
                    de¦  «         edg¬¦  «        d„ ¦   «         ¦   «         ZdS )ÚTestPlotTypesÚplotterÚpng)Ú
extensionsc                 ó  — g d¢}g d¢}t          t          ||¦  «        ¦  «        } ||                     ¦   «         |                     ¦   «         |                     ¦   «         ¦  «          ||                     ¦   «         ||¦  «         d S )N©r4   r5   é   ©é   é   é   )ÚdictÚzipÚsubplotsr8   r9   )Úselfr}   Úfig_testÚfig_refr   r   Úddicts          r   Útest_dict_unpackzTestPlotTypes.test_dict_unpack  s†   € ð ˆIˆIˆØˆIˆIˆÝ•S˜˜A‘Y”Y‘”ˆàˆ�×!Ò!Ñ#Ô#Ø—
’
‘”˜eŸlšl™nœnñ	.ô 	.ð 	.àˆ�× Ò Ñ"Ô" A qÑ)Ô)Ð)Ð)Ð)r   c                 óœ   — g d¢}g d¢} ||                      ¦   «         dd||dœ¬¦  «          ||                      ¦   «         ||¦  «         d S )Nr�   rƒ   ÚxvalÚyval)r�   r‘   rB   )r‰   )rŠ   r}   r‹   rŒ   r   r   s         r   Útest_data_kwargzTestPlotTypes.test_data_kwarg  sr   € ð ˆIˆIˆØˆIˆIˆàˆ�×!Ò!Ñ#Ô# V¨VØ¨Ð+Ð+ð	-ñ 	-ô 	-ð 	-àˆ�× Ò Ñ"Ô" A qÑ)Ô)Ð)Ð)Ð)r   N)Ú__name__Ú
__module__Ú__qualname__r   Úscatterrh   ÚplotÚplottersr*   ÚmarkÚparametrizer   rŽ   r’   r   r   r   r|   r|   
  s¶   € € € € € à”˜dœh¨¬	Ð2€Hà„[×Ò˜Y¨Ñ1Ô1ØÐ U GÐ,Ñ,Ô,ð*ð *ñ -Ô,ñ 2Ô1ð*ð „[×Ò˜Y¨Ñ1Ô1ØÐ U GÐ,Ñ,Ô,ð*ð *ñ -Ô,ñ 2Ô1ð*ð *ð *r   r|   r\   )rl   rt   rr   ÚnumpyrO   r*   Ú
matplotlibr   Úmatplotlib.axesr   Úmatplotlib.testing.decoratorsr   r   Ú	all_funcsÚall_func_idsr-   r™   rš   r2   r<   rI   rK   rS   rX   r]   ra   ro   rz   r|   r   r   r   ú<module>r¡      sO  ðØ 	€	€	€	Ø Ð Ð Ð Ø 
€
€
€
à Ð Ð Ð Ø €€€à 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø  Ð  Ð  Ð  Ð  Ð  Ø =Ð =Ð =Ð =Ð =Ð =ð Ð  c 
¸Ð<Ñ<Ô<ð)ð )ð )ñ =Ô<ð)ð
 ˆK€	Øˆ}€ð5ð 5ð 5ðB „×Ò˜ °ÐÑ=Ô=ð>ð >ñ >Ô=ð>ð  „×Ò˜ °ÐÑ=Ô=ðDð Dñ >Ô=ðDð „×Ò˜ °ÐÑ=Ô=ð@ð @ñ >Ô=ð@ð" „×Ò˜ °ÐÑ=Ô=ð?ð ?ñ >Ô=ð?ð" „×Ò˜ °ÐÑ=Ô=ð@ð @ñ >Ô=ð@ð(<ð <ð <ð4@ð @ð @ð&2ð 2ð 2ð1(ð 1(ð 1(ðhIð Ið Ið*ð *ð *ð *ð *ñ *ô *ð *ð *ð *r   