
    h$                    |   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  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,\RZ                  R]                  S0/ S1Q5      S2 5       r/ " S3 S45      r0S5 r1S6 r2S7 r3S8 r4S9 r5S: r6S; r7S< r8\RZ                  R]                  S=S>5      S? 5       r9\RZ                  R]                  S@SASB/\
Rt                  " SC5      /5      SD 5       r;\RZ                  R]                  SE/ SFQ5      \Rx                  R{                  SG5      SH 5       5       r>SI r?\RZ                  R]                  SJ\R                  " SK 5      \R                  " SL5      45      SM 5       rBSN rCg)O    )nullcontextN)parse)assert_almost_equalassert_array_equalc            
       *   \ 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        N/var/www/html/env/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+   )r/   r0   r1   r:   r2   r3   s         r4   test_integerTestMaxNLocator.test_integer%   s)    !!4uECOOD7Br7   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-   )r/   kwargs	errortyperA   s       r4   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)r/   r:   resultr3   s       r4   test_paddingTestMaxNLocator.test_padding5   s2     !!.

f$))++++r7   rB   )__name__
__module____qualname____firstlineno__nparrayarange
basic_datainteger_datarC   markparametrizer5   r;   	TypeErrorreescape
ValueErrorrG   rM   __static_attributes__rB   r7   r4   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	/ ,,r7   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ӿ皙?rf   rh   )r,   LinearLocatorrS   rT   r   r.   r/   r3   
test_values      r4   r5   TestLinearLocator.test_basicA   s6    ##Q/XX/0
COOD#6
Cr7   c                 V    [         R                  " SS9nUR                  SS5      / :H    g )Nr   rd   rf   rh   )r,   ri   r.   r/   r3   s     r4   test_zero_numticks$TestLinearLocator.test_zero_numticksF   s%    ##Q/c"b(r7   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   rd      r   r   )re   presetsN)r,   ri   
set_paramsre   rt   rn   s     r4   test_set_params!TestLinearLocator.test_set_paramsJ   sP    
 ##Q/FB<8||q   {{vrl***r7   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   )rt   r   r   r   r          @r>   )r,   ri   r.   rS   linspacerK   rn   s     r4   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Er7   rB   N)	rO   rP   rQ   rR   r5   ro   rv   r~   r^   rB   r7   r4   r`   r`   @   s    D
)+Fr7   r`   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,   MultipleLocatorrS   rT   r   r.   rj   s      r4   r5   TestMultipleLocator.test_basic_   s:    %%51XX . /
COOB3Z@r7   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   rj   s      r4   test_basic_with_offset*TestMultipleLocator.test_basic_with_offsete   s<    %%5=XX ' (
COOB3Z@r7   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_limitsrn   s     r4   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   rn   s     r4   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   rn   s     r4   *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   rn   s     r4   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?rc   )r   N)r,   r   ru   _edgestep_offset)r/   mults     r4   rv   #TestMultipleLocator.test_set_params   sX    
 &&C0S!zz#%%%q!||q   r7   rB   N)rO   rP   rQ   rR   r5   r   r   r   r   r   rv   r^   rB   r7   r4   r   r   ^   s+    AAAIIE	!r7   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?ry   r   g?Tminor)	pltsubplotsset_xlimminorticks_onrS   rT   r   xaxisget_ticklocsr/   figaxrk   s       r4   r5   TestAutoMinorLocator.test_basic   s\    ,,.
At
XX G H
 	BHH111=zJr7   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皙grf   gffffffg333333皙ٿrg   皙ɿr   r   rh   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,   AutoMinorLocatorrS   rT   r   r   r   s       r4   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Jr7   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_xticksrS   r}   r   r   r   r,   r   lenget_minorticklocs)r/   nb_majorticksexpected_nb_minorticksr   r   xlimss         r4   test_low_number_of_majorticks2TestAutoMinorLocator.test_low_number_of_majorticks   s     ,,.
U
bkk%(E!HmDE

""7#;#;#=>288--/04JJJJr7   ))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_minordivisionsrS   testingassert_allcloser,   AutoLocatorrJ   )r/   x
majorstepss      r4   "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   )r/   
major_stepexpected_nb_minordivisionsr   r   r   nb_minor_divisionss          r4   test_number_of_minor_ticks/TestAutoMinorLocator.test_number_of_minor_ticks   s     ,,.J
U
e

""7#;#;#=> !;!;!=>B!???r7   )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   )r/   limrefr   r   s        r4   test_additional$TestAutoMinorLocator.test_additional  sk    ,,.

gsa0
gSA6
CBHH111=sCr7   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   rB   )r   r   r   r   r   r  r   r   r,   r   r  r   r   )r/   r  r  r  contextrE   r   r   s           r4   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   ry   r    rz   r"   rs   )	r   rh   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   rB   )r   r   r   r   r   r  r   set_major_locatorr,   r   r   r   r  r   r   )	r/   r  r  r  r  r  rE   r   r   s	            r4   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:rB   N)rO   rP   rQ   rR   r5   paramsr   rC   rX   rY   r   r   r   r   limits	referencelistzipadditional_datar  r  r  r^   rB   r7   r4   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r7   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!   rd   r     )h㈵>r   r         $@     @@     j@    cA    eAr   g     @r   r   )
r   r   r|         @g       @g      0@g      @@g      P@g      `@g      p@r   r   )	r,   
LogLocatorrC   rD   r]   r.   rS   rT   r   rj   s      r4   r5   TestLogLocator.test_basicJ  s      !,]]:&OOAt$ ' XX @ A
 	COOE59:F  a(XXNO
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r/   r   r   s      r4   test_polar_axesTestLogLocator.test_polar_axesX  sC     ,,<*AB
e
As2==?O<r7   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g )NrK   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r"   r   r   r   r)  )r,   r/  r   r.   rS   rU   rn   s     r4   test_switch_to_autolocator)TestLogLocator.test_switch_to_autolocatora  sz      e,3??46D	F   bii2&67#//#s33333??34444r7   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   )re   r=  r   N)r,   r/  ru   re   _baser!  _subsrn   s     r4   rv   TestLogLocator.test_set_paramsj  s`       "A6||q   yyA~~CII3%'''r7   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   rh   r   r   r|   r   r)  r         I@r         i@     @@r*       @@     @     @     @     j@r+       jA    A    .A    >A    SAr,      sA    ׇA    חA    קA    eͽAr   r,  )r,   r/  rS   rT   r   r.   r/   llrk   s      r4   test_tick_values_correct'TestLogLocator.test_tick_values_correctv  s>    Y/XX O P

 	BNN1c2J?r7   c                     S[         R                  S'   [        R                  " SS9n[        R
                  " / SQ5      n[        UR                  SS5      U5        g )NFr   rF  r<  )!r   rh   r   r   r|   r   r)  r   rG  r   rH  rI  r*  rJ  rK  rL  rM  rN  r+  rO  rP  rQ  rR  rS  r,  rT  rU  rV  rW  rX  r-  g    eAg    _Ar   rV  )r   rcParamsr,   r/  rS   rT   r   r.   rY  s      r4   test_tick_values_not_empty)TestLogLocator.test_tick_values_not_empty  sK    16-.Y/XX 7 8
 	BNN1c2J?r7   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   )rS   randomdefault_rngnormalr   r   r   r"  flattenhistr6  rK   r7  get_ylim)r/   rng
dummy_datar   axesr   r   s          r4   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 !r7   rB   N)rO   rP   rQ   rR   r5   r9  r>  rv   r[  r_  rq  r^   rB   r7   r4   r%  r%  I  s(    A=5
(@	@7r7   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,   NullLocatorrC   warnsUserWarningru   rn   s     r4   rv   TestNullLocator.test_set_params  s4    
 !!#\\+&NN '&&s   A


ArB   NrO   rP   rQ   rR   rv   r^   rB   r7   r4   rt  rt    s    r7   rt  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)rS   iscloser5  )r   r  s     r4   r~  _LogitHelper.isclose  sZ     q919Q 

BFF1Q3q5M>BFF1Q3q5M>: 	705	7r7   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   )rS   rT   rK   r5  r   )r   r  r   aylxlys         r4   r    _LogitHelper.assert_almost_equal  s    XXa[XXa[vvb1f~~"&&a..00vvb1f~~"&&a..00ffQrT!Vn_ffQrT!Vn_B#r7   rB   N)rO   rP   rQ   rR   staticmethodr~  r   r^   rB   r7   r4   r|  r|    s(    7 7 $ $r7   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"   rc   r   r!   r   rA  rr   	   ))r   r   )r   rh   )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.   )r/   limsexpected_low_ticksexpected_ticksr3   s        r4   test_basic_major!TestLogitLocator.test_basic_major  sV      A A#A-?)?A
 ""-((OOT"	
r7   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   rr      N)r,   r  r-   ru   r.   shaperK   )r/   r  r3   maxn_locr*   ticks
maxn_tickss          r4   test_maxn_major TestLogitLocator.test_maxn_major  s     ""-&&SFENNN'e,OOT*E!--t4J;;*"2"2222',,....  r7   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)
intrS   floorlog10r,   r  rangeru   r   r.   )r/   r  basic_neededr3   r*   s        r4   test_nbins_major!TestLogitLocator.test_nbins_major  s     BHHRXXd1g%67781<q@""-<B/ENNN's-.%!);;; 0r7   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  ru   r.   r|  r   )
r/   r  r  r  r  r3   	minor_locr*   major_ticksminor_tickss
             r4   
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 0r7   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   ru   rn   s     r4   test_minor_attr TestLogitLocator.test_minor_attr  sM    ""-99}	yyyU#99}9r7   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  )r/   r  r3   lims2s       r4   test_nonsingular_ok$TestLogitLocator.test_nonsingular_ok$  s6     ""$&d|ve},,,r7   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  )r/   r  r3   r0   r1   vmin2vmax2s          r4   test_nonsingular_nok%TestLogitLocator.test_nonsingular_nok5  s     ""$%dt2}}5 5     Qdt2}} q     r7   rB   N)rO   rP   rQ   rR   ref_basic_limitsrS   rU   ref_basic_major_ticksref_maxn_limitsrC   rX   rY   r"  r  r  r  r  r  acceptable_vmin_vmax	itertoolsproductr  r  r^   ).0abs   000r4   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)TestFixedLocatoriF  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)   rA  N)r,   FixedLocatorr  ru   r*   )r/   fixeds     r4   rv    TestFixedLocator.test_set_paramsG  s?     $$U1b\;q!{{ar7   rB   Nrz  rB   r7   r4   r  r  F  s     r7   r  c                       \ rS rSrS rSrg)TestIndexLocatoriR  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.
rc   r   r   rA  N)r,   IndexLocatorru   rB  r   )r/   indexs     r4   rv    TestIndexLocator.test_set_paramsS  sM     $$!A6a*{{a||q   r7   rB   Nrz  rB   r7   r4   r  r  R  s    	!r7   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)TestSymmetricalLogLocatori_  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|   rr   )r=  re   N)r,   SymmetricalLogLocatorru   rC  re   r/   syms     r4   rv   )TestSymmetricalLogLocator.test_set_params`  sN     ++qASEA.yySE!!!||q   r7   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  )r0   r1   )r,   r  r.   r   )r/   r0   r1   r2   r  r  s         r4   test_values%TestSymmetricalLogLocator.test_valuesl  s.     ++qAT55+r7   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     r4   	test_subs#TestSymmetricalLogLocator.test_subsy  sG    ++qSzR""3+35"EFr7   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  rr   r  r      r)  )r   r   r  )r   r   )MbPr   )r,   r  r  r  r  rK   r   r  s     r4   test_extending(TestSymmetricalLogLocator.test_extending  s    ++qA""1a(###%%%%""1b)#t$))++++r2&(222sC(J666q!$777r7   rB   N)rO   rP   rQ   rR   rv   rC   rX   rY   r  r  r  r^   rB   r7   r4   r  r  _  sT    
! [["A1vQ
#,,G	8r7   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_widthre   r"   )r,   AsinhLocatorr  re   r   r/   lctrs     r4   	test_initTestAsinhLocator.test_init  sJ    ##D  E)))}}"""yyBr7   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  re   	symthreshr   r=     rd   r   )r  rA  r   )r   g     @r<  )r,   r  re   r  r   r=  ru   r  s     r4   rv    TestAsinhLocator.test_set_params  s~   ##-/5)*> }}"""~~&&&yyA~~yyK'''$}}"""}}"""#&~~$$$$'~~$$$QyyA~~T"yyA~~Z(yyJ&&&T"yyJ&&&R yy   r7   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  re   r   r   r   )\(?rh   r   r   gB`"۹?{Gz?g{Gzr  gMO?Mb`?r,   r  r   r.   rS   rU   r  s     r4   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;	=r7   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   rh   r   r!   r
   r   r'  )r  r  r  r  r   r   r   rc   r
   r   r'  r,   r  r   r.   r  s     r4   test_wide_values!TestAsinhLocator.test_wide_values  sP    ##rJD,,T374	5 	D,,UD97	8r7   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   rc   r   r  r   r   )r   r   r   Nr  r  s     r4   test_near_zeroTestAsinhLocator.test_near_zero  s.    ##qqID,,T379IJr7   c                     [         R                  " SSS9n[        UR                  SS5      [        R
                  " SSS5      5        g )Nr   r>   rd   e   f   gq=
