
    
3jX1                    ~   S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SK	r
S SKJrJrJr  S SKrS SKrS SKJr  S SKJr   " S S5      r " S S5      r " S	 S
5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r " S S5      r  " S S5      r! " S S5      r" " S S5      r# " S S5      r$ " S S 5      r% " S! S"5      r& " S# S$5      r' " S% S&5      r( " S' S(5      r) " S) S*5      r* " S+ S,5      r+ " S- S.5      r,S/ r-\R\                  R_                  S0/ S1Q5      S2 5       r0 " S3 S45      r1S5 r2S6 r3S7 r4S8 r5S9 r6S: r7S; r8S< r9\R\                  R_                  S=S>5      S? 5       r:\R\                  R_                  S@SASB/\
Rv                  " SC5      /5      SD 5       r<\R\                  R_                  SESFSG/ SHQ4SISG/ SHQ4SJSG/ SHQ4SKSG/ SHQ4SFSL/ SMQ4SISL/ SNQ4SJSL/ SNQ4SKSL/ SNQ4SFSO/ SMQ4SISO/ SPQ4SJSO/ SQQ4SKSO/ SQQ4SFSR/ SSQ4SISR/ STQ4SJSR/ STQ4SKSR/ SUQ4/5      \Rz                  R}                  SV5      SW 5       5       r?\Rz                  R}                  SV5      SX 5       r@SY rA\R\                  R_                  SZ\R                  " S[ 5      \R                  " S\5      45      S] 5       rDS^ rEg)_    )nullcontextN)parse)assert_almost_equalassert_array_equalassert_allclosec            
       *   \ rS rSrSS\R
                  " / SQ5      4SS\R
                  " / SQ5      4SS	\R
                  " / S
Q5      4SS\R                  " S5      S-  4SS\R                  " SS5      S-  4/rSSS\R
                  " / SQ5      4SSS\R
                  " / SQ5      4SS/ SQ\R
                  " / SQ5      4/r\	R                  R                  S\5      S 5       r\	R                  R                  S\5      S 5       r\	R                  R                  SS S0\\R                   " S!5      4S"S#S/0\S$4S"S#0\S$4S"S#S%/0\S$4/5      S& 5       r\	R                  R                  S'/ S(Q/ S(Q4S#S)// S(Q4SS#// S(Q4S#// S(Q4/5      S* 5       rS+rg),TestMaxNLocator      d   )      4@g      D@g      N@g      T@      Y@MbP?-C6?)        g-C6*?g-C6:?ga2U0*C?g-C6J?r     4&k  4&kC)r   g  4&kr   g  4&kBr   r   g&q5   gLog5g&q   皙皙?N)r   r      ffffff?)g      пr         ?      ?      ?      ?7   )r         ?   r   
   )r         -   <   vmin, vmax, expectedc                 b    [         R                  " SS9n[        UR                  X5      U5        g )Nr"   nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedlocs        V/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_ticker.py
test_basicTestMaxNLocator.test_basic    s%    !!*COOD7B    zvmin, vmax, steps, expectedc                 f    [         R                  " SSUS9n[        UR                  X5      U5        g )Nr"   T)r+   integerstepsr,   )r0   r1   r2   r;   r3   r4   s         r5   test_integerTestMaxNLocator.test_integer%   s)    !!4uECOOD7Br8   zkwargs, errortype, matchfooz5set_params() got an unexpected keyword argument 'foo'r;   r   z$steps argument must be an increasing   c                     [         R                  " X#S9   [        R                  " S0 UD6  S S S 5        g ! , (       d  f       g = f)Nmatch )pytestraisesr-   r.   )r0   kwargs	errortyperB   s       r5   test_errorsTestMaxNLocator.test_errors*   s-     ]]92)&) 322s	   5
Azsteps, result)r   r   r#   r#   c                 t    [         R                  " US9nUR                  U:H  R                  5       (       d   eg )N)r;   )r-   r.   _stepsall)r0   r;   resultr4   s       r5   test_paddingTestMaxNLocator.test_padding5   s2     !!.

f$))++++r8   rC   )__name__
__module____qualname____firstlineno__nparrayarange
basic_datainteger_datarD   markparametrizer6   r<   	TypeErrorreescape
ValueErrorrH   rN   __static_attributes__rC   r8   r5   r	   r	      s   	S"((567	!LMN	bhhJKL	
HbiilU*+	AryyQ'%/0J 
sD"((=12	tT288$DEF	
B"BHH-@$ABL [[3Z@C AC [[:LIC JC [[7
Y	J	K	M
Aq6	J(NO
1z#IJ
Ar7	Z)OP: ** [[_	Z 
R*
Q
j	/ ,,r8   r	   c                   ,    \ rS rSrS rS rS rS rSrg)TestLinearLocator@   c                     [         R                  " SS9n[        R                  " / SQ5      n[	        UR                  SS5      U5        g )N   numticks)皙333333ӿ皙?rg   ri   )r-   LinearLocatorrT   rU   r   r/   r0   r4   
test_values      r5   r6   TestLinearLocator.test_basicA   s6    ##Q/XX/0
COOD#6
Cr8   c                 V    [         R                  " SS9nUR                  SS5      / :H    g )Nr   re   rg   ri   )r-   rj   r/   r0   r4   s     r5   test_zero_numticks$TestLinearLocator.test_zero_numticksF   s%    ##Q/c"b(r8   c                     [         R                  " SS9nUR                  SS/ 0S9  UR                  S:X  d   eUR                  S/ 0:X  d   eg)z
Create linear locator with presets={}, numticks=2 and change it to
something else. See if change was successful. Should not exception.
r   re      r   r   )rf   presetsN)r-   rj   
set_paramsrf   ru   ro   s     r5   test_set_params!TestLinearLocator.test_set_paramsJ   sP    
 ##Q/FB<8||q   {{vrl***r8   c                    [         R                  " / SQSS/S.S9nUR                  SS5      / SQ:X  d   eUR                  SS5      / SQ:X  d   eUR                  SS5      SS/:X  d   eUR                  S	S
5      SS/:X  d   eUR                  SS5      [        R                  " SSS5      :H  R                  5       (       d   eg )N)r         ?      ?r   r!   ))r   r   r   r   )ru   r   r   r   r          @r?   )r-   rj   r/   rT   linspacerL   ro   s     r5   test_presetsTestLinearLocator.test_presetsT   s    ##_693Z-A Bq!$777q!$777q!$c
222sC(S#J6661%Q2)>>CCEEEEr8   rC   N)	rP   rQ   rR   rS   r6   rp   rw   r   r_   rC   r8   r5   ra   ra   @   s    D
)+Fr8   ra   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestMultipleLocator^   c                     [         R                  " SS9n[        R                  " / SQ5      n[	        UR                  SS5      U5        g )NV-	@base)go"V-gV-	r   r   V-@go"@gV-)@r#   r-   MultipleLocatorrT   rU   r   r/   rk   s      r5   r6   TestMultipleLocator.test_basic_   s:    %%51XX . /
COOB3Z@r8   c                     [         R                  " SSS9n[        R                  " / SQ5      n[	        UR                  SS5      U5        g )Nr   333333?r   offset)gZd{ gK7A`gx&r   gSc@g`"@gx&1H%@r   r#   r   rk   s      r5   test_basic_with_offset*TestMultipleLocator.test_basic_with_offsete   s<    %%5=XX ' (
COOB3Z@r8   c                     [         R                  " SS05         [        R                  " SS9n[	        UR                  SS5      S5        SSS5        g! , (       d  f       g= f)	z%
Test basic behavior of view limits.
axes.autolimit_modedatar   r   r   r"   )r   r"   Nmpl
rc_contextr-   r   r   view_limitsro   s     r5   test_view_limits$TestMultipleLocator.test_view_limitsk   sG     ^^2F;<))u5CA 6@ =<<   1A
A!c                     [         R                  " SS05         [        R                  " SS9n[	        UR                  SS5      S5        SSS5        g! , (       d  f       g= f)	J
Test that everything works properly with 'round_numbers' for auto
limit.
r   round_numbersr   r      )r   r   Nr   ro   s     r5   test_view_limits_round_numbers2TestMultipleLocator.test_view_limits_round_numberss   sH    
 ^^2ODE))u5CA 6H FEEr   c                     [         R                  " SS05         [        R                  " SSS9n[	        UR                  SS5      S5        S	S	S	5        g	! , (       d  f       g	= f)
r   r   r   r   ?r   r   r   )g`"g}?5^@Nr   ro   s     r5   *test_view_limits_round_numbers_with_offset>TestMultipleLocator.test_view_limits_round_numbers_with_offset|   sJ    
 ^^2ODE))uSACA 6H FEEs   2A
A"c                     [         R                  " SS05         [        R                  " SS9n[	        UR                  SS5      S5        SSS5        g! , (       d  f       g= f)	z=
Test that 'round_numbers' works properly with a single bin.
r   r   r   r*   gffffffgffffff@)r   r   N)r   r   r-   r.   r   r   ro   s     r5   test_view_limits_single_bin/TestMultipleLocator.test_view_limits_single_bin   sH     ^^2ODE%%A.Cc :GD FEEr   c                     [         R                  " SS9nUR                  SS9  UR                  R                  S:X  d   eUR                  SS9  UR
                  S:X  d   eg)zg
Create multiple locator with 0.7 base, and change it to something else.
See if change was successful.
ffffff?r   333333?rd   )r   N)r-   r   rv   _edgestep_offset)r0   mults     r5   rw   #TestMultipleLocator.test_set_params   sX    
 &&C0S!zz#%%%q!||q   r8   rC   N)rP   rQ   rR   rS   r6   r   r   r   r   r   rw   r_   rC   r8   r5   r   r   ^   s+    AAAIIE	!r8   r   c            
          \ rS rSrS rSS/rS r\R                  R                  S\5      S 5       r
/ SQrS	 r\R                  R                  S
\5      S 5       r/ SQr/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/r\" \" \\5      5      r\R                  R                  S\5      S 5       r\R                  R                  SSS/5      \R                  R                  SS/ SQ4S/ SQ4/5      S 5       5       r\R                  R                  SSS/5      \R                  R                  SSS/ S Q4S!S"/ S#Q4S$S%/ S&Q4/5      S' 5       5       rS(rg))*TestAutoMinorLocator   c                     [         R                  " 5       u  pUR                  SS5        UR                  5         [        R
                  " / SQ5      n[        UR                  R                  SS9U5        g )Nr   =
ףp=?皙?皙?g333333?r   333333?gffffff??r   皙?g?r   r   g333333??r   ?r   gffffff?rz   r   g?Tminor)	pltsubplotsset_xlimminorticks_onrT   rU   r   xaxisget_ticklocsr0   figaxrl   s       r5   r6   TestAutoMinorLocator.test_basic   s\    ,,.
At
XX G H
 	BHH111=zJr8   r   r   )r   r   c                    [         R                  " 5       u  pUR                  SS5        UR                  R	                  [
        R                  " 5       5        [        R                  " / SQ5      n[        UR                  R                  SS9U5        UR                  SS5        [        R                  " / SQ5      n[        UR                  R                  SS9U5        g	)
z9
Test that first and last minor tick appear as expected.
ffffffffffff?) r   g333333ggffffffgg333333皙grg   gffffffg333333皙ٿrh   皙ɿr   r   ri   r   皙?333333?r   皙?r   r   r   r   gffffff?g?r   g?r   Tr   r   r"   )g      g      g      g      g      g                  r   r   r!         @g      @      @g      @      @N)r   r   r   r   set_minor_locatorr-   AutoMinorLocatorrT   rU   r   r   r   s       r5   test_first_and_last_minorticks3TestAutoMinorLocator.test_first_and_last_minorticks   s    
 ,,.
D#
""7#;#;#=>XX B C
 	BHH111=zJ
BXX G H
BHH111=zJr8   z%nb_majorticks, expected_nb_minorticksc                 |   [         R                  " 5       u  p4SnUR                  " U6   UR                  [        R
                  " US   US   U5      5        UR                  5         UR                  R                  [        R                  " 5       5        [        UR                  R                  5       5      U:X  d   eg )N)r   r"   r   r   )r   r   r   
set_xticksrT   r~   r   r   r   r-   r   lenget_minorticklocs)r0   nb_majorticksexpected_nb_minorticksr   r   xlimss         r5   test_low_number_of_majorticks2TestAutoMinorLocator.test_low_number_of_majorticks   s     ,,.
U
bkk%(E!HmDE

""7#;#;#=>288--/04JJJJr8   ))r   r"   )r   r   )r   r"   )r"   r"   )r#   r"   c                 (   [         R                  " SS05         U R                   Vs/ s H  oS   PM	     nn[        R                  R                  U[        R                  " 5       R                  5        S S S 5        g s  snf ! , (       d  f       g = f)N_internal.classic_modeFr   )	r   r   majorstep_minordivisionsrT   testingr   r-   AutoLocatorrK   )r0   x
majorstepss      r5   "test_using_all_default_major_steps7TestAutoMinorLocator.test_using_all_default_major_steps   sm    ^^5u=>(,(E(EF(E1A$(EJFJJ&&z'.':':'<'C'CE ?>F ?>s   BA>?B>B
Bz&major_step, expected_nb_minordivisionsc                 P   [         R                  " 5       u  p4SU4nUR                  " U6   UR                  U5        UR	                  5         UR
                  R                  [        R                  " 5       5        [        UR
                  R                  5       5      S-   nXb:X  d   eg Nr   r   )r   r   r   r   r   r   r   r-   r   r   r   )r0   
major_stepexpected_nb_minordivisionsr   r   r   nb_minor_divisionss          r5   test_number_of_minor_ticks/TestAutoMinorLocator.test_number_of_minor_ticks   s     ,,.J
U
e

""7#;#;#=> !;!;!=>B!???r8   )r   r   r   gn?)r   ԍ;)r   gVs?=)gH׊gIhG|a)gv!>ҷ>)ʔA{v()g"s2_dglEՎfUr   ){Gzt?{Gz?Q?g?gQ?gQ?g
ףp=
?r   g)\(?gp=
ף?gQ?g333333?g(\µ?g
ףp=
?gRQ?gzG?)\(?gq=
ףp?      ?gp=
ף?gHzG?)gO
;gO
;gU;g#B;gU;g̈=;gnP*@;g#B;gԍ;gaW;g̈=;gmx;gJ;gnP*@;gnXen;g+3M;r   )g+<g+=gt=gvIh%=gt =g(#=gQu.U)=gvIh%,=gU.=gnb]K2=g(3=g7Q5=gU>?7=gQu.U9=gc߯x:=g; ==gU>=)g*#&,gYg#"5Ԉg_eG|gS'цgBY[%gk̈́gv!g|)vgQ؎gqrgƀg%e~gw$}g߈/|gYygv(xgS'vgv!tgz]rgqrqgw$mgHjgv(hgz]b)gL>gE/w>gZMϢ>gkʹ>g	ʧ#>g!+lěN>g:0y>gR>g};h>gBY[%>gqwNP>gʔA{>gS'Ѷ>g>g.W'>gG)R>gxz)e秷>r   )g5m/Gg<gT跾g`gxz)e秷gIGmg肸zggG)Rg<g&|gg5_涾gqdqAg34gY#)g#"5Ըg_~r   gҷg.W'gS'Ѷr   gBY[%g:0yg	ʧ#gkʹgE/wgE̳g|)vg<sAC gz]ʲgQ؎g 4PSȱgqrg>g\+-eqg+i)+gM7܉g%eޮgw$zlim, refc                    [         R                  " 5       u  p4UR                  5         UR                  SSSSS9  UR                  SSSSS9  UR	                  U5        [        UR                  R                  SS	9U5        g )
NTr   yr   )	linewidthmajork)colorr  r   )r   r   r   gridset_ylimr   yaxisr   )r0   limrefr   r   s        r5   test_additional$TestAutoMinorLocator.test_additional  sk    ,,.

gsa0
gSA6
CBHH111=sCr8   use_rcparamFTr   r   c                 @   U(       a  SSS.n0 nO0 nSS0n[         R                  " U5         [        R                  " 5       u  pgUR                  " U6   UR
                  " U6   UR                  R                  [        R                  " S0 UD65        UR                  R                  [        R                  " S0 UD65        [        UR                  R                  SS9U5        [        UR                  R                  SS9U5        S S S 5        g ! , (       d  f       g = f)Nautozxtick.minor.ndivszytick.minor.ndivsnTr   rC   )r   r   r   r   r   r  r   r   r-   r   r  r   r   )r0   r  r  r  contextrF   r   r   s           r5   test_number_of_minor_ticks_auto4TestAutoMinorLocator.test_number_of_minor_ticks_auto  s     ,2PGFG6]F^^G$llnGCKKKKHH&&w'?'?'I&'IJHH&&w'?'?'I&'IJ 5 5D 5 A3G 5 5D 5 A3G %$$s   CD
Dzn, lim, refr   )r   r   r   r!   r   r   r   r|   )r   r   r   rz   r!   r{   r#   rt   )	r   ri   r   r   r   r   r   r   r   c                    U(       a  XS.n0 nO0 nSU0n[         R                  " U5         [        R                  " 5       u  pxUR                  " U6   UR
                  " U6   UR                  R                  [        R                  " S5      5        UR                  R                  [        R                  " S0 UD65        UR                  R                  [        R                  " S5      5        UR                  R                  [        R                  " S0 UD65        [        UR                  R                  SS9U5        [        UR                  R                  SS9U5        S S S 5        g ! , (       d  f       g = f)Nr  r  r   Tr   rC   )r   r   r   r   r   r  r   set_major_locatorr-   r   r   r   r  r   r   )	r0   r  r  r  r  r  rF   r   r   s	            r5   test_number_of_minor_ticks_int3TestAutoMinorLocator.test_number_of_minor_ticks_int.  s    ,-FGFG1XF^^G$llnGCKKKKHH&&w'>'>q'ABHH&&w'?'?'I&'IJHH&&w'>'>q'ABHH&&w'?'?'I&'IJ 5 5D 5 A3G 5 5D 5 A3G %$$s   D8E,,
E:rC   N)rP   rQ   rR   rS   r6   paramsr   rD   rY   rZ   r   r   r   r   limits	referencelistzipadditional_datar  r  r  r_   rC   r8   r5   r   r      s   K 	F
K& [[DfM	K N	K )E [[E57	@7	@>F	B		'	'	
	1	E	/I: 3vy12O[[Z9D :D [[]UDM:[[GH "#	
	H	 ;H" [[]UDM:[[,-:;FG
H ;Hr8   r   c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)TestLogLocatoriI  c                    [         R                  " SS9n[        R                  " [        5         UR                  SS5        S S S 5        [        R                  " / SQ5      n[        UR                  SS5      U5        [         R                  " SS	9n[        R                  " / S
Q5      n[        UR                  SS5      U5        g ! , (       d  f       N= f)Nr"   re   r     )h㈵>r   r         $@     @@     j@    cAr   g     @r   r   )	r   r   r}         @g       @g      0@g      @@g      P@g      `@r   r   )	r-   
LogLocatorrD   rE   r^   r/   rT   rU   r   rk   s      r5   r6   TestLogLocator.test_basicJ  s      !,]]:&OOAt$ ' XXHI
COOE59:F  a(XXGH
COOAs3Z@ '&s   C
Cc                     [         R                  " SS0S9u  pUR                  S5        UR                  SS5        [	        UR                  5       / SQ5        g)	z,
Polar Axes have a different ticking logic.

projectionpolar)
subplot_kwlogr   r   )r#   r   r(  N)r   r   
set_yscaler  r   
get_yticksr0   r   r   s      r5   test_polar_axesTestLogLocator.test_polar_axesV  sC     ,,<*AB
e
As2==?O<r8   c                    [         R                  " SS9n[        UR                  SS5      / SQ5        [         R                  " [        R
                  " SS5      S9nSUR                  S	S
5      ;  d   eSUR                  S	S
5      ;  d   e[         R                  " SS9nUR                  SS5      n[        USU:*  US:*  -     S/5        g )NrL   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r#   r   r   r   r*  r  r   )r-   r/  r   r/   rT   rV   )r0   r4   tvs      r5   test_switch_to_autolocator)TestLogLocator.test_switch_to_autolocator_  s      e,3??46D	F   bii2&67#//#s33333??34444  f-__R$2rRxB"H56=r8   c                     [         R                  " 5       nUR                  SS/SS9  UR                  S:X  d   eUR                  S:X  d   e[        UR                  5      S/:X  d   eg)z
Create log locator with default value, base=10.0, subs=[1.0],
numticks=15 and change it to something else.
See if change was successful. Should not raise exception.
   r}   r   )rf   r=  r   N)r-   r/  rv   rf   _baser"  _subsro   s     r5   rw   TestLogLocator.test_set_paramsl  s`       "A6||q   yyA~~CII3%'''r8   c                     [         R                  " SS9n[        R                  " / SQ5      n[	        UR                  SS5      U5        g )Nr   r   r"   r<  )r   ri   r   r   r}   r   r*  r         I@r         i@     @@r+       @@     @     @     @     j@r,       jA    A    .A    >A    SAr-      sA    ׇAr   r-  )r-   r/  rT   rU   r   r/   r0   llrl   s      r5   test_tick_values_correct'TestLogLocator.test_tick_values_correctx  s<    Y/XX 7 8

 	BNN1c2J?r8   c                     S[         R                  S'   [        R                  " SS9n[        R
                  " / SQ5      n[        UR                  SS5      U5        g )NFr   rG  r<  )r   ri   r   r   r}   r   r*  r   rH  r   rI  rJ  r+  rK  rL  rM  rN  rO  r,  rP  rQ  rR  rS  rT  r-  rU  rV      חAg    קAg    eͽAr   r\  )r   rcParamsr-   r/  rT   rU   r   r/   rW  s      r5   test_tick_values_not_empty)TestLogLocator.test_tick_values_not_empty  sM    16-.Y/XX O P

 	BNN1c2J?r8   c                    [         R                  R                  S5      nUR                  SS9/ / /n[        R
                  " [        U5      SSS9u  p4[        UR                  5       U5       H%  u  pVUR                  USS9  UR                  SS	S
9  M'     UR                  5        H^  n[        UR                  5       US   R                  5       :H  5      (       d   eUR                  5       US   R                  5       :X  a  M^   e   g )Ni!N,r   )sizeT)sharexshareyr#   )binsr5  clip)nonpositiver   )rT   randomdefault_rngnormalr   r   r   r#  flattenhistr6  rL   r7  get_ylim)r0   rng
dummy_datar   axesr   r   s          r5   test_multiple_shared_axes(TestLogLocator.test_multiple_shared_axes  s    ii##H-jjcj*B3
LLZdK	DLLNJ7HBGGDrG"MM%VM4 8 ,,.Br}}$q'*<*<*>>????;;=DG$4$4$6666 !r8   rC   N)rP   rQ   rR   rS   r6   r9  r?  rw   rY  r^  rp  r_   rC   r8   r5   r&  r&  I  s(    
A=>
(@@7r8   r&  c                       \ rS rSrS rSrg)TestNullLocatori  c                     [         R                  " 5       n[        R                  " [        5         UR                  5         SSS5        g! , (       d  f       g= f)zp
Create null locator, and attempt to call set_params() on it.
Should not exception, and should raise a warning.
N)r-   NullLocatorrD   warnsUserWarningrv   ro   s     r5   rw   TestNullLocator.test_set_params  s4    
 !!#\\+&NN '&&s   A


ArC   NrP   rQ   rR   rS   rw   r_   rC   r8   r5   rs  rs    s    r8   rs  c                   4    \ rS rSr\S 5       r\S 5       rSrg)_LogitHelperi  c                     SU s=:  a  S:  a`  O  O]SUs=:  a  S:  aP  O  OM[         R                  " [         R                  " SU -  S-
  5      * [         R                  " SU-  S-
  5      * 5      $ S$ )Nr   r   F)rT   iscloser5  )r   r  s     r5   r}  _LogitHelper.isclose  sZ     q919Q 

BFF1Q3q5M>BFF1Q3q5M>: 	705	7r8   c                    [         R                  " U 5      n[         R                  " U5      n[         R                  " US:  5      (       a  [         R                  " US:  5      (       d   e[         R                  " US:  5      (       a  [         R                  " US:  5      (       d   e[         R                  " SU-  S-
  5      * n[         R                  " SU-  S-
  5      * n[	        XE5        g r   )rT   rU   rL   r5  r   )r   r  r   aylxlys         r5   r    _LogitHelper.assert_almost_equal  s    XXa[XXa[vvb1f~~"&&a..00vvb1f~~"&&a..00ffQrT!Vn_ffQrT!Vn_B#r8   rC   N)rP   rQ   rR   rS   staticmethodr}  r   r_   rC   r8   r5   r{  r{    s(    7 7 $ $r8   r{  c                   4   \ rS rSr/ SQrSS\R                  " SS5      -  -  SS\R                  " SS5      -  -  SS\R                  " SS5      -  -  SS\R                  " SS5      -  -  SS\R                  " SS	5      -  -  SS\R                  " SS
5      -  -  SS\R                  " SS5      -  -  SS\R                  " SS5      -  -  /r/ SQr\	R                  R                  S\" \\5      5      S 5       r\	R                  R                  S\5      S 5       r\	R                  R                  S\\-   5      S 5       r\	R                  R                  S\" \\5      5      S 5       rS r/ S\R                  " SS5      -  QSS\R                  " SS5      -  -
  Qr\	R                  R                  S\R(                  " \SS9 V VVs/ s H  u  pX:w  d  M  X4PM     snnn 5      S 5       r\	R                  R                  S\5      S 5       rSrgs  snnn f )TestLogitLocatori  )r   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r#   rd   r   r"   r   rB  rs   	   ))r   r   )r   ri   )r   r   zlims, expected_low_ticksc                     [        / UQSPSU-
  Q5      n[        R                  " SS9n[        R	                  UR
                  " U6 U5        g)zB
Create logit locator with huge number of major, and tests ticks.
r   r   r   r*   N)sortedr-   LogitLocatorr{  r   r/   )r0   limsexpected_low_ticksexpected_ticksr4   s        r5   test_basic_major!TestLogitLocator.test_basic_major  sV      A A#A-?)?A
 ""-((OOT"	
r8   r  c                 N   [         R                  " SS9n[         R                  " S/ SQS9nS Ht  nUR                  US9  UR                  US9  UR                  " U6 nUR                  " U6 nUR
                  UR
                  :X  d   eXV:H  R                  5       (       a  Mt   e   g)zR
When the axis is zoomed, the locator must have the same behavior as
MaxNLocator.
r   r*   )r   r   r"   r#   )r+   r;   )r   rs      N)r-   r  r.   rv   r/   shaperL   )r0   r  r4   maxn_locr+   ticks
maxn_tickss          r5   test_maxn_major TestLogitLocator.test_maxn_major  s     ""-&&SFENNN'e,OOT*E!--t4J;;*"2"2222',,....  r8   c                 .   [        [        R                  " [        R                  " US   5      5      * 5      S-  S-   n[        R
                  " SS9n[        USS5       H3  nUR                  US9  [        UR                  " U6 5      US-   ::  a  M3   e   g)z2
Assert logit locator for respecting nbins param.
r   r   r   r   r*   r   N)
intrT   floorlog10r-   r  rangerv   r   r/   )r0   r  basic_neededr4   r+   s        r5   test_nbins_major!TestLogitLocator.test_nbins_major  s     BHHRXXd1g%67781<q@""-<B/ENNN's-.%!);;; 0r8   c                    [        / UQSPSU-
  Q5      n[        U5      n[        R                  " SS9n[        R                  " SSS9n[	        USS5       H  nUR                  US9  UR                  US9  UR                  " U6 nUR                  " U6 n	[        U5      [        U5      :  a"  [        U5      S-
  S	-  [        U	5      :  d   eMy  [        R                  [        / UQU	Q5      U5        M     g
)z\
In large scale, test the presence of minor,
and assert no minor when major are subsampled.
r   r   r   r*   T)r+   r   r   r   r"   N)	r  r   r-   r  r  rv   r/   r{  r   )
r0   r  r  r  r  r4   	minor_locr+   major_ticksminor_tickss
             r5   
test_minorTestLogitLocator.test_minor  s      A A#A-?)?A
 >*""-((s$?	<B/ENNN'  u -//40K#//6K;3~#66K(1,1C4DDDD 007[7;78.J 0r8   c                     [         R                  " SS9nUR                  (       a   eSUl        UR                  (       d   eUR                  SS9  UR                  (       a   eg )Nr   r*   TFr   )r-   r  r   rv   ro   s     r5   test_minor_attr TestLogitLocator.test_minor_attr  sM    ""-99}	yyyU#99}9r8   r   r   r   )repeatc                     [         R                  " 5       nUR                  " U6 n[        U5      [        U5      :X  d   eg)zL
Create logit locator, and test the nonsingular method for acceptable
value
N)r-   r  nonsingularr  )r0   r  r4   lims2s       r5   test_nonsingular_ok$TestLogitLocator.test_nonsingular_ok%  s6     ""$&d|ve},,,r8   okvalc                     [         R                  " 5       nSUpCUR                  X45      u  pVXd:X  d   eSUs=:  a  U:  d   e   eUSpCUR                  X45      u  pVXS:X  d   eXVs=:  a  S:  d   e   eg)zP
Create logit locator, and test the nonsingular method for non
acceptable value
r   r   r   r   N)r-   r  r  )r0   r  r4   r1   r2   vmin2vmax2s          r5   test_nonsingular_nok%TestLogitLocator.test_nonsingular_nok6  s     ""$%dt2}}5 5     Qdt2}} q     r8   rC   N)rP   rQ   rR   rS   ref_basic_limitsrT   rV   ref_basic_major_ticksref_maxn_limitsrD   rY   rZ   r#  r  r  r  r  r  acceptable_vmin_vmax	itertoolsproductr  r  r_   ).0abs   000r5   r  r    sS   	 	
R299Q?"#	R299Q?"#	R299Q?"#	R299Q?"#	R299Q?"#	R299Q?"#	R299Q?"#	R299Q##$	 GO[["34
	
 [[V_5/ 6/ [[V%5%GH	< I	< [["34J	J2
2q!
!
cRYYr1%%
%
 [[ $++,@K	
Kv QFK	
-- [[W&:;! <!!	
s   	HHr  c                       \ rS rSrS rSrg)TestFixedLocatoriG  c                     [         R                  " [        SS5      SS9nUR                  SS9  UR                  S:X  d   eg)zy
Create fixed locator with 5 nbins, and change it to something else.
See if change was successful.
Should not exception.
r      r"   r*   rB  N)r-   FixedLocatorr  rv   r+   )r0   fixeds     r5   rw    TestFixedLocator.test_set_paramsH  s?     $$U1b\;q!{{ar8   rC   Nry  rC   r8   r5   r  r  G  s     r8   r  c                        \ rS rSrS rS rSrg)TestIndexLocatoriS  c                     [         R                  " SSS9nUR                  SSS9  UR                  S:X  d   eUR                  S:X  d   eg)z
Create index locator with 3 base, 4 offset. and change it to something
else. See if change was successful.
Should not exception.
rd   r   r   rB  N)r-   IndexLocatorrv   rC  r   r0   indexs     r5   rw    TestIndexLocator.test_set_paramsT  sM     $$!A6a*{{a||q   r8   c                 6   [         R                  " SSS9n[        UR                  SS5      / SQ5        [         R                  " SSS9n[        UR                  SS5      / SQ5        [         R                  " SSS9n[        UR                  SS	5      / S
Q5        g)zA
Test that tick_values does not return values greater than vmax.
r   r   r   r   )r   r   r   rd   r   r   r  r   r"   )r   r   r   N)r-   r  r   r/   r  s     r5   #test_tick_values_not_exceeding_vmax4TestIndexLocator.test_tick_values_not_exceeding_vmax_  s    
 $$!A65,,Q2OD $$!C85,,Q24HI $$!A65,,Q2I>r8   rC   N)rP   rQ   rR   rS   rw   r  r_   rC   r8   r5   r  r  S  s    	!?r8   r  c                       \ rS rSrS r\R                  R                  SSSSS/4SS/ SQ4/5      S 5       rS	 r	S
 r
Srg)TestSymmetricalLogLocatorip  c                     [         R                  " SSS9nUR                  S/SS9  UR                  S/:X  d   eUR                  S:X  d   eg)z
Create symmetrical log locator with default subs =[1.0] numticks = 15,
and change it to something else.
See if change was successful.
Should not exception.
r#   r   r   	linthreshr}   rs   )r=  rf   N)r-   SymmetricalLogLocatorrv   rD  rf   r0   syms     r5   rw   )TestSymmetricalLogLocator.test_set_paramsq  sN     ++qASEA.yySE!!!||q   r8   r(   r   r   r   r   r   r   c                 b    [         R                  " SSS9nUR                  XS9n[        XS5        g )Nr#   r   r  )r1   r2   )r-   r  r/   r   )r0   r1   r2   r3   r  r  s         r5   test_values%TestSymmetricalLogLocator.test_values}  s.     ++qAT55+r8   c                     [         R                  " SSSS/S9nUR                  5         UR                  R	                  SS5        [        U" 5       / SQ5        g )Nr#   r   r}   r.  )r   r  r=  )	ir   r   r   r   r   (   )r-   r  create_dummy_axisaxisset_view_intervalr   r  s     r5   	test_subs#TestSymmetricalLogLocator.test_subs  sG    ++qSzR""3+35"EFr8   c                    [         R                  " SSS9nUR                  5         UR                  R	                  SS5        U" 5       S/:H  R                  5       (       d   eUR                  R	                  SS5        U" 5       SS/:H  R                  5       (       d   eUR                  SS5      S	:X  d   eUR                  S
S
5      S:X  d   eUR                  SS5      S:X  d   eg )Nr#   r   r  rs   r  r      r*  )r   r   r  )r   r   )MbPr   )r-   r  r  r  r  rL   r   r  s     r5   test_extending(TestSymmetricalLogLocator.test_extending  s    ++qA""1a(###%%%%""1b)#t$))++++r2&(222sC(J666q!$777r8   rC   N)rP   rQ   rR   rS   rw   rD   rY   rZ   r  r  r  r_   rC   r8   r5   r  r  p  sT    
! [["A1vQ
#,,G	8r8   r  c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestAsinhLocatori  c                     [         R                  " SSS9nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eg )NgX9v@   )linear_widthrf   r#   )r-   AsinhLocatorr  rf   r   r0   lctrs     r5   	test_initTestAsinhLocator.test_init  sJ    ##D  E)))}}"""yyBr8   c                    [         R                  " SSSSSS9nUR                  S:X  d   eUR                  S:X  d   eUR                  S:X  d   eUR
                  S:X  d   eUR                  SS9  UR                  S:X  d   eUR                  S 5        UR                  S:X  d   eUR                  S	S
9  UR                  S	:X  d   eUR                  S S
9  UR                  S	:X  d   eUR                  SS9  UR                  S:X  d   eUR                  S S9  UR                  S:X  d   eUR                  SS9  UR
                  S:X  d   eUR                  S S9  UR
                  S:X  d   eUR                  / S9  UR
                  b   eg )Nr"   r
   r  r   )r   g      
@)r  rf   	symthreshr   r=     re   r   )r  rB  r   )r   g     @r<  )r-   r  rf   r  r   r=  rv   r  s     r5   rw    TestAsinhLocator.test_set_params  s~   ##-/5)*> }}"""~~&&&yyA~~yyK'''$}}"""}}"""#&~~$$$$'~~$$$QyyA~~T"yyA~~Z(yyJ&&&T"yyJ&&&R yy   r8   c                 \   [         R                  " SSSS9n[        UR                  SS5      [        R
                  " SSS5      5        [        UR                  S	S
5      [        R
                  " S	SS5      5        [        UR                  SS5      [        R
                  " SSS5      5        g )Nr   r?   r   r  rf   r   r   r   )\(?ri   r   r   gB`"۹?{Gz?g{Gzr  gMO?Mb`?r-   r  r   r/   rT   rV   r  s     r5   test_linear_values#TestAsinhLocator.test_linear_values  s    ##rJD,,R3IIb$4	6D,,T37IIdE48	:D,,UD9IIeVU;	=r8   c                     [         R                  " SSSS9n[        UR                  SS5      / SQ5        [        UR                  SS	5      / S
Q5        g )Nr   r?   r   r   r  r   )r  r  r   r   r   r   ri   r   r"   r   r   r(  )r  r  r  r  r   r   r   rd   r   r   r(  r-   r  r   r/   r  s     r5   test_wide_values!TestAsinhLocator.test_wide_values  sP    ##rJD,,T374	5 	D,,UD97	8r8   c                 l    [         R                  " SSSS9n[        UR                  SS5      / SQ5        g)	z<Check that manually injected zero will supersede nearby tickr   rd   r   r   r   r   )r   r   r   Nr	  r  s     r5   test_near_zeroTestAsinhLocator.test_near_zero  s.    ##qqID,,T379IJr8   c                     [         R                  " SSS9n[        UR                  SS5      [        R
                  " SSS5      5        g )Nr   r?   re   e   f   gq=
ףY@r   r  r  s     r5   test_fallbackTestAsinhLocator.test_fallback  s;    ##C"5D,,S#6IIc637	9r8   c                    [         R                  " SSSSS9nUR                  5         UR                  R	                  SS5        [        U" 5       / SQ5        UR                  R	                  SS	5        [        U" 5       / S
Q5        UR                  R	                  SS5        [        U" 5       / S
Q5        UR                  R	                  SS5        [        U" 5       / SQ5        g )Nr   rd   r   r   )r  rf   r  r   r   r   )r   r   r   r   r  g333333r   r   )r   r   r   )r-   r  r  r  r  r   r  s     r5   test_symmetrizing"TestAsinhLocator.test_symmetrizing  s    ##Q.2< 		##B*DFJ/		##B,DFJ/		##E40DFJ/		##As+DFN3r8   c                     [         R                  " SSSSS9n[        UR                  SS5      / SQ5        [         R                  " SS	S
S9n[        UR                  SS5      / SQ5        g )Nr   rs   r#   )r   rd   r"   )r  rf   r   r=  n   )iir  iir  r   r  r   r   rh   r   r   r   r   r   r   rd   r"   r#   r%   2   r   i,    r   r"   r   ii  )iiir   r   r   r   ri   r   r"      }   iq  r	  )r0   lctr10lctr5s      r5   test_base_rounding#TestAsinhLocator.test_base_rounding  sk    %%1q+-I?F..tS9A	B
 $$!bqIE--eT:6	7r8   rC   N)rP   rQ   rR   rS   r  rw   r  r
  r  r  r  r   r_   rC   r8   r5   r  r    s+    !>=8K94"7r8   r  c                      \ rS rSr/ SQrSS/rSS/r/ SQrSS/SS	/S
S/SS/SS//r/ SQr	\
R                  R                  SSS/5      S 5       r\
R                  R                  S\5      S 5       r\
R                  R                  S\5      S 5       r\
R                  R                  S\5      S 5       rS rS rS rS r\
R                  R                  S\5      S  5       r\
R                  R                  S!\	5      S" 5       r\
R                  R                  S#\5      S$ 5       r\
R                  R                  S#\5      S% 5       rS& rS' rS( rS)rg*)+TestScalarFormatteri  )){      r   )iCir   )i50  i=0  i40  )iii)g    i@g    j@順 )g    jg    i`y)g    hi@g    j@r&  )g    jg    hir'  )iO iQ iP )i+i+i+)r   r   r   )r$  r$  r   )g/'?g_L?r   )g
ףp=@g33333@i  )g@g    `@iȯ  )g1е/G?gg޻G?g9̗G?)g\h@gp=
@i.1  )g      "@g      (@r   )g      @     @r   )g     @r(  r   )Gz?r  r   )g{G#@gQ$@r#   )g(\X@gq=
ף Y@r   )g(\@g
ףp=
@r   )g{G/@g(\0@r  )g!rhܿrh|?r   )grh|߿r*  r   )g3333@g    @@i0  )gffffgffff@r   TF)	)Fr   )r*  r   r   F)Tr  r   )r  r   r   F)Tr+  )r  r#   r   F)Tr+  )r  x   r   F)Tr+  )ir  r   F)Tr+  )r  r  r  F)T)r   rB  )g   tAg   0Ar  T)Tr   g     jr,  r"   F)T)r   r   r-  r   Fr   z0.000g(0?z0.012grh|?z0.123gGz?z1.230g(@z12.300))r   1e-1)r  z1.1e-1)r\  1e8)g    9Az1.1e8zunicode_minus, result)T   −1)F-1c                     U[         R                  S'   [        R                  " 5       R                  R                  5       R                  S5      R                  5       U:X  d   eg )Naxes.unicode_minusr   )r   r]  r   gcar   get_major_formatterformat_data_shortstrip)r0   unicode_minusrM   s      r5   test_unicode_minus&TestScalarFormatter.test_unicode_minusC  sO     .;)*GGIOO//1CCBGMMO	r8   zleft, right, offsetc                 b   [         R                  " 5       u  pEUR                  R                  5       nX:X  a  [        R
                  " [        SS9O	[        5          UR                  X5        S S S 5        UR                  R                  5         UR                  U:X  d   eX:X  a  [        R
                  " [        SS9O	[        5          UR                  X!5        S S S 5        UR                  R                  5         UR                  U:X  d   eg ! , (       d  f       N= f! , (       d  f       NL= f)NzAttempting to set identicalrA   )r   r   r   r5  rD   rv  rw  r   r   _update_ticksr   )r0   leftrightr   r   r   	formatters          r5   test_offset_value%TestScalarFormatter.test_offset_valueK  s    ,,.HH002	  ll;.KL$/M2KK$2 	 6)))  ll;.KL$/M2KK$2 	 6)))2 22 2s   DD 
D 
D.
use_offsetc                     [         R                  " SU05         [        R                  " 5       nXR	                  5       :X  d   eUR
                  S:X  d   e S S S 5        g ! , (       d  f       g = f)Nzaxes.formatter.useoffsetr   )r   r   r-   ScalarFormatterget_useOffsetr   )r0   rB  tmp_forms      r5   test_use_offset#TestScalarFormatter.test_use_offset\  sV    ^^7DE..0H!7!7!9999??a''' FEEs   =A  
A.use_math_textc                     [         R                  " SU05         [        R                  " 5       nXR	                  5       :X  d   e S S S 5        g ! , (       d  f       g = f)Naxes.formatter.use_mathtext)r   r   r-   rD  get_useMathText)r0   rI  rF  s      r5   test_useMathText$TestScalarFormatter.test_useMathTextc  sD    ^^:MJK..0H $<$<$>>>> LKKs   +A
Ac                     [         R                  " 5       nUR                  S5        UR                  5       (       a   eUR                  S:X  d   eg )Nr   r-   rD  set_useOffsetrE  r   r0   rF  s     r5   test_set_use_offset_float-TestScalarFormatter.test_set_use_offset_floati  sE    **,s#))++++#%%%r8   c                    [         R                  " 5       nUR                  S5        UR                  5       (       d   eUR                  S:X  d   eUR                  S5        UR                  5       (       a   eUR                  S:X  d   eg )NTr   FrP  rR  s     r5   test_set_use_offset_bool,TestScalarFormatter.test_set_use_offset_boolo  sz    **,t$%%''''!###u%))++++!###r8   c                     [         R                  " 5       nUR                  S5        UR                  5       (       a   eUR                  S:X  d   eg )Nr   rP  rR  s     r5   test_set_use_offset_int+TestScalarFormatter.test_set_use_offset_inty  sE    **,q!))++++!###r8   c                    [         R                  " 5       nUS   nU(       a  US   SS  / [         R                  /4;   a  [        R                  " S5        [
        R                  " SS05         [        R                  " 5       nUR                  5       (       d   eUR                  5         UR                  R                  SS5        UR                  / S	Q5        X#" S
5      ;   d   e S S S 5        g ! , (       d  f       g = f)Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r#   )r   r   rd   g    eA)locale
localeconvCHAR_MAXrD   skipr   r   r-   rD  get_useLocaler  r  set_data_intervalset_locs)r0   convseprF  s       r5   test_use_locale#TestScalarFormatter.test_use_locale  s      "?#d:&rs+V__4E/FFKK89^^8$?@..0H))++++&&(MM++Ar2i((3-''' A@@s   -A9C00
C>z.sci_type, scilimits, lim, orderOfMag, fewticksc                    [         R                  " 5       nUR                  U5        UR                  U5        [        R
                  " 5       u  pxUR                  R                  U5        UR                  " U6   U(       a/  UR                  R                  [         R                  " S5      5        UR                  UR                  R                  5       5        XFR                  :X  d   eg )Nr   )r-   rD  set_scientificset_powerlimitsr   r   r  set_major_formatterr  r  r.   rd  get_majorticklocs_orderOfMagnitude)	r0   sci_type	scilimitsr  
orderOfMagfewticksrF  r   r   s	            r5   test_scilimits"TestScalarFormatter.test_scilimits  s     **,)  +,,.
$$X.
SHH&&w':':1'=>"((446777777r8   zvalue, expectedc                     S[         R                  S'   [        R                  " 5       nUR	                  U5      U:X  d   eg )NFr3  )r   r]  r-   rD  format_data)r0   valuer3   sfs       r5   test_format_data$TestScalarFormatter.test_format_data  s6    -2)*$$&~~e$000r8   zdata, expectedc                     [         R                  " 5       u  p4UR                  SS5        UR                  R	                  5       R
                  nU" U5      U:X  d   eg )Nr   r   )r   r   r   r   r5  r6  )r0   r   r3   r   r   fmts         r5   test_cursor_precision)TestScalarFormatter.test_cursor_precision  sG    ,,.
Bhh**,>>4yH$$$r8   c                 :   [         R                  " 5       nUR                  5         UR                  R	                  SS5        UR
                  nU" U5      U:X  d   eUR                  R                  5       S:X  d   eUR                  R                  5       S:X  d   eg )Nr   r#   r  )r-   rD  r  r  r  r6  get_tick_space
get_minpos)r0   r   r3   rx  r|  s        r5   test_cursor_dummy_axis*TestScalarFormatter.test_cursor_dummy_axis  s     $$&

!!!R(""4yH$$$ww%%'1,,,ww!!#q(((r8   c                    [         R                  R                  SSSS.5        [        [        R
                  5      R                  S:  ag  [        R                  " [        SS9   [        R                  " 5       u  pUR                  / SQ5        UR                  R                  5         S S S 5        g [        R                  " [        S	S9   [        R                  " [        SS9   [        R                  " 5       u  pUR                  / SQ5        UR                  R                  5         S S S 5        S S S 5        g ! , (       d  f       g = f! , (       d  f       N(= f! , (       d  f       g = f)
Nserifcmr10F)font.familyz
font.serifrK  rs   zcmr10 font should ideallyrA   r  z
Glyph 8722)r   r]  updateparse_versionrD   __version__r  rv  rw  r   r   r   canvasdrawr8  s      r5   test_mathtext_ticks'TestScalarFormatter.test_mathtext_ticks  s    "!+0
 	 ++,22Q6k1LM,,.j)

! NM
 ,,{,?,,{2MN,,.j)

! O @? NM ON @?s2   $AD;E%AE*E;
E	
E	E
E+c                    [         R                  R                  SSSS.5        UR                  [        R
                  SS9   [        R                  " 5       u  p#UR                  SS/S	S/5        UR                  S
5        / SQn[        R                  " 5       nUR                  U[        XT5      5        UR                  R                  5         UR                   (       a   e S S S 5        g ! , (       d  f       g = f)Nr  cmT)r  zmathtext.fontsetrK  zmatplotlib.mathtext)loggergQr   r  r5  )r  r   r   r  )r   r]  r  at_levelloggingWARNINGr   r   plotr6  r-   LogFormatterSciNotation
set_yticksmapr  r  text)r0   caplogr   r   yticksr?  s         r5   test_cmr10_substitutions,TestScalarFormatter.test_cmr10_substitutions  s    " $+/
 	 __W__5J_KllnGCGGUDMB:.MM% 'F779IMM&#i"89JJOO{{"?{ LKKs   B C,,
C:c                 l    [         R                  " 5       nUR                  / 5        U" S5      S:X  d   eg )Nr    )r-   rD  rd  )r0   rx  s     r5   test_empty_locs#TestScalarFormatter.test_empty_locs  s+    $$&
B#w"}}r8   rC   N)rP   rQ   rR   rS   offset_datause_offset_datauseMathText_datascilimits_datacursor_datarv  rD   rY   rZ   r9  r@  rG  rM  rS  rV  rY  rg  rs  ry  r}  r  r  r  r  r_   rC   r8   r5   r#  r#    s   KB UmOe}
N 
W				xKK [[47GII [[2K@* A*  [[\?;( <( [[_.>?? @?
&$$( [[8.J8J8 [[.<1 =1
 [[-{;% <% [[-{;) <)"&#$r8   r#  c                      \ rS rSrSS\R
                  " SS5      \R
                  " SS5      / SQ4SS\R                  " S	S
\R                  SSS/5      \" S5      / SQ4SS\R                  " / SQ\	S9\" S5      / SQ4/r
SSS\R                  \R                  /r\R                  R                  S\
5      \R                  R                  S\5      S 5       5       rS rSrg)TestLogFormatterExponenti  Tr   r  r.  )z-3z-2r1  0123Fr#   r   r)  ri   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05r  )rd   r"   r  *   dtype)r  51242r}   r   r*  z2labelOnlyBase, exponent, locs, positions, expectedr   c                 B   [         R                  " UUS9nUR                  5         UR                  R	                  SX#-  5        X$-  n[        X5       V	V
s/ s H  u  pU" X5      PM     nn	n
U Vs/ s H  oR                  SS5      PM     nnX:X  d   eg s  sn
n	f s  snf )Nr   labelOnlyBaser   -u   −)r-   LogFormatterExponentr  r  r  r#  replace)r0   r  r   exponentlocs	positionsr3   r?  valsr   poslabelslabels                r5   r6   #TestLogFormatterExponent.test_basic  s    
 00d?LN	##%((DN;z474HI4H)A#4HIFNOhUMM#'78hO!!! JOs   B1Bc                     [         R                  " SSS9nUR                  5         UR                  R	                  SS5        U" S5      S:X  d   eg )Nr#   Tr  r   g&$?r  )r-   r  r  r  r  )r0   r?  s     r5   
test_blank#TestLogFormatterExponent.test_blank  sG    00bM	##%((B/!R'''r8   rC   N)rP   rQ   rR   rS   rT   rV   rU   pir  float
param_datae	base_datarD   rY   rZ   r6   r  r_   rC   r8   r5   r  r    s    	q"))B$biiC&8	/	1 
BHHc7BEE3hGH	qD	F	BHH^5958		!	J c4-I[[@*N[[VY/	" 0N	"(r8   r  c                       \ rS rSr\R
                  " 5       r/ SQr\R                  R                  S\5      S 5       rSrg)TestLogFormatterMathtexti  ))r   r   $\mathdefault{10^{0}}$)r   r  z$\mathdefault{10^{-2}}$)r   r   z$\mathdefault{10^{2}}$)rd   r   z$\mathdefault{1}$)rd   r  z$\mathdefault{0.01}$)rd   r   z$\mathdefault{100}$)rd   r   z$\mathdefault{10^{-3}}$)rd   r+  z$\mathdefault{10^{3}}$zmin_exponent, value, expectedc                     [         R                  " SU05         U R                  U5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Nzaxes.formatter.min_exponent)r   r   r|  )r0   min_exponentrw  r3   s       r5   test_min_exponent*TestLogFormatterMathtext.test_min_exponent  s7    ^^:LIJ88E?h... KJJs	   ;
A	rC   N)rP   rQ   rR   rS   r-   LogFormatterMathtextr|  	test_datarD   rY   rZ   r  r_   rC   r8   r5   r  r    s>    

&
&
(C	I [[<iH/ I/r8   r  c                       \ rS rSr/ SQr\R                  R                  S5      \R                  R                  S\5      S 5       5       rSrg)TestLogFormatterSciNotationi  ))r   g      ?z$\mathdefault{2^{-5}}$)r   r   z$\mathdefault{2^{0}}$)r       z$\mathdefault{2^{5}}$)r   g333333?z$\mathdefault{1.2\times2^{-5}}$)r   r   z$\mathdefault{1.2\times2^{0}}$)r   g333333C@z$\mathdefault{1.2\times2^{5}}$)r#   r   z$\mathdefault{-10^{0}}$)r#   r)  z$\mathdefault{10^{-5}}$)r#   r   r  )r#   r&  z$\mathdefault{10^{5}}$)r#   gh㈵>z$\mathdefault{2\times10^{-5}}$)r#   r   z$\mathdefault{2\times10^{0}}$)r#   i@ z$\mathdefault{2\times10^{5}}$)r#   r  z$\mathdefault{5\times10^{-5}}$)r#   r"   z$\mathdefault{5\times10^{0}}$)r#   i  z$\mathdefault{5\times10^{5}}$defaultzbase, value, expectedc                     [         R                  " US9n[        R                  " SS05         U" U5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   text.usetexF)r-   r  r   r   )r0   r   rw  r3   r?  s        r5   r6   &TestLogFormatterSciNotation.test_basic+  sD     33>	^^]E23U#x/// 433s   A
ArC   N)rP   rQ   rR   rS   r  r   styler  rD   rY   rZ   r6   r_   rC   r8   r5   r  r    sG    I& 	YYy![[4i@0 A "0r8   r  c                      \ rS rSr/ SQr\R                  R                  S\5      S 5       r\R                  R                  S/ SQ5      S 5       r	SS	 jr
\R                  R                  S
5      S 5       r\R                  R                  S/ SQ5      S 5       r\R                  R                  S/ SQ5      S 5       rSrg)TestLogFormatteri3  ))}9x ?r   z3.142e-5)Gŷ4?r   z3.142e-4)ei?r   z3.142e-3)\, ?r   z3.142e-2)s7v/?r   z3.142e-1)PERT!	@r   3.142)f)zj?@r   z3.142e1)&FYs@r   z3.142e2)WXp/@r   z3.142e3)mnL@r   z3.142e4),Ar   z3.142e5)r)  r   1e-5)r   r   1e-4)r   r   1e-3)r  r   1e-2)r   r   r.  )r   r   r  )r#   r   10)r   r   100)r(  r   1000)'  r   1e4)r&  r   1e5)r  r  r  )r  r  r  )r  r  0.003)r  r  0.031)r  r  0.314)r  r  r  )r  r  31.416)r  r  314.159)r  r  3141.593)r  r  	31415.927)r  r  
314159.265)r)  r  r  )r   r  r  )r   r  0.001)r  r  0.01)r   r  r  )r   r  r  )r#   r  r  )r   r  r  )r(  r  r  )r  r  10000)r&  r  100000)r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r)  r   r  )r   r   r  )r   r   r  )r  r   r  )r   r   r  )r   r   r  )r#   r   r  )r   r   r  )r(  r   r  )r  r   r  )r&  r   r  )r  r"   r  )r  r"   r  )r  r"   r  )r  r"   z0.03)r  r"   z0.31)r  r"   r  )r  r"   z31.42)r  r"   z314.16)r  r"   z3141.59)r  r"   z31415.93)r  r"   z	314159.27)r)  r"   r  )r   r"   r  )r   r"   r  )r  r"   r  )r   r"   r  )r   r"   r  )r#   r"   r  )r   r"   r  )r(  r"   r  )r  r"   r  )r&  r"   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   z0.3)r  r   3.1)r  r   z31.4)r  r   z314.2)r  r   z3141.6)r  r   z31415.9)r  r   z314159.3)r)  r   r  )r   r   r  )r   r   r  )r  r   r  )r   r   r  )r   r   r  )r#   r   r  )r   r   r  )r(  r   r  )r  r   r  )r&  r   r  )r  rR  z3.1e-5)r  rR  z3.1e-4)r  rR  z3.1e-3)r  rR  z3.1e-2)r  rR  z3.1e-1)r  rR  r   )r  rR  z3.1e1)r  rR  z3.1e2)r  rR  z3.1e3)r  rR  z3.1e4)r  rR  z3.1e5)r)  rR  r  )r   rR  r  )r   rR  r  )r  rR  r  )r   rR  r.  )r   rR  r  )r#   rR  r  )r   rR  r  )r(  rR  r  )r  rR  r  )r&  rR  r  zvalue, domain, expectedc                 ^    [         R                  " 5       nUR                  X5      nXS:X  d   eg N)r-   LogFormatter_pprint_val)r0   rw  domainr3   r|  r  s         r5   test_pprintTestLogFormatter.test_pprint  s*    ""$.   r8   zvalue, long, short))r   r  r  )r   r  r  )r   z-10^0r1  )g|=z2x10^-10z2e-10)g    _Bz10^10z1e+10c                     [         R                  " 5       u  pEUR                  S5        UR                  R	                  5       nUR                  U5      U:X  d   eUR                  U5      U:X  d   eg )Nr5  )r   r   
set_xscaler   r5  rv  r6  )r0   rw  longshortr   r   r|  s          r5   ry  !TestLogFormatter.test_format_data  s_     ,,.
ehh**,u%---$$U+u444r8   rC   c                 X   UR                  5       nUR                  5       nUR                  U5        US[        R                  " [        R
                  " U5      5      -  -  nU Vs/ s H  n[        U5      U;   PM     nnU Vs/ s H  o" U5      S:g  PM     n	nX:X  d   egs  snf s  snf )z.Test whether locator marks subs to be labeled.r#   r  N)get_minor_formatterr   rd  rT   r  r  round)
r0   r  r=  r|  minor_tlocscoefsclabel_expectedr   
label_tests
             r5   _sub_labelsTestLogFormatter._sub_labels  s    &&(,,.[!b288BHH[,A#BCC49:Eq%(d*E:,78Kqc!flK
8+++ ;8s   &B"B'r  c           	      b   [         R                  " 5       u  pUR                  S5        UR                  R	                  [
        R                  " S/ S95        UR                  R                  [
        R                  " S[        R                  " SS5      S95        UR                  R                  [
        R                  " SS95        UR                  R                  [
        R                  " SS95        UR                  SS	5        UR                  R                  5       nUR                  UR                  R!                  5       5        UR                  R!                  5        Vs/ s H  nU" U5      S
:g  PM     nn[        R"                  " U5      (       d   eU R%                  UR                  / S9  UR                  SS5        U R%                  UR                  / S9  UR                  SS5        U R%                  UR                  / S9  UR                  SS5        U R%                  UR                  / SQS9  UR                  SS5        U R%                  UR                  / SQS9  UR                  SS5        U R%                  UR                  [        R                  " SS[&        S9S9  g s  snf )Nr5  r#   )r   r=  r   T)r  Fr   rM  r  r<  i   P   r   r  )r   rd   r   r   rs   r   r   r  )r   r   r	  r   r  r-   r/  r   rT   rV   rl  r  set_minor_formatterr   r5  rd  rm  rL   r  r  )r0   r   r   r|  r   show_major_labelss         r5   test_sublabelTestLogFormatter.test_sublabel  s    ,,.
e
""7#5#52B#GH
""7#5#52;=99Q;K$M 	N
$$W%9%9%MN
$$W%9%9%NO
Ashh**,RXX//12&(hh&@&@&BD&B !Vr\&B 	 Dvv'((((+ 	As+ 	Ar+ 	B5 	Aq5 	C		!Rs(CD7Ds   %J,val)r   r#   r   r(  c                     [         R                  " 5       nUR                  5         UR                  R	                  SS5        U" U5      [        U5      :X  d   eg Nr   r#   )r-   r  r  r  r  strr0   r  temp_lfs      r5   test_LogFormatter_call'TestLogFormatter.test_LogFormatter_call  sH     &&(!!#&&q"-s|s3x'''r8   )g       g       g       g       c                     [         R                  " 5       nUR                  5         UR                  R	                  SS5        U" U5        g r  )r-   r  r  r  r  r!  s      r5   test_LogFormatter_call_tiny,TestLogFormatter.test_LogFormatter_call_tiny  s9     &&(!!#&&q"-r8   N)rC   )rP   rQ   rR   rS   pprint_datarD   rY   rZ   r  ry  r  r   r  r  r  r#  r&  r_   rC   r8   r5   r  r  3  s    EKN [[6D! E!
 [[1 4 55, 	YYy!(E "(ET [[U$67( 8( [[U$FG Hr8   r  c                      \ rS rSr\S 5       r\R                  R                  S/ SQ5      S 5       r	\
" \" SS5       V Vs/ s H	  nSU* -  PM     snn \" SS5       V Vs/ s H  nSSU* -  -
  PM     snn -   S/-   5      r\R                  R                  S	\5      S
 5       r\R                  R                  S	S5      S 5       r\R                  R                  S	SS\R                   " \R"                  " SSS5      * 5      -   -  5      S 5       r/ SQr\R                  R                  S\5      S 5       rS rS rS r\R                  R                  SS5      S 5       rSrgs  snn f s  snn f )TestLogitFormatteri  c                    [         R                  " SU 5      nU(       a]  US   SLnUS   (       a  [        US   5      OSnUS   b  [        US   5      OSnUSU-  -  nUS   (       d  US   b  U(       a  SU-
  $ U$ [         R                  " S	U 5      nU(       a  [        US
   5      [        US   5      pvXg-  $ [	        S5      e)z
Parser to convert string as r'$\mathdefault{1.41\cdot10^{-4}}$' in
float 1.41e-4, as '0.5' or as r'$\mathdefault{\frac{1}{2}}$' in float
0.5,
zT[^\d]*(?P<comp>1-)?(?P<mant>\d*\.?\d*)?(?:\\cdot)?(?:10\^\{(?P<expo>-?\d*)})?[^\d]*$compNmantr   expor   r#   z4[^\d]*\\frac\{(?P<num>\d+)\}\{(?P<deno>\d+)\}[^\d]*$numdenozNot formatted by LogitFormatter)r\   rB   r  r  r^   )stringrB   r,  mantissar.  rw  r/  r0  s           r5   logit_deformatter$TestLogitFormatter.logit_deformatter  s      
 =,D/4V}uU6]+!H).v)B3uV}%DrTz)EV}f 9u9$CV
 eEl+U5=-A::;;r8   zfx, x))zSTUFF0.41OTHERSTUFFg=
ףp=?)zSTUFF1.41\cdot10^{-2}OTHERSTUFFg!u?)zSTUFF1-0.41OTHERSTUFFgzG?)z!STUFF1-1.41\cdot10^{-2}OTHERSTUFFgx$(~?)STUFFN)zSTUFF12.4e-3OTHERSTUFFNc                     Uc9  [         R                  " [        5         [        R	                  U5        S S S 5        g [        R	                  U5      n[
        R                  X#5      (       d   eg ! , (       d  f       g = fr  )rD   rE   r^   r*  r3  r{  r}  )r0   fxr   r  s       r5   test_logit_deformater(TestLogitFormatter.test_logit_deformater7  s]     9z*"44R8 +* #44R8A''----	 +*s   A//
A=r   r#   r   r   c                     [         R                  " SS9nUR                  U R                  5        U" U5      n[        R                  U5      n[        R                  X5      (       d   eg)zR
Test the formatted value correspond to the value for ideal ticks in
logit space.
Fuse_overlineN)r-   LogitFormatterrd  decade_testr*  r3  r{  r}  )r0   r   r?  sx2s        r5   r6   TestLogitFormatter.test_basicP  sX     **>	4++,aL11!4##A****r8   )r   r   r   r   r!   r   c                     [         R                  " SS9nUR                  U R                  5        U" U5      nUS:X  d   eg)zT
Test that invalid value are formatted with empty string without
raising exception.
Fr;  r  N)r-   r=  rd  r>  )r0   r   r?  r?  s       r5   test_invalidTestLogitFormatter.test_invalid\  s<     **>	4++,aLBwwr8   r   rB  c                 D   [         R                  " SS9nS H  nUSU-  -   S:  d  M  UR                  USU-  -
  XSU-  -   /5        U" U5      nU" USU-  -   5      n[        R	                  U5      [        R	                  U5      -
  nSUs=:  a  SU-  :  a  M   e   e   g)zC
The format length should change depending on the neighbor labels.
Fr;  )	r#   r   r  r      r(  i    r  r   r   r   N)r-   r=  rd  r*  r3  )r0   r   r?  Nsxsx1ds          r5   test_variablelength&TestLogitFormatter.test_variablelengthg  s    
 **>	@A1q5y1}""AAIqa!e)#<=q\AE	*&88=(::2>?  1}q1u}$}$} Ar8   ))Tr  )r  F)K   F)Tr  )rN  rO  T)Tr  )r  TrP  )F)r   gRQ?gp=
ף?))rB  TrQ  rP  zmethod, lims, casesc                    U(       a$  [         R                  " SS9nUR                  " U6 nO[        R                  " U5      n[         R
                  " SS9nU H  u  pxUR                  U5        UR                  U5      n	U	 V
s/ s H  n
[        U
5      S:  d  M  U
PM     nn
U(       a  [        U5      S:  d   Xx45       eMj  [        U5      S:X  a  M{   Xx45       e   gs  sn
f )z
Test minor/major displays.
Tr   r   N)	r-   r  r/   rT   rU   r=  set_minor_thresholdformat_ticksr   )r0   methodr  casesmin_locr  min_form	threshold	has_minor	formattedflabelleds               r5   test_minor_vs_major&TestLogitFormatter.test_minor_vs_major  s     **6G''.EHHTNE))5$) I((3 --e4I#,;9aA
9H;8}q(@9*@@(8})AI+AA) %* <s   CCc                 @   [         R                  " SS9n[         R                  " SS9nUR                  SS5      nS HY  nUR	                  U5        UR                  U5      nU Vs/ s H  n[        U5      S:  d  M  UPM     nn[        U5      U:X  a  MY   e   gs  snf )z!
Test the parameter minor_number
Tr   r   r   )r   r   rs   r  r   N)r-   r  r=  r/   set_minor_numberrT  r   )r0   rW  rX  r  minor_numberr[  r\  r]  s           r5   test_minor_number$TestLogitFormatter.test_minor_number  s     &&T2))5##D(3)L%%l3 --e4I#,;9aA
9H;x=L000	 * <s   &B=Bc                     SnSnSn[         R                  " SS9nU" U5      U:X  d   eUR                  S5        U" U5      U:X  d   eUR                  S5        U" U5      U:X  d   eg)z!
Test the parameter use_overline
r)  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Fr;  TN)r-   r=  r<  )r0   r   fx1fx2forms        r5   test_use_overline$TestLogitFormatter.test_use_overline  so     *3%%59Aw#~~$Aw#~~% Aw#~~r8   c                     [         R                  " 5       nSU" S5      ;   d   eUR                  S5        SU" S5      ;   d   eUR                  S5        SU" S5      ;   d   eg)z
Test the parameter one_half
z\frac{1}{2}r   z1/2zone halfN)r-   r=  set_one_half)r0   rh  s     r5   test_one_half TestLogitFormatter.test_one_half  sd     %%'c***% S	!!!*%T#Y&&&r8   rH  )r      i  c                 *   [         R                  " SSU5      SS n[        R                  " 5       nU H]  nUR	                  U5      nUR                  S5      (       a  S[        USS  5      -
  nO[        U5      n[        XF-
  5      SU-  :  a  M]   e   g )Nr   r   r   z1-r   )rT   r~   r-   r=  r6  
startswithr  abs)r0   rH  r  rh  r   r7  r@  s          r5   test_format_data_short)TestLogitFormatter.test_format_data_short  s    {{1a#Ab)%%'A''*B}}T""r!"v&2Yqv;Q&&& r8   rC   N)rP   rQ   rR   rS   r  r3  rD   rY   rZ   r8  r  r  r>  r6   rC  rT   expr~   rL  lims_minor_majorr^  rc  ri  rm  rs  r_   )r  is   00r5   r*  r*    s   < <@ [[	

.
. "1b\*\\*#(B<
0<a1rqbz><
0	1'	K [[S+.	+ /	+ [[S"?@ A [[S!q2662;;r1b3I2I+J'J"KL% M%  [[24DEB FB(1	' [[S/2	' 3	'a 	+
0s   E$
 E*r*  c                       \ rS rSrS rSrg)TestFormatStrFormatteri  c                 L    [         R                  " S5      nSU" S5      :X  d   eg )Nz%05d00002r   )r-   FormatStrFormatterrR  s     r5   r6   !TestFormatStrFormatter.test_basic  s$    --f5(1+%%%r8   rC   N)rP   rQ   rR   rS   r6   r_   rC   r8   r5   ry  ry    s    &r8   ry  c                   `    \ rS rSr/ SQr\R                  R                  S\5      S 5       rSr	g)TestStrMethodFormatteri  )){x:05d}r   Fr{  )r  r  Tr{  )r  r  Fz-0002)r  r  Tu   −0002){x:03d}-{pos:02d}r   r   F002-01)r  r  Tr  )r  r  r   Fz-02-01)r  r  Tu   −02-01z&format, input, unicode_minus, expectedc                     [         R                  " SU05         [        R                  " U5      nU" U6 U:X  d   e S S S 5        g ! , (       d  f       g = f)Nr3  )r   r   r-   StrMethodFormatter)r0   formatinputr8  r3   r|  s         r5   r6   !TestStrMethodFormatter.test_basic  sC    ^^1=AB,,V4C;(*** CBBs   "A
ArC   N)
rP   rQ   rR   rS   r  rD   rY   rZ   r6   r_   rC   r8   r5   r  r    s0    	I [[EyQ+ R+r8   r  c                   `    \ rS rSr/ SQr\R                  R                  S\5      S 5       rSr	g)TestEngFormatteri  ))FEJ)z
-1.23457 k-1 kz-1.23 k)Tr  )u   −1.23457 k   −1 ku	   −1.23 k)FރB)z-1.23457r1  z-1.23)Tr  )u
   −1.23457r0  u   −1.23)F_c97ݚ)z
-123.457 mz-123 mz	-123.46 m)Tr  )u   −123.457 mu   −123 mu   −123.46 m)FQ^-':T)z
-1.23457 mz-1 mz-1.23 m)Tr  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r  r  z0.00Tr   r  r  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Tr   )100 mr  z100.00 m)Tr   )r  r  z1.00)TgރB?)z1.23457r  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@r  r  1.00 k)F*:?)r  r  z-1.00 k)Tr  )r  r  u	   −1.00 k)Tr(  r  )Ti  )z1.001 kr  r  )Ti )z	100.001 kz100 kz100.00 k)TgZ$.A)z	987.654 kz988 kz987.65 k)TgCY,dRF)1230 Qr  z	1230.00 Qzunicode_minus, input, expectedc           	        ^^	^
 U[         R                  S'   Sm	SmUn[        R                  " 5       [        R                  " SS9[        R                  " SS94n[	        XT5       H  u  pgU" U5      U:X  a  M   e   UU	4S jU 5       n[        R                  " T	S9[        R                  " T	SS	9[        R                  " T	SS	94n[	        XT5       H  u  pgU" U5      U:X  a  M   e   S
 H  m
UU	U
4S jU 5       n[        R                  " T	T
S9[        R                  " T	ST
S9[        R                  " T	ST
S94n[	        XT5       H  u  pgU" U5      U:X  a  M   e   U
4S jU 5       n[        R                  " T
S9[        R                  " ST
S9[        R                  " ST
S94n[	        XT5       H  u  pgU" U5      U:X  a  M   e   M     g)a  
Test the formatting of EngFormatter for various values of the 'places'
argument, in several cases:

0. without a unit symbol but with a (default) space separator;
1. with both a unit symbol and a (default) space separator;
2. with both a unit symbol and some non default separators;
3. without a unit symbol but with some non default separators.

Note that cases 2. and 3. are looped over several separator strings.
r3  r?  
0123456789r   )placesr   c              3   P   >#    U  H  nUS    T;   a  US-   T-   OUT-   v   M     g7fr    NrC   )r  _sDIGITSUNITs     r5   	<genexpr>/TestEngFormatter.test_params.<locals>.<genexpr>*  s7      :08" +-R&F*:rCx$I&08s   #&)unit)r  r  )r  u    z@_@c              3   p   >#    U  H+  nUS    T;   a  UT-   T-   OUR                  ST5      T-   v   M-     g7fr  r  )r  r  r  r  _seps     r5   r  r  :  sD      /%-r 02"v/?29t+ "

3 5 <=%-s   36)r  rf  )r  r  rf  c              3   F   >#    U  H  oR                  S T5      v   M     g7f)r  Nr  )r  r  r  s     r5   r  r  H  s     D8R::c4008s   !)rf  )r  rf  N)r   r]  r-   EngFormatterr#  )r0   r8  r  r3   exp_outputs
formatters
_formatter_exp_outputr  r  r  s           @@@r5   test_paramsTestEngFormatter.test_params
  s    .;)*   "  *  *


 (+:'C#Je$333 (D:08:   d+  d15  d15


 (+:'C#Je$333 (D
 =D/%-/K $$$D9$$$qdC$$$qdCJ
 ,/z+G'
!%(K777 ,H E8DK$$.$$A48$$A48J
 ,/z+G'
!%(K777 ,H1 =r8   rC   N)
rP   rQ   rR   rS   raw_format_datarD   rY   rZ   r  r_   rC   r8   r5   r  r    s3    #OJ [[=OD8 PD8r8   r  c                     [         R                  " 5       u  pUR                  / SQ/ SQ5        UR                  / SQ5        [        R
                  " SS9[        R
                  " SS94 Ho  nUR                  R                  U5        U R                  R                  5         UR                  5        Vs/ s H  o3R                  5       PM     nnU/ SQ:X  a  Mo   e   g s  snf )N)r   r  r(  T)usetex)useMathText)z$0$z$500$z$1$ k)r   r   r  r   r-   r  r   rl  r  r  get_xticklabelsget_text)r   r   r?  lablx_tick_label_texts        r5   $test_engformatter_usetex_useMathTextr  R  s    llnGCGGNN+MM.!**$7**t<>	
$$Y/

9;9K9K9MN9M]]_9MN !$====> Os   3Cz9data_offset, noise, oom_center_desired, oom_noise_desired))g  @ROBr#   r  r   )g  BBi r  r   )/$&;@r  r   r  )g5@r  rd   r  )g    Ar   rd   r  )p=
p@r   r   r  )g   uHBr   r  rd   )r  gHz>r   i)r  r   r   r  )r  r   r   r  )g    @@r  r   rd   )r  r  r   rd   )r  r(  r   rd   )r  r   r   r   )r  r#   r   r   c                 4   Sn[         R                  " 5       u  pVU [        R                  " SS[        S9U-  -   nUR                  U5        [        R                  " SUS9nSUR                  S'   UR                  R                  U5        UR                  R                  5         UR                  5       n	UR                  5        V
s/ s H  oR                  5       PM     nn
UR                   (       aT  U	S	   nUR                  U   nU	S
[#        U5      -
     nUR                  U   nX:X  d   eX:X  d   eU H  nUU;  a  M   e   g US:X  d   eU	S:X  d   eU H8  nUS   S:X  a  SOUnUR%                  UR                  U   U-   5      (       a  M8   e   g s  sn
f )NeVr   rB  r  T)	useOffsetr  _r   r   r   r  r  )r   r   rT   rV   r  r  r-   r  ENG_PREFIXESr  rl  r  r  
get_offsetget_yticklabelsr  r   r   endswith)data_offsetnoiseoom_center_desiredoom_noise_desiredr  r   r   ydatar?  
offset_gotr  	ticks_gotprefix_noise_gotprefix_noise_desiredprefix_center_gotprefix_center_desiredtick
prefix_idxs                     r5   test_engformatter_offset_oomr  `  s   < DllnGC"))B7==EGGEN$$t$?I #I1HH  +JJOO%%'J-/-?-?-AB-AT-AIB %a=(556GH&r#d)|4 ) 6 67I J#777$999Dt###  "Q&&&RD #1gn2CJ==!7!7
!Cd!JKKKK	 ) Cs   Fc                       \ rS rSr/ SQr/ SQr/ SQr\R                  R                  S\\S9S 5       r
\R                  R                  S\5      S	 5       rS
rg)TestPercentFormatteri  ))r   r   %r,  r   z120%)r   r   r  r   Z   z100%)r   r   r  r  r  z90%)r   r   r  r   r  z-2%)r   r   r  g     V@r   z90.0%)r   r   r  gfffffT@r  z80.1%)r   r   r  gQQ@r  z70.2%)r   r   r  gxFNr  z-60.6%)r   Nr  _   r   z95.00%)r   Nr  rd   r   z300%)      1@Nr  r   g      !@z6%)r  Nr  r   g @z5.9%)r"   Nr  r  gư>z-2000.00000%)r   r   Nr   r   z120.00)rO  rd   r  r  r   z66.667)r  Nz
^^Foobar$$   r  z50.0^^Foobar$$)zdecimals=0, x>100%zdecimals=0, x=100%zdecimals=0, x<100%zdecimals=0, x<0%zdecimals=1, x>100%zdecimals=1, x=100%zdecimals=1, x<100%zdecimals=1, x<0%z$autodecimal, x<100%, display_range=1z7autodecimal, x>100%, display_range=6 (custom xmax test)z;autodecimal, x<100%, display_range=8.5 (autodecimal test 1)z;autodecimal, x<100%, display_range=8.4 (autodecimal test 2)z=autodecimal, x<-100%, display_range=1e-6 (tiny display range)zNone as percent symbolzEmpty percent symbolzCustom percent symbol))FF50\{t}%)FTz50\\\{t\}\%)TFr  )TTr  z2xmax, decimals, symbol, x, display_range, expected)idsc                     [         R                  " XU5      n[        R                  " SS0S9   UR	                  XE5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Nr  Frcr-   PercentFormatterr   r   
format_pct)r0   xmaxdecimalssymbolr   display_ranger3   r?  s           r5   r6   TestPercentFormatter.test_basic  sL    
 ,,TVD	^^u56''9XEEE 766s   A
Azis_latex, usetex, expectedc                     [         R                  " SUS9n[        R                  " SU0S9   UR	                  SS5      U:X  d   e S S S 5        g ! , (       d  f       g = f)Nz\{t}%)r  is_latexr  r  r  r   r  )r0   r  r  r3   r|  s        r5   
test_latexTestPercentFormatter.test_latex  sJ    &&hJ^^v67>>"c*h666 877s   A
ArC   N)rP   rQ   rR   rS   percent_datapercent_ids
latex_datarD   rY   rZ   r6   r  r_   rC   r8   r5   r  r    sp    L.K,J [[@k  +F+F [[9:F7 G7r8   r  c                      [         R                  " [         R                  S5        [
        R                  " SSS9n SnU R                  US5      nUS:X  d   eSnU R                  US5      nUS	:X  d   e[
        R                  " S
SS9n SnU R                  US5      nUS:X  d   eg ! [         R                   a    [	        S5         g f = f)Nzde_DE.UTF-8z9SKIP: Locale de_DE.UTF-8 is not supported on this machineT)r  	useLocalez$\mathdefault{%1.1f}$r   z$\mathdefault{0{,}5}$z,$\mathdefault{,%1.1f},$z,$\mathdefault{,0{,}5},$Fz%1.1fz0,5)r^  	setlocaleLC_ALLErrorprintr-   rD  _format_maybe_minus_and_locale)r  r|  r   s      r5   _impl_locale_commar    s    6 ##EE
"C,,S#6A((((
%C,,S#6A++++##FE
C,,S#6A:: << IJs   %B& &CCc                      [         R                  R                  [        SSS0S9n [	        S U R
                  R                  5        5       S5      nU(       a  [        R                  " U5        g g )Nr'   
MPLBACKENDAgg)timeout	extra_envc              3      #    U  H9  nUR                  S 5      (       d  M  U[        S 5      S R                  5       v   M;     g7f)zSKIP:N)rq  r   r7  )r  lines     r5   r  $test_locale_comma.<locals>.<genexpr>  s<      2!90 1T#g,-(..00!9s
   A#Ar  )	r   r   subprocess_run_helperr  nextstdout
splitlinesrD   ra  )procskip_msgs     r5   test_locale_commar    sj     ;;,,-?8De7L - ND 2!%!7!7!92 H H r8   c                      [         R                  " 5       u  p[        R                  " [        5         UR
                  R                  [        R                  " 5       5        S S S 5        g ! , (       d  f       g = fr  )	r   r   rD   rE   r[   r   rl  r-   r/  r   r   s     r5   test_majformatter_typer    B    llnGC	y	!
$$W%7%7%9: 
"	!	!   /A**
A8c                      [         R                  " 5       u  p[        R                  " [        5         UR
                  R                  [        R                  " 5       5        S S S 5        g ! , (       d  f       g = fr  )	r   r   rD   rE   r[   r   r  r-   r/  r  s     r5   test_minformatter_typer    r	  r
  c                      [         R                  " 5       u  p[        R                  " [        5         UR
                  R                  [        R                  " 5       5        S S S 5        g ! , (       d  f       g = fr  )	r   r   rD   rE   r[   r   r  r-   r  r  s     r5   test_majlocator_typer    B    llnGC	y	!
""7#7#7#9: 
"	!	!r
  c                      [         R                  " 5       u  p[        R                  " [        5         UR
                  R                  [        R                  " 5       5        S S S 5        g ! , (       d  f       g = fr  )	r   r   rD   rE   r[   r   r   r-   r  r  s     r5   test_minlocator_typer    r  r
  c                     ^ [         R                  " 5       mU4S jn U " SSS5        U " SSS5        U " SSS5        U " SSS5        g )Nc                 B  > U US.n[         R                  " US9   TR                  SSU5      nS S S 5        [        WR                  R                  5       5      S:  U :X  d   e[        UR                  R                  5       5      S:  U:X  d   eg ! , (       d  f       Ng= f)N)zxtick.minor.visiblezytick.minor.visibler  r   r   )r   r   add_subplotr   r   get_minor_ticksr  )xminoryminorrw  r  r   r   s        r5   minorticksubplot,test_minorticks_rc.<locals>.minorticksubplot(  s    %+%+-^^r"Aq)B # BHH,,./!3>>>BHH,,./!3>>>	 #"s   B
BFr   Tr   rd   r   )r   figure)r  r   s    @r5   test_minorticks_rcr  %  sE    
**,C? UE1%T5!$UD!$T4#r8   c                     ^ [         R                  " 5       mU4S jn / SQnU H?  nU " SSUS5        U " SSUS5        U " SSUS5        U " SSUS5        TR                  5         MA     [         R                  " T5        g	)
a\  
Test toggling minor ticks

Test `.Axis.minorticks_on()` and `.Axis.minorticks_off()`. Testing is
limited to a subset of built-in scales - `'linear'`, `'log'`, `'asinh'`
and `'logit'`. `symlog` scale does not seem to have a working minor
locator and is omitted. In future, this test should cover all scales in
`matplotlib.scale.get_scale_names()`.
c                   > TR                  SSU5      nUR                  U5        UR                  U5        U (       d  U(       d  UR                  5         U (       a;  U(       d4  UR                  R                  5         UR                  R                  5         U (       d;  U(       a4  UR                  R                  5         UR                  R                  5         U (       a  U(       a  UR                  5         [        UR                  R                  5       5      S:  U :X  d   e[        UR                  R                  5       5      S:  U:X  d   eg )Nr   r   )	r  r	  r6  minorticks_offr   r   r  r   r  )r  r  scalerw  r   r   s        r5   minortickstoggle0test_minorticks_toggle.<locals>.minortickstoggleB  s    __Q1%
e
ef&HH""$HH##%&HH##%HH""$fBHH,,./!3>>>BHH,,./!3>>>r8   )linearr5  asinhlogitFr   Tr   rd   r   N)r   r  clearclose)r   scalesr  r   s      @r5   test_minorticks_toggler(  7  st     **,C?$ 1Fua0ueQ/eQ/tUA.		  IIcNr8   z%remove_overlapping_locs, expected_num))Tr   )Nr   )Fr  c                 0   [         R                  " SSSS9n[         R                  " [        U5      5      n[        R
                  " 5       u  pEUR                  X#5        UR                  R                  [        R                  R                  5       5        UR                  R                  [        R                  R                  S5      5        UR                  R                  [        R                  R                  S5      5        UR                  R!                  [        R                  R                  S5      5        UR                  R#                  S5        U b  XR                  l        UR                  R$                  nXeR                  R'                  5       :X  d   e[        R(                  " UR                  US	9  UR                  R$                  nXuR                  R$                  :X  d   e[        UR                  R+                  5       5      U:X  d   e[        UR                  R#                  5       5      U:X  d   e[        UR                  R-                  5       5      U:X  d   e[        UR                  R/                  5       5      US
-  :X  d   eg )Nz
2018-11-03z
2018-11-06
datetime64r  z
%a)r   r   r     z%H:%Mr$   )remove_overlapping_locsr   )rT   rV   onesr   r   r   r  r   r  r   dates
DayLocatorrl  DateFormatterr   HourLocatorr  r  r,  get_remove_overlapping_locssetpr   get_minorticklabelsget_minorticklines)r,  expected_numtr   r   r   currentnews           r5   test_remove_overlapr:  _  s   
 			,LAA
AAllnGCGGAMHHsyy3356HH  !8!8!@AHHsyy44^DEHH  !8!8!ABHHR *+B( hh..Gxx;;==>=HHRXXw7
((
*
*C8833343 rxx))+,<<<rxx'')*l:::rxx++-.,>>>rxx**,-a???r8   subhiaardvark)r   r   c                     [         R                  " 5       n[        R                  " [        5         UR                  U S9  S S S 5        g ! , (       d  f       g = f)Nr<  )r-   r/  rD   rE   r^   rv   )r;  rX  s     r5   test_bad_locator_subsr?    s8     
			B	z	"
3 
#	"	"s   A		
Aznumticks, lims, ticksr   )r   r"   )r   r   r#   r   rd   r  )r   r  )r   r#   r(  )r   r   r#   r   )r   r  )r  r   r   r  )r   r   r#   r   r(  )r   rG  )r   r   r&  )r   r   r(  i@B )r   r   r#   r   r(  r  r  c                     [         R                  " U S9n[        [        R                  R                  5      R
                  S:  a  [        UR                  " U6 USS9  g [        UR                  " U6 U5        g )Nre   r   gؗҬ<)rtol)	r-   r/  r  rT   versionr  r   r/   r   )rf   r  r  rX  s       r5   test_small_range_loglocatorrC    sY    ( 
		X	.BRZZ''(..2-u5A2>>40%8r8   c                     Sn Sn[         R                  " [        SU S-   5      [         R                  " [        U5      S5      5       GH4  u  nu  p4[        R
                  " US9n[        R                  " UR                  SU-  SU-  5      5      R                  5       R                  [        5      n[        U5      US-   ::  d   eUS   Us=:  a
  US   ::  d   e   eUS   Us=::  a
  US	   :  d   e   e1 [        R                  " U5      ku  nXg-  S:H  R                  5       (       a  M  [        SU5       H@  n[        X8-   US-   U5      n	[        U	5      [        U5      :  a  M/  [        U	5      U:  a  M@   e   GM7     g )
Nrs   r   r   r   re   r#   r   r  r   )r  r  r  combinationsr-   r/  rT   r  r/   r  astyper  r   diffrL   )
max_numtickspow_endrf   lor<  rX  decadesstrider   alt_decadess
             r5   test_loglocator_propertiesrN    sc    LG'//!\A%&	(>(>uW~q(QS(22((2>>"b&"b&9:@@BII#N 7|x!|+++qzB,'!*,,,,,r{b.72;.....%BGGG$% A%**,,  6*#BKa@;'#g,6#k:JX:UUU +Sr8   c                      [         R                  " 5       n U " S5      S:X  d   eU R                  S5      S:X  d   eU R                  S5      S:X  d   eg )Nr   r  )r-   NullFormatterrv  r6  r?  s    r5   test_NullFormatterrR    sT    %%'IS>R  %+++&&s+r111r8   r?  c                     SU  3$ )Nzval: rC   )r  s    r5   <lambda>rT    s
    eA3Kr8   )r>   barc                 ~    U R                  5       S:X  d   eU R                  S5        U R                  5       S:X  d   eg )Nr  r   )r  set_offset_stringrQ  s    r5   test_set_offset_stringrX    s@     !R'''&!U***r8   c                  @   [         R                  " 5       u  pUR                  [        R                  " S5      S/S9  UR                  [        R                  " S5      S/S9  UR                  [        R                  " S5      S/S9  UR                  SS9  UR                  SS9  UR                  5         U R                  5         UR                  5       (       d   e[        UR                  R                  5       [        R                  R                  5      (       d   eg)	z
Turning on minor gridlines in a multi-Axes Figure
that contains more than one boxplot and shares the x-axis
should not raise an exception.
r#   r   )r  r   r  )whichr   N)r   r   boxplotrT   rV   r  r   draw_without_renderingget_xgridlines
isinstancer   get_minor_locatorr   tickerr   r  s     r5   test_minorticks_on_multi_figra    s     llnGCJJryy}J,JJryy}J,JJryy}J,GG'GGG'G bhh002CJJ4O4OPPPPr8   )F
contextlibr   r  r^  r  r\   packaging.versionr   r  numpyrT   numpy.testingr   r   r   rD   
matplotlibr   matplotlib.pyplotpyplotr   matplotlib.tickerr`  r-   r	   ra   r   r   r&  rs  r{  r  r  r  r  r  r#  r  r  r  r  r*  ry  r  r  r  rY   rZ   r  r  r  r  r  r  r  r  r  r(  r:  zerosr?  r  r  rC  rN  rR  FuncFormatterFixedFormatterrX  ra  rC   r8   r5   <module>rm     sY   "    	 4  R R    #,, ,,^F F<8! 8!vmH mH`M7 M7` $ $"O! O!d	  	 ? ?:)8 )8Xb7 b7J\ \~!( !(H/ /&0 08_ _Do' o'd& &+ +&n8 n8b> ? B0(L10(LVB7 B7J* ;;;;$$%P @&'@	'@B 	:HHV!    0/""#"#"#	?#	()	*+	*+
&'
/0
/0
34!3 $ 99 %&9 9V V22 /0>*', -+-+Qr8   