
    g$                    |   d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dlZd dlZd dlmZ d dlmZ  G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z  G d d      Z! G d d      Z" G d d      Z# G d d       Z$ G d! d"      Z% G d# d$      Z& G d% d&      Z' G d' d(      Z( G d) d*      Z) G d+ d,      Z* G d- d.      Z+d/ Z,ejZ                  j]                  d0g d1      d2        Z/ G d3 d4      Z0d5 Z1d6 Z2d7 Z3d8 Z4d9 Z5d: Z6d; Z7d< Z8ejZ                  j]                  d=d>      d?        Z9ejZ                  j]                  d@dAdBg e
jt                  dC      g      dD        Z;ejZ                  j]                  dEg dF      ejx                  j{                  dG      dH               Z>dI Z?ejZ                  j]                  dJ ej                  dK        ej                  dL      f      dM        ZBdN ZCy)O    )nullcontextN)parse)assert_almost_equalassert_array_equalc            
       "   e Zd Zdd ej                  g d      fdd ej                  g d      fdd ej                  g d	      fd
d ej
                  d      dz  fdd
 ej
                  dd      dz  fgZddd ej                  g d      fddd ej                  g d      fddg d ej                  g d      fgZej                  j                  de      d        Zej                  j                  de      d        Zej                  j                  ddd
ie ej                  d       fd!d"dgied#fd!d"ied#fd!d"d$gied#fg      d%        Zej                  j                  d&g d'g d'fd"d(gg d'fdd"gg d'fd"gg d'fg      d)        Zy)*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                 h    t        j                  d      }t        |j                  ||      |       y )Nr    nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedlocs        Y/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/matplotlib/tests/test_ticker.py
test_basiczTestMaxNLocator.test_basic    s'    !!*COOD$7B    zvmin, vmax, steps, expectedc                 l    t        j                  dd|      }t        |j                  ||      |       y )Nr    T)r)   integerstepsr*   )r.   r/   r0   r8   r1   r2   s         r3   test_integerzTestMaxNLocator.test_integer%   s+    !!4uECOOD$7Br5   zkwargs, errortype, matchfooz5set_params() got an unexpected keyword argument 'foo'r8   r   z$steps argument must be an increasing   c                     t        j                  ||      5  t        j                  di | d d d        y # 1 sw Y   y xY w)Nmatch )pytestraisesr+   r,   )r.   kwargs	errortyper>   s       r3   test_errorszTestMaxNLocator.test_errors*   s8     ]]9E2 	*)&)	* 	* 	*s	   7A zsteps, result)r   r   r!   r!   c                 n    t        j                  |      }|j                  |k(  j                         sJ y )N)r8   )r+   r,   _stepsall)r.   r8   resultr2   s       r3   test_paddingzTestMaxNLocator.test_padding5   s/     !!.

f$))+++r5   )__name__
__module____qualname__nparrayarange
basic_datainteger_datar@   markparametrizer4   r9   	TypeErrorreescape
ValueErrorrD   rI   r?   r5   r3   r   r      s   	S("((567	!LMN	hbhhJKL	
HibiilU*+	AyryyQ'%/0J 
sD("((=12	tT8288$DEF	
B"HBHH-@$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	/ ,,r5   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestLinearLocatorc                     t        j                  d      }t        j                  g d      }t	        |j                  dd      |       y )N   numticks)皙333333ӿ皙?r^   r`   )r+   LinearLocatorrM   rN   r   r-   r.   r2   
test_values      r3   r4   zTestLinearLocator.test_basicA   s6    ##Q/XX/0
COOD#6
Cr5   c                 Z    t        j                  d      }|j                  dd      g k(   y )Nr   r\   r^   r`   )r+   ra   r-   r.   r2   s     r3   test_zero_numticksz$TestLinearLocator.test_zero_numticksF   s%    ##Q/c"b(r5   c                     t        j                  d      }|j                  ddg i       |j                  dk(  sJ |j                  dg ik(  sJ y)z
        Create linear locator with presets={}, numticks=2 and change it to
        something else. See if change was successful. Should not exception.
        r   r\      r   r   )r]   presetsN)r+   ra   
set_paramsr]   rj   re   s     r3   test_set_paramsz!TestLinearLocator.test_set_paramsJ   sP    
 ##Q/FB<8||q   {{vrl***r5   c                 z   t        j                  g dddgd      }|j                  dd      g dk(  sJ |j                  dd      g dk(  sJ |j                  dd      ddgk(  sJ |j                  d	d
      ddgk(  sJ |j                  dd      t        j                  ddd      k(  j                         sJ y )N)r         ?      ?r   r   ))r   r   r   r   )rj   r   r   r   r          @r;   )r+   ra   r-   rM   linspacerG   re   s     r3   test_presetsz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Er5   N)rJ   rK   rL   r4   rf   rl   rs   r?   r5   r3   rY   rY   @   s    D
)+Fr5   rY   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestMultipleLocatorc                     t        j                  d      }t        j                  g d      }t	        |j                  dd      |       y )NV-	@base)go"V-gV-	r   rw   V-@go"@gV-)@r!   r+   MultipleLocatorrM   rN   r   r-   rb   s      r3   r4   zTestMultipleLocator.test_basic_   s:    %%51XX . /
COOB3Z@r5   c                     t        j                  dd      }t        j                  g d      }t	        |j                  dd      |       y )Nrw   333333?ry   offset)gZd{ gK7A`gx&r   gSc@g`"@gx&1H%@r|   r!   r}   rb   s      r3   test_basic_with_offsetz*TestMultipleLocator.test_basic_with_offsete   s<    %%5=XX ' (
COOB3Z@r5   c                     t        j                  ddi      5  t        j                  d      }t	        |j                  dd      d       ddd       y# 1 sw Y   yxY w)	z5
        Test basic behavior of view limits.
        axes.autolimit_modedatarw   rx   r   r    )r   r    Nmpl
rc_contextr+   r~   r   view_limitsre   s     r3   test_view_limitsz$TestMultipleLocator.test_view_limitsk   sT     ^^2F;< 	A))u5CA 6@	A 	A 	A   3AAc                     t        j                  ddi      5  t        j                  d      }t	        |j                  dd      d       ddd       y# 1 sw Y   yxY w)	b
        Test that everything works properly with 'round_numbers' for auto
        limit.
        r   round_numbersrw   rx      )rz   r{   Nr   re   s     r3   test_view_limits_round_numbersz2TestMultipleLocator.test_view_limits_round_numberss   sT    
 ^^2ODE 	I))u5CA 6H	I 	I 	Ir   c                     t        j                  ddi      5  t        j                  dd      }t	        |j                  dd      d       d	d	d	       y	# 1 sw Y   y	xY w)
r   r   r   rw   ?r   r   r   )g`"g}?5^@Nr   re   s     r3   *test_view_limits_round_numbers_with_offsetz>TestMultipleLocator.test_view_limits_round_numbers_with_offset|   sV    
 ^^2ODE 	I))uSACA 6H	I 	I 	Is   4AAc                     t        j                  ddi      5  t        j                  d      }t	        |j                  dd      d       ddd       y# 1 sw Y   yxY w)	zM
        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   re   s     r3   test_view_limits_single_binz/TestMultipleLocator.test_view_limits_single_bin   sT     ^^2ODE 	E%%A.Cc :GD	E 	E 	Er   c                     t        j                  d      }|j                  d       |j                  j                  dk(  sJ |j                  d       |j
                  dk(  sJ y)z
        Create multiple locator with 0.7 base, and change it to something else.
        See if change was successful.
        ffffff?rx   333333?r[   )r   N)r+   r~   rk   _edgestep_offset)r.   mults     r3   rl   z#TestMultipleLocator.test_set_params   sX    
 &&C0S!zz#%%%q!||q   r5   N)
rJ   rK   rL   r4   r   r   r   r   r   rl   r?   r5   r3   ru   ru   ^   s+    AAAIIE	!r5   ru   c            
          e Zd Zd ZddgZd Zej                  j                  de      d        Z	g dZ
d Zej                  j                  d	e
      d
        Zg dZg dg dg dg dg dg dg dg dgZ e eee            Zej                  j                  de      d        Zej                  j                  dddg      ej                  j                  ddg dfdg dfg      d               Zej                  j                  dddg      ej                  j                  dddg dfd d!g d"fd#d$g d%fg      d&               Zy')(TestAutoMinorLocatorc                     t        j                         \  }}|j                  dd       |j                          t	        j
                  g d      }t        |j                  j                  d      |       y )Nr   =
ףp=?皙?皙?g333333?r   333333?gffffff??r   皙?g?r   r   g333333??r   ?r   gffffff?rn   r   g?Tminor)	pltsubplotsset_xlimminorticks_onrM   rN   r   xaxisget_ticklocsr.   figaxrc   s       r3   r4   zTestAutoMinorLocator.test_basic   s^    ,,.R
At
XX G H
 	BHH111=zJr5   r   r   )r   r   c                    t        j                         \  }}|j                  dd       |j                  j	                  t        j                                t        j                  g d      }t        |j                  j                  d      |       |j                  dd       t        j                  g d      }t        |j                  j                  d      |       y	)
zI
        Test that first and last minor tick appear as expected.
        ffffffffffff?) r   g333333ggffffffgg333333皙gr^   gffffffg333333皙ٿr_   皙ɿr   r   r`   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+   AutoMinorLocatorrM   rN   r   r   r   s       r3   test_first_and_last_minorticksz3TestAutoMinorLocator.test_first_and_last_minorticks   s    
 ,,.R
D#
""7#;#;#=>XX B C
 	BHH111=zJ
BXX G H
BHH111=zJr5   z%nb_majorticks, expected_nb_minorticksc                 v   t        j                         \  }}d} |j                  |  |j                  t	        j
                  |d   |d   |             |j                          |j                  j                  t        j                                t        |j                  j                               |k(  sJ y )N)r   r    r   r   )r   r   r   
set_xticksrM   rr   r   r   r   r+   r   lenget_minorticklocs)r.   nb_majorticksexpected_nb_minorticksr   r   xlimss         r3   test_low_number_of_majorticksz2TestAutoMinorLocator.test_low_number_of_majorticks   s     ,,.RU
bkk%(E!HmDE

""7#;#;#=>288--/04JJJJr5   ))r   r    )r   r   )r   r    )r    r    )r!   r    c                    t        j                  ddi      5  | j                  D cg c]  }|d   	 }}t        j                  j                  |t        j                         j                         d d d        y c c}w # 1 sw Y   y xY w)N_internal.classic_modeFr   )	r   r   majorstep_minordivisionsrM   testingassert_allcloser+   AutoLocatorrF   )r.   x
majorstepss      r3   "test_using_all_default_major_stepsz7TestAutoMinorLocator.test_using_all_default_major_steps   sz    ^^5u=> 	E(,(E(EF1!A$FJFJJ&&z'.':':'<'C'CE	E 	EF	E 	Es   A?A:>A?:A??Bz&major_step, expected_nb_minordivisionsc                 N   t        j                         \  }}d|f} |j                  |  |j                  |       |j	                          |j
                  j                  t        j                                t        |j
                  j                               dz   }||k(  sJ y Nr   r   )r   r   r   r   r   r   r   r+   r   r   r   )r.   
major_stepexpected_nb_minordivisionsr   r   r   nb_minor_divisionss          r3   test_number_of_minor_ticksz/TestAutoMinorLocator.test_number_of_minor_ticks   s     ,,.RJU
e

""7#;#;#=> !;!;!=>B!%????r5   )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                    t        j                         \  }}|j                          |j                  dddd       |j                  dddd       |j	                  |       t        |j                  j                  d	      |       y )
NTr   yr   )	linewidthmajork)colorr   r   )r   r   r   gridset_ylimr   yaxisr   )r.   limrefr   r   s        r3   test_additionalz$TestAutoMinorLocator.test_additional  sm    ,,.R

gsa0
gSA6
CBHH111=sCr5   use_rcparamFTr   r   c                 2   |rddd}i }ni }ddi}t        j                  |      5  t        j                         \  }} |j                  |   |j
                  |  |j                  j                  t        j                  di |       |j                  j                  t        j                  di |       t        |j                  j                  d      |       t        |j                  j                  d      |       d d d        y # 1 sw Y   y xY w)Nautozxtick.minor.ndivszytick.minor.ndivsnTr   r?   )r   r   r   r   r   r   r   r   r+   r   r   r   r   )r.   r   r   r   contextrB   r   r   s           r3   test_number_of_minor_ticks_autoz4TestAutoMinorLocator.test_number_of_minor_ticks_auto  s     ,2PGFG6]F^^G$ 	HllnGCBKKBKKHH&&w'?'?'I&'IJHH&&w'?'?'I&'IJ 5 5D 5 A3G 5 5D 5 A3G	H 	H 	Hs   CDDzn, lim, refr   )r   r   )r   r   r   r   r   rp   )r   r   r   rn   r   ro   r!   ri   )	r   r`   r   r   r   r   r   r   r   c                    |r||d}i }ni }d|i}t        j                  |      5  t        j                         \  }} |j                  |   |j
                  |  |j                  j                  t        j                  d             |j                  j                  t        j                  di |       |j                  j                  t        j                  d             |j                  j                  t        j                  di |       t        |j                  j                  d      |       t        |j                  j                  d      |       d d d        y # 1 sw Y   y xY w)Nr   r   r   Tr   r?   )r   r   r   r   r   r   r   set_major_locatorr+   r~   r   r   r   r   r   )	r.   r   r   r   r   r   rB   r   r   s	            r3   test_number_of_minor_ticks_intz3TestAutoMinorLocator.test_number_of_minor_ticks_int.  s&    ,-AFGFG1XF^^G$ 		HllnGCBKKBKK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		H 		H 		Hs   D:E))E2N)rJ   rK   rL   r4   paramsr   r@   rR   rS   r   r   r   r   limits	referencelistzipadditional_datar   r   r   r?   r5   r3   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r5   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestLogLocatorc                    t        j                  d      }t        j                  t              5  |j                  dd       d d d        t        j                  g d      }t        |j                  dd      |       t        j                  d	      }t        j                  g d
      }t        |j                  dd      |       y # 1 sw Y   xY w)Nr    r\   r     )h㈵>r   r         $@     @@     j@    cA    eAr   g     @r   rx   )
r   r   rq         @g       @g      0@g      @@g      P@g      `@g      p@r   r
   )	r+   
LogLocatorr@   rA   rW   r-   rM   rN   r   rb   s      r3   r4   zTestLogLocator.test_basicJ  s      !,]]:& 	%OOAt$	% XX @ A
 	COOE59:F  a(XXNO
COOAs3Z@	% 	%s   CCc                     t        j                  ddi      \  }}|j                  d       |j                  dd       t	        |j                         g d       y)	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      r3   test_polar_axeszTestLogLocator.test_polar_axesX  sE     ,,<*ABR
e
As2==?O<r5   c                    t        j                  d      }t        |j                  dd      g d       t        j                  t	        j
                  dd            }d|j                  d	d
      vsJ d|j                  d	d
      vsJ y )NrG   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r!   r   r   r   r  )r+   r  r   r-   rM   rO   re   s     r3   test_switch_to_autolocatorz)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4r5   c                     t        j                         }|j                  ddgd       |j                  dk(  sJ |j                  dk(  sJ t        |j                        dgk(  sJ y)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.
           rq   r   )r]   r  ry   N)r+   r  rk   r]   _baser  _subsre   s     r3   rl   zTestLogLocator.test_set_paramsj  s`       "A6||q   yyA~~CII3%'''r5   c                     t        j                  d      }t        j                  g d      }t	        |j                  dd      |       y )Nr   r   r    r  )r   r`   r   r   rq   r   r  r         I@r         i@     @@r       @@     @     @     @     j@r       jA    A    .A    >A    SAr      sA    ׇA    חA    קA    eͽAr   r  )r+   r  rM   rN   r   r-   r.   llrc   s      r3   test_tick_values_correctz'TestLogLocator.test_tick_values_correctv  s>    Y/XX O P

 	BNN1c2J?r5   c                     dt         j                  d<   t        j                  d      }t	        j
                  g d      }t        |j                  dd      |       y )NFr   r%  r  )!r   r`   r   r   rq   r   r  r   r&  r   r'  r(  r  r)  r*  r+  r,  r-  r  r.  r/  r0  r1  r2  r  r3  r4  r5  r6  r7  r  g    eAg    _Ar   r5  )r   rcParamsr+   r  rM   rN   r   r-   r8  s      r3   test_tick_values_not_emptyz)TestLogLocator.test_tick_values_not_empty  sK    16-.Y/XX 7 8
 	BNN1c2J?r5   c                    t         j                  j                  d      }|j                  d      g g g}t	        j
                  t        |      dd      \  }}t        |j                         |      D ]+  \  }}|j                  |d       |j                  dd	
       - |j                         D ]W  }t        |j                         |d   j                         k(        sJ |j                         |d   j                         k(  rWJ  y )Ni!N,r
   )sizeT)sharexshareyr!   )binsr  clip)nonpositiver   )rM   randomdefault_rngnormalr   r   r   r  flattenhistr  rG   r  get_ylim)r.   rng
dummy_datar   axesr   r   s          r3   test_multiple_shared_axesz(TestLogLocator.test_multiple_shared_axes  s    ii##H-jjcj*B3
LLZdK	TDLLNJ7 	5HBGGDrG"MM%VM4	5 ,,. 	7Br}}$q'*<*<*>>???;;=DG$4$4$6666	7r5   N)
rJ   rK   rL   r4   r  r  rl   r:  r=  rN  r?   r5   r3   r  r  I  s(    A=5
(@	@7r5   r  c                       e Zd Zd Zy)TestNullLocatorc                     t        j                         }t        j                  t              5  |j                          ddd       y# 1 sw Y   yxY w)z
        Create null locator, and attempt to call set_params() on it.
        Should not exception, and should raise a warning.
        N)r+   NullLocatorr@   warnsUserWarningrk   re   s     r3   rl   zTestNullLocator.test_set_params  s=    
 !!#\\+& 	NN	 	 	s   AANrJ   rK   rL   rl   r?   r5   r3   rP  rP    s    r5   rP  c                   ,    e Zd Zed        Zed        Zy)_LogitHelperc                     d| cxk  rdk  r[n nXd|cxk  rdk  rMn nJt        j                  t        j                  d| z  dz
         t        j                  d|z  dz
               S dS )Nr   r   F)rM   iscloser  )r   r   s     r3   rY  z_LogitHelper.isclose  sZ     q919Q 

BFF1Q3q5M>BFF1Q3q5M>: 	705	7r5   c                    t        j                  |       }t        j                  |      }t        j                  |dkD        rt        j                  |dk        sJ t        j                  |dkD        rt        j                  |dk        sJ t        j                  d|z  dz
         }t        j                  d|z  dz
         }t	        ||       y r   )rM   rN   rG   r  r   )r   r   r   aylxlys         r3   r   z _LogitHelper.assert_almost_equal  s    XXa[XXa[vvb1f~"&&a.00vvb1f~"&&a.00ffQrT!Vn_ffQrT!Vn_B#r5   N)rJ   rK   rL   staticmethodrY  r   r?   r5   r3   rW  rW    s(    7 7 $ $r5   rW  c                   ,   e Zd Zg dZdd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd	      z  z  dd ej
                  dd
      z  z  dd ej
                  dd      z  z  gZg dZej                  j                  d eee            d        Zej                  j                  de      d        Zej                  j                  deez         d        Zej                  j                  d eee            d        Zd Zg d ej
                  dd      z  dd ej
                  dd      z  z
  Zej                  j                  d ej&                  ed      D  cg c]  \  }}||k7  r||f c}}}       d        Zej                  j                  de      d        Zyc c}}} w )TestLogitLocator)r   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r!   r[   r   r    r   r!  rh   	   ))r   r   )r   r`   )r   r   zlims, expected_low_ticksc                     t        g |dd|z
        }t        j                  d      }t        j	                   |j
                  | |       y)zR
        Create logit locator with huge number of major, and tests ticks.
        r   r   r
   r(   N)sortedr+   LogitLocatorrW  r   r-   )r.   limsexpected_low_ticksexpected_ticksr2   s        r3   test_basic_majorz!TestLogitLocator.test_basic_major  sX      A A#A-?)?A
 ""-((COOT"	
r5   ri  c                 T   t        j                  d      }t        j                  dg d      }dD ]t  }|j                  |       |j                  |        |j                  | } |j                  | }|j
                  |j
                  k(  sJ ||k(  j                         rtJ  y)zj
        When the axis is zoomed, the locator must have the same behavior as
        MaxNLocator.
        r
   r(   )r   r   r    r!   )r)   r8   )r   rh      N)r+   rh  r,   rk   r-   shaperG   )r.   ri  r2   maxn_locr)   ticks
maxn_tickss          r3   test_maxn_majorz TestLogitLocator.test_maxn_major  s     ""-&&SF 	/ENNN'e,#COOT*E---t4J;;*"2"2222Z',,...	/r5   c                 .   t        t        j                  t        j                  |d                      dz  dz   }t	        j
                  d      }t        |dd      D ]4  }|j                  |       t         |j                  |       |dz   k  r4J  y)zB
        Assert logit locator for respecting nbins param.
        r   r   r   r
   r(   r   N)
intrM   floorlog10r+   rh  rangerk   r   r-   )r.   ri  basic_neededr2   r)   s        r3   test_nbins_majorz!TestLogitLocator.test_nbins_major  s     BHHRXXd1g%67781<q@""-<B/ 	<ENNN's-.%!);;;	<r5   c                    t        g |dd|z
        }t        |      }t        j                  d      }t        j                  dd      }t	        |dd      D ]  }|j                  |       |j                  |        |j                  | } |j                  | }	t        |      t        |      k\  r t        |      dz
  d	z  t        |	      k  rzJ t        j                  t        g ||	      |        y
)zt
        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)	rg  r   r+   rh  rx  rk   r-   rW  r   )
r.   ri  rj  rk  ry  r2   	minor_locr)   major_ticksminor_tickss
             r3   
test_minorzTestLogitLocator.test_minor  s
     A A#A-?)?A
 >*""-((s$?	<B/ 	JENNN'  u -)#//40K/)//6K;3~#66K(1,1C4DDDD 007[7;78.J	Jr5   c                     t        j                  d      }|j                  rJ d|_        |j                  sJ |j                  d       |j                  rJ y )Nr
   r(   TFr   )r+   rh  r   rk   re   s     r3   test_minor_attrz TestLogitLocator.test_minor_attr  sM    ""-99}	yyyU#99}9r5   r   r   r   )repeatc                 |    t        j                         } |j                  | }t        |      t        |      k(  sJ y)zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r+   rh  nonsingularrg  )r.   ri  r2   lims2s       r3   test_nonsingular_okz$TestLogitLocator.test_nonsingular_ok$  s8     ""$&d|ve},,,r5   okvalc                     t        j                         }d|}}|j                  ||      \  }}||k(  sJ d|cxk  r|k  sJ  J |d}}|j                  ||      \  }}||k(  sJ ||cxk  rdk  sJ  J y)zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r+   rh  r  )r.   r  r2   r/   r0   vmin2vmax2s          r3   test_nonsingular_nokz%TestLogitLocator.test_nonsingular_nok5  s     ""$%dtT2u}}5 5     QdtT2u}}u q     r5   N)rJ   rK   rL   ref_basic_limitsrM   rO   ref_basic_major_ticksref_maxn_limitsr@   rR   rS   r  rl  rs  rz  r  r  acceptable_vmin_vmax	itertoolsproductr  r  ).0abs   000r3   r`  r`    sm   	 	
R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q##$	 GO[["34
	
 [[V_5/ 6/ [[V%5%GH	< I	< [["34J	J2
2q!
!
cYRYYr1%%
%
 [[ ,)++,@K	
 	
AAv F	
-- [[W&:;! <!!	
s   
Hr`  c                       e Zd Zd Zy)TestFixedLocatorc                     t        j                  t        dd      d      }|j                  d       |j                  dk(  sJ y)z
        Create fixed locator with 5 nbins, and change it to something else.
        See if change was successful.
        Should not exception.
        r      r    r(   r!  N)r+   FixedLocatorrx  rk   r)   )r.   fixeds     r3   rl   z TestFixedLocator.test_set_paramsG  s?     $$U1b\;q!{{ar5   NrU  r?   r5   r3   r  r  F  s     r5   r  c                       e Zd Zd Zy)TestIndexLocatorc                     t        j                  dd      }|j                  dd       |j                  dk(  sJ |j                  dk(  sJ y)z
        Create index locator with 3 base, 4 offset. and change it to something
        else. See if change was successful.
        Should not exception.
        r[   r   r   r!  N)r+   IndexLocatorrk   r"  r   )r.   indexs     r3   rl   z TestIndexLocator.test_set_paramsS  sM     $$!A6a*{{a||q   r5   NrU  r?   r5   r3   r  r  R  s    	!r5   r  c                   z    e Zd Zd Zej
                  j                  dddddgfddg dfg      d        Zd Zd	 Z	y
)TestSymmetricalLogLocatorc                     t        j                  dd      }|j                  dgd       |j                  dgk(  sJ |j                  dk(  sJ y)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   ry   	linthreshrq   rh   )r  r]   N)r+   SymmetricalLogLocatorrk   r#  r]   r.   syms     r3   rl   z)TestSymmetricalLogLocator.test_set_params`  sN     ++qASEA.yySE!!!||q   r5   r&   r   r   r   r   r   r   c                 p    t        j                  dd      }|j                  ||      }t        ||       y )Nr!   r   r  )r/   r0   )r+   r  r-   r   )r.   r/   r0   r1   r  rq  s         r3   test_valuesz%TestSymmetricalLogLocator.test_valuesl  s2     ++qAT55(+r5   c                     t        j                  ddddg      }|j                          |j                  j	                  dd       t         |       g d       y )Nr!   r   rq   r  )ry   r  r  )	ir   r   r   r   r	   (   )r+   r  create_dummy_axisaxisset_view_intervalr   r  s     r3   	test_subsz#TestSymmetricalLogLocator.test_subsy  sG    ++qSzR""3+35"EFr5   c                    t        j                  dd      }|j                          |j                  j	                  dd        |       dgk(  j                         sJ |j                  j	                  dd        |       ddgk(  j                         sJ |j                  dd      d	k(  sJ |j                  d
d
      dk(  sJ |j                  dd      dk(  sJ y )Nr!   r   r  rh   re  r      r  )r   r
   r  )r   r   )MbPr   )r+   r  r  r  r  rG   r   r  s     r3   test_extendingz(TestSymmetricalLogLocator.test_extending  s    ++qA""1a(###%%%""1b)#t$))+++r2&(222sC(J666q!$777r5   N)
rJ   rK   rL   rl   r@   rR   rS   r  r  r  r?   r5   r3   r  r  _  sT    
! [["A1vQ
#,,G	8r5   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestAsinhLocatorc                     t        j                  dd      }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y )NgX9v@   )linear_widthr]   r!   )r+   AsinhLocatorr  r]   ry   r.   lctrs     r3   	test_initzTestAsinhLocator.test_init  sJ    ##D  E)))}}"""yyBr5   c                 .   t        j                  ddddd      }|j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ |j
                  dk(  sJ |j                  d       |j                  dk(  sJ |j                  d        |j                  dk(  sJ |j                  d	
       |j                  d	k(  sJ |j                  d 
       |j                  d	k(  sJ |j                  d       |j                  dk(  sJ |j                  d        |j                  dk(  sJ |j                  d       |j
                  dk(  sJ |j                  d        |j
                  dk(  sJ |j                  g        |j
                  J y )Nr       r   r   )r   g      
@)r  r]   	symthreshry   r     r\   r   )r  r!  rx   )r   g     @r  )r+   r  r]   r  ry   r  rk   r  s     r3   rl   z TestAsinhLocator.test_set_params  s~   ##-/5)*> }}"""~~&&&yyA~~yyK'''$}}"""}}"""#&~~$$$$'~~$$$QyyA~~T"yyA~~Z(yyJ&&&T"yyJ&&&R yy   r5   c                 Z   t        j                  ddd      }t        |j                  dd      t	        j
                  ddd             t        |j                  d	d
      t	        j
                  d	dd             t        |j                  dd      t	        j
                  ddd             y )Nr
   r;   r   r  r]   ry   r   r   )\(?r`   r   r   gB`"۹?{Gz?g{Gzr   gMO?Mb`?r+   r  r   r-   rM   rO   r  s     r3   test_linear_valuesz#TestAsinhLocator.test_linear_values  s    ##rJD,,R3IIb$4	6D,,T37IIdE48	:D,,UD9IIeVU;	=r5   c                     t        j                  ddd      }t        |j                  dd      g d       t        |j                  dd	      g d
       y )Nr   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  s     r3   test_wide_valuesz!TestAsinhLocator.test_wide_values  sP    ##rJD,,T374	5 	D,,UD97	8r5   c                 p    t        j                  ddd      }t        |j                  dd      g d       y)	z<Check that manually injected zero will supersede nearby tickr
   r[   r   r  r   r   )r   r   r   Nr  r  s     r3   test_near_zerozTestAsinhLocator.test_near_zero  s.    ##qqID,,T379IJr5   c                     t        j                  dd      }t        |j                  dd      t	        j
                  ddd             y )Nr   r;   r\   e   f   gq=
ףY@r   r  r  s     r3   test_fallbackzTestAsinhLocator.test_fallback  s;    ##C"5D,,S#6IIc637	9r5   c                    t        j                  dddd      }|j                          |j                  j	                  dd       t         |       g d       |j                  j	                  dd	       t         |       g d
       |j                  j	                  dd       t         |       g d
       |j                  j	                  dd       t         |       g d       y )Nr   r[   r   r   )r  r]   r  ry   r   r   )r   r   r   r   r  g333333r   r   )r   r   r   )r+   r  r  r  r  r   r  s     r3   test_symmetrizingz"TestAsinhLocator.test_symmetrizing  s    ##Q.2< 		##B*DFJ/		##B,DFJ/		##E40DFJ/		##As+DFN3r5   c                     t        j                  dddd      }t        |j                  dd      g d       t        j                  dd	d
      }t        |j                  dd      g d       y )Nr   rh   r!   )r   r[   r    )r  r]   ry   r  n   )iir  iir  r   r  r   r   r_   r   r   r   r   r   r   r[   r    r!   r#   2   r
   i,    r	   r    r  ii  )iiir   r   r   r   r`   r   r       }   iq  r  )r.   lctr10lctr5s      r3   test_base_roundingz#TestAsinhLocator.test_base_rounding  sk    %%1q+-I?F..tS9A	B
 $$!bqIE--eT:6	7r5   N)rJ   rK   rL   r  rl   r  r  r  r  r  r  r?   r5   r3   r  r    s+    !>=8K94"7r5   r  c                      e Zd Zg dZddgZddgZg dZddgddgd	d
gddgddggZg dZe	j                  j                  dddg      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Zd Zd Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  d e      d!        Ze	j                  j                  d e      d"        Zd# Zd$ Zd% Zy&)'TestScalarFormatter)){      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@rn  )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|   r!  )g   tAg   0Are  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)r5  1e8)g    9Az1.1e8zunicode_minus, result)T   −1)F-1c                     |t         j                  d<   t        j                         j                  j                         j                  d      j                         |k(  sJ y )Naxes.unicode_minusr   )r   r<  r   gcar   get_major_formatterformat_data_shortstrip)r.   unicode_minusrH   s      r3   test_unicode_minusz&TestScalarFormatter.test_unicode_minus2  sO     .;)*GGIOO//1CCBGMMO	r5   zleft, right, offsetc                 V   t        j                         \  }}|j                  j                         }||k(  rt	        j
                  t        d      n	t               5  |j                  ||       d d d        |j                  j                          |j                  |k(  sJ ||k(  rt	        j
                  t        d      n	t               5  |j                  ||       d d d        |j                  j                          |j                  |k(  sJ y # 1 sw Y   xY w# 1 sw Y   AxY w)NzAttempting to set identicalr=   )r   r   r   r  r@   rS  rT  r   r   _update_ticksr   )r.   leftrightr   r   r   	formatters          r3   test_offset_valuez%TestScalarFormatter.test_offset_value:  s    ,,.RHH002	  ll;.KL$/M	%KKe$	% 	 6)))  ll;.KL$/M	%KKt$	% 	 6)))	% 	%	% 	%s   DDDD(
use_offsetc                     t        j                  d|i      5  t        j                         }||j	                         k(  sJ |j
                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzaxes.formatter.useoffsetr   )r   r   r+   ScalarFormatterget_useOffsetr   )r.   r  tmp_forms      r3   test_use_offsetz#TestScalarFormatter.test_use_offsetK  s`    ^^7DE 	(..0H!7!7!9999??a'''	( 	( 	(s   ;AA&use_math_textc                     t        j                  d|i      5  t        j                         }||j	                         k(  sJ 	 d d d        y # 1 sw Y   y xY w)Naxes.formatter.use_mathtext)r   r   r+   r  get_useMathText)r.   r  r  s      r3   test_useMathTextz$TestScalarFormatter.test_useMathTextR  sN    ^^:MJK 	?..0H H$<$<$>>>>	? 	? 	?s   *AAc                     t        j                         }|j                  d       |j                         rJ |j                  dk(  sJ y )Nr   )r+   r  set_useOffsetr  r   r.   r  s     r3   test_set_use_offset_floatz-TestScalarFormatter.test_set_use_offset_floatX  sB    **,s#))+++#%%%r5   c                    t        j                         }|d   }|r|d   dd  g t         j                  gfv rt        j                  d       t        j                  ddi      5  t        j                         }|j                         sJ |j                          |j                  j                  dd       |j                  g d	       | |d
      v sJ 	 d d d        y # 1 sw Y   y xY w)Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r!   )r   r   r[   r  )locale
localeconvCHAR_MAXr@   skipr   r   r+   r  get_useLocaler  r  set_data_intervalset_locs)r.   convsepr  s       r3   test_use_localez#TestScalarFormatter.test_use_locale^  s      "?#d:&rs+V__4E/FFKK89^^8$?@ 	(..0H))+++&&(MM++Ar2i((3-'''	( 	( 	(s   #A2CC(z.sci_type, scilimits, lim, orderOfMag, fewticksc                    t        j                         }|j                  |       |j                  |       t	        j
                         \  }}|j                  j                  |        |j                  |  |r.|j                  j                  t        j                  d             |j                  |j                  j                                ||j                  k(  sJ y )Nr   )r+   r  set_scientificset_powerlimitsr   r   r   set_major_formatterr   r   r,   r  get_majorticklocsorderOfMagnitude)	r.   sci_type	scilimitsr   
orderOfMagfewticksr  r   r   s	            r3   test_scilimitsz"TestScalarFormatter.test_scilimitsm  s     **,)  +,,.R
$$X.SHH&&w':':1'=>"((4467X66666r5   zvalue, expectedc                 ~    dt         j                  d<   t        j                         }|j	                  |      |k(  sJ y )NFr  )r   r<  r+   r  format_data)r.   valuer1   sfs       r3   test_format_dataz$TestScalarFormatter.test_format_data|  s6    -2)*$$&~~e$000r5   zdata, expectedc                     t        j                         \  }}|j                  dd       |j                  j	                         j
                  } ||      |k(  sJ y )Nr   r   )r   r   r   r   r  r  )r.   r   r1   r   r   fmts         r3   test_cursor_precisionz)TestScalarFormatter.test_cursor_precision  sI    ,,.R
Bhh**,>>4yH$$$r5   c                 2   t        j                         }|j                          |j                  j	                  dd       |j
                  } ||      |k(  sJ |j                  j                         dk(  sJ |j                  j                         dk(  sJ y )Nr   r!   re  )r+   r  r  r  r  r  get_tick_space
get_minpos)r.   r   r1   r,  r/  s        r3   test_cursor_dummy_axisz*TestScalarFormatter.test_cursor_dummy_axis  s     $$&

!!!R(""4yH$$$ww%%'1,,,ww!!#q(((r5   c                    t         j                  j                  dddd       t        t        j
                        j                  dk  rit	        j                  t        d      5  t        j                         \  }}|j                  g d       |j                  j                          d d d        y t	        j                  t        d	      5  t	        j                  t        d      5  t        j                         \  }}|j                  g d       |j                  j                          d d d        d d d        y # 1 sw Y   y xY w# 1 sw Y   xY w# 1 sw Y   y xY w)
Nserifcmr10F)font.familyz
font.serifr
  rh   zcmr10 font should ideallyr=   r  z
Glyph 8722)r   r<  updateparse_versionr@   __version__r   rS  rT  r   r   r   canvasdrawr  s      r3   test_mathtext_ticksz'TestScalarFormatter.test_mathtext_ticks  s   "!+0
 	 ++,22Q6k1LM ",,.Rj)

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

!	" " "" "
" " " "s2   %AE E*AE/E E	E	EE!c                    t         j                  j                  dddd       |j                  t        j
                  d      5  t        j                         \  }}|j                  ddgd	dg       |j                  d
       g d}t        j                         }|j                  |t        ||             |j                  j                          |j                   rJ 	 d d d        y # 1 sw Y   y xY w)Nr7  cmT)r8  zmathtext.fontsetr
  zmatplotlib.mathtext)loggergQr   r  r  )r  r   r   r  )r   r<  r9  at_levelloggingWARNINGr   r   plotr  r+   LogFormatterSciNotation
set_yticksmapr<  r=  text)r.   caplogr   r   yticksr   s         r3   test_cmr10_substitutionsz,TestScalarFormatter.test_cmr10_substitutions  s    " $+/
 	 __W__5J_K 	#llnGCGGUDMB:.MM% 'F779IMM&#i"89JJOO{{"?{	# 	# 	#s   BC**C3c                 h    t        j                         }|j                  g         |d      dk(  sJ y )Nr    )r+   r  r  )r.   r,  s     r3   test_empty_locsz#TestScalarFormatter.test_empty_locs  s+    $$&
B#w"}}r5   N)rJ   rK   rL   offset_datause_offset_datauseMathText_datascilimits_datacursor_datar*  r@   rR   rS   r  r  r  r  r  r  r(  r-  r0  r4  r>  rL  rO  r?   r5   r3   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
 [[-{;% <% [[-{;) <)"&#$r5   r  c                      e Zd Zdd ej                  dd       ej                  dd      g dfdd ej
                  dd	ej                  d
ddg       ed      g dfdd ej
                  g de       ed      g dfgZ	dddej                  ej                  gZej                  j                  de	      ej                  j                  de      d               Zd Zy)TestLogFormatterExponentTr   r  r  )z-3z-2r  0123Fr!   r   r  r`   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05r  )r[   r    r  *   dtype)rZ  51242rq   r   r  z2labelOnlyBase, exponent, locs, positions, expectedry   c                 F   t        j                  ||      }|j                          |j                  j	                  d||z         ||z  }t        ||      D 	
cg c]  \  }	}
 ||	|
       }}	}
|D cg c]  }|j                  dd       }}||k(  sJ y c c}
}	w c c}w )Nry   labelOnlyBaser   -u   −)r+   LogFormatterExponentr  r  r  r  replace)r.   re  ry   exponentlocs	positionsr1   r   valsr   poslabelslabels                r3   r4   z#TestLogFormatterExponent.test_basic  s    
 00d?LN	##%((D(N;Tz47i4HIC)As#IIFNOUEMM#'78OO!!! JOs   B5Bc                     t        j                  dd      }|j                          |j                  j	                  dd        |d      dk(  sJ y )Nr!   Trd  r   g&$?rN  )r+   rg  r  r  r  )r.   r   s     r3   
test_blankz#TestLogFormatterExponent.test_blank  sG    00bM	##%((B/!R'''r5   N)rJ   rK   rL   rM   rO   rN   pirx  float
param_datae	base_datar@   rR   rS   r4   rq  r?   r5   r3   rV  rV    s    	q)"))B$ibiiC&8	/	1 
HBHHc7BEE3hGH	qD	F	HBHH^5958		!	J c4-I[[@*N[[VY/	" 0N	"(r5   rV  c                   z    e Zd Z ej                         Zg dZej                  j                  de      d        Z
y)TestLogFormatterMathtext))r   r   $\mathdefault{10^{0}}$)r   r   z$\mathdefault{10^{-2}}$)r   r   z$\mathdefault{10^{2}}$)r[   r   z$\mathdefault{1}$)r[   r   z$\mathdefault{0.01}$)r[   r   z$\mathdefault{100}$)r[   r   z$\mathdefault{10^{-3}}$)r[   r  z$\mathdefault{10^{3}}$zmin_exponent, value, expectedc                     t        j                  d|i      5  | j                  |      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nzaxes.formatter.min_exponent)r   r   r/  )r.   min_exponentr+  r1   s       r3   test_min_exponentz*TestLogFormatterMathtext.test_min_exponent  s?    ^^:LIJ 	/88E?h...	/ 	/ 	/s	   9AN)rJ   rK   rL   r+   LogFormatterMathtextr/  	test_datar@   rR   rS   r|  r?   r5   r3   rx  rx    s@    
&'
&
&
(C	I [[<iH/ I/r5   rx  c                       e Zd Zg dZej
                  j                  d      ej                  j                  de      d               Z
y)TestLogFormatterSciNotation))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   ry  )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!   rc  z$\mathdefault{5\times10^{-5}}$)r!   r    z$\mathdefault{5\times10^{0}}$)r!   i  z$\mathdefault{5\times10^{5}}$defaultzbase, value, expectedc                     t        j                  |      }t        j                  ddi      5   ||      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrx   text.usetexF)r+   rF  r   r   )r.   ry   r+  r1   r   s        r3   r4   z&TestLogFormatterSciNotation.test_basic
  sM     33>	^^]E23 	0U#x///	0 	0 	0s   AAN)rJ   rK   rL   r~  r   styler   r@   rR   rS   r4   r?   r5   r3   r  r    sG    I& 	YYy![[4i@0 A "0r5   r  c                   z   e Zd Zg dZej
                  j                  de      d        Zej
                  j                  dg d      d        ZddZ	e
j                  j                  d      d	        Zej
                  j                  d
g d      d        Zej
                  j                  d
g d      d        Zy)TestLogFormatter))}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   rX  )r!   r   10)r
   r   100)r
  r   1000)'  r   1e4)r  r   1e5)r  r   rW  )r  r   rW  )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   rW  )r   r   rW  )r   r   0.001)r   r   0.01)r   r   r[  )r   r   rX  )r!   r   r  )r
   r   r  )r
  r   r  )r  r   10000)r  r   100000)r  r   rW  )r  r   rW  )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   rW  )r   r   rW  )r   r   r  )r   r   r  )r   r   r[  )r   r   rX  )r!   r   r  )r
   r   r  )r
  r   r  )r  r   r  )r  r   r  )r  r    rW  )r  r    rW  )r  r    rW  )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    rW  )r   r    rW  )r   r    rW  )r   r    r  )r   r    r[  )r   r    rX  )r!   r    r  )r
   r    r  )r
  r    r  )r  r    r  )r  r    r  )r  r
   rW  )r  r
   rW  )r  r
   rW  )r  r
   rW  )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
   rW  )r   r
   rW  )r   r
   rW  )r   r
   rW  )r   r
   r[  )r   r
   rX  )r!   r
   r  )r
   r
   r  )r
  r
   r  )r  r
   r  )r  r
   r  )r  r0  z3.1e-5)r  r0  z3.1e-4)r  r0  z3.1e-3)r  r0  z3.1e-2)r  r0  z3.1e-1)r  r0  r  )r  r0  z3.1e1)r  r0  z3.1e2)r  r0  z3.1e3)r  r0  z3.1e4)r  r0  z3.1e5)r  r0  r  )r   r0  r  )r   r0  r  )r   r0  r  )r   r0  r  )r   r0  rX  )r!   r0  r  )r
   r0  r  )r
  r0  r  )r  r0  r  )r  r0  r  zvalue, domain, expectedc                 ^    t        j                         }|j                  ||      }||k(  sJ y N)r+   LogFormatter_pprint_val)r.   r+  domainr1   r/  ro  s         r3   test_pprintzTestLogFormatter.test_pprint  s.    ""$v.   r5   zvalue, long, short))r   rW  rW  )r   rW  rW  )r   z-10^0r  )g|=z2x10^-10z2e-10)g    _Bz10^10z1e+10c                     t        j                         \  }}|j                  d       |j                  j	                         }|j                  |      |k(  sJ |j                  |      |k(  sJ y )Nr  )r   r   
set_xscaler   r  r*  r  )r.   r+  longshortr   r   r/  s          r3   r-  z!TestLogFormatter.test_format_data  sa     ,,.R
ehh**,u%---$$U+u444r5   c                 H   |j                         }|j                         }|j                  |       |dt        j                  t        j
                  |            z  z  }|D cg c]  }t        |      |v  }}|D cg c]  } ||      dk7   }	}|	|k(  sJ yc c}w c c}w )z.Test whether locator marks subs to be labeled.r!   rN  N)get_minor_formatterr   r  rM   rv  rw  round)
r.   r  r  r/  minor_tlocscoefsclabel_expectedr   
label_tests
             r3   _sub_labelszTestLogFormatter._sub_labels  s    &&(,,.[!b288BHH[,A#BCC49:q%(d*::,78qc!fl8
8^+++ ;8s   $B>Br  c           	      $   t        j                         \  }}|j                  d       |j                  j	                  t        j                  dg              |j                  j                  t        j                  dt        j                  dd                   |j                  j                  t        j                  d             |j                  j                  t        j                  d             |j                  dd	       |j                  j                         }|j                  |j                  j!                                |j                  j!                         D cg c]  } ||      d
k7   }}t        j"                  |      sJ | j%                  |j                  g        |j                  dd       | j%                  |j                  g        |j                  dd       | j%                  |j                  g        |j                  dd       | j%                  |j                  g d       |j                  dd       | j%                  |j                  t        j                  ddt&                     y c c}w )Nr  r!   )ry   r  r   T)re  Fr   r+  rN  r  i   P   rh   )r   r[   r   r   r   r   r^  )r   r   r  r   r   r+   r  r   rM   rO   r!  r  set_minor_formatterr   r  r  r"  rG   r  ru  )r.   r   r   r/  r   show_major_labelss         r3   test_sublabelzTestLogFormatter.test_sublabel  s    ,,.R
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!" !Vr\ D Dvv'(((+ 	As+ 	Ar+ 	Aq5 	C		!Rs(CD-Ds   ,Jval)r   r!   r
   r
  c                     t        j                         }|j                          |j                  j	                  dd        ||      t        |      k(  sJ y Nr   r!   )r+   r  r  r  r  strr.   r  temp_lfs      r3   test_LogFormatter_callz'TestLogFormatter.test_LogFormatter_call  sH     &&(!!#&&q"-s|s3x'''r5   )g       g       g       g       c                     t        j                         }|j                          |j                  j	                  dd        ||       y r  )r+   r  r  r  r  r  s      r3   test_LogFormatter_call_tinyz,TestLogFormatter.test_LogFormatter_call_tiny  s9     &&(!!#&&q"-r5   N)r?   )rJ   rK   rL   pprint_datar@   rR   rS   r  r-  r  r   r  r   r  r  r  r?   r5   r3   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r5   r  c                      e Zd Zed        Zej                  j                  dg d      d        Z e	 e
dd      D  cg c]  }d| z  
 c}}  e
dd      D  cg c]  }dd| z  z
   c}} z   dgz         Zej                  j                  de      d	        Zej                  j                  dd
      d        Zej                  j                  ddd ej                   ej                   ddd             z   z        d        Zg dZej                  j                  de      d        Zd Zd Zd Zej                  j                  dd      d        Zyc c}} w c c}} w )TestLogitFormatterc                 R   t        j                  d|       }|rL|d   du}|d   rt        |d         nd}|d   t        |d         nd}|d|z  z  }|d   s|d   	|rd|z
  S |S t        j                  d	|       }|r!t        |d
         t        |d         }}||z  S t	        d      )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)rU   r>   rs  ru  rW   )stringr>   r  mantissar  r+  r  r  s           r3   logit_deformatterz$TestLogitFormatter.logit_deformatter  s      
 =,D/4V}uU6]+!H).v)B3uV}%DrTz)EV}f 9u9$CV
 eEl+U5=-AC::;;r5   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                     |8t        j                  t              5  t        j	                  |       d d d        y t        j	                  |      }t
        j                  ||      sJ y # 1 sw Y   y xY wr  )r@   rA   rW   r  r  rW  rY  )r.   fxr   r   s       r3   test_logit_deformaterz(TestLogitFormatter.test_logit_deformater  se     9z* 9"44R89 9 #44R8A''1---	9 9s   A))A2r   r!   r   r   c                     t        j                  d      }|j                  | j                          ||      }t        j                  |      }t        j                  ||      sJ y)zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)r+   LogitFormatterr  decade_testr  r  rW  rY  )r.   r   r   sx2s        r3   r4   zTestLogitFormatter.test_basic*  sW     **>	4++,aL11!4##Ar***r5   )r   r   r   r   r   r   c                     t        j                  d      }|j                  | j                          ||      }|dk(  sJ y)zl
        Test that invalid value are formatted with empty string without
        raising exception.
        Fr  rN  N)r+   r  r  r  )r.   r   r   r  s       r3   test_invalidzTestLogitFormatter.test_invalid6  s<     **>	4++,aLBwwr5   r|   r!  c                 >   t        j                  d      }dD ]  }|d|z  z   dk  s|j                  |d|z  z
  ||d|z  z   g        ||      } ||d|z  z         }t        j	                  |      t        j	                  |      z
  }d|cxk  r
d|z  k  rJ  J  y)zS
        The format length should change depending on the neighbor labels.
        Fr  )	r!   r	   r  r
      r
  i  i  r  r   r   r   N)r+   r  r  r  r  )r.   r   r   Nsxsx1ds          r3   test_variablelengthz&TestLogitFormatter.test_variablelengthA  s    
 **>	@ 		%A1q5y1}""AAIq!a!e)#<=q\AE	*&88=(::2>?  1}q1u}$}$}		%r5   ))Trd  )r  F)K   F)Trb  )r  r  T)Tra  )r  Tr  )F)r   gRQ?gp=
ף?))r!  Tr  r  zmethod, lims, casesc                    |r&t        j                  d      } |j                  | }nt        j                  |      }t        j
                  d      }|D ]v  \  }}|j                  |       |j                  |      }	|	D 
cg c]  }
t        |
      dkD  s|
 }}
|rt        |      dkD  rWJ ||f       t        |      dk(  roJ ||f        yc c}
w )z,
        Test minor/major displays.
        Tr   r   N)	r+   rh  r-   rM   rN   r  set_minor_thresholdformat_ticksr   )r.   methodri  casesmin_locrq  min_form	threshold	has_minor	formattedflabelleds               r3   test_minor_vs_majorz&TestLogitFormatter.test_minor_vs_majorY  s     **6G'G''.EHHTNE))5$) 	B Iy((3 --e4I#,;aA
;H;8}q(@9i*@@(8})AIy+AA)	B <s   CCc                 8   t        j                  d      }t        j                  d      }|j                  dd      }dD ]R  }|j	                  |       |j                  |      }|D cg c]  }t        |      dkD  s| }}t        |      |k(  rRJ  yc c}w )z1
        Test the parameter minor_number
        Tr   r   r   )r   r   rh   rn  r   N)r+   rh  r  r-   set_minor_numberr  r   )r.   r  r  rq  minor_numberr  r  r  s           r3   test_minor_numberz$TestLogitFormatter.test_minor_numbern  s     &&T2))5##D(3) 	1L%%l3 --e4I#,;aA
;H;x=L000		1 <s   *B>Bc                     d}d}d}t        j                  d      } ||      |k(  sJ |j                  d        ||      |k(  sJ |j                  d        ||      |k(  sJ y)z1
        Test the parameter use_overline
        r  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Fr  TN)r+   r  r  )r.   r   fx1fx2forms        r3   test_use_overlinez$TestLogitFormatter.test_use_overline{  so     *3%%59Aw#~~$Aw#~~% Aw#~~r5   c                     t        j                         }d |d      v sJ |j                  d       d |d      v sJ |j                  d       d |d      v sJ y)z-
        Test the parameter one_half
        z\frac{1}{2}r   z1/2zone halfN)r+   r  set_one_half)r.   r  s     r3   test_one_halfz TestLogitFormatter.test_one_half  sd     %%'c***% S	!!!*%T#Y&&&r5   r  )r
      i  c                    t        j                  dd|      dd }t        j                         }|D ]W  }|j	                  |      }|j                  d      rdt        |dd        z
  }nt        |      }t        ||z
        d|z  k  rWJ  y )Nr   r   r   z1-r   )rM   rr   r+   r  r  
startswithrs  abs)r.   r  rj  r  r   r  r  s          r3   test_format_data_shortz)TestLogitFormatter.test_format_data_short  s    {{1a#Ab)%%' 	'A''*B}}T"r!"v&2Yq2v;Q&&&	'r5   N)rJ   rK   rL   r^  r  r@   rR   rS   r  rg  rx  r  r4   r  rM   exprr   r  lims_minor_majorr  r   r  r  r  )r  is   00r3   r  r    s   < <@ [[	

.
. "1b\**#(B<
0a1rqbz>
0	1'	K [[S+.	+ /	+ [[S"?@ A [[S!q6266;2;;r1b3I2I+J'J"KL% M%  [[24DEB FB(1	' [[S/2	' 3	'a 	+
0s   E
E r  c                       e Zd Zd Zy)TestFormatStrFormatterc                 H    t        j                  d      }d |d      k(  sJ y )Nz%05d00002r   )r+   FormatStrFormatterr  s     r3   r4   z!TestFormatStrFormatter.test_basic  s$    --f5(1+%%%r5   N)rJ   rK   rL   r4   r?   r5   r3   r  r    s    &r5   r  c                   X    e Zd Zg dZej
                  j                  de      d        Zy)TestStrMethodFormatter)){x:05d}r   Fr  )r  r  Tr  )r  r  Fz-0002)r  r  Tu   −0002){x:03d}-{pos:02d}r   r   F002-01)r  r  Tr  )r  r  r   Fz-02-01)r  r  Tu   −02-01z&format, input, unicode_minus, expectedc                     t        j                  d|i      5  t        j                  |      } || |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  )r   r   r+   StrMethodFormatter)r.   formatinputr  r1   r/  s         r3   r4   z!TestStrMethodFormatter.test_basic  sK    ^^1=AB 	+,,V4C;(***	+ 	+ 	+s    AAN)rJ   rK   rL   r~  r@   rR   rS   r4   r?   r5   r3   r  r    s0    	I [[EyQ+ R+r5   r  c                   X    e Zd Zg dZej
                  j                  de      d        Zy)TestEngFormatter))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       rW  rW  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   )rX  rX  z1.00)TgރB?)z1.23457rX  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@r.  r.  1.00 k)F*:?)r&  r&  z-1.00 k)Tr1  )r'  r'  u	   −1.00 k)Tr
  r/  )Ti  )z1.001 kr.  r0  )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 Qr2  z	1230.00 Qzunicode_minus, input, expectedc                   	
 |t         j                  d<   d	d|}t        j                         t        j                  d      t        j                  d      f}t	        ||      D ]  \  }} ||      |k(  rJ  	fd|D        }t        j                  	      t        j                  	d	      t        j                  	d	      f}t	        ||      D ]  \  }} ||      |k(  rJ  d
D ]  
	
fd|D        }t        j                  	
      t        j                  	d
      t        j                  	d
      f}t	        ||      D ]  \  }} ||      |k(  rJ  
fd|D        }t        j                  
      t        j                  d
      t        j                  d
      f}t	        ||      D ]  \  }} ||      |k(  rJ   y)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.
        r  r  
0123456789r   )placesr   c              3   F   K   | ]  }|d    v r|dz   z   n|z     ywr    Nr?   )r  _sDIGITSUNITs     r3   	<genexpr>z/TestEngFormatter.test_params.<locals>.<genexpr>  s8      :*, +-R&F*:rCx$I& :s   !)unit)r=  r5  )rN  u    z@_@c              3   f   K   | ](  }|d    v r|z   z   n|j                  d      z    * ywr7  rh  )r  r9  r:  r;  _seps     r3   r<  z/TestEngFormatter.test_params.<locals>.<genexpr>  sE      /! 02"v/?29t+ "

3 5 <= /s   .1)r=  r  )r=  r5  r  c              3   B   K   | ]  }|j                  d         yw)r8  Nr?  )r  r9  r@  s     r3   r<  z/TestEngFormatter.test_params.<locals>.<genexpr>"  s     DR2::c40Ds   )r  )r5  r  N)r   r<  r+   EngFormatterr  )r.   r  r"  r1   exp_outputs
formatters
_formatter_exp_outputr:  r;  r@  s           @@@r3   test_paramszTestEngFormatter.test_params  s    .;)*   "  *  *


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


 (+:{'C 	4#Je$333	4
 = 	8D/%-/K $$$D9$$$qdC$$$qdCJ
 ,/z;+G 8'
K!%(K7778 E8DK$$.$$A48$$A48J
 ,/z;+G 8'
K!%(K77781	8r5   N)rJ   rK   rL   raw_format_datar@   rR   rS   rG  r?   r5   r3   r$  r$    s3    #OJ [[=OD8 PD8r5   r$  c                     t        j                         \  } }|j                  g dg d       |j                  g d       t	        j
                  d      t	        j
                  d      fD ]k  }|j                  j                  |       | j                  j                          |j                         D cg c]  }|j                          }}|g dk(  rkJ  y c c}w )N)r   r  r
  T)usetex)useMathText)z$0$z$500$z$1$ k)r   r   rE  r   r+   rB  r   r!  r<  r=  get_xticklabelsget_text)r   r   r   lablx_tick_label_texts        r3   $test_engformatter_usetex_useMathTextrP  ,  s    llnGCGGNN+MM.!**$7**t<> >	
$$Y/

9;9K9K9MNT]]_NN !$====> Os   7Cz9data_offset, noise, oom_center_desired, oom_noise_desired))g  @ROBr!   re  r   )g  BBi r  r   )/$&;@r   r   r  )g5@r   r[   r  )g    Ar   r[   r  )p=
p@r   r   r  )g   uHBr
   re  r[   )rQ  gHz>r   i)rR  r   r   r  )rQ  r   r   r  )g    @@r  r   r[   )rQ  r  r   r[   )rQ  r
  r   r[   )rQ  r
   r   r   )rQ  r!   r   r   c                    d}t        j                         \  }}| t        j                  ddt              |z  z   }|j                  |       t        j                  d|      }d|j                  d<   |j                  j                  |       |j                  j                          |j                         }	|j                         D 
cg c]  }
|
j                          }}
|j                   rP|	d	   }|j                  |   }|	d
t#        |      z
     }|j                  |   }||k(  sJ ||k(  sJ |D ]  }||vrJ  y |dk(  sJ |	dk(  sJ |D ]1  }|d   dk(  rdn|}|j%                  |j                  |   |z         r1J  y c c}
w )NeVr   r!  r^  T)	useOffsetr=  _r   r   r   rN  rW  )r   r   rM   rO   rs  rE  r+   rB  ENG_PREFIXESr   r!  r<  r=  
get_offsetget_yticklabelsrM  r   r   endswith)data_offsetnoiseoom_center_desiredoom_noise_desiredr;  r   r   ydatar   
offset_gotrN  	ticks_gotprefix_noise_gotprefix_noise_desiredprefix_center_gotprefix_center_desiredtick
prefix_idxs                     r3   test_engformatter_offset_oomrh  :  s   < DllnGC"))B7==EGGEN$$t$?I #I1HH  +JJOO%%'J-/-?-?-ABTBIB %a=(556GH&r#d)|4 ) 6 67I J#'7777$(9999 	$Dt###	$ "Q&&&R 	LD #1gn2CJ==!7!7
!Cd!JKKK		L) Cs   
Fc                       e Zd Zg dZg dZg dZej                  j                  dee      d        Z	ej                  j                  de      d        Z
y	)
TestPercentFormatter))r
   r   %r  r
   z120%)r
   r   rk  r
   Z   z100%)r
   r   rk  rl  r  z90%)r
   r   rk  r   r  z-2%)r
   r   rk  g     V@r
   z90.0%)r
   r   rk  gfffffT@rl  z80.1%)r
   r   rk  gQQ@r  z70.2%)r
   r   rk  gxFNr  z-60.6%)r
   Nrk  _   r   z95.00%)r   Nrk  r[   r   z300%)      1@Nrk  r   g      !@z6%)rn  Nrk  r   g @z5.9%)r    Nrk  r  gư>z-2000.00000%)r   r   Nr   r
   z120.00)r  r[   rN  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\}\%)TFrp  )TTrp  z2xmax, decimals, symbol, x, display_range, expected)idsc                     t        j                  |||      }t        j                  ddi      5  |j	                  ||      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  Frcr+   PercentFormatterr   r   
format_pct)r.   xmaxdecimalssymbolr   display_ranger1   r   s           r3   r4   zTestPercentFormatter.test_basic  s]    
 ,,T8VD	^^u56 	F''=9XEEE	F 	F 	F   AAzis_latex, usetex, expectedc                     t        j                  d|      }t        j                  d|i      5  |j	                  dd      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nz\{t}%)rz  is_latexr  rs  r  r
   ru  )r.   r~  rJ  r1   r/  s        r3   
test_latexzTestPercentFormatter.test_latex  sS    &&hJ^^v67 	7>>"c*h666	7 	7 	7r|  N)rJ   rK   rL   percent_datapercent_ids
latex_datar@   rR   rS   r4   r  r?   r5   r3   rj  rj  }  sp    L.K,J [[@k  +F+F [[9:F7 G7r5   rj  c                     	 t        j                  t         j                  d       t        j                  dd      } d}| j                  |d      }|dk(  sJ d}| j                  |d      }|d	k(  sJ t        j                  d
d      } d}| j                  |d      }|dk(  sJ y # t         j                  $ r t	        d       Y y w xY w)Nzde_DE.UTF-8z9SKIP: Locale de_DE.UTF-8 is not supported on this machineT)rK  	useLocalez$\mathdefault{%1.1f}$r   z$\mathdefault{0{,}5}$z,$\mathdefault{,%1.1f},$z,$\mathdefault{,0{,}5},$Fz%1.1fz0,5)r  	setlocaleLC_ALLErrorprintr+   r  _format_maybe_minus_and_locale)rq  r/  r   s      r3   _impl_locale_commar    s    6 ##EE
"C,,S#6A((((
%C,,S#6A++++##FE
C,,S#6A:: << IJs   $B& &CCc                      t         j                  j                  t        dddi      } t	        d | j
                  j                         D        d      }|rt        j                  |       y y )Nr%   
MPLBACKENDAgg)timeout	extra_envc              3   v   K   | ]1  }|j                  d       r|t        d       d j                          3 yw)zSKIP:N)r  r   r  )r  lines     r3   r<  z$test_locale_comma.<locals>.<genexpr>  s8      20 #g,-(..0 2s   79rN  )	r   r   subprocess_run_helperr  nextstdout
splitlinesr@   r  )procskip_msgs     r3   test_locale_commar    sj     ;;,,-?8De7L - ND 2!%!7!7!92 H H r5   c                      t        j                         \  } }t        j                  t              5  |j
                  j                  t        j                                d d d        y # 1 sw Y   y xY wr  )	r   r   r@   rA   rT   r   r!  r+   r  r   r   s     r3   test_majformatter_typer    M    llnGC	y	! ;
$$W%7%7%9:; ; ;   .A((A1c                      t        j                         \  } }t        j                  t              5  |j
                  j                  t        j                                d d d        y # 1 sw Y   y xY wr  )	r   r   r@   rA   rT   r   r  r+   r  r  s     r3   test_minformatter_typer    r  r  c                      t        j                         \  } }t        j                  t              5  |j
                  j                  t        j                                d d d        y # 1 sw Y   y xY wr  )	r   r   r@   rA   rT   r   r   r+   r  r  s     r3   test_majlocator_typer    M    llnGC	y	! ;
""7#7#7#9:; ; ;r  c                      t        j                         \  } }t        j                  t              5  |j
                  j                  t        j                                d d d        y # 1 sw Y   y xY wr  )	r   r   r@   rA   rT   r   r   r+   r  r  s     r3   test_minlocator_typer    r  r  c                      t        j                         fd}  | ddd        | ddd        | ddd        | ddd       y )Nc                 8   | |d}t        j                  |      5  j                  dd|      }d d d        t        j                  j                               dkD  | k(  sJ t        |j                  j                               dkD  |k(  sJ y # 1 sw Y   `xY w)N)zxtick.minor.visiblezytick.minor.visiblers  r   r   )r   r   add_subplotr   r   get_minor_ticksr   )xminoryminorr  rt  r   r   s        r3   minorticksubplotz,test_minorticks_rc.<locals>.minorticksubplot  s    %+%+-^^r" 	*Aq)B	* BHH,,./!3>>>BHH,,./!3>>>		* 	*s   BBFr   Tr   r[   r   )r   figure)r  r   s    @r3   test_minorticks_rcr    sE    
**,C? UE1%T5!$UD!$T4#r5   c                      t        j                         fd} g d}|D ]>  } | dd|d        | dd|d        | dd|d        | dd|d       j                          @ t        j                         y	)
ax  
    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                 L   j                  dd|      }|j                  |       |j                  |       | s|s|j                          | r6|s4|j                  j                          |j                  j                          | s6|r4|j                  j                          |j                  j                          | r|r|j                          t        |j                  j                               dkD  | k(  sJ t        |j                  j                               dkD  |k(  sJ y )Nr   r   )	r  r  r  minorticks_offr   r   r   r   r  )r  r  scaler  r   r   s        r3   minortickstogglez0test_minorticks_toggle.<locals>.minortickstoggle  s    __Q1%
e
ef&HH""$HH##%&HH##%HH""$fBHH,,./!3>>>BHH,,./!3>>>r5   )linearr  asinhlogitFr   Tr   r[   r   N)r   r  clearclose)r  scalesr  r   s      @r3   test_minorticks_toggler    sy     **,C?$ 1F ua0ueQ/eQ/tUA.		 IIcNr5   z%remove_overlapping_locs, expected_num))Tr   )Nr   )Fre  c                 0   t        j                  ddd      }t        j                  t        |            }t	        j
                         \  }}|j                  ||       |j                  j                  t        j                  j                                |j                  j                  t        j                  j                  d             |j                  j                  t        j                  j                  d             |j                  j!                  t        j                  j                  d             |j                  j#                  d       | | |j                  _        |j                  j$                  }||j                  j'                         k(  sJ t	        j(                  |j                  |	       |j                  j$                  }||j                  j$                  k(  sJ t        |j                  j+                               |k(  sJ t        |j                  j#                               |k(  sJ t        |j                  j-                               |k(  sJ t        |j                  j/                               |d
z  k(  sJ y )Nz
2018-11-03z
2018-11-06
datetime64r^  z
%a)r   r   r     z%H:%Mr"   )remove_overlapping_locsr   )rM   rO   onesr   r   r   rE  r   r   r   dates
DayLocatorr!  DateFormatterr   HourLocatorr  r  r  get_remove_overlapping_locssetpr   get_minorticklabelsget_minorticklines)r  expected_numtr   r   r   currentnews           r3   test_remove_overlapr  9  s   
 			,LAA
AAllnGCGGAqM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rxx;;==>=HHRXXw7
((
*
*C28833343 rxx))+,<<<rxx'')*l:::rxx++-.,>>>rxx**,-a???r5   subhiaardvark)r   r   c                     t        j                         }t        j                  t              5  |j                  |        d d d        y # 1 sw Y   y xY w)Nr  )r+   r  r@   rA   rW   rk   )r  r9  s     r3   test_bad_locator_subsr  ^  sA     
			B	z	"  
3     s   A

Ar]   )r   r   r[   re  r  c           	         t        j                         }|j                  |        dD ]_  }|j                  d|      }t	        j
                  t	        j                  |j                  dd                  dk(  j                         r_J  y )Nr\   )r    r!  re  r;   r"   r  r
   r
  r   r      r   )r+   r  rk   r-   rM   diffrw  rG   )r]   r9  toprq  s       r3   test_small_range_loglocatorr  g  su     
			BMM8M$/ Fr3'3!789Q>CCEEEFr5   c                      t        j                         }  | d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ y )Nr   rN  )r+   NullFormatterr*  r  r   s    r3   test_NullFormatterr  q  sT    %%'IS>R  %+++&&s+r111r5   r   c                     d|  S )Nzval: r?   )r  s    r3   <lambda>r  y  s    eA3K r5   )r:   barc                 z    | j                         dk(  sJ | j                  d       | j                         dk(  sJ y )NrN  r   )rX  set_offset_stringr  s    r3   test_set_offset_stringr  x  s@     !R'''&!U***r5   c                  D   t        j                         \  } }|j                  t        j                  d      dg       |j                  t        j                  d      dg       |j                  t        j                  d      dg       |j                  d       |j                  d       |j                          | j                          |j                         sJ t        |j                  j                         t        j                  j                        sJ y)	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   )rk  r   r   )whichr   N)r   r   boxplotrM   rO   r   r   draw_without_renderingget_xgridlines
isinstancer   get_minor_locatorr   tickerr   r  s     r3   test_minorticks_on_multi_figr    s     llnGCJJryy}J,JJryy}J,JJryy}J,GG'GGG'G bhh002CJJ4O4OPPPr5   )D
contextlibr   r  r  rC  rU   packaging.versionr   r:  numpyrM   numpy.testingr   r   r@   
matplotlibr   matplotlib.pyplotpyplotr   matplotlib.tickerr  r+   r   rY   ru   r   r  rP  rW  r`  r  r  r  r  r  rV  rx  r  r  r  r  r  r$  rP  rR   rS   rh  rj  r  r  r  r  r  r  r  r  r  zerosr  r  r   r  r  FuncFormatterFixedFormatterr  r  r?   r5   r3   <module>r     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 	:BHHV!    \29F  3F2 G/0G>*', -+-+Qr5   