ףY@r   r  r  s     r4   test_fallbackTestAsinhLocator.test_fallback  s;    ##C"5D,,S#6IIc637	9r7   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   rc   r   r   )r  re   r  r   r   r   )r   r   r   r   r  g333333r   r   )r   r   r   )r,   r  r  r  r  r   r  s     r4   test_symmetrizing"TestAsinhLocator.test_symmetrizing  s    ##Q.2< 		##B*DFJ/		##B,DFJ/		##E40DFJ/		##As+DFN3r7   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   rr   r"   )r   rc   r!   )r  re   r   r=  n   )iir  iir  r   r  r   r   rg   r   r   r   r   r   r   rc   r!   r"   r$   2   r   i,    r
   r!   r  ii  )iiir   r   r   r   rh   r   r!      }   iq  r  )r/   lctr10lctr5s      r4   test_base_rounding#TestAsinhLocator.test_base_rounding  sk    %%1q+-I?F..tS9A	B
 $$!bqIE--eT:6	7r7   rB   N)rO   rP   rQ   rR   r  rv   r  r  r
  r  r  r  r^   rB   r7   r4   r  r    s+    !>=8K94"7r7   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\
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   rA  )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)rV  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)r/   unicode_minusrL   s      r4   test_unicode_minus&TestScalarFormatter.test_unicode_minus2  sO     .;)*GGIOO//1CCBGMMO	r7   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 identicalr@   )r   r   r   r2  rC   rw  rx  r   r   _update_ticksr   )r/   leftrightr   r   r   	formatters          r4   test_offset_value%TestScalarFormatter.test_offset_value:  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   )r/   r?  tmp_forms      r4   test_use_offset#TestScalarFormatter.test_use_offsetK  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,   rA  get_useMathText)r/   rF  rC  s      r4   test_useMathText$TestScalarFormatter.test_useMathTextR  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,   rA  set_useOffsetrB  r   r/   rC  s     r4   test_set_use_offset_float-TestScalarFormatter.test_set_use_offset_floatX  sE    **,s#))++++#%%%r7   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   rc   r-  )locale
localeconvCHAR_MAXrC   skipr   r   r,   rA  get_useLocaler  r  set_data_intervalset_locs)r/   convseprC  s       r4   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,   rA  set_scientificset_powerlimitsr   r   r  set_major_formatterr  r  r-   rZ  get_majorticklocsorderOfMagnitude)	r/   sci_type	scilimitsr  
orderOfMagfewticksrC  r   r   s	            r4   test_scilimits"TestScalarFormatter.test_scilimitsm  s     **,)  +,,.
$$X.
SHH&&w':':1'=>"((446766666r7   zvalue, expectedc                     S[         R                  S'   [        R                  " 5       nUR	                  U5      U:X  d   eg )NFr0  )r   r^  r,   rA  format_data)r/   valuer2   sfs       r4   test_format_data$TestScalarFormatter.test_format_data|  s6    -2)*$$&~~e$000r7   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   r2  r3  )r/   r   r2   r   r   fmts         r4   test_cursor_precision)TestScalarFormatter.test_cursor_precision  sG    ,,.
Bhh**,>>4yH$$$r7   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,   rA  r  r  r  r3  get_tick_space
get_minpos)r/   r   r2   rn  rr  s        r4   test_cursor_dummy_axis*TestScalarFormatter.test_cursor_dummy_axis  s     $$&

