
    hc,                        S SK r S SKrS SKrS SKrS SKJr  S SKJr  S SK	J
r
  S SKJr  \" SS/SS9SS	 j5       r\/rS
/rS r\R"                  R%                  S\\S9S 5       r\R"                  R%                  S\\S9S 5       r\R"                  R%                  S\\S9S 5       r\R"                  R%                  S\\S9S 5       r\R"                  R%                  S\\S9S 5       rS rS rS rS rS r " S S5      rg)    N_preprocess_data)Axes)subprocess_run_for_testing)check_figures_equalxyreplace_nameslabel_namerc           
      H    S[        U5       S[        U5       SU SU SU 3
$ Nzx: z, y: z, ls: z, w: z	, label: listaxr   r	   lslabelws         W/var/www/html/env/lib/python3.13/site-packages/matplotlib/tests/test_preprocess_data.py	plot_funcr      s/    a	tAwivbTqc5'JJ    r   c                     S n S nS nS n[        SS/S9" U 5        [        SS/S9" U5        [        SS/S9" U5        [        R                  " [        5         [        / SQS9" U5        S	S	S	5        [        / S	S
9" U 5        [        / S	S
9" U5        [        / S	S
9" U5        [        / S	S
9" U5        [        R                  " [        5         [        SS9" U 5        S	S	S	5        [        R                  " [        5         [        SS9" U5        S	S	S	5        g	! , (       d  f       N= f! , (       d  f       NR= f! , (       d  f       g	= f)z.Test decorator invocations -> no replacements.c                     g N )r   r   r	   s      r   func%test_compiletime_checks.<locals>.func   s    r   c                     g r   r   )r   r   r	   argss       r   	func_args*test_compiletime_checks.<locals>.func_args    s    Dr   c                     g r   r   )r   r   r	   kwargss       r   func_kwargs,test_compiletime_checks.<locals>.func_kwargs!   s    r   c                      g r   r   )r    r$   s     r   func_no_ax_args0test_compiletime_checks.<locals>.func_no_ax_args"   s    $r   r   r	   r   )r   r	   zNr
   r+   r   )r   pytestraisesAssertionError)r   r!   r%   r(   s       r   test_compiletime_checksr0      s    (-. C:.t4C:.{;C:.y9 
~	&7	B 
'
 248>248C248E248I 
~	&S)$/ 
' 
~	&S))4 
'	& 
'	& 
'	& 
'	&s$   DD* D;
D'*
D8;
E	r   )idsc                     U " SSS5      S:X  d   eU " SSSS9S:X  d   eU " SSSSS9S:X  d   eU " SSSS	S9S
:X  d   eU " SSSSS9S:X  d   eU " SSSS	S9S
:X  d   eg)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_datar5   =   s     sC <= > =$<= > =sCr*89 : 9sCv.<= > =2.89 : 962<= > =r   c                 f    SSS.nU " SUR                  5       UR                  5       5      S:X  d   eg)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?   N   s;     Dtyy{DKKM2BC D Cr   c                     SS/SS/SS.nU " SSS	US
9S:X  d   eU " SSS	US9S:X  d   eU " SSS	SUS9S:X  d   eU " SSS	SUS9S:X  d   eU " SSS	SUS9S:X  d   eU " SSS	SUS9S:X  d   eg)zCTest with dict data -> label comes from the value of 'x' parameter.r7   r8      	   NOTr9   r:   r   Nr9   r:   r>   -x: [1, 2], y: [8, 9], ls: x, w: xyz, label: br   r	   r>   r3   r   r>   ,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r4   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_datarL   V   s     Qq!f51DsCd+;< = <$/;< = <sCr5:; < ;sCvD9>? @ ?2D9:; < ;6=>? @ ?r   c                     SS/SS.nU " SSSUS9S	:X  d   eU " SSSUS
9S	:X  d   eU " SSSSUS9S:X  d   eU " SSSSUS9S:X  d   eU " SSSSUS9S:X  d   eU " SSSSUS9S:X  d   eg)zETest the case that one var is not in data -> half replaces, half keptr7   r8   rC   )r9   r   Nr9   r:   rE   z,x: [1, 2], y: ['b'], ls: x, w: xyz, label: brG   r3   rH   z+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r4   z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textrK   r   r=   s     r   -test_function_call_with_dict_data_not_in_datarN   h   s     Qe$DsCd+:; < ;$/:; < ;sCr59: ; :sCvD9=> ? >2D99: ; :6==> ? >r   c                 z   UR                  [        R                  " SS/[        R                  S9[        R                  " SS/[        R                  S9SS/S.5      nU " SS	S
US9S:X  d   eU " SS	S
US9S:X  d   eU " SS	S
SUS9S:X  d   eU " SS	S
SUS9S:X  d   eU " SS	S
SUS9S:X  d   eU " SS	S
SUS9S:X  d   eg)zDTest with pandas dataframe -> label comes from ``data["col"].name``.r7   r8   )dtyperA   rB   rC   rD   Nr9   r:   rE   rF   rG   r3   rH   rI   r4   rJ   rK   )	DataFramenparrayint32)r   pdr>   s      r   #test_function_call_with_pandas_datarV   z   s    <<bhh1vRXX> hh1vRXX>$en. /D sCd+;< = <$/;< = <sCr5:; < ;sCvD9>? @ ?2D9:; < ;6=>? @ ?r   c            	         SS/SS/SS.n [        SS9SS j5       nU" S
SSS	U S9S:X  d   eU" S
SSS	U S9S:X  d   eU" S
SSS	SU S9S:X  d   eU" S
SSS	SU S9S:X  d   eU" S
SSS	SU S9S:X  d   eU" S
SSS	SU S9S:X  d   eg
)zETest without a "replace_names" argument, all vars should be replaced.r7   r8   rA   rB   xyz)r9   r:   r   r	   r,   r   Nc           
      H    S[        U5       S[        U5       SU SU SU 3
$ r   r   r   s         r   func_replace_all8test_function_call_replace_all.<locals>.func_replace_all   /    T!WIU47)6"U1#YugNNr   r9   r:   )r   r>   rF   )r   r	   r   r>   r3   )r   r   r>   rI   r4   rJ   )r   r	   r   r   r>   )r   NrC   r   )r>   rZ   s     r   test_function_call_replace_allr]      s   Qq!f51D#&O 'O T3s>;< = <TSC3TB;< = <T3s"4H:; < ; 	sC3f4H:	;<	; 	s"4H6	78	7 	s&tL:	;<	;r   c                      [        SS/SS9SS j5       n SS/SS	/S
S.nU " SSSUS9S:X  d   eU " SSSUS9S:X  d   eU " SSSSUS9S:X  d   eU " SSSSUS9S:X  d   eg)z<Test with "label_namer=None" -> no label replacement at all.r   r	   Nr
   c           
      H    S[        U5       S[        U5       SU SU SU 3
$ r   r   r   s         r   func_no_label1test_no_label_replacements.<locals>.func_no_label   r\   r   r7   r8   rA   rB   rC   rD   r9   r:   rE   z0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: NonerG   r3   rH   rI   r4   rJ   r   NrX   r   )r`   r>   s     r   test_no_label_replacementsrc      s     S#JDAO BO Qq!f51D$St4>? @ ?$#48>? @ ?$S>:; < ;$STB>? @ ?r   c            
          [        SS/SS9SS j5       n SS/SS/S	S
.n[        R                  " [        5         U " S SSSSUS9  S S S 5        g ! , (       d  f       g = f)Nr   r	   r
   r7   c                     g r   r   )r   r   r	   r+   s       r   r   /test_more_args_than_pos_parameter.<locals>.func   s    r   r8   rA   rB   rC   rD   r9   r:   r+   rE   )r7   )r   r-   r.   	TypeErrorr=   s     r   !test_more_args_than_pos_parameterrh      s`    S#JC@ A Qq!f51D	y	!T3S#D1 
"	!	!s   A
Ac                     [        5       S 5       n [        R                  " SU R                  5      (       d   e[        R                  " SU R                  5      (       a   e[        / S9SS j5       n [        R                  " SU R                  5      (       a   e[        R                  " SU R                  5      (       a   e[        S/S9SS j5       n [        R                  " SU R                  5      (       a   e[        R                  " SU R                  5      (       a   e[        S	S
/S9SS j5       n [        R                  " SU R                  5      (       a   e[        R                  " SU R                  5      (       a   eg )Nc                     gzX
Parameters
----------
data : indexable object, optional
    DATA_PARAMETER_PLACEHOLDER
Nr   )r   r    r$   s      r   funcy&test_docstring_addition.<locals>.funcy       r   z#all parameters also accept a stringzthe following parametersr*   c                     grk   r   r   r   r	   r+   bars        r   rl   rm      rn   r   rq   c                     grk   r   rp   s        r   rl   rm      rn   r   z&the following parameters .*: \*bar\*\.r   tc                     grk   r   )r   r   r	   r+   rs   s        r   rl   rm      rn   r   z+the following parameters .*: \*x\*, \*t\*\.r   )r   research__doc__)rl   s    r   test_docstring_additionrx      sc     99;U]]KKKKyy4emmDDDDB' ( yy?OOOOyy4emmDDDDUG, - yy?OOOOyyB( ( ( ( S#J/ 0 yy?OOOOyyG( ( ( ( (r   c                  h    Sn [         R                  SU /n[        USSS9nSUR                  ;  d   eg)zw
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)r4   capture_outputzdata parameter docstring errorN)sys
executabler   stderr)programcmdcompleted_procs      r   test_data_parameter_replacementr      sE    	* 
 >>4
)C/$tN ,>3H3HHHHr   c                   
   \ rS rSr\R
                  \R                  \R                  /r\	R                  R                  S\5      \" S/S9S 5       5       r\	R                  R                  S\5      \" S/S9S 5       5       rSrg)	TestPlotTypesi	  plotterpng)
extensionsc                     / SQn/ SQn[        [        XE5      5      nU" UR                  5       UR                  5       UR	                  5       5        U" UR                  5       XE5        g )Nr7   r8               )dictzipsubplotsr;   r<   )selfr   fig_testfig_refr   r	   ddicts          r   test_dict_unpackTestPlotTypes.test_dict_unpack  sR     SY!!#

elln	.  "A)r   c                 t    / SQn/ SQnU" UR                  5       SSXES.S9  U" UR                  5       XE5        g )Nr   r   xvalyval)r   r   rE   )r   )r   r   r   r   r   r	   s         r   test_data_kwargTestPlotTypes.test_data_kwarg  s>     !!#VV+	-  "A)r   r   N)__name__
__module____qualname____firstlineno__r   scatterrq   plotplottersr-   markparametrizer   r   r   __static_attributes__r   r   r   r   r   	  s    dhh		2H[[Y1UG,* - 2* [[Y1UG,* - 2*r   r   rb   )ru   r{   numpyrR   r-   
matplotlibr   matplotlib.axesr   matplotlib.testingr   matplotlib.testing.decoratorsr   r   	all_funcsall_func_idsr0   r   r   r5   r?   rL   rN   rV   r]   rc   rh   rx   r   r   r   r   r   <module>r      sR   	 
   '   9 = c
<K =K K	}5B => >>  =D >D =@ >@" =? >?" =@ >@(<2@$21(hI"* *r   