rL ic,&ddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z eddgddd Z e gZd gZd Zej"j%d ee dZej"j%d ee dZej"j%d ee dZej"j%d ee dZej"j%d ee dZdZdZdZdZdZGddZy)N_preprocess_data)Axes)subprocess_run_for_testing)check_figures_equalxy replace_names label_namerc Hdt|dt|d|d|d| SNzx: z, y: z, ls: z, w: z , label: listaxrr lslabelws k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_preprocess_data.py plot_funcrs/ a tAwivbTqc5' JJrcd}d}d}d}tddg|tddg|tddg|tjt5tgd|d d d tgd |tgd |tgd |tgd |tjt5td |d d d tjt5td |d d d y #1swYxYw#1swYJxYw#1swYy xYw) z.Test decorator invocations -> no replacements.cyN)rrr s rfuncz%test_compiletime_checks..funcrcyrr)rrr argss r func_argsz*test_compiletime_checks..func_args rrcyrr)rrr kwargss r func_kwargsz,test_compiletime_checks..func_kwargs!rrcyrr)r r#s rfunc_no_ax_argsz0test_compiletime_checks..func_no_ax_args"rrrr r )rr zNr r(r )rpytestraisesAssertionError)rr!r$r&s rtest_compiletime_checksr-s:(-./C:.t4.C:.{;.C:.y9 ~ &C77 BC 9248>8248C8248E8248I ~ &0)S)$/0 ~ &5)S))455CC0055s$"D4$EE 4D=E  Er)idsc|ddddk(sJ|ddddk(sJ|dddddk(sJ|dddd d k(sJ|dddd dk(sJ|dddd d k(sJy) z%Test without data -> no replacements.Nrr z.x: ['x'], y: ['y'], ls: x, w: xyz, label: None)rr )rz*x: ['x'], y: ['y'], ls: x, w: xyz, label: textz.x: ['x'], y: ['y'], ls: x, w: xyz, label: text)rr rr)rs rtest_function_call_without_datar2=s sC < => =  $ < => = sCr * 8 9: 9 sCv . < => = 2 . 8 9: 9 6 2 < => =rcdddd}|d|j|jdk(sJy)z8Tests with dict input, unpacking via preprocess_pipeline)abNz4x: ['a', 'b'], y: [1, 2], ls: x, w: xyz, label: None)keysvaluesrdatas r"test_function_call_with_dict_inputr<Ns; D tyy{DKKM 2 B CD Crcddgddgdd}|ddd | d k(sJ|ddd | d k(sJ|ddd d |dk(sJ|ddd d|dk(sJ|ddd d |dk(sJ|ddd d|dk(sJy)zCTest with dict data -> label comes from the value of 'x' parameter.r4r5 NOTr6r7rNr6r7r;-x: [1, 2], y: [8, 9], ls: x, w: xyz, label: brr r;r0rr;,x: [1, 2], y: [8, 9], ls: x, w: xyz, label: r10x: [1, 2], y: [8, 9], ls: x, w: xyz, label: textrr rr;rr:s r!test_function_call_with_dict_datarIVsQq!f5 1D sCd + ; <= < $ / ; <= < sCr 5 : ;< ; sCvD 9 > ?@ ? 2D 9 : ;< ; 6 = > ?@ ?rcddgdd}|ddd|d k(sJ|ddd| d k(sJ|dddd | d k(sJ|dddd| dk(sJ|dddd |d k(sJ|dddd|dk(sJy)zETest the case that one var is not in data -> half replaces, half keptr4r5r@)r6rNr6r7rBz,x: [1, 2], y: ['b'], ls: x, w: xyz, label: brDr0rEz+x: [1, 2], y: ['b'], ls: x, w: xyz, label: r1z/x: [1, 2], y: ['b'], ls: x, w: xyz, label: textrHrr:s r-test_function_call_with_dict_data_not_in_datarKhsQe $D sCd + : ;< ; $ / : ;< ; sCr 5 9 :; : sCvD 9 = >? > 2D 9 9 :; : 6 = = >? >rc|jtjddgtjtjddgtjddgd}|dd d | d k(sJ|dd d | d k(sJ|dd d d|dk(sJ|dd d d|dk(sJ|dd d d|dk(sJ|dd d d|dk(sJy)zDTest with pandas dataframe -> label comes from ``data["col"].name``.r4r5)dtyper>r?r@rANr6r7rBrCrDr0rErFr1rGrH) DataFramenparrayint32)rpdr;s r#test_function_call_with_pandas_datarSzs < hh1vRXX>$en. /D sCd + ; <= < $ / ; <= < sCr 5 : ;< ; sCvD 9 > ?@ ? 2D 9 : ;< ; 6 = > ?@ ?rcddgddgdd}tddd }|d d d d |dk(sJ|d d d d |dk(sJ|d d d d d|dk(sJ|d d d d d|dk(sJ|d d d d d|dk(sJ|d d d d d|dk(sJy )zETest without a "replace_names" argument, all vars should be replaced.r4r5r>r?xyz)r6r7rr r)rNc Hdt|dt|d|d|d| Srrrs rfunc_replace_allz8test_function_call_replace_all..func_replace_all/T!WIU47)6"U1#YugNNrr6r7)rr;rC)rr rr;r0)rrr;rFr1rG)rr rrr;)rNr@r)r;rWs rtest_function_call_replace_allrYs Qq!f5 1D#&O'O T3s > ; <= < TSC3T B ; <= < T3s"4 H : ;< ; sC3f4H: ;< ; s"4H6 78 7 s&tL: ;< ;rctddgddd}ddgdd gd d }|dd d |dk(sJ|dd d |dk(sJ|dd d d|dk(sJ|dd d d|dk(sJy)z no label replacement at all.rr Nr c Hdt|dt|d|d|d| Srrrs r func_no_labelz1test_no_label_replacements..func_no_labelrXrr4r5r>r?r@rAr6r7rBz0x: [1, 2], y: [8, 9], ls: x, w: xyz, label: NonerDr0rErFr1rGrNrUr)r\r;s rtest_no_label_replacementsr^sS#JDAOBOQq!f5 1D $St 4 > ?@ ? $#4 8 > ?@ ? $S > : ;< ; $ST B > ?@ ?rc tddgddd}ddgddgd d }tjt5|dd d d d |dddy#1swYyxYw)Nrr r r4cyrr)rrr r(s rrz/test_more_args_than_pos_parameter..funcs rr5r>r?r@rAr6r7r(rB)r4)rr*r+ TypeErrorr:s r!test_more_args_than_pos_parameterrbsiS#JC@ A Qq!f5 1D y !2 T3S#D1222s AActd}tjd|jsJtjd|jrJtgd d}tjd|jrJtjd|jrJtdgd d}tjd|jrJtjd|jrJtd d gd d }tjd|jrJtjd |jrJy)Ncyz Parameters ---------- data : indexable object, optional DATA_PARAMETER_PLACEHOLDER Nr)rr r#s rfuncyz&test_docstring_addition..funcyrrz#all parameters also accept a stringzthe following parametersr'cyrerrrr r(bars rrfz&test_docstring_addition..funcyrrricyrerrhs rrfz&test_docstring_addition..funcyrrz&the following parameters .*: \*bar\*\.rtcyrer)rrr r(rks rrfz&test_docstring_addition..funcyrrz+the following parameters .*: \*x\*, \*t\*\.r)rresearch__doc__)rfs rtest_docstring_additionrpsG   99;U]] KK Kyy4emmDD DB' ( yy?OO Oyy4emmDD DUG, - yy?OO OyyB(( (S#J/ 0 yy?OO OyyG(( ((rcjd}tjd|g}t|dd}d|jvsJy)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)r1capture_outputzdata parameter docstring errorN)sys executablerstderr)programcmdcompleted_procs rtest_data_parameter_replacementrysE  * >>4 )C/ $tN ,>3H3H HH HrceZdZejej ej gZejjdee dgdZ ejjdee dgdZ y) TestPlotTypesplotterpng) extensionscgd}gd}tt||}||j|j|j ||j||y)Nr4r5)dictzipsubplotsr8r9)selfr|fig_testfig_refrr ddicts rtest_dict_unpackzTestPlotTypes.test_dict_unpack sV  SAY!!# elln .  "Aq)rc~gd}gd}||jdd||d||j||y)Nrrxvalyval)rrrB)r)rr|rrrr s rtest_data_kwargzTestPlotTypes.test_data_kwargsB  !!#VV+ -  "Aq)rN)__name__ __module__ __qualname__rscatterriplotplottersr*mark parametrizerrrrrrr{r{ s dhh 2H [[Y1UG,*-2* [[Y1UG,*-2*rr{r])rmrsnumpyrOr* matplotlibrmatplotlib.axesrmatplotlib.testingrmatplotlib.testing.decoratorsrr all_funcs all_func_idsr-rrr2r<rIrKrSrYr^rbrpryr{rrrrsR  ' 9=c <K=KK } 5B = >> >  =D>D =@>@" =?>?" =@>@(<2@$21(hI"**r