!!!R(""4yH$$$ww%%'1,,,ww!!#q(((r7   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.serifrH  rr   zcmr10 font should ideallyr@   r  z
Glyph 8722)r   r^  updateparse_versionrC   __version__r  rw  rx  r   r   r   canvasdrawr8  s      r4   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.fontsetrH  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)r/   caplogr   r   yticksr<  s         r4   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,   rA  rZ  )r/   rn  s     r4   test_empty_locs#TestScalarFormatter.test_empty_locs  s+    $$&
B#w"}}r7   rB   N)rO   rP   rQ   rR   offset_datause_offset_datauseMathText_datascilimits_datacursor_datarl  rC   rX   rY   r6  r=  rD  rJ  rO  r]  ri  ro  rs  rx  r  r  r  r^   rB   r7   r4   r   r     s   KB UmOe}
N 
W				xKK [[47GII [[2K@* A*  [[\?;( <( [[_.>?? @?
&( [[8.J7J7 [[.<1 =1
 [[-{;% <% [[-{;) <)"&#$r7   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-2r.  0123Fr"   r   r(  rh   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05r  )rc   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)r/   r  r   exponentlocs	positionsr2   r<  valsr   poslabelslabels                r4   r5   #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  )r/   r<  s     r4   
test_blank#TestLogFormatterExponent.test_blank  sG    00bM	##%((B/!R'''r7   rB   N)rO   rP   rQ   rR   rS   rU   rT   pir  float
param_datae	base_datarC   rX   rY   r5   r  r^   rB   r7   r4   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	"(r7   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}}$)rc   r   z$\mathdefault{1}$)rc   r  z$\mathdefault{0.01}$)rc   r   z$\mathdefault{100}$)rc   r   z$\mathdefault{10^{-3}}$)rc   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   rr  )r/   min_exponentrm  r2   s       r4   test_min_exponent*TestLogFormatterMathtext.test_min_exponent  s7    ^^:LIJ88E?h... KJJs	   ;
A	rB   N)rO   rP   rQ   rR   r,   LogFormatterMathtextrr  	test_datarC   rX   rY   r  r^   rB   r7   r4   r  r    s>    

&
&
(C	I [[<iH/ I/r7   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   )r/   r   rm  r2   r<  s        r4   r5   &TestLogFormatterSciNotation.test_basic
  sD     33>	^^]E23U#x/// 433s   A
ArB   N)rO   rP   rQ   rR   r  r   styler  rC   rX   rY   r5   r^   rB   r7   r4   r  r    sG    I& 	YYy![[4i@0 A "0r7   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)TestLogFormatteri  ))}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  rQ  z3.1e-5)r  rQ  z3.1e-4)r  rQ  z3.1e-3)r  rQ  z3.1e-2)r  rQ  z3.1e-1)r  rQ  r  )r  rQ  z3.1e1)r  rQ  z3.1e2)r  rQ  z3.1e3)r  rQ  z3.1e4)r  rQ  z3.1e5)r(  rQ  r  )r   rQ  r  )r   rQ  r  )r  rQ  r  )r   rQ  r+  )r   rQ  r  )r"   rQ  r  )r   rQ  r  )r'  rQ  r  )r  rQ  r  )r#  rQ  r  zvalue, domain, expectedc                 ^    [         R                  " 5       nUR                  X5      nXS:X  d   eg N)r,   LogFormatter_pprint_val)r/   rm  domainr2   rr  r  s         r4   test_pprintTestLogFormatter.test_pprint  s*    ""$.   r7   zvalue, long, short))r   r  r  )r   r  r  )r   z-10^0r.  )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   r2  rl  r3  )r/   rm  longshortr   r   rr  s          r4   ro  !TestLogFormatter.test_format_data  s_     ,,.
ehh**,u%---$$U+u444r7   rB   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   rZ  rS   r  r  round)
r/   r  r=  rr  minor_tlocscoefsclabel_expectedr   
label_tests
             r4   _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           	         [         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                  [        R                  " SS[&        S9S9  g s  snf )Nr5  r"   )r   r=  r   T)r  Fr   rL  r  r<  i   P   rr   )r   rc   r   r   r   r   r  )r   r   r  r   r  r,   r/  r   rS   rU   rb  r  set_minor_formatterr   r2  rZ  rc  rK   r  r  )r/   r   r   rr  r   show_major_labelss         r4   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+ 	Aq5 	C		!Rs(CD-Ds   %I>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r/   r  temp_lfs      r4   test_LogFormatter_call'TestLogFormatter.test_LogFormatter_call  sH     &&(!!#&&q"-s|s3x'''r7   )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      r4   test_LogFormatter_call_tiny,TestLogFormatter.test_LogFormatter_call_tiny  s9     &&(!!#&&q"-r7   N)rB   )rO   rP   rQ   rR   pprint_datarC   rX   rY   r  ro  r  r   r  r  r  r  r  r^   rB   r7   r4   r  r    s    EKN [[6D! E!
 [[1 4 55, 	YYy!#E "#EJ [[U$67( 8( [[U$FG Hr7   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[   rA   r  r  r]   )stringrA   r"  mantissar$  rm  r%  r&  s           r4   logit_deformatter$TestLogitFormatter.logit_deformatter  s      
 =,D/4V}uU6]+!H).v)B3uV}%DrTz)EV}f 9u9$CV
 eEl+U5=-A::;;r7   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  )rC   rD   r]   r   r)  r|  r~  )r/   fxr   r  s       r4   test_logit_deformater(TestLogitFormatter.test_logit_deformater  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,   LogitFormatterrZ  decade_testr   r)  r|  r~  )r/   r   r<  sx2s        r4   r5   TestLogitFormatter.test_basic*  sX     **>	4++,aL11!4##A****r7   )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.
Fr1  r  N)r,   r3  rZ  r4  )r/   r   r<  r5  s       r4   test_invalidTestLogitFormatter.test_invalid6  s<     **>	4++,aLBwwr7   r   rA  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.
Fr1  )	r"   r
   r  r      r'  i  i  r  r   r   r   N)r,   r3  rZ  r   r)  )r/   r   r<  Nsxsx1ds          r4   test_variablelength&TestLogitFormatter.test_variablelengthA  s    
 **>	@A1q5y1}""AAIqa!e)#<=q\AE	*&88=(::2>?  1}q1u}$}$} Ar7   ))Tr  )r  F)K   F)Tr  )rC  rD  T)Tr  )r  TrE  )F)r   gRQ?gp=
ף?))rA  TrF  rE  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.   rS   rT   r3  set_minor_thresholdformat_ticksr   )r/   methodr  casesmin_locr  min_form	threshold	has_minor	formattedflabelleds               r4   test_minor_vs_major&TestLogitFormatter.test_minor_vs_majorY  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   rr   r  r   N)r,   r  r3  r.   set_minor_numberrI  r   )r/   rL  rM  r  minor_numberrP  rQ  rR  s           r4   test_minor_number$TestLogitFormatter.test_minor_numbern  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}}}$Fr1  TN)r,   r3  r2  )r/   r   fx1fx2forms        r4   test_use_overline$TestLogitFormatter.test_use_overline{  so     *3%%59Aw#~~$Aw#~~% Aw#~~r7   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,   r3  set_one_half)r/   r]  s     r4   test_one_half TestLogitFormatter.test_one_half  sd     %%'c***% S	!!!*%T#Y&&&r7   r=  )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   )rS   r}   r,   r3  r3  
startswithr  abs)r/   r=  r  r]  r   r-  r6  s          r4   test_format_data_short)TestLogitFormatter.test_format_data_short  s    {{1a#Ab)%%'A''*B}}T""r!"v&2Yqv;Q&&& r7   rB   N)rO   rP   rQ   rR   r  r)  rC   rX   rY   r.  r  r  r4  r5   r9  rS   expr}   rA  lims_minor_majorrS  rX  r^  rb  rh  r^   )r  is   00r4   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,   FormatStrFormatterrN  s     r4   r5   !TestFormatStrFormatter.test_basic  s$    --f5(1+%%%r7   rB   N)rO   rP   rQ   rR   r5   r^   rB   r7   r4   rn  rn    s    &r7   rn  c                   `    \ rS rSr/ SQr\R                  R                  S\5      S 5       rSr	g)TestStrMethodFormatteri  )){x:05d}r   Frp  )ru  rv  Trp  )ru  r  Fz-0002)ru  rw  Tu   −0002){x:03d}-{pos:02d}r   r   F002-01)rx  ry  Trz  )rx  r  r   Fz-02-01)rx  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)Nr0  )r   r   r,   StrMethodFormatter)r/   formatinputr5  r2   rr  s         r4   r5   !TestStrMethodFormatter.test_basic  sC    ^^1=AB,,V4C;(*** CBBs   "A
ArB   N)
rO   rP   rQ   rR   r  rC   rX   rY   r5   r^   rB   r7   r4   rt  rt    s0    	I [[EyQ+ R+r7   rt  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.23457r.  z-1.23)Tr  )u
   −1.23457r-  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.
r0  r5  
0123456789r   )placesr   c              3   P   >#    U  H  nUS    T;   a  US-   T-   OUT-   v   M     g7fr    NrB   )r  _sDIGITSUNITs     r4   	<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     r4   r  r    sD      /%-r 02"v/?29t+ "

3 5 <=%-s   36)r  r\  )r  r  r\  c              3   F   >#    U  H  oR                  S T5      v   M     g7f)r  Nr  )r  r  r  s     r4   r  r  "  s     D8R::c4008s   !)r\  )r  r\  N)r   r^  r,   EngFormatterr"  )r/   r5  r  r2   exp_outputs
formatters
_formatter_exp_outputr  r  r  s           @@@r4   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 =r7   rB   N)
rO   rP   rQ   rR   raw_format_datarC   rX   rY   r  r^   rB   r7   r4   r  r    s3    #OJ [[=OD8 PD8r7   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   rb  r  r  get_xticklabelsget_text)r   r   r<  lablx_tick_label_texts        r4   $test_engformatter_usetex_useMathTextr  ,  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  rc   r  )g    Ar   rc   r  )p=
p@r   r   r  )g   uHBr   r  rc   )r  gHz>r   i)r  r   r   r  )r  r   r   r  )g    @@r  r   rc   )r  r  r   rc   )r  r'  r   rc   )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   rA  r  T)	useOffsetr  _r   r   r   r  r  )r   r   rS   rU   r  r  r,   r  ENG_PREFIXESr  rb  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                     r4   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  rc   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)rD  rc   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)r/   xmaxdecimalssymbolr   display_ranger2   r<  s           r4   r5   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  )r/   r  r  r2   rr  s        r4   
test_latexTestPercentFormatter.test_latex  sJ    &&hJ^^v67>>"c*h666 877s   A
ArB   N)rO   rP   rQ   rR   percent_datapercent_ids
latex_datarC   rX   rY   r5   r  r^   rB   r7   r4   r  r  }  sp    L.K,J [[@k  +F+F [[9:F7 G7r7   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)rT  	setlocaleLC_ALLErrorprintr,   rA  _format_maybe_minus_and_locale)r  rr  r   s      r4   _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)rf  r   r4  )r  lines     r4   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
splitlinesrC   rW  )procskip_msgs     r4   test_locale_commar    sj     ;;,,-?8De7L - ND 2!%!7!7!92 H H r7   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   rC   rD   rZ   r   rb  r,   r/  r   r   s     r4   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   rC   rD   rZ   r   r  r,   r/  r  s     r4   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   rC   rD   rZ   r   r  r,   r  r  s     r4   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   rC   rD   rZ   r   r   r,   r  r  s     r4   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yminorrl  r  r   r   s        r4   minorticksubplot,test_minorticks_rc.<locals>.minorticksubplot  s    %+%+-^^r"Aq)B # BHH,,./!3>>>BHH,,./!3>>>	 #"s   B
BFr   Tr   rc   r   )r   figure)r  r   s    @r4   test_minorticks_rcr    sE    
**,C? UE1%T5!$UD!$T4#r7   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  scalerl  r   r   s        r4   minortickstoggle0test_minorticks_toggle.<locals>.minortickstoggle  s    __Q1%
e
ef&HH""$HH##%&HH##%HH""$fBHH,,./!3>>>BHH,,./!3>>>r7   )linearr5  asinhlogitFr   Tr   rc   r   N)r   r  clearclose)r  scalesr  r   s      @r4   test_minorticks_toggler    st     **,C?$ 1Fua0ueQ/eQ/tUA.		  IIcNr7   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   )rS   rU   onesr   r   r   r  r   r  r   dates
DayLocatorrb  DateFormatterr   HourLocatorr  r
  r!  get_remove_overlapping_locssetpr   get_minorticklabelsget_minorticklines)r!  expected_numtr   r   r   currentnews           r4   test_remove_overlapr/  9  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???r7   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/  rC   rD   r]   ru   )r0  rZ  s     r4   test_bad_locator_subsr4  ^  s8     
			B	z	"
3 
#	"	"s   A		
Are   )r   r   rc   r  r  c           	      &   [         R                  " 5       nUR                  U S9  S Hg  nUR                  SU5      n[        R
                  " [        R                  " UR                  SS5      5      5      S:H  R                  5       (       a  Mg   e   g )Nrd   )r!   rA  r  r>   r#   r  r   r'  r   r      r   )r,   r/  ru   r.   rS   diffr  rK   )re   rZ  topr  s       r4   test_small_range_loglocatorr9  g  sq     
			BMM8M$/r3'3!789Q>CCEEEE 0r7   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,   NullFormatterrl  r3  r<  s    r4   test_NullFormatterr=  q  sT    %%'IS>R  %+++&&s+r111r7   r<  c                     SU  3$ )Nzval: rB   )r  s    r4   <lambda>r?  y  s
    eA3Kr7   )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_stringr<  s    r4   test_set_offset_stringrC  x  s@     !R'''&!U***r7   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   boxplotrS   rU   r  r   draw_without_renderingget_xgridlines
isinstancer   get_minor_locatorr   tickerr   r  s     r4   test_minorticks_on_multi_figrL    s     llnGCJJryy}J,JJryy}J,JJryy}J,GG'GGG'G bhh002CJJ4O4OPPPPr7   )D
contextlibr   r  rT  r  r[   packaging.versionr   r  numpyrS   numpy.testingr   r   rC   
matplotlibr   matplotlib.pyplotpyplotr   matplotlib.tickerrK  r,   r   r`   r   r   r%  rt  r|  r  r  r  r  r  r   r  r  r  r  r   rn  rt  r  r  rX   rY   r  r  r  r  r  r  r  r  r  r  r/  zerosr4  r  r  r9  r=  FuncFormatterFixedFormatterrC  rL  rB   r7   r4   <module>rX     s   "    	 4  A    #,, ,,^F F<8! 8!vmH mH`L7 L7^ $ $"O! O!d	  	 
! 
!)8 )8Xb7 b7JL L^!( !(H/ /&0 08Z Zzo' o'd& &+ +&n8 n8b> ? B0(L10(LVB7 B7J* ;;;;$$%P @&'@	'@B 	:HHV!    \29F  3F2 /0>*', -+-+Qr